Iniciamos carregando a base de dados “Boston”, obtida através da biblioteca “MASS”.
data("Boston")
Agora, realizamos uma regressão linear em que o regressor é o percentual de moradores de baixo status econômico (lstat) e o regressando é o valor mediano das casas em uma vizinhança (medv). Além disso, apresentamos um resumo do modelo.
mod <- lm(medv ~ lstat)
summary(mod)
##
## Call:
## lm(formula = medv ~ lstat)
##
## Residuals:
## Min 1Q Median 3Q Max
## -15.168 -3.990 -1.318 2.034 24.500
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 34.55384 0.56263 61.41 <2e-16 ***
## lstat -0.95005 0.03873 -24.53 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 6.216 on 504 degrees of freedom
## Multiple R-squared: 0.5441, Adjusted R-squared: 0.5432
## F-statistic: 601.6 on 1 and 504 DF, p-value: < 2.2e-16
Q2 <- ggplot(Boston, aes(x = lstat, y = medv)) + geom_point() +
geom_smooth(method = "lm", col = "red", se = FALSE)
log_mod <- lm(medv ~ log(lstat))
summary(log_mod)
##
## Call:
## lm(formula = medv ~ log(lstat))
##
## Residuals:
## Min 1Q Median 3Q Max
## -14.4599 -3.5006 -0.6686 2.1688 26.0129
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 52.1248 0.9652 54.00 <2e-16 ***
## log(lstat) -12.4810 0.3946 -31.63 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 5.329 on 504 degrees of freedom
## Multiple R-squared: 0.6649, Adjusted R-squared: 0.6643
## F-statistic: 1000 on 1 and 504 DF, p-value: < 2.2e-16
Q4 <- ggplot(Boston, aes(x = log(lstat), y = medv)) + geom_point() +
geom_smooth(method = "lm", col = "red", se = FALSE)
log2_mod <- lm(medv ~ log(lstat) + I(log(lstat)^2))
summary(log2_mod)
##
## Call:
## lm(formula = medv ~ log(lstat) + I(log(lstat)^2))
##
## Residuals:
## Min 1Q Median 3Q Max
## -13.7372 -3.2447 -0.6264 2.3164 26.8335
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 62.8109 2.7446 22.885 < 2e-16 ***
## log(lstat) -22.5970 2.4683 -9.155 < 2e-16 ***
## I(log(lstat)^2) 2.2232 0.5357 4.150 3.9e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 5.245 on 503 degrees of freedom
## Multiple R-squared: 0.676, Adjusted R-squared: 0.6748
## F-statistic: 524.8 on 2 and 503 DF, p-value: < 2.2e-16
Primeiro definimos a variável “coef_Q5”, que contém os coeficientes do modelo “log2_mod”.
coef_Q5 <- coef(log2_mod)
## (Intercept) log(lstat) I(log(lstat)^2)
## 62.810865 -22.597006 2.223174
Agora, calculamos qual o valor esperado da variável dependente “medv” quando “lstat” é igual a 11% (medv_11)
medv_11 <- coef_Q5[2]*(log(11)) + coef_Q5[3]*((log(11)^2))
## log(lstat)
## -41.40222
e quando “lstat” é igual a 10% (medv_10).
medv_10 <- coef_Q5[2]*(log(10)) + coef_Q5[3]*((log(10)^2))
## log(lstat)
## -40.24449
Assim, a variação em “medv” quando “lstat” varia de 10 para 11 (ou seja, quando o percentual de moradores de baixo nível econômico aumenta de 10% para 11%) é
medv_11 - medv_10
## log(lstat)
## -1.157735
Primeiramente, criamos o vetor “old” - 1 se variável “age” for igual ou maior que 95, e zero caso contrário.
old <- as.numeric(age >= 95)
Em seguida, realizamos a regressão e apresentamos os resultados.
mod_co <- lm(medv ~ chas + old + I(chas*old))
summary(mod_co)
##
## Call:
## lm(formula = medv ~ chas + old + I(chas * old))
##
## Residuals:
## Min 1Q Median 3Q Max
## -17.771 -4.765 -1.683 2.776 33.433
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 23.6989 0.4503 52.624 < 2e-16 ***
## chas 4.0582 1.6872 2.405 0.0165 *
## old -7.1319 0.9493 -7.513 2.67e-13 ***
## I(chas * old) 10.5462 3.7577 2.807 0.0052 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 8.604 on 502 degrees of freedom
## Multiple R-squared: 0.1301, Adjusted R-squared: 0.1249
## F-statistic: 25.02 on 3 and 502 DF, p-value: 4.244e-15
A regressão acima é um caso de interação entre as variáveis qualitativas, ou seja, o efeito de chas e old sobre o Y médio não é apenas aditivo, mas também multiplicativo.
Da equação de regressão obtemos,
\[ E(medv_i | chas = 1, old = 1) = \beta_0 + \beta_1 + \beta_2 + \beta_3 \]
Em que,
\(\beta_1\) é o efeito diferencial de estar na divisa com o Rio Charles
\(\beta_2\) é o efeito difirencial de estar em uma vizinhança com mais de 95% das casas construídas antes de 1940
\(\beta_3\) é o efeito diferencial de estar em uma vizinhança que faz divisa com o Rio Charles e, também, possui mais de 95% das casas construídas antes de 1940
o que mostra que a mediana do valor das casas que fazem divisa com o Rio e que estão em vizinhanças com prédios mais antigos é diferente (por \(\beta_3\)) da mediana do valor das casas que fazem divisa com o Rio ou estão em regiões com prédios mais antigos1.
Dessa forma, o efeito estimado sobre a variável “medv” ao se mudar de uma vizinhança com menos de 95% de prédios antigos para uma vizinhança com pelo menos 95% de prédios antigos é, no caso em que a vizinhança faz divisa com o Rio Charles (\(chas_i = 1\)),
\[\beta_2 + \beta_3\]
ou seja, \(-7.13 + 10.55 = 3.42\). Interpretando esse resultado, podemos dizer que se mudar de uma vizinhança com menos de 95% de prédios antigos para uma vizinhança com pelo menos 95% de prédios antigos, dado que a vizinhança faz divisa com o Rio Charles, aumenta o valor mediano da casa em, aproximadamente, $34202.
Para o caso em que \(chas_i = 0\), temos que o efeito estimado sobre a variável “medv” ao se mudar de uma vizinhança com menos de 95% de prédios antigos para uma vizinhança com pelo menos 95% de prédios antigos é,
\[\beta_2\] ou seja, \(-7.13\), o que indica que se mudar de uma vizinhança com menos de 95% de prédios antigos para uma vizinhança com pelo menos 95% de prédios antigos, dado que a vizinhança não faz divisa com o Rio Charles, reduz o valor da casa em, aproximadamente, $71303.
mod_io <- lm(medv ~ indus + old + I(indus*old))
summary(mod_io)
##
## Call:
## lm(formula = medv ~ indus + old + I(indus * old))
##
## Residuals:
## Min 1Q Median 3Q Max
## -12.379 -5.066 -1.588 3.015 33.046
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 30.06350 0.72882 41.250 <2e-16 ***
## indus -0.65844 0.06569 -10.024 <2e-16 ***
## old -7.48438 3.07918 -2.431 0.0154 *
## I(indus * old) 0.37115 0.17558 2.114 0.0350 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 8.024 on 502 degrees of freedom
## Multiple R-squared: 0.2434, Adjusted R-squared: 0.2389
## F-statistic: 53.83 on 3 and 502 DF, p-value: < 2.2e-16
Nesse caso temos uma dummy de inclinação, ou seja, o coeficiente angular parcial de \(indus_i\) irá variar dependendo do valor de \(old_i\).
Partindo da equação de regressão,
\[ medv_i = \beta_0 + \beta_1*indus_i + \beta_2*old_i + \beta_3*(indus_i*old_i) + \mu_i\] obtemos, para o caso em que \(old_i = 0\),
\[E(medv_i\:|\: old_i = 0,\: indus_i) = \beta_0 + \beta_1*indus_i\]
e, para o caso em que \(old_i = 1\),
\[E(medv_i\:|\: old_i = 1,\: indus_i) = \beta_0 + \beta_1*indus_i + \beta_2 + \beta_3*indus_i\] \[ = \beta_0 + (\beta_1 + \beta_3)*indus_i + \beta_2 \]
ou seja, o efeito esperado sobre “medv” de um aumento de uma unidade na variável “indus”, no caso em que \(old_i = 0\), é \(\beta_1\) e, no caso em que \(old_i = 1\), é \(\beta_1 + \beta_3\).
Assim,
\[ E(\frac{\delta medv_i}{\delta indus_i} \: | \: old_i = 0, \: indus_i) = \beta_1 = -0.65844 \]
o que, por sua vez, significa que um aumento de 1% na variável \(indus_i\) gera, na média, uma redução de $658.44 no valor mediano das casas, dado que estamos em uma vizinhança em que menos de 95% dos prédios são de antes de 1940.
Ademais,
\[ E(\frac{\delta medv_i}{\delta indus_i} \: | \: old_i = 1, \: indus_i) = \beta_1 + \beta_3= -0.65844 + 0.37115 = -0.28729 \]
o que significa que um aumento de 1% na variável \(indus_i\) gera, na média, uma redução de $287.29 no valor mediano das casas, dado que estamos em uma vizinhança em que mais de 95% dos prédios são de antes de 1940.