首页 > 编程知识 正文

python重复测量方差分析,Python做方差分析

时间:2023-05-05 19:37:45 阅读:276888 作者:2232

首页

专栏

python

文章详情

0

统计科学之讲讲异方差的检验

典雅的白开水发布于 今天 10:13

我们前面讲了异方差,也讲了怎么用图示法来判断是否有异方差,这一篇来讲讲怎么用统计的方法来判断有没有异方差。

关于检验异方差的统计方法有很多,我们这一节只讲比较普遍且比较常用的white test(怀特检验)。

假设现在我们做了如下的回归方程:

如果要用怀特检验检验上述方程有没有异方差,主要分以下几个步骤:

1.step1:

对方程进行普通的ols估计,可以得到方程的残差ui。

2.step2:

以第一步估计估计出来的残差作为y,构造如下方程:

上面构造的方程看起来比较复杂,但主要是由三部分组成:原方程的解释变量、解释变量的平方、解释变量之间的交互项。

方程构造好以后对方程进行估计求解。

3.step3:

再回想一下什么是异方差,就是残差项与某一个或某一些x之间有相关性是不是。

那如果step2中的方程中每一个系数都为0,是不是说明残差与任意x都是无关的,我们把这个称为原假设;反之,只要有一个系数不为0,就说明残差与x有关,也就是存在异方差,我们把这个称为备择假设。

在原假设成立的情况下,可以得知step2中方程的R^2乘以样本容量n服从自由度等于step2回归方程中的变量数的卡方分布。

在服从卡方分布的前提下就可以根据与卡方分布的临界值来比较来判断原假设是否成立。

4.step4:

如果计算出来的nR^2显著高于选定显著性水平(p_value值)的卡方临界值,则需要拒绝原假设,也就是方程存在异方差。

如果存在异方差时,还可以查看step2方程的估计结果中每个变量的显著性情况,进而确定是哪个变量引起的异方差。

需要注意的是,如果模型中包含多个变量时,此时引进多个变量的交互项会大大降低方程的自由度,所以看情况可以选择不加。

当然,以上过程也不需要我们自己去实现,Python也是有现成的包可以调用:

statsmodels.stats.diagnostic.spec_white(resid,exog)

resid表示原方程的残差,exog表示要构step2中的方程形式。通过上面的函数最后会输出卡方值、对应的p_value以及自由度。

关于异方差更多的内容,可以点击文章开头的专辑部分查看。

mysqlpython数据挖掘数据库网页爬虫

阅读 35发布于 今天 10:13

赞收藏

分享

本作品系原创,采用《署名-非商业性使用-禁止演绎 4.0 国际》许可协议

专一的西装的数据分析之路

公众号:《专一的西装的数据分析之路》,分享数据分析相关的内容。

关注专栏

典雅的白开水

公众号:《专一的西装的数据分析之路》,分享数据分析相关的内容。

1声望

0粉丝

关注作者

0 条评论

得票时间

提交评论

典雅的白开水

公众号:《专一的西装的数据分析之路》,分享数据分析相关的内容。

1声望

0粉丝

关注作者

宣传栏

我们前面讲了异方差,也讲了怎么用图示法来判断是否有异方差,这一篇来讲讲怎么用统计的方法来判断有没有异方差。

关于检验异方差的统计方法有很多,我们这一节只讲比较普遍且比较常用的white test(怀特检验)。

假设现在我们做了如下的回归方程:

如果要用怀特检验检验上述方程有没有异方差,主要分以下几个步骤:

1.step1:

对方程进行普通的ols估计,可以得到方程的残差ui。

2.step2:

以第一步估计估计出来的残差作为y,构造如下方程:

上面构造的方程看起来比较复杂,但主要是由三部分组成:原方程的解释变量、解释变量的平方、解释变量之间的交互项。

方程构造好以后对方程进行估计求解。

3.step3:

再回想一下什么是异方差,就是残差项与某一个或某一些x之间有相关性是不是。

那如果step2中的方程中每一个系数都为0,是不是说明残差与任意x都是无关的,我们把这个称为原假设;反之,只要有一个系数不为0,就说明残差与x有关,也就是存在异方差,我们把这个称为备择假设。

在原假设成立的情况下,可以得知step2中方程的R^2乘以样本容量n服从自由度等于step2回归方程中的变量数的卡方分布。

在服从卡方分布的前提下就可以根据与卡方分布的临界值来比较来判断原假设是否成立。

4.step4:

如果计算出来的nR^2显著高于选定显著性水平(p_value值)的卡方临界值,则需要拒绝原假设,也就是方程存在异方差。

如果存在异方差时,还可以查看step2方程的估计结果中每个变量的显著性情况,进而确定是哪个变量引起的异方差。

需要注意的是,如果模型中包含多个变量时,此时引进多个变量的交互项会大大降低方程的自由度,所以看情况可以选择不加。

当然,以上过程也不需要我们自己去实现,Python也是有现成的包可以调用:

statsmodels.stats.diagnostic.spec_white(resid,exog)

resid表示原方程的残差,exog表示要构step2中的方程形式。通过上面的函数最后会输出卡方值、对应的p_value以及自由度。

关于异方差更多的内容,可以点击文章开头的专辑部分查看。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。