library(wooldridge)
data("minwage")
# Create a lagged variable for gwage232
minwage$lag_gwage232 <- lag(minwage$gwage232)
# (i)
filtered_data <- minwage[complete.cases(minwage$gwage232, minwage$lag_gwage232), ]
acf(filtered_data$gwage232, lag.max = 1)

# (ii)
model1 <- lm(gwage232 ~ lag_gwage232 + gmwage + gcpi, data = filtered_data)
summary(model1)
## Warning in summary.lm(model1): essentially perfect fit: summary may be
## unreliable
##
## Call:
## lm(formula = gwage232 ~ lag_gwage232 + gmwage + gcpi, data = filtered_data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -9.328e-18 -4.733e-19 -1.509e-19 2.395e-19 2.199e-17
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 5.614e-19 8.101e-20 6.930e+00 1.08e-11 ***
## lag_gwage232 1.000e+00 7.632e-18 1.310e+17 < 2e-16 ***
## gmwage -1.176e-17 2.150e-18 -5.468e+00 6.65e-08 ***
## gcpi 5.219e-17 1.557e-17 3.353e+00 0.00085 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.489e-18 on 607 degrees of freedom
## Multiple R-squared: 1, Adjusted R-squared: 1
## F-statistic: 8.091e+33 on 3 and 607 DF, p-value: < 2.2e-16
# (iii)
model2 <- lm(gwage232 ~ lag_gwage232 + gmwage + gcpi + lag(gemp232), data = filtered_data)
summary(model2)
## Warning in summary.lm(model2): essentially perfect fit: summary may be
## unreliable
##
## Call:
## lm(formula = gwage232 ~ lag_gwage232 + gmwage + gcpi + lag(gemp232),
## data = filtered_data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -9.345e-18 -5.038e-19 -1.412e-19 2.410e-19 2.197e-17
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 5.614e-19 8.107e-20 6.925e+00 1.11e-11 ***
## lag_gwage232 1.000e+00 7.640e-18 1.309e+17 < 2e-16 ***
## gmwage -1.175e-17 2.152e-18 -5.460e+00 6.97e-08 ***
## gcpi 5.221e-17 1.558e-17 3.351e+00 0.000854 ***
## lag(gemp232) -1.365e-18 3.237e-18 -4.220e-01 0.673352
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.49e-18 on 606 degrees of freedom
## Multiple R-squared: 1, Adjusted R-squared: 1
## F-statistic: 6.06e+33 on 4 and 606 DF, p-value: < 2.2e-16
# (iv)
coef(model1)["gmwage"]
## gmwage
## -1.175795e-17
coef(model2)["gmwage"]
## gmwage
## -1.17483e-17
# (v)
model3 <- lm(gmwage ~ lag(gwage232) + lag(gemp232), data = filtered_data)
summary(model3)$r.squared
## [1] 0.2825375