Dies sollte leicht durch Bayes'sche Inferenz gelöst werden können. Sie kennen die Messeigenschaften der einzelnen Punkte in Bezug auf ihren wahren Wert und möchten auf den Populationsmittelwert und die SD schließen, die die wahren Werte generiert haben. Dies ist ein hierarchisches Modell.
Umformulierung des Problems (Bayes-Grundlagen)
Beachten Sie, dass orthodoxe Statistiken nur einen Mittelwert liefern, während Sie im Bayes'schen Rahmen eine Verteilung der glaubwürdigen Werte des Mittelwerts erhalten. ZB könnten die Beobachtungen (1, 2, 3) mit SDs (2, 2, 3) durch die Maximum-Likelihood-Schätzung von 2, aber auch durch einen Mittelwert von 2,1 oder 1,8 erzeugt worden sein, obwohl dies (gemessen an den Daten) etwas weniger wahrscheinlich ist als die MLE. Neben dem SD schließen wir also auch den Mittelwert .
Ein weiterer konzeptioneller Unterschied besteht darin, dass Sie Ihren Wissensstand definieren müssen, bevor Sie Beobachtungen anstellen. Wir nennen das Priors . Möglicherweise wissen Sie im Voraus, dass ein bestimmter Bereich in einem bestimmten Höhenbereich gescannt wurde. Das völlige Fehlen von Wissen würde darin bestehen, einheitliche (-90, 90) Grad wie zuvor in X und Y und möglicherweise einheitliche (0, 10000) Meter in der Höhe (über dem Ozean, unter dem höchsten Punkt der Erde) zu haben. Sie müssen Prior-Verteilungen für alle Parameter definieren, die Sie schätzen möchten, dh für die Sie Posterior-Verteilungen erhalten möchten . Dies gilt auch für die Standardabweichung.
Wenn Sie also Ihr Problem umformulieren, gehe ich davon aus, dass Sie glaubwürdige Werte für drei Mittelwerte (X.Mittelwert, Y.Mittelwert, X.Mittelwert) und drei Standardabweichungen (X.SD, Y.SD, X.SD) ableiten möchten generiert Ihre Daten.
Das Model
Wenn Sie die Standard-BUGS-Syntax verwenden (verwenden Sie WinBUGS, OpenBUGS, JAGS, Stan oder andere Pakete, um dies auszuführen), würde Ihr Modell ungefähr so aussehen:
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)
}
}
Natürlich überwachen Sie die .mean- und .sd-Parameter und verwenden deren posterioren Parameter zur Inferenz.
Simulation
Ich habe einige Daten wie diese simuliert:
# 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]
Anschließend wurde das Modell mit JAGS für 2000 Iterationen nach einem Burnin von 500 Iterationen ausgeführt. Hier ist das Ergebnis für X.sd.
Der blaue Bereich gibt das 95% -ige Intervall für die höchste posteriore Dichte oder das glaubwürdige Intervall an (wenn Sie glauben, dass der Parameter nach der Beobachtung der Daten ermittelt wurde. Beachten Sie, dass ein orthodoxes Konfidenzintervall dies nicht ergibt).
Die rote vertikale Linie ist die MLE-Schätzung der Rohdaten. Normalerweise ist der wahrscheinlichste Parameter in der Bayes'schen Schätzung auch der wahrscheinlichste (maximale Wahrscheinlichkeits-) Parameter in orthodoxen Statistiken. Aber Sie sollten sich nicht zu sehr um die Oberseite des Seitenzahns kümmern. Der Mittelwert oder Median ist besser, wenn Sie ihn auf eine einzelne Zahl reduzieren möchten.
Beachten Sie, dass MLE / top nicht bei 5 liegt, da die Daten zufällig generiert wurden und nicht aufgrund falscher Statistiken.
Einschränkungen
Dies ist ein einfaches Modell, das derzeit mehrere Mängel aufweist.
- Die Identität von -90 und 90 Grad wird nicht verarbeitet. Dies kann jedoch erreicht werden, indem eine Zwischenvariable erstellt wird, die die Extremwerte der geschätzten Parameter in den Bereich (-90, 90) verschiebt.
- X, Y und Z werden derzeit als unabhängig modelliert, obwohl sie wahrscheinlich korreliert sind. Dies sollte berücksichtigt werden, um die Daten optimal zu nutzen. Dies hängt davon ab, ob sich das Messgerät bewegt hat (serielle Korrelation und gemeinsame Verteilung von X, Y und Z liefern Ihnen viele Informationen) oder ob es stillsteht (Unabhängigkeit ist in Ordnung). Ich kann die Antwort erweitern, um dies zu erreichen, wenn dies gewünscht wird.
Ich sollte erwähnen, dass es eine Menge Literatur zu räumlichen Bayes'schen Modellen gibt, über die ich mich nicht auskenne.