Определение Приора в MCMCglmm - PullRequest
2 голосов
/ 13 мая 2019

Я обнаружил, что этот же вопрос размещен повсюду, и я не могу найти какое-либо решение, подходящее для моих данных, и мне интересно, пытаюсь ли я подогнать свои данные к модели, которая просто слишком сложный

Я пытаюсь согласовать свои данные с моделью многочленной логистической регрессии из пакета MCMCglmm. Я просмотрел много разных документов, учебных пособий и самого руководства MCMCglmm, в первую очередь учебное пособие Флориана Йегера , которое превосходно и тщательно. Однако я теряюсь в выборе значений G-структуры и R-структуры предыдущего, и я продолжаю получать это сообщение об ошибке

Error in priorformat(if (NOpriorG) { : 
  V is the wrong dimension for some prior$G/prior$R elements

В частности, я не уверен, какие значения n должны быть указаны в моих данных в обоих случаях, но несколько непрозрачное сообщение об ошибке предполагает, что это проблема с V

Вот (соответствующее) подмножество моих данных:

CG_imm       locuteur   enquete       loc_age   loc_sexe      left    liquid   right    articulation_C1    voice_C1   NC_C1    NC_right    voice_right    right2          pos    logfreq      realization
abordable    44ajs1     Nantes        79         M            bl      l        p        stop               V          Vstop    stop        NV             NVstop          adj    NA           2
admettre     91adb1     Brunoy        54         M            tR      R        E        stop               N          NVstop   mid-vowel   V              mid-vowel       verb   6.52209279   0
adorable     91aal1     Brunoy        27         F            bl      l        break    stop               V          Vstop    break       break          weak break      adj    NA           0
agréable     92aaf2     PC            55         F            bl      l        break    stop               V          Vstop    break       break          strong break    adj    7.95191138   0
agréable     21abm1     Dijon         31         M            bl      l        k        stop               V          Vstop    stop        NV             NVstop          adj    7.95191138   1
agréable     75ccr2     Paris         NA         F            bl      l        break    stop               V          Vstop    break       break          break           adj    7.95191138   0
agréable     69ajl1     Lyon          52         M            bl      l        break    stop               V          Vstop    break       break          weak break      adj    7.95191138   0
Alexandre    91asl1     Brunoy        64         F            dR      R        break    stop               V          Vstop    break       break          weak break      noun   NA           0

Из этого набора данных я пытаюсь предсказать realization переменную на трех уровнях со многими различными предикторами. Вот одна из моделей, которые я попробовал:

k <- length(levels(df$realization))
I <- diag(k-1)
J <- matrix(rep(1, (k-1)^2), c(k-1, k-1))

prior1<-list(
  R = list(fix=1, V=0.5 * (I + J), n = 2
  ),
  G = list(
    G1 = list(V = diag(4), n = 4),
    G2 = list(V = diag(8), n = 8),
    G3 = list(V = diag(4), n = 4),
    G4 = list(V = diag(4), n = 4),
    G5 = list(V = diag(14), n = 14),
    G6 = list(V = 3, n = 3),
    G7 = list(V = 3, n = 3),
    G8 = list(V = diag(6), n = 6)))

m <- MCMCglmm(realization ~ -1 + trait + NC_C1*liquid + right2 + loc_age + logfreq + pos,
              random = ~ us(trait):CG_imm + us(NC_C1*liquid):CG_imm +
              us(trait):locuteur  + us(trait):enquete + us(right2):CG_imm +
              us(loc_age):locuteur + us(log_freq):CG_imm + us(pos):CG_imm,
              rcov = ~ us(trait):units,
              prior = prior1,
              burnin = 15000,
              nitt = 40000,
              family = "categorical",
              data = df)

В моем полном наборе данных переменные предиктора, выбранные в качестве случайных эффектов, имеют следующие уровни:

> length(levels(ol_north$CG_imm))
[1] 181
> length(levels(ol_north$enquete))
[1] 13
> length(levels(ol_north$locuteur))
[1] 129

Все предикторы, которые являются фиксированными эффектами, являются категориальными, за исключением loc_age и log_freq Категориальные, фиксированные предикторы находятся на следующих уровнях:

> length(levels(ol_north$NC_C1))
[1] 4
> length(levels(ol_north$liquid))
[1] 2
> length(levels(ol_north$right2))
[1] 14
> length(levels(ol_north$pos))
[1] 6

Я играл со значениями n в списках G-структуры и R-структуры, и я скорректировал значения в аргументе diag() в G-структуре безрезультатно. С такой сложной моделью я не уверен, где именно происходят мои ошибки. Я упростил модель до этого и получаю ее сходиться, но с предупреждением:


m <- MCMCglmm(realization ~ -1 + trait + NC_C1*liquid + right2,
              random = ~ us(trait):CG_imm + us(NC_C1*liquid):CG_imm,
              rcov = ~ us(trait):units,
              prior = list(
                  R = list(fix=1, V=0.5 * (I + J), n = 2),
                  G = list(
                      G1 = list(V = diag(2), n = 22),
                      G2 = list(V = diag(8), n = 8))),
              burnin = 15000,
              nitt = 40000,
              family = "categorical",
              data = df)

Warning message:
In MCMCglmm(realization ~ -1 + trait + NC_C1 * liquid + right2,  :
  some fixed effects are not estimable and have been removed. Use singular.ok=TRUE to sample these effects, but use an informative prior!

Большое спасибо за любую помощь заранее!

...