有
k
k
k个离散的随机变量:
(
x
1
,
.
.
.
,
x
k
)
(x_1, ...,x_k)
(x1,...,xk),联合概率分布为:
P
(
x
1
,
.
.
.
,
x
k
)
P(x_1, ...,x_k)
P(x1,...,xk),
k
k
k个变量所有可能值的概率和为:1。
∑
x
1
∼
x
k
P
(
x
1
.
.
.
x
k
)
=
1.0
\sum_{x_1 \sim x_k} P(x_1...x_k) = 1.0
x1∼xk∑P(x1...xk)=1.0
边际概率, k k k个变量中的一个,记为: x j x_j xj
P ( x j . . . ) = ∑ a l l x b u t x j P ( x 1 , x 2 , . . . , x k ) P(x_j...) = \sum_{all_x but_{x_j}} P(x_1, x_2, ...,x_k) P(xj...)=allxbutxj∑P(x1,x2,...,xk)
边际期望:
E ( x j . . . ) = ∑ x j x j P ( x j . . . ) E(x_j...) = \sum_{x_j} x_j P(x_j...) E(xj...)=xj∑xjP(xj...)
边际方差:
V ( x j . . . ) = E ( x j 2 . . . ) − E ( x j . . . ) 2 V(x_j...) = E(x_j^2...) - E(x_j...)^2 V(xj...)=E(xj2...)−E(xj...)2
E ( x j 2 . . . ) = ∑ x j x j 2 P ( x j . . . ) E(x_j^2...) = \sum_{x_j} x_j^2 P(x_j...) E(xj2...)=xj∑xj2P(xj...)
生成 k k k个离散变量的随机变量: ( x 1 , x 2 , . . . , x k ) (x_1, x_2, ...,x_k) (x1,x2,...,xk)
例:假设一个多元离散随机变量:
(
x
1
,
x
2
,
x
3
)
(x_1, x_2, x_3)
(x1,x2,x3),
x
1
x_1
x1可能的取值为:
{
0
,
1
,
2
}
\{0,1,2\}
{0,1,2},
x
2
x_2
x2可能的取值为:
{
0
,
1
}
\{0, 1\}
{0,1},
x
3
x_3
x3可能的取值为:
{
1
,
2
,
3
}
\{1,2,3\}
{1,2,3},概率分布如下:
P
(
x
1
,
x
2
,
x
3
)
P(x_1, x_2, x_3)
P(x1,x2,x3)
| x 3 x_3 x3 | 1 | 2 | 3 | 1 | 2 | 3 |
|---|---|---|---|---|---|---|
| x 2 x_2 x2 | 0 | 1 | ||||
| x 1 x_1 x1 | ||||||
| 0 | 0.12 | 0.10 | 0.08 | 0.08 | 0.06 | 0.05 |
| 1 | 0.08 | 0.06 | 0.04 | 0.05 | 0.04 | 0.03 |
| 2 | 0.06 | 0.04 | 0.02 | 0.04 | 0.03 | 0.02 |
根据概率分布生成多元离散随机变量:
import numpy as np
import matplotlib.pyplot as plt
def multivariateDiscrete(num=10):
x1, x2, x3 = [], [], []
for i in range(10000):
u = np.random.uniform(0, 1)
temp = []
for k, v in {0:0.49,1:0.79,2:1.0}.items():
if v > u:
temp.append(k)
x1.append(np.min(temp))
u = np.random.uniform(0, 1)
temp = []
for k, v in {0: 0.612, 1:1.0}.items():
if v > u:
temp.append(k)
x2.append(np.min(temp))
u = np.random.uniform(0, 1)
temp = []
for k, v in {1:0.412, 2:0.737, 3:1.00}.items():
if v > u:
temp.append(k)
x3.append(np.min(temp))
return x1, x2, x3
