Log-normální rozdělení
původní náhodná proměnná: $x\in N(\mu,\sigma)$
nová náhodná proměnná: $y=e^x$
In [38]:
import numpy as np
import matplotlib.pyplot as plt
In [39]:
#hustota pravděpodobnosti normálního rozdělení
def normal_pdf(x,mu,sigma):
return 1/(np.sqrt(2*np.pi)*sigma)*np.exp(-(x-mu)**2/(2*sigma**2))
In [40]:
#vypočtená hustota pravděpodobnosti log-normálního rozdělení
def log_normal_pdf(y,mu,sigma):
return 1/(np.sqrt(2*np.pi)*y)*np.exp(-(np.log(y)-mu)**2/(2*sigma**2))
In [41]:
ndata=100000 #počet simulovaných hodnot
mu=0 #očekávaná hodnota normálního rozdělení
sigma=1 #standardní odchylka normálného rozdělení
x=np.random.normal(mu,sigma,ndata) #stará náhodná proměnná x N(0,1)
y=np.exp(x) #nová náhodná proměnná y=exp(x)
vykreslení histogramu původní náhodné proměnné $x$
In [42]:
biny=np.linspace(mu-5*sigma,mu+5*sigma,100)
plt.hist(x,bins=biny,density=True,label="simulace")
x_plot=np.arange(mu-5*sigma,mu+5*sigma,0.01)
y_norm=normal_pdf(x_plot,mu,sigma)
plt.plot(x_plot,y_norm,c='red',label="Gaussián")
plt.xlabel("x")
plt.ylabel("f(x)")
plt.legend()
plt.show()
vykreslení histogramu nové náhodné proměnné $y$
In [43]:
biny=np.linspace(0,20,100)
x_plot=np.arange(0.01,mu+20*sigma,0.01)
y_lognorm=log_normal_pdf(x_plot,mu,sigma)
plt.hist(y,bins=biny,density=True,label="simulace")
plt.plot(x_plot,y_lognorm,c='red',label="log-normální rozdělení")
plt.xlabel("y")
plt.ylabel("g(y)")
plt.legend()
plt.show()
In [ ]: