我是 R 新手,我一直使用电子视图,现在我必须进行回归
我有 Xt 固定和 Yt 不是固定的,所以我需要区别
yt=Yt-Y(t-1)
那么回归是
yt = a + bXt
如何对 R 进行预测并获得“真实”值而不是差异?
在 e-views 中可以写d(Yt)
,但在 R 中是不可能的
我是 R 新手,我一直使用电子视图,现在我必须进行回归
我有 Xt 固定和 Yt 不是固定的,所以我需要区别
yt=Yt-Y(t-1)
那么回归是
yt = a + bXt
如何对 R 进行预测并获得“真实”值而不是差异?
在 e-views 中可以写d(Yt)
,但在 R 中是不可能的
我认为您正在寻找的是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))
首先,如果您认为 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
包含接下来的 10 个 X 值。
如果你真的想模拟 X 对 d(y) 的影响,那么创建一个新变量
sumX <- cumsum(X)
并使用它而不是X
适合(并类似地修改futureX
)。
如果您提前 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}
是一个标量,如果你有一个dy_{T+h} or dlny_{T+h}
for all的向量h
,R
将允许你使用标量和向量编写我上面写的表达式,并且R
可以自行正确管理维度问题。