library(wooldridge)

data("minwage")

# Create a lagged variable for gwage232
minwage$lag_gwage232 <- lag(minwage$gwage232)

# (i) First-order autocorrelation and weak stationarity
filtered_data <- minwage[complete.cases(minwage$gwage232, minwage$lag_gwage232), ]

# Calculate autocorrelation for filtered data
acf(filtered_data$gwage232, lag.max = 1)

# (ii) Dynamic model estimation
model1 <- lm(gwage232 ~ lag_gwage232 + gmwage + gcpi, data = filtered_data)
summary(model1)
## 
## Call:
## lm(formula = gwage232 ~ lag_gwage232 + gmwage + gcpi, data = filtered_data)
## 
## Residuals:
##        Min         1Q     Median         3Q        Max 
## -1.138e-17 -1.537e-18 -3.990e-19  1.031e-18  3.063e-16 
## 
## Coefficients:
##                Estimate Std. Error    t value Pr(>|t|)    
## (Intercept)   3.369e-18  6.877e-19  4.899e+00 1.24e-06 ***
## lag_gwage232  1.000e+00  6.479e-17  1.544e+16  < 2e-16 ***
## gmwage       -4.748e-20  1.825e-17 -3.000e-03    0.998    
## gcpi          5.317e-16  1.321e-16  4.024e+00 6.46e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.264e-17 on 607 degrees of freedom
## Multiple R-squared:      1,  Adjusted R-squared:      1 
## F-statistic: 1.123e+32 on 3 and 607 DF,  p-value: < 2.2e-16
# (iii) Adding lagged employment growth
model2 <- lm(gwage232 ~ lag_gwage232 + gmwage + gcpi + lag(gemp232), data = filtered_data)
summary(model2)
## 
## Call:
## lm(formula = gwage232 ~ lag_gwage232 + gmwage + gcpi + lag(gemp232), 
##     data = filtered_data)
## 
## Residuals:
##        Min         1Q     Median         3Q        Max 
## -1.123e-17 -1.582e-18 -4.110e-19  8.800e-19  3.060e-16 
## 
## Coefficients:
##                Estimate Std. Error    t value Pr(>|t|)    
## (Intercept)   3.369e-18  6.880e-19  4.897e+00 1.25e-06 ***
## lag_gwage232  1.000e+00  6.483e-17  1.543e+16  < 2e-16 ***
## gmwage        1.042e-19  1.826e-17  6.000e-03    0.995    
## gcpi          5.319e-16  1.322e-16  4.024e+00 6.45e-05 ***
## lag(gemp232) -2.146e-17  2.747e-17 -7.810e-01    0.435    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.264e-17 on 606 degrees of freedom
## Multiple R-squared:      1,  Adjusted R-squared:      1 
## F-statistic: 8.416e+31 on 4 and 606 DF,  p-value: < 2.2e-16
# (iv) Comparing model coefficients
coef(model1)["gmwage"]
##        gmwage 
## -4.747743e-20
coef(model2)["gmwage"]
##       gmwage 
## 1.042475e-19
# (v) R-squared for gmwage regression
model3 <- lm(gmwage ~ lag(gwage232) + lag(gemp232), data = filtered_data)
summary(model3)$r.squared
## [1] 0.2825375

Including Plots