我有关于星星金属度的数据,我想将它与学生的t分布进行比较。要做到这一点,我在python上使用scipy.stats.kstest运行Kolmogorov-Smirnov测试
KSstudentst = scipy.stats.kstest(data,"t",args=(a,b))
但我无法找到论据应该是什么。我知道学生需要一个自由度(df)参数,但是另一个参数是什么。另外两个中的哪一个是df参数。
在scipy.stats.t.cdf的文档中,输入是计算值的位置和df,但在KS测试中,提供位置没有任何意义。
答案 0 :(得分:1)
对于标准t来说,这些似乎是scipy.stats.t.cdf
:(df, loc=0, scale=1)
的论据。由于它们具有默认值,因此您需要传递一个元组,但它可以是一个单例(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)
答案 1 :(得分:0)
args参数必须是元组,但它可以是单个变量。如果10是自由度,则可以使用ks_statistic, pvalue = scipy.stats.kstest(x, 't', (10,))
进行测试。