本文的作用:
1 了解数学原理
2 用python进行可视化
3 通过计算验证数学原理
高斯分布(正太分布)
参考文章
常见分布的期望和方差推导_正态分布的期望和方差推导-优快云博客
高斯分布曲线
均值推导公式
方差推导公式
代码
import numpy as np
import matplotlib.pyplot as plt
# 定义高斯分布函数
def gaussian(x, mu, sig):
return np.exp(-np.power(x - mu, 2) / (2 * np.power(sig, 2))) / (np.sqrt(2 * np.pi) * sig)
# 参数
mu, sig = 5.0, 2.0 # 均值和标准差
xmin = mu - 20
xmax = mu + 20
xnum = 200
dx = (xmax - xmin) / xnum
x = np.linspace(xmin, xmax, xnum) # x轴的数据范围
# 计算高斯分布
gauss_dist = [gaussian(i, mu, sig) for i in x]
for i in range(xnum):
print('x={},gauss_dist={}'.format(x[i], gauss_dist[i]))
# 绘图
plt.plot(x, gauss_dist, color='blue', label='Gaussian Distribution')
plt.title('Gaussian Distribution mu={} sigma={}'.format(mu, sig))
plt.xlabel('X')
plt.ylabel('Probability Density')
plt.legend()
plt.show()
mean = 0 # 计算均值
fx_sum = 0 # 计算密度函数的积分
deviation = 0 # 计算方差,这个方差其实和我们平常说的方差有些区别,因为它还要考虑概率分布
for i in range(200):
# 这里采用的计算方法是,积分的近似计算,将积分划分为足够小的粒度,就可以采用计算"面积"的方式来近似计算积分
mean += x[i] * gauss_dist[i] * dx
fx_sum += gauss_dist[i] * dx
deviation += np.power(x[i] - mu, 2) * gauss_dist[i] * dx
print('mean={},fx_sum={},deviation={},var={}'.format(mean, fx_sum, deviation, np.var(x)))