1、公式:
正态分布概率密度公式:
可通过转换为标准正态分布
2、概率密度:
标准正态分布在某个点的概率密度可用scipy.stats.norm.pdf计算,下面模拟计算-5~5的概率密度
from scipy import stats
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']#用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False#用来正常显示负号
#正态分布概率密度
X = []
Y = []
for a in np.linspace(-5, 5, 100):
y = stats.norm.pdf(a)
X.append(a)
Y.append(y)
plt.plot(X, Y)
plt.xlabel("x")
plt.ylabel("p")
plt.title("正态分布概率密度")
plt.show()
结果:
这个图怎么理解呢?这是连续型随机变量的概率密度,并不是说在某个点的概率就是在这个点发生的概率。这里可以理解为在0附近发生的可能性要大于在2附近发生的可能性。
3、累积概率密度(概率分布)
from scipy import stats
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']#用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False#用来正常显示负号
#正态分布概率密度
X = []
Y = []
for a in np.linspace(-5, 5, 100):
y = stats.norm.cdf(a)
X.append(a)
Y.append(y)
plt.plot(X, Y)
plt.xlabel("x")
plt.ylabel("p")
plt.title("正态分布累积概率分布")
plt.show()
结果
累计概率分布这个图比较好理解,例如在-2处的值就表示随机变量小于-2的概率。
3、查表
正态分布查表其实就是查累积概率分布。
设某校学生身高服从均值为160, 方差为3600的正态分布,那该校学生身高在180以下的学生比例是多少?
转换为标准正态分布,服从标准正态分布,,于是我们查标准正态分布表0.5的值,用
scipy.stats.norm.cdf(0.5)
from scipy import stats
p = stats.norm.cdf(0.5)
print(p)
结果:0.6914624612740131
即有69.1%的学生身高在180以下。
4、随机生成一组正态分布样本
import numpy as np
#生成15个均值为10,标准差为2的正态分布样本
r = np.random.normal(loc=10, scale=2, size=15)
print(r)
如果想2次生成的一样,可以设置seed
import numpy as np
#设置随机数种子seed
np.random.seed(456789)
#生成15个均值为10,标准差为2的正态分布样本
r = np.random.normal(loc=10, scale=2, size=15)
print(r)