回归诊断与规范测试¶
介绍¶
在许多统计分析的情况下,我们并不确定我们的统计模型是否正确指定。例如,当使用ols时,假设了线性和同方差性,一些检验统计量还假设误差是正态分布的,或者我们有一个大样本。由于我们的结果依赖于这些统计假设,只有当我们的假设成立(至少近似成立)时,结果才是正确的。
解决关于正确规范的不确定性问题的一个方案是使用稳健方法,例如稳健回归或稳健协方差(三明治)估计量。第二种方法是测试我们的样本是否与这些假设一致。
以下简要总结了线性回归的规范和诊断测试。
异方差性检验¶
对于这些测试,原假设是所有观测值具有相同的误差方差,即误差是同方差的。这些测试在考虑的异方差类型作为备择假设时有所不同。它们在针对不同类型异方差的测试效力上也存在差异。
het_breuschpaganBreusch-Pagan 拉格朗日乘数异方差性检验
het_white怀特的拉格朗日乘数异方差性检验
het_goldfeldquandt测试两个子样本中的方差是否相同
自相关检验¶
这组测试是否回归残差不存在自相关性。 它们假设观测值按时间顺序排列。
durbin_watson无残差自相关的Durbin-Watson检验
使用summary()打印
acorr_ljungboxLjung-Box检验残差无自相关性
也返回Box-Pierce统计量
acorr_breusch_godfreyBreusch-Pagan检验用于残差无自相关性
- missing
?
非线性测试¶
linear_harvey_collier线性规范正确的零假设的多重检验
acorr_linear_rainbow线性规范正确的零假设的多重检验。
acorr_linear_lm拉格朗日乘子检验用于零假设,即线性规范是正确的。这用于针对特定的函数替代方案进行检验。
spec_white怀特的两矩规范检验,原假设为同方差且正确指定。
结构变化、参数稳定性的检验¶
测试所有或部分回归系数在整个数据样本中是否保持不变。
已知的变更点¶
- OneWayLS :
用于测试预定义子样本(例如组)之间相同回归系数的灵活ols包装器
- missing
预测性测试:Greene,子样本中的观测数量小于回归变量的数量
未知变化点¶
breaks_cusumolsresid基于 OLS 残差的参数稳定性 cusum 检验
breaks_hansen测试模型稳定性,OLS参数的断裂,Hansen 1992
recursive_olsresiduals计算带有残差和cusum检验统计量的递归OLS。目前这主要是递归残差基础测试的辅助函数。然而,由于它使用递归更新并且不估计单独的问题,因此它应该也非常高效,作为扩展OLS函数。
- missing
supLM, expLM, aveLM (安德鲁斯, 安德鲁斯/普洛伯格)
R-structchange 还具有 musum(移动累积和测试)
测试递归参数估计,它们在哪里?
多重共线性检验¶
- conditionnum (statsmodels.stattools)
– 需要与Stata进行测试 –
参见 Grene(第三版)第57-58页
- numpy.linalg.cond
(对于更一般的条件数,但没有设计准备的后台帮助)
- Variance Inflation Factors
这目前与影响和异常值测量一起(这里有一些链接到其他测试:http://www.stata.com/help.cgi?vif)
正态性和分布测试¶
jarque_bera使用summary()打印
残差的正态分布检验
- Normality tests in scipy stats
需要再次查找列表
omni_normtest残差的正态分布检验
使用summary()打印
normal_adAnderson Darling 检验正态性,使用估计的均值和方差
kstest_normallillieforsLilliefors正态性检验,这是一种用于正态性的Kolmogorov-Smirnov检验,使用估计的均值和方差。lilliefors是kstest_normal的别名
qq图, scipy.stats.probplot
- other goodness-of-fit tests for distributions in scipy.stats and enhancements
科尔莫戈罗夫-斯米尔诺夫
anderson : 安德森-达林
似然比, …
卡方检验, 幂差异性检验 : 需要包装 (用于分箱)
异常值和影响诊断指标¶
这些措施试图识别那些是异常值、具有较大残差或对回归估计有较大影响的观测值。稳健回归(RLM)可以用于以稳健的方式进行估计,同时识别异常值。RLM的优势在于,即使存在许多异常值,估计结果也不会受到强烈影响,而大多数其他措施在识别单个异常值方面表现更好,可能无法识别异常值群体。
RLM示例来自 example_rlm.py
import statsmodels.api as sm ### Example for using Huber's T norm with the default ### median absolute deviation scaling data = sm.datasets.stackloss.load() data.exog = sm.add_constant(data.exog) huber_t = sm.RLM(data.endog, data.exog, M=sm.robust.norms.HuberT()) hub_results = huber_t.fit() print(hub_results.weights)权重给出了根据所请求的缩放对特定观测值进行降权的程度。
Influencestats.outliers_influence 类中,大多数用于异常值和影响力的标准度量都可以作为方法或属性提供给一个拟合的 OLS 模型。这主要是为 OLS 编写的,一些但并非所有度量也适用于其他模型。 一些统计量可以从 OLS 结果实例中计算出来,而其他统计量则需要为每个剔除的变量估计一个 OLS。
残差压力
外部学生化残差
内部学生化残差
ess_press
帽子矩阵对角线
cooks_distance - Cook’s Distance Wikipedia (带有一些其他链接)
协变比
dfbetas
DFFITS
dffits_internal
det_cov_params_not_obsi
未观测到的参数
sigma2_not_obsi