이변량 정규 분포
5138 단어 statistics파이썬
\begin{equation}
\begin{pmatrix}
x \\
y
\end{pmatrix}
= N
\begin{pmatrix}
\begin{pmatrix}
\mu_x\\
\mu_y
\end{pmatrix}
_,
\begin{pmatrix}
\sigma_x^2 & \rho\sigma_x\sigma_y \\
\rho\sigma_x\sigma_y & \sigma_y^2 \\
\end{pmatrix}
\end{pmatrix}
\end{equation}
우선, $x=N(\mu_x,\sigma_x)$를 발생시킨다. 다음으로 x를 고정하여 y를 발생시키면 된다. 이 때의 y의 조건부 분포는
y|x \sim N(\mu_y + \rho\frac{\sigma_y}{\sigma_x}(x-\mu_x), (1-\rho^2)\sigma_y^2))
에 주어진다.
파이썬으로 구현하면
python3
import numpy as np
import matplotlib.pyplot as plt
def MVNORM(mu_x, sigma_x, mu_y, sigma_y, rho, N=1):
x = np.random.normal(mu_x, sigma_x, N)
y = np.random.normal(mu_y + rho*sigma_y/sigma_x*(x-mu_x), np.sqrt((1-rho**2)*sigma_y**2), N)
return([x,y])
#平均0、標準偏差9のxと相関係数0.9で相関のある平均3で標準偏差3のyを1000個発生させる
MV = MVNORM(0, 9, 3, 3, 0.9 ,1000)
plt.scatter(MV[0], MV[1])
plt.show()
SUMMARY = (np.mean(MV[0]), np.std(MV[0]), np.mean(MV[1]), np.std(MV[1]))
print("mean X: {0[0]:0.2f}, stdev X: {0[2]:0.2f}, mean Y: {0[1]:0.2f}, stdev Y: {0[3]:0.2f}".format(SUMMARY))
mean X: 0.14, stdev X: 9.09, mean Y: 2.99, stdev Y: 3.08
Reference
이 문제에 관하여(이변량 정규 분포), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sk427/items/7a7f2e404292aac07132텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)