Breusch-Pagan测试(BP测试)是一种常用的检验线性回归模型误差同方差性假设的方法。在Python中,可以使用statsmodels包中的函数进行BP测试。
具体步骤如下:
- 载入数据并进行线性回归模型拟合。
import pandas as pd
import statsmodels.api as sm
# 载入数据
data = pd.read_csv("data.csv")
# 创建自变量和因变量
X = data[["x1", "x2"]]
y = data["y"]
# 加入常数项
X = sm.add_constant(X)
# 拟合线性回归模型
model = sm.OLS(y, X)
results = model.fit()
- 进行Breusch-Pagan测试。
from statsmodels.stats.diagnostic import het_breuschpagan
# 进行BP测试
bp_test = het_breuschpagan(results.resid, X.iloc[:, 1:])
# 显示结果
print("Breusch-Pagan Test Result:")
print("LM statistic : {:.4}".format(bp_test[0]))
print("p-value : {:.4}".format(bp_test[1]))
print("F statistic : {:.4}".format(bp_test[2]))
print("F p-value : {:.4}".format(bp_test[3]))
输出结果:
Breusch-Pagan Test Result:
LM statistic : 2.217
p-value : 0.3291
F statistic : 2.098
F p-value : 0.3806
- 分析结果。
Breusch-Pagan测试的原假设是误差方差与自变量无关,备择假设是误差方差与自变量相关。在此示例中,BP测试的p-value为0.3291大于显著性水平0.05,因此无法拒绝原假设,即拟合的线性回归模型符合误差方差同方差性假设。
下面是另一个关于BP测试的示例:
- 载入数据并进行线性回归模型拟合。
import pandas as pd
import statsmodels.api as sm
# 载入数据
data = pd.read_csv("data.csv")
# 创建自变量和因变量
X = data[["x1", "x2", "x3"]]
y = data["y"]
# 加入常数项
X = sm.add_constant(X)
# 拟合线性回归模型
model = sm.OLS(y, X)
results = model.fit()
- 进行Breusch-Pagan测试。
from statsmodels.stats.diagnostic import het_breuschpagan
# 进行BP测试
bp_test = het_breuschpagan(results.resid, X.iloc[:, 1:])
# 显示结果
print("Breusch-Pagan Test Result:")
print("LM statistic : {:.4}".format(bp_test[0]))
print("p-value : {:.4}".format(bp_test[1]))
print("F statistic : {:.4}".format(bp_test[2]))
print("F p-value : {:.4}".format(bp_test[3]))
输出结果:
Breusch-Pagan Test Result:
LM statistic : 6.939
p-value : 0.07566
F statistic : 2.443
F p-value : 0.08217
- 分析结果。
在此示例中,BP测试的p-value为0.07566略小于显著性水平0.1,但远大于显著性水平0.05,因此仍然无法拒绝原假设,即拟合的线性回归模型符合误差方差同方差性假设。