python - (Python) 马尔可夫、切比雪夫、切尔诺夫上界函数

标签 python statistics probability data-science markov

我在学习道路上遇到了一项任务。

对于均值 μ=np 和方差 σ**2=np(1−p) 的二项式分布 X∼Bp,n,我们希望上限概率 P (X≥c⋅μ) 对于 c≥1。 三界介绍:

Formulas

任务是分别为每个不等式编写三个函数。它们必须将 n、p 和 c 作为输入,并返回由上述马尔可夫、切比雪夫和切尔诺夫不等式给出的 P(X≥c⋅np) 的上限输出。

还有一个IO的例子:

代码:

print Markov(100.,0.2,1.5)

print Chebyshev(100.,0.2,1.5)

print Chernoff(100.,0.2,1.5)

Output

0.6666666666666666

0.16

0.1353352832366127

我完全卡住了。我只是不知道如何将所有数学插入函数(或如何在此处进行算法思考)。如果有人能帮助我,那将是非常有帮助的!

附注并且任务条件不允许所有库,除了 math.exp

最佳答案

好吧,让我们看看给出的是什么:

输入值和派生值:

  • n = 100
  • p = 0.2
  • c = 1.5
  • m = n*p = 100 * 0.2 = 20
  • s2 = n*p*(1-p) = 16
  • s = sqrt(s2) = sqrt(16) = 4

您有多个 P(X>=a*m) 形式的不等式并且您需要为术语 P(X>=c*m) 提供界限,所以你需要考虑如何a涉及 c在所有情况下。

马尔可夫不等式:P(X>=a*m) <= 1/a

您被要求实现 Markov(n,p,c)这将返回 P(X>=c*m) 的上限.自从

  P(X>=a*m)
= P(X>=c*m)

很明显a == c , 你得到 1/a = 1/c .好吧,这只是

def Markov(n, p, c):
  return 1.0/c

>>> Markov(100,0.2,1.5)
0.6666666666666666

这很容易,不是吗?

Chernoff 不等式指出P(X>=(1+d)*m) <= exp(-d**2/(2+d)*m)

首先,让我们验证如果

  P(X>=(1+d)*m)
= P(X>=c    *m)

然后

1+d = c
  d = c-1

这为我们提供了计算上限所需的一切:

def Chernoff(n, p, c):
  d = c-1
  m = n*p
  return math.exp(-d**2/(2+d)*m)

>>> Chernoff(100,0.2,1.5)
0.1353352832366127

切比雪夫不等式P(X>=m+k*s)通过 1/k**2

再一次,如果

  P(X>=c*m)
= P(X>=m+k*s)

然后

c*m     = m+k*s
m*(c-1) = k*s
k       = m*(c-1)/s

然后直接去实现

def Chebyshev(n, p, c):
  m = n*p
  s = math.sqrt(n*p*(1-p))
  k = m*(c-1)/s
  return 1/k**2

>>> Chebyshev(100,0.2,1.5)
0.16

关于python - (Python) 马尔可夫、切比雪夫、切尔诺夫上界函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47953098/

相关文章:

python - 文件读取在 Brython/Python 中不起作用

python - STORE_NAME 和 STORE_GLOBAL 在主要范围内是等价的吗?

python - 如何在列表中查找以用户要求的某个字母开头的单词

python - 如何计算几个进球转化率的统计显着性?

java - 有没有Java概率库?

c++ - 如何根据给定的 "relative probability"在圆内分配n个点,每个点距离圆心一定距离?

Python PIL jpeg 质量

python - Python 中用下限和上限替换离群值的函数

algorithm - 将英语单词分为罕见和常见

python - RandomForestClassifier(sklearn)的predict_proba(X)似乎是静态的?