如何在 python 中执行 breusch-pagan 测试


在回归分析中,异方差是指残差的离散程度不均匀。更准确地说,这是残差分布在测量值范围内发生系统变化的情况。

异方差是一个问题,因为普通最小二乘 (OLS) 回归假设残差来自具有同方差的总体,即方差恒定。

当回归分析中存在异方差时,分析结果变得难以相信。

确定回归分析中是否存在异方差的一种方法是使用Breusch-Pagan 检验

本教程介绍如何在 Python 中执行 Breusch-Pagan 测试。

示例:Python 中的 Breusch-Pagan 测试

在此示例中,我们将使用以下数据集来描述 10 名篮球运动员的属性:

 import numpy as np
import pandas as pd

#create dataset
df = pd.DataFrame({'rating': [90, 85, 82, 88, 94, 90, 76, 75, 87, 86],
                   'points': [25, 20, 14, 16, 27, 20, 12, 15, 14, 19],
                   'assists': [5, 7, 7, 8, 5, 7, 6, 9, 9, 5],
                   'rebounds': [11, 8, 10, 6, 6, 9, 6, 10, 10, 7]})

#view dataset
df

	rating points assists rebounds
0 90 25 5 11
1 85 20 7 8
2 82 14 7 10
3 88 16 8 6
4 94 27 5 6
5 90 20 7 9
6 76 12 6 6
7 75 15 9 10
8 87 14 9 10
9 86 19 5 7

我们将拟合一个多元线性回归模型,使用得分作为响应变量,得分、助攻和篮板作为解释变量。接下来,我们将执行 Breusch-Pagan 检验来确定回归中是否存在异方差。

步骤 1:拟合多元线性回归模型。

首先,我们将拟合多元线性回归模型:

 import statsmodels.formula.api as smf

#fit regression model
fit = smf.ols('rating ~ points+assists+rebounds', data=df). fit ()

#view model summary
print (fit.summary())

步骤 2:执行 Breusch-Pagan 测试。

接下来,我们将执行 Breusch-Pagan 检验以确定是否存在异方差。

 from statsmodels.compat import lzip
import statsmodels.stats.api as sms

#perform Bresuch-Pagan test
names = ['Lagrange multiplier statistic', 'p-value',
        'f-value', 'f p-value']
test = sms.het_breuschpagan(fit.resid, fit.model.exog)

lzip(names, test)

[('Lagrange multiply statistic', 6.003951995818433),
 ('p-value', 0.11141811013399583),
 ('f-value', 3.004944880309618),
 ('f p-value', 0.11663863538255281)]

Breusch-Pagan 检验使用以下原假设和备择假设:

原假设 (H 0 ):存在同方差性。

备择假设:(Ha):存在同方差(即存在异方差)

在此示例中,检验的拉格朗日乘子统计量为6.004 ,相应的 p 值为0.1114 。由于该 p 值不小于 0.05,因此我们无法拒绝原假设。我们没有足够的证据表明回归模型中存在异方差性。

如何修复异方差

在前面的示例中,我们看到回归模型中不存在异方差性。

然而,当异方差确实存在时,可以通过三种常见方法来纠正这种情况:

1.变换因变量。校正异方差的一种方法是以某种方式转换因变量。常见的转换是简单地取因变量的对数。

2. 重新定义因变量。纠正异方差的另一种方法是重新定义因变量。一种常见的方法是使用因变量的比率,而不是原始值。

3. 使用加权回归。校正异方差的另一种方法是使用加权回归。这种类型的回归根据拟合值的方差为每个数据点分配权重。当使用适当的权重时,可以消除异方差问题。

请阅读本文中有关这三种方法的更多详细信息。

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注