相関付きの多次元正規乱数の生成
のメモ。
相関付きの次元正規乱数を生成するには次のようにする。
の相関行列が次のように与えられているとする。
$$ \displaystyle R = \left( \begin{array}{cccc} 1 & \rho_{1,2} & \ldots & \rho_{1,N} \\ \rho_{1,2} & 1 & \ldots & \rho_{2,N} \\ \vdots & & \ddots & \vdots \\ \rho_{N,1} & \cdots & & \rho_{N,N} \end{array} \right) $$
は対称行列である。個の独立な正規乱数をとする。つまり、で、は、次元の単位行列である。 を生成する方法はBox-Muller法など良く知られているので、省略する。
相関行列を持つ次元正規乱数を生成するには、以下を満たす上三角行列を求めれば良い。
$$ \displaystyle A^{T}A = R $$
からは
$$ X = ZA $$
で求まる。
の求め方
を一般の次元で求める方法は、コレスキー分解として知られている。
が小さい場合は手計算で求めることもでき、の場合は、
$$ A = \left( \begin{array}{cc} 1 & \rho \\ 0 & \sqrt{1 - \rho^{2}} \end{array} \right) $$
で、の場合は
$$ A = \left( \begin{array}{ccc} 1 & \rho_{1,2} & \rho_{1,3} \\ 0 & \sqrt{1 - \rho_{1,2}^{2}} & \frac{\rho_{2,3}−\rho_{1,2}\rho_{1,3}}{\sqrt{1−\rho_{1,2}^{2}}} \\ 0 & 0 & \sqrt{1−\frac{\rho_{2,3}^{2}−2\rho_{1,2}\rho_{1,3}\rho_{2,3}+\rho_{1,3}^{2}}{1−\rho_{1,2}^{2}}} \end{array} \right) $$
となる。見て分かる様に次元があがると、一般的に解くのは非常に面倒である。一応の場合の求め方を記しておくと、
$$ A = \left( \begin{array}{ccc} a & b & c \\ 0 & d & e \\ 0 & 0 & f \end{array} \right) $$
とおけば、
$$ A^{T}A = \left( \begin{array}{ccc} a^{2} & ab & ac \\ ab & d^{2}+b^{2} & de+bc \\ ac & de+bc & f^{2}+e^{2}+c^{2} \end{array} \right) $$
となるから、これとの各成分を比較して、を求める。特に一行目はすぐに求まるので、2行目、3行目と求めて行けば良い。
4次元以降も同様に解けるが、かなり大変になる。