问题描述
下面是我在此处找到的样本外滚动窗口估计:(https://www.r-bloggers.com/2017/11/formal-ways-to-compare-forecasting-models-rolling-windows/)
这是我的问题:我知道 tail() 函数返回数据集的最后 n 行。但是当它用于第 13 行的随机游走或计算第 17 行和第 18 行中的错误时,我不明白它的目的。任何澄清这一点的帮助将不胜感激。
# = Number of windows and window size
w_size = 300
n_windows = nrow(X) - 300
# = Rolling Window Loop = #
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),] forxpanding window
X_out = X[w_size + i,]
# = Regression Model = #
m1 = lm(infl0 ~ . - prodl0,data = X_in)
f1 = predict(m1,X_out)
# = Random Walk = #
f2 = tail(X_in$infl0,1)
return(c(f1,f2))
}
# = Calculate and plot errors = #
e1 = tail(X[,"infl0"],nrow(forecasts)) - forecasts[,1]
e2 = tail(X[,2]
解决方法
此处函数 tail
应用于向量,因为您只选择了 "inf10"
列。在这种情况下,tail 返回所选列的最后一个元素。
df <- data.frame(A = c(1,2),B = c(3,4))
df[,"A"] # will return c(1,2)
tail(df[,"A"],1) # will return 2
tail(df$B,1) # will return 4