首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用predict预测VECM

使用predict预测VECM
EN

Stack Overflow用户
提问于 2018-06-06 23:17:03
回答 1查看 462关注 0票数 2

我正在尝试使用具有一个内生变量和一个外生变量的VECM来预测时间序列(理想情况下,两个变量都是ex。但这似乎是不可能的),但仍然会遇到错误。我有169个时间序列,我试图用前140周来预测后29周。请看下面的代码:

代码语言:javascript
复制
#VECM with exogenous F
#read F and W matrix
Ffactor <- read_excel("FFactor.xlsx", col_names = FALSE)
Wfactor <- read_excel("Wmatrix.xlsx", col_names = FALSE)
Sales<-read_excel("SALES.xlsx")
Wfactor$mean <- rowMeans(Wfactor)
KC_model <- cbind(Sales$UnitSalesKC[1:169], Wfactor$mean)

F140 <- as.data.frame(Ffactor[1:140,])
 for (i in 1:1000)
{
  colnames(F140)[i]<-"f"
}
KC140 <- as.data.frame(KC_model[1:140,])

vecm <- ca.jo(KC140,type = "eigen", ecdet = "const", K = 2, dumvar = F140[1:140,1])
varr <- vec2var(vecm, r=1)#should be 2 because of 2nd order cointegration but it had to be 1
dumvar <- Ffactor[141:169,]
dumvar1 <- as.matrix(dumvar)

predictions <- predict(varr, dumvar=dumvar1[1:29], n.ahead=29)
predictions <- predict(varr, dumvar=dumvar1[1:29], n.ahead=29)

运行第一个预测结果: predict.vec2var(varr,dumvar = dumvar1:29,1,n.ahead = 29)中的错误:'dumvar‘的列名与'object$datamat’中的列名不匹配。

运行第二个命令会给出: predict.vec2var(varr,dumvar = dumvar11:29,1,n.ahead = 29)中的错误:'dumvar‘的行数不等于’n.head‘。

但是,调用nrow(dumvar)会产生29。

我之前得到的错误告诉我dumvar应该是一个矩阵,数字或向量,这就是为什么我把它转换成一个矩阵。以下是运行上述代码所需的所有数据的示例。

代码语言:javascript
复制
#head of KC_model
1 125489.0 -0.427423755
2 115475.0 -0.590675518
3 124298.0 -0.561800218
4 128443.0 -0.785542240
5 120610.0 -0.750909402

#head of FFactor
1 -0.251 
2 -0.0169
3 -0.0434
4 -0.0643
5  0.0215
EN

回答 1

Stack Overflow用户

发布于 2021-04-12 16:34:10

试试这个:

代码语言:javascript
复制
predictions <- predict(varr, dumvar=as.matrix.data.frame(F140[1:140,1]), n.ahead=29)

这对我很管用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50723952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档