【问题标题】:How to calculate p-value for two lists of floats?如何计算两个浮点数列表的 p 值?
【发布时间】:2015-06-16 04:02:24
【问题描述】:

所以我有花车清单。像[1.33,2.555,3.2134,4.123123] 等。这些列表是某物的平均频率。如何证明两个列表不同?我考虑过计算p值。有这样做的功能吗?我查看了 scipy 文档,但不知道要使用什么。

谁能给点建议?

【问题讨论】:

标签: python statistics


【解决方案1】:

假设你有一个这样的浮动列表:

>>> data = {
...     'a': [0.9, 1.0, 1.1, 1.2],
...     'b': [0.8, 0.9, 1.0, 1.1],
...     'c': [4.9, 5.0, 5.1, 5.2],
... }

很明显,ab 非常相似,但两者都与c 不同。

您可能想要进行两种比较。

  1. 成对ab 相似吗? a 是否类似于 cb 是否与c 相似?
  2. 合并abc 是否来自同一组? (一般是better question

前者可以使用独立的t-tests实现如下:

>>> from itertools import combinations
>>> from scipy.stats import ttest_ind
>>> for list1, list2 in combinations(data.keys(), 2):
...     t, p = ttest_ind(data[list1], data[list2])
...     print list1, list2, p
...
a c 9.45895002589e-09
a b 0.315333596201
c b 8.15963804843e-09

这提供了相关的 p 值,并暗示 ac 是 不同,bc 不同,但ab 可能相似。

后者可以使用one-way ANOVA实现如下:

>>> from scipy.stats import f_oneway
>>> t, p =  f_oneway(*data.values())
>>> p
7.959305946160327e-12

p 值表明abc 不太可能来自同一群体。

【讨论】:

  • 感谢您抽出宝贵时间将其分解给我。我做了一些阅读,似乎我必须使用 scipy.stats.chi2_contingency 函数,因为我正在比较来自两个独立群体的平均值。对吗?
  • 否 @YKY - 您将使用 chi2 测试来测试数据集的 频率计数 是否相关。如果你的数组值是floats 而不是ints,你肯定不想要chi2_contingency。你想要ttest_ind
  • 谢谢。我会试试的。另外,为什么 chi2 不能与浮点数一起使用?
  • @YKY chi2 旨在将预期的频率与实际的频率进行比较。频率总是整数,而不是浮点数。这只是一个简单的测试,我们可以用它来检查我们是否应用了错误的分析。如果我们将 chi2 应用于浮点数,那么我们应用了错误的技术,因为频率不能是浮点数
猜你喜欢
  • 1970-01-01
  • 2020-07-04
  • 1970-01-01
  • 2014-06-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-27
  • 2023-03-28
  • 2019-09-29
相关资源
最近更新 更多