模型的显著性检验是指构成因变量线性组合是否有效,即整个模型中是否至少存在一个自变量能够真正影响到因变量的波动。该检验是用来衡量模型的整体效应。回归系数的显著性检验是为了说明单个自变量在模型中是否有效,即自变量对因变量是否具有重要意义。这种检验则是出于对单个变量的肯定与否。
模型的显著性检验和回归系数的显著性检验分别使用统计学中的F检验法和t检验法,接下来将介绍有关F检验和t检验的理论知识和实践操作。

1. 模型的显著性检验——F检验

在统计学中,有关假设检验的问题,都有一套成熟的步骤。首先来看一下如何应用F检验法完成模型的显著性检验,具体的检验步骤如下:
(1)提出问题的原假设和备择假设。
(2)在原假设的条件下,构造统计量F。
(3)根据样本信息,计算统计量的值。
(4)对比统计量的值和理论F分布的值,如果计算的统计量值超过理论的值,则拒绝原假设,否则需接受原假设。

下面将按照上述四个步骤对构造的多元线性回归模型进行F检验,进一步确定该模型是否可用,详细操作步骤如下:
步骤一:提出假设

H0为原假设,该假设认为模型的所有偏回归系数全为0,即认为没有一个自变量可以构成因变量的线性组合;
H1为备择假设,正好是原假设的对立面,即p个自变量中,至少有一个变量可以构成因变量的线性组合。
就F检验而言,研究者往往是更加希望通过数据来推翻原假设H0,而接受备择假设H1的结论。
步骤二:构造统计量
为了使读者理解F统计量的构造过程,可以先观看下图,然后掌握总的离差平方和、回归离差平方和与误差平方和的概念与差异。



如上公式所示,公式中:
ESS称为误差平方和,衡量的是因变量的实际值与预测值之间的离差平方和,会随着模型的变化而变动(因为模型的变化会导致预测值的变动);
RSS回归离差平方和,衡量的是因变量的预测值与实际均值之间的离差平方和,同样会随着模型的变化而变动;
TSS总的离差平方和,衡量的是因变量的值与其均值之间的离差平方和,而其值并不会随模型的变化而变动,即它是一个固定值。

根据统计计算,这三个离差平方和之间存在这样的等式关系:TSS=ESS+RSS
由于TSS的值不会随模型的变化而变动,因此ESSRSS之间存在严格的负向关系,即ESS的降低会导致RSS的增加。正如Python数据分析与挖掘——线性回归预测模型所介绍的内容,线性回归模型的参数求解是依据误差平方和最小的理论,如果根据线性回归模型得到的ESS值达到最小,那么对应的RSS值就会达到最大,进而RSSESS的商也会达到最大。
按照这个逻辑,便可以构造F统计量,该统计量可以表示成回归离差平方和RSS与误差平方和ESS的公式:

其中,pn-p-1分别为RSSESS的自由度。模型拟合得越好,ESS就会越小,RSS则会越大,得到的F统计量也就越大。
步骤三:计算统计量
下面按照F统计量的公式,运用Python计算该统计量的值,详细的计算过程可见下方代码:

import numpy as np
import pandas as pd
from sklearn import model_selection
import statsmodels.api as smProfit = pd.read_excel(r'Predict to Profit.xlsx')
train, test = model_selection.train_test_split(Profit, test_size=0.2, random_state=1234)
model = sm.formula.ols('Profit ~ RD_Spend + Administration + Marketing_Spend + C(State)', data=train).fit()
#计算建模数据中因变量的均值
ybar = train.Profit.mean()
#统计变量个数和观测个数
p = model.df_model
n = train.shape[0]
#计算回归离差平方和
RSS = np.sum((model.fittedvalues - ybar) ** 2)
#计算误差平方和
ESS = np.sum(model.resid ** 2)
#计算F统计量的值
F = (RSS/p) / (ESS/(n-p-1))
print('F的统计量的值:', F)

结果:

F的统计量的值: 174.6372171663537

为了验证手工计算的结果是否正确,可以通过fvalue“方法”直接获得模型的F统计量值,如下结果所示,经过对比发现,手工计算的结果与模型自带的F统计量值完全一致:

import pandas as pd
from sklearn import model_selection
import statsmodels.api as smProfit = pd.read_excel(r'Predict to Profit.xlsx')
train, test = model_selection.train_test_split(Profit, test_size=0.2, random_state=1234)
model = sm.formula.ols('Profit ~ RD_Spend + Administration + Marketing_Spend + C(State)', data=train).fit()
print(model.fvalue)

结果:

174.63721715703537

步骤四:对比结果下结论
最后一步所要做的是对比F统计量的值理论F分布的值,如果读者手中有F分布表,可以根据置信水平(0.05)和自由度(5,34)查看对应的分布值。为了简单起见,这里直接调用Python函数计算理论分布值:

import pandas as pd
from sklearn import model_selection
import statsmodels.api as sm
from scipy.stats import fProfit = pd.read_excel(r'Predict to Profit.xlsx')
train, test = model_selection.train_test_split(Profit, test_size=0.2, random_state=1234)
model = sm.formula.ols('Profit ~ RD_Spend + Administration + Marketing_Spend + C(State)', data=train).fit()
#计算建模数据中因变量的均值
ybar = train.Profit.mean()
#统计变量个数和观测个数
p = model.df_model
n = train.shape[0]
#计算F分布的理论值
F_Theroy = f.ppf(q=0.95, dfn=p, dfd=n-p-1)
print('F分布的理论值为:', F_Theroy)

结果:

F分布的理论值为: 2.502635007415366

如上结果所示,在原假设的前提下,计算出来的F统计量值174.64远远大于F分布的理论值2.50,所以应当拒绝原假设,即认为多元线性回归模型是显著的,也就是说回归模型的偏回归系数都不全为0。

回归系数的显著性检验——t检验

模型通过了显著性检验,只能说明关于因变量的线性组合是合理的,但并不能说明每个自变量对因变量都具有显著意义,所以还需要对模型的回归系数做显著性检验。关于系数的显著性检验,需要使用t检验法,构造t统计量。接下来按照模型显著性检验的四个步骤,对偏回归系数进行显著性检验。
步骤一:提出假设

如前文所提,t检验的出发点就是验证每一个自变量是否能够成为影响因变量的重要因素。t检验的原假设是假定第 j 变量的偏回归系数为0,即认为该变量不是因变量的影响因素;而备择假设则是相反的假定,认为第 j 变量是影响因变量的重要因素。
步骤二:构造统计量


步骤三:计算统计量
如果读者对 t 统计量值的计算比较感兴趣,可以使用如上公式完成统计量的计算,这里就不手工计算了。为了方便起见,可以直接调用summary“方法”,输出线性回归模型的各项指标值:

import pandas as pd
from sklearn import model_selection
import statsmodels.api as smProfit = pd.read_excel(r'Predict to Profit.xlsx')
train, test = model_selection.train_test_split(Profit, test_size=0.2, random_state=1234)
model = sm.formula.ols('Profit ~ RD_Spend + Administration + Marketing_Spend + C(State)', data=train).fit()
#有关模型的概览信息
print(model.summary())

结果:

                            OLS Regression Results
==============================================================================
Dep. Variable:                 Profit   R-squared:                       0.964
Model:                            OLS   Adj. R-squared:                  0.958
Method:                 Least Squares   F-statistic:                     174.6
Date:                Sun, 28 Feb 2021   Prob (F-statistic):           9.74e-23
Time:                        12:27:30   Log-Likelihood:                -401.20
No. Observations:                  39   AIC:                             814.4
Df Residuals:                      33   BIC:                             824.4
Df Model:                           5
Covariance Type:            nonrobust
========================================================================================coef    std err          t      P>|t|      [0.025      0.975]
----------------------------------------------------------------------------------------
Intercept             5.858e+04   6690.704      8.756      0.000     4.5e+04    7.22e+04
C(State)[T.Florida]    927.3944   3084.857      0.301      0.766   -5348.795    7203.584
C(State)[T.New York]  -513.4683   3043.160     -0.169      0.867   -6704.824    5677.887
RD_Spend                 0.8035      0.040     19.988      0.000       0.722       0.885
Administration          -0.0578      0.051     -1.133      0.265      -0.162       0.046
Marketing_Spend          0.0138      0.015      0.930      0.359      -0.016       0.044
==============================================================================
Omnibus:                        1.721   Durbin-Watson:                   1.896
Prob(Omnibus):                  0.423   Jarque-Bera (JB):                1.148
Skew:                           0.096   Prob(JB):                        0.563
Kurtosis:                       2.182   Cond. No.                     1.56e+06
==============================================================================Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
[2] The condition number is large, 1.56e+06. This might indicate that there are
strong multicollinearity or other numerical problems.

如上结果所示,模型的概览信息包含三个部分:
第一部分主要是有关模型的信息,例如模型的判决系数R2,用来衡量自变量对因变量的解释程度、模型的 F 统计量值,用来检验模型的显著性、模型的信息准则AICBIC,用来对比模型拟合效果的好坏等;
第二部分主要包含偏回归系数的信息,例如回归系数的估计值Coeft 统计量值、回归系数的置信区间等;
第三部分主要涉及模型误差项 ε 的有关信息,例如用于检验误差项独立性的杜宾-瓦特森统计量Durbin-Watson、用于衡量误差项是否服从正态分布的JB统计量以及有关误差项偏度Skew和峰度Kurtosis的计算值等。

步骤四:对比结果下结论
在第二部分的内容中,含有每个偏回归系数的 t 统计量值,它的计算就是由估计值coef和标准误std err的商所得的。同时,每个 t 统计量值都对应了概率值p,用来判别统计量是否显著的直接办法,通常概率值p小于0.05时表示拒绝原假设。从返回的结果可知,只有截距项Intercept和研发成本RD_Spend对应的p值小于0.05,才说明其余变量都没有通过系数的显著性检验,即在模型中这些变量不是影响利润的重要因素。

Python数据分析与挖掘——回归模型的假设检验相关推荐

  1. Python数据分析与挖掘——回归模型的诊断

    当回归模型构建好之后,并不意味着建模过程的结束,还需要进一步对模型进行诊断,目的就是使诊断后的模型更加健壮.统计学家在发明线性回归模型的时候就提出了一些假设前提,只有在满足这些假设前提的情况下,所得的 ...

  2. Python数据分析与挖掘——线性回归预测模型

    线性回归模型属于经典的统计学模型,该模型的应用场景是根据已 知的变量(自变量)来预测某个连续的数值变量(因变量).例如,餐 厅根据每天的营业数据(包括菜谱价格.就餐人数.预定人数.特价菜 折扣等)预测 ...

  3. 《Python数据分析与挖掘实战》第10章(下)——DNN2 筛选得“候选洗浴事件”3 构建模型

    本文是基于<Python数据分析与挖掘实战>的实战部分的第10章的数据--<家用电器用户行为分析与事件识别> 做的分析. 接着前一篇文章的内容,本篇博文重点是处理用水事件中的属 ...

  4. 从零开始学python数据分析-从零开始学Python数据分析与挖掘 PDF 下载

    资料目录: 目 录第1章 数据分析与挖掘概述 11.1 什么是数据分析和挖掘 11.2 数据分析与挖掘的应用领域 21.2.1 电商领域--发现破坏规则的"害群之马" 21.2.2 ...

  5. 从零开始学python数据分析与挖掘

    目   录 第1章  数据分析与挖掘概述 1.1  什么是数据分析和挖掘 1.2  数据分析与挖掘的应用领域 1.2.1  电商领域--发现破坏规则的"害群之马" 1.2.2  交 ...

  6. 从零开始学python数据分析-从零开始学Python数据分析与挖掘 PDF 扫描版

    给大家带来的一篇关于数据挖掘相关的电子书资源,介绍了关于Python.数据分析.数据挖掘方面的内容,本书是由清华大学出版社出版,格式为PDF,资源大小67.8 MB,刘顺祥编写,目前豆瓣.亚马逊.当当 ...

  7. 【001】python数据分析与挖掘

    python数据分析与挖掘概览(by一颗酵母​​​​) python基础     数据结构         字符串的构造和应用         列表的创建和使用         元祖与列表的区别    ...

  8. Python数据分析和挖掘之入门理论+实操

    Python数据分析和挖掘听课笔记 1.集中趋势.离中趋势 2.数据分布 3.抽样理论 代码实现 4.数据分类 5.单属性分析 分析类别详解 实例运用 np.histogram函数 简单对比分析操作 ...

  9. 董老师又双叒叕送书啦,8本《Python数据分析、挖掘与可视化(慕课版)》

    活动详情: 在本文文末留言,留言获得点赞. 自本文推送之时活动立即生效,5月23日21:00结束,获赞最多的前8条留言,每人获赠一本书. 5月23日21:01在本文文末置顶留言公布获奖名单. 获奖朋友 ...

  10. Python数据分析与挖掘实战期末考复习(抱佛脚啦)

    期末三天赛高考我真的会谢,三天学完数据挖掘--真的很极限了的. 课本是那本绿色的Python数据分析与挖掘实战(第2版),作者张良均- 图片来自老师给的ppt,以下内容是我自己总结的,自己复习用,覆盖 ...

最新文章

  1. python画图三维-对python mayavi三维绘图的实现详解
  2. c#中调用Excel
  3. BZOJ-2298|区间dp|线段树
  4. [转] 爱情的隐式马尔可夫模型(Love in the Hidden Markov Model)
  5. fg jobs bg
  6. 通信原理实验(〇):音频信号的播放蒙特卡洛模拟
  7. Text Classification with BERT using Transformers for long text inputs
  8. ie工具internet选项安全自定义级别java_activex控件被禁止怎么办
  9. python安装setup.py命令_python安装模块如何通过setup.py安装(超简单)
  10. c51单片机时钟c语言程序设计,AT89C51单片机为核心的时钟电路的程序设计
  11. 驱动概念(uboot命令)
  12. Linux系统:基本开发工具
  13. Windows 11彻底禁用IE浏览器后,银行网银系统完全解决方案!
  14. U盘启动盘 U盘安装Win10系统图文教程
  15. 跟王佩丰学习VBA-纯代码(1-8讲)
  16. Spring-Cache
  17. 英文标点符号unicode
  18. 神经网络中的反向传播
  19. html距离某天过去的过久,很久很久之后的某天,我真的放下了!
  20. 闭环控制[Python]

热门文章

  1. Java面向对象练习题之银行卡类和用户类
  2. Android 桌面小组件 AppWidgetProvider
  3. 马来西亚计算机科学与工程大学,一分钟了解世界名校马来西亚电脑科学与工程大学...
  4. < span >标签的使用
  5. 麻省理工十亿美元计算机学院,麻省理工学院10亿美元打造全新计算机科学学院,让所有学科的研究人员都能接触到最新的计算科学...
  6. 漫谈“中间件”与国产化【转】
  7. MySQL按年龄段查询
  8. 出现—passwd:Authentication token manipulation error—错误的解决办法
  9. Python+OpenCV中的Shi-Tomasi角点检测实现(附代码)
  10. shell脚本实战之坦克大战小游戏