6  Phillips Curve

6.1 Static Phillips Curve

A static Phillips curve is given by:

\[ inf_t = \beta_0 + \beta_1\, unem_t + u_t, \]

where \(inf_t\) is the annual inflation rate and \(unem_t\) is the unemployment rate.

This form of the Phillips curve assumes a constant natural rate of unemployment and constant inflationary expectations, and it can be used to study the contemporaneous tradeoff between inflation and unemployment.

# data preview
data <- read.table("https://raw.githubusercontent.com/my1396/course_dataset/refs/heads/main/TableF5-2.txt", header = TRUE)
data <- data %>% 
    mutate(delta_infl = infl-lag(infl))
data %>% 
    head() %>% 
    knitr::kable(digits = 5) %>%
    kable_styling(bootstrap_options = c("striped", "hover"), full_width = FALSE, latex_options="scale_down") %>% 
    scroll_box(width = "100%")
Year qtr realgdp realcons realinvs realgovt realdpi cpi_u M1 tbilrate unemp pop infl realint delta_infl
1950 1 1610.5 1058.9 198.1 361.0 1186.1 70.6 110.20 1.12 6.4 149.461 0.0000 0.0000
1950 2 1658.8 1075.9 220.4 366.4 1178.1 71.4 111.75 1.17 5.6 150.260 4.5071 -3.3404 4.5071
1950 3 1723.0 1131.0 239.7 359.6 1196.5 73.2 112.95 1.23 4.6 151.064 9.9590 -8.7290 5.4519
1950 4 1753.9 1097.6 271.8 382.5 1210.0 74.9 113.93 1.35 4.2 151.871 9.1834 -7.8301 -0.7756
1951 1 1773.5 1122.8 242.9 421.9 1207.9 77.3 115.08 1.40 3.5 152.393 12.6160 -11.2160 3.4326
1951 2 1803.7 1091.4 249.2 480.1 1225.8 77.6 116.19 1.53 3.1 152.917 1.5494 -0.0161 -11.0666
lm_phillips_stat <- lm(infl ~ unemp, data = data %>% tail(-2))
summary(lm_phillips_stat)

Call:
lm(formula = infl ~ unemp, data = data %>% tail(-2))

Residuals:
    Min      1Q  Median      3Q     Max 
-6.7020 -2.1922 -0.6098  1.4644 12.7362 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)  
(Intercept)   2.2028     0.8873   2.483   0.0139 *
unemp         0.3056     0.1507   2.028   0.0439 *
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 3.381 on 200 degrees of freedom
Multiple R-squared:  0.02014,   Adjusted R-squared:  0.01524 
F-statistic: 4.111 on 1 and 200 DF,  p-value: 0.04394

The simple regression estimates are

\[ \begin{aligned} \widehat{inf}_t &= 2.22 + 0.30\, unem_t \\ &\phantom{={ }} (0.89)\;\; (.15) \end{aligned} \tag{6.1}\]

The regression indicates a positive relationship (\(\hat{\beta}_1>0\)) between inflation and unemployment at 5% significance level.

There are some problems with this analysis that we cannot address in detail now. The Classical Linear Model assumptions do not hold. In addition, the static Phillips curve is probably not the best model for determining whether there is a short run tradeoff between inflation and unemployment. Macroeconomists generally prefer the expectations augmented Phillips curve, while we will see shortly.

6.2 Expectations Augmented Phillips Curve

Example 12.3 in Greene (2003), 5ed, Econometric Analysis.

A linear version of the expectations augmented Phillips curve can be written as

\[ inf_t - inf^e_t = \beta_1 (unem_t - \mu_0) + e_t, \]

where \(\mu_0\) is the natural rate of unemployment, which we assume constant over time, and \(inf^e_t\) is the expected rate of inflation formed in year \(t-1.\)

The difference between actual unemployment and the natural rate is called cyclical unemployment, while the difference between actual and expected inflation is called unanticipated inflation.

If there is a tradeoff between unanticipated inflation and cyclical unemployment, then \(\beta_1<0.\)

The error term, \(e_t\), is called a supply shock by macroeconomists.

To complete this model, we need to make an assumption about inflationary expectations. Under adaptive expectations, the expected value of current inflation depends on recently observed inflation. A particularly simple formulation is that expected inflation this year is last year’s inflation:

\[ inf^e_t = inf_{t-1} \]

Under this assumption, we can write the following empirical model:

\[ inf_t - inf_{t-1} = \beta_0 + \beta_1 \,unem_t + e_t, \] or

\[ \Delta inf_t = \beta_0 + \beta_1 \,unem_t + e_t, \] where \(\Delta inf_t = inf_t - inf_{t-1}\) and \(\beta_0=-\beta_1\mu_0.\)

Hence, the natural unemployment rate can be obtained by:

\[ \mu_0 = -\frac{\beta_0}{\beta_1}. \]

lm_phillips_aug <- lm(delta_infl ~ unemp, data = data %>% tail(-2))
summary(lm_phillips_aug)

Call:
lm(formula = delta_infl ~ unemp, data = data %>% tail(-2))

Residuals:
     Min       1Q   Median       3Q      Max 
-11.2791  -1.6635  -0.0117   1.7813   8.5472 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)
(Intercept)  0.49189    0.74048   0.664    0.507
unemp       -0.09013    0.12579  -0.717    0.474

Residual standard error: 2.822 on 200 degrees of freedom
Multiple R-squared:  0.002561,  Adjusted R-squared:  -0.002427 
F-statistic: 0.5134 on 1 and 200 DF,  p-value: 0.4745

The OLS estimates are

\[ \begin{aligned} \Delta\widehat{inf}_t &= 0.49 - 0.09 \,unem_t \\ &\phantom{={}} (0.74) \;\; (0.13) \end{aligned} \tag{6.2}\]

\(\hat{\beta}_1<0\) indicates a tradeoff between cyclical unemployment and unanticipated inflation. But the effect is statistically insignificant.

Under expectations augmented Phillips Curve, one-point increase in \(unem\) lowers unanticipated inflation by about 0.1 of a point. We can contrast this with the static Phillips curve in Equation 6.1, where we found a positive relationship between inflation and unemployment.

The natural employment rate is 5.78 percent.

\[ \mu_0 = -\frac{\beta_0}{\beta_1} = \frac{0.49}{0.09} \approx 5.44 \]

Variance can be obtained by the Delta Method. In R, you can use car::deltaMethod to get the confidence interval for your parameter of interest.

library(car)
deltaMethod(lm_phillips_aug, "-b0/b1", 
            parameterNames = paste("b", 0:1, sep=""))
       Estimate     SE  2.5 % 97.5 %
-b0/b1   5.4575 2.2228 1.1009 9.8141

Serial correlation in errors

res <- tibble(
    res_t = lm_phillips_aug$residuals,
    res_t1 = lag(lm_phillips_aug$residuals))
lm_res <- lm(res_t ~ res_t1, data = res)
summary(lm_res)

Call:
lm(formula = res_t ~ res_t1, data = res)

Residuals:
    Min      1Q  Median      3Q     Max 
-9.8694 -1.4800  0.0718  1.4990  8.3258 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) -0.02155    0.17854  -0.121    0.904    
res_t1      -0.42630    0.06355  -6.708    2e-10 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 2.531 on 199 degrees of freedom
  (1 observation deleted due to missingness)
Multiple R-squared:  0.1844,    Adjusted R-squared:  0.1803 
F-statistic: 44.99 on 1 and 199 DF,  p-value: 2.002e-10

There is strong evidence of serial correlation in the residuals.


6.3 Remedies for AR errors

Example 12.5 in Wooldridge (2013), 5ed, Introductory Econometrics: A Modern Approach.

Example 19.2 in Greene (2003), 5ed, Econometric Analysis.

6.3.1 Prais-Winsten Estimation (Transformation)

Static model

Static model indicates positive autocorrelation.

res <- tibble(
    res_t = lm_phillips_stat$residuals,
    res_t1 = lag(lm_phillips_stat$residuals))
lm_res <- lm(res_t ~ res_t1, data = res)
summary(lm_res)

Call:
lm(formula = res_t ~ res_t1, data = res)

Residuals:
    Min      1Q  Median      3Q     Max 
-7.5887 -1.6354 -0.1089  1.2856  7.9793 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) -0.04062    0.18009  -0.226    0.822    
res_t1       0.64520    0.05349  12.062   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 2.553 on 199 degrees of freedom
  (1 observation deleted due to missingness)
Multiple R-squared:  0.4223,    Adjusted R-squared:  0.4194 
F-statistic: 145.5 on 1 and 199 DF,  p-value: < 2.2e-16
library(prais) # install.packages("prais")
data <- data %>% 
    mutate(yrQ = as.yearqtr(paste(Year, qtr, sep="-")))
pw_est_stat <- prais_winsten(lm_phillips_stat, data = data %>% tail(-2), index = "yrQ" )
Iteration 0: rho = 0
Iteration 1: rho = 0.6452
Iteration 2: rho = 0.655
Iteration 3: rho = 0.6558
Iteration 4: rho = 0.6559
Iteration 5: rho = 0.6559
Iteration 6: rho = 0.6559
summary(pw_est_stat)

Call:
prais_winsten(formula = lm_phillips_stat, data = data %>% tail(-2), 
    index = "yrQ")

Residuals:
    Min      1Q  Median      3Q     Max 
-6.4276 -2.2063 -0.8301  1.6560 12.8870 

AR(1) coefficient rho after 6 iterations: 0.6559

Coefficients:
            Estimate Std. Error t value Pr(>|t|)  
(Intercept)  3.82017    1.69871   2.249   0.0256 *
unemp        0.02493    0.28647   0.087   0.9307  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 2.564 on 200 degrees of freedom
Multiple R-squared:  0.01303,   Adjusted R-squared:  0.008099 
F-statistic: 2.641 on 1 and 200 DF,  p-value: 0.1057

Durbin-Watson statistic (original): 0.6931 
Durbin-Watson statistic (transformed): 2.378

Expectations augmented model

Expectations augmented model indicates negative autocorrelation.

pw_est_aug <- prais_winsten(lm_phillips_aug, data = data %>% tail(-2), index = "yrQ" )
Iteration 0: rho = 0
Iteration 1: rho = -0.4263
Iteration 2: rho = -0.4263
summary(pw_est_aug)

Call:
prais_winsten(formula = lm_phillips_aug, data = data %>% tail(-2), 
    index = "yrQ")

Residuals:
     Min       1Q   Median       3Q      Max 
-11.2668  -1.6601  -0.0065   1.7870   8.5401 

AR(1) coefficient rho after 2 iterations: -0.4263

Coefficients:
            Estimate Std. Error t value Pr(>|t|)
(Intercept)  0.47007    0.47247   0.995    0.321
unemp       -0.08705    0.08024  -1.085    0.279

Residual standard error: 2.548 on 200 degrees of freedom
Multiple R-squared:  0.005932,  Adjusted R-squared:  0.000962 
F-statistic: 1.194 on 1 and 200 DF,  p-value: 0.2759

Durbin-Watson statistic (original): 2.828 
Durbin-Watson statistic (transformed): 2.285

References