假设一个实验有 k k k个相互独立的结果: R 1 , R 2 , . . . R k R_1, R_2, ... R_k R1,R2,...Rk对应发生的概率分别是: p 1 , p 2 , . . . p k p_1, p_2, ...p_k p1,p2,...pk。且 ∑ i = 1 k p i = 1.0 \sum_{i=1}^k p_i = 1.0 ∑i=1kpi=1.0。独立重复 n n n次实验,每一种实验结果发生的次数可以用随机变量 x 1 , x 2 , . . x k x_1, x_2, .. x_k x1,x2,..xk来表示, ∑ i = 1 k x i = n \sum_{i=1}^k x_i = n ∑i=1kxi=n。
x i x_i xi的概率分布:
P ( x 1 , . . . , x k ) = n ! [ x 1 ! . . . x k ! ] p 1 x 1 . . . p k x k P(x_1, ..., x_k) = \frac{n!}{[x_1!...x_k!]p_1^{x_1} ... p_k^{x_k}} P(x1,...,xk)=[x1!...xk!]p1x1...pkxkn!
x i x_i xi的边际(期望和方差):
E
(
x
i
)
=
n
p
i
E(x_i) = np_i
E(xi)=npi
V
(
x
i
)
=
n
p
i
(
1
−
p
i
)
V(x_i) = np_i(1 - p_i)
V(xi)=npi(1−pi)
已知:多显示变量: ( x 1 , x 2 , . . . , x k ) (x_1, x_2, ...,x_k) (x1,x2,...,xk),发生的概率: ( p 1 , P 2 , . . . p k ) (p_1, P_2, ...p_k) (p1,P2,...pk)
例:假设一个实验只有三种结果可能发生,概率分别是:0.5, 0.3, 0.2。假设重复进行五次的独立实验,这种情况下每种情况出现的次数,即:随机的多项式变量: x 1 , x 2 , x 3 x_1, x_2, x_3 x1,x2,x3可能是多少?
import numpy as np
import matplotlib.pyplot as plt
def generateMultinomial(n = 100, k=3, probas=[0.5, 0.3, 0.2]):
x = [0, 0, 0]
for i in range(k):
p_ = probas[i]/np.sum(probas[i:])
n_ = n - np.sum(x[:i+1])
b = np.random.binomial(n_, p_)
x[i] = b
return x
