У меня сейчас проблема в том, что я должен предварительно указать свои формулы перед отправкой их в функцию регрессии. Например, используя функцию stan_gamm4
в R
, мы имеем следующий пример:
dat <- mgcv::gamSim(1, n = 400, scale = 2) ## simulate 4 term additive truth
## Now add 20 level random effect `fac'...
dat$fac <- fac <- as.factor(sample(1:20, 400, replace = TRUE))
dat$y <- dat$y + model.matrix(~ fac - 1) %*% rnorm(20) * .5
br <- stan_gamm4(y ~ s(x0) + x1 + s(x2), data = dat, random = ~ (1 | fac),
chains = 1, iter = 200) # for example speed
Теперь, поскольку формула и случайная формула были указаны явно, тогда, если мы вызовем:
br$call$random
> ~(1 | fac)
Мы можем восстановить форму случайных эффектов.
СЕЙЧАС, давайте оставим все то же самое, НО используем выражение для случайной части:
formula.rand <- as.formula( '~(1|fac)' )
Тогда, если мы сделали то же самое раньше, но с formula.rand
, занявшим место, мы имеем:
br <- stan_gamm4(y ~ s(x0) + x1 + s(x2), data = dat, random = formula.rand,
chains = 1, iter = 200) # for example speed
НО СЕЙЧАС: у нас есть это:
br$call$random
> formula.rand
Вместо оригинала. Многие байесовские пакеты полагаются на доступ к br$call$random
, поэтому есть ли способ использовать переменную для формулы, передать ее и сохранить исходное отношение при вызове br$call$random
? Благодарю.