Как исправить 'Ошибка в sdata [[paste0 ("Y", usc (resp))]]: индекс за пределами "в R, используя пакет brms - PullRequest
0 голосов
/ 10 января 2019

Я пытаюсь настроить приоры для моего MLM, используя brms. Я запустил свою модель с установленными приорами без сообщений об ошибках, и теперь хотел бы проверить их с помощью pp_check. Я получаю сообщение об ошибке «Ошибка в sdata [[paste0 (« Y », usc (resp)))]: индекс за границей» и не могу найти никаких советов относительно того, почему это происходит. Спасибо!

Редактировать: Я проверил структуру моего соответствия, и только переменные инициализации равны 0, что, я думаю, должно иметь место, поскольку я установил для параметра инициализации значение 0? В остальном нет ничего проблемного, как я вижу.

Я ничего не мог попробовать, так как поиск в Google ни к чему не привел.

library(brms)
df <- data.frame( subjno = as.factor(c('sub-01', 'sub-01','sub-01','sub-01','sub02','sub02','sub02','sub02')),
              L1 = c(0.898922096, -0.673393065, -2.240150247,-0.932520537, -0.472701111, -0.188825324,0.808675919, 0.293666248), 
              L2 = c(0.64888, 2.0891, -0.655322708, 0.007098555, -0.648887797, -0.249716343, -0.698128026,0.119511014), 
              W1 = c(0.5,0.5,-0.5,-0.5,0.5,-0.5,0.5,-0.5), W2 = c(0.5,-0.5,0.5,-0.5,0.5,0.5,-0.5,-0.5),
              t = as.factor(c(12,23,34,45,12,23,34,45)))

ff_s = brmsformula(cbind(L1,L2) ~ W1 * W2 * t +  
                     (W1*W2* t|p|subjno)) 

get_prior(formula = ff_s, family = gaussian(),
      data = df)

pp_s <- c(set_prior('normal(0,1)', class = "b"),  
    set_prior("normal(0,10)", class = "sd", resp = 'L1'), 
    set_prior("normal(0,10)", class = "sd", resp = 'L2'), 
    set_prior("normal(0,5)", class = "sigma",resp = 'L1'), 
    set_prior("normal(0,5)", class = "sigma",resp = 'L2'),
    set_prior("normal(0,10)", class = "Intercept", resp = 'L1'),
    set_prior("normal(0,10)", class = "Intercept", resp = 'L2'),
    set_prior("lkj(3)", class = "cor"))

fit_s <- brm(formula = ff_s, 
          data = df, family = gaussian(),
          prior = pp_s,
          chains = 6, cores = 3,
          iter = 2e3, warmup = 1e3,
          init = 0,
          sample_prior = "only")

pp_check(fit_s)

1 Ответ

0 голосов
/ 11 января 2019

Я обнаружил, что вызывал функцию pp_check, не указав интересующий меня уровень, проблема решена!

...