SciPy 统计检验和推断怎么用?

文章导读
Previous Quiz Next 统计检验和推断涉及从样本数据中推导出关于总体的结论。这些方法是验证假设、分析数据趋势以及在研究、经济、工程等众多领域做出明智决策的基础。SciPy 的 scipy.stats 模块提供了一套全面的工具,用于执行各种统计检验和数据推断
📋 目录
  1. SciPy 中的重要统计检验
  2. t 检验
  3. 卡方检验
  4. ANOVA(方差分析)
  5. 正态性检验
  6. 在 SciPy 中使用统计推断
A A

SciPy - 统计检验和推断



Previous
Quiz
Next

统计检验和推断涉及从样本数据中推导出关于总体的结论。这些方法是验证假设、分析数据趋势以及在研究、经济、工程等众多领域做出明智决策的基础。SciPy 的 scipy.stats 模块提供了一套全面的工具,用于执行各种统计检验和数据推断。

SciPy 中的重要统计检验

Python 中的 scipy.stats 库包含多种函数,用于执行 t 检验、卡方检验和 ANOVA 等测试,帮助您在不同应用中验证假设并检验假设。

SciPy 提供了多种统计检验,用于评估不同类型的数据,并确定观测到的差异或关系是否具有统计显著性。这些检验在假设检验和分析中起着关键作用。

t 检验

t 检验用于评估两个组的均值是否彼此不同,通常应用于比较两个样本组结果的情况。函数 scipy.stats.ttest_ind() 可用于对两个独立样本执行 t 检验。

以下示例演示了如何对两个数据集执行 t 检验 −

from scipy.stats import ttest_ind
import numpy as np

# 生成样本数据
group1 = np.random.normal(0, 1, 100)
group2 = np.random.normal(0.5, 1, 100)

# 执行 t 检验
stat, p_value = ttest_ind(group1, group2)

print(f"t-statistic: {stat:.4f}")
print(f"p-value: {p_value:.4f}")

以下是 t 检验的结果,显示 t 统计量和 p 值,这些值帮助我们确定两个组之间的差异是否具有统计显著性 −

t-statistic: -3.1020
p-value: 0.0022

卡方检验

卡方检验通常用于分析分类数据,确定两个分类变量之间是否存在关联。它在列联表等数据按类别分组的情况中非常有用。

要执行卡方检验,SciPy 提供了 scipy.stats.chi2_contingency() 函数 −

from scipy.stats import chi2_contingency
import numpy as np

# 列联表中的示例数据
data = np.array([[10, 20], [20, 30]])

# 执行卡方检验
chi2_stat, p_val, dof, expected = chi2_contingency(data)

print(f"Chi-squared statistic: {chi2_stat:.4f}")
print(f"p-value: {p_val:.4f}")
print(f"Degrees of freedom: {dof}")
print(f"Expected values: \n{expected}")

以下是卡方检验的输出,显示统计量、p 值、自由度以及期望值:

Chi-squared statistic: 0.1280
p-value: 0.7205
Degrees of freedom: 1
Expected values:
[[11.25 18.75]
 [18.75 31.25]]

ANOVA(方差分析)

ANOVA 用于检验三个或更多组的均值之间是否存在显著差异。它在比较多个数据集以确定其中至少一个与其他不同的情况时非常有用。

要执行单因素 ANOVA,可以使用 scipy.stats.f_oneway() 函数,以下示例执行了 ANOVA 检验 −

from scipy.stats import f_oneway
import numpy as np

# 来自三个组的示例数据
group1 = np.random.normal(0, 1, 100)
group2 = np.random.normal(1, 1, 100)
group3 = np.random.normal(2, 1, 100)

# 执行单因素 ANOVA
f_stat, p_value = f_oneway(group1, group2, group3)

print(f"F-statistic: {f_stat:.4f}")
print(f"p-value: {p_value:.4f}")

以下是 ANOVA 检验的结果,显示 F 统计量和 p 值,这些值帮助我们评估组均值是否具有统计差异:

F-statistic: 75.5012
p-value: 0.0000

正态性检验

为了确定数据集是否服从正态分布,我们可以使用 SciPy 中提供的正态性检验,如 Shapiro-Wilk 检验D'Agostino 和 Pearson 检验scipy.stats.shapiro() 函数执行 Shapiro-Wilk 检验来检查正态性 −

from scipy.stats import shapiro
import numpy as np

# 示例数据
data = np.random.normal(0, 1, 100)

# 执行 Shapiro-Wilk 正态性检验
stat, p_value = shapiro(data)

print(f"Test statistic: {stat:.4f}")
print(f"p-value: {p_value:.4f}")

以下是 Shapiro-Wilk 检验的输出结果,有助于评估样本数据是否与正态分布一致 −

Test statistic: 0.9878
p-value: 0.4939

在 SciPy 中使用统计推断

SciPy 提供了从样本数据对总体进行推断的基本工具,例如 −

  • p-value: 用于确定检验结果的统计显著性。p-value 低于阈值(通常为 0.05)表明结果具有显著性。
  • Confidence Intervals: 根据样本数据估计总体参数(如均值)所在的范围。
  • Effect Size: 量化观察到的效应或差异的幅度。

使用这些方法,研究人员可以进行全面的统计分析,并基于数据中的可靠证据做出决策。