在统计学中,BP检验(英语:Breusch–Pagan test)是1979年由布伦斯(英语:Trevor Breusch)和帕甘(英语:Adrian Pagan)提出的方法,用来检验线性回归模型中是否存在异方差的问题。另外,丹尼斯·库克(英语:R. Dennis Cook)和韦斯伯格在1983年独立地提出了类似的方法。异方差的存在意味着模型的方差与自变量是相关的。
设回归模型为
对其进行回归可以得到一组残差。普通最小二乘法(英语:Ordinary least squares)要求方差与自变量无关,这时方差可以由残差平方和的平均值估计得到。但如果这个前提不成立,例如方差与自变量线性相关,就可以通过下列辅助回归,即残差平方对自变量进行回归检验出来:
这就是BP检验的一个情形。它实质上是卡方检验,检验统计量渐进于,自由度与除常数项外的解释变量数相等。如果得到的p值小于一定阈值(如0.05)就可以拒绝零假设并认为异方差存在。
如果BP检验表明存在异方差存在,可以视情况使用加权最小二乘法(英语:weighted least squares)(适用于异方差的分布已知时)或异方差稳健标准误(英语:heteroscedasticity-consistent standard errors)方法。
根据高斯-马尔可夫定理,在同方差的前提下,普通最小二乘估计是最佳的线性无偏估计,意即其方差相较其他任何估计量都更小。如果异方差存在,估计结果仍是无偏的,但其方差并不是最小的。在决定使用哪种估计方法之前,可以先进行BP测试来判断是否存在异方差。BP检验的前提是方差与各个自变量有关,其中是自变量,这里除去常数项以外共有个解释变量。零假设亦即异方差不存在等价于个约束:
BP测试分为以下三个步骤:
并对每个观测都计算出残差。
如果同方差的零假设成立,LM统计量是渐进于分布的。
在R语言中,能够完成BP检验的函数包括car
包中的ncvTest
函数、lmtest
包中的bptest
函数以及plm
包中的plmtest
函数等。
而Stata中计算回归后使用estat hettest
命令,参数填写所有独立变量,即可进行BP检验。
在Python中,statsmodels.stats.diagnostic
(statsmodels
包)中的函数het_breuschpagan
可进行BP检验。