これには一般的な解決策がありますか?あなたはそれらを掛けなければなりませんが、実装するのは難しいです。単一のものからN次元正規分布を作成する(Pythonで)
2次元の場合、単一正規分布を表す2つのベクトルのouter productを使用できます。
これには一般的な解決策がありますか?あなたはそれらを掛けなければなりませんが、実装するのは難しいです。単一のものからN次元正規分布を作成する(Pythonで)
2次元の場合、単一正規分布を表す2つのベクトルのouter productを使用できます。
可能な解決策を見つけ、2dのケースでテストしました。それは良いようだが、私はより多くのケースでそれをテストします:
def normal_nd(*priors):
# Trivial case
if len(priors) == 1:
return priors
# General case
shape = []
for item in priors:
shape.append(len(item))
n = np.ones(shape)
for idx, _ in np.ndenumerate(n):
for ax, element in enumerate(idx):
n[idx] *= priors[ax][element]
return n
編集:私はあまりにも一般的なケースではそれをテスト は、正しい解決策であるようです! :)
一般的な解決策には、Cholesky decomposition of the variance/covariance matrixが含まれます。コレスキー分解は、Pythonでnumpy経由で利用できます。