本文目录导读:

- 单样本t检验(检验均值是否等于某个值)
- 独立样本t检验(比较两组数据的均值)
- 配对样本t检验(同一组样本前后比较)
- 卡方检验(检查分类变量相关性)
- 方差分析ANOVA(比较多个组均值)
- 正态性检验
- 综合案例:数据分析流程
- 使用建议
我来介绍几个用Scipy做统计检验的常见Python案例:
单样本t检验(检验均值是否等于某个值)
import numpy as np
from scipy import stats
# 示例数据:某班级学生考试成绩
scores = np.array([85, 78, 92, 88, 76, 95, 82, 90, 79, 84])
# 检验平均分是否等于80分
t_stat, p_value = stats.ttest_1samp(scores, 80)
print(f"t统计量: {t_stat:.3f}")
print(f"p值: {p_value:.3f}")
# 判断结果
if p_value < 0.05:
print("在0.05显著性水平下,拒绝原假设:平均分不等于80分")
else:
print("在0.05显著性水平下,不能拒绝原假设:平均分等于80分")
独立样本t检验(比较两组数据的均值)
import numpy as np
from scipy import stats
# 两组独立数据
group1 = np.array([85, 78, 92, 88, 76, 95])
group2 = np.array([72, 68, 75, 70, 82, 65])
# 方差齐性检验
f_stat, f_p = stats.levene(group1, group2)
print(f"方差齐性检验 p值: {f_p:.3f}")
# 独立样本t检验
t_stat, p_value = stats.ttest_ind(group1, group2)
print(f"t统计量: {t_stat:.3f}")
print(f"p值: {p_value:.3f}")
if p_value < 0.05:
print("两组数据均值存在显著差异")
else:
print("两组数据均值没有显著差异")
配对样本t检验(同一组样本前后比较)
import numpy as np
from scipy import stats
# 培训前后的成绩
before = np.array([65, 72, 78, 70, 68, 75])
after = np.array([82, 85, 88, 80, 79, 86])
# 配对t检验
t_stat, p_value = stats.ttest_rel(after, before)
print(f"t统计量: {t_stat:.3f}")
print(f"p值: {p_value:.3f}")
if p_value < 0.05:
print("培训前后的成绩存在显著差异")
else:
print("培训前后的成绩没有显著差异")
卡方检验(检查分类变量相关性)
import numpy as np
from scipy import stats
# 创建一个列联表:性别与购买意愿
# 行: 男性, 女性
# 列: 愿意购买, 不愿意购买
observed = np.array([[45, 15], # 男性
[30, 10]]) # 女性
# 卡方检验
chi2, p_value, dof, expected = stats.chi2_contingency(observed)
print(f"卡方统计量: {chi2:.3f}")
print(f"p值: {p_value:.3f}")
print(f"自由度: {dof}")
print("期望频数:")
print(expected)
if p_value < 0.05:
print("性别与购买意愿存在显著关联")
else:
print("性别与购买意愿没有显著关联")
方差分析ANOVA(比较多个组均值)
import numpy as np
from scipy import stats
# 三组数据
group_a = np.array([85, 82, 88, 90, 86])
group_b = np.array([78, 75, 80, 72, 76])
group_c = np.array([92, 95, 88, 91, 94])
# 单因素方差分析
f_stat, p_value = stats.f_oneway(group_a, group_b, group_c)
print(f"F统计量: {f_stat:.3f}")
print(f"p值: {p_value:.3f}")
if p_value < 0.05:
print("三组均值存在显著差异")
else:
print("三组均值没有显著差异")
正态性检验
import numpy as np
from scipy import stats
# 生成数据
normal_data = np.random.normal(0, 1, 100) # 正态分布
non_normal_data = np.random.uniform(0, 1, 100) # 均匀分布
# Shapiro-Wilk检验
stat_normal, p_normal = stats.shapiro(normal_data)
stat_non, p_non = stats.shapiro(non_normal_data)
print("正态分布数据:")
print(f"统计量: {stat_normal:.3f}, p值: {p_normal:.3f}")
print("\n非正态分布数据:")
print(f"统计量: {stat_non:.3f}, p值: {p_non:.3f}")
# 也可以使用Kolmogorov-Smirnov检验
ks_stat, ks_p = stats.kstest(normal_data, 'norm')
print(f"\nKS检验p值: {ks_p:.3f}")
综合案例:数据分析流程
import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
# 生成示例数据
np.random.seed(42)
control = np.random.normal(70, 10, 50) # 对照组
treatment = np.random.normal(75, 10, 50) # 实验组
# 1. 描述性统计
print("对照组: 均值={:.2f}, 标准差={:.2f}".format(
np.mean(control), np.std(control)))
print("实验组: 均值={:.2f}, 标准差={:.2f}".format(
np.mean(treatment), np.std(treatment)))
# 2. 正态性检验
_, p_control = stats.shapiro(control)
_, p_treatment = stats.shapiro(treatment)
print(f"\n正态性检验: 对照组p={p_control:.3f}, 实验组p={p_treatment:.3f}")
# 3. 方差齐性检验
_, p_levene = stats.levene(control, treatment)
print(f"方差齐性检验p值: {p_levene:.3f}")
# 4. 选择检验方法
if p_control > 0.05 and p_treatment > 0.05 and p_levene > 0.05:
# 满足条件,使用独立样本t检验
t_stat, p_value = stats.ttest_ind(control, treatment)
print(f"\n独立样本t检验: t={t_stat:.3f}, p={p_value:.3f}")
else:
# 不满足条件,使用Mann-Whitney U检验
u_stat, p_value = stats.mannwhitneyu(control, treatment)
print(f"\nMann-Whitney U检验: U={u_stat:.0f}, p={p_value:.3f}")
# 5. 结果解释
if p_value < 0.05:
print("实验组和控制组存在显著差异")
else:
print("实验组和控制组没有显著差异")
# 6. 可视化
plt.figure(figsize=(10, 5))
plt.subplot(1, 2, 1)
plt.boxplot([control, treatment], labels=['对照组', '实验组'])'箱线图')
plt.subplot(1, 2, 2)
plt.hist(control, alpha=0.7, label='对照组', bins=10)
plt.hist(treatment, alpha=0.7, label='实验组', bins=10)'分布直方图')
plt.legend()
plt.tight_layout()
plt.show()
使用建议
-
选择检验方法时考虑:
- 数据类型(连续、分类)
- 样本分布(正态、非正态)
- 样本是否配对
- 比较组数
-
检验前预处理:
- 检查异常值
- 验证假设条件
- 进行必要的转换
-
结果报告:
- 报告检验统计量
- 报告p值和置信区间
- 说明显著性水平
这些案例涵盖了常用的统计检验方法,可以根据实际需求选择合适的检验方式。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播