我是R的新手,我总是使用电子视图,现在我必须做回归
我有Xt静止而且不静止所以我需要区别
yt=Yt-Y(t-1)
然后回归
yt = a + bXt
如何对R进行预测并获得“真实”值,而不是差异?
在电子视图中,是写d(Yt)
的,但在R中是不可能的
答案 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
将自行正确管理维度问题。