Малювання зразків з багатоваріантного нормального розподілу з урахуванням квадратичних обмежень


Відповіді:


12

Офіційне вирішення цієї проблеми спочатку вимагає правильного визначення а

" розподіл з обмеженням, що || x || ^ 2 = 1 "Nd(μ,Σ)||x||2=1

Природним способом є визначення розподілу від . І застосувати це умовне до випадку . Якщо ми використовуємо полярні координати , Якобіаном перетворення є Тому умовна щільність розподілуXNd(μ,Σ)||X||=ϱϱ=1

x1=ϱcos(θ1)θ1[0,π]x2=ϱsin(θ1)cos(θ2)θ2[0,π]xd1=ϱ(i=1d2sin(θi))cos(θd1)θd1[0,2π]xd=ϱi=1d1sin(θi)
ϱd1i=1d2sin(θi)d1i
θ=(θ1,,θd1) задано є ϱ
f(θ|ϱ)exp12{(x(θ,ϱ)μ)TΣ1(x(θ,ϱ)μ)}i=1d2sin(θi)d1i

Висновок: Ця щільність відрізняється від простого нанесення Нормальної щільності до точки на одиничній сфері через якобійську.

Другий крок - розглянути цільову щільність та спроектуйте алгоритм Монте-Карло ланцюга Маркова для дослідження простору параметрів . Моя перша спроба була б у пробовідбірника Гіббса, ініціалізованого в точці на сфері, найближчій до , тобто, і протікаючи по одному куту за раз, таким чином, як Metropolis-in-Gibbs:

f(θ|ϱ=1)exp12{(x(θ,1)μ)TΣ1(x(θ,1)μ)}i=1d2sin(θi)d1i
[0,π]d2×[0,2π]μμ/||μ||
  1. Створити (де обчислюються суми modulo ) і прийміть це нове значення з вірогідністю щеθ1(t+1)U([θ1(t)δ1,θ1(t)+δ1])π
    f(θ1(t+1),θ2(t),...|ϱ=1)f(θ1(t),θ2(t),...|ϱ=1)1
    θ1(t+1)=θ1(t)
  2. Створити (де обчислюються суми modulo ) і прийміть це нове значення з вірогідністю іншийθ2(t+1)U([θ2(t)δ2,θ2(t)+δ2])π
    f(θ1(t+1),θ2(t+1),θ3(t),...|ϱ=1)f(θ1(t+1),θ2(t),θ3(t),...|ϱ=1)1
    θ2(t+1)=θ2(t)
  3. Створити (де суми обчислюються по модулю ) і приймаємо це нове значення з ймовірністю іншийθd1(t+1)U([θd1(t)δd1,θd1(t)+δd1])2π
    f(θ1(t+1),θ2(t+1),...,θd1(t+1)|ϱ=1)f(θ1(t+1),θ2(t+1),...,θd1(t)|ϱ=1)1
    θd1(t+1)=θd1(t)

Терези , , , можна масштабувати відповідно до швидкості прийняття кроків до досягнення ідеальної мети .δ1δ2δd150%

Ось код R для ілюстрації вищезазначених даних із значеннями за замовчуванням для та :μΣ

library(mvtnorm)
d=4
target=function(the,mu=1:d,sigma=diag(1/(1:d))){
 carte=cos(the[1])
 for (i in 2:(d-1))
  carte=c(carte,prod(sin(the[1:(i-1)]))*cos(the[i]))
 carte=c(carte,prod(sin(the[1:(d-1)])))
 prod(sin(the)^((d-2):0))*dmvnorm(carte,mean=mu,sigma=sigma)}
#Gibbs
T=1e4
#starting point
mu=(1:d)
mup=mu/sqrt(sum(mu^2))
mut=acos(mup[1])
for (i in 2:(d-1))
  mut=c(mut,acos(mup[i]/prod(sin(mut))))
thes=matrix(mut,nrow=T,ncol=d-1,byrow=TRUE)
delta=rep(pi/2,d-1)     #scale
past=target(thes[1,])   #current target
for (t in 2:T){
 thes[t,]=thes[t-1,]
 for (j in 1:(d-1)){
   prop=thes[t,]
   prop[j]=prop[j]+runif(1,-delta[j],delta[j])
   prop[j]=prop[j]%%(2*pi-(j<d-1)*pi)
   prof=target(prop)
   if (runif(1)<prof/past){
     past=prof;thes[t,]=prop}
   }
}

-3

||x||22=1 неможливо строго, оскільки - (безперервна) випадкова величина. Якщо ви хочете, щоб вона мала дисперсію 1, тобто (де тильда означає, що ми оцінюємо дисперсію), тоді вам потрібно буде вимагати її відхилення бути . Однак ця вимога може суперечити . Тобто, щоб отримати зразки з цією дисперсією, вам потрібна діагональ що дорівнює .xЕ[(х-мк)2]=~1н(х-мк)2=1н||х-н||22=1н1нΣΣ1н

Для вибірки форми цього розподілу в цілому ви можете створити стандартні нормали iid, а потім помножити на квадратний корінь , а потім додати засоби .Σ0,5Σмк


Дякую за Вашу відповідь. Один із способів, що я можу придумати, що призведе до того, що я хочу (але не є ефективним) - вибірка відхилень . Отже, це неможливо зробити. Але я шукаю ефективний спосіб зробити це.
Sobi
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.