我非常需要这个midas套餐的帮助。我的低频y变量是按月测量的,而x是每天测量的。出于某种原因,我无法让它发挥作用。我试着运行这个回归......
reg_s = midas_r(partial_y ~ partial_x + fmls(partial_com, (COMMODITY_OBSERVATIONS - 1), COMMODITY_OBSERVATIONS), start = NULL)
...但是我收到以下错误消息:
Error in eval(expr, envir, enclos) :
..1 used in an incorrect context, no ... to look in
traceback()输出如下:
13: eval(expr, envir, enclos)
12: eval(predvars, data, env)
11: model.frame.default(formula = y ~ ., data = data.frame(cbind(y,
X[, -1]), check.names = FALSE), drop.unused.levels = TRUE)
10: stats::model.frame(formula = y ~ ., data = data.frame(cbind(y,
X[, -1]), check.names = FALSE), drop.unused.levels = TRUE)
9: eval(expr, envir, enclos)
8: eval(mf, parent.frame())
7: lm(y ~ ., data = data.frame(cbind(y, X[, -1]), check.names = FALSE))
6: prepmidas_r(y, X, mt, Zenv, cl, args, start, Ofunction, weight_gradients,
itr$lagsTable)
5: midas_r(partial_y ~ partial_x + fmls(partial_com, (COMMODITY_OBSERVATIONS -
1), COMMODITY_OBSERVATIONS), start = NULL) at taylor.r#193
4: eval(expr, envir, enclos)
3: eval(ei, envir)
2: withVisible(eval(ei, envir))
1: source("M:/semester6/r_taylor/taylor.r", echo = TRUE)
我试图谷歌这个错误信息,但我无法理解它。 另外,我必须为我所知道的优化算法提供一个起始值。在midas用户指南中,我发现在一些回归中start = NULL,所以我认为我使用它,因为它没有说明这个起始值应该是什么样子,有多少值,......老实说,我有点无能为力这个包。有什么建议吗?
答案 0 :(得分:0)
好吧,所以我改变了一些事情,现在我不再收到错误信息了。所以这就是我做错了: 由于我使用时间序列,partial_y和partial_x是xts(...)的返回值,一旦我摆脱它,我有另一个错误消息,但更合理的东西。 我现在尝试了以下内容:我从用户指南中获取了一个示例代码,因为我知道那个代码可以正常运行并且根据我的情况慢慢定制。我最终得到了一段运行的代码,但只使用了虚拟数据。所以这就是我想做的事 我的y变量是汇率,例如,每个月初测量的CAD到USD。实际上,这是第一个区别,但我想这并不重要。我的x变量是商品价格,在一天结束时测量。由于不是每个月都有完全相同的交易日,我只是模仿它,并说每个月有22个交易日。这是我正在尝试的一段代码(工作正常):
x <- rnorm(22 * 5)
y <- rnorm(5, mean = 25, sd = 10)
eq_r <- midas_r(y ~ mls(x, 0:21, 22, nealmon), start = list(x = c(1, -0.5)))
summary(eq_r)
但有些事情我不明白:
我也很难理解这个滞后参数。在我看来,我想做什么 喜欢做的是,我有数据,例如从1月到5月,估计 系数与这些数据,然后使用商品价格 从6月起做出新的预测。但是这个滞后参数应该 是0:21对,因为我想要包括整个价格 月,是的,没有? 另外,为什么当我说
时print(mls(x,0:21,22,nealmon))
为了检查我的数据如何转换为矩阵,我得到了这个
X.0/m X.1/m X.2/m X.3/m X.4/m X.5/m X.6/m X.7/m X.8/m X.9/m X.10/m X.11/m X.12/m X.13/m X.14/m X.15/m X.16/m X.17/m
[1,] 1.1863644 0.97481199 -1.7895747 0.2906128 0.30075201 0.80857324 2.3186506 -0.5170817 -0.46055538 0.7891047 0.03949783 0.6177602 -0.38369815 -1.8622837 0.8625135 -0.1611756 1.39612918 -1.1885719
[2,] -0.3704454 0.08822043 2.1020095 -0.5169749 -1.96695998 -1.49962934 -0.8678474 0.1140645 0.04114274 -1.5937239 2.08863098 2.2263487 -0.09925308 -0.6669605 0.4944246 -2.4027642 0.71116241 -0.4254720
[3,] 1.2154540 -0.64055638 -0.6437271 -0.7642743 0.66235172 -0.84262287 -1.4775039 0.6878486 0.65197942 0.1240311 0.23134023 0.1009972 -0.06475785 -0.2241584 -0.8032010 2.4843914 -0.54894487 0.0101310
[4,] 0.3305061 -1.13876511 -2.0092376 -0.1567246 0.96004744 0.34776469 0.5117166 0.4924779 -0.82728326 -0.6207466 0.17207811 1.6144863 -1.37304172 0.4901677 0.7561634 1.5870672 -1.38699189 0.1791196
[5,] 0.5310172 0.66979364 -1.2017408 -1.1030746 0.09164862 -0.04114568 -0.2157249 -1.2534833 -0.48547301 0.1006999 1.31309691 0.1150372 -1.53933091 0.2683860 -0.7282090 0.9481647 -0.01427574 -0.3786454
X.18/m X.19/m X.20/m X.21/m
[1,] 0.02344737 0.5336673 -0.2537367 1.4706220
[2,] -0.65971232 -1.3297581 -0.8318354 0.8438351
[3,] -0.51675173 1.7251156 -0.4394516 1.8223571
[4,] -0.29855743 0.5747885 0.1104557 -0.9217548
[5,] 1.97389817 -0.4466169 -0.9891151 -0.8422436
这对我来说似乎是合理的,但是当我查看回归的输出时,我只有x1和x2的两个系数估计值?
MIDAS regression model
model: y ~ mls(x, 0:21, 22, nealmon)
(Intercept) x1 x2
23.8385 0.2915 -0.6891
当我使用midas_u时,我估计每个X.0 / m ...... X.21 / m。这与midas_u基本上是lm这样的事实有关,所以一个不受限制的估计和midas_r是受限制的,即使我不完全确定这意味着什么?
我刚遇到一些非常奇怪的事情。估计模型后,我想使用预测命令进行预测。现在如果我在midas_r函数中使用数字22,一切都很好。但是,如果我使用而不是22,变量COMMODITY_OBSERVATIONS,其中包含值22,则会收到以下错误消息:
Error in length(outsample[[firstno]])%/%freqinfo[firstno] :
non-numeric argument to binary operator
我已经看到白毛发了......