tslm模型 - 如何使用newdata agrument包含许多变量(100s)

时间:2015-07-29 11:40:56

标签: r

我必须在tslm模型的newdata参数中包含150多个变量。

请建议我这样做。

我试过这个。但我不认为这是一个实际的过程。有人可以建议我采用一种简单而小巧的方法吗?

//将数据框中的151个变量转换为时间序列

x <- 1:151
for(i in seq_along(x)){
y<-ts(data[,i])
  assign(paste('X',i,sep=''),y)
}

//我得到151个时间序列对象为X1,X2 .. X151 ..这一步很好。

//模型构建 的 fit<-tslm(X1~trend+X2+X3+ ........ + X151) //请建议我一个简单的方法,因为手动编写所有150个变量没有意义..实际上变量的数量可能会增加

//预测

fcast&LT - forecast(fit,newdata=data.frame(X2=newframe$Temperature,X3=newframe$Inflation, .................................. till 150 variables)) 请建议一种缩短此代码的方法。 注意:&#34; newframe&#34;是预测数据框

1 个答案:

答案 0 :(得分:-1)

我对你的问题有点困惑。是150个不同的协变量,您将其包括为回归量,或150个值,如行。如果它们是150个不同的协变量,并且每个协变量都是时间序列,那么使用时间序列来构建模型,正如您所提到的那样

    fit<-tslm(X1~trend+X2+X3+ ........ + X151)

对于预测,您不必显式转换为数据框,只需使用以下命令

即可
    fcast<-forecast(fit,newdata=data.frame(X2=X2_f,X3=X3_f, .................................. till 150 variables)) 

其中X2_f,X3_f是包含预测期间值的所有时间序列。

如果有150种不同的协变量,则必须手动包含。 但是,如果单个协变量有150个不同的值,它可以直接包含在

    fit<-tslm(X1~trend+X2)

,其中X2是包含150个值的时间序列 和预测

fcast<-forecast(fit,newdata=data.frame(X2=X2_f) 

其中X2_f是具有预测值的时间序列。

希望这有帮助。