t在频率表上测试python

时间:2015-10-22 15:02:03

标签: python statistics scipy

如果我有两个数字列表XY,我可以使用scipy.stats.ttest_ind(X,Y)对它们进行t检验。到现在为止还挺好。如果不是XY,我会有频率计数;有没有pythonic方式来运行有效的t测试或我必须“手动”计算原始向量?

编辑(频率计数):如果X = [1,0,3,0,1,3,2]则相应的频次数为:

+---+---+
| 0 | 2 |
| 1 | 2 |
| 2 | 1 |
| 3 | 2 |
+---+---+

其中第一列是值,第二列是其对应的计数/频率。

1 个答案:

答案 0 :(得分:1)

您可以使用rv_discrete from scipy.stats根据频次标记的分布生成数据。

使用您在编辑中提供的频率计数示例,您将生成这样的随机变量,

import scipy.stats as stats

x = [0, 1, 2, 3]
freq = [2, 2, 1, 2]
total = sum(freq)
p = [i/total for i in freq]
custm = stats.rv_discrete(name='custm', values=(x, p))

您考虑概率向量p必须加1。

然后,您可以非常轻松地从您的发行版生成数据,

In [7]:
custm.rvs(size=7)

Out[7]:
array([2, 0, 3, 1, 3, 2, 0])

希望它有所帮助。