Análise de Correlação e Regressão Linear Simples

Authors

Anderson dos Santos Silva

José Alves de Figueiredo Neto

1 Introdução

O Conjunto de Dados de Saude e Desenvolvimento da Criança foi projetado para avaliar fatores relacionados ao baixo peso ao nascer em crianças. O conjunto de dados do software Stata chdsmetric.dta contém as seguintes variáveis:

  1. bwtkg (birth weight, in kg) / (peso ao nascer, em kg)
  2. blengthcm (birth length, in cm) / (comprimento ao nascer, em cm)
  3. bheadcircm (birth head circumference, in cm) / (perímetro cefálico de nascimento, em cm)
  4. gestwks (gestational age, in weeks) / (idade gestacional, em semanas)
  5. mageyrs (mother’s age, in years) / (idade da mãe , em anos)
  6. mheightcm (mother’s height, in cm) / (altura da mãe, em cm)
  7. mweightkg (mother’s prepregnancy weight, in kg) / (peso pré-gestacional da mãe, em kg)
  8. mcig (mother’s number of cigarettes smoked per day) (número de cigarros fumados pela mãe por dia)
  9. fageyrs (father’s age, in years) / (idade do pai, em anos )
  10. fheightcm (father’s height, in cm) / (altura do pai, em cm)
  11. fedyrs (father’s education, in years) / (educação do pai, em anos)
  12. fcig (father’s number of cigarettes smoked per day) / (número de cigarros fumados por dia do pai)
  13. lowbwt (binary outcome, = 1 for \(\le\) 2.75 kg, = 0 for > 2.75 kg) / (desfecho binário, = 1 para \(\le\) 2,75 kg, = 0 para > 2,75 kg).

Neste estudo, iremos realizar uma Análise Exploratória dos Dados, realizando análises descritivas e gráficas, buscando entender as relações entre as variáveis, analisando correlações e associações entre elas. Em seguida, iremos realizar uma Análise de Regressão Linear Simples. O foco desse estudo será analisar a relação das variáveis Idade da Mãe (mageyrs), Idade Gestacional (gestwks), Altura da Mãe (mheightcm) com a variável Peso Ao Nascer (bwtkg).

1.1 Carregando pacotes

# Passo 1: Carregar os pacotes que serao usados

if(!require(pacman)) install.packages("pacman")
Carregando pacotes exigidos: pacman
Warning: package 'pacman' was built under R version 4.2.2
pacman::p_load(readxl, dplyr, ggplot2, car, rstatix, lmtest, ggpubr, skimr, corrplot, haven)

1.2 Leitura dos Dados

1.2.1 Carregando os Dados

dados_all <- read_dta("chdsmetric.dta")
glimpse(dados_all)        # Visualizacao de um resumo dos dados
Rows: 680
Columns: 13
$ bwtkg      <dbl> 3.31, 3.63, 3.40, 3.18, 2.40, 3.90, 4.13, 2.95, 1.50, 3.67,…
$ blengthcm  <dbl> 50.80, 53.34, 53.34, 50.80, 48.26, 50.80, 55.88, 48.26, 50.…
$ bheadcircm <dbl> 33.02, 33.02, 33.02, 33.02, 33.02, 35.56, 38.10, 33.02, 30.…
$ gestwks    <dbl> 37, 41, 39, 39, 37, 43, 40, 37, 29, 41, 40, 39, 41, 41, 42,…
$ mageyrs    <dbl> 33, 28, 32, 27, 32, 30, 23, 27, 32, 28, 26, 19, 37, 31, 29,…
$ mheightcm  <dbl> 167.64, 160.02, 154.94, 172.72, 170.18, 160.02, 165.10, 162…
$ mweightkg  <dbl> 63.50, 58.97, 57.15, 68.04, 50.80, 59.42, 60.78, 56.70, 64.…
$ mcig       <dbl> 25, 0, 0, 2, 17, 0, 0, 17, 0, 0, 25, 0, 25, 17, 0, 0, 0, 0,…
$ fageyrs    <dbl> 37, 35, 38, 30, 28, 34, 26, 29, 32, 41, 26, 27, 46, 38, 30,…
$ fheightcm  <dbl> 187.96, 180.34, 165.10, 185.42, 180.34, 167.64, 180.34, 180…
$ fedyrs     <dbl> 12, 10, 12, 16, 10, 12, 12, 12, 14, 16, 16, 12, 16, 16, 16,…
$ fcig       <dbl> 25, 7, 17, 7, 17, 17, 0, 7, 0, 0, 25, 2, 0, 17, 0, 2, 12, 0…
$ lowbwt     <dbl> 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…

1.2.2 Variáveis de Interesse

Nesta análise estatística, iremos focar nas variáveis gestwks, mageyrs, mheightcm e bwtkg.

dados <- select(dados_all, gestwks, mageyrs, mheightcm, bwtkg)
glimpse(dados)
Rows: 680
Columns: 4
$ gestwks   <dbl> 37, 41, 39, 39, 37, 43, 40, 37, 29, 41, 40, 39, 41, 41, 42, …
$ mageyrs   <dbl> 33, 28, 32, 27, 32, 30, 23, 27, 32, 28, 26, 19, 37, 31, 29, …
$ mheightcm <dbl> 167.64, 160.02, 154.94, 172.72, 170.18, 160.02, 165.10, 162.…
$ bwtkg     <dbl> 3.31, 3.63, 3.40, 3.18, 2.40, 3.90, 4.13, 2.95, 1.50, 3.67, …

1.2.3 Visualizando os Dados

knitr::kable(dados[1:20,])
gestwks mageyrs mheightcm bwtkg
37 33 167.64 3.31
41 28 160.02 3.63
39 32 154.94 3.40
39 27 172.72 3.18
37 32 170.18 2.40
43 30 160.02 3.90
40 23 165.10 4.13
37 27 162.56 2.95
29 32 162.56 1.50
41 28 167.64 3.67
40 26 154.94 3.54
39 19 165.10 3.63
41 37 160.02 3.54
41 31 154.94 3.95
42 29 167.64 3.86
42 27 170.18 3.67
40 20 167.64 3.49
41 22 172.72 3.45
39 27 172.72 3.45
42 23 152.40 3.58

2 Análise Exploratória dos Dados

Iremos realizar uma análise exploratória dos dados, buscando extrair informações e observar possíveis correlações entre as variáveis.

2.1 Resumo dos Dados

skim(dados)
Data summary
Name dados
Number of rows 680
Number of columns 4
_______________________
Column type frequency:
numeric 4
________________________
Group variables None

Variable type: numeric

skim_variable n_missing complete_rate mean sd p0 p25 p50 p75 p100 hist
gestwks 0 1 39.77 1.88 29.00 39.00 40.00 41.00 48.00 ▁▁▇▃▁
mageyrs 0 1 25.86 5.46 15.00 21.00 25.00 29.00 42.00 ▅▇▇▂▁
mheightcm 0 1 163.66 6.31 144.78 160.02 162.56 167.64 180.34 ▁▃▇▅▁
bwtkg 0 1 3.41 0.50 1.50 3.08 3.45 3.72 5.17 ▁▂▇▃▁

2.2 Análise Descritiva das Variáveis

Nesta seção, iremos analisar as variáveis de forma univariada, fazendo uso de testes de normalidade e gráficos do tipo histograma, boxplot e densidade.

2.2.1 Idade Gestacional (gestwks)

Teste Normalidade Shapiro-Wilk

shapiro.test(dados$gestwks)

    Shapiro-Wilk normality test

data:  dados$gestwks
W = 0.93902, p-value = 4.551e-16

Como o Valor p < 0.05, logo podemos concluir que a variável Idade Gestacional não segue a distribuição normal.

Gráficos:

hist(dados$gestwks, main = "Histograma de Idade Gestacional", xlab = "Idade Gestacional (em semanas)")

dados %>%
  ggplot( aes(x=mageyrs)) +
    geom_density(fill="#69b3a2", color="#e9ecef", alpha=0.8) +
    ggtitle("Distribuição de Idade Gestacional") +
    xlab("Idade Gestacional (em semanas)")

boxplot(dados$gestwks,main = "Boxplot de Idade Gestacional")

2.2.2 Altura da Mãe (mheightcm)

Teste Normalidade Shapiro-Wilk

shapiro.test(dados$mheightcm)

    Shapiro-Wilk normality test

data:  dados$mheightcm
W = 0.98429, p-value = 1.098e-06

Como o Valor p < 0.05, logo podemos concluir que a variável Altura da Mãe não segue a distribuição normal.

Gráficos:

hist(dados$mheightcm, main = "Histograma de Altura da Mãe", xlab = "Altura (em cm)")

dados %>%
  ggplot( aes(x=mheightcm)) +
    geom_density(fill="#69b3a2", color="#e9ecef", alpha=0.8) +
    ggtitle("Distribuição de Altura da Mãe") +
    xlab("Altura (em cm)")

boxplot(dados$mheightcm, main = "Boxplot de Altura da Mãe")

2.2.3 Idade da Mãe (mageyrs)

Teste Normalidade Shapiro-Wilk

shapiro.test(dados$mageyrs)

    Shapiro-Wilk normality test

data:  dados$mageyrs
W = 0.95297, p-value = 6.537e-14

Como o Valor p < 0.05, logo podemos concluir que a variável Idade da Mãe não segue a distribuição normal.

Gráficos:

hist(dados$mageyrs, main = "Histograma de Idade da Mãe", xlab = "Idade (em anos)")

dados %>%
  ggplot( aes(x=mageyrs)) +
    geom_density(fill="#69b3a2", color="#e9ecef", alpha=0.8) +
    ggtitle("Distribuição de Idade da Mãe") +
    xlab("Idade (em anos)")

boxplot(dados$mageyrs, main = "Boxplot de Idade da Mãe")

2.2.4 Peso ao Nascer (bwtkg)

Teste Normalidade Shapiro-Wilk

shapiro.test(dados$bwtkg)

    Shapiro-Wilk normality test

data:  dados$bwtkg
W = 0.99639, p-value = 0.1244

Como o valor p > 0.05, podemos concluir que a variável Peso ao Nascer segue a distribuição normal.

Gráficos:
hist(dados$bwtkg, main = "Histograma de Peso ao Nascer", xlab = "Peso (em kg)")

dados %>%
  ggplot( aes(x=bwtkg)) +
    geom_density(fill="#69b3a2", color="#e9ecef", alpha=0.8) +
    ggtitle("Distribuição de Peso ao Nascer") +
    xlab("Peso (em kg)")

boxplot(dados$bwtkg, main = "Boxplot de Peso ao Nascer")

2.2.5 Observações Importantes

Observando os gráficos de boxplot das variáveis, notamos a presença de outliers em todas as variáveis do conjunto de dados sendo estudado. Analisando os testes de normalidade feitos, nota-se que apenas a variável Peso ao Nascer (bwtkg) segue a distribuição normal. Com isso, optamos por utilizar também o Teste de Spearman para analisar correlações entre variáveis.

2.3 Analisando Correlações entre Variáveis

Nesta seção iremos analisar as variáveis de forma bi-variada, buscando visualizar possíveis correlações entre as variáveis Idade da Mãe(mageyrs), Altura da Mãe(mheightcm) e Idade Gestacional(gestwks) com a variável Peso ao Nascer(bwtkg).

2.3.1 Idade Gestacional e Peso ao Nascer

Visualizando Relações entre Variáveis

plot(dados$gestwks, dados$bwtkg, xlab="Idade Gestacional", ylab="Peso ao Nascer")

Coeficiente de Correlação

Estimativa do coeficiente de correlação (linear) entre variáveis numéricas.

Coeficiente de Pearson:

cor(dados$bwtkg, dados$gestwks)
[1] 0.4259589

Coeficiente de Spearman:

cor(dados$bwtkg, dados$gestwks, method="spearman")
[1] 0.4050987

2.3.2 Altura da Mãe e Peso ao Nascer

Visualizando Relações entre Variáveis

plot(dados$mheightcm, dados$bwtkg, xlab="Altura da Mãe", ylab="Peso ao Nascer")

Coeficiente de Correlação

Estimativa do coeficiente de correlação (linear) entre variáveis numéricas.

Coeficiente de Pearson:

cor(dados$bwtkg, dados$mheightcm)
[1] 0.2025446

Coeficiente de Spearman:

cor(dados$bwtkg, dados$mheightcm, method="spearman")
[1] 0.1996057

2.3.3 Idade da Mãe e Peso ao Nascer

Visualizando Relações entre Variáveis

plot(dados$mageyrs, dados$bwtkg, xlab="Idade da Mãe", ylab="Peso ao Nascer")

Coeficiente de Correlação

Estimativa do coeficiente de correlação (linear) entre variáveis numéricas.

Coeficiente de Pearson:

cor(dados$bwtkg, dados$mageyrs)
[1] 0.0009591992

Coeficiente de Spearman:

cor(dados$bwtkg, dados$mageyrs, method="spearman")
[1] 0.02201139

2.4 Visualizando a Correlação das 4 Variáveis

plot(dados)

matrix.cor <- cor(dados, method="spearman")

corrplot(matrix.cor, method="color", addCoef.col="black", type="upper", diag=FALSE)

3 Análise Indutiva

Analisando os resultados obtidos na seção anterior, podemos inferir que existe uma correlação moderada entre a Idade Gestacional e o Peso Ao Nascer, com coeficiente de Spearman de 0.40 e de Pearson de 0.42. Também podemos inferir que existe uma correlação fraca entre a Altura da Mãe e o Peso ao Nascer, com coeficiente de Pearson de 0.20 e Coeficiente de Spearman de 0.20. Nota-se que a correlação entre Idade da Mãe e Peso ao Nascer é extremamente fraca ou inexistente, com o Coeficiente de Spearman de 0.02 e Coeficiente de Pearson de 0.001. Com isso, iremos aplicar um teste de hipótese para observar a associação entre essas variáveis.

3.1 Peso Ao Nascer e Idade Gestacional

cor.result.gestwks <- cor.test(dados$gestwks, dados$bwtkg)
cor.result.gestwks

    Pearson's product-moment correlation

data:  dados$gestwks and dados$bwtkg
t = 12.259, df = 678, p-value < 2.2e-16
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 0.3623791 0.4855928
sample estimates:
      cor 
0.4259589 

Aplicando um teste de hipótese para verificar a existência de associação entre as variáveis Idade Gestacional e Peso Ao Nascer, encontramos intervalo de confiança entre 0.36 e 0.49. Como este intervalo não contém a correlação nula (=0), podemos concluir com 95% de confiança que existe associação linear e positiva entre essas variáveis. Ou seja, quanto maior o Tempo de Gestação, maior será o Peso ao Nascer do recém-nascido.

3.2 Peso ao Nascer e Altura da Mãe

cor.result.mheightcm <- cor.test(dados$mheightcm, dados$bwtkg)
cor.result.mheightcm

    Pearson's product-moment correlation

data:  dados$mheightcm and dados$bwtkg
t = 5.3856, df = 678, p-value = 9.968e-08
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 0.1293287 0.2735640
sample estimates:
      cor 
0.2025446 

Aplicando um teste de hipótese para verificar a existência de associação entre as variáveis Altura da Mãe e Peso Ao Nascer, encontramos intervalo de confiança entre 0.13 e 0.27. Como este intervalo não contém a correlação nula (=0), podemos concluir com 95% de confiança que existe associação linear e positiva entre essas variáveis. Ou seja, quanto maior a Altura da Mãe, maior será o Peso ao Nascer do recém-nascido.

3.3 Peso ao Nascer e Idade da Mãe

cor.result.mageyrs <- cor.test(dados$mageyrs, dados$bwtkg)
cor.result.mageyrs

    Pearson's product-moment correlation

data:  dados$mageyrs and dados$bwtkg
t = 0.024976, df = 678, p-value = 0.9801
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 -0.07423154  0.07613909
sample estimates:
         cor 
0.0009591992 

Aplicando um teste de hipótese para verificar a existência de associação entre as variáveis Idade da Mãe e Peso Ao Nascer, encontramos intervalo de confiança entre -0.07 e 0.07. Como este intervalo contém a correlação nula (=0), podemos concluir com 95% de confiança que não existe associação entre essas variáveis.

4 Análise de Regressão Linear

Nessa seção, iremos utilizar Modelos de Regressão Linear Simples para as variáveis Idade Gestacional e Peso ao Nascer, Idade da Mãe e Peso ao Nascer e Altura da Mãe e Peso ao Nascer.

4.1 Idade Gestacional e Peso Ao Nascer

4.1.1 Análise do Modelo

model.gestwks <- lm(bwtkg~gestwks, dados)
summary(model.gestwks)

Call:
lm(formula = bwtkg ~ gestwks, data = dados)

Residuals:
     Min       1Q   Median       3Q      Max 
-1.43502 -0.28249  0.01492  0.28621  1.50992 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) -1.066189   0.365473  -2.917  0.00365 ** 
gestwks      0.112530   0.009179  12.259  < 2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.4486 on 678 degrees of freedom
Multiple R-squared:  0.1814,    Adjusted R-squared:  0.1802 
F-statistic: 150.3 on 1 and 678 DF,  p-value: < 2.2e-16

Dado que o valor p do F-Statistic suficientemente pequeno, rejeita-se a Hipótese Nula (\(\beta = 0\)). Admitindo a Hipótese Alternativa (\(\beta \not= 0\)), a Idade Gestacional exerce influência linear sobre o Peso ao Nascer.

\[ y = -1.1 + 0.11x \]

4.1.2 Verificação dos Pressupostos da Regressão Linear

Análise Gráfica

par(mfrow=c(2,2))
plot(model.gestwks)

  • Analisando o Gráfico de Resíduos-Fitted, nota-se que a linha dos resíduos aproxima-se do eixo horizontal do gráfico, porém com um padrão similar a uma parábola, indicando que talvez existam relações não-lineares não explicadas pelo modelo.
  • Analisando o Gráfico Q-Q Normal, verificamos que os resíduos se aproximam bastante da linha diagonal tracejada, sendo uma boa indicação para o modelo, que os resíduos seguem a distribuição normal.
  • Analisando o Gráfico Scale-Location, verificamos que os resíduos não estão distribuídos igualmente ao longo de uma linha horizontal, formando padrões ao longo do gráfico, levando ao questionamento da Homocedasticidade.
  • Analisando o Gráfico de Alavancagem, não há indicações de casos influenciais no estudo (outliers que possam influenciar na regressão linear), todos os casos aparentam estar dentro das linhas da Distância de Cook.

Verificação por Testes de Hipótese

Teste de Normalidade Shapiro-Wilk
shapiro.test(model.gestwks$residuals)

    Shapiro-Wilk normality test

data:  model.gestwks$residuals
W = 0.99716, p-value = 0.2848

Dado que o valor p não é suficientemente pequeno (0.28), admite-se a Hipótese Nula que os resíduos seguem a distribuição normal.

Outliers nos Resíduos
summary(rstandard(model.gestwks))
     Min.   1st Qu.    Median      Mean   3rd Qu.      Max. 
-3.201361 -0.630276  0.033342 -0.000243  0.638674  3.371924 

Espera-se que, seguindo a distribuição normal, os valores estariam entre -3 e 3. Porém os valores mínimos e máximo dos resíduos são -3.2 e 3.37, indicando a presença de possíveis outliers nos dados.

Independência dos Resíduos com Estatística de Durbin-Watson
durbinWatsonTest(model.gestwks)
 lag Autocorrelation D-W Statistic p-value
   1     -0.01116268      2.018007   0.782
 Alternative hypothesis: rho != 0

Dado que a estatística de Durbin-Watson está entre 1 e 3 (2.18), que reforça uma ideia de Independência dos Resíduos. Em seguida, avaliando o valor p, temos que o valor p é suficientemente grande (0.77 > 0.05), não se rejeita a hipótese nula, admitindo que há independência dos resíduos.

Teste de Homocedasticidade Breusch-Pagan
bptest(model.gestwks)

    studentized Breusch-Pagan test

data:  model.gestwks
BP = 2.2613, df = 1, p-value = 0.1326

Dado que o valor p do Teste Breusch-Pagan é de 0.13, não se rejeita a hipótese nula. Logo, podemos concluir que o modelo é homocedástico.

4.1.3 Visualização Gráfica

ggplot(data=dados, mapping = aes(gestwks, bwtkg)) +
  geom_point() +
  geom_smooth(method = "lm", col="red") +
  stat_regline_equation() +
  theme_classic()
`geom_smooth()` using formula = 'y ~ x'

4.2 Altura da Mãe e Peso ao Nascer

4.2.1 Análise do Modelo

model.mheightcm <- lm(bwtkg~mheightcm, dados)
summary(model.mheightcm)

Call:
lm(formula = bwtkg ~ mheightcm, data = dados)

Residuals:
     Min       1Q   Median       3Q      Max 
-1.89167 -0.31387  0.00833  0.31884  1.81874 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 0.805332   0.483849   1.664   0.0965 .  
mheightcm   0.015910   0.002954   5.386 9.97e-08 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.4855 on 678 degrees of freedom
Multiple R-squared:  0.04102,   Adjusted R-squared:  0.03961 
F-statistic:    29 on 1 and 678 DF,  p-value: 9.968e-08

Dado que o valor p do F-Statistic suficientemente pequeno, rejeita-se a Hipótese Nula (\(\beta = 0\)). Admitindo a Hipótese Alternativa (\(\beta \not= 0\)), a Altura da Mãe exerce influência linear sobre o Peso ao Nascer.

\[ y = 0.8 +0.016x \]

4.2.2 Verificação dos Pressupostos da Regressão Linear

Análise Gráfica

par(mfrow=c(2,2))
plot(model.mheightcm)

  • Analisando o Gráfico de Resíduos-Fitted, nota-se que a linha dos resíduos aproxima-se de uma linha horizontal sem padrões que possam ser distinguidos, indicando que não há relações não-lineares das variáveis nos dados, e indicando uma relação linear entre as variáveis.
  • Analisando o Gráfico Q-Q Normal, verificamos que os resíduos se aproximam bastante da linha diagonal tracejada, sendo uma boa indicação para o modelo, que os resíduos seguem a distribuição normal.
  • Analisando o Gráfico Scale-Location, verificamos que os resíduos estão distribuídos pelo gráfico, formando padrões em linhas verticais, não distribuídos igualmente. Essa observação leva ao questionanamento da Homocedasticidade.
  • Analisando o Gráfico de Alavancagem, não há indicações de casos influenciais no estudo (outliers que possam influenciar na regressão linear), todos os casos aparentam estar dentro das linhas da Distância de Cook.

Verificação por Testes de Hipótese

Teste de Normalidade Shapiro-Wilk
shapiro.test(model.mheightcm$residuals)

    Shapiro-Wilk normality test

data:  model.mheightcm$residuals
W = 0.99684, p-value = 0.2048

Dado que o valor p não é suficientemente pequeno (0.20), admite-se a Hipótese Nula que os resíduos seguem a distribuição normal.

Outliers nos Resíduos
summary(rstandard(model.mheightcm))
     Min.   1st Qu.    Median      Mean   3rd Qu.      Max. 
-3.898959 -0.647143  0.017160 -0.000015  0.657389  3.749465 

Espera-se que, seguindo a distribuição normal, os valores estariam entre -3 e 3. Porém os valores mínimos e máximo dos resíduos são -3.9 e 3.75, indicando a presença de outliers nos dados.

Independência dos Resíduos com Estatística de Durbin-Watson
durbinWatsonTest(model.mheightcm)
 lag Autocorrelation D-W Statistic p-value
   1     -0.01932041       2.03573   0.618
 Alternative hypothesis: rho != 0

Dado que a estatística de Durbin-Watson está entre 1 e 3 (2.03), que reforça uma ideia de Independência dos Resíduos. Em seguida, avaliando o valor p, temos que o valor p é suficientemente grande (0.68 > 0.05), não se rejeita a hipótese nula, admitindo que há independência dos resíduos.

Teste de Homocedasticidade Breusch-Pagan

bptest(model.mheightcm)

    studentized Breusch-Pagan test

data:  model.mheightcm
BP = 0.2296, df = 1, p-value = 0.6318

Dado que o valor p do Teste Breusch-Pagan é de 0.64, consideravelmente maior que 0.05, logo, não se rejeita a hipótese nula e podemos concluir que o modelo é homocedástico.

4.2.3 Visualização Gráfica

ggplot(data=dados, mapping = aes(mheightcm, bwtkg)) +
  geom_point() +
  geom_smooth(method = "lm", col="red") +
  stat_regline_equation() +
  theme_classic()
`geom_smooth()` using formula = 'y ~ x'

4.3 Idade da Mãe e Peso ao Nascer

4.3.1 Análise do Modelo

model.mageyrs <- lm(bwtkg~mageyrs, dados)
summary(model.mageyrs)

Call:
lm(formula = bwtkg ~ mageyrs, data = dados)

Residuals:
     Min       1Q   Median       3Q      Max 
-1.90974 -0.32939  0.03974  0.31133  1.76000 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) 3.407e+00  9.204e-02  37.016   <2e-16 ***
mageyrs     8.699e-05  3.483e-03   0.025     0.98    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.4958 on 678 degrees of freedom
Multiple R-squared:  9.201e-07, Adjusted R-squared:  -0.001474 
F-statistic: 0.0006238 on 1 and 678 DF,  p-value: 0.9801

Dado que o valor p do F-Statistic não é suficientemente pequeno, admite-se a Hipótese Nula (\(\beta = 0\)), a Idade da Mãe não exerce influência linear sobre o Peso ao Nascer.

\[ y = 3.4 +8.7*10^{-5}x \]

4.3.2 Verificação dos Pressupostos da Regressão Linear

Análise Gráfica

par(mfrow=c(2,2))
plot(model.mageyrs)

  • Analisando o Gráfico de Resíduos-Fitted, nota-se que a linha dos resíduos aproxima-se de uma linha horizontal sem padrões que possam ser distinguidos, indicando que não há relações não-lineares que possam ser percebidas, indicando uma relação linear entre as variáveis.
  • Analisando o Gráfico Q-Q Normal, verificamos que os resíduos se aproximam bastante da linha diagonal tracejada, sendo uma boa indicação para o modelo que os resíduos seguem a distribuição normal.
  • Analisando o Gráfico Scale-Location, verificamos que os resíduos estão distribuídos pelo gráfico, formando padrões em linhas verticais, não distribuídos igualmente. Essa observação leva ao questionanamento da Homocedasticidade.
  • Analisando o Gráfico de Alavancagem, não há indicações de casos influenciais no estudo (outliers que possam influenciar na regressão linear), todos os casos aparentam estar dentro das linhas da Distância de Cook.

Verificação por Testes de Hipótese

Teste de Normalidade Shapiro-Wilk
shapiro.test(model.mageyrs$residuals)

    Shapiro-Wilk normality test

data:  model.mageyrs$residuals
W = 0.99644, p-value = 0.1325

Dado que o valor p não é suficientemente pequeno (0.13), admite-se a Hipótese Nula que os resíduos seguem a distribuição normal.

Outliers nos Resíduos
summary(rstandard(model.mageyrs))
     Min.   1st Qu.    Median      Mean   3rd Qu.      Max. 
-3.858123 -0.664905  0.080530 -0.000079  0.628947  3.559653 

Espera-se que, seguindo a distribuição normal, os valores dos resíduos estariam entre -3 e 3. Porém os valores mínimos e máximo dos resíduos são -3.86 e 3.56, indicando existe a presença de outliers nos dados.

Independência dos Resíduos com Estatística de Durbin-Watson
durbinWatsonTest(model.mageyrs)
 lag Autocorrelation D-W Statistic p-value
   1     0.005735402      1.986317   0.852
 Alternative hypothesis: rho != 0

Dado que a estatística de Durbin-Watson está entre 1 e 3 (1.98), que reforça uma ideia de Independência dos Resíduos. Em seguida, avaliando o valor p, temos que o valor p é suficientemente grande (0.85 > 0.05), logo, não se rejeita a hipótese nula, admitindo que existe independência dos resíduos.

Teste de Homocedasticidade Breusch-Pagan
bptest(model.mageyrs)

    studentized Breusch-Pagan test

data:  model.mageyrs
BP = 0.34671, df = 1, p-value = 0.556

Dado que o valor p do Teste Breusch-Pagan é de 0.56, consideravelmente maior que 0.05, logo, não se rejeita a hipótese nula e podemos concluir que o modelo é homocedástico.

4.3.3 Visualização Gráfica

ggplot(data=dados, mapping = aes(mageyrs, bwtkg)) +
  geom_point() +
  geom_smooth(method = "lm", col="red") +
  stat_regline_equation() +
  theme_classic()
`geom_smooth()` using formula = 'y ~ x'

5 Conclusão

Através dos Testes do Pressuposto realizados, podemos concluir que os modelos de regressão linear gerados atendem aos pressupostos da regressão linear, logo apresentam confiabilidade.

Analisando os resultados obtidos pelos Modelos de Regressão Linear, Análise de Correlação e pelos gráficos desenvolvidos, podemos concluir que os fatores Idades Gestacional e Altura da Mãe possuem relação de associação linear positiva com a variável Peso Ao Nascer. Observando os coeficientes de correlação e os modelos de regressão linear, podemos observar que o fator Idade Gestacional possui uma influência maior sobre o Peso quando comparado ao fator Altura da Mãe. Também podemos concluir que o fator Idade da Mãe não possui influência linear sobre o Peso ao Nascer, e possui correlação extremamente fraca e neglível com essa variável.

Resumindo os resultados obtidos, podemos derivar as seguintes conclusões desse estudo:

  • Os fatores Idade Gestacional e Altura da Mãe possuem influência linear sobre o fator Peso ao Nascer da criança.
  • O fator Idade Gestacional é o fator mais relevante para se prever a variável Peso ao Nascer, dentre os fatores analisados.
  • O fator Idade da Mãe não é relevante para prever a variável Peso ao Nascer, por não possuir correlação significativa e não possuir influência linear.
  • Os pressupostos do modelo de regressão linear são satisfeitas para todos os 3 modelos criados.

5.1 Realizando Previsões De Peso ao Nascer

Para finalizar o estudo, utilizaremos os modelos de regressão para realizar previsões de Peso ao Nascer de uma criança a partir das variáveis de Idade Gestacional, Altura da Mãe e Idade da Mãe.

5.1.1 A partir na Idade Gestacional

gestacaoX <- c(38, 43, 36, 39)
df.gestacaoX <- data.frame("gestwks" = gestacaoX)
previsoes.gestacao <- predict(model.gestwks, df.gestacaoX)

resultados.gestacao <- cbind(gestacaoX, previsoes.gestacao)
resultados.gestacao
  gestacaoX previsoes.gestacao
1        38           3.209961
2        43           3.772612
3        36           2.984901
4        39           3.322491

5.1.2 A partir da Altura da Mãe

alturaX <- c(164, 180, 146, 172)
df.alturaX <- data.frame("mheightcm" = alturaX)
previsoes.altura <- predict(model.mheightcm, df.alturaX)

resultados.altura <- cbind(alturaX, previsoes.altura)
resultados.altura
  alturaX previsoes.altura
1     164         3.414585
2     180         3.669146
3     146         3.128203
4     172         3.541866

5.1.3 A partir da Idade da Mãe

idadeX <- c(27, 37, 22, 54)
df.idadeX <- data.frame("mageyrs" = idadeX)
previsoes.idade <- predict(model.mageyrs, df.idadeX)

resultados.idade <- cbind(idadeX, previsoes.idade)
resultados.idade
  idadeX previsoes.idade
1     27        3.409305
2     37        3.410175
3     22        3.408870
4     54        3.411654