我有一个线性模型,其中汇率作为因变量,其他7个自变量(例如通货膨胀,利率等)。我有1993年1季度至2011年4季度的季度数据。 我想创建一个窗口大小为60(来自1993Q1-2007Q4)的滚动窗口回归(具有上述模型),并使用估计的回归来预测其余样本。另外,我想将此模型与随机游走模型进行比较(汇率遵循R.W.)。最后,我想执行dm.test和clarkwest测试(不运行)。我的代码正确吗?
X = embed(data)
X = as.data.frame(X)
install.packages("foreach")
library(foreach)
w_size=60
n_windows = nrow(X) - 60 #until 2007Q4
forecasts = foreach(i=1:n_windows, .combine = rbind) %do%{
# = Select data for the window (in and out-of-sample) = #
X_in = X[i:(w_size + i - 1), ] # = change to X[1:(w_size + i - 1), ] for expanding window
X_out = X[w_size + i, ]
# = Regression Model = #
m1 = lm(V1 ~ V2+V3+V4+V5+V6+V7+V8, data = X_in)
f1 = predict(m1, X_out)
# = Random Walk = #
f2 = tail(X_in$V1, 1)
return(c(f1, f2))
}
e1 = tail(X[ ,"V1"], nrow(forecasts)) - forecasts[ ,1]
e2 = tail(X[ ,"V1"], nrow(forecasts)) - forecasts[ ,2]
library(tseries)
library(forecast)
dm.test(e1,e2, "l") #p-value is more than 5% for all the cases( two.sided, greater, less)
clarkwest(e1,e2)
答案 0 :(得分:0)
似乎不再支持clarkwest()
函数。我最近写了我自己的函数:CW请注意,我使用的是标准错误,但并未进行Newey-West校正。
要调查循环,可以尝试:
i=1
X_in = X[i:(w_size + i - 1), ] # = change to X[1:(w_size + i - 1), ] for expanding window
X_out = X[w_size + i, ]
# = Regression Model = #
m1 = lm(V1 ~ V2+V3+V4+V5+V6+V7+V8, data = X_in)
f1 = predict(m1, X_out)
# = Random Walk = #
f2 = tail(X_in$V1, 1)
在这里您可以看到i = 1时循环创建的构图