Buduję model regresji binomierza przy użyciu 2 zmiennych kategorycznych. Pochodzi z przykładu w książce, przemyślenia statystyczne. W książce, przy użyciu pakietu przemyślenia, możemy ustawić PRIORS na każdej zmiennej kategorycznej, jak pokazano poniżej

m11.5 <- ulam(
 alist(
   pulled_left ~ dbinom( 1 , p ) ,
   logit(p) <- a[actor] + b[treatment] ,
   a[actor] ~ dnorm( 0 , 1.5 ),
   b[treatment] ~ dnorm( 0 , 0.5 )
) ,
data=d , chains=4 , log_lik=TRUE )

Próbuję zrobić to samo w BRMS.


priors <- c(prior(normal(0, 1.5), class = b, coef = "actor"),
            prior(normal(0, 0.5), class = b, coef = "treatment"))

m11.5 <- brm(data = d, family = binomial,
          formula = pulled_left | trials(1) ~ 1 + actor + treatment,
          sample_prior = T, prior = priors,
          cores = 4, chains = 4)

Chciałbym ustawić PRIOR dla wszystkich poziomów aktorów i poziomy leczenia wymienione raz. Jednak powyższy kod nie przejdzie z następującym komunikatem o błędzie,

prior error

Po użyciu Get_Prior widzę poniższe (sugerujące, że poziomy są wewnętrznie podzielone)

get_prior in brms

Nie chcę określić przed każdym poziomem zmiennych kategorycznych. Jak mam to zrobić? Proszę o poradę.

3
Srivatsa Srinath 24 listopad 2019, 19:54

1 odpowiedź

Najlepsza odpowiedź

Możesz po prostu wkleić i ustawić wiele współczynników:

priors <- c(prior_string("normal(0, 1.5)", class = "b", coef = paste("actor", 2:7, sep="")),
            prior_string("normal(0, 0.5)", class = "b", coef = paste("treatment", 2:4, sep="")))
6
Kreuni 5 grudzień 2019, 01:49