六、假设检验:使用Python进行两个正态总体均值的假设检验

    技术2024-06-16  85

    假设两个正态总体分别为: X ∼ N ( μ 1 , σ 1 2 ) X\sim N(\mu_1, \sigma_1^2) XN(μ1,σ12) Y ∼ N ( μ 2 , σ 2 2 ) Y\sim N(\mu_2, \sigma_2^2) YN(μ2,σ22). X 1 , . . . , X n X_1,...,X_n X1,...,Xn为来自正态总体X的样本; Y 1 , . . . , Y n Y_1,...,Y_n Y1,...,Yn为来自正态总体Y的样本。两个样本相互独立。并记 X ‾ , Y ‾ , S 1 2 , S 2 2 \overline X, \overline Y, S_1^2, S_2^2 X,Y,S12,S22分别为两样本的均值和方差。

    1. σ 1 2 , σ 2 2 \sigma_1^2, \sigma_2^2 σ12σ22已知

    该情形下的检验统计量为: X ‾ − Y ‾ σ 1 2 n 1 + σ 2 2 n 2 ∼ N ( 0 , 1 ) \frac{\overline X - \overline Y}{\sqrt{\frac{\sigma_1^2}{n_1}+\frac{\sigma_2^2}{n_2}}}\sim N(0, 1) n1σ12+n2σ22 XYN(0,1)

    1.1. 双边假设检验

    假设形式: H 0 : μ 1 − μ 2 = 0 H 1 : μ 1 − μ 2 ≠ 0 H_0: \mu_1-\mu_2 =0 \quad H_1:\mu_1-\mu_2\neq 0 H0:μ1μ2=0H1:μ1μ2=0 p值为: p v a l = P { ∣ Z ∣ ≥ ∣ z 0 ∣ } pval=P\{|Z| \ge |z_0|\} pval=P{Zz0}

    1.2. 左侧检验

    假设形式: H 0 : μ 1 − μ 2 ≥ 0 H 1 : μ 1 − μ 2 < 0 H_0: \mu_1-\mu_2\ge0 \quad H_1:\mu_1-\mu_2\lt0 H0:μ1μ20H1:μ1μ2<0 p值为: p v a l = P { Z ≤ z 0 } pval=P\{Z \le z_0\} pval=P{Zz0}

    1.3. 右侧检验

    假设形式: H 0 : μ 1 − μ 2 ≤ 0 H 1 : μ 1 − μ 2 > 0 H_0: \mu_1-\mu_2\le0 \quad H_1:\mu_1-\mu_2\gt0 H0:μ1μ20H1:μ1μ2>0 p值为: p v a l = P { Z ≥ z 0 } pval=P\{Z \ge z_0\} pval=P{Zz0}

    2. σ 1 2 = σ 2 2 = σ 2 \sigma_1^2=\sigma_2^2=\sigma^2 σ12=σ22=σ2但未知

    该情形下的检验统计量为: X ‾ − Y ‾ S w 1 n 1 + 1 n 2 ∼ t ( n 1 + n 2 − 2 ) \frac{\overline X - \overline Y}{S_w\sqrt{\frac{1}{n_1}+\frac{1}{n_2}}}\sim t(n_1+n_2-2) Swn11+n21 XYt(n1+n22) 上式中 s w 2 = ( n 1 − 1 ) s 1 2 + ( n 2 − 1 ) s 2 2 n 1 + n 2 − 2 s_w^2=\frac{(n_1-1)s_1^2 +(n_2-1)s_2^2}{n_1+n_2-2} sw2=n1+n22(n11)s12+(n21)s22

    2.1. 双边假设检验

    假设形式: H 0 : μ 1 − μ 2 = 0 H 1 : μ 1 − μ 2 ≠ 0 H_0: \mu_1-\mu_2 =0 \quad H_1:\mu_1-\mu_2\neq 0 H0:μ1μ2=0H1:μ1μ2=0 p值为: p v a l = P { ∣ T ∣ ≥ ∣ t 0 ∣ } pval=P\{|T| \ge |t_0|\} pval=P{Tt0}

    2.2. 左侧检验

    假设形式: H 0 : μ 1 − μ 2 ≥ 0 H 1 : μ 1 − μ 2 < 0 H_0: \mu_1-\mu_2\ge0 \quad H_1:\mu_1-\mu_2\lt0 H0:μ1μ20H1:μ1μ2<0 p值为: p v a l = P { T ≤ t 0 } pval=P\{T \le t_0\} pval=P{Tt0}

    2.3. 右侧检验

    假设形式: H 0 : μ 1 − μ 2 ≤ 0 H 1 : μ 1 − μ 2 > 0 H_0: \mu_1-\mu_2\le0 \quad H_1:\mu_1-\mu_2\gt0 H0:μ1μ20H1:μ1μ2>0 p值为: p v a l = P { T ≥ t 0 } pval=P\{T \ge t_0\} pval=P{Tt0}

    3. σ 1 2 ≠ σ 2 2 \sigma_1^2 \neq \sigma_2^2 σ12=σ22且未知

    此时以样本方差 S 1 2 , S 2 2 S_1^2, S_2^2 S12,S22分别代替 σ 1 2 , σ 2 2 \sigma_1^2, \sigma_2^2 σ12,σ22. 取检验统计量为: T = X ‾ − Y ‾ S 1 2 n 1 + S 2 2 n 2 T = \frac{\overline X - \overline Y}{\sqrt{\frac{S_1^2}{n_1}+\frac{S_2^2}{n_2}}} T=n1S12+n2S22 XY

    3.1. 当样本容量很大时,利用中心极限定理统计量T近似服从标准正态分布

    这种情形下,可以利用1.中的算法求解

    3.2. 当样本容量较小时,统计量T服从自由度为k的t分布

    这种情形下,自由度k可以粗略计算得: k = m i n ( n 1 − 1 , n 2 − 1 ) k=min(n_1-1, n_2-1) k=min(n11,n21) 然后参照2.进行计算求解。

    4. Python代码实现

    在scipy.stats包含两个正态总体均值的检验函数, 其函数原型: stats.ttest_ind(a, b, axis=0, equal_var=True, nan_policy='propagate')

    5. 实例验证

    例1:随机地抽取年龄都是25岁的16位男子和13位女子, 测得:他们的脉搏率如下: 男: 61, 73, 58, 64, 70, 64, 72, 60, 65, 80, 55,72, 56, 56, 74, 65, 女: 83, 58, 70, 56, 76, 64, 80, 68, 78, 108,76, 70, 97. 为题:假设男女脉搏率都是服从正态分布,这些数据能否认为男女脉搏率的均值相同? 解: H 0 : μ 1 − μ 2 = 0 H 1 : μ 1 − μ 2 ≠ 0 H_0:\mu_1-\mu_2=0 \quad H_1:\mu_1-\mu_2\neq 0 H0:μ1μ2=0H1:μ1μ2=0 该问题问双边检验。Python计算如下:

    import numpy as np from scipy import stats data1 = np.array([61, 73, 58, 64, 70, 64, 72, 60, 65, 80, 55, 72, 56, 56, 74, 65]) data2 = np.array([83, 58, 70, 56, 76, 64, 80, 68, 78, 108, 76, 70, 97]) equal_var = True if np.var(data1, ddof=1) > np.var(data2,ddof=1)*2 or np.var(data2,ddof=1) >np.var(data1, ddof=1)*2: equal_var = False -, pval = stats.ttest_ind(data1, data2, equal_var=equal_var) # 结果: pval = 0.03205611305825045

    由于pval = 0.03205611305825045 < 0.05, 拒绝原假设,可以认为男女的脉搏率不相同。

    6. 联系交流

    -email: hflag@163.com -qq:532843488

    Processed: 0.016, SQL: 9