Breusch-Pagan测试是回归分析中常用的异方差性检验方法。在Python中通过statsmodels库可以方便地进行Breusch-Pagan测试。下面是Breusch-Pagan测试的详细讲解。
1. 确定数据
首先,需要确定使用的数据集。这里以statsmodels的自带数据集“longley”为例,读取数据代码如下:
import statsmodels.api as sm
data = sm.datasets.longley.load()
y = data.endog # 目标变量
X = data.exog # 自变量
2. 构建模型
构建回归模型,并通过OLS方法拟合模型:
model = sm.OLS(y, X)
result = model.fit()
3. 进行Breusch-Pagan测试
接下来,使用statsmodels中的Breusch-Pagan检验方法进行检验。
name = ['Lagrange multiplier statistic', 'p-value', 'f-value', 'f p-value']
test = sms.het_breuschpagan(result.resid, result.model.exog)
test
这里的sms
是statsmodels中的模块,需要首先导入:
import statsmodels.stats.api as sms
Breusch-Pagan检验输出了四个参数,分别是:
- Lagrange multiplier statistic:检验统计量
- p-value:检验的p值
- f-value:检验的F值
- f p-value:F值对应的双尾p值
4. 结果解读
Breusch-Pagan检验的p值越小,说明越可能存在异方差性。如果p值小于设定阈值(比如0.05),则拒绝原假设(不存在异方差性)。
下面是另一个时间序列数据的Breusch-Pagan测试,代码展示相似。
import statsmodels.api as sm
import pandas_datareader as pdr
microsoft = pdr.get_data_yahoo('MSFT', start='2020-01-01')
X = sm.add_constant(microsoft[['Open', 'Close']])
y = microsoft['High']
model = sm.OLS(y, X)
result = model.fit()
name = ['Lagrange multiplier statistic', 'p-value', 'f-value', 'f p-value']
test = sms.het_breuschpagan(result.resid, result.model.exog)
test
这里使用了pandas_datareader库中的get_data_yahoo方法获取微软公司股票的开盘价和收盘价,构建回归模型后进行Breusch-Pagan测试。
以上就是Breusch-Pagan测试的详细攻略,包含数据读取、模型拟合和Breusch-Pagan测试。