如果我有两个数字列表X
和Y
,我可以使用scipy.stats.ttest_ind(X,Y)
对它们进行t检验。到现在为止还挺好。如果不是X
和Y
,我会有频率计数;有没有pythonic方式来运行有效的t测试或我必须“手动”计算原始向量?
编辑(频率计数):如果X = [1,0,3,0,1,3,2]
则相应的频次数为:
+---+---+
| 0 | 2 |
| 1 | 2 |
| 2 | 1 |
| 3 | 2 |
+---+---+
其中第一列是值,第二列是其对应的计数/频率。
答案 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])
希望它有所帮助。