2

我有关于恒星金属丰度的数据,我想将其与学生的 t 分布进行比较。为此,我在 python 上使用 scipy.stats.kstest 运行 Kolmogorov-Smirnov 测试 KSstudentst = scipy.stats.kstest(data,"t",args=(a,b)) 但我无法找到参数应该是什么。我知道学生的 t 需要一个自由度 (df) 参数,但另一个参数是什么。两者中的哪一个是 df 参数。在 scipy.stats.t.cdf 的文档中,输入是要计算值的位置和 df,但在 KS 测试中,提供该位置是没有意义的。

4

2 回答 2

1

这些似乎是scipy.stats.t.cdf:(df, loc=0, scale=1)对于标准 t 的论点。由于它们具有默认值,因此您需要传递一个元组,但它可以是一个单例(args = (2, )对于 df=2)

import scipy.stats as ss
import numpy as np
np.random.seed(0)
data = np.random.randn(100)
ss.kstest(data, "t", args = (2, ))
Out[45]: KstestResult(statistic=0.093219139130061066, pvalue=0.33069879934011182)

或者传递 loc=0 和 scale=1,同样的结果:

ss.kstest(data, "t", args = (2, 0, 1))
Out[46]: KstestResult(statistic=0.093219139130061066, pvalue=0.33069879934011182)
于 2016-06-01T17:57:19.490 回答
0

args 参数必须是一个元组,但它可以是单个变量。ks_statistic, pvalue = scipy.stats.kstest(x, 't', (10,))如果 10 是自由度,您可以进行测试。

于 2016-06-01T18:10:54.427 回答