我为我面临的问题制作了一个最小的可重复示例。
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)
答案 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个低频观测值(因为你因为滞后因变量而失去一个观测值)来估计这个模型。