使用midasr包时出错

时间:2014-04-09 18:57:22

标签: r

我为我面临的问题制作了一个最小的可重复示例

Y的数据(每月因变量):

monthlytest <- c(-.035, 0.455)
ytest <- ts(monthlytest, start=c(2008,8), frequency=12)

X的数据(每日解释变量):

lol1 <- paste(2008, sprintf("%02s",rep(1:12, each=30)), sprintf("%02s", 1:30), sep="-") [211:270]
lol2 <- seq(0.015, 0.078, length.out=60)

xtest <- zoo(lol2, order.by = lol1)

加载包:

library(midasr)
library(zoo)

运行回归:

beta <- midas_r(ytest ~ mls(ytest, 1, 1) + mls(xtest, 3:30, 30))

当运行最后一行代码时,我得到了这个错误,我做错了什么?

  Error in matrix(NA, nrow = n - nrow(X), ncol = ncol(X)) : 
  invalid 'nrow' value (< 0)

1 个答案:

答案 0 :(得分:0)

错误由函数mls生成:

> mls(xtest, 3:30, 30)
Erreur dans matrix(NA, nrow = n - nrow(X), ncol = ncol(X)) : 
  valeur 'nrow' incorrecte (< 0)

这是因为mls需要数字参数。将xtest转换为数字可以解决问题:

xtn <- as.numeric(xtest)
beta <- midas_r(ytest ~ mls(ytest, 1, 1) + mls(xtn, 3:30, 30))

再次产生错误:

Erreur dans prepmidas_r(y, X, mt, Zenv, cl, args, start, Ofunction, user.gradient,  : 
  l'argument "start" est manquant, avec aucune valeur par défaut

这意味着您没有指定start,这对于函数midas_r是必需的。您的模型是不受限制的MIDAS模型,这意味着您需要使用函数midas_u或提供start=NULL。但即便如此也无济于事:

> beta <- midas_r(ytest ~ mls(ytest, 1, 1) + mls(xtn, 3:30, 30),start=NULL)
Erreur dans midas_r.fit(prepmd) : 
  Not possible to estimate MIDAS model, more parameters than observations

你有两个低频观测,理论上你可以估算两个参数,你的模型有29个。所以你需要至少有30个低频观测值(因为你因为滞后因变量而失去一个观测值)来估计这个模型。