【Python计量】参数假设检验
文章目录
- 一、假设检验
- 1.1 原假设和备择假设
- 1.2 单边检验
- 1.3 双边检验
- 1.4 练习
- 二、案例:单边右侧检验
- 1.1 比较t统计量和临界值大小
- 1.2 比较p值和显著性水平大小
- 三、案例:单边左侧检验
- 1.1 比较t统计量和临界值大小
- 1.2 比较p值和显著性水平大小
- 四、案例:双边检验
- 1.1 比较t统计量和临界值大小
- 1.2 比较p值和显著性水平大小
- 1.2 调用t_test()进行t检验
- 五、案例:对各变量回归系数进行t检验,假设值不为0
- 1.1 比较t统计量和临界值大小
- 1.2 比较p值和显著性水平大小
在本文,我们学习变量的显著性检验(t检验)。
对于多元线性回归模型,方程的总体线性关系是显著的,并不能说明每个解释变量对被解释变量的影响是显著的,因此,必须对每个解释变量进行显著性检验,以决定是否作为解释变量被保留在模型中。如果某个变量对被解释变量的影响并不显著,应该将其剔除,以建立更简单的模型。变量显著性检验应用最为普遍的是t检验。
一、假设检验
假设检验(hypothesis test)是利用样本信息判断假设是否成立的过程,它是先对总体参数提出某种假设,然后利用样本信息判断假设是否成立。
1.1 原假设和备择假设
原假设:研究者想收集证据予以反对的假设,也称零假设,用H0H_0H0表示。
备择假设:研究者想收集证据予以支持的假设,也称研究假设,用H1H_1H1表示。
1.2 单边检验
如果备择假设具有特定方向,并含有“>” 或 “<” 的假设,称为单侧检验或单边检验。
(1)单边右侧检验:拒绝域在分布的右侧尾部
单侧检验:H0:μ≤μ0,H1:μ>μ0H_0:\mu \leq \mu_0,H_1:\mu> \mu_0H0:μ≤μ0,H1:μ>μ0,或者:H0:μ=μ0,H1:μ>μ0H_0:\mu = \mu_0,H_1:\mu> \mu_0H0:μ=μ0,H1:μ>μ0
给定一个显著性水平α\alphaα,得到临界值tα(n−k−1)t_{\alpha}(n-k-1)tα(n−k−1),若t>tα(n−k−1)t>t_{\alpha}(n-k-1)t>tα(n−k−1),则拒绝原假设。
(2)单边左侧检验:拒绝域在分布的左侧尾部
单侧检验:H0:μ≥μ0,H1:μ<μ0H_0:\mu \geq \mu_0,H_1:\mu< \mu_0H0:μ≥μ0,H1:μ<μ0,或者:H0:μ=μ0,H1:μ<μ0H_0:\mu = \mu_0,H_1:\mu< \mu_0H0:μ=μ0,H1:μ<μ0
给定一个显著性水平α\alphaα,得到临界值tα(n−k−1)t_{\alpha}(n-k-1)tα(n−k−1),若t<−tα(n−k−1)t<-t_{\alpha}(n-k-1)t<−tα(n−k−1),则拒绝原假设。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k5KlHGEb-1659423356285)(https://files.mdnice.com/user/29206/8669d2fe-530f-45ae-b9fe-004e33499e0a.png)]
1.3 双边检验
如果备择假设没有特定的方向,只含有“≠”的假设,称为双侧检验或双边检验。
双侧检验:H0:μ=μ0,H1:μ≠μ0H_0:\mu = \mu_0,H_1:\mu \neq \mu_0H0:μ=μ0,H1:μ=μ0
给定一个显著性水平α\alphaα,得到临界值tα2(n−k−1)t_{\frac{\alpha}{2}}(n-k-1)t2α(n−k−1),若∣t∣>tα2(n−k−1)|t|>t_{\frac{\alpha}{2}}(n-k-1)∣t∣>t2α(n−k−1),则拒绝原假设。
1.4 练习
一家研究机构估计,某城市中家庭拥有汽车的比率超过30%。为验证这一估计是否正确,该研究机构随机抽取了一个样本进行检验。试陈述和书写用于检验的原假设和备择假设。
分析一下:设该城市中家庭拥有汽车的比率真值是y。显然,研究者想收集证据予以支持的假设是 “ 该城市中家庭拥有汽车的比率超过30% ” ,因此建立的原假设和备择假设可以书写为:
H0:y = 30% (或 y ≤ 30%)
H1:y > 30%
二、案例:单边右侧检验
我们以伍德里奇《计量经济学导论:现代方法》的“第4章 多元回归分析:推断”的案例4.1为例,利用WAGE1中526个工人的观测数据,研究其工资和受教育程度、工作经验和任职时长的关系。构建多元线性回归模型如下:
log(wage)=β0+β1educ+β2exper+β3tenure+ulog(wage)=\beta_0+\beta_1educ+\beta_2exper+\beta_3tenure+u log(wage)=β0+β1educ+β2exper+β3tenure+u
- log(wage):工资的对数,也记作lwage
- educ:受教育程度
- exper:工作经验
- tenure:任职时长
构建模型代码如下:
import wooldridge as woo
import statsmodels.formula.api as smf
from scipy import statswage1 = woo.dataWoo('wage1')#建立回归模型:
reg = smf.ols(formula='lwage ~ educ + exper + tenure', data = wage1)
results = reg.fit()
print(results.summary())
模型回归结果如下:
log(wage)^=0.2844+0.0920educ+0.0041exper+0.0221tenure+u\widehat{log(wage)}=0.2844+0.0920educ+0.0041exper+0.0221tenure+u log(wage)=0.2844+0.0920educ+0.0041exper+0.0221tenure+u
工作经历exper的斜率系数为0.0041,本例将进一步检验该系数是否为0。
采用单侧备择建设检验方法,即:H0:βexper=0,H1:βexper>0H_0:\beta_{exper} = 0,H_1:\beta_{exper}> 0H0:βexper=0,H1:βexper>0
1.1 比较t统计量和临界值大小
代码如下:
#1.计算样本量
n = len(wage1)
#2.计算自由度
df = n-3-1 #n为计算的样本量,3为自变量个数
#3.计算t统计量
t_exper = results.params['exper']/ results.bse['exper'] #params获得系数,bse获得系数标准误
#t_exper = results.tvalues['exper'] #tvalues直接获得t统计量
#4.计算拒绝临界值
a = 0.05 #显著性水平为5%
c = stats.t.ppf(1-a,df)
#5.比较t统计量和临界值大小
if t_exper > c:print('拒绝原假设,exper的回归系数显著大于0')
else:print('不能拒绝原假设,exper不显著')
本例中,t统计量计算结果为2.39,拒绝临界值为1.648,t统计量大于拒绝临界值,所以拒绝原假设,exper系数显著大于0。
1.2 比较p值和显著性水平大小
我们也可以采用p值的方法。
#1.计算样本量
n = len(wage1)
#2.计算自由度
df = n-3-1 #n为计算的样本量,3为自变量个数
#3.计算t统计量
t_exper = results.params['exper']/ results.bse['exper'] #params获得系数,bse获得系数标准误
#t_exper = results.tvalues['exper'] #tvalues直接获得t统计量
#4.计算p值
pval = stats.t.cdf(-abs(t_exper), df)
#pval = 1-stats.t.cdf(abs(t_exper), df)
#5.比较p和显著性水平大小
a = 0.05 #显著性水平为5%
if pval < a:print('拒绝原假设,exper的回归系数显著大于0')
else:print('不能拒绝原假设,exper不显著')
p值为0.0086,小于5%的显著性水平,因此拒绝原假设。
三、案例:单边左侧检验
我们以伍德里奇《计量经济学导论:现代方法》的“第4章 多元回归分析:推断”的案例4.2为例,利用MEAP93中美国学生数学成绩相关的数据,研究标准化数学成绩的影响因素,包括教师年薪、注册学生人数和配备教师数量。构建多元线性回归模型如下:
math10=β0+β1totcomp+β2staff+β3enroll+umath10=\beta_0+\beta_1totcomp+\beta_2staff+\beta_3enroll+u math10=β0+β1totcomp+β2staff+β3enroll+u
- math10:标准化十分制数学测验成绩
- totcomp:平均教师年薪
- staff:每千名学生配备教师数量
- enroll:注册学生人数
构建模型代码如下:
import wooldridge as woo
import statsmodels.formula.api as smf
from scipy import statsmeap93 = woo.dataWoo('meap93')#建立回归模型:
reg = smf.ols(formula='math10 ~ totcomp + staff + enroll', data = meap93)
results = reg.fit()
print(results.summary())
模型回归结果如下:
math10^=2.2740+0.0005totcomp+0.0479staff−0.0002enroll\widehat{math10}=2.2740+0.0005totcomp+0.0479staff-0.0002enroll math10=2.2740+0.0005totcomp+0.0479staff−0.0002enroll
enroll的回归系数为-0.0002,本例将进一步检验该系数是否为0。
采用单侧备择建设检验方法,即:H0:βenroll=0,H1:βenroll<0H_0:\beta_{enroll} = 0,H_1:\beta_{enroll}< 0H0:βenroll=0,H1:βenroll<0
1.1 比较t统计量和临界值大小
代码如下:
#1.计算样本量
n = len(meap93)
#2.计算自由度
df = n-3-1 #n为计算的样本量,3为自变量个数
#3.计算t统计量
t_enroll = results.tvalues['enroll'] #tvalues直接获得t统计量
#4.计算拒绝临界值
a = 0.05 #显著性水平为5%
c = stats.t.ppf(a,df)
#4.比较t统计量和临界值大小
if t_enroll < c:print('拒绝原假设,enroll的回归系数显著小于0')
else:print('不能拒绝原假设,enroll不显著')
enroll变量的t统计量为-0.91,而在5%显著性水平下的t分布的拒绝临界值是-1.65,t统计量大于临界值,所以不能拒绝原假设,enroll变量在5%的显著性水平下不是显著的。
1.2 比较p值和显著性水平大小
#1.计算样本量
n = len(meap93)
#2.计算自由度
df = n-3-1 #n为计算的样本量,3为自变量个数
#3.计算t统计量
t_enroll = results.tvalues['enroll'] #tvalues直接获得t统计量
#4.计算p值
pval = stats.t.cdf(-abs(t_enroll), df)
#pval = 1-stats.t.cdf(abs(t_enroll), df)
#5.比较p和显著性水平大小
a = 0.05 #显著性水平为5%
if pval < a:print('拒绝原假设,enroll的回归系数显著大于0')
else:print('不能拒绝原假设,enroll不显著')
p值为0.18,大于5%的显著性水平,因此不能拒绝原假设。
四、案例:双边检验
我们以伍德里奇《计量经济学导论:现代方法》的“第4章 多元回归分析:推断”的案例4.3为例,利用GPA1数据,研究大学成绩的影响因素,包括高中成绩、每周缺课次数和大学能力测验分数。构建多元线性回归模型如下:
colGPA=β0+β1hsGPA+β2ACT+β3skipped+ucolGPA=\beta_0+\beta_1hsGPA+\beta_2ACT+\beta_3skipped+u colGPA=β0+β1hsGPA+β2ACT+β3skipped+u
- colGPA:大学成绩
- hsGPA:高中成绩
- ACT:大学能力测验分数
- skipped:每周缺课次数
构建模型代码如下:
import wooldridge as woo
import statsmodels.formula.api as smf
from scipy import statsgpa1 = woo.dataWoo('gpa1')#建立回归模型:
reg = smf.ols(formula='colGPA ~ hsGPA + ACT + skipped', data = gpa1)
results = reg.fit()
print(results.summary())
模型回归结果如下:
colGPA^=1.3896+0.4118hsGPA+0.0147ACT−0.0831skipped\widehat{colGPA}=1.3896+0.4118hsGPA+0.0147ACT-0.0831skipped colGPA=1.3896+0.4118hsGPA+0.0147ACT−0.0831skipped
本例检验系数是否等于0。
采用双侧备择建设检验方法,即:H0:βi=0,H1:βi≠0H_0:\beta_i = 0,H_1:\beta_i\neq 0H0:βi=0,H1:βi=0
1.1 比较t统计量和临界值大小
#1.计算样本量
n = len(gpa1)
#2.计算自由度
df = n-3-1 #n为计算的样本量,3为自变量个数
#3.计算t统计量
t_values = results.tvalues #tvalues直接获得t统计量
#4.计算在显著性水平为5%的情况下的t分布双侧检验拒绝临界值
a = 0.05 #显著性水平为5%
c = stats.t.ppf(1-a/2,df) #右侧临界值
#4.比较t统计量和临界值大小
print(f't统计量为:\n{t_values}')
print(f'左侧临界值:{-c},右侧临界值:{c}')
for i in range(len(t_values)-1):if abs(t_values[i+1]) > c:print(f'拒绝原假设,{t_values.index[i+1]}的回归系数显著不等于0')else:print(f'不能拒绝原假设,{t_values.index[i+1]}不显著')
结果为:
t统计量为:
Intercept 4.191039
hsGPA 4.396260
ACT 1.393319
skipped -3.196840
dtype: float64
左侧临界值:-1.977431212292894,右侧临界值:1.9774312122928936
拒绝原假设,hsGPA的回归系数显著不等于0
不能拒绝原假设,ACT不显著
拒绝原假设,skipped的回归系数显著不等于0
根据计算,hsGPA的t统计量为4.40,远大于右侧临界值1.98,因此是显著的;ACT的t统计量为为1.39,小于右侧临界值1.98,在统计上不显著;skipped的t统计量为-3.2,小于左侧临界值-1.98,或者说其绝对值大于右侧临界值1.98,因此是显著的。
1.2 比较p值和显著性水平大小
我们也可以采用p值的方法。
#1.计算样本量
n = len(gpa1)
#2.计算自由度
df = n-3-1 #n为计算的样本量,3为自变量个数
#3.计算t统计量
t_values = results.tvalues #tvalues直接获得t统计量
#4.计算p值
pval = 2*stats.t.cdf(-abs(t_values), df) #双侧检验
#pval = 2*(1-stats.t.cdf(abs(t_values), df))
#5.比较p和显著性水平大小
a = 0.05 #显著性水平为5%
for i in range(len(t_values)-1):if pval[i+1] < a:print(f'拒绝原假设,{t_values.index[i+1]}的回归系数显著不等于0')else:print(f'不能拒绝原假设,{t_values.index[i+1]}不显著')
1.2 调用t_test()进行t检验
除了自己手动进行t检验,我们可以调用results.t_test()方法直接进行t检验,该方法只能进行双侧检验。
hypotheses ='hsGPA =0,ACT=0,skipped =0'
t_test = results.t_test(hypotheses)
print(t_test)
结果如下:
Test for Constraints
==============================================================================coef std err t P>|t| [0.025 0.975]
------------------------------------------------------------------------------
c0 0.4118 0.094 4.396 0.000 0.227 0.597
c1 0.0147 0.011 1.393 0.166 -0.006 0.036
c2 -0.0831 0.026 -3.197 0.002 -0.135 -0.032
==============================================================================
五、案例:对各变量回归系数进行t检验,假设值不为0
尽管:H0:βi=0H_0:\beta_i = 0H0:βi=0是最常见的假设,但有时候我们也想检验$\beta_i $是否等于其他某个给定的常数。比如如果我们研究hsGPA对colGPA的回归系数是否大于0.4,我们的原假设和备择假设为:
H0:βhsGPA=0.4,H1:βhsGPA>0.4H_0:\beta_{hsGPA}= 0.4,H_1:\beta_{hsGPA}> 0.4 H0:βhsGPA=0.4,H1:βhsGPA>0.4
results.tvalues返回的是原假设为系数等于0的t统计量,当原假设系数等于其他常数,需要通过公式计算t统计量,公式如下:
t统计量=估计值−假设值标准误t统计量=\frac{估计值-假设值}{标准误} t统计量=标准误估计值−假设值
1.1 比较t统计量和临界值大小
代码如下:
#1.计算样本量
n = len(gpa1)
#2.计算自由度
df = n-3-1 #n为计算的样本量,3为自变量个数
#3.计算t统计量
t_hsGPA = (results.params['hsGPA']-0.4)/ results.bse['hsGPA'] #params获得系数,bse获得系数标准误
#4.计算拒绝临界值
a = 0.05 #显著性水平为5%
c = stats.t.ppf(1-a,df)
#4.比较t统计量和临界值大小
if t_hsGPA > c:print('拒绝原假设,hsGPA的回归系数显著大于0.4')
else:print('不能拒绝原假设,hsGPA的回归系数大于0.4是不显著的')
结果为:
不能拒绝原假设,hsGPA的回归系数大于0.4是不显著的
我们计算得到t统计量为0.126,而t分布在5%显著性水平下的双侧临界值为1.66,t统计量小于临界值,所以不能拒绝原假设,即hsGPA对colGPA的回归系数大于0.4是不显著的。
1.2 比较p值和显著性水平大小
代码如下:
#1.计算样本量
n = len(gpa1)
#2.计算自由度
df = n-3-1 #n为计算的样本量,3为自变量个数
#3.计算t统计量
t_hsGPA = (results.params['hsGPA']-0.4)/ results.bse['hsGPA'] #params获得系数,bse获得系数标准误
#4.计算p值
pval = stats.t.cdf(-abs(t_hsGPA), df)
#pval = 1-stats.t.cdf(t_hsGPA), df)
#5.比较p和显著性水平大小
a = 0.05 #显著性水平为5%
if pval < a:print('拒绝原假设,hsGPA的回归系数显著大于0.4')
else:print('不能拒绝原假设,hsGPA的回归系数大于0.4是不显著的')
【Python计量】参数假设检验相关推荐
- python函数参数*arg和**kwargs分别代表什么?
python函数参数*arg和**kwargs分别代表什么? 注意: 注意:参数arg.*args.**kwargs三个参数的位置必须是一定的.必须是(arg,*args,**kwargs)这个顺序, ...
- Python函数参数的五种类型
之前项目需求,需要通过反射获取函数的参数,python中可以通过函数签名(signature)来实现. 首先需要了解函数参数的类型,Python的参数类型一共有5种:POSITIONAL_OR_KEY ...
- 注意python函数参数的可变变量的传递
1 def function(p): 2 p.append(4) 3 return 4 5 a = [1,2,3] 6 function(a) 7 8 print(a) --> ...
- python函数参数定义不合法_下列哪种函式参数定义不合法?
python 函数参数定义有四类: 1,必选参数:调用函数时候必须赋值的参数. a,须以正确的顺序传入函数 b,调用时的数量必须和声明时的一样 def exa(x): return x #b作为参数进 ...
- 我的R之路:参数假设检验
1 介绍 假设检验是用来判断样本与样本,样本与总体的差异是由抽样误差引起还是本质差别造成的统计判断方法. 其基本原理先对总体特征作出某种假设,然后通过抽样研究的统计推理,对此假设应该被拒绝还是接受作出 ...
- python 可变参数
python 可变参数 def add1(*data):sum = 0for i in data:sum = sum + ireturn sumprint( add1(1,2,3,4,5) )prin ...
- python 函数参数前面两个星号_Python中参数前面一个星号两个星号(*参数,**参数)起什么作用呢?...
摘要: 下文讲述Python中参数前面一个星号两个星号的功能分享,如下所示: 在Python语言中,我们经常看见参数前面 加上一个星号或两个星号 那么这些写法到底起什么作用呢? 下文将一一道来,如下所 ...
- python 函数参数 (必选参数、默认参数、可选参数、关键字参数)
默认参数增加 (x=None), if x: 能选择是否执行对x的操作 参考文章:python 函数参数(必选参数.默认参数.可选参数.关键字参数)
- Python函数参数学习
Python函数参数笔记(简) --位置参数[必选参数] 指一般参数 --默认参数 指带一个默认值的参数 --可变参数(自动组装成一个tuple) def calc(*num): ...
- python函数参数类型及顺序_python函数参数类型及其顺序
根据inspect模块官文文档中关于函数参数类型的相关说明,python函数参数共有五种类型,按顺序分别为:POSITIONAL_ONLY.POSITIONAL_OR_KEYWORD.VAR_POSI ...
最新文章
- 对称加密、工作模式和填充模式
- 手动创建DataTable并绑定gridview
- Express实现路由分发控制、RESTful API
- linux怎样测试tty,linux – 提示自定义:如何检测何时没有tty
- SpringBoot集成MyBatis-Plus自定义SQL
- git解决error: failed to push some refs to ‘xxx(远程库)‘
- python与java的默认入参(重载)
- 【EOS】EOS环境基础
- Git客户端Mac版:SmartGit
- Android Framework源码阅读计划
- 通过js实现文字合成语音并播报
- 数学分析对计算机有帮助吗,计算机辅助数学分析教学的好处
- MongoDB Bulk write operation error on server duplicate key error问题解决
- Java 获取文件的真实类型,修改后缀名也能识别出来
- Follow your heart (186)---Fab.com和guang.com
- 【新能源】新能源之锂电池产业链梳理
- SVN mac 破解版
- 施努卡:机器人视觉传感器原理(视觉传感器公司)
- win7安装vs2012失败
- linux终端设置为中文
热门文章
- STM32 DMA2D技术
- 微信小程序获取地理位置
- (最全干货分享)渗透测试全流程归纳总结之四
- CentOS安全运维检查命令
- usb3.0速度测试软件,USB3.0传输速度测试 揭秘速度到底是多少
- 如何用计算机名添加的打印机,如何添加打印机,小编教你添加共享打印机的方法...
- mysql数据库授权,备份,恢复_wuli大世界_新浪博客
- 【问题解决】Ubuntu无法进入图形页面,全屏出现OK,而且屏幕不停闪烁
- 将中划线转为驼峰式写法
- 计算机网络技术广告,屏蔽QQ广告和迷你首页广告