Я пытаюсь создать модель с помощью пакета MCMCglmm
в R.
Данные структурированы следующим образом, где диада, фокус, прочее - все случайные эффекты, предикторы 1-2 - переменные-предикторы, а ответы 1-5 - переменные результата, которые фиксируют количество наблюдаемых поведений различных подтипов:
dyad focal other r present village resp1 resp2 resp3 resp4 resp5
1 10101 14302 0.5 3 1 0 0 4 0 5
2 10405 11301 0.0 5 0 0 0 1 0 1
…
Итак, модель, имеющая только один результат (обучение), выглядит следующим образом:
prior_overdisp_i <- list(R=list(V=diag(2),nu=0.08,fix=2),
G=list(G1=list(V=1,nu=0.08), G2=list(V=1,nu=0.08), G3=list(V=1,nu=0.08), G4=list(V=1,nu=0.08)))
m1 <- MCMCglmm(teaching ~ trait-1 + at.level(trait,1):r + at.level(trait,1):present,
random= ~idh(at.level(trait,1)):focal + idh(at.level(trait,1)):other +
idh(at.level(trait,1)):X + idh(at.level(trait,1)):village,
rcov=~idh(trait):units, family = "zipoisson", prior=prior_overdisp_i,
data = data, nitt = nitt.1, thin = 50, burnin = 15000, pr = TRUE, pl = TRUE, verbose = TRUE, DIC = TRUE)
В примечаниях к курсу Хэдфилда (глава 5) приводится пример полиномиальной модели, в которой используется только одна переменная результата с 3 уровнями (овечьи рога 3 типов). Аналогичное лечение можно найти здесь: http://hlplab.wordpress.com/2009/05/07/multinomial-random-effects-models-in-r/ Это не совсем подходит для того, что я делаю, но содержит полезную справочную информацию.
В другой ссылке (Hadfield 2010) приводится пример MCMCglmm с несколькими ответами, который следует тому же формату, но использует cbind () для прогнозирования вектора ответов, а не одного результата. Та же модель с несколькими ответами будет выглядеть так:
m1 <- MCMCglmm(cbind(resp1, resp2, resp3, resp4, resp5) ~ trait-1 +
at.level(trait,1):r + at.level(trait,1):present,
random= ~idh(at.level(trait,1)):focal + idh(at.level(trait,1)):other +
idh(at.level(trait,1)):X + idh(at.level(trait,1)):village,
rcov=~idh(trait):units,
family = cbind("zipoisson","zipoisson","zipoisson","zipoisson","zipoisson"),
prior=prior_overdisp_i,
data = data, nitt = nitt.1, thin = 50, burnin = 15000, pr = TRUE, pl = TRUE, verbose = TRUE, DIC = TRUE)
У меня есть два вопроса по программированию:
Как указать априор для этой модели? Я просмотрел материалы, упомянутые в этом посте, но никак не могу понять.
Я запустил аналогичную версию только с двумя переменными ответа, но я получил только один наклон - где я думал, что должен получить другой наклон для каждой переменной
resp
. В чем я ошибаюсь, или что я неправильно понял модель?
fix = 2
вR=list(V=diag(2),nu=0.08,fix=2)
? В моем понимании предыдущей спецификации MCMCglmmfix
следует читать как логическое значение:fix = 0
- значение по умолчанию, не фиксирующее отклонение доV
, аfix = 1
означает исправление отклонения на значенииV
. Так чтоfix = 2
(или подобное) imo не должно иметь никакого значения. (Но на странице 103 своего курса Хэдфилд использует эту спецификацию: cran.r-project.org/pub/R/web/packages/MCMCglmm/vignettes/) - person Qaswed   schedule 28.11.2016