【问题标题】:regressions with xts in RR中的xts回归
【发布时间】:2012-08-07 06:03:32
【问题描述】:

是否有使用以下类型的 xts 对象运行回归的实用程序:

lm(y ~ lab(x, 1) + lag(x, 2) + lag(x,3), data=as.data.frame(coredata(my_xts)))

其中my_xts 是一个xts 对象,其中包含一个x 和一个y。问题的关键是有没有办法避免做一堆滞后和合并,让data.frame 有所有滞后?我认为 dyn 包适用于 zoo 对象,所以我希望它与 xts 以相同的方式工作,但可能会有一些更新。

【问题讨论】:

    标签: r time-series xts zoo lm


    【解决方案1】:

    dyn 和 dynlm 包可以用 zoo 对象做到这一点。在 dyn 的情况下,只需编写 dyn$lm 而不是 lm 并将其传递给 zoo 对象而不是数据框。

    请注意,xts 中的 lag 与通常的 R 约定相反,因此如果 x 属于 xts 类,那么如果 x 属于 zoo 或 ts 类,则 lag(x, 1) 与 lag(x, -1) 相同。

    > library(xts)
    > library(dyn)
    > x <- xts(anscombe[c("y1", "x1")], as.Date(1:11)) # test data
    > dyn$lm(y1 ~ lag(x1, -(1:3)), as.zoo(x))
    
    Call:
    lm(formula = dyn(y1 ~ lag(x1, -(1:3))), data = as.zoo(x))
    
    Coefficients:
         (Intercept)  lag(x1, -(1:3))1  lag(x1, -(1:3))2  lag(x1, -(1:3))3  
             3.80530           0.04995          -0.12042           0.46631  
    

    【讨论】:

      【解决方案2】:

      由于您已经从 xts 环境中删除了数据,因此我在这里没有使用任何 xts 功能。有一个embed 函数将构造一个“滞后”矩阵到任何所需的程度。 (我从不理解时间序列lag 函数。)(嵌入滞后变量的顺序与我的预期相反。)

       embed(1:6, 3)
      #--------
           [,1] [,2] [,3]
      [1,]    3    2    1
      [2,]    4    3    2
      [3,]    5    4    3
      [4,]    6    5    4
      #Worked example   ... need to shorten the y variable
      y <- rnorm(20)
      x <- rnorm(20)
      lm( tail(y, 18) ~ embed(x, 3) )
      #-------------------
      Call:
      lm(formula = tail(y, 18) ~ embed(x, 3))
      
      Coefficients:
       (Intercept)  embed(x, 3)1  embed(x, 3)2  embed(x, 3)3  
          -0.12452      -0.34919       0.01571       0.01715  
      

      注意到在更改滞后以匹配@GGrothendieck 使用的滞后后,我们得到了相同的结果,这让我们松了一口气:

       lm( tail(xx[,"y1"], NROW(xx)-3) ~ embed(xx[,"x1"], 4)[,2:4] )
      
      Call:
      lm(formula = tail(xx[, "y1"], NROW(xx) - 3) ~ embed(xx[, "x1"], 
          4)[, 2:4])
      
      Coefficients:
                       (Intercept)  embed(xx[, "x1"], 4)[, 2:4]1  embed(xx[, "x1"], 4)[, 2:4]2  
                           3.80530                       0.04995                      -0.12042  
      embed(xx[, "x1"], 4)[, 2:4]3  
                           0.46631  
      

      【讨论】:

        猜你喜欢
        • 2012-10-30
        • 2012-03-10
        • 2014-03-08
        • 1970-01-01
        • 2015-02-22
        • 2012-11-28
        • 2020-10-03
        • 1970-01-01
        • 2018-06-05
        相关资源
        最近更新 更多