本博客根据非常好的excel资料而编写,使用python语言操作,预计使用一周的时间更新完成。需要《非常好的excel资料》word文档,欢迎发邮件给1982500361@qq.com,免费发放。这篇博客对应《非常好的excel资料》里的第3章节。
1.假设检验实验
1.1 单个正态总体均值μ的检验
1.1.1 方差已知时μ的U检验
①题目及数据
外地一良种作物,其1000m2产量(单位:kg)服从N(800, 〖50〗^2),引入本地试种,收获时任取5块地,其1000m2产量分别是800,850,780,900,820(kg),假定引种后1000m2产量X也服从正态分布,试问::
(1)若方差未变,本地平均产量μ与原产地的平均产量μ0=800kg 有无显著变化
(2)本地平均产量μ是否比原产地的平均产量μ0=800kg高.
(3)本地平均产量μ是否比原产地的平均产量μ0=800kg低.
U检验值:(样本平均亩产量-原产地总平均产量)/(总方差/样本数)
可以看出U检验值小于临界值(双侧),所以本地平均产量μ是否比原产地的平均产量μ0=800kg无显著变化
U检验值小于临界值(右侧),所以本地平均产量μ是否比原产地的平均产量μ0=800kg高
U检验值大于临界值(右侧),所以本地平均产量μ是否比原产地的平均产量μ0=800kg低
② 对于(1)问python代码如下:
def VarisknforU(a,m1,mn,stdn,n):
u=(m1-mn)/(stdn/np.sqrt(n))
uall=stats.norm.ppf(1-a/2)
print('u的检验值:',u)
print('临界值(双侧)',uall)
if(u<uall):
print('无显著变化')
else:
print('有显著变化')
结果图
④ 对于(2)问python代码如下:
def VarisknforUright(a,m1,mn,stdn,n):
u=(m1-mn)/(stdn/np.sqrt(n))
uall=stats.norm.ppf(1-a)
print('u的检验值:',u)
print('临界值(右侧)',uall)
if(u<uall):
print('高于')
else:
print('不高于')
结果图
⑤对于(3)问python代码:
def VarisknforUleft(a,m1,mn,stdn,n):
u=(m1-mn)/(stdn/np.sqrt(n))
uall=stats.norm.ppf(a)
print('u的检验值:',u)
print('临界值(左侧)',uall)
if(u<uall):
print('低于')
else:
print('不低于')
结果图
1.1.2 方差未知时t的U检验
①题目:样本的数据为 ,该引擎制造商宣称引擎的平均速度高于250 km/h,请问样本数据在显著性水平为0.025时,是否和他的声明抵触。
② python代码如下
def Varisnoforright(a,m1,mn,stdn,n):
u=(m1-mn)/(stdn/np.sqrt(n))
uall=t.ppf(1-a,n-1)
print('检验值:',u)
print('临界值',uall)
if(u<uall):
print('高于')
else:
print('不高于')
结果图
1.2 两个正态总体参数的假设检验
1.21 方差相等但未知时,求u1-u2的检验
①题目:判别磷肥对玉米产量有无显著影响
实验假设:H_0:u_1=u_2 ,u_(1 )>u_2
因为3.034>1.73 ,所以拒绝原假设,即有显著影响
②python代码
ins321=pd.read_csv('D:\ins321.csv',encoding= 'gbk')
a = ins321['实验区1']
b = ins321['实验区2']
ttest_ind(a,b)
结果图
因为0.0071386<0.05,所以拒绝原假设,即均值差异不显著
1.22 方差1和2已知u_1-u_2的U检测
python代码
import pandas as pd
ins322=pd.read_csv('D:\ins322.csv',encoding='gbk',dtype={'code':int})
ins322
ins3221=ins322['第一组']
ins3222 = ins322['第二组']
m2 = ins3222.mean()
m1 = ins3221.mean()
def U_test3(*args):
import numpy as np
from scipy import stats
tails, mean1, var1, n1, mean2, var2, n2 = [i for i in args]
segma_combine = np.sqrt(var1 / n1 + var2 / n2) # 需要先计算x1-x2的均方,即合并均方
u = abs(mean1 - mean2) / segma_combine
if tails == 2:
p = (1 - stats.norm.cdf(u, 0, 1)) * 2
if tails == 1:
p = 1 - stats.norm.cdf(u, 0, 1)
if p < 0.01:
print('extremely significant!')
elif p < 0.05:
print('significant!')
else:
print('unsignificant!')
print('u_value: %.6f,p_value: %.6f' % (u, p))
return [u, p]
执行代码
U_test3(2, m1,57 , 10, m2, 53, 10)
结果图
1.23 两个正态总体的方差齐性的F检验
0.144119<5.118597,所以拒绝原假设,即方差不齐
python操作如下
0.424569>0.05,所以拒绝原假设
1.3 备注
1、原假设(又称零假设),是假定总体参数未发生变化,备择假设(又称对立假设),是假定总体参数发生变化。
2、因为原假设假定总体参数未发生变化,而备择假设假定总体参数发生了变化,所以,“=”总体在原假设上
3、如果备择假设为总体发生了特定方向的变化,则备择假设去”=”,为双侧方向,假设检验为双侧检验(又称双尾检验);如果备择假设为总体参数沿某一方向发生了变化,则备择假设含有”>”或“<”符号,备择假设为单向,假设检验为单侧检验(又称单尾检验),单侧检验又可进一步分为左侧单尾检验和右侧单尾检验。根据备择假设的表述,假设检验的方向可以区分为:
(a) 备择假设 H1:θ=θ0为双侧假设,相应的假设检验称为双侧检验。
(b) 备择假设 H1:θ<θ0为左向假设,相应的假设检验称为左侧检验。
© 备择假设 H1:θ>θ0 为右侧假设,相应的假设检验称为右侧检验。
4、备择假设是我们想真正检验的假设
上一篇博客:区间估计的练习题
下一篇博客:拟合优度检验