Question 1

Franco Modigliani and the Life Cycle Theory of Consumption” by Angus Deaton.

1. Briefly, what is Modigliani’s life-cycle theory of consumption? For an individual, draw someone’s consumption schedule over their life. Now draw their wealth over their life. At which periods are they saving and dissaving?

People make rational choices on spending based on their age, working to provide for their retirement. Young people have high rates of saving, accumulating wealth, which will peak before retirement as which point they increase their consumption.

lifecycle

2. What effects do population growth and economic growth have on savings rates?

Population growth means there are more young people than old people and therefore more people saving than spending. if incomes are growing then the scale of these savings will increase, while the scale of dissaving will remain the same. Modigliani bases national savings on the rate of growth of income, rather than the level of the income.

3. In the Modigliani model, do consumers consume from current income?

They base their consumption on their needs for their current age, irrespective of whatever their income level is for that age.

4. What is the impact in the model of an increase in transitory income?

If people do not expect a permanent change in income then their marginal propensity to consume is unlikely to change. Indeed people with uncertain future earnings avoid borrowing.

5. What are the implications of the theory for savings rates over the economic cycle?

Savings rate will increase when the incomes are rising, during upturns in the economy.

Question 2

#Open the data
abs <- read_csv("ABSdata.csv")
#log the data
abs <- abs %>% 
  mutate(lnconsumption = log(consumption),
         lnGDP = log(GDP))
#lag the data
abs <- abs %>%
  mutate(lagconsumption = lag(lnconsumption),
         lagGDP = lag(lnGDP))
#difference the data
abs <- abs %>%
  mutate(lnconsumption.diff = c(NA, diff(lnconsumption)),
         lnGDP.diff = c(NA, diff(lnGDP)))
abs <- abs %>%
  mutate(lagconsumption.diff = c(NA, diff(lagconsumption)),
         lagGDP.diff = c(NA, diff(lagGDP)))

Modelling

  • Plot consumption and GDP on the same plot. Are they stationary variables?
#Plot consumption and GDP on the same plot.
abs %>% ggplot (aes(y=GDP, x=consumption))+
            geom_point()+
            theme(axis.text.x = element_blank(),panel.grid.major = element_blank(),  
            panel.background = element_rect(fill = 'aliceblue', colour = 'black'), 
            axis.line = element_line(colour = "black"))

They are non-starionary variables, both have increased over time, although there is a linear combination of the variables.

  • Run a linear model for the logged values \(C_{t} = \beta_0 + \beta_1 C_{t-1} + \epsilon_t\) What is the value of \(\beta_1\)? Is this a unit root series? (if you are feeling keen, you can look up how to perform unit root tests, and do so with an increased number of lags)
mod1 <- lm(lnconsumption ~ lagconsumption, data = abs,na.action="na.exclude")
# Take a look at the parameter estimates
summary(mod1)
## 
## Call:
## lm(formula = lnconsumption ~ lagconsumption, data = abs, na.action = "na.exclude")
## 
## Residuals:
##        Min         1Q     Median         3Q        Max 
## -0.0298837 -0.0115955 -0.0000182  0.0116133  0.0262341 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    0.129859   0.048578   2.673     0.01 *  
## lagconsumption 0.992566   0.003806 260.816   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.0151 on 52 degrees of freedom
##   (1 observation deleted due to missingness)
## Multiple R-squared:  0.9992, Adjusted R-squared:  0.9992 
## F-statistic: 6.803e+04 on 1 and 52 DF,  p-value: < 2.2e-16
  • Run a forecasting linear model of the logged values \(C_{t} = \beta_0 + \beta_1 C_{t-1} + \epsilon_t\). Extract the residuals from the model, add them as a new column to the data frame, and plot them over time. Do they appear to be stationary? If a residual is high in a given period, does this appear to indicate lower residuals in the future?
mod2 <- lm(lnconsumption ~ lagGDP, data = abs, na.action = "na.exclude")
#Take a look at the parameter estimates
summary(mod2)
## 
## Call:
## lm(formula = lnconsumption ~ lagGDP, data = abs, na.action = "na.exclude")
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.041780 -0.012940  0.000318  0.011284  0.042943 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -0.793746   0.069018   -11.5 6.69e-16 ***
## lagGDP       1.015045   0.005154   196.9  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.01999 on 52 degrees of freedom
##   (1 observation deleted due to missingness)
## Multiple R-squared:  0.9987, Adjusted R-squared:  0.9986 
## F-statistic: 3.879e+04 on 1 and 52 DF,  p-value: < 2.2e-16
#Create a new column of lagged residuals from the model.
abs$mod_residuals <- resid(mod2)
abs <- abs %>% mutate(lagmod_residuals = lag(mod_residuals))
#plot them over time
abs %>% ggplot (aes(y=lagmod_residuals, x=Date))+
            geom_point()+
            theme(axis.text.x = element_blank(),panel.grid.major = element_blank(),  
            panel.background = element_rect(fill = 'aliceblue', colour = 'black'), 
            axis.line = element_line(colour = "black"))

Residuals appear to be sporadic.

  • Build a (linear) model for changes in log consumption. The left hand side of this model should be differenced log consumption at \(t\). On the right hand side should be lagged changes in log consumption (which capture “momentum”), and changes in log GDP at \(t\) (which captures a shift in GDP that could be affecting contumption). What are the coeffients? What interpretation do you give to them?
mod3 <- lm(lnconsumption.diff ~ lagconsumption.diff + lnGDP.diff, data = abs, na.action="na.exclude")
#Take a look at the parameter estimes
summary(mod3)
## 
## Call:
## lm(formula = lnconsumption.diff ~ lagconsumption.diff + lnGDP.diff, 
##     data = abs, na.action = "na.exclude")
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.029288 -0.007819  0.002662  0.009747  0.023384 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)         0.010864   0.005625   1.931   0.0591 .  
## lagconsumption.diff 0.238045   0.115436   2.062   0.0444 *  
## lnGDP.diff          0.463235   0.102777   4.507 3.98e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.01293 on 50 degrees of freedom
##   (2 observations deleted due to missingness)
## Multiple R-squared:  0.334,  Adjusted R-squared:  0.3074 
## F-statistic: 12.54 on 2 and 50 DF,  p-value: 3.863e-05

\(lnconsumption.diff = 0.010864 + 0.238045lagconsumption.diff + 0.463235lnGDP.diff + \epsilon\)

  • Build the same model again, but this time including the lagged residuals from the the model in step 3. What is the coefficient on this term? What interpretation do you give to it?
mod4 <- lm(lnconsumption.diff ~ lagconsumption.diff + lnGDP.diff + lagmod_residuals, data = abs, na.action="na.exclude")
#Take a look at the parameter estimes
summary(mod4)
## 
## Call:
## lm(formula = lnconsumption.diff ~ lagconsumption.diff + lnGDP.diff + 
##     lagmod_residuals, data = abs, na.action = "na.exclude")
## 
## Residuals:
##        Min         1Q     Median         3Q        Max 
## -0.0255628 -0.0086517  0.0000488  0.0077341  0.0248744 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          0.008353   0.005333   1.566  0.12372    
## lagconsumption.diff  0.293209   0.109667   2.674  0.01017 *  
## lnGDP.diff           0.479068   0.096276   4.976  8.4e-06 ***
## lagmod_residuals    -0.244017   0.085374  -2.858  0.00624 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.01209 on 49 degrees of freedom
##   (2 observations deleted due to missingness)
## Multiple R-squared:  0.4292, Adjusted R-squared:  0.3942 
## F-statistic: 12.28 on 3 and 49 DF,  p-value: 4.124e-06

\(lnconsumption.diff = 0.008353 + 0.293209lagconsumption.diff + 0.479068lnGDP.diff - 0.244017lagmod residuals + \epsilon\)

  • What do you estimate to be the marginal propensity to consume?

\(\frac{lagconsumption.diff}{lnGDP.diff}\) \(\frac{0.293209}{0.479068} = 0.61204046189\)

\(61.2\%\)