博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
t检验python程序_假设检验原理及假设检验在python的应用
阅读量:6623 次
发布时间:2019-06-25

本文共 4750 字,大约阅读时间需要 15 分钟。

dd993f4eab91b6d19b89928bff698694.png

很多人只知道假设检验的步骤而不知道其中的原理。本文主要讲一下假设检验的原理及在python中的应用,以单样本t检验和配对样本t检验为例。

假设检验的原理

在参数检验的基本原理—小概率原理中,事件发生概率小于0.05,即可认为该事件为小概率事件。小概率事件在一次试验中是基本没可能发生的,如果发生了,那就会让人产生质疑。根据这个原理,假设检验把不能轻易否定的假设作为原假设,把不能轻易肯定的假设作为备择假设。原假设是在一次试验中有大概率发生的事件,而备择假设是在一次试验中基本不可能发生的小概率事件,两者的地位是不对等的。然后通过反证法进行判断。如果备择假设发生了,则拒绝原假设,反之接受原假设。

两类错误

第Ⅰ类错误 : 第Ⅰ类错误又叫弃真错误。是指当原假设为真时,却拒绝原假设的错误。犯第一类错误的概率用α表示。α又称为显著性水平。

第Ⅱ类错误 : 第Ⅱ类错误又叫取伪错误。是指当备择假设为真时,却接受原假设的错误。犯第Ⅱ类错误的概率用β表示。

假设检验又称为显著性检验 : 我们把这种只限制犯第一类错误的概率α,而不考虑犯第二类错误的概率β的统计假设检验问题称为显著性检验。

决策

使用拒绝域决策 :

  1. 设立备择假设和原假设
  2. 选择适当的统计量 :
  • 样本量>30时,使用z统计量,σ未知时用s代替σ(根据弱大数定理)
  • 样本量<30,σ未知,样本统计量近似服从正态分布时,使用t统计量

3.给定显著性水平α(双侧检验时α要除以2),计算出拒绝域

4.根据样本数据计算出检验统计量,通过检验统计量与拒绝域进行比较,当检验统计量取拒绝域中的值时,拒绝原假设

使用P值进行决策 :

  1. 设立备择假设和原假设
  2. 选择适当的统计量
  3. 通过电脑程序计算出P值,P值是由检验统计量的样本观察值得到的原假设可被拒绝的最小显著性水平。P>α 不能拒绝原假设,无显著差异。P<α 拒绝原假设,有显著差异。

置信区间

置信区间是对产生这个样本的总体的参数分布中的某一个未知参数值,以区间形式给出的估计。如置信度为95%的置信区间表示有95%的区间包含总体参数的真值。在假设检验中,置信区间提供了总体均值的区间估计,通过建立置信区间提供估计精度的信息(根据置信区间大小判断,置信区间越窄,精度越高)。

效应量

P值只能判断总体未知特征是否具有统计显著性。若发现研究结果有统计显著性,只能表示其中有效应存在,但不能度量效应的大小。我们要知道的是效应有多大,如果效应很小,统计显著性的结果可能只有理论意义,没有实际意义。样本很小时,即便效应很大,也有可能得不到统计显著性的结果。所以在使用P值的同时,还要用效应量来辅助判断结果的实际意义。

Cohen's d :

如果是单样本,σ已知则用σ,σ未知则用s代替合并标准差。

Cohen's d用于反映效应的大小,d=0.2小效应,d=0.5中效应,d=0.8大效应。

:
,在一元线性回归中,相关系数r实际上是
的平方根。

称为决定系数或判定系数。用于反映自变量与应变量的相关程度。
越接近1,相关程度越高。

在python中的应用

单样本t检验

抽查16只电子元件的寿命,问是否有理由认为元件的平均寿命显著地大于225小时(α=0.05)?

7824c0d7a08b13093b4e227ada6dc806.png
16只元件的寿命(小时)

读取文件&选择适当的参数检验

import pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport seaborn as snsfrom scipy import stats#样本数据集data_ser = pd.Series([    159, 280, 101, 212, 224, 379, 179, 264, 222, 362, 168, 250, 149, 260, 485,    170])#查看数据集分布sns.distplot(data_ser)plt.title('数据集分布')

6e190fc20c07057cc85fba4f6ac53f2c.png

样本近似服从正态分布,使用单样本t检验。

建立假设

H0 : μ≤225,

H1 : μ>225

计算样本的基本描述统计量

data_ser.describe()

eace47193894cab693469d10103b5f6d.png

样本均值=241.50,样本标准差=98.73

单样本t检验

#μpop_mean = 225#样本均值sample_mean = 241.5#标准误差se = stats.sem(data_ser)#t值t = (sample_mean - pop_mean) / se#返回双侧检验的P值t, p_two = stats.ttest_1samp(data_ser, pop_mean)#双侧检验的P值除以2得单侧检验的P值p_one = p_two / 2print('t=' + str(t) + 'tP值=' + str(p_one))#结论if (p_one < alpha):    print('p
<α,拒绝原假设,有理由认为元件的平均寿命显著地大于225小时。')else: print('p>
α,不能拒绝原假设,没有理由认为元件的平均寿命显著地大于225小时。')

fadfc5fcfa1bb04c5db02241ff51a054.png

置信区间

#查表得t临界值t_cv = 1.7531#置信区间下限a = sample_mean - t_cv * se#置信区间上限b = sample_mean + t_cv * seprint('置信水平为95%%的置信区间为(%f,%f)' % (a, b))

b5469a75b3fbf3f4b1dc3840eb153e61.png

效应量

不存在统计显著,没必要计算效应量。

APA格式

描述统计

M=241.50, SD=98.73

假设检验

t(15) = 0.67,P=.257(α=0.05) 右单侧检验

不能拒绝原假设,没有理由认为元件的平均寿命显著地大于225小时。

置信区间

95%置信水平的置信区间[198.23, 284.77]

配对样本t检验

为研究课程辅导效果,学校在辅导前后根据量表对30个学生害怕考试程度进行统计,请问进行课程辅导后,学生对测试的恐惧是否有所下降?

fost1 : 辅导前学生恐惧考试程度 fost2 : 辅导后学生恐惧考试程度

0cbb7e55c3f4abb7d22d1368e20e7bf1.png

读取文件&选择适当的参数检验

import pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport seaborn as snsfrom scipy import stats#读取文件data = pd.read_csv('experim.csv')#差值数据集。配对样本t检验需要差值数据符合正态分布data['差值'] = data['fost1'] - data['fost2']#查看数据集分布sns.distplot(data['差值'])plt.title('差值数据集分布')plt.show()

01a158ce84f95117baa44ef307a2145b.png

由上面的分布图可看出差值样本近似服从正态分布,可以使用两配对样本t检验。

建立假设

H0 : μ1-μ2=0

H1 : μ1-μ2≠0

计算样本的基本描述统计量

data.describe()

604548f1e2e8b2adccaea380e6ac1a66.png

辅导前学生恐惧考试程度样本均值为40.17,样本标准差为5.16

辅导后学生恐惧考试程度样本均值为37.50,样本标准差为5.15

辅导前后样本的均值有一定差异,辅导后学生恐惧考试程度均值小于辅导前学生恐惧考试程度。

数据可视化

#两个样本数据集对比fig = plt.figure(figsize=(20, 10))ax = fig.add_subplot()#绘制柱状图data[['fost1', 'fost2']].plot(kind='bar', ax=ax, color=['#48A0FC', 'lightcoral'])#设置plt.title('辅导前后学生恐惧考试程度柱状图', fontsize=18)plt.legend(['辅导前', '辅导后'], fontsize=15)plt.yticks(fontsize=15)ax.set_xticklabels([    '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14',    '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26',    '27', '28', '29', '30'],                   fontsize=15,                   rotation=0)plt.show()

1abadd84284eb9abfe084e6196e82086.png

皮尔逊相关系数检验

#皮尔逊相关系数检验a, b = stats.pearsonr(data['fost1'], data['fost2'])print('相关系数=' + str(a))print('P值=' + str(b))

6730708d02bbef4830853834dd44976a.png

在显著水平α=0.05下,学生进行辅导前后存在明显的线性变化,辅导前和辅导后的恐惧考试程度的线性相关程度强。

配对样本t检验

alpha = 0.05#返回双侧检验的P值t, p_two = stats.ttest_rel(data['fost1'], data['fost2'])print('t=' + str(t) + 'tP值=' + str(p_two))#结论if p_two < alpha:    print('P
<α,拒绝原假设,辅导前后学生对测试的恐惧有显著差异。')else: print('p>
α,不能拒绝原假设,辅导前后学生对测试的恐惧无显著差异。')

060e3ccdbbf2ce4691e99322ee45dc5d.png

又因为差值样本均值为2.67,可以认为辅导后学生对测试的恐惧有一定程度的降低。

置信区间

t_cv = 2.0452#差值数据集平均值sample_mean = data['差值'].mean()#标准误差se = stats.sem(data['差值'])#置信区间上限a = sample_mean - t_cv * se#置信区间下限b = sample_mean + t_cv * seprint('置信水平为95%%的置信区间为(%f,%f)' % (a, b))

815b6afc67176aa441e005bb23bb6362.png

效应量Cohen's d

con1_mean = data['fost1'].mean()con1_std = data['fost1'].std()con2_mean = data['fost2'].mean()con2_std = data['fost2'].std()n1 = 30n2 = 30#合并标准差计算pooled_s2 = ((n1 - 1) * np.square(con1_std) +             (n2 - 1) * np.square(con2_std)) / (n1 + n2 - 2)pooled_std = np.sqrt(pooled_s2)d = (con1_mean - con2_mean) / pooled_stdprint('d=' + str(d))

415023da9e7d84283971864b2dcb41b4.png

d>0.5,有一定的效应。

APA格式

描述统计

第一组样本数据 : 辅导前学生恐惧考试程度(M=40.17, SD=5.16)

第二组样本数据 : 辅导后学生恐惧考试程度(M=37.50, SD=5.15)

辅导前后样本的均值有一定差异,辅导后学生恐惧考试程度均值小于辅导前学生恐惧考试程度。

假设检验

t(29) = 5.39,P=.000(α=0.05)

拒绝原假设,辅导前后学生对测试的恐惧有显著差异。

置信区间

95%置信水平的置信区间[1.66, 3.68]

效应量

d = 0.52


如有错误,敬请指正。

转载地址:http://okcpo.baihongyu.com/

你可能感兴趣的文章
测试妹子的呐喊:为什么总是收不到推送?
查看>>
linux NFS
查看>>
Android性能优化:手把手带你全面了解 内存泄露 & 解决方案
查看>>
Jquery DataTable基本使用
查看>>
New UWP Community Toolkit
查看>>
JDBC连接数据库(二)
查看>>
leetcode 674. Longest Continuous Increasing Subsequence
查看>>
Extensions in UWP Community Toolkit - SurfaceDialTextbox
查看>>
Golang 语言的单元测试和性能测试(也叫 压力测试)
查看>>
springboot数据库连接池使用策略
查看>>
Java中CAS详解
查看>>
Java线程的学习_线程池
查看>>
Android 虚拟导航挡住应用底部解决方案(屏幕底部的三个按键)
查看>>
工厂函数
查看>>
Java Spring MVC 错误 及 常见问题 总结
查看>>
Linux系统实战项目——sudo日志审计
查看>>
native.js是什么且如何使用
查看>>
Android Application Task Activities的关系
查看>>
浅谈CSS盒子模型
查看>>
实现iFrame自适应高度,原来很简单!
查看>>