【问题标题】:Two-sample Kolmogorov-Smirnov Test in Python Scipy on brain dataPython Scipy 中关于大脑数据的两样本 Kolmogorov-Smirnov 测试
【发布时间】:2018-05-17 11:11:00
【问题描述】:

我对 2 组不同的个体进行了大脑解剖测量。一组比另一组有更多的人(例如每个 n 和 m 个人)。我必须对这些数据进行 KS 测试。我对传递给 scipy 两个样本 KS 测试的论点有点不清楚。 scipy 2 样本 ks 测试的参数是否会是第 1 组中的每个人在 for 循环中针对第 2 组中的每个人?还是第 1 组中的每个特征都与第 2 组中的所有其他特征相对?

我写了这段代码,但这显然是错误的,因为我使用 iteritems() 来循环列,而它可能应该是 n*m ?

for group1, group2 in zip(group1.transpose().iteritems(), 
group2.transpose().iteritems()):

    value, pvalue = ks_2samp(np.array(group1[1]), np.array(group2[1]))
    print(value, pvalue)
    if pvalue > 0.05:
        print('Samples are likely drawn from the same distributions 
        (fail to reject H0)')
    else: 
        print('Samples are likely drawn from the different 
        distributions (reject H0)')

【问题讨论】:

  • 添加一些数据来重现你的错误
  • 我认为您需要每个组的经验分布函数,然后进行比较。
  • 因为你已经使用了tranpose()iteritems() 方法,我假设group1group2 是Pandas DataFrames。对吗?
  • 另外,asdcontrol 是什么?您尚未在代码中定义它们。
  • @WarrenWeckesser 是的,它们是熊猫数据框。

标签: python numpy scipy statistics


【解决方案1】:

假设其中一项测量是脑质量。将第 1 组的所有脑质量测量值收集到一个序列(或一维数组)中,并对第 2 组执行相同操作。将这两个序列传递给ks_2samp。这将测试两组的脑块是否来自相同的分布。

例如,如果 group1group2 是 Pandas DataFrames,每个人都有一行,每个人的不同测量值都有列,包括一个称为“质量”的大脑质量,你会这样做:

value, pvalue = ks_2samp(group1['mass'].values, group2['mass'].values)

【讨论】:

  • 非常感谢。但至于这样做的原因/直觉,我们在这里所做的是检查两个不同的人,据说一个人有一些独特的精神状况,另一个人是典型的,来自同一组。正确吗?所以,在特征选择期间,我最好不要选择那些似乎来自同一分布 acc 的特征。 KS 2 样品测试。对吗?
  • 您问的是编程问题(即如何使用ks_2samp)还是统计问题(例如什么是KS测试,我可以将它用于我的数据吗)?如果是后者,您最好在CrossValidated 提问。
猜你喜欢
  • 2012-06-08
  • 2018-03-10
  • 2011-12-15
  • 2016-11-06
  • 2016-12-20
  • 2016-10-04
  • 2018-06-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多