0

0

SPSS 与 Python KS 检验结果不一致的原因解析与正确实现方法

花韻仙語

花韻仙語

发布时间:2026-02-03 19:40:01

|

519人浏览过

|

来源于php中文网

原创

SPSS 与 Python KS 检验结果不一致的原因解析与正确实现方法

spss 默认执行的是参数未知的正态性检验(如 lilliefors 修正版 ks 检验),而 scipy 的 `kstest` 默认检验数据是否服从**指定参数**(如标准正态分布)的分布,二者原假设和计算逻辑不同,导致统计量与 p 值显著差异。

在实际数据分析中,使用 Kolmogorov–Smirnov(KS)检验评估变量正态性时,若发现 SPSS 与 Python(如 SciPy)结果严重不一致(例如 SPSS 报告 KS 统计量为 0.190、p = 0.000,而 Python 返回 0.946、p ≈ 10⁻⁵⁵),这通常并非代码错误,而是源于检验前提的根本差异

  • SPSS 的“单样本 KS 检验”默认采用 Lilliefors 方法:即在零假设“数据来自某个正态分布”下,均值和标准差由样本估计,并使用专门校正后的临界值或蒙特卡洛模拟计算 p 值。这是一种更合理、更常用的正态性检验方式。
  • SciPy 的 scipy.stats.kstest 默认执行经典 KS 检验:它严格检验“数据是否来自用户指定的精确分布”,例如 norm(loc=0, scale=1)(标准正态分布)。若直接将原始 age 或 log(age) 数据与标准正态 CDF 比较,由于样本均值远非 0、标准差远非 1,经验分布与理论分布必然严重偏离——导致统计量趋近于 1,p 值极小,该检验此时毫无统计意义

正确做法:在 Python 中复现 SPSS 的 Lilliefors 风格检验

自 SciPy 1.8.0 起,推荐使用 scipy.stats.goodness_of_fit(需显式指定 statistic='ks')进行带参数估计的 KS 检验(即 Lilliefors 检验):

import numpy as np
import pandas as pd
from scipy import stats

# 构建数据(注意:原问题中列名误写为 'weight',实际应为 'height')
data = pd.DataFrame([
    [8, 120], [8, 123], [8, 130], [8, 125], [10, 160], [9, 158], [8, 120], [7, 126],
    [6, 98], [5, 97], [7, 115], [7, 120], [7, 118], [8, 117], [6, 97], [6, 99],
    [9, 123], [10, 157], [10, 155], [9, 155], [9, 153], [5, 96], [7, 115], [6, 94],
    [6, 94], [5, 87], [8, 117], [6, 96], [5, 97], [6, 91], [6, 88], [9, 149], [6, 94],
    [8, 117], [10, 156], [10, 160], [6, 90], [6, 90], [7, 116], [5, 89], [6, 90], [7, 118], [10, 162]
], columns=['age', 'height'])

# 对 age 变量做 Lilliefors KS 检验(自动估计 mu/sigma)
res_age = stats.goodness_of_fit(stats.norm, data['age'], statistic='ks', random_state=42)
print(f"age — KS statistic: {res_age.statistic:.4f}, p-value: {res_age.pvalue:.4f}")
# 输出示例:KS statistic: 0.1902, p-value: 0.0002 (与 SPSS 高度一致)

# 同样检验 height(可选对数变换,但需保持与 SPSS 一致)
res_height = stats.goodness_of_fit(stats.norm, data['height'], statistic='ks', random_state=42)
print(f"height — KS statistic: {res_height.statistic:.4f}, p-value: {res_height.pvalue:.4f}")
⚠️ 注意事项:goodness_of_fit 默认通过蒙特卡洛模拟计算 p 值(n_sim=10000),结果存在微小随机波动,建议固定 random_state 保证可重现性;若使用旧版 SciPy(

更优替代:优先使用 Shapiro-Wilk 检验

对于小样本(n

# 推荐首选
w_stat_age, w_p_age = stats.shapiro(data['age'])
print(f"Shapiro-Wilk for age: W={w_stat_age:.4f}, p={w_p_age:.4f}")

总结

工具 检验类型 参数估计? 适用场景
scipy.stats.kstest(data, 'norm') 经典 KS ❌(强制 loc=0, scale=1) 仅当理论分布参数已知且精确时
scipy.stats.goodness_of_fit(norm, data, 'ks') Lilliefors KS ✅(自动拟合 μ, σ) 等效 SPSS 单样本 KS,推荐用于正态性初筛
scipy.stats.shapiro(data) Shapiro-Wilk ✅(内置最优估计) 小样本正态性金标准,统计力最强

因此,当追求与 SPSS 结果可比性时,请放弃直接使用 kstest 与标准正态比较,转而采用 goodness_of_fit(..., statistic='ks') 或更稳健的 shapiro()。理解检验背后的统计假设,比盲目复现数值更重要。

千问智学
千问智学

阿里旗下AI教育应用(原夸克学习APP)

下载

立即学习Python免费学习笔记(深入)”;

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
数据分析的方法
数据分析的方法

数据分析的方法有:对比分析法,分组分析法,预测分析法,漏斗分析法,AB测试分析法,象限分析法,公式拆解法,可行域分析法,二八分析法,假设性分析法。php中文网为大家带来了数据分析的相关知识、以及相关文章等内容。

474

2023.07.04

数据分析方法有哪几种
数据分析方法有哪几种

数据分析方法有:1、描述性统计分析;2、探索性数据分析;3、假设检验;4、回归分析;5、聚类分析。本专题为大家提供数据分析方法的相关的文章、下载、课程内容,供大家免费下载体验。

281

2023.08.07

网站建设功能有哪些
网站建设功能有哪些

网站建设功能包括信息发布、内容管理、用户管理、搜索引擎优化、网站安全、数据分析、网站推广、响应式设计、社交媒体整合和电子商务等功能。这些功能可以帮助网站管理员创建一个具有吸引力、可用性和商业价值的网站,实现网站的目标。

742

2023.10.16

数据分析网站推荐
数据分析网站推荐

数据分析网站推荐:1、商业数据分析论坛;2、人大经济论坛-计量经济学与统计区;3、中国统计论坛;4、数据挖掘学习交流论坛;5、数据分析论坛;6、网站数据分析;7、数据分析;8、数据挖掘研究院;9、S-PLUS、R统计论坛。想了解更多数据分析的相关内容,可以阅读本专题下面的文章。

518

2024.03.13

Python 数据分析处理
Python 数据分析处理

本专题聚焦 Python 在数据分析领域的应用,系统讲解 Pandas、NumPy 的数据清洗、处理、分析与统计方法,并结合数据可视化、销售分析、科研数据处理等实战案例,帮助学员掌握使用 Python 高效进行数据分析与决策支持的核心技能。

76

2025.09.08

Python 数据分析与可视化
Python 数据分析与可视化

本专题聚焦 Python 在数据分析与可视化领域的核心应用,系统讲解数据清洗、数据统计、Pandas 数据操作、NumPy 数组处理、Matplotlib 与 Seaborn 可视化技巧等内容。通过实战案例(如销售数据分析、用户行为可视化、趋势图与热力图绘制),帮助学习者掌握 从原始数据到可视化报告的完整分析能力。

56

2025.10.14

全国统一发票查询平台入口合集
全国统一发票查询平台入口合集

本专题整合了全国统一发票查询入口地址合集,阅读专题下面的文章了解更多详细入口。

13

2026.02.03

短剧入口地址汇总
短剧入口地址汇总

本专题整合了短剧app推荐平台,阅读专题下面的文章了解更多详细入口。

23

2026.02.03

植物大战僵尸版本入口地址汇总
植物大战僵尸版本入口地址汇总

本专题整合了植物大战僵尸版本入口地址汇总,前往文章中寻找想要的答案。

13

2026.02.03

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 22.4万人学习

Django 教程
Django 教程

共28课时 | 3.9万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号