scipyを使用して直交型の多変量ガウス分布を定義する際に問題があります。私は平均ベクトルと共分散行列を入力としてガウス関数を返す関数を書いています。Scipyを使用して直交型の多変量ガウス関数を定義する
def make_mvn_pdf(mu, sigma):
def f(x):
return sp.stats.multivariate_normal.pdf(x, mu, sigma)
return f
私はガウス分布を定義し、私は意味がありませんエラーが出るガウスへのインデックスにしようとするmake_mvn_pdfを使用しています。私は確率を取り戻すために密度の観測に渡ししよう
# define covariance matrix
Sigma = np.asarray([[1, .15], [.15, 1]])
# define propagator
B = np.diag([2, 2])
# define data
Obs = np.array([[-0.06895746],[ 0.18778 ]])
# define a Gaussian PDF:
g_int_func = make_mvn_pdf(mean = np.dot(B,Obs[t,:]), cov = Sigma)
:私は、平均ベクトルと共分散行列を定義し、make_mvn_pdfにそれらを渡すことによって開始
testarray=np.random.random((2,2))
g_int_func(testarray)
これは以下を返します。私が理解していないエラー。
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-50-083a1915f674> in <module>()
1 g_int_func = make_mvn_pdf(np.dot(B,Obs[t,:]),Gamma)
----> 2 g_int_func(testarray)
/Users/...in f(x)
17 def make_mvn_pdf(mu, sigma):
18 def f(x):
---> 19 return sp.stats.multivariate_normal.pdf(x, mu, sigma)
20 return f
21
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/scipy/stats/_multivariate.pyc in pdf(self, x, mean, cov, allow_singular)
427
428 """
--> 429 dim, mean, cov = _process_parameters(None, mean, cov)
430 x = _process_quantiles(x, dim)
431 psd = _PSD(cov, allow_singular=allow_singular)
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/scipy/stats/_multivariate.pyc in _process_parameters(dim, mean, cov)
54
55 if mean.ndim != 1 or mean.shape[0] != dim:
---> 56 raise ValueError("Array 'mean' must be a vector of length %d." % dim)
57 if cov.ndim == 0:
58 cov = cov * np.eye(dim)
ValueError: Array 'mean' must be a vector of length 2.
ValueErrorは、配列meanが長さ2のベクトルでなければならないと述べていますが、これが該当します。実際には、平均と共分散行列の次元と渡されるデータの長さはすべて2です。
ないことが重要しかし、ガンマ上記シグマとOBSでなければならないこと[1 ,:]あなたが[MCVE]にコードを並べ替えるでしOBS – user2687863
を読んでください(http://stackoverflow.com/help/mcve) ?現在、 't'は定義されておらず、' Obs'は完全に定義されていません。編集することなく単純にコピーして実行できる完璧な自己完結型のサンプルがあれば、私たちがあなたを助けるのはずっと簡単です。 –
ありがとうございました。非常にイライラしていた... – user2687863