【问题标题】:forecast differenced series in R预测R中的差异序列
【发布时间】:2013-10-12 13:29:16
【问题描述】:

我是 R 新手,我一直使用电子视图,现在我必须进行回归

我的 Xt 是静止的,而 Yt 不是静止的,所以我需要区别

yt=Yt-Y(t-1)

那么回归是

yt = a + bXt

如何对 R 进行预测并获得“真实”值而不是差异?

在 e-views 中写 d(Yt) 是不可能的,但在 R 中是不可能的

【问题讨论】:

  • 我的因变量(yt)没有滞后,是有差异的
  • 您可以使用函数diff()来计算差异。
  • 当然,但是当我进行预测时,该函数会给我不同的预测值

标签: r forecasting


【解决方案1】:

如果您提前 h 天预测第一个差异,您可以估计在 h 天后该系列的高或低。您只需将最后观察到的值添加到此差异即可获得级别:

dy_{t}:= y_{t} - y_{t-1}

你预测dy_{T+h},你知道最后的观察,y_{T}, so y_{T+h} = dy_{T+h} + y_{T}。只需通过最后一次观察来增加对未来值的所有预测,您就可以得到一个水平预测。

如果您使用对数的一阶差分 dlny_{t} := lny_{t} - lny_{t-1},您将得到增长率的一阶泰勒近似值,因此您可以预测增长率。在这种情况下,水平预测将是y_{T+h} = (1+dlny_{T+h}) y_{T}

您不需要任何复杂的函数来进行这些转换。事实上,因为y_{T} 是一个标量,如果你有一个用于所有hdy_{T+h} or dlny_{T+h} 的向量,R 将允许你使用标量和向量编写我上面写的表达式,R 将管理维度问题自行解决。

【讨论】:

    【解决方案2】:

    首先,如果您认为 X 会影响 y,那么您应该区分 both 变量。仅区分其中一个会导致模型中 X 影响 y 的 变化 而不是 y 本身。

    您可以使用arima() 函数(并区分两个变量)来做到这一点:

    fit <- arima(y, xreg=X, order=c(0,1,0))
    

    然后使用以下方法获得无差异尺度上的预测

    fcast <- predict(fit, n.ahead=10, newxreg=futureX)
    

    其中futureX 包含接下来的 10 个 X 值。

    如果你真的想模拟 X 对 d(y) 的影响,那么创建一个新变量

    sumX <- cumsum(X)
    

    并使用它来代替X(同样修改futureX)。

    【讨论】:

      【解决方案3】:

      我认为您正在寻找的是cumsum,这是diff(几乎)的逆运算。您可以像这样从其差异中恢复向量:

      > z<-sample(20)
      > dz<-diff(z)
      > z0<-cumsum(c(z[1],dz))
      > all(z==z0)
      [1] TRUE
      

      在你的情况下,它看起来像这样:

      dY<-diff(Y)
      dYhat<-lm(dY ~ X[-1])$fitted
      Yhat<-cumsum(c(Y[1],dYhat))
      

      【讨论】:

        猜你喜欢
        • 2013-09-26
        • 1970-01-01
        • 1970-01-01
        • 2023-03-27
        • 1970-01-01
        • 2019-08-31
        • 1970-01-01
        • 2020-02-21
        • 2019-04-08
        相关资源
        最近更新 更多