R:HAC通过NeweyWest使用dynlm(R: HAC by NeweyWest using

2019-10-22 22:55发布

这是我想做些什么:

library("lmtest")
library("dynlm")
test$Date = as.Date(test$Date, format = "%d.%m.%Y")
zooX = zoo(test[, -1], order.by = test$Date)
f <- d(Euribor3) ~ d(Ois3) + d(CDS) + d(Vstoxx) + d(log(omo)) + d(L(Euribor3))
m1 <- dynlm(f, data = zooX, start = as.Date("2005-01-05"),end = as.Date("2005-01-24"))
m2 <- dynlm(f, data = zooX, start = as.Date("2005-01-25"), end=as.Date("2005-02-14"))
summary(m1)
summary(m2)
coeftest(m1, vcov=NeweyWest)
coeftest(m2, vcov=NeweyWest)

没有与该功能没有问题summary(m1)但是,如果我想NeweyWest使用HAC即coeftest(m1, vcov=NeweyWest)我收到以下错误消息,我不知道为什么: Error in na.fail.default(as.ts(x)) : missing values in object我有什么改变我的代码,以便利用得到的结果coeftest() 注意:有,你可以从样本数据看不出有任何缺失值。 非常感谢!

样本数据:

    Date    Euribor3    Ois3    Vstoxx  CDS omo
1   03.01.2005  2.154   2.089   14.47   17.938  344999
2   04.01.2005  2.151   2.084   14.51   17.886  344999
3   05.01.2005  2.151   2.087   14.42   17.950  333998
4   06.01.2005  2.150   2.085   13.80   17.950  333998
5   07.01.2005  2.146   2.086   13.57   17.913  333998
6   10.01.2005  2.146   2.087   12.92   17.958  333998
7   11.01.2005  2.146   2.089   13.68   17.962  333998
8   12.01.2005  2.145   2.085   14.05   17.886  339999
9   13.01.2005  2.144   2.084   13.64   17.568  339999
10  14.01.2005  2.144   2.085   13.57   17.471  339999
11  17.01.2005  2.143   2.085   13.20   17.365  339999
12  18.01.2005  2.144   2.085   13.17   17.214  347999
13  19.01.2005  2.143   2.086   13.63   17.143  354499
14  20.01.2005  2.144   2.087   14.17   17.125  354499
15  21.01.2005  2.143   2.087   13.96   17.193  354499
16  24.01.2005  2.143   2.086   14.11   17.283  354499
17  25.01.2005  2.144   2.086   13.63   17.083  354499
18  26.01.2005  2.143   2.086   13.32   17.348  347999
19  27.01.2005  2.144   2.085   12.46   17.295  352998
20  28.01.2005  2.144   2.084   12.81   17.219  352998
21  31.01.2005  2.142   2.084   12.72   17.143  352998
22  01.02.2005  2.142   2.083   12.36   17.125  352998
23  02.02.2005  2.141   2.083   12.25   17.000  357499
24  03.02.2005  2.144   2.088   12.38   16.808  357499
25  04.02.2005  2.142   2.084   11.60   16.817  357499
26  07.02.2005  2.142   2.084   11.99   16.798  359999
27  08.02.2005  2.141   2.083   11.92   16.804  355500
28  09.02.2005  2.142   2.080   12.19   16.589  355500
29  10.02.2005  2.140   2.080   12.04   16.500  355500
30  11.02.2005  2.140   2.078   11.99   16.429  355500
31  14.02.2005  2.139   2.078   12.52   16.042  355500

编辑我认为这个问题是在此命令: zooX = zoo(test[, -1], order.by = test$Date) ,即功能order.by() 如果删除这部分,一切平等的,你可以通过NeweyWest计算HAC(当然,你还需要更改start = as.Date("2005-01-25")索引号,如start=50 )。但是通过删除它,你失去了在回归输出,这是非常有用的开始和结束日期。 所以,如果有人知道变通的办法,请让我知道!

Answer 1:

NeweyWest计算“滞后”与此代码:

lag <- floor(bwNeweyWest(x, order.by = order.by, prewhite = prewhite, 
        ar.method = ar.method, data = data))

......当用它复制你的(和我对它的复制)错误的默认参数调用:

>bwNeweyWest(m2,lag = NULL, order.by = NULL, prewhite = TRUE, adjust = FALSE, 
+     diagnostics = FALSE, sandwich = TRUE, ar.method = "ols", 
+     data = list(), verbose = FALSE)
Error in na.fail.default(as.ts(x)) : missing values in object

信中的例子?NeweyWest页面提示,预指定的滞后是原来的策略。 我碰到你的coeftest与2,3和4滞后电话和看不到滞后的选择多灵敏度:

coeftest(m1, vcov=NeweyWest(m1, lag = 2, prewhite = FALSE) )
#-------------
t test of coefficients:

                  Estimate  Std. Error t value Pr(>|t|)   
(Intercept)    -0.00088591  0.00024838 -3.5667 0.007329 **
d(Ois3)        -0.01256761  0.20243315 -0.0621 0.952020   
d(CDS)          0.00010732  0.00097169  0.1104 0.914774   
d(Vstoxx)       0.00121163  0.00051398  2.3573 0.046150 * 
d(log(omo))     0.01245017  0.01916762  0.6495 0.534190   
d(L(Euribor3)) -0.42173541  0.11765274 -3.5846 0.007141 **
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

#----------
coeftest(m2, vcov=NeweyWest(m2 , lag = 2, prewhite = FALSE ) )
#------------
t test of coefficients:

                  Estimate  Std. Error t value Pr(>|t|)  
(Intercept)    -0.00055562  0.00029246 -1.8998  0.08992 .
d(Ois3)         0.25659641  0.17004507  1.5090  0.16558  
d(CDS)         -0.00276703  0.00197776 -1.3991  0.19530  
d(Vstoxx)      -0.00091397  0.00063662 -1.4357  0.18493  
d(log(omo))    -0.01524269  0.02810579 -0.5423  0.60076  
d(L(Euribor3)) -0.51430803  0.17335182 -2.9668  0.01578 *
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

我不知道这是否是对的的疏忽dynlm作者或sandwich作者。 你可能会向他们发送一封电子邮件,以获取有关统计有效性的问题更权威的意见。



文章来源: R: HAC by NeweyWest using dynlm