Python实现异方差检验(statsmodels)

  • 什么是异方差?(摘自知乎https://www.zhihu.com/question/354637231)

一句话,就是当随机扰动项和模型中的解释变量(自变量)存在某种相关性,就会出现异方差。
即对于不同的样本点,随机误差项的方差不再是常数,而互不相同,则认为出现了异方差性(Heteroskedasticity)。
异方差: Python实现异方差检验(statsmodels)_第1张图片
,与解释变量观测值Xi有关。
异方差的类型
Python实现异方差检验(statsmodels)_第2张图片
单调递增型:随X的增大而增大
单调递减型:随X的增大而减小
复杂型:与X的变化呈复杂形式
异方差性的后果
1、参数估计量有效
OLS估计量仍然具有无偏性,但不具有有效性。
在大样本情况下,尽管参数估计量具有一致性,但仍然不具有渐近有效性。
2、变量的显著性检验失去意义
变量的显著性检验中,构造了t统计量 [公式] ,它是建立在 [公式] 不变而正确估计了 [公式] 的基础之上的。如果出现了异方差性,估计的[公式]出现偏误,t检验失去意义
其他检验也是如此
3、模型的预测失效
一方面,由于上述后果,使得模型不具有良好的统计性质;另一方面,在预测值的置信区间中也包含有参数方差的的估计量 [公式] ;所以,当模型出现异方差性时,参数OLS估计值的变异程度增大,从而造成对Y的预测误差变大,降低预测精度,预测功能失效。

  • 异方差性的检验
    一、检验方法

    1. Park Test
    2. Glejser Test
    3. Spearman’s Rank Correlation Test
    4. Goldfeld-Quandt Test
    5. Breusch-Pagan-Godfrey Test
    6. White’s General Heteroscedasticity Test
    7. Koenker-Bassett Test

    二, statsmodels 中包含的检验方法

    数学建模清风的视频中就提到了两种异方差的检验方法:
    BP检验怀特检验。所以我重点介绍这两种检验的用法(此外,BP检验的使用范围并没有怀特检验的使用范围大,所以我介绍中重点的重点就是怀特检验)


  1. BP检验

    方法:

    import statsmodels.stats.api as sms
    test = sms.het_breuschpagan(results.resid, results.model.exog) # result是训练好的模型
    

    返回值为:Python实现异方差检验(statsmodels)_第3张图片
    2.怀特检验

    statsmodels中的怀特检验让我找了很长时间,居然没有和BP检验放在一块,而且没有demo,后来仿照BP检验终于把怀特检验跑起来了

    from statsmodels.stats.diagnostic import het_white
    het_white(lm.resid, lm.model.exog)  # lm是模型
    

    此外,下面的接口也可以使用(和上方BP检验类似)

    import statsmodels.stats.api as sms
    sms.het_white(lm.resid, lm.model.exog)  # lm为模型
    

    附上返回值Python实现异方差检验(statsmodels)_第4张图片
    此外,根据清风的说法,我们日常检验最好用怀特检验。

你可能感兴趣的:(数学建模与Python,笔记,python,线性代数)