Należy to łatwo rozwiązać za pomocą wnioskowania bayesowskiego. Znasz właściwości pomiarowe poszczególnych punktów w odniesieniu do ich prawdziwej wartości i chcesz wnioskować o średniej populacji i SD, które wygenerowały prawdziwe wartości. To jest model hierarchiczny.
Ponowne odtworzenie problemu (podstawy Bayesa)
Zauważ, że podczas gdy ortodoksyjne statystyki dają ci jedną średnią, w ramach bayesowskich otrzymujesz rozkład wiarygodnych wartości średniej. Np. Obserwacje (1, 2, 3) z SD (2, 2, 3) mogły zostać wygenerowane na podstawie szacunku maksymalnego prawdopodobieństwa wynoszącego 2, ale również średnio 2,1 lub 1,8, choć nieco mniej prawdopodobne (biorąc pod uwagę dane) niż MLE. Więc oprócz SD, również wnioskujemy o średniej .
Kolejną różnicą pojęciową jest to, że przed dokonaniem obserwacji musisz zdefiniować swój stan wiedzy . Nazywamy to priors . Być może wiesz z góry, że określony obszar został zeskanowany i ma określony zakres wysokości. Całkowitym brakiem wiedzy byłoby posiadanie jednolitych (-90, 90) stopni jak wcześniej w X i Y i być może jednolitych (0, 10000) metrów wysokości (nad oceanem, poniżej najwyższego punktu na ziemi). Musisz zdefiniować rozkłady priors dla wszystkich parametrów, które chcesz oszacować, tj. Uzyskać rozkłady tylne . Dotyczy to również odchylenia standardowego.
Przeformułowując twój problem, zakładam, że chcesz wnioskować wiarygodne wartości dla trzech średnich (X.mean, Y.mean, X.mean) i trzech standardowych odchyleń (X.sd, Y.sd, X.sd), które mogłyby mieć wygenerował twoje dane.
Model
Używając standardowej składni BŁĘDÓW (do uruchomienia tego użyj pakietów WinBUGS, OpenBUGS, JAGS, stan lub innych), Twój model wyglądałby mniej więcej tak:
model {
# Set priors on population parameters
X.mean ~ dunif(-90, 90)
Y.mean ~ dunif(-90, 90)
Z.mean ~ dunif(0, 10000)
X.sd ~ dunif(0, 10) # use something with better properties, i.e. Jeffreys prior.
Y.sd ~ dunif(0, 10)
Z.sd ~ dunif(0, 100)
# Loop through data (or: set up plates)
# assuming observed(x, sd(x), y, sd(y) z, sd(z)) = d[i, 1:6]
for(i in 1:n.obs) {
# The true value was generated from population parameters
X[i] ~ dnorm(X.mean, X.sd^-2) #^-2 converts from SD to precision
Y[i] ~ dnorm(Y.mean, Y.sd^-2)
Z[i] ~ dnorm(Z.mean, Z.sd^-2)
# The observation was generated from the true value and a known measurement error
d[i, 1] ~ dnorm(X[i], d[i, 2]^-2) #^-2 converts from SD to precision
d[i, 3] ~ dnorm(Y[i], d[i, 4]^-2)
d[i, 5] ~ dnorm(Z[i], d[i, 6]^-2)
}
}
Oczywiście monitorujesz parametry .mean i .sd i używasz ich tylnych stron do wnioskowania.
Symulacja
Symulowałem niektóre takie dane:
# Simulate 500 data points
x = rnorm(500, -10, 5) # mean -10, sd 5
y = rnorm(500, 20, 5) # mean 20, sd 4
z = rnorm(500, 2000, 10) # mean 2000, sd 10
d = cbind(x, 0.1, y, 0.1, z, 3) # added constant measurement errors of 0.1 deg, 0.1 deg and 3 meters
n.obs = dim(d)[1]
Następnie uruchomiono model przy użyciu JAGS dla 2000 iteracji po wypaleniu 500 iteracji. Oto wynik dla X.sd.
Niebieski zakres wskazuje 95% przedział największej gęstości tylnej lub wiarygodnego (jeśli uważasz, że parametr jest obserwowany po zaobserwowaniu danych. Zauważ, że nie podaje tego zwykły przedział ufności).
Czerwona pionowa linia jest oszacowaniem MLE surowych danych. Zwykle jest tak, że najbardziej prawdopodobny parametr w estymacji Bayesa jest również najbardziej prawdopodobnym (maksymalnym prawdopodobieństwem) parametrem w statystykach ortodoksyjnych. Ale nie powinieneś zbytnio przejmować się górną częścią tylnej części ciała. Średnia lub mediana jest lepsza, jeśli chcesz sprowadzić ją do pojedynczej liczby.
Zauważ, że MLE / top nie ma wartości 5, ponieważ dane zostały wygenerowane losowo, a nie z powodu złych statystyk.
Ograniczenia
Jest to prosty model, który ma obecnie kilka wad.
- Nie obsługuje tożsamości -90 i 90 stopni. Można to jednak zrobić, wprowadzając pewną zmienną pośrednią, która przesuwa skrajne wartości szacowanych parametrów do zakresu (-90, 90).
- X, Y i Z są obecnie modelowane jako niezależne, chociaż prawdopodobnie są skorelowane i należy to wziąć pod uwagę, aby jak najlepiej wykorzystać dane. Zależy to od tego, czy urządzenie pomiarowe się poruszało (korelacja szeregowa i wspólny rozkład X, Y i Z dadzą wiele informacji), czy stoi w miejscu (niezależność jest w porządku). Na życzenie mogę rozwinąć odpowiedź, aby do tego podejść.
Powinienem wspomnieć, że istnieje wiele literatury na temat przestrzennych modeli bayesowskich, o których nie wiem.