我用Python理论计算pmf。这是密码。你知道吗
>>> a_coin = np.array([0,1])
>>> three_coins = np.array(np.meshgrid(a_coin,a_coin,a_coin)).T.reshape(-1,3)
>>> heads = np.sum(three_coins, axis = 1)
>>> df = pd.DataFrame({'heads': heads, 'prob': 1/8})
>>> np.array(df.groupby('heads').sum()['prob'])
array([0.125, 0.375, 0.375, 0.125])
这段代码模拟的是3枚硬币的一次投掷。 可能的结果是{0,1,2,3}。 最后一行代码分别计算每个可能结果的概率。你知道吗
我得放10个硬币进去np.网格(一枚硬币,…,一枚硬币)如果我想计算10枚普通硬币的pmf,这看起来既无聊又低效。你知道吗
问题是,在python或R中有没有更有效的方法来实现这一点?你知道吗
下面是如何在R中执行此操作:
choose
函数给出二项式系数。要将它们转化为概率,只需除以它们的总和:看来你不是真的想列举,而是想计算。如果您需要从10个连续的“公平”二项抽取中枚举结果,那么您可以使用
combn
11次。你知道吗以下是基于
fft
的numpy
解决方案:例如:
使用Python标准库,您可以得到有理数形式的概率(这是精确的解决方案)
这可以很容易地转换成浮点数,例如
相关问题 更多 >
编程相关推荐