Pacote: Ecdat
#install.packages("Ecdat")
library(Ecdat)
## Warning: package 'Ecdat' was built under R version 4.0.5
## Loading required package: Ecfun
## Warning: package 'Ecfun' was built under R version 4.0.5
##
## Attaching package: 'Ecfun'
## The following object is masked from 'package:base':
##
## sign
##
## Attaching package: 'Ecdat'
## The following object is masked from 'package:datasets':
##
## Orange
data(Airq) # Carregando banco de dados
names(Airq)
## [1] "airq" "vala" "rain" "coas" "dens" "medi"
Variavel resposta: Aquela que vai sofrer influência com as demais variáveis Airq = Indice de qualidade do ar (quanto menor, melhor)
Variaveis Explicativas: Ajudam a explicar a variação da variável resposta Vala = Valor das empresas nas cidades (milhares de dólares) Rain = Quantidade de chuva (em polegadas) Coas = Posição costeria da cidade (sim ou não) Dens = Densidade Populacional (milha quadrada) Medi = Renda Média per capita (Dólares)
summary(Airq)
## airq vala rain coas dens
## Min. : 59.0 Min. : 992.9 Min. :12.63 no : 9 Min. : 271.6
## 1st Qu.: 81.0 1st Qu.: 1535.8 1st Qu.:31.02 yes:21 1st Qu.: 365.2
## Median :114.0 Median : 2629.8 Median :36.66 Median : 796.2
## Mean :104.7 Mean : 4188.5 Mean :36.08 Mean : 1728.6
## 3rd Qu.:126.2 3rd Qu.: 4141.4 3rd Qu.:42.70 3rd Qu.: 1635.2
## Max. :165.0 Max. :19733.8 Max. :68.13 Max. :12957.5
## medi
## Min. : 853
## 1st Qu.: 3340
## Median : 4858
## Mean : 9477
## 3rd Qu.: 8715
## Max. :59460
As varíaveis podem ser contínuas ou categóricas
Visualização gráfica da qualidade do ar em função da variável vala
plot(airq~vala, data=Airq)
1) Regressão Linear: Quando se tem duas variáveis contínuos no modelo
Quando montamos o modelo, o que mais esperamos é encontrar o valor de p, que indica a significância do modelo ou variável
Se p-valor for menor que 0.05 quer dizer que a variável explicativa influência a variável resposta Se p-valor for maior que 0.05 que dizer que a variável explicativa não influencia de maneira significativa a variável resposta
m1 <- lm(airq~vala, data = Airq)
m1
##
## Call:
## lm(formula = airq ~ vala, data = Airq)
##
## Coefficients:
## (Intercept) vala
## 96.451419 0.001969
summary(m1)
##
## Call:
## lm(formula = airq ~ vala, data = Airq)
##
## Residuals:
## Min 1Q Median 3Q Max
## -44.970 -22.002 7.228 20.774 60.361
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 96.451419 6.691801 14.413 1.76e-14 ***
## vala 0.001969 0.001082 1.821 0.0794 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 26.97 on 28 degrees of freedom
## Multiple R-squared: 0.1058, Adjusted R-squared: 0.07391
## F-statistic: 3.314 on 1 and 28 DF, p-value: 0.07938
Como o p-valor foi 0.07 (maior que 0.05), podemos afirmar a variável valor das empresas não influência na qualidade do ar
(Tentar nova varíavel explicativa, dessa vez a variável é categórica)
m2 <- lm(airq~coas, data = Airq)
summary(m2)
##
## Call:
## lm(formula = airq ~ coas, data = Airq)
##
## Residuals:
## Min 1Q Median 3Q Max
## -36.857 -15.726 -6.333 17.167 69.143
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 125.333 8.288 15.123 5.32e-15 ***
## coasyes -29.476 9.906 -2.976 0.00596 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 24.86 on 28 degrees of freedom
## Multiple R-squared: 0.2403, Adjusted R-squared: 0.2131
## F-statistic: 8.855 on 1 and 28 DF, p-value: 0.005965
Como o resultado foi 0.005 indica que é significativa, pois p valor é menor que 0.05. Isso indica que a variável de posição costeira da cidade influência a qualidade do ar das cidades.
Visualização gráfica da influência das variáveis
plot(airq~coas, data = Airq)
O boxplot indicam que as variáveis que estão mais próximas das cidades costerias apresentam melhor qualidade do ar, do que aquelas que não estão na posição costeira. Quanto menor o indice, melhor a qualidade do ar.Pode ter algo nas cidades costerias (ex.correntes de ar que justificam melhor a qualidade de ar)
Depois de ter visto como funciona, fazer o modelo de regressão para todas as varíaveis explicativas
m3 <- lm(airq~rain, data = Airq)
summary(m3)
##
## Call:
## lm(formula = airq ~ rain, data = Airq)
##
## Residuals:
## Min 1Q Median 3Q Max
## -46.648 -24.679 9.367 21.734 60.303
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 106.6662 15.0895 7.069 1.09e-07 ***
## rain -0.0545 0.3926 -0.139 0.891
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 28.51 on 28 degrees of freedom
## Multiple R-squared: 0.0006878, Adjusted R-squared: -0.035
## F-statistic: 0.01927 on 1 and 28 DF, p-value: 0.8906
O resultado foi 0.891, isso indica que a variável não influencia
m4 <- lm(airq~dens, data = Airq)
summary(m4)
##
## Call:
## lm(formula = airq ~ dens, data = Airq)
##
## Residuals:
## Min 1Q Median 3Q Max
## -46.051 -24.248 8.847 22.365 59.937
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.054e+02 6.128e+00 17.195 <2e-16 ***
## dens -3.857e-04 1.872e-03 -0.206 0.838
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 28.5 on 28 degrees of freedom
## Multiple R-squared: 0.001514, Adjusted R-squared: -0.03415
## F-statistic: 0.04246 on 1 and 28 DF, p-value: 0.8382
O resultado de p-valor foi de 0.838 e isso indica que a varíavel densidade populacional não influência na qualidade do ar
m5 <- lm(airq~medi, data = Airq)
summary(m5)
##
## Call:
## lm(formula = airq ~ medi, data = Airq)
##
## Residuals:
## Min 1Q Median 3Q Max
## -49.214 -21.358 5.696 19.247 60.410
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 9.936e+01 6.365e+00 15.609 2.4e-15 ***
## medi 5.638e-04 4.102e-04 1.374 0.18
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 27.61 on 28 degrees of freedom
## Multiple R-squared: 0.0632, Adjusted R-squared: 0.02975
## F-statistic: 1.889 on 1 and 28 DF, p-value: 0.1802
O resultado do valor de p foi de 0.18 e isso indica que a Renda Média per capita não influência na qualidade do ar
Normalmente, vou colocar a reta quando há influência entre a varíavel explicativa e a variável resposta, porém, posso colocar quando não há significância também
Fazendo a reta de Regressão Linear
Modelo 1: Vala (Não significativo)
m1 <- lm(airq~vala, data = Airq)
summary(m1)
##
## Call:
## lm(formula = airq ~ vala, data = Airq)
##
## Residuals:
## Min 1Q Median 3Q Max
## -44.970 -22.002 7.228 20.774 60.361
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 96.451419 6.691801 14.413 1.76e-14 ***
## vala 0.001969 0.001082 1.821 0.0794 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 26.97 on 28 degrees of freedom
## Multiple R-squared: 0.1058, Adjusted R-squared: 0.07391
## F-statistic: 3.314 on 1 and 28 DF, p-value: 0.07938
Para fazer a reta vou usar a função curve (que pode fazer tanto reta como curva, dependendo dos dados que tenho) e preciso pegar os valores do intercepto (96.451419) e da varíavel vala (0.001969)
plot(airq~vala, data = Airq)
curve(96.451419+0.001969*x, add = TRUE)
Melhorando o gráfico
plot(airq~vala, data = Airq,
xlab = "Valor das empresas",
ylab = "Qualidade do ar",
pch = 16,
col = "blue",
main = "Valor das empresas e qualidade do ar",
cex.lab = 1.5,
ylim = c(50, 180),
xlim = c(1000, 20000))
curve(96.451419+0.001969*x, add = TRUE,
col = "red",
lwd = 2,
lty = 2)
Modelo 5: Dens (Não significativo)
m5<-lm(airq~dens, data=Airq)
summary(m5)
##
## Call:
## lm(formula = airq ~ dens, data = Airq)
##
## Residuals:
## Min 1Q Median 3Q Max
## -46.051 -24.248 8.847 22.365 59.937
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.054e+02 6.128e+00 17.195 <2e-16 ***
## dens -3.857e-04 1.872e-03 -0.206 0.838
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 28.5 on 28 degrees of freedom
## Multiple R-squared: 0.001514, Adjusted R-squared: -0.03415
## F-statistic: 0.04246 on 1 and 28 DF, p-value: 0.8382
plot(airq~dens, data = Airq,
xlab="Densidade Populacional",
ylab="Qualidade do Ar",
main = "Densidade Populacional e Qualidade do ar",
pch=16,
col="yellow",
cex.lab = 1.5
)
curve(1.054e+02+(-3.857e-04)*x, add = TRUE,
lwd = 2,
lty = 3,
col= "red")
Modelo 2: Coas (Significativo)
m2 <- lm(airq~coas, data = Airq)
summary(m2)
##
## Call:
## lm(formula = airq ~ coas, data = Airq)
##
## Residuals:
## Min 1Q Median 3Q Max
## -36.857 -15.726 -6.333 17.167 69.143
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 125.333 8.288 15.123 5.32e-15 ***
## coasyes -29.476 9.906 -2.976 0.00596 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 24.86 on 28 degrees of freedom
## Multiple R-squared: 0.2403, Adjusted R-squared: 0.2131
## F-statistic: 8.855 on 1 and 28 DF, p-value: 0.005965
plot(airq~coas, data = Airq,
xlab="Cidade Costeira",
ylab="Qualidade do Ar",
main = "Cidade Costeira e Qualidade do ar",
pch=16,
col="green",
cex.lab = 1.5
)
curve(125.333+(-29.476)*x, add = TRUE,
lwd = 2,
lty = 3,
col= "red")
Utilizo mais de uma variável explicativa para ver se elas influenciam a variável resposta
modreg1 <- lm(airq~vala+coas, data = Airq)
summary(modreg1) # Como coas é uma variável categórica, note que o R traz o valor de Coas somente para a categoria YES
##
## Call:
## lm(formula = airq ~ vala + coas, data = Airq)
##
## Residuals:
## Min 1Q Median 3Q Max
## -36.056 -13.349 -5.879 12.785 69.265
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.171e+02 8.717e+00 13.434 1.8e-13 ***
## vala 1.999e-03 9.397e-04 2.128 0.04264 *
## coasyes -2.968e+01 9.336e+00 -3.179 0.00369 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 23.43 on 27 degrees of freedom
## Multiple R-squared: 0.3494, Adjusted R-squared: 0.3012
## F-statistic: 7.249 on 2 and 27 DF, p-value: 0.003021
Ao fazer a regressão linear com mais de uma variável explicativa, houve a modificação do valor de p, assim, antes no modelo de regressão simples as variáveis explicativas não apresentavam influencia na variável resposta, porém agora, o valor de p indica que a influencia delas é significativas.
Plotando o gráfico
plot(airq~vala, data = Airq,
xlab = "Valor das empresas",
ylab = "Qualidade do Ar",
main = "Regressão Linear Multipla",
cex.lab = 1.3
) #Ploto o gráfico somente em relação a variável contínua
curve(1.171e+02+1.999e-03*x,
add = TRUE,
col = "blue",
lwd = 2
) #Faço a reta em relação a variável conntínua, isso indica o valor da cidade não costeira
curve(1.171e+02+1.999e-03*x+-2.968e+01,
add = TRUE,
lty = 2,
col = "red",
lwd = 2
) #A reta em relação a coas, indica o valor da diade costeira
legend("bottomright",
c("Cidades Não-Costeiras", "Cidades Costeiras"),
pch = 1,
lty = c(1,2), #Coloca o tipo de linha na legenda
bty = "n", #Tirar a linha da legenda
col = c("blue", "red") #cor da legenda
)
Assim, a qualidade do ar é influenciada pelo valor das empresas e o fato da cidade ser costeira ou não. As cidades não-costeiras apresentam qualidade do ar pior que as cidades não costeiras
Trabalhando 3 variáveis explicativas
modreg2 <- lm(airq~vala+coas+dens, data = Airq)
summary(modreg2)
##
## Call:
## lm(formula = airq ~ vala + coas + dens, data = Airq)
##
## Residuals:
## Min 1Q Median 3Q Max
## -36.46 -12.83 -6.34 12.70 68.42
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.183e+02 9.066e+00 13.046 6.43e-13 ***
## vala 2.086e-03 9.638e-04 2.165 0.03977 *
## coasyes -2.966e+01 9.454e+00 -3.137 0.00421 **
## dens -9.005e-04 1.578e-03 -0.571 0.57317
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 23.73 on 26 degrees of freedom
## Multiple R-squared: 0.3574, Adjusted R-squared: 0.2833
## F-statistic: 4.82 on 3 and 26 DF, p-value: 0.008454
Ao analisar o resultado, percebo que a variável que inclui de densidade não exerce influência na qualidade do ar, porém ao acrescentar ela na regressão linear houve modificação dos valores de p das outras duas variáveis, ou seja, apesar da variável “dens” não ser significativa para qualidade do ar, ela exerce influência nas outras variáveis explicativas
Posso comparar os dois modelos que fiz anteriormente para saber se a inclusão da variável “dens” foi significativa, caso não seja posso retirar ela e deixar o modelo de maneira mais simples com somente duas variáveis.
Se p>0.05 -> Indica que não diferença entre os modelos, assim eu posso continuar com o modelo mais simples que só tem duas variáveis Se p<0.05 -> Isso indicaq eu há diferença entre os modelos e a nova variável deve ser mantida
Para fazer a diferença de variancia entre as duas, eu utilizo a função Anova
modreg1 <- lm(airq~vala+coas, data = Airq) #Duas Variáveis explicativas
modreg2 <- lm(airq~vala+coas+dens, data = Airq) # Três Variáveis explicativas
#Será a inclusão de "dens" exerce influência no modelo de regressão linear?
anova(modreg1, modreg2)
## Analysis of Variance Table
##
## Model 1: airq ~ vala + coas
## Model 2: airq ~ vala + coas + dens
## Res.Df RSS Df Sum of Sq F Pr(>F)
## 1 27 14823
## 2 26 14640 1 183.33 0.3256 0.5732
Como o valor de p foi 0.5732, isso indica que a inclusão da variável de densidade populacional não exerce influência e por isso, posso retirá-la para deixar o modelo mais simples
As variáveis que afetaram a qualidade do ar foram: valor das empresas e posição costeira das cidades. Quanto maior o valor das empresas, pior a qualidade do ar. Cidades costeiras apresentam uma melhor qualidade do ar.