import numpy as np
import scipy.stats as st
- 1
- 2
-
几率(odds)
p(B)=120:二十场比赛只赢一场
odds against B winning: o(B)=1−p(B)p(B)=19:
A赢19场比赛,B才会赢一场
1. 创建随机变量(rv:random variable)
-
泊松分布:
F_true = 1000 N = 50 F = st.poisson(F_true).rvs(N) # 泊松分布为离散型概率分布
- 1
- 2
- 3
- 4
也可以这样:
mu_true, sigma_true = 1000, 15 N = 100 F_true = st.norm(mu_true, sigma_true).rvs(N) F = st.poisson(F_true).rvs()
- 1
- 2
- 3
- 4
-
二项分布
# python >>> import scipy.stats as st >>> n, p = 100, .5 >>> X = st.binom(n, p) # 随机变量X:投100次硬币正面出现的个数 # 用二项分布表示 >>> X.mean() 50.0 # mu = n*p = 100*.5 >>> X.std() 5.0 # sigma = sqrt(n*p*q)=sqrt(100*.5*.5)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
st.binom(100, .5).rvs() ⇒ 采样(trial);
2. 连续性概率分布函数:pdf
pdf 表示的是函数,给一定输入值,就会得到一个输出值,而不是随机变量。
-
st.norm.pdf(0, loc=0, scale=1) ⇒ 12π√
如下代码绘制出 f(x)=12π√exp(−(x−1)22)
mu, sigma = 1, 1 xs = np.linspace(-5, 5, 1000) plt.plot(x, st.norm.pdf(xs, loc=mu, scale=sigma)) plt.show()
- 1
- 2
- 3
- 4
-
st.multivariate_normal:多元正态分布;
scipy.stats.multivariate_normal- 直接传递x,根据概率密度函数(pdf)获得其值;
x = np.linspace(0, 5, 10, endpoint=False) y = st.multivariate_normal.pdf(x, mean=2.5, cov=.5)
- 1
- 2
- 首先定义随机变量,再取得 pdf 在各个位置上的值;
x, y = np.mgrid[-1:1:.01, -1:1:.01] pos = np.empty(x.shape + (2,)) pos[:, :, 0] = x; pos[:, :, 1] = y rv = multivariate_normal([0, 0], [[1, 0], [0, 1]]) plt.contourf(x, y, rv.pdf(pos))
http://blog.csdn.net/lanchunhui/article/details/50357280