标签: binomial-cdf

如何有效地计算二项式累积分布函数?

让我们说我知道"成功"的概率是P.我进行了N次测试,我看到了S的成功.测试类似于抛掷不均匀加权的硬币(也许头部是成功的,尾部是失败的).

我想知道看到S成功的大概概率,或者比S成功的可能性要小得多.

因此,例如,如果P为0.3,N为100,并且我获得20次成功,我正在寻找获得20次或更少次成功的概率.

如果,另一方面没有,P是0.3,N是100,我获得40次成功,我正在寻找获得40次成功的可能性.

我知道这个问题与找到二项式曲线下的区域有关,但是:

  1. 我的数学不能完成将这些知识转化为有效代码的任务
  2. 虽然我理解二项式曲线会给出精确的结果,但我得到的印象是它本身效率低下.计算近似结果的快速方法就足够了.

我应该强调这个计算必须很快,理想情况下应该可以通过标准的64或128位浮点计算来确定.

我正在寻找一个带P,S和N的函数,并返回一个概率.由于我比代码更熟悉数学符号,我更喜欢任何答案都使用伪代码或代码.

algorithm math probability binomial-cdf

17
推荐指数
3
解决办法
2万
查看次数

计算分布式网络中系统故障的概率

我试图建立一个分布式文件系统中文件可用性的数学模型.我在MathOverflow上发布了这个问题,但这可能也被归类为CS问题,所以我也在这里给它一个镜头.

系统的工作方式如下:节点在r*b遥控节点存储文件(使用擦除代码编码),其中r是复制因子,b是整数常量.如果远程节点中至少有b个可用并且返回其文件的一部分,则擦除编码文件具有可以恢复文件的属性.

最简单的方法是假设所有远程节点彼此独立并具有相同的可用性p.根据这些假设,文件的可用性遵循二项分布,即二项分布http://bit.ly/dyJwwE

不幸的是,这两个假设可能会引入一个不容错误的错误,如本文所示:http://deim.urv.cat/~lluis.pamies/uploads/Main/icpp09-paper.pdf .

克服所有节点具有相同可用性的假设的一种方法是计算可用/不可用节点的每种可能组合的概率,并取所有这些结果的总和(这是他们在上面的论文中建议的那种,比我刚才描述的更正式.您可以将此方法视为具有深度r*b的二叉树,并且每个离开是可用/不可用节点的一种可能组合.文件的可用性与您通过> = b可用节点到达的可能性相同.这种方法更正确但是具有Ordo http://bit.ly/cEZcAP的计算成本.此外,它不涉及节点独立性的假设.

你们有没有一个好的近似的想法,它引入的误差比二项式分布 - aproximation少,但计算成本比http://bit.ly/d52MM9 http://bit.ly/cEZcAP好

您可以假设每个节点的可用性数据是由一组元组组成的(measurement-date, node measuring, node being measured, succes/failure-bit).使用此数据,您可以计算节点之间可用性与可用性差异的相关性.

computer-science distributed high-availability time-complexity binomial-cdf

7
推荐指数
1
解决办法
3347
查看次数

拟合 beta 二项式

我一直在寻找一种将数据拟合到 beta 二项式分布并估计 alpha 和 beta 的方法,类似于 VGAM 库中的 vglm 包的方式。我还没有找到如何在 python 中做到这一点。有一个 scipy.stats.beta.fit() ,但没有用于 beta 二项式分布的内容。有没有办法做到这一点?

python beta statistics scipy binomial-cdf

6
推荐指数
1
解决办法
3600
查看次数

Python中的Beta二项式函数

我想计算二项式分布给出的预定x(成功),n(试验)和p(概率)的概率 - 后者由概率质量函数Beta(a,b)给出.

我知道scipy.stats.binom.pmf(x,n,p)- 但我不确定如何用概率函数替换p.我也想知道我是否可以使用loc参数 scipy.stats.binom.pmf来模拟这种行为.

python distribution binomial-cdf probability-density

5
推荐指数
2
解决办法
5048
查看次数

Julia,在 R 中复制“rbinom()”的函数

我四处挖掘并用谷歌搜索,但没有找到一个例子。我确信 Julia 有一个强大的函数(在基数中?)以给定的概率生成随机二项式(伯努利?)“成功”。我找不到它或弄清楚如何在 Julia 中执行等效操作:

> rbinom(20,1,0.3)
 [1] 1 1 1 0 0 0 1 1 0 0 0 0 1 1 0 0 0 1 0 0

Run Code Online (Sandbox Code Playgroud)

谢谢。J

random binomial-cdf julia bernoulli-numbers

5
推荐指数
1
解决办法
139
查看次数

Matlab中的离散概率分布计算

我给出了P(x1 ... n)离散独立概率值,它代表了例如发生X的可能性.

我想要一个问题的通用代码:X发生的概率是在同一时间发生的0-n次?

例如:给定:每辆车(A,B,C)停放的3个概率P(A),P(B),P(C).问题是:哪个概率不会有车,一辆车,两辆车和三辆车停放?

例如,两辆车同时停车的答案是:

P(A,B,~C) = P(A)*P(B)*(1-P(C))
P(A,~B,C) = P(A)*(1-P(B))*P(C)
P(~A,B,C) = (1-P(A))*P(B)*P(C)
P(2 of 3) = P(A,B,~C) + P(A,~B,C) + P(~A,B,C)
Run Code Online (Sandbox Code Playgroud)

我已经编写了所有可能性的代码,但是我得到的值越多,当然由于更多可能的组合而得到的速度越慢.

% probability: Vector with probabilities P1, P2, ... PN
% result: Vector with results as stated above.

% All possibilities:
result(1) = prod(probability);


shift_vector = zeros(anzahl_werte,1);
for i = 1:anzahl_werte
    % Shift Vector allocallization
    shift_vector(i) = 1;
    % Compute all unique permutations of the shift_vector
    mult_vectors = uperm(shift_vector);

    % Init Result Vector
    prob_vector = zeros(length(mult_vectors(:,1)), …
Run Code Online (Sandbox Code Playgroud)

matlab probability permutation poisson binomial-cdf

4
推荐指数
1
解决办法
951
查看次数

Python 与 R 中的二项式测试

我正在尝试重新实现RPython. 但是,我不确定我是否使用了正确的功能。

R,我得到:

> binom.test (2, 8, 11/2364, alternative = "greater")
0.25
Run Code Online (Sandbox Code Playgroud)

使用Python& SciPy,我使用

from scipy.stats import binom
binom.sf(2, 8, float(11)/float(2364))
5.5441613055814931e-06
Run Code Online (Sandbox Code Playgroud)

事实上,我必须binom.sf(2, 8, float(11)/float(2364))确保第三个参数不是0因为 int 除法。

为什么值不同?我是否必须指定 Scipy / 的时刻binom.sf?我应该使用其他图书馆吗?

python r scipy binomial-cdf

2
推荐指数
1
解决办法
4524
查看次数

需要帮助在 python 中优化三重嵌套二项式 CDF

我必须计算三重求和(嵌套二项式 CDF),方程如下, 在此输入图像描述

它是一个二项式求和,首先从 k = 0 到 C,然后 m = 0 到 k,f = 0 到 Ck,这里 s 是一个函数,它接受 0 和 1 之间的输入并给出 (0, 1) 之间的输出。

我需要帮助找到一种有效的方法来在 python 中执行此操作。现在我使用的是三重循环,它工作得很好,但对于大型 C 来说效率不高。我目前使用的三重循环如下,

这里的 's' 本质上是线性的,但它可以采取任何需要的形状。'r' 也被视为 0.1

import numpy as np
from math import comb

def s(d):
  return d * (0.99 - 0.01) + 0.01

S = 0
C = 100

for k in range(C):
  for m in range(k):
    for f in range(C-k):
      S += comb(C, k) * (((0.1)**(k))*((0.9)**(C-k))) * comb(k, …
Run Code Online (Sandbox Code Playgroud)

python numpy scipy binomial-cdf

1
推荐指数
1
解决办法
73
查看次数