Mit Stan und Frontend - Paketen rstanarm
oder brms
ich kann einfach Daten für den Bayesian analysiert , wie ich zuvor mit gemischten Modellen wie lme
. Obwohl ich die meisten Bücher und Artikel von Kruschke-Gelman-Wagenmakers-etc auf meinem Schreibtisch habe, verraten diese nicht, wie ich die Ergebnisse für ein medizinisches Publikum zusammenfassen soll, das zwischen der Skylla des Bayesianischen Zorns und der Charybdis der medizinischen Gutachter hin- und hergerissen ist ( "Wir wollen Bedeutungen, nicht so diffuses Zeug").
Ein Beispiel: Die Magenfrequenz (1 / min) wird in drei Gruppen gemessen; gesunde Kontrollen sind die Referenz. Da es für jeden Teilnehmer mehrere Messungen gibt, habe ich à la frequentist das folgende gemischte Modell verwendet lme
:
summary(lme(freq_min~ group, random = ~1|study_id, data = mo))
Leicht bearbeitete Ergebnisse:
Fixed effects: freq_min ~ group
Value Std.Error DF t-value p-value
(Intercept) 2.712 0.0804 70 33.7 0.0000
groupno_symptoms 0.353 0.1180 27 3.0 0.0058
groupwith_symptoms 0.195 0.1174 27 1.7 0.1086
Der Einfachheit halber werde ich 2 * std Fehler als 95% CI verwenden.
Im frequentistischen Kontext hätte ich das folgendermaßen zusammengefasst:
- In der Kontrollgruppe lag die geschätzte Frequenz bei 2,7 / min (möglicherweise wird hier ein CI hinzugefügt, aber ich vermeide dies manchmal aufgrund der durch Absolut- und Differenz-CI verursachten Verwirrung).
- In der no_symptoms-Gruppe war die Frequenz um 0,4 / min höher, CI (0,11 bis 0,59) / min, p = 0,006 als bei der Kontrolle.
- In der with_symptoms-Gruppe war die Frequenz um 0,2 / min höher, CI (-0,04 bis 0,4) / min, p = 0,11 als bei der Kontrolle.
Dies ist ungefähr die maximal akzeptable Komplexität für eine medizinische Veröffentlichung. Der Prüfer wird mich wahrscheinlich bitten, im zweiten Fall "nicht signifikant" hinzuzufügen.
Hier ist das gleiche mit stan_lmer
und Standardprioren.
freq_stan = stan_lmer(freq_min~ group + (1|study_id), data = mo)
contrast lower_CredI frequency upper_CredI
(Intercept) 2.58322 2.714 2.846
groupno_symptoms 0.15579 0.346 0.535
groupwith_symptoms -0.00382 0.188 0.384
wobei CredI zu 90% glaubwürdige Intervalle sind (siehe die Rstanarm-Vignette, warum 90% als Standard verwendet wird.)
Fragen:
- Wie lässt sich die obige Zusammenfassung auf die Bayesianische Welt übertragen?
- Inwieweit ist eine Vorbesprechung erforderlich? Ich bin mir ziemlich sicher, dass die Zeitung mit der üblichen "subjektiven Annahme" zurückkommen wird, wenn ich die Prioritäten erwähne. oder zumindest mit "keine technische Diskussion, bitte". Alle bayesianischen Behörden fordern jedoch, dass die Auslegung nur im Zusammenhang mit Prioren gültig ist.
- Wie kann ich ein "Signifikanz" -Surrogat in der Formulierung liefern, ohne Bayes'sche Konzepte zu verraten? Etwas wie "glaubwürdig anders" (uuuh ...) oder fast glaubwürdig anders (buoha ..., klingt wie "am Rande der Bedeutung").
Jonah Gabry und Ben Goodrich (2016). rstanarm: Bayesian Applied Regression Modeling über Stan. R-Paket Version 2.9.0-3. https://CRAN.R-project.org/package=rstanarm
Stan-Entwicklungsteam (2015). Stan: Eine C ++ - Bibliothek für Wahrscheinlichkeiten und Stichproben, Version 2.8.0. URL http://mc-stan.org/ .
Paul-Christian Bürkner (2016). brms: Bayesian Regression Models mit Stan. R-Paket Version 0.8.0. https://CRAN.R-project.org/package=brms
Pinheiro J., Bates D., DebRoy S., Sarkar D. und R Core Team (2016). nlme: Lineare und nichtlineare Modelle mit gemischten Effekten . R-Paket Version 3.1-124, http://CRAN.R-project.org/package=nlme>.
group_nosymptoms
und dann sagen, die Wahrscheinlichkeit, dass er negativ ist, ist 1 / draws
. Aber beim Abfangen wird die Kette für diese Daten niemals in den negativen Bereich wandern, also könnte man sagen, dass die Wahrscheinlichkeit geringer ist als 1 / draws
.
mean(as.matrix(freq_stan)[,"groupwith_symptoms"] < 0)
.