1

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

我有 Xt 固定和 Yt 不是固定的,所以我需要区别

yt=Yt-Y(t-1)

那么回归是

yt = a + bXt

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

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

4

3 回答 3

4

我认为您正在寻找的是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-10-05T20:02:22.437 回答
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包含接下来的 10 个 X 值。

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

sumX <- cumsum(X)

并使用它而不是X适合(并类似地修改futureX)。

于 2013-10-06T01:08:00.560 回答
0

如果您提前 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的向量hR将允许你使用标量和向量编写我上面写的表达式,并且R可以自行正确管理维度问题。

于 2017-12-03T14:07:36.967 回答