如何计算两个浮点数列表的 p 值?
How to calculate p-value for two lists of floats?
所以我有浮动列表。像 [1.33,2.555,3.2134,4.123123]
等。这些列表是某物的平均频率。如何证明两个列表不同?我考虑过计算 p 值。有这样做的功能吗?我查看了 scipy 文档,但不知道要使用什么。
谁能请教一下?
假设您有一个这样的浮动列表:
>>> 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],
... }
显然,a
与 b
非常相似,但两者都不同于 c
。
您可能需要进行两种比较。
- Pairwise:
a
与 b
相似吗? a
与 c
相似吗? b
与 c
相似吗?
- 组合:
a
、b
和c
是否来自同一组? (这一般是一个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 值,并暗示 a
和 c
是
不同的是,b
和c
是不同的,但是a
和b
可能是相似的。
后者可以使用one-way ANOVA实现,如下:
>>> from scipy.stats import f_oneway
>>> t, p = f_oneway(*data.values())
>>> p
7.959305946160327e-12
p 值表明 a
、b
和 c
不太可能来自同一总体。
所以我有浮动列表。像 [1.33,2.555,3.2134,4.123123]
等。这些列表是某物的平均频率。如何证明两个列表不同?我考虑过计算 p 值。有这样做的功能吗?我查看了 scipy 文档,但不知道要使用什么。
谁能请教一下?
假设您有一个这样的浮动列表:
>>> 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],
... }
显然,a
与 b
非常相似,但两者都不同于 c
。
您可能需要进行两种比较。
- Pairwise:
a
与b
相似吗?a
与c
相似吗?b
与c
相似吗? - 组合:
a
、b
和c
是否来自同一组? (这一般是一个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 值,并暗示 a
和 c
是
不同的是,b
和c
是不同的,但是a
和b
可能是相似的。
后者可以使用one-way ANOVA实现,如下:
>>> from scipy.stats import f_oneway
>>> t, p = f_oneway(*data.values())
>>> p
7.959305946160327e-12
p 值表明 a
、b
和 c
不太可能来自同一总体。