(Python) 马尔科夫、切比雪夫、切尔诺夫上限函数

Posted

技术标签:

【中文标题】(Python) 马尔科夫、切比雪夫、切尔诺夫上限函数【英文标题】:(Python) Markov, Chebyshev, Chernoff upper bound functions 【发布时间】:2018-06-05 19:00:08 【问题描述】:

我在学习过程中遇到了一项任务。

对于均值 μ=np 和方差σ**2=np(1−p) 的二项分布 X∼Bp,n,我们希望将概率上限设置为P(X≥c⋅μ) for c≥1。 引入了三个界限:

Formulas

任务是分别为每个不等式编写三个函数。它们必须将n , p and 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 之外,任务条件不允许所有库

【问题讨论】:

python中马尔可夫不等式怎么写? X 不是矩阵吗? 如何获得以下值? -> n = 100 p = 0.2 c = 1.5 【参考方案1】:

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

输入值和派生值:

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

这很容易,不是吗?

切尔诺夫不等式指出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 与scipy计算距离:欧几里得,曼哈顿,切比雪夫

切比雪夫多项式

什么是切比雪夫多项式?

经验法则和切比雪夫法则

什么是切比雪夫多项式?它有什么重要性质

2019.4.15切比雪夫定理和经验法则