When people have an increase of income, they usually do not rush to spend all the increase immediately. The recipients may decide to increase consumption gradually within some periods. To clarify it, we examine Indonesia household consumption per capita in relation to income per capita from 1967 to 2020. We will employ Autoregressive and Distributed-Lag Models, such as The Koyck Transformation Model, The Adaptive Expectations Model, and The Stock Adjustment Model.
Koyck Transformation implies that as the income per capita back into the distant past, the effect of that lag on consumption per capita becomes progressively smaller. Furthermore, current and recent past income per capita is expected to affect current consumption per capita more heavily than the distant past.
We need to transform the data into time series object using ts() function.
library(readxl)
lagdata <- read_excel("D:/KARIR/R Portofolio/distributedlagmodels/consincom.xlsx")
lagdata <- lagdata[, c(-1:-3)]
lagdata$lncons <- ts(lagdata$lncons , start = 1967, frequency = 1)
lagdata$lninc <- ts(lagdata$lninc , start = 1967, frequency = 1)
head(lagdata)
## # A tibble: 6 x 2
## lncons lninc
## <dbl> <dbl>
## 1 5.80 6.35
## 2 5.86 6.43
## 3 5.89 6.47
## 4 5.89 6.51
## 5 5.90 6.55
## 6 5.94 6.59
Before we proceed to the model, let’s take a preliminary look at consumption per capita and income per capita.
ts.plot(lagdata$lncons, col='red', xlab = "Year", ylab='Consumption per Capita (Ln)')
ts.plot(lagdata$lninc, col='red', xlab = "Year", ylab='Income per Capita (Ln)')
Then, we run the model.
library(dynlm)
## Warning: package 'dynlm' was built under R version 4.1.3
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
dlmodel <- dynlm(lncons ~ lninc + L(lncons, 1), data = lagdata)
summary(dlmodel)
##
## Time series regression with "ts" data:
## Start = 1968, End = 2020
##
## Call:
## dynlm(formula = lncons ~ lninc + L(lncons, 1), data = lagdata)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.06208 -0.01475 -0.00257 0.01806 0.08649
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.22723 0.07727 -2.941 0.00495 **
## lninc 0.30355 0.05585 5.435 1.63e-06 ***
## L(lncons, 1) 0.70852 0.05201 13.624 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.02737 on 50 degrees of freedom
## Multiple R-squared: 0.9977, Adjusted R-squared: 0.9976
## F-statistic: 1.09e+04 on 2 and 50 DF, p-value: < 2.2e-16
library(lmtest)
bptest(dlmodel)
##
## studentized Breusch-Pagan test
##
## data: dlmodel
## BP = 2.3553, df = 2, p-value = 0.308
bgtest(dlmodel)
##
## Breusch-Godfrey test for serial correlation of order up to 1
##
## data: dlmodel
## LM test = 2.9324, df = 1, p-value = 0.08682
The model is free from heteroskedasticity and serial correlation problem.
sr_MPC <- coefficients(dlmodel)[2]
sr_MPC
## lninc
## 0.3035489
lr_MPC <- sr_MPC/(1 - coefficients(dlmodel)[3])
lr_MPC
## lninc
## 1.041394
The coefficent of consumption per capita (lninc) is nothing but the short-run marginal propensity to consume (MPC) which is 0.30355, suggesting that a 1 USD increase in the current income per capita would increase mean consumption per capita by about 0.30 USD. But if it is sustained, eventually the MPC out of the permanent income will be (0.30355/1-0.70852) = 1.041394 or about 1.04 USD. But, how long did it to take place? To answer this, we need to find the median lag and mean lag value.
lambda <- coefficients(dlmodel)[3]
median_lag <- -log(2)/log(lambda)
median_lag
## L(lncons, 1)
## 2.011562
mean_lag <- lambda/(1-lambda)
mean_lag
## L(lncons, 1)
## 2.43073
The median lag is the time required for the first half, or 50% of the total change in consumption per capita following a unit sustained change in income per capita. From the calculation, the median lag value is 2.011562 or it requires about 2 years for 50% change in consumption per capita occur bacause an increase in income per capita. In case of mean lag, in short, it is a lag-weighted average of time. The mean lag value is 2.43073 or showing that it takes about 2 years and 5 months, on average, for the effect of changes in the income per capita to be felt on consumption per capita.
There is a drawback in the Koyck Transformation. It is purely algebraic process, so it is devoid of any theoretical underpinning. Therefore, we need an economic assumption for building the model. Cagan and Friedman popularized the term adaptive expectation. That is economic agents will adapt their expectations in the light of past experience and that in particular they will learn from their mistakes. Thus, for our model this would mean that expectations are revised each period by a fraction γ (the coefficient of expectation) of the discrepancy between the rate of income per capita observed in the current period and what its anticipated value had been in the previous period.
gamma_ae <- 1 - (coefficients(dlmodel)[3])
gamma_ae
## L(lncons, 1)
## 0.2914832
Basically, the Adaptive Expectations Model is same with the Koyck Transformation. To find the coefficient of expectation, we substract one by the coefficient of lag consumption per capita or 0.2914832. WE can say that about 29.14% of the discrepancy between actual and expected consumption per capita is eliminated within a year.
Another economic assumption is provided by Marc Nerlove in the well known as Stock Adjustment or Partial Adjustment Aodel (PAM). Although it is similar with the Adaptive Expectations Model it is not the same. The Adaptive Expectations Model is based on uncertainty about the future, but the latter is due to technical or institutional rigidities, inertia, cost of change, etc.
gamma_sa <- 1 - (coefficients(dlmodel)[3])
gamma_sa
## L(lncons, 1)
## 0.2914832
The coefficient of expectation in The Adaptive Expectations Mode can also be interpreted as the coefficient adjustment. So, that means households plan to close 29.14% of the gap between the actual and the desired consumption per capita each year