预测R中的差异系列

时间:2013-10-05 16:30:59

标签: r forecasting

我是R的新手,我总是使用电子视图,现在我必须做回归

我有Xt静止而且不静止所以我需要区别

yt=Yt-Y(t-1)

然后回归

yt = a + bXt

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

在电子视图中,

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

3 个答案:

答案 0 :(得分: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))

答案 1 :(得分:3)

首先,如果您认为X影响y,那么您应该区分两个变量。只差别中的一个导致一个模型,其中X影响y中的更改而不是y本身。

您可以使用arima()函数执行此操作(并区分两个变量):

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

然后使用

获得关于无差别量表的预测
fcast <- predict(fit, n.ahead=10, newxreg=futureX)

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

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

sumX <- cumsum(X)

并在拟合中使用{而不是X(同样修改futureX)。

答案 2 :(得分:0)

如果您预测未来几天的第一个差异,您可以预测该系列在多日内会有多高或更低。您只需将最后观察到的值添加到此差异中即可获得级别:

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}是标量,如果所有dy_{T+h} or dlny_{T+h}都有h的向量,R将允许您使用标量来编写我上面写的表达式向量和R将自行正确管理维度问题。