Skip to Tutorial Content

Empirischer Bayes

In einem früheren Abschnitt hatten wir folgende Daten:

Anzahl von getöteten oder schwer verletzten Autofahrern in England von Januar 1969 bis Dezember 1984

und hatten folgendes Modell angenommen:

\[ \begin{aligned} \sqrt{y_i} & \sim N(\mu_i, \sigma^2);\, i=1,\ldots,T=192 \\[2mm] \mu_i & = \alpha + \beta x_i + \gamma_i + \delta_i \end{aligned} \]

  • Für die Effekte \(\theta=(\alpha, \beta, \gamma_i, \delta_i)\) hatten wir jeweils Normalverteilungspriori angenommen.
  • Für den MCMC-Algorithmus ergab sich ein Gibbs-Sampler, da dies die semi-konjugierte Prioris sind, z.B.

\[ \theta|\tau \sim N(0,\tau) \Rightarrow \theta|\cdot\sim N(\tilde{\mu},\tilde{\tau}) \]

  • Das gilt nicht nur für die einzelnen Parameter, auch \(\theta\) insgesamt ist multivariat normalverteilt.
  • Würden wir \(\tau\) kennen, würden wir die Posteriori komplett kennen!

BayesX

Die Software BayesX schätzt für bestimmte Arten von Modellen realisiert mittels MCMC oder mittels empirischer Bayes-Ansätze.

BayesX is a software tool for estimating structured additive regression models. Structured additive regression embraces several well-known regression models such as generalized additive models (GAM), generalized additive mixed models (GAMM), generalized geoadditive mixed models (GGAMM), dynamic models, varying coefficient models, and geographically weighted regression within a unifying framework…

BayesX Logo

BayesX

Wir verwenden Daten und Modell aus dem vorherigen Abschnitt und das Paket R2BayesX.

library(R2BayesX)

Zuerst müssen wir das Modell spezifizieren:

formula.bx  = sqrt(y) ~ belt + sx(trend, bs="rw1", a=1, b=0.0005) +  sx(seasonal, bs="season", a=1, b=0.1)

In der Variable formula.bx speichern wir das Modell ab:

  • sqrt(y) soll modelliert werden

  • belt ist eine Kovariable

  • trend und seasonal sind einfach die laufenden Monatszahlen

  • sx spezifiziert Priori-Modelle:

    • bs=“rw1” bezeichnet unser RW1-Priori
    • bs=“season” entspricht unserer Saison-Priori
    • Die Hyperpriori-Parameter werden mit übergeben.

MCMC

Die Funktion bayesx führt den Algorithmus durch. Wir wählen hier method=“MCMC” und müssen noch die Verteilung der Daten (“gaussian”) und Hyper-Parameter für die Varianz der Daten sowie die Anzahl der Iterationen (und des burn-in) angeben.

mcmc.bx <- bayesx(formula = formula.bx, data=Drivers, 
      control=bayesx.control(family="gaussian", method="MCMC", hyp.prior = c(4,4), 
      iterations=10000L, burnin=5000L))

Die Ergebnisse des Algorithmus lassen sich mit plot bzw. summary ausgeben.

plot(mcmc.bx$effects$`sx(trend)`)

plot(mcmc.bx$effects$`sx(seasonal)`)

summary(mcmc.bx)
## Call:
## bayesx(formula = formula.bx, data = Drivers, control = bayesx.control(family = "gaussian", 
##     method = "MCMC", hyp.prior = c(4, 4), iterations = 10000L, 
##     burnin = 5000L))
##  
## Fixed effects estimation results:
## 
## Parametric coefficients:
##                Mean      Sd    2.5%     50%   97.5%
## (Intercept) 41.2662  0.1713 40.9205 41.2626 41.5992
## belt        -4.5976  0.9938 -6.6872 -4.5786 -2.6358
## 
## Smooth terms variances:
##                Mean     Sd   2.5%    50%  97.5%    Min    Max
## sx(seasonal) 0.2367 0.0758 0.1258 0.2228 0.4231 0.0976 0.6175
## sx(trend)    0.1990 0.0938 0.0722 0.1816 0.4288 0.0345 0.6649
##  
## Scale estimate:
##          Mean     Sd   2.5%    50%  97.5%
## Sigma2 2.7504 0.2959 2.2216 2.7264 3.3938
##  
## N = 192  burnin = 5000  method = MCMC  family = gaussian  
## iterations = 10000  step = 10

BayesX mit REML

Nun das selbe Modell mit dem empirischen Bayes- bzw. REML-Ansatz.

Die Definition des Modells ist identisch, außer dass keine Hyperprioris spezifiziert werden!

Mit method=“REML” erhalten wir den REML-Schätzer:

##    user  system elapsed 
##   3.274   0.018   3.309

## Call:
## bayesx(formula = formula.bx, data = Drivers, control = bayesx.control(family = "gaussian", 
##     method = "REML"))
##  
## Fixed effects estimation results:
## 
## Parametric coefficients:
##             Estimate Std. Error  t value  Pr(>|t|)    
## (Intercept)  41.2769     0.1665 247.8527 < 2.2e-16 ***
## belt         -4.6514     1.0544  -4.4114 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Smooth terms:
##              Variance Smooth Par.       df Stopped
## sx(seasonal)   0.0193    117.0120  14.2552       0
## sx(trend)      0.2541      8.8647  19.0758       0
##  
## Scale estimate: 2.2527 
##  
## N = 192  df = 35.331  AIC = 383.257  BIC = 498.347  
## GCV = 2.76067  logLik = -156.2975  method = REML  family = gaussian

  • Für die Präzisionsparameter (Smooth terms) erhalten wir nur Punktschätzer, keine Posteriori
  • Die Intervallschätzer der Effekte \((\theta)\) sind beim empirischen Bayes-Ansatz tendenziell kleiner (dazu gleich mehr)
  • Davon abgesehen unterschieden sich die Ergebnisse nur in Details.

Model Averaging

Warum sind die Intervallschätzer beim Empirischen Bayes-Ansatz kleiner?

  • Der empirische Bayes-Ansatz berücksichtigt die Unsicherheit über die Präzisionsparameter \(\tau\) nicht.
  • Die Unsicherheit wird durch die Posteriori von \(\tau\) ausgedrückt.
  • Nur im “vollen Bayes-Ansatz” (z.B. mit MCMC) erhalten wir die Posteriori von \(\theta\) und \(\tau\) und berücksichtigen in der Schätzung von \(\theta\) auch die Unsicherheit über \(\tau\).

  • Die Schätzung der \(\tau\) ist in der Regel nicht besonder interessant.
  • Uns interessiert die marginale Posterioriverteilung von \(\theta\). Für diese gilt:

\[ p(\theta|y)=\int p(\theta,\tau|y) d\tau = \int p(\theta|\tau,y)p(\tau|y) d\tau \]

  • Im Gegensatz zum Empirischen Bayes-Ansatz erhalten wir beim “vollen Bayes-Ansatz” also nicht das Ergebnis für einen \(\tau\)-Wert, sondern die Mischung von verschiedenen Modellen, gewichtet mit der marginalen Posteriori-Verteilung von \(\tau\).
  • Man spricht hier auch von Model Averaging.

Weiter

BayesX