滞后因变量
Lag dependent variable
我想使用 R 计算以下时间序列回归:
$\Delta y_t=\beta_1 \Delta x_t+\beta_2 \Delta z_t+\beta_3 \Delta m_t+\beta_4 \Delta y_{t−1}$
由于我对 R 的经验不多所以我想问一下下面的 R 代码是否能满足我的要求:
y <- ts(diff(YY))
x <- ts(diff(XX))
z <- ts(diff(ZZ))
m <- ts(diff(MM))
l1 <- lag(y, k=-1)
int <- ts.intersect(y, x, z, m, l1)
reg1 <- lm(y~x+z+m+l1, data=int)
summary(reg1)`
抱歉,我找不到公式中的拼写错误。
这是一个数据样本:
Date YY XX ZZ MM
03.01.2005 2.154 2.089 0.001 344999
04.01.2005 2.151 2.084 0.006 344999
05.01.2005 2.151 2.087 -0.007 333998
06.01.2005 2.15 2.085 -0.005 333998
07.01.2005 2.146 2.086 -0.006 333998
10.01.2005 2.146 2.087 -0.007 333998
11.01.2005 2.146 2.089 -0.009 333998
12.01.2005 2.145 2.085 -0.005 339999
13.01.2005 2.144 2.084 -0.004 339999
14.01.2005 2.144 2.085 -0.005 339999
17.01.2005 2.143 2.085 -0.005 339999
18.01.2005 2.144 2.085 -0.005 347999
19.01.2005 2.143 2.086 -0.006 354499
20.01.2005 2.144 2.087 -0.007 354499
21.01.2005 2.143 2.087 -0.007 354499
24.01.2005 2.143 2.086 -0.006 354499
25.01.2005 2.144 2.086 -0.006 354499
26.01.2005 2.143 2.086 -0.006 347999
27.01.2005 2.144 2.085 -0.005 352998
28.01.2005 2.144 2.084 -0.004 352998
31.01.2005 2.142 2.084 -0.004 352998
01.02.2005 2.142 2.083 -0.003 352998
02.02.2005 2.141 2.083 -0.003 357499
03.02.2005 2.144 2.088 -0.008 357499
04.02.2005 2.142 2.084 -0.004 357499
07.02.2005 2.142 2.084 -0.004 359999
08.02.2005 2.141 2.083 -0.003 355500
我尝试了 fg nu 对我最初问题的回答,但收到一条错误消息。
1. zooX = zoo(test4[, -1], order.by = test4$Date)
这个命令工作正常。 (我的数据集的第一列是日期列,所以我的数据集看起来和我问题中的数据样本一模一样。)
2. 我 运行 回归: lmX = dynlm(d(YY) ~ d(XX) + d(ZZ) + d(MM) + L(YY, 1), data = zooX)
在这里我收到以下错误消息: Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : 0 (non-NA) cases In addition: Warning message: In dynlm(d(YY) ~ d(XX) + d(ZZ) + d(MM) + L(YY, 1), data = zooX) : empty model frame specified
我正在监督的错误是什么?
使用 dynlm
包。以下是使用您提供的数据的示例:
library(dynlm)
dfX = read.table(
textConnection(
"Date YY XX ZZ MM
03.01.2005 2.154 2.089 0.001 344999
04.01.2005 2.151 2.084 0.006 344999
05.01.2005 2.151 2.087 -0.007 333998
06.01.2005 2.15 2.085 -0.005 333998
07.01.2005 2.146 2.086 -0.006 333998
10.01.2005 2.146 2.087 -0.007 333998
11.01.2005 2.146 2.089 -0.009 333998
12.01.2005 2.145 2.085 -0.005 339999
13.01.2005 2.144 2.084 -0.004 339999
14.01.2005 2.144 2.085 -0.005 339999
17.01.2005 2.143 2.085 -0.005 339999
18.01.2005 2.144 2.085 -0.005 347999
19.01.2005 2.143 2.086 -0.006 354499
20.01.2005 2.144 2.087 -0.007 354499
21.01.2005 2.143 2.087 -0.007 354499
24.01.2005 2.143 2.086 -0.006 354499
25.01.2005 2.144 2.086 -0.006 354499
26.01.2005 2.143 2.086 -0.006 347999
27.01.2005 2.144 2.085 -0.005 352998
28.01.2005 2.144 2.084 -0.004 352998
31.01.2005 2.142 2.084 -0.004 352998
01.02.2005 2.142 2.083 -0.003 352998
02.02.2005 2.141 2.083 -0.003 357499
03.02.2005 2.144 2.088 -0.008 357499
04.02.2005 2.142 2.084 -0.004 357499
07.02.2005 2.142 2.084 -0.004 359999
08.02.2005 2.141 2.083 -0.003 355500"
), header = TRUE)
dfX$Date = as.Date(dfX$Date, format = "%d.%m.%Y")
# convert to zoo format
zooX = zoo(dfX[, -1], order.by = dfX$Date)
# run a regression with time transformed regressors
lmX = dynlm(d(YY) ~ d(XX) + d(ZZ) + d(MM) + d(L(YY, 1)), data = zooX)
summary(lmX)
这给出了输出:
> summary(lmX)
Time series regression with "zoo" data:
Start = 2005-01-05, End = 2005-02-08
Call:
dynlm(formula = d(YY) ~ d(XX) + d(ZZ) + d(MM) + d(L(YY, 1)),
data = zooX)
Residuals:
Min 1Q Median 3Q Max
-0.0039592 -0.0003746 0.0000854 0.0006254 0.0018715
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -5.008e-04 2.766e-04 -1.811 0.0853 .
d(XX) 2.943e-01 2.409e-01 1.222 0.2359
d(ZZ) 2.038e-03 1.715e-01 0.012 0.9906
d(MM) 7.808e-08 8.251e-08 0.946 0.3553
d(L(YY, 1)) -1.677e-01 2.103e-01 -0.797 0.4346
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.001248 on 20 degrees of freedom
Multiple R-squared: 0.2579, Adjusted R-squared: 0.1095
F-statistic: 1.738 on 4 and 20 DF, p-value: 0.1813
我想使用 R 计算以下时间序列回归:
$\Delta y_t=\beta_1 \Delta x_t+\beta_2 \Delta z_t+\beta_3 \Delta m_t+\beta_4 \Delta y_{t−1}$
由于我对 R 的经验不多所以我想问一下下面的 R 代码是否能满足我的要求:
y <- ts(diff(YY))
x <- ts(diff(XX))
z <- ts(diff(ZZ))
m <- ts(diff(MM))
l1 <- lag(y, k=-1)
int <- ts.intersect(y, x, z, m, l1)
reg1 <- lm(y~x+z+m+l1, data=int)
summary(reg1)`
抱歉,我找不到公式中的拼写错误。
这是一个数据样本:
Date YY XX ZZ MM
03.01.2005 2.154 2.089 0.001 344999
04.01.2005 2.151 2.084 0.006 344999
05.01.2005 2.151 2.087 -0.007 333998
06.01.2005 2.15 2.085 -0.005 333998
07.01.2005 2.146 2.086 -0.006 333998
10.01.2005 2.146 2.087 -0.007 333998
11.01.2005 2.146 2.089 -0.009 333998
12.01.2005 2.145 2.085 -0.005 339999
13.01.2005 2.144 2.084 -0.004 339999
14.01.2005 2.144 2.085 -0.005 339999
17.01.2005 2.143 2.085 -0.005 339999
18.01.2005 2.144 2.085 -0.005 347999
19.01.2005 2.143 2.086 -0.006 354499
20.01.2005 2.144 2.087 -0.007 354499
21.01.2005 2.143 2.087 -0.007 354499
24.01.2005 2.143 2.086 -0.006 354499
25.01.2005 2.144 2.086 -0.006 354499
26.01.2005 2.143 2.086 -0.006 347999
27.01.2005 2.144 2.085 -0.005 352998
28.01.2005 2.144 2.084 -0.004 352998
31.01.2005 2.142 2.084 -0.004 352998
01.02.2005 2.142 2.083 -0.003 352998
02.02.2005 2.141 2.083 -0.003 357499
03.02.2005 2.144 2.088 -0.008 357499
04.02.2005 2.142 2.084 -0.004 357499
07.02.2005 2.142 2.084 -0.004 359999
08.02.2005 2.141 2.083 -0.003 355500
我尝试了 fg nu 对我最初问题的回答,但收到一条错误消息。
1. zooX = zoo(test4[, -1], order.by = test4$Date)
这个命令工作正常。 (我的数据集的第一列是日期列,所以我的数据集看起来和我问题中的数据样本一模一样。)
2. 我 运行 回归: lmX = dynlm(d(YY) ~ d(XX) + d(ZZ) + d(MM) + L(YY, 1), data = zooX)
在这里我收到以下错误消息: Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : 0 (non-NA) cases In addition: Warning message: In dynlm(d(YY) ~ d(XX) + d(ZZ) + d(MM) + L(YY, 1), data = zooX) : empty model frame specified
我正在监督的错误是什么?
使用 dynlm
包。以下是使用您提供的数据的示例:
library(dynlm)
dfX = read.table(
textConnection(
"Date YY XX ZZ MM
03.01.2005 2.154 2.089 0.001 344999
04.01.2005 2.151 2.084 0.006 344999
05.01.2005 2.151 2.087 -0.007 333998
06.01.2005 2.15 2.085 -0.005 333998
07.01.2005 2.146 2.086 -0.006 333998
10.01.2005 2.146 2.087 -0.007 333998
11.01.2005 2.146 2.089 -0.009 333998
12.01.2005 2.145 2.085 -0.005 339999
13.01.2005 2.144 2.084 -0.004 339999
14.01.2005 2.144 2.085 -0.005 339999
17.01.2005 2.143 2.085 -0.005 339999
18.01.2005 2.144 2.085 -0.005 347999
19.01.2005 2.143 2.086 -0.006 354499
20.01.2005 2.144 2.087 -0.007 354499
21.01.2005 2.143 2.087 -0.007 354499
24.01.2005 2.143 2.086 -0.006 354499
25.01.2005 2.144 2.086 -0.006 354499
26.01.2005 2.143 2.086 -0.006 347999
27.01.2005 2.144 2.085 -0.005 352998
28.01.2005 2.144 2.084 -0.004 352998
31.01.2005 2.142 2.084 -0.004 352998
01.02.2005 2.142 2.083 -0.003 352998
02.02.2005 2.141 2.083 -0.003 357499
03.02.2005 2.144 2.088 -0.008 357499
04.02.2005 2.142 2.084 -0.004 357499
07.02.2005 2.142 2.084 -0.004 359999
08.02.2005 2.141 2.083 -0.003 355500"
), header = TRUE)
dfX$Date = as.Date(dfX$Date, format = "%d.%m.%Y")
# convert to zoo format
zooX = zoo(dfX[, -1], order.by = dfX$Date)
# run a regression with time transformed regressors
lmX = dynlm(d(YY) ~ d(XX) + d(ZZ) + d(MM) + d(L(YY, 1)), data = zooX)
summary(lmX)
这给出了输出:
> summary(lmX)
Time series regression with "zoo" data:
Start = 2005-01-05, End = 2005-02-08
Call:
dynlm(formula = d(YY) ~ d(XX) + d(ZZ) + d(MM) + d(L(YY, 1)),
data = zooX)
Residuals:
Min 1Q Median 3Q Max
-0.0039592 -0.0003746 0.0000854 0.0006254 0.0018715
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -5.008e-04 2.766e-04 -1.811 0.0853 .
d(XX) 2.943e-01 2.409e-01 1.222 0.2359
d(ZZ) 2.038e-03 1.715e-01 0.012 0.9906
d(MM) 7.808e-08 8.251e-08 0.946 0.3553
d(L(YY, 1)) -1.677e-01 2.103e-01 -0.797 0.4346
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.001248 on 20 degrees of freedom
Multiple R-squared: 0.2579, Adjusted R-squared: 0.1095
F-statistic: 1.738 on 4 and 20 DF, p-value: 0.1813