大家好,我是小寒
统计检验是分析数据和做出可靠决策的重要工具。它们帮助我们发现模式、比较组别并理解数据中的关系。
作为一名数据分析师,了解何时以及如何使用这些检验可以让你的工作更准确、更有意义。
统计检验的定义
统计检验是一种统计学方法,用于判断样本数据是否支持关于总体参数的某一假设。通过对样本数据的分析,统计检验可以帮助我们做出科学推断,以确定原假设是否成立或需要被拒绝。
统计检验是统计学中最核心的内容之一,广泛应用于科学研究、工程实践、市场分析和医疗试验中,例如验证药物的疗效、比较不同教学方法的效果等。
统计检验的基本框架
3.显著性水平
显著性水平是拒绝原假设时可能犯错误的概率,通常取值为 0.05 或 0.01。
它衡量我们接受一定程度的不确定性来得出结论。
4.p值(p-value)
p 值是一个概率值,表示在原假设成立的条件下,观察到样本数据或更极端情况的概率。
如果p值小于显著性水平,则拒绝原假设。
5.决策规则
如果检验统计量的值落在显著性水平下的临界区间内(或p值小于显著性水平),则拒绝原假设;否则,不能拒绝原假设。
统计检验的流程
- 明确问题和设定假设
确定要验证的研究问题,提出原假设和备择假设。 - 选择统计检验方法
根据数据的类型(如定量或定性)、分布特点和研究目的,选择适当的检验方法。 - 计算检验统计量
利用样本数据计算对应的检验统计量。 - 计算p值或确定临界值
根据显著性水平计算p值,或使用统计分布确定临界值。 - 做出统计决策
比较p值与显著性水平或检验统计量与临界值,决定是否拒绝原假设。 - 解释结果
根据检验结果,结合实际问题给出明确的解释。
常见统计检验方法
统计检验方法根据研究目标、数据类型和分布假设的不同而有所差异。
以下是最常用的统计检验方法及其适用场景的详细介绍。
T 检验
用于比较均值,适合样本数据来自正态分布的总体,且样本量不大(通常小于30)。
类型
- 单样本 t 检验
比较样本均值与已知总体均值之间的差异。
例: 测试某城市居民的平均步数是否为10000步。 - 独立样本 t 检验
比较两个独立样本的均值是否显著不同。
例: 比较男性和女性的平均身高。 - 配对样本 t 检验
比较两个相关样本(如同一组数据的前后测量)均值的差异。
例: 比较同一组学生考试前后成绩。
假设
下面是一个单样本 t 检验的示例代码,用于检验样本均值是否等于某个值。
from scipy.stats import ttest_1samp
import numpy as np
# 示例数据
data = np.array([99, 101, 100, 98, 102, 100, 101, 99, 98])
# 原假设: 样本均值为 100
t_stat, p_value = ttest_1samp(data, 100)
print("t-statistic:", t_stat)
print("p-value:", p_value)
if p_value < 0.05:
print("拒绝原假设,样本均值显著不等于 100")
else:
print("不能拒绝原假设,样本均值不显著不同于 100")
卡方检验
用于分析分类数据,检验变量之间是否存在显著关联。
类型
- 独立性检验
测试两个分类变量是否独立。
例: 检验性别与购车偏好是否相关。 - 拟合优度检验
测试样本频数分布是否与预期分布一致。
例: 检验某品牌市场份额是否符合预期比例。
假设
下面是一个用于检验分类变量之间是否有显著关联的示例代码。
from scipy.stats import chi2_contingency
import numpy as np
# 示例数据(列联表)
# 行表示性别,列表示是否购买产品
data = np.array([[50, 30], [20, 40]])
# 卡方检验
chi2, p_value, dof, expected = chi2_contingency(data)
print("Chi-squared:", chi2)
print("p-value:", p_value)
print("Degrees of freedom:", dof)
print("Expected frequencies:\n", expected)
if p_value < 0.05:
print("拒绝原假设,性别与购买行为有显著关联")
else:
print("不能拒绝原假设,性别与购买行为无显著关联")
方差分析
用于比较三个或更多样本组的均值是否显著不同。
类型
- 单因素方差分析
比较一个因子下多个组的均值差异。
例: 比较不同肥料对植物生长的影响。 - 双因素方差分析
考虑两个因子及其交互作用对结果的影响。
例: 比较肥料和水分对植物生长的联合影响。
假设
下面是一个用于比较多个组的均值差异的示例代码。
from scipy.stats import f_oneway
# 示例数据
group1 = [5.1, 5.2, 5.3, 5.0, 5.4]
group2 = [6.2, 6.3, 6.1, 6.4, 6.0]
group3 = [4.5, 4.4, 4.6, 4.5, 4.7]
# 单因素方差分析
f_stat, p_value = f_oneway(group1, group2, group3)
print("F-statistic:", f_stat)
print("p-value:", p_value)
if p_value < 0.05:
print("拒绝原假设,至少两组均值显著不同")
else:
print("不能拒绝原假设,各组均值没有显著差异")
z检验 (z-test)
用于均值或比例的检验,适合样本量较大(通常n > 30),数据服从正态分布。
类型
- 单样本z检验
检验样本均值与总体均值是否有显著差异。 - 两样本z检验
检验两个独立样本均值或比例的差异。
假设
以下是单样本 z 检验的示例代码,用于检验样本均值是否等于某已知总体均值。
from statsmodels.stats.weightstats import ztest
import numpy as np
# 示例数据
data = [102, 98, 100, 97, 103, 99, 101, 104, 98, 95]
# 原假设: 样本均值等于总体均值 100
z_stat, p_value = ztest(data, value=100)
print("z-statistic:", z_stat)
print("p-value:", p_value)
if p_value < 0.05:
print("拒绝原假设,样本均值显著不同于总体均值")
else:
print("不能拒绝原假设,样本均值没有显著差异")