超楕円体の表面から均一にサンプリングする方法(一定のマハラノビス距離)


12

実数値の多変量の場合、平均からのマハラノビス距離が定数である表面からポイントを均一にサンプリングする方法はありますか?

編集:これは、方程式を満たすハイパー楕円体の表面から均一にサンプリングポイントに要約されます。

バツμTΣ1バツμ=d2

より正確には、「均一に」とは、超曲面の各面積要素dAが同じ確率質量を含むようなサンプルを意味します。


1
バツcE[バツ]

1
「均一に」の適切な定義が必要になると思います。その理由は次のとおりです。2次元では、この点のセットは楕円に沿っています。同じ長さのチャンスが等しい、同じ角度のチャンスが等しい、または変数が標準化されている場合の同じ長さのチャンスが等しいなどの方法で、その楕円からサンプリングすることを想定していますか?このサンプリングが何を達成するのかを説明できれば、あなたが何を求めているのかを知るのに十分な情報が得られるかもしれません。
whuber

1
球体の表面から均一にサンプリングし、それを楕円体にマッピングしても、楕円体で均一なサンプルが得られないことを理解しています。だから、楕円体の表面から均一にサンプリングする方法が必要です。
サチンヴェルネカー

1
ハイパーサーフェスの各面積要素dAに同じ確率質量が含まれているという意味で、楕円体の表面でサンプルを均一にしたいですか?
セクストゥスエンピリカス

1
なぜ、どのように、どこでこの均一なサンプルを適用するのですか?そのような情報は、最良/十分な戦略の実現に役立つ場合があります。たとえば、異なる楕円体軸がそれほど大きくない場合、(1)球体でのサンプリング、(2)楕円体への絞り込み、(3)表面積の絞り込み率の計算による除去サンプリングを使用できます(4)そのレートの逆数に従ってサンプルを拒否します。
セクストスエンピリカス

回答:


3

異なる楕円体軸の差が大きすぎない場合は、リジェクションサンプリングを使用するのが適切です(大きな差がある場合は、多くをリジェクトして実行不可能にします)

  • (1)超球上のサンプル
  • (2)それを超楕円体に絞る
  • (3)表面積が圧迫された割合を計算する
  • (4)そのレートに従ってサンプルを拒否します。

2Dの例

例

set.seed(1)
#some matrix to transform n-sphere (in this case 2x2)
m <- matrix(c(1, 0.55, 0.55, 0.55), 2)

# sample multinomial with identity covariance matrix
x <- cbind(rnorm(3000, 0, 1), rnorm(3000, 0, 1))
l1 <- sqrt(x[,1]^2 + x[,2]^2)

# perpendicular vector
per <- cbind(x[,2], -x[,1])

# transform x
x <- x %*% m
# transform perpendicular vector (to see how the area transforms)
per2 <- per %*% m

# get onto unit-"sphere"/ellipsoid
x <- x/l1

# this is how the area contracted
contract <- sqrt(per2[,1]^2 + per2[,2]^2) / sqrt(per[,1]^2 + per[,2]^2)

# then this is how we should choose to reject samples 
p <- contract/max(contract)

# rejecting
choose <- which( rbinom(n=length(p), size=1, p=p) == 1)

#plotting
plot(x[1:length(choose), 1], x[1:length(choose), 2],
     xlim=c(-1.2, 1.2), ylim=c(-1.2, 1.2),
     xlab = expression(x[1]), ylab = expression(x[2]),
     bg=rgb(0, 0, 0, 0.01), cex=0.6, pch=21, col=rgb(0, 0, 0, 0.01))
title("squeezed uniform circle \n ")

#plotting
plot(x[choose,1], x[choose,2],
     xlim=c(-1.2, 1.2), ylim=c(-1.2, 1.2),
     xlab = expression(x[1]), ylab = expression(x[2]),
     bg=rgb(0, 0, 0, 0.01), cex=0.6, pch=21, col=rgb(0, 0, 0, 0.01))
title("squeezed uniform circle \n  with rejection sampling")
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.