As variáveis da base de dados gpa1 incluem a nota média
em um curso de ensino superior (\(colGPA\) ), a nota média do ensino médio
(\(hsGPA\)) e a nota do teste de
avaliação de conhecimentos para ingresso em curso superior (\(ACT\)) para uma amostra de 141 estudantes
de uma grande universidade dos Estados Unidos, faça o que se pede:
\[colGPA = \beta_{1} + \beta_{2} hsGPA + \beta_{3}ACT + u\]
Calcule as duas medidas de ajustamento apresentadas em sala.
Teste a significância individual dos coeficientes estimados no item a.
Teste a significância conjunta dos coeficientes estimados.
\[ \hat{\beta} = (X^{´}X)^{-1}X^{´}Y\].
Computacionalmente, deve-se seguir os seeguintes passos:
Instalar e carregar os pacotes necessários:
library(tidyverse) # Manipualação de dados
library(wooldridge) # Várias bases de dados
Carregar a base de dados a ser utilizada:
dados <- data("gpa1")
Construir as matrizes com variáveis dependente e explicativas
X <- cbind(1,gpa1$hsGPA,gpa1$ACT) # Variáveis explicativas
colnames(X) <- c("X1","X2","X3")
Y <- cbind(gpa1$colGPA) # Variável dependente
colnames(Y) <- "Y"
XX <- t(X)%*%X
XY <- t(X)%*%Y
Aplicar a fórmula de MQO para estimar os coeficientes de interesse:
beta_hat <- solve(t(X)%*%X)%*%XY
beta_hat
## Y
## X1 1.286327767
## X2 0.453455885
## X3 0.009426012
o intercepto de 1,29 é o valor previsto de \(colGPA\) quando \(hsGPA\) e \(ACT\) forem iguais a zero. Como ninguém que frequenta um curso superior teve nota média no ensino médio igual a zero ou uma nota no teste de ingresso no curso superior igual a zero, o intercepto nessa equação não é, por si mesmo, significativo.
As estimativas mais interessantes são os coeficientes de inclinação de \(hsGPA\) e \(ACT\). Como esperado, há uma relação parcial positiva entre \(colGPA\) e \(hsGPA\): mantendo \(ACT\) fixo, um ponto adicional em \(hsGPA\) está associado a 0,453 de um ponto em \(colGPA\), ou quase meio ponto. Em outras palavras, se escolhermos dois estudantes, A e B, e esses estudantes tiverem a mesma nota \(ACT\), mas \(hsGPA\) do estudante A é um ponto maior que a \(hsGPA\) do estudante B, prevemos que o estudante A tem \(colGPA\) 0,453 maior que \(colGPA\) do estudante B.
\[R^2 = 1 - \frac{SQR}{STQ}\] \[\bar{R}^2 = 1 - \frac{\frac{SQR}{N-K}}{\frac{STQ}{N-1}}\]
Onde \(STQ\) é a Soma Total dos Quadrados: \(\sum(Y_{i} - \bar{Y})^2\); \(SQR\) é a Soma dos Quadrados dos Resíduos \((\sum \hat{u_{i}}^2 = \sum(Y_{i} - \hat{Y_{i}})^2)\); \(N\) o número de observações e \(K\) a quantidade de parâmetros incluindo o intercepto.
Calculando \(\hat{u_{i}}\):
y_hat <- X%*%beta_hat # Valores previstos para a variável dependente
u_hat <- Y - y_hat # Resíduo estimado
Calculando STQ e SQR:
STQ <- sum((Y-mean(Y))^2)
SQR <- sum(u_hat^2)
Obtendo as medidas de ajustamento:
R2 <- 1-SQR/STQ
R2
## [1] 0.1764216
adjusted_R2 <- 1 - (SQR/(length(Y)-3))/(STQ/(length(Y)-1))
adjusted_R2
## [1] 0.1644857
\[V(\hat{\beta}|X) = \sigma^2(X^{´}X)^{-1}\] onde \(\sigma^2\) pode ser estimado por:
\[ \hat{\sigma}^2 = \frac{\sum \hat{u_{i}}^2}{N-K}\]
Assim, \(\hat{\sigma}^2\) é obtido da seguinte forma:
sigma2_hat <- sum(u_hat^2)/(length(Y)-3)
\(V(\hat{\beta}|X)\) então será dado por:
var_beta <- sigma2_hat*solve(t(X)%*%X)
var_beta
## X1 X2 X3
## X1 0.116159717 -0.0226063687 -0.0015908486
## X2 -0.022606369 0.0091801149 -0.0003570767
## X3 -0.001590849 -0.0003570767 0.0001161478
Os testes t podem ser calculados como se segue:
t_beta1 <- (beta_hat[1] - 0)/sqrt(var_beta[1,1])
t_beta1
## [1] 3.774191
t_beta2 <- (beta_hat[2] - 0)/sqrt(var_beta[2,2])
t_beta2
## [1] 4.732722
t_beta3 <- (beta_hat[3] - 0)/sqrt(var_beta[3,3])
t_beta3
## [1] 0.8746263
F <- (R2/(3-1))/((1-R2)/(length(Y)-3))
F
## [1] 14.78073
Todos os resultados computados manualmente nos itens acima podem ser
facilmente obtidos através do comando lm disponível
nativamente no R através dos seguintes comandos:
Modelo1 <- lm(colGPA~hsGPA+ACT, data = gpa1)
summary(Modelo1)
##
## Call:
## lm(formula = colGPA ~ hsGPA + ACT, data = gpa1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.85442 -0.24666 -0.02614 0.28127 0.85357
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.286328 0.340822 3.774 0.000238 ***
## hsGPA 0.453456 0.095813 4.733 5.42e-06 ***
## ACT 0.009426 0.010777 0.875 0.383297
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.3403 on 138 degrees of freedom
## Multiple R-squared: 0.1764, Adjusted R-squared: 0.1645
## F-statistic: 14.78 on 2 and 138 DF, p-value: 1.526e-06
Utilize dados da base crime4 para para estimar um modelo
de taxas de criminalidade a nível municipal, utilizando apenas o ano de
1987.
utilize todas as variáveis em forma logarítmica , estime um modelo relacionando a taxa de criminalidade às variáveis \(prbarr\), \(prbconv\), \(prbpris\) e \(avgsen\).
Adicione \(log(crmrte)\) de 1986 como uma variável explicativa adicional e comente sobre como as elasticidades estimadas diferem da parte a.
Adicione todas as variáveis de salário (novamente em logaritmos) ao modelo estimado no item b;
Calcule a estatística F para a significância conjunta de todas as variáveis de salário usando o modelo restrito da parte b.
data("crime4")
crime_1987 <- crime4 |> # Filtrando apenas as observações referentes ao no de 1987
filter(year==87)
Estimando o modelo utilizando o comando lm:
Modelo1_Q2 <- lm(lcrmrte ~ lprbarr + lprbconv + lprbpris + lavgsen, data = crime_1987)
summary(Modelo1_Q2)
##
## Call:
## lm(formula = lcrmrte ~ lprbarr + lprbconv + lprbpris + lavgsen,
## data = crime_1987)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.36105 -0.19129 0.07939 0.27754 0.86843
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -4.86792 0.43153 -11.281 < 2e-16 ***
## lprbarr -0.72397 0.11532 -6.278 1.39e-08 ***
## lprbconv -0.47251 0.08311 -5.686 1.80e-07 ***
## lprbpris 0.15967 0.20644 0.773 0.441
## lavgsen 0.07642 0.16347 0.467 0.641
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.429 on 85 degrees of freedom
## Multiple R-squared: 0.4162, Adjusted R-squared: 0.3888
## F-statistic: 15.15 on 4 and 85 DF, p-value: 2.171e-09
Devido à forma funcional log-log, todos os coeficientes são elasticidades. As elasticidades da criminalidade em relação às probabilidades de prisão e condenação têm o sinal esperado, e ambas são estatisticamente significativas. As elasticidades em relação à probabilidade de cumprir pena de prisão e à duração média da sentença são positivas, mas estatisticamente insignificantes.
crime_1987 <- crime4 |>
mutate(lcrmrte_1=lag(lcrmrte)) |>
filter(year==87)
Estimando o modelo com a nova variável:
Modelo2_Q2 <- lm(lcrmrte ~ lcrmrte_1 +lprbarr + lprbconv + lprbpris + lavgsen, data = crime_1987)
summary(Modelo2_Q2)
##
## Call:
## lm(formula = lcrmrte ~ lcrmrte_1 + lprbarr + lprbconv + lprbpris +
## lavgsen, data = crime_1987)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.28023 -0.08931 0.03055 0.11019 0.32422
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.76663 0.31310 -2.449 0.01643 *
## lcrmrte_1 0.77981 0.04521 17.248 < 2e-16 ***
## lprbarr -0.18504 0.06276 -2.948 0.00414 **
## lprbconv -0.03868 0.04660 -0.830 0.40890
## lprbpris -0.12669 0.09885 -1.282 0.20351
## lavgsen -0.15202 0.07829 -1.942 0.05552 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2025 on 84 degrees of freedom
## Multiple R-squared: 0.8715, Adjusted R-squared: 0.8638
## F-statistic: 113.9 on 5 and 84 DF, p-value: < 2.2e-16
Há algumas mudanças notáveis nos coeficientes das variáveis originais. As elasticidades em relação a \(prbarr\) e \(prbconv\) são muito menores agora, mas ainda possuem os sinais previstos pela teoria do efeito dissuasor. A probabilidade de condenação não é mais estatisticamente significativa. Adicionar a taxa de criminalidade defasada altera os sinais das elasticidades em relação a \(prbpris\) e \(avgsen\), e esta última é quase estatisticamente significativa ao nível de 5%. Não é surpreendente que a elasticidade em relação à taxa de criminalidade defasada seja grande e muito estatisticamente significativa.
Modelo3_Q2 <- lm(lcrmrte ~ lcrmrte_1 +lprbarr + lprbconv + lprbpris + lavgsen +
lwcon+lwtuc+lwtrd+lwfir+lwser+lwmfg+lwfed+
lwsta+lwloc, data = crime_1987)
summary(Modelo3_Q2)
##
## Call:
## lm(formula = lcrmrte ~ lcrmrte_1 + lprbarr + lprbconv + lprbpris +
## lavgsen + lwcon + lwtuc + lwtrd + lwfir + lwser + lwmfg +
## lwfed + lwsta + lwloc, data = crime_1987)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.08551 -0.08893 0.01248 0.10860 0.35101
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -3.79253 1.95747 -1.937 0.0565 .
## lcrmrte_1 0.74534 0.05303 14.054 <2e-16 ***
## lprbarr -0.17251 0.06595 -2.616 0.0108 *
## lprbconv -0.06836 0.04973 -1.375 0.1733
## lprbpris -0.21556 0.10240 -2.105 0.0386 *
## lavgsen -0.19605 0.08446 -2.321 0.0230 *
## lwcon -0.28500 0.17752 -1.605 0.1126
## lwtuc 0.06413 0.13433 0.477 0.6344
## lwtrd 0.25371 0.23174 1.095 0.2771
## lwfir -0.08353 0.19650 -0.425 0.6720
## lwser 0.11275 0.08474 1.331 0.1874
## lwmfg 0.09874 0.11861 0.832 0.4078
## lwfed 0.33613 0.24531 1.370 0.1747
## lwsta 0.03951 0.20721 0.191 0.8493
## lwloc -0.03699 0.32915 -0.112 0.9108
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.1973 on 75 degrees of freedom
## Multiple R-squared: 0.8911, Adjusted R-squared: 0.8707
## F-statistic: 43.81 on 14 and 75 DF, p-value: < 2.2e-16
Calculando manualmente o teste:
SQR_r <- sum(Modelo2_Q2$residuals^2) #Soma dos quadrados dos resíduos do modelo restrito
SQR_r
## [1] 3.444725
SQR_u <- sum(Modelo3_Q2$residuals^2) #Soma dos quadrados dos resíduos do modelo irrestrito
SQR_u
## [1] 2.919821
F <- ((SQR_r - SQR_u)/9)/(SQR_u/(90-15))
F
## [1] 1.498106
Calculando através da função linearHypothesis do pacote
car
library(car)
linearHypothesis(Modelo3_Q2, c("lwcon=0","lwtuc=0","lwtrd=0","lwfir=0","lwser=0",
"lwmfg=0","lwfed=0","lwsta=0","lwloc=0"), test = "F")
## Linear hypothesis test
##
## Hypothesis:
## lwcon = 0
## lwtuc = 0
## lwtrd = 0
## lwfir = 0
## lwser = 0
## lwmfg = 0
## lwfed = 0
## lwsta = 0
## lwloc = 0
##
## Model 1: restricted model
## Model 2: lcrmrte ~ lcrmrte_1 + lprbarr + lprbconv + lprbpris + lavgsen +
## lwcon + lwtuc + lwtrd + lwfir + lwser + lwmfg + lwfed + lwsta +
## lwloc
##
## Res.Df RSS Df Sum of Sq F Pr(>F)
## 1 84 3.4447
## 2 75 2.9198 9 0.5249 1.4981 0.1643
As nove variáveis de salário são conjuntamente insignificantes, mesmo ao nível de 15%. Além disso, as elasticidades não são consistentemente positivas ou negativas. As duas maiores elasticidades – que também têm os maiores valores absolutos das estatísticas t – têm sinais opostos. Estas são em relação ao salário na construção (-0,285) e ao salário para funcionários federais (0,336).
Considere uma equação para explicar os salários dos diretores executivos em termos das vendas anuais das empresas (vendas), dos retornos das ações sobre o patrimônio (\(roe\), na forma percentual) e dos retornos das ações sobre o valor das ações das empresas (\(ros\), na forma percentual):
\[log(salary) = \beta_{0} + \beta_{1}log(sales) + \beta_{2}roe + \beta_{3}ros + u\]
Usando os dados em ceosal1, estime a equação acima
por MQO. Se \(ros\) aumenta em 50
pontos, qual é a variação percentual prevista em salário? Na prática,
\(ros\) tem um efeito grande sobre
salário?
Teste a hipótese nula de que \(ros\) não tem efeito sobre o salário.
Você incluiria \(ros\) no modelo final que explica a remuneração dos diretores executivos em termos do desempenho das empresas? Explique.
data("ceosal1")
Estimando o modelo:
Modelo1_Q3 <- lm(lsalary ~ lsales + roe + ros, data = ceosal1)
summary(Modelo1_Q3)
##
## Call:
## lm(formula = lsalary ~ lsales + roe + ros, data = ceosal1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.96060 -0.27144 -0.03264 0.22563 2.79805
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.3117125 0.3154329 13.669 < 2e-16 ***
## lsales 0.2803149 0.0353200 7.936 1.34e-13 ***
## roe 0.0174168 0.0040923 4.256 3.17e-05 ***
## ros 0.0002417 0.0005418 0.446 0.656
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.4832 on 205 degrees of freedom
## Multiple R-squared: 0.2827, Adjusted R-squared: 0.2722
## F-statistic: 26.93 on 3 and 205 DF, p-value: 1.001e-14
O efeito proporcional sobre o salário é 0,00024(50) = 0,012. Para obter o efeito percentual, multiplicamos isso por 100: 1,2%. Portanto, um aumento de 50 pontos ceteris paribus em \(ros\) é previsto para aumentar o salário em apenas 1,2%. Em termos práticos, este é um efeito muito pequeno para uma mudança tão grande em \(ros\).