Skip to content

Instantly share code, notes, and snippets.

@Shreyes2010
Created July 25, 2012 11:55
Show Gist options
  • Save Shreyes2010/3175748 to your computer and use it in GitHub Desktop.
Save Shreyes2010/3175748 to your computer and use it in GitHub Desktop.
Persistence measure : Rolling regression
## Reading the relevent files
install.packages("zoo")
library(zoo)
ife <- read.csv("CPI_Data.csv")
ife_wpi <- read.csv("WPI_Data_1.csv")
# Function to compute Y-o-Y inflation rate
yoy.inf <- function(series){
y <- rep(NA,length(series))
for(i in 13:length(series))y[i] <- ((series[i] - series[i-12])/series[i-1])*100
return(y)
}
# Computing inflation using seasonally adjusted data
ife$YOY_inf <- yoy.inf(ife$CPI_SA)
inf <-zoo(ife$YOY_inf[13:length(ife$YOY_inf)])
ife_wpi$YOY_SA <- yoy.inf(ife_wpi$WPI_SA)
inf.wpi <- zoo(ife_wpi$YOY_SA[13:length(ife_wpi$YOY_SA)])
## Rolling regression results for CPI data
## The window of values is of 123 observations
## And the window moves by one observation at a time
## So its an highly overlapping window.
slope <- rep(NA, 121)
upper <- rep(NA, 121)
lower <- rep(NA, 121)
for(i in 0:120)
{
inf.1 <- window(inf, start = 12 + i, end = 123 + i)
inf.lag.1 <- window(inf, start = 11 + i, end = 123 + i -1)
inf.diff.1 <- window(diff(inf), start = 2 + i, end = 123 + i -10)
inf.diff.2 <- window(diff(inf), start = 3 + i, end = 123 + i - 9)
inf.diff.3 <- window(diff(inf), start = 4 + i, end = 123 + i - 8)
inf.diff.4 <- window(diff(inf), start = 5 + i, end = 123 + i - 7)
inf.diff.5 <- window(diff(inf), start = 6 + i, end = 123 + i - 6)
inf.diff.6 <- window(diff(inf), start = 7 + i, end = 123 + i - 5)
inf.diff.7 <- window(diff(inf), start = 8 + i, end = 123 + i - 4)
inf.diff.8 <- window(diff(inf), start = 9 + i, end = 123 + i - 3)
inf.diff.9 <- window(diff(inf), start = 10 + i, end = 123 + i - 2)
inf.diff.10 <- window(diff(inf), start = 11 + i, end = 123 + i - 1)
fit <- summary(lm(inf.1 ~ inf.lag.1 + inf.diff.1 + inf.diff.2 + inf.diff.3 + inf.diff.4 +
inf.diff.5 + inf.diff.6 + inf.diff.7 + inf.diff.8 + inf.diff.9 + inf.diff.10))
slope[i+1] <- fit$coefficients[3]
upper[i+1] <- fit$coefficients[3] + 2*fit$coefficients[16]
lower[i+1] <- fit$coefficients[3] - 2*fit$coefficients[16]
}
plot(ts(slope), type = "l", col = "red", main ="Persistence level in the CPI series(1990:M4 - 2011:M6)", ylab = "Rho", xlab = "Time", ylim = c(-0.2,0.8))
lines(ts(upper), type = "l", lty = "dotted")
lines(ts(lower), type = "l", lty = "dotted")
legend("topleft", c("Rho","95% CI band"), col = c("Red", "black"), lty = c(1,2), cex = 0.8)
## Rolling regression results for WPI data
slope.wpi <- rep(NA, 93)
upper.wpi <- rep(NA, 93)
lower.wpi <- rep(NA, 93)
for(i in 0:92){
inf.wpi.1 <- window(inf.wpi, start = 12 + i, end = 100 + i)
inf.wpi.lag.1 <- window(inf.wpi, start = 11 + i, end = 100 + i -1)
inf.wpi.diff.1 <- window(diff(inf.wpi), start = 2 + i, end = 100 + i -10)
inf.wpi.diff.2 <- window(diff(inf.wpi), start = 3 + i, end = 100 + i - 9)
inf.wpi.diff.3 <- window(diff(inf.wpi), start = 4 + i, end = 100 + i - 8)
inf.wpi.diff.4 <- window(diff(inf.wpi), start = 5 + i, end = 100 + i - 7)
inf.wpi.diff.5 <- window(diff(inf.wpi), start = 6 + i, end = 100 + i - 6)
inf.wpi.diff.6 <- window(diff(inf.wpi), start = 7 + i, end = 100 + i - 5)
inf.wpi.diff.7 <- window(diff(inf.wpi), start = 8 + i, end = 100 + i - 4)
inf.wpi.diff.8 <- window(diff(inf.wpi), start = 9 + i, end = 100 + i - 3)
inf.wpi.diff.9 <- window(diff(inf.wpi), start = 10 + i, end = 100 + i - 2)
inf.wpi.diff.10 <- window(diff(inf.wpi), start = 11 + i, end = 100 + i - 1)
fit <- summary(lm(inf.wpi.1 ~ inf.wpi.lag.1 + inf.wpi.diff.1 + inf.wpi.diff.2 + inf.wpi.diff.3 + inf.wpi.diff.4 +
inf.wpi.diff.5 + inf.wpi.diff.6 + inf.wpi.diff.7 + inf.wpi.diff.8 + inf.wpi.diff.9 + inf.wpi.diff.10))
slope.wpi[i+1] <- fit$coefficients[3]
upper.wpi[i+1] <- fit$coefficients[3] + 2*fit$coefficients[16]
lower.wpi[i+1] <- fit$coefficients[3] - 2*fit$coefficients[16]
}
plot(ts(slope.wpi), type = "l", col = "red", main ="Persistence level in the WPI series(1995:M1 - 2011:M12)", ylab = "Rho", xlab = "Time", ylim = c(-0.2, 0.8))
lines(ts(upper.wpi), type = "l", lty = "dotted")
lines(ts(lower.wpi), type = "l", lty = "dotted")
legend("topleft", c("Rho","95% CI band"), col = c("Red", "black"), lty = c(1,2), cex = 0.8)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment