midas_r功能问题

时间:2015-05-07 15:44:21

标签: r time-series forecasting

我非常需要这个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,所以我认为我使用它,因为它没有说明这个起始值应该是什么样子,有多少值,......老实说,我有点无能为力这个包。有什么建议吗?

1 个答案:

答案 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. 这个&#39;开始&#39;值:我应提供多少c(...)中的数字? 我怎么知道多少?我怎么知道哪个数字适合 我的问题?
  2. 我也很难理解这个滞后参数。在我看来,我想做什么 喜欢做的是,我有数据,例如从1月到5月,估计 系数与这些数据,然后使用商品价格 从6月起做出新的预测。但是这个滞后参数应该 是0:21对,因为我想要包括整个价格 月,是的,没有? 另外,为什么当我说

    print(mls(x,0:21,22,nealmon))

  3. 为了检查我的数据如何转换为矩阵,我得到了这个

              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
    

    我已经看到白毛发了......