Laplace分布的概率密度函數的形式是這樣的:
$p(x) = \frac{1}{2 \lambda} e^{-\frac{\vert x –\mu \vert}{\lambda}}$ 一般$\mu$的取值為0,所以形式如下:
$p(x) = \frac{1}{2 \lambda} e^{-\frac{\vert x \vert}{\lambda}}$
它是由兩個指數函數組成的,所以又叫做雙指數函數分布(double exponential distribution)
均值和方差
均值的求解,若X的概率密度函數為f(X),那么X的均值為 $E(X) = \int_{- \infty}^{+ \infty} xf(x) dx$,代入以后可以發現里面的積分函數為奇函數,所以均值為0.
方差根據$D(X) = E(X^2)-(E(X))^2$,因為后面一項為0,所以主要求前一項$E(X^2)$,$E(X^2) = \int_{- \infty}^{+ \infty} x^2f(x)dx$ 根據積分公式$\int udv = uv-vdu$進行求解,得到方差為$2{\lambda}^2$
使用pyplot畫概率分布圖
import matplotlib.pyplot as plt import numpy as np def laplace_function(x, lambda_): return (1/(2*lambda_)) * np.e**(-1*(np.abs(x)/lambda_)) x = np.linspace(-5,5,10000) y1 = [laplace_function(x_,1) for x_ in x] y2 = [laplace_function(x_,2) for x_ in x] y3 = [laplace_function(x_,0.5) for x_ in x] plt.plot(x, y1, color='r', label="lambda:1") plt.plot(x, y2, color='g', label="lambda:2") plt.plot(x, y3, color='b', label="lambda:0.5") plt.title("Laplace distribution") plt.legend() plt.show()
使用np.random.laplace獲得隨機樣本的值
np.random.laplace可以獲得拉普拉斯分布的隨機值,參數主要如下:
loc:就是上面的$\mu$,控制偏移。
scale: 就是上面的$\lambda$控制縮放。
size: 是產生數據的個數
print(np.random.laplace(0,1,10))
產生結果如下:
[-0.56017859 -2.11417277 -1.05903743 1.7220117 0.68025748 -0.10421514 -0.61471549 0.96146946 -3.40181804 -0.89675566]
下面我們產生很多數據,然后用直方圖把它們畫出來,可以看出來它們符合Laplace分布。
import numpy as np laplace1 = np.random.laplace(0, 1, 10000) laplace2 = np.random.laplace(0, 2, 10000) import matplotlib.pyplot as plt fig, (ax1, ax2) = plt.subplots(1,2, sharex=True, sharey=True) ax1.hist(laplace1,bins=1000, label="lambda:1") ax1.legend() ax2.hist(laplace2, bins=1000, label="lambda:2") ax2.legend() plt.show()