Как можно моделировать интересующие величины из апостериорной плотности в MCMCglmm?
Я хотел бы смоделировать интересующие количества из модели, оцененной с MCMCglmm
более или менее путь Zelig
пакет делает. В Zelig
Вы можете установить значения, которые вы хотите для независимых значений, и программное обеспечение вычисляет результат для переменной результата (ожидаемое значение, вероятность и т. д.). Пример:
# Creating a dataset:
set.seed(666)
df <- data.frame(y=rnorm(100,20,20),z=rnorm(100,50,70))
# Loading Zelig
library(Zelig)
# Model
m1.zelig <- zelig(y~z, data=df, model="ls")
summary(m1.zelig)
# Simulating z = 10
s1 <- setx(m1.zelig, z = 10)
simulation <- sim(m1.zelig, x = s1)
summary(simulation)
Как мы видим, если z = 10 y, это примерно 17.
# Same model with MCMCglmm
library(MCMCglmm)
m1.mcmc <- MCMCglmm(y~z, data=df, family = "gaussian", verbose = FALSE)
summary(m1.mcmc)
Есть ли способ симулировать z = 10 с апостериорным распределением, оцененным как MCMCglmm
и получить ожидаемое значение у? Большое спасибо!
1 ответ
Вы можете моделировать, но не так легко, как в Zelig. Вы должны знать немного больше о структуре модели, которую вы подходите, и о том, как параметры хранятся в MCMCglmm
объект.
Настройте данные и подгоните:
set.seed(666)
df <- data.frame(y=rnorm(100,20,20),z=rnorm(100,50,70))
library(MCMCglmm)
m1.mcmc <- MCMCglmm(y~z, data=df, family = "gaussian", verbose=FALSE)
Наиболее распространенный протокол в R для прогнозирования и моделирования - это создание нового фрейма данных с той же структурой, что и исходные данные:
predframe <- data.frame(z=10)
Построить матрицу модели для линейной модели:
X <- model.matrix(~z,data=predframe)
Теперь используйте цепочки коэффициентов, хранящихся в Sol
("решение") компонента MCMCglmm
объект; для удобства я настроил это как матричный расчет.
predframe$y <- X %*% t(m1.mcmc$Sol)
Если вы хотите симулировать для более сложных моделей (линейных или обобщенных линейных смешанных моделей), вам нужно будет работать немного усерднее (обрабатывать случайные эффекты и функции обратной ссылки соответственно) ...