R语言计量:Newey-West调整

  在计量经济学中,经常要对时间序列数据进行回归建模。时间序列数据通常具有异方差(Heteroscedasticity)和自相关(Autocorrelation)的性质,此时使用传统的最小二乘法(OLS)估计回归参数虽然仍可得到参数的无偏估计,但是传统方法计算出来的参数方差具有偏差,会导致参数的t检验不准确,常出现虚假显著的情况。为避免这种情况,计量经济学中常对上述参数的方差进行调整,最常用的是Newey-West调整(Newey and West,1987)。

  在R语言中,对回归系数的t检验进行Newey-West调整可以使用AER包中的NeweyWest函数和coeftest函数(其实NeweyWest来自sandwich包,coeftest函数来自lmtest包,AER将他们合在了一起)。AER包是《Applied Econometrics with R》(Christian Kleiber和Achim Zeileis)一书的配套数据代码集,这本书介绍了常用计量方法的R语言实现,感兴趣的可以仔细读一读。

  言归正传,下面介绍NeweyWest函数和coeftest函数的用法:

coeftest(x, vcov. = NULL, df = NULL, ...)

NeweyWest(x, lag = NULL, order.by = NULL, prewhite = TRUE, adjust = FALSE,

  diagnostics = FALSE, sandwich = TRUE, ar.method = "ols", data = list(),

  verbose = FALSE)

  coeftest函数用于对回归系数进行检验(t检验或z检验),其参数x表示要进行检验的对象,一般需是一个回归模型(即lm类型数据);vcov.表示参数的方差(矩阵),当取默认值NULL时,使用的就是传统回归的估计方法;df表示t检验的自由度,当取默认值NULL时,自由度为n-k(即样本量减参数量),而当df取负值时,检验方法将会从t检验(t分布假设)变为z检验(正态分布假设)。

  NeweyWest函数用于产生经Newey-West法调整后的方差(矩阵),其参数x表示要进行检验的对象,一般需是一个回归模型(即lm类型数据);lag表示带宽(详解见后文),取默认值NULL时程序会自动根据Newey and West (1994)计算出最优值;order.by表示排序,因为时间序列需按时间排序,默认值为NULL,即默认原始数据已经是按时间顺序排好了;prewhite表示是否进行prewhite处理(详解间后文),默认值是TRUE,即使用一阶自回归(AR(1))进行prewhite处理;adjust表示是否对输出的方差(矩阵)进行调整,默认值为FALSE即不调整,如为TRUE,则结果将乘以n/(n - k)进行调整;其余参数解释见后文。

  理论上说,对于一个回归模型x,计算其经过Newey-West法调整后的t检验可以直接使用下面的表达式:

coeftest(x, vcov. = NeweyWest)

  但是在一般的计量经济学教材或金融工程教材中,如Turan G. Bali等人的《Empirical asset pricing: The cross section of stock returns》,通常不使用prewhite处理,且lag使用4*(n/100)^(2/9)向下取整,其中n是样本量。即:

coeftest(x, vcov. = NeweyWest(x, lag = floor(4*(n/100)^(2/9)), prewhite = F)

  而如果要对Fama-Macbeth回归的回归系数进行检验,我们只需构建一个因变量为所检验系数,自变量为1的回归方程,然后套入上述表达式中即可:

coeftest(lm(x~1), vcov. = NeweyWest)
coeftest(lm(x~1), vcov. = NeweyWest(lm(x~1), lag = floor(4*(n/100)^(2/9)), prewhite = F)

  下面我们举一个例子:

library(AER)
# 随机生成样本量n为30的自变量x和因变量y
set.seed(20190331)
n <- 30
y <- rnorm(n) * 100
x <- runif(n) * 100
# 构建回归模型
lm_temp <- lm(y~x)
# 经典回归的参数检验
summary(lm_temp)
# coeftest函数默认的参数检验
coeftest(lm_temp)
# 默认的经Newey-West调整后的参数检验
coeftest(lm_temp, vcov. = NeweyWest)
# 一般计量经济学或金融工程教材中使用的Newey-West调整
coeftest(lm_temp, vcov. = NeweyWest(lm_temp, lag = floor(4*(n/100)^(2/9))))

  其结果如下。

> # 经典回归的参数检验
> summary(lm_temp)

Call:
lm(formula = y ~ x)

Residuals:
    Min      1Q  Median      3Q     Max 
-172.22  -36.29  -10.27   44.38  174.31 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)   
(Intercept) -93.7898    28.7032  -3.268  0.00287 **
x             0.6483     0.4612   1.406  0.17075   
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 80.07 on 28 degrees of freedom
Multiple R-squared:  0.06594,	Adjusted R-squared:  0.03258 
F-statistic: 1.977 on 1 and 28 DF,  p-value: 0.1708

> # coeftest函数默认的参数检验
> coeftest(lm_temp)

t test of coefficients:

             Estimate Std. Error t value Pr(>|t|)   
(Intercept) -93.78980   28.70322 -3.2676 0.002868 **
x             0.64834    0.46115  1.4059 0.170752   
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

> # 默认的经Newey-West调整后的参数检验
> coe
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值