概率统计Python计算:双正态总体方差比双侧假设的F检验

在这里插入图片描述
对两个独立的正态总体 X X X~ N ( μ 1 , σ 1 2 ) N(\mu_1,\sigma_1^2) N(μ1,σ12) Y Y Y~ N ( μ 2 , σ 2 2 ) N(\mu_2, \sigma_2^2) N(μ2,σ22),检验双侧假设
H 0 : σ 1 2 / σ 2 2 = 1 , H 1 : σ 1 2 / σ 2 2 ≠ 1 H_0:\sigma_1^2/\sigma_2^2=1,H_1:\sigma_1^2/\sigma_2^2\not=1 H0:σ12/σ22=1,H1:σ12/σ22=1
检验统计量 S 1 2 S 2 2 \frac{S_1^2}{S_2^2} S22S12~ F ( n 1 − 1 , n 2 − 1 ) F(n_1-1,n_2-1) F(n11,n21)。其中, S 1 2 S_1^2 S12 S 2 2 S_2^2 S22分别为样来自 X X X Y Y Y的样本方差, n 1 n_1 n1 n 2 n_2 n2为样本容量。下列代码定义了计算双侧假设 H 0 H_0 H0的p值检验函数。

from scipy.stats import f		#导入f
def ftest2(F, dfn, dfd, alpha):	#双侧检验函数if F>dfd/(dfd-2):			#检验统计量值大于F分布均值p=2*f.sf(F, dfn, dfd)else:						#检验统计量值不超过F分布均值p=2*f.cdf(F, dfn, dfd)return p>=alpha

双侧检验函数ftest2的参数F,dfn,dfd和alpha的意义分别为检验统计量值 1 2 s 2 2 \frac{_1^2}{s_2^2} s2212 F ( n 1 − 1 , n 2 − 1 ) F(n_1-1,n_2-1) F(n11,n21)分布自由度 n 1 − 1 n_1-1 n11 n 2 − 1 n_2-1 n21以及显著水平 α \alpha α。第3~6行的if-else语句根据检验统计量值F位于 F ( n 1 − 1 , n 2 − 1 ) F(n_1-1,n_2-1) F(n11,n21)的均值 n 2 − 1 n 2 − 3 \frac{n_2-1}{n_2-3} n23n21左、右方来计算p值:若F>dfd/(dfd-2)(即 n 2 − 1 n 2 − 3 \frac{n_2-1}{n_2-3} n23n21)p置为2*f.sf(F, dfn, dfd)(第4行),否则p置为2*f.cdf(F, dfn, dfd)(第6行)。
例1比较甲、乙两种安眠药的疗效,将20名患者分成两组,每组10人,服药后延长的随面试间服从正态分布,其数据为
甲: 5.5 , 4.6 , 4.4 , 3.4 , 1.9 , 1.6 , 1.1 , 0.8 , 0.1 , − 0.1 乙: 3.7 , 3.4 , 2.0 , 2.0 , 0.8 , 0.7 , 0 , − 0.1 , − 0.2 , − 1.6 \text{甲:}5.5,4.6,4.4,3.4,1.9,1.6,1.1,0.8,0.1,-0.1\\ \text{乙:}3.7,3.4,2.0,2.0,0.8,0.7,0,-0.1,-0.2,-1.6 甲:5.5,4.6,4.4,3.4,1.9,1.6,1.1,0.8,0.1,0.1乙:3.7,3.4,2.0,2.0,0.8,0.7,0,0.1,0.2,1.6
问在显著水平 α = 0.05 \alpha=0.05 α=0.05下两种药的疗效有无显著差别。
解: 设服用两种药后延长的睡眠时间为 X X X Y Y Y。按题意, X X X~ N ( μ 1 , σ 1 2 ) N(\mu_1, \sigma_1^2) N(μ1,σ12) Y Y Y~ N ( μ 1 , σ 2 2 ) N(\mu_1,\sigma_2^2) N(μ1,σ22)。其中, μ 1 , μ 2 , σ 1 2 , σ 2 2 \mu_1, \mu_2, \sigma_1^2, \sigma_2^2 μ1,μ2,σ12,σ22均未知。为检验推断“两种药无显著差别”需要分别检验 μ 1 \mu_1 μ1 μ 2 \mu_2 μ2有无差别, σ 1 2 \sigma_1^2 σ12 σ 2 2 \sigma_2^2 σ22有无差别。由于检测总体方差比的假设不依赖于总体均值的信息,故先用F方法检测假设
H 0 : σ 1 2 / σ 2 2 = 1 , H 1 : σ 1 2 / σ 2 2 ≠ 1 H_0:\sigma_1^2/\sigma_2^2=1, H_1:\sigma_1^2/\sigma_2^2\not=1 H0:σ12/σ22=1,H1:σ12/σ22=1
然后检再用T方法验假设
H 0 : μ 1 − μ 2 = 0 , H 1 : μ 1 ≠ μ 2 . H_0: \mu_1-\mu_2=0, H_1:\mu_1\not=\mu_2. H0:μ1μ2=0,H1:μ1=μ2.
下列代码完成本例计算。

import numpy as np                              #导入numpy
x=np.array([5.5, 4.6, 4.4, 3.4, 1.9,            #样本数据1.6, 1.1, 0.8, 0.1, -0.1])
y=np.array([3.7, 3.4, 2.0, 2.0, 0.8,            #样本数据0.7, 0, -0.1, -.2, -1.6])
xmean=x.mean()                                  #样本均值
ymean=y.mean()                                  #样本均值
s12=x.var(ddof=1)                               #样本方差
s22=y.var(ddof=1)                               #样本方差
delta=0                                         #总体均值差假设值
n1=x.size                                       #样本容量
n2=y.size                                       #样本容量
alpha=0.05                                      #显著水平
F=s12/s22                                       #检验统计量值
accept=ftest2(F, n1-1, n2-1, alpha)             #双侧假设检验
print('sigma1^2=sigma2^2 is %s.'%accept)
sw=np.sqrt(((n1-1)*s12+(n2-1)*s22)/(n1+n2-2))   #计算sw
T=(xmean-ymean)/(sw*np.sqrt(1/n1+1/n2))         #检验统计量值
accept=ttest2(T, n1+n2-2, alpha)                #双侧假设检验
print('mu1=mu2 is %s.'%accept)

第2~13行按题面设置各项数据。第14行计算检验统计量知 s 1 2 / s 2 2 s_1^2/s_2^2 s12/s22为F,第15行调用ftest2计算方差比双侧假设 H 0 : σ 1 2 / σ 2 2 = 1 H_0:\sigma_1^2/\sigma_2^2=1 H0:σ12/σ22=1的检验。第17~19行调用ttest2函数计算总体均值差假设 H 0 : μ 1 − μ 2 = 0 H_0:\mu_1-\mu_2=0 H0:μ1μ2=0的双侧检验。运行程序,输出

sigma1^2=sigma2^2 is True.
mu1=mu2 is True.

表示既接受假设 H 0 : σ 1 2 / σ 2 2 = 1 H_0:\sigma_1^2/\sigma_2^2=1 H0:σ12/σ22=1,也接受假设 H 0 : μ 1 − μ 2 = 0 H_0:\mu_1-\mu_2=0 H0:μ1μ2=0,即在显著水平 α = 0.05 \alpha=0.05 α=0.05下认为两种药的疗效没有显著差别。
写博不易,敬请支持:
如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!
返回《导引》


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部