python假设检验--两个总体参数的检验(方差)

方差检验

F = s 1 2 / σ 2 2 s 2 2 / σ 2 2 F = \frac{s^2_1 / \sigma^2_2}{s^2_2 / \sigma^2_2} F=s22/σ22s12/σ22

例:

尽管存在争议,但大多数科学家认为,使用含有高纤维的谷类食物有助于降低癌症发生的可能性。然而一个科学家提出,如果人们在早餐中食用高纤维的谷类食物,那么平均而言,与早餐没有食用谷物的人群相比,食用谷物这在午餐中摄取的热量将会减少。如果这个观点成立,谷物食品的生产商又将获得一个很好的机会,他们会宣传说:“多吃谷物吧,早上也吃,这样有助于减肥。”为了检验这个假设,随机抽取了35人,询问他们早餐和午餐的通常食谱,根据他们的食谱将其分为两类,一类为经常谷类食用者(A组),一类为非经常谷类食用者(B组),然后测度没人午餐的大卡摄取量。经过一段时间的实验,得到的结果如下:

import pandas as pd
import numpy as np
import scipy as sp
from scipy import stats


A = pd.Series([568,496,589,681,540,646,636,539,596,607,529,617,555,562,584])
B = pd.Series([650,637,563,723,569,628,580,651,622,706,711,569,630,617,480,709,596,624,688,632])

现以a=0.05的显著性水平检验两个总体的方差是否相等。

假设:

σ 1 1 = σ 2 1 \sigma^1_1 = \sigma^1_2 σ11=σ21

σ 1 1 ≠ σ 2 1 \sigma^1_1 \neq \sigma^1_2 σ11=σ21

# 由题可得

s1_2 = A.var()
s2_2 = B.var()

n1 = len(A)
n2 = len(B)

a = 0.05

计算F分布值

# 自由度
df1 = n1-1
df2 = n2-1

f_a2 = stats.f.isf(a/2,df1,df2)
f_1_a2 = stats.f.isf(1-a/2,df1,df2)

计算公式

F = s1_2/s2_2
F
print('本例中,两个临界点分别为{:.3f},{:.3f},F={:.3f}没有落入拒绝域,故不能拒绝H0'.format(f_1_a2,f_a2,F))

本例中,两个临界点分别为0.350,2.647,F=0.662没有落入拒绝域,故不能拒绝H0

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
假设两个正态总体 $X_1 \sim N(\mu_1,\sigma_1^2)$ 和 $X_2 \sim N(\mu_2,\sigma_2^2)$,方差比为 $\sigma_1^2/\sigma_2^2$,则我们想要进行假设检验: $H_0: \sigma_1^2/\sigma_2^2 = k$,其 $k$ 是已知常数 $H_1: \sigma_1^2/\sigma_2^2 \neq k$ 我们可以使用 $F$ 分布来进行假设检验。具体的计算步骤如下: 1. 计算样本方差 $s_1^2$ 和 $s_2^2$,以及样本均值 $\bar{X_1}$ 和 $\bar{X_2}$。 2. 计算样本 $F$ 统计量:$F = \frac{s_1^2}{s_2^2} \times \frac{1}{k}$。 3. 计算 $F$ 分布的临界值 $F_{\alpha/2}(df_1,df_2)$,其 $\alpha$ 是显著性水平,$df_1$ 和 $df_2$ 分别是自由度。 4. 如果 $F > F_{\alpha/2}(df_1,df_2)$ 或 $F < F_{1-\alpha/2}(df_1,df_2)$,则拒绝原假设 $H_0$,否则接受原假设 $H_0$。 算法程序如下: ```python import numpy as np from scipy.stats import f def var_ratio_test(x1, x2, k, alpha): # 输入:x1, x2 分别为样本1和样本2的数据,k 为已知常数,alpha 为显著性水平 # 输出:是否拒绝原假设 H0 n1, n2 = len(x1), len(x2) s1, s2 = np.var(x1, ddof=1), np.var(x2, ddof=1) F = (s1/s2) * (1/k) df1, df2 = n1-1, n2-1 F_alpha_low = f.ppf(alpha/2, df1, df2) F_alpha_high = f.ppf(1-alpha/2, df1, df2) if F < F_alpha_low or F > F_alpha_high: return True else: return False ``` 注意,这里的自由度 df1 和 df2 分别是样本1和样本2的自由度,而不是总体的自由度。在计算临界值时,使用 `scipy.stats` 的 `f.ppf` 函数来计算 $F_{\alpha/2}(df_1,df_2)$ 和 $F_{1-\alpha/2}(df_1,df_2)$。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

M冰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值