python之假设检验

目录

1、单样本Z检验

2、单样本t检验(One-Sample T-Test)

3、双样本t检验(Two-Sample T-Test)

4、配对样本t检验(Paired T-Test)

5、卡方检验(Chi-Square Test)

补充:


假设检验(Hypothesis Testing)是数理统计学中根据一定假设条件由样本推断总体的一种方法。事先对总体参数或分布形式作出某种假设,然后利用样本信息来判断原假设是否成立。具体来说,假设检验的基本步骤包括:

提出假设:通常包括原假设(H0)和备择假设(H1)。原假设是研究者想要拒绝的假设,而备择假设则是研究者希望接受的假设。

确定适当的检验统计量:根据样本数据计算出一个统计量,这个统计量在原假设为真时具有特定的分布。

规定显著性水平:即小概率事件的标准,通常取α=0.01、0.05或0.10等。

计算检验统计量的值:根据样本数据计算出检验统计量的实际值。

作出统计决策:根据检验统计量的值和显著性水平,判断原假设是否成立。如果检验统计量的值落在拒绝域内,则拒绝原假设;否则,接受原假设。

假设检验的基本原理是小概率原理,即小概率事件在一次随机试验中几乎不可能发生。如果原假设为真,那么不利于或不能支持这一假设的事件(即小概率事件)在一次试验中几乎不可能发生。然而,如果这样的事件竟然发生了,那么就有理由怀疑原假设的真实性,从而拒绝原假设。

此外,根据研究者感兴趣的备择假设的内容不同,假设检验还可分为单侧检验(单尾检验)和双侧检验(双尾检验),而单侧检验又分为左侧检验和右侧检验。

请注意,假设检验的结果可能会受到样本容量、样本选择、数据分布等因素的影响,因此在进行假设检验时需要谨慎考虑这些因素,并结合实际情况做出合理的决策。

1、单样本Z检验

单样本Z检验是一种用于检验单个样本的平均值是否等于某个已知值(通常是某个理论值或假设值)的统计方法。

import numpy as npfrom scipy import stats# 假设我们有一个样本数据sample_data = np.array([0.497, 0.506, 0.518, 0.524,0.498,0.511,0.520,0.515,0.512])# 假设检验的零假设(H0)通常是样本平均值等于某个特定值,比如3mu_0 = 0.5# 已知的总体标准差known_population_std = 0.015# 计算样本均值sample_mean = np.mean(sample_data)# 计算样本量n = len(sample_data)# 计算Z统计量z_statistic = (sample_mean - mu_0) / (known_population_std / np.sqrt(n))# 计算双尾检验的p值p_value = 2 * (1 - stats.norm.cdf(abs(z_statistic)))print(f"Z统计量: {z_statistic}")print(f"p值: {p_value}")# 根据p值与显著性水平α比较,做出决策alpha = 0.05if p_value < alpha:    print("拒绝零假设,认为样本平均值不等于给定的值")else:    print("接受零假设,认为样本平均值等于给定的值")

Z统计量: 2.244444444444471

p值: 0.024803819632255975

拒绝零假设,认为样本平均值不等于给定的值

2、单样本t检验(One-Sample T-Test)

检验单个样本的平均值是否等于给定的某个值。

import scipy.stats as stats# 假设我们有一个样本数据sample_data = [1.2, 2.3, 3.4, 4.5, 5.6]# 假设检验的零假设(H0)通常是样本平均值等于某个特定值,比如3mu_0 = 3# 进行t检验t_statistic, p_value = stats.ttest_1samp(sample_data, mu_0)print(f"t统计量: {t_statistic}")print(f"p值: {p_value}")# 根据p值与显著性水平α比较,做出决策alpha = 0.05if p_value < alpha:    print("拒绝零假设,认为样本平均值不等于3")else:    print("接受零假设,认为样本平均值等于3")

3、双样本t检验(Two-Sample T-Test)

检验两个独立样本的平均值是否相等。

# 假设有两个独立样本  sample1 = [1.2, 2.3, 3.4, 4.5, 5.6]  sample2 = [2.5, 3.6, 4.7, 5.8, 6.9]    # 进行双样本t检验  t_statistic, p_value = stats.ttest_ind(sample1, sample2)    print(f"t统计量: {t_statistic}")  print(f"p值: {p_value}")    # 根据p值与显著性水平α比较,做出决策  if p_value < alpha:      print("拒绝零假设,认为两个样本平均值不相等")  else:      print("接受零假设,认为两个样本平均值相等")

4、配对样本t检验(Paired T-Test)

检验两个相关或配对样本的平均值差是否等于某个值(通常是0)。

# 假设有两个配对样本  sample1 = [1.2, 2.3, 3.4, 4.5, 5.6]  sample2 = [2.1, 3.2, 4.1, 5.2, 6.3]    # 进行配对样本t检验  t_statistic, p_value = stats.ttest_rel(sample1, sample2)    print(f"t统计量: {t_statistic}")  print(f"p值: {p_value}")    # 根据p值与显著性水平α比较,做出决策  if p_value < alpha:      print("拒绝零假设,认为两个配对样本的平均值差不等于0")  else:      print("接受零假设,认为两个配对样本的平均值差等于0")

5、卡方检验(Chi-Square Test)

用于比较实际观测频数与期望频数之间的差异,常用于检验分类变量。

# 假设有一个分类变量的观测频数  observed = [10, 20, 30, 40]    # 假设有一个期望频数  expected = [15, 15, 30, 20]    # 进行卡方检验  chi2_statistic, p_value, dof, expected_freq = stats.chi2_contingency([observed])    print(f"χ²统计量: {chi2_statistic}")  print(f"p值: {p_value}")  print(f"自由度: {dof}")  print(f"期望频数: {expected_freq}")    # 根据p值与显著性水平α比较,做出决策  if p_value < alpha:      print("拒绝零假设,认为观测频数与期望频数有显著差异")  else:      print("接受零假设,认为观测频数与期望频数无显著差异")

补充:

在假设检验中,P值(Probability value)是一种概率度量,用于表示观察到的数据(或更极端的数据)出现的概率,假设原假设(null hypothesis)为真。P值通常用于确定是否应该拒绝原假设。

更具体地说,P值是在原假设为真的条件下,观察到的样本数据或更极端情况出现的概率。如果P值很小(通常小于0.05或0.01),那么我们可以认为观察到的数据与原假设不一致,因此拒绝原假设。相反,如果P值很大,那么我们倾向于接受原假设,因为观察到的数据与原假设没有显著的不一致性。

需要注意的是,P值不是给定样本结果时原假设为真的概率,而是给定原假设为真时样本结果出现的概率。此外,P值也不是观察到的数据与原假设不一致的概率,而是在原假设为真的情况下观察到更极端数据的概率。

在进行假设检验时,通常会选择一个显著性水平(如0.05或0.01),并将P值与这个显著性水平进行比较。如果P值小于显著性水平,那么我们可以拒绝原假设;否则,我们接受原假设。需要注意的是,P值本身并不告诉我们观察到的数据是否“好”或“坏”,而只是告诉我们观察到的数据与原假设不一致的程度。

  • 20
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值