需要在模型上实现递归和滚动估计方案

时间:2017-04-24 20:06:07

标签: r forecasting

作为家庭作业的一部分,我们被问到以下问题:

  

使用与练习3中相同的数据集和房价增长,在模型的右侧运行几个价格增长一,二,三和四个滞后的回归模型。分析回归结果。选择您喜欢的模型并实施递归和滚动估算方案。绘制回归系数估计的时间序列,并观察它们随时间变化的程度。

我似乎无法在R中使用它。这是我的代码到目前为止:

PRQ <- read_excel("~/Desktop/144/HW2/Chapter4_exercises_data.xls",sheet = "Exercise 3")

price_ts<-ts(PRQ$P,start = 1980:2, freq=4)

r_price <- diff(log(price_ts)) ##growth rate

lag<-append(NA, r_price[-length(r_price)])

lag2<-append(NA, lag[-length(lag)])

lag3<-append(NA,lag2[-length(lag2)])

lag4<-append(NA, lag3[-length(lag3)])

y1<-lm(r_price~lag)

y2<-lm(r_price~lag+lag2)

y3<-lm(r_price~lag+lag2+lag3)

y4<-lm(r_price~lag+lag2+lag3+lag4)

summary(y1)

summary(y2)

summary(y3)

summary(y4)

如果我的问题不清楚,这是我需要做的textbook description。任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:1)

我认为最简单的方法是使用ARIMA。如果你必须使用LM告诉我,我会想出一些新的东西。

fit1 = arima(price_ts, order = c(1L, 0L, 0L))

这将为您提供1个AR术语(滞后)。你可以继续这种方式来完成其余的工作。

修改

我读了你的教科书,我们需要稍微改变一下。我将使用模拟数据并向您显示1滞后的答案。你应该能够自己弄清楚其余部分。

首先,模拟数据:

tsdat = arima.sim(model=list(ar=-0.5),n=400)arima.sim(model=list(ar=-0.5),n=400))

然后,我们需要在前几个术语上拟合模型。我将设置t = 200

library(forecast)
t = 200
fit = arima(tsdat[1:t], order = c(1L, 0L, 0L))

如果我们感兴趣,我们可以查看模型的详细信息

> summary(fit)

Call:
arima(x = tsdat[1:t], order = c(1L, 0L, 0L))

Coefficients:
          ar1  intercept
      -0.4556    -0.0211
s.e.   0.0629     0.0462

sigma^2 estimated as 0.9007:  log likelihood = -273.45,  aic = 552.9

该参数与我为模拟指定的参数非常接近。在你的情况下,你不会知道它究竟应该是什么。

最后,我们可以预测1点。

forecast(fit, h= 1)
    Point Forecast     Lo 80     Hi 80     Lo 95    Hi 95
201     -0.4320716 -1.648363 0.7842197 -2.292229 1.428085

创建一个for循环,然后重新添加模型,添加更多数据并保存预测结果。