【统计学】Student 双边t检验 Python实现假设检验题目 |
您所在的位置:网站首页 › 98g有多重 › 【统计学】Student 双边t检验 Python实现假设检验题目 |
糖厂用自动打包机打包,每包标准重量是100千克。每天开工后需要检验一次打包机工作是否正常。某日开工后测得9包重量(单位:千克)如下: 99.3 98.7 100.5 101.2 98.3 99.7 99.5 102.1 100.5 已知包重服从正态分布,试检验该日打包机工作是否正常(a=0.05)? 用这题演示python实现双边检验的几种方法 import numpy as np from math import * array = [99.3,98.7,100.5,101.2,98.3,99.7,99.5,102.1,100.5] #需要对比样本与统计总体的平均值 T_mean=100 x_mean=np.mean(array) x_std=np.std(array,ddof=1)样本量较小,总体标准差未知,因此使用t检验量 t=abs(x_mean-T_mean)/(x_std/sqrt(len(array)))这里检验统计量t值计算如下 t = (样本均值 - 总体均值)/(样本标准差/sqrt(样本个数))【小样本且总体标准差未知的情况下】 print("x_mean:{:.5} ,x_std:{:.5} ,t:{:.5}".format(x_mean,x_std,t))这里我得出的结果是 x_mean:99.978 ,x_std:1.2122 ,t:0.054996接下来可以选择 计算出标准t值进行比较计算出p值直接人工查表标准t 计算标准t值计算临界值: scipy.stats.t.ppf(level_of_confidence, degree_of_freedom) 计算p值计算p值: scipy.stats.t.sf(abs(t_score),df) 或scipy.stats.t.cdf(abs(t_score),df) 左尾或右尾的检验分别用上述的sf和cdf方法,双尾检验需需要适时乘个2(如果t大于0那么就是2t.cdf(abs(t_score),df),如果是t小于零就得2t.sf(t_score,df) 除了使用scipy的stats模块,还可以使用matplotlib.pyplot模块(相当于是用原理计算了 import matplotlib.pyplot as plt s2 = np.random.standard_t(10, size=100000) h = plt.hist(s, bins=100, density=True) (np.sum(s2>abs(t))+np.sum(s2p: 0.95745#因为这里调用了random库,所以这里p值算出来不是固定的,会随着数组内容的随机变化而变化综合1、2就可以有如下代码 print("critical t value:{}\np_value(calculated by function):{}".format(stats.t.ppf(0.95,9),2*stats.t.cdf(t,df=len(array)-1))) >critical t value:1.8331129326536335 p_value(calculated by function):0.9574902045208937人工查表 t分布临界值表如下:axis=0 level of freedom; axis =1 df 分布临界值表如何用python推导 Python假设检验 计算各种临界值和p值的表 Python假设检验 常用函数的介绍讲解 最后可以用这篇里的示例训练一下:假设检验的Python实现 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |