如何计算两个浮点列表的p值?

时间:2015-04-10 12:23:17

标签: python statistics

所以我有浮动列表。像[1.33,2.555,3.2134,4.123123]等。这些列表是某些东西的平均频率。我如何证明两个列表不同?我想过计算p值。有没有这样做的功能?我查看了scipy文档,但无法弄清楚要使用什么。

有人可以提供建议吗?

1 个答案:

答案 0 :(得分:20)

让我们说你有一个像这样的浮动列表:

>>> 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相似吗? ac相似吗? b是否与c相似?
  2. 合并abc是否来自同一个群组? (这通常是better question
  3. 前者可以使用独立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不太可能来自同一人群。