如何在 R 中拟合模型“Y(t) = αX + βY(t-1) - βY(t-2)”?
How can I fit the model “Y(t) = αX + βY(t-1) - βY(t-2)" in R?
我必须使用 R 对时间序列 Y(t) 进行一步预测。理论表明理想模型应该是:
Y(t) = αX + βY(t-1) - βY(t-2)
但是,我不知道如何处理以下问题:
- 我必须取 βY(t-1) 减 βY(t-2).
- 既有自回归(Y(t-1),Y(t-2)) 和 外生 变量 (X).
- 我必须测试“βY(t-1) - βY(t-2)”是否是表达自回归的最佳方式,而不是其他 ARIMA型号。
有问题的时间序列Y(t)是:
Y <- c(57.4, 51.6, 36.1, 34.8, 41.2, 59.1, 62.5, 55.0, 53.8, 52.4, 44.5, 42.2, 50.1, 61.3, 49.6, 38.2, 51.1, 44.7, 40.8, 46.1, 53.5, 54.7, 50.3, 48.8, 53.7, 52.0)
使用的外生变量X为:
X <- c(-12.1, 30.0, 13.5, 30.0, -3.8, -24.3, 30.0, 30.0, 30.0, 30.0, -21.6, 30.0, 0.0, 26.5, -30.0, 20.5, -4.8, -9.2, 22.2, -7.3, 15.9, 16.0, 13.7, 5.6, 5.7, 1.8)
您可能会注意到,这个实际的 X 对预测 Y 没有多大帮助。不过,我将其作为示例报告,因为我目前正在寻找 X 的正确值。
如果有任何错误或不清楚的地方,请告诉我,我会给出必要的解释。
提前致谢。
您可以使用 lag
函数进行转换,使用 lm
或 glm
进行回归:
Y <- c(57.4, 51.6, 36.1, 34.8, 41.2, 59.1, 62.5, 55.0, 53.8, 52.4, 44.5, 42.2, 50.1, 61.3, 49.6, 38.2, 51.1, 44.7, 40.8, 46.1, 53.5, 54.7, 50.3, 48.8, 53.7, 52.0)
X <- c(-12.1, 30.0, 13.5, 30.0, -3.8, -24.3, 30.0, 30.0, 30.0, 30.0, -21.6, 30.0, 0.0, 26.5, -30.0, 20.5, -4.8, -9.2, 22.2, -7.3, 15.9, 16.0, 13.7, 5.6, 5.7, 1.8)
y_1 <- lag(Y)
y_2 <- lag(Y,2)
lm(Y~X+y_1+y_2)
您也可以直接在回归方程中进行滞后变换:
lm(Y ~ X + I(lag(Y)) + I(lag(Y, 2)))
最后,不同之处只是运算符的变化:
lm(Y ~ X + I(lag(Y)) - I(lag(Y, 2)))
Call:
lm(formula = Y ~ X + I(lag(Y)) - I(lag(Y, 2)))
Coefficients:
(Intercept) X I(lag(Y))
3.906e-14 -4.693e-18 1.000e+00
我必须使用 R 对时间序列 Y(t) 进行一步预测。理论表明理想模型应该是:
Y(t) = αX + βY(t-1) - βY(t-2)
但是,我不知道如何处理以下问题:
- 我必须取 βY(t-1) 减 βY(t-2).
- 既有自回归(Y(t-1),Y(t-2)) 和 外生 变量 (X).
- 我必须测试“βY(t-1) - βY(t-2)”是否是表达自回归的最佳方式,而不是其他 ARIMA型号。
有问题的时间序列Y(t)是:
Y <- c(57.4, 51.6, 36.1, 34.8, 41.2, 59.1, 62.5, 55.0, 53.8, 52.4, 44.5, 42.2, 50.1, 61.3, 49.6, 38.2, 51.1, 44.7, 40.8, 46.1, 53.5, 54.7, 50.3, 48.8, 53.7, 52.0)
使用的外生变量X为:
X <- c(-12.1, 30.0, 13.5, 30.0, -3.8, -24.3, 30.0, 30.0, 30.0, 30.0, -21.6, 30.0, 0.0, 26.5, -30.0, 20.5, -4.8, -9.2, 22.2, -7.3, 15.9, 16.0, 13.7, 5.6, 5.7, 1.8)
您可能会注意到,这个实际的 X 对预测 Y 没有多大帮助。不过,我将其作为示例报告,因为我目前正在寻找 X 的正确值。
如果有任何错误或不清楚的地方,请告诉我,我会给出必要的解释。
提前致谢。
您可以使用 lag
函数进行转换,使用 lm
或 glm
进行回归:
Y <- c(57.4, 51.6, 36.1, 34.8, 41.2, 59.1, 62.5, 55.0, 53.8, 52.4, 44.5, 42.2, 50.1, 61.3, 49.6, 38.2, 51.1, 44.7, 40.8, 46.1, 53.5, 54.7, 50.3, 48.8, 53.7, 52.0)
X <- c(-12.1, 30.0, 13.5, 30.0, -3.8, -24.3, 30.0, 30.0, 30.0, 30.0, -21.6, 30.0, 0.0, 26.5, -30.0, 20.5, -4.8, -9.2, 22.2, -7.3, 15.9, 16.0, 13.7, 5.6, 5.7, 1.8)
y_1 <- lag(Y)
y_2 <- lag(Y,2)
lm(Y~X+y_1+y_2)
您也可以直接在回归方程中进行滞后变换:
lm(Y ~ X + I(lag(Y)) + I(lag(Y, 2)))
最后,不同之处只是运算符的变化:
lm(Y ~ X + I(lag(Y)) - I(lag(Y, 2)))
Call: lm(formula = Y ~ X + I(lag(Y)) - I(lag(Y, 2))) Coefficients: (Intercept) X I(lag(Y)) 3.906e-14 -4.693e-18 1.000e+00