SPSS 分析替代方案:DeepSeek 用 Python 复现统计检验过程
·
SPSS 统计检验的 Python 复现方案
以下是常见统计检验在 Python 中的实现方法,使用主流科学计算库替代 SPSS 功能:
1. t检验
- 独立样本t检验 (比较两组独立样本均值)
from scipy import stats
group1 = [22, 25, 30, 28, 26] # 样本组1
group2 = [19, 21, 23, 20, 24] # 样本组2
t_stat, p_value = stats.ttest_ind(group1, group2)
print(f"t统计量: {t_stat:.4f}, p值: {p_value:.4f}")
- 配对样本t检验 (同一组样本前后测量)
pre_test = [70, 65, 80, 75, 72] # 前测数据
post_test = [75, 70, 85, 80, 78] # 后测数据
t_stat, p_value = stats.ttest_rel(pre_test, post_test)
print(f"t统计量: {t_stat:.4f}, p值: {p_value:.4f}")
2. 方差分析 (ANOVA)
- 单因素方差分析
from statsmodels.formula.api import ols
from statsmodels.stats.anova import anova_lm
# 数据格式:value为观测值,group为分组标签
data = pd.DataFrame({
'value': [5,7,6,5,8,7,9,8,10,9,3,4,5],
'group': ['A','A','A','B','B','B','C','C','C','C','D','D','D']
})
model = ols('value ~ C(group)', data).fit()
anova_results = anova_lm(model)
print(anova_results)
3. 卡方检验
- 拟合优度检验 (观察频数 vs 理论频数)
observed = [45, 30, 25] # 观察频数
expected = [40, 35, 25] # 理论频数
chi2, p_value = stats.chisquare(observed, expected)
print(f"卡方值: {chi2:.4f}, p值: {p_value:.4f}")
- 独立性检验 (列联表分析)
contingency_table = [[30, 20], [25, 35]] # 2x2列联表
chi2, p_value, dof, expected = stats.chi2_contingency(contingency_table)
print(f"卡方值: {chi2:.4f}, p值: {p_value:.4f}")
4. 相关分析
- Pearson 相关系数
x = [1,2,3,4,5]
y = [2,3,5,7,11]
r, p_value = stats.pearsonr(x, y)
print(f"相关系数: {r:.4f}, p值: {p_value:.4f}")
- Spearman 秩相关
rho, p_value = stats.spearmanr(x, y)
print(f"秩相关系数: {rho:.4f}, p值: {p_value:.4f}")
5. 回归分析
- 线性回归
import statsmodels.api as sm
X = [[1,2], [2,4], [3,1], [4,3]] # 自变量
y = [3, 5, 4, 7] # 因变量
X = sm.add_constant(X) # 添加常数项
model = sm.OLS(y, X).fit()
print(model.summary()) # 输出完整回归报告
6. 非参数检验
- Mann-Whitney U 检验 (两独立样本)
u_stat, p_value = stats.mannwhitneyu(group1, group2)
print(f"U统计量: {u_stat}, p值: {p_value:.4f}")
- Kruskal-Wallis H 检验 (多独立样本)
h_stat, p_value = stats.kruskal(group1, group2, group3)
print(f"H统计量: {h_stat:.4f}, p值: {p_value:.4f}")
关键库说明:
- SciPy:提供基础统计检验函数
- StatsModels:提供高级统计建模和检验
- Pandas:数据处理和结构化
- NumPy:数值计算基础
执行流程建议:
graph TD
A[数据准备] --> B[选择检验方法]
B --> C{数据类型}
C -->|连续变量| D[t检验/ANOVA/回归]
C -->|分类变量| E[卡方检验]
C -->|非正态分布| F[非参数检验]
D --> G[结果解读]
E --> G
F --> G
注意:实际分析前需进行数据正态性检验(如Shapiro-Wilk检验)和方差齐性检验(如Levene检验),确保方法适用性。所有检验的显著性水平默认为$$\alpha = 0.05$$。
更多推荐



所有评论(0)