SPSS 和 Python KS 测试评估正态性的不同结果

问题描述 投票:0回答:1

假设我有一系列数据:

年龄;身高 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

我想使用 SPSS 和 Python 来评估 Kolmogorov Smirnov 的正态性,SPSS 得出的结果是:

变量 统计数据 签名
年龄 0.190 0.000
高度 0.173 0.002

我尝试使用 python 与此代码进行比较:

from scipy.stats import kstest
from scipy.stats import norm
x= np.log(data.age)
n= norm(loc=0,scale=1)
kstest(x,n.cdf)

给出:

KstestResult(statistic=0.9462396895483368, pvalue=5.139087762288979e-55)

即使我不尝试对数据进行日志转换,结果仍然不同:

kstest(data.age,n.cdf)

给出:

KstestResult(statistic=0.9999997133484281, pvalue=9.27397852188504e-282)
python numpy scipy spss kolmogorov-smirnov
1个回答
0
投票

SciPy 计算是正确的:KS 检验统计量是经验 CDF 与根据数据评估的提供的 CDF 之间的最大差异。

age = np.log(data[:, 0])
x = np.sort(age)
cdfvals = dist.cdf(x)
n = len(cdfvals)
dminus = (cdfvals - np.arange(0.0, n)/n)
dminus.max()  # 0.9462396895483368

未提供SPSS代码,因此我无法评估差异的原因。

© www.soinside.com 2019 - 2024. All rights reserved.