2010-12-15 2 views
3

平均Mと共分散行列Vを持つ高次元ガウス分布を持っています.Vを考慮して、点pからMまでの距離を計算したいと思いますそれがMからpの標準偏差の距離であると推測する)。点pから高次元ガウス分布(M、V)までの距離を計算する

差別的に言い方をすれば、私はMから楕円1シグマを取り、pがその楕円の内側にあるかどうかをチェックしたいと思う。

+0

はそれを考慮に共分散を取ることはありませんので、この解決策は、(楕円形で、「斜め」である)、動作しませんhttp://math.stackexchange.com/ – Jacob

答えて

2

によって提供されますしたがって、有効なスカラ積を定義します。ちなみにinv(V)もあります。

d1 = sqrt((M-p)'*V*(M-p)); 
d2 = sqrt((M-p)'*inv(V)*(M-p)); 

1が(おそらくいくつかの不要な括弧)としてd2を書き換えますMatlabの道を:

したがって、Mおよびpは列ベクトルであると仮定し、次のような距離を定義することができ

d2 = sqrt((M-p)'*(V\(M-p))); 

良いことは、Vが単位行列である場合、d1==d2であり、これは古典的な真理値の距離に対応するということです。あなたは、d1またはd2を使用しなければなりません(私の仕事の一部は教えています)。多次元の場合は1Dの特定のケースのみである(またはいくつかの数値実験を実行する)ため、多次元ガウスの式を書き、それを1Dの場合と比較する。

NB:非常に高次元の空間や、テストするための非常に多くの点では、Vの固有ベクトルと固有値(すなわち、楕円の主軸とその対応する分散)から巧妙な/より速い方法を見つけることができます。

これが役に立ちます。

A.

+0

これはそうだ。ありがとうございました! –

+0

物事には名前があります:[マハラノビス距離](https://en.wikipedia.org/wiki/Mahalanobis_distance)。 :-) –

0

多分私は完全にオフですが、これはちょうど各次元を求めているのと同じではありません。私はシグマの中にいますか?

擬似コード:

foreach(dimension d) 
    (M(d) - sigma(d) < p(d) < M(d) + sigma(d)) ? 

あなたは、pは、あなたのガウスのすべてのディメンション内にあるかどうかを知りたいので。だから、実際には、これはちょうどスペースの問題であり、あなたのガウスは何もする必要はありません(距離だけであるMとシグマを除いて)。私はユークリッド距離のための機能を知らないところその場所までの距離が、可能性が

all(M - sigma < p < M + sigma) 

MATLABでは、あなたのような何かを試みることができます。多分distが働くかもしれません:

dist(M, p) 

Mはスペースとpのちょうど1つのポイントでもあるからです。ちょうど2つのベクトル。 そして、最後のもの。あなたは、シグマの形で距離を知りたい:

% create a distance vector and divide it by sigma 
M - p ./ sigma 

私はそれがトリックを行うと思います。

+0

をお試しください。しかし、ありがとう! –

2

正規分布の与えられた点の確率を計算検討:

M = [1 -1];    %# mean vector 
V = [.9 .4; .4 .3];  %# covariance matrix 
p = [0.5 -1.5];   %# 2d-point 
prob = mvnpdf(p,M,V); %# probability P(p|mu,cov) 

機能MVNPDFVガウスの有効な共分散行列である場合、それはその後で統計ツールボックス

関連する問題