高斯分布(正态分布)
高斯分布可以写成如下形式:
ρ
s
(
x
)
=
(
1
s
)
∗
e
−
π
(
x
−
u
)
2
s
2
,
s
=
2
π
∗
σ
ρ_s (x)=(\frac{1}{s})*e ^\frac{-π(x-u)^2}{s^2},s=\sqrt{2π}*σ
ρs(x)=(s1)∗es2−π(x−u)2,s=2π∗σ
当u=0,s固定不变时, ρ s ( x ) ρ_s (x) ρs(x)只与x的值有关。
性质:
1.乘法概率分布(product distribution)
即多维的高斯分布可以写成一维高斯分布的乘积。
ρ
s
(
x
)
=
ρ
s
(
x
1
)
∗
ρ
s
(
x
2
)
∗
.
.
.
∗
ρ
s
(
x
n
)
ρ_s (x)=ρ_s (x_1)*ρ_s (x_2)*...*ρ_s (x_n)
ρs(x)=ρs(x1)∗ρs(x2)∗...∗ρs(xn)
n维高斯分布:
ρ
s
(
x
)
=
(
1
s
)
n
∗
e
−
π
║
x
║
2
s
2
ρ_s (x)=(\frac{1}{s})^n*e ^\frac{-π║x║^2}{s^2}
ρs(x)=(s1)n∗es2−π║x║2
2.球状对称(Spherically Symmetric)
一维的高斯分布是左右对称的,二维是中心对称的,三维是球状对称的。所以,对于n维的高斯分布, ρ s ( x ) ρ_s (x) ρs(x)值只与x到原点的距离有关,与如何选择坐标轴无关。
3.在线段上产生均匀分布的点(Generating Uniform Elements on Line Segment)
对于一维高斯分布来说,设一个正整数为M,当 s = 5 M s=5M s=5M时, 高斯分布上的点模m(m<M)后取值等价于从[0,m)内随机取值。也就是说,可以从高斯分布转换成模m的均匀分布(对于所有的m<M都成立)
代码:
# encoding: utf-8
#本人不太会写模x的结果,所以比较简单地实现了一下
import math
import numpy as np
import matplotlib.pyplot as plt
def func(x,s,m):
y=[]
for i in x:
c=(np.exp(-(i) ** 2*np.pi) / (s ** 2) / (s))+(np.exp(-(i-m) ** 2*np.pi) / (s ** 2) / (s))
for j in range(1,200):
c+=(np.exp(-(i+j*m) ** 2*np.pi) / (s ** 2) / (s))
c+=(np.exp(-(i-(j+1)*m) ** 2*np.pi) / (s ** 2) / (s))
y.append(c)
return y
m1=[0.7,0.9,1.0,1.2]
for m in m1:
s=1
x = np.linspace(0.1,m, 100)
y = func(x,s,m)
if m == 0.7:
plt.plot(x, y,'blue', linewidth=m,label='m=0.7,sig=1')
if m == 0.9:
plt.plot(x, y,'orange', linewidth=m,label='m=0.9,sig=1')
if m == 1.0:
plt.plot(x, y,'green', linewidth=m,label='m=1.0,sig=1')
if m == 1.2:
plt.plot(x, y,'red', linewidth=m,label='m=1.2,sig=1')
plt.legend()
plt.grid(True)
plt.show()
实验结果:
结论:可知当m越来越小并接近于0.5时,线段越来越趋近于一条水平直线。对于模m的x来说,相当于每个元素的取值概率都相同,从而能在线段上产生均匀分布的点。
这个性质能扩展到n维高斯分布。
参考资料:https://www.ichunqiu.com/course/50441