Ich möchte Daten aus verschiedenen Quellen kombinieren.
Angenommen, ich möchte eine chemische Eigenschaft (z. B. einen Verteilungskoeffizienten ) abschätzen :
Ich habe einige empirische Daten, die aufgrund von Messfehlern um den Mittelwert variieren.
Und zweitens habe ich ein Modell, das eine Schätzung aus anderen Informationen vorhersagt (das Modell weist auch einige Unsicherheiten auf).
Wie kann ich diese beiden Datensätze kombinieren? [Die kombinierte Schätzung wird in einem anderen Modell als Prädiktor verwendet].
Metaanalyse und Bayes'sche Methoden scheinen geeignet zu sein. Ich habe jedoch nicht viele Referenzen und Ideen zur Implementierung gefunden (ich verwende R, bin aber auch mit Python und C ++ vertraut).
Vielen Dank.
Aktualisieren
Ok, hier ist ein realeres Beispiel:
Um die Toxizität einer Chemikalie (typischerweise ausgedrückt als = Konzentration, bei der 50% der Tiere sterben) Laborexperimente durchgeführt. Glücklicherweise werden die Ergebnisse der Experimente in einer Datenbank (EPA) gesammelt .
Hier einige Werte für das Insektizid Lindan :
### Toxicity of Lindane in ug/L
epa <- c(850 ,6300 ,6500 ,8000, 1990 ,516, 6442 ,1870, 1870, 2000 ,250 ,62000,
2600,1000,485,1190,1790,390,1790,750000,1000,800
)
hist(log10(epa))
# or in mol / L
# molecular weight of Lindane
mw = 290.83 # [g/mol]
hist(log10(epa/ (mw * 1000000)))
Es gibt jedoch auch einige Modelle zur Vorhersage der Toxizität anhand chemischer Eigenschaften ( QSAR ). Eines dieser Modelle sagt die Toxizität anhand des Octanol / Wasser-Verteilungskoeffizienten ( ) voraus :
Der Verteilungskoeffizient von Lindan beträgt und die vorhergesagte Toxizität ist .
lkow = 3.8
mod1 <- -0.94 * lkow - 1.33
mod1
Gibt es eine gute Möglichkeit, diese beiden unterschiedlichen Informationen (Laborexperimente und Modellvorhersagen) zu kombinieren?
hist(log10(epa/ (mw * 1000000)))
abline(v = mod1, col = 'steelblue')
Das kombinierte wird später in einem Modell als Prädiktor verwendet. Daher wäre ein einzelner (kombinierter) Wert eine einfache Lösung.
Eine Distribution kann jedoch auch nützlich sein - wenn dies bei der Modellierung möglich ist (wie?).
quelle
Antworten:
Ihre Modellschätzung wäre ein nützlicher Vorgänger.
Ich habe den folgenden Ansatz in LeBauer et al. 2013 angewendet und den Code von priors_demo.Rmd unten angepasst .
Berücksichtigen Sie Ihr Modell, um dies vor der Verwendung der Simulation zu parametrisieren
Angenommen, und ; ist bekannt (ein fester Parameter; beispielsweise sind physikalische Konstanten im Vergleich zu anderen Parametern oft sehr genau bekannt).B 1 ~ N ( 1,33 , 0,1 ) Lkowb0∼N(0.94,0.03) b1∼N(1.33,0.1) Lkow
Darüber hinaus gibt es einige Modellunsicherheiten. Ich mache dieses , sollte aber eine genaue Darstellung Ihrer Informationen sein, z. B. könnte der RMSE des Modells verwendet werden, um den Maßstab des Standards zu bestimmen Abweichung. Ich mache dies absichtlich zu einem "informativen" Prior.ϵ∼N(0,1)
Stellen
theprior
Sie sich jetzt vor, Ihr Prior undsind Ihre Daten:
Der einfachste Weg, den Prior zu verwenden, besteht darin, eine Verteilung zu parametrisieren, die JAGS erkennt.
Dies kann auf viele Arten erfolgen. Da die Daten nicht normal sein müssen, können Sie eine Verteilung mithilfe des Pakets suchenN(−4.9,1.04) N(−4.9,2)
fitdistrplus
. wir der Einfachheit halber einfach an, dass Ihr PriorN(mean(theprior), sd(theprior))
oder ungefähr . Wenn Sie die Varianz aufblasen möchten (um den Daten mehr Stärke zu verleihen), können SieN ( - 4,9 , 2 )Dann können wir ein Modell mit JAGS anpassen
Zum Schluss noch eine Handlung:
Und Sie können davon ausgehen
mu=5.08
, dass Sie den mittleren Parameterwert (pink) undsd = 0.8
seine Standardabweichung schätzen . Die hintere prädiktive Schätzung des logLC_50 (von dem Sie Ihre Proben beziehen) ist rot.Referenz
LeBauer, DS, D. Wang, K. Richter, C. Davidson und MC Dietze. (2013). Erleichterung von Rückkopplungen zwischen Feldmessungen und Ökosystemmodellen. Ecological Monographs 83: 133–154. doi: 10.1890 / 12-0137.1
quelle