我有关于恒星金属量的数据,我想将其与学生的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测试中,提供位置没有任何意义。
这些似乎是scipy.stats.t.cdf
的参数:标准t的(df, loc=0, scale=1)
。由于它们具有默认值,因此您需要传递元组,但它可以是单例(对于 df=2 为 args = (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)
args 参数必须是元组,但它可以是单个变量。您可以使用ks_statistic, pvalue = scipy.stats.kstest(x, 't', (10,))
10 是自由度进行测试。