2017-08-07 11 views
1

Lets sagen, ich habe Modell eines Formulars y=a_{i} + b_{i,1}*x_{1} + b_{2}*x_{2}, wo i=1,2,...,12 und ich möchte dieses Modell mit rstanarm schätzen.Wie man verschiedene Priors mit Hilfe von rstanarm

Ist es möglich, verschiedene priors für jeden Intercept a_{i} einzustellen (so sagen wir die ersten 4 haben normal(location = 0, scale = 1, autoscale = TRUE), die nächsten 4 haben normal(location = 1, scale = 2, autoscale = TRUE), und die letzten 4 student_t(df = 1, location = 0, scale = NULL, autoscale = TRUE)). Ich würde auch gerne die gleichen priors für die b_{i,1} und zuletzt b_{2}~normal(location = 3, scale = 1, autoscale = TRUE) setzen.

Ist das mit rutanarm möglich?

Antwort

2

Es gibt höchstens einen Achsenabschnitt in den von unterstützten Modellen, aber Sie können den Achsenabschnitt unterdrücken, indem Sie -1 in die Formel aufnehmen und die Koeffizienten der Dummy-Variablen als Koeffizienten behandeln. Für Koeffizienten können Sie so etwas tun wie prior = student_t(df = c(rep(Inf, 8), rep(1, 4)), location = c(rep(0, 4), rep(1, 4), rep(0, 4)), scale = c(rep(1, 4), rep(2, 4), rep(1, 4)), autoscale = TRUE) Aber es scheint, dass Sie eine Art von einem hierarchischen Modell beabsichtigen, in dem Fall der Prior für die Abweichungen von den globalen Parametern kann nur multivariate normal sein. Siehe ?prior_decov.

+0

Vielen Dank für Ihre Antwort Ben. ** 1) ** Wenn ich es richtig verstehe, verursacht das Hinzufügen der "-1" auch keine Multikollinearität, richtig? Es ändert sich nur die Interpretation. ** 2) ** Was ich mit meinem Beispiel sagen wollte, ist, wenn Sie anstelle eines Vektors mit dem Standort und den Maßstabsparametern auch einen Vektor mit verschiedenen Verteilungen übergeben können (bitte korrigieren Sie mich, wenn ich falsch liege, aber In Ihrer Antwort transformieren Sie die Verteilung von t in Normal, indem Sie df manipulieren. – quant

+0

Wenn Sie in einer R-Formel "-1" oder "+ 0" haben, wird der Schnittpunkt entfernt und es kann eine weitere Ebene eines Faktors als Dummy-Variable enthalten. –

+1

Nein, im ** rstanarm ** -Paket können Sie keine Liste oder einen Zeichenvektor von Funktionen an das 'prior'-Argument übergeben. Sie können nur Vektoren für 'location',' scale', 'df' usw. an eine Funktion wie' student_t' übergeben. Da "Student_t" jedoch "normal" ist, wenn die Freiheitsgrade unendlich sind, bedeutet dies die Verwendung "anderer" Funktionen in dem Beispiel, das Sie ursprünglich angegeben haben. Mit der 'brm'-Funktion im ** brms ** R-Paket können Sie verschiedene Vorfamilien für verschiedene Parameter im von Stan geschätzten Modell angeben. –

Verwandte Themen