Я занимаюсь имитационным исследованием, которое требует начальной загрузки оценок, полученных из обобщенной линейной смешанной модели (на самом деле, это произведение двух оценок для фиксированных эффектов, одна из GLMM и одна из LMM). Чтобы хорошо провести исследование, потребовалось бы около 1000 симуляций с 1000 или 1500 повторений бутстрапа каждый раз. Это занимает значительное время на моем компьютере (много дней).
How can I speed up the computation of these fixed effects?
Чтобы быть более точным, у меня есть предметы, которые измеряются неоднократно тремя способами, приводя к переменным X, M и Y, где X и M непрерывны, а Y - двоичны. У нас есть два уравнения регрессии
, Таким образом, каждая репликация начальной загрузки требует установки LMM и GLMM. Мой код R (с помощью lme4)
stat=function(dat){
a=fixef(lmer(M~X+(X|person),data=dat))["X"]
b=fixef(glmer(Y~X+M+(X+M|person),data=dat,family="binomial"))["M"]
return(a*b)
}
Я понимаю, что получаю ту же оценку для если я просто подгоняю ее как линейную модель, так что это экономит время, но тот же трюк не работает для β 2 .
Мне просто нужно купить более быстрый компьютер? :)
источник
Rprof
.Ответы:
Это должно помочь определить начальные значения, хотя трудно понять, сколько. Когда вы выполняете симуляцию и загрузку, вы должны знать «истинные» значения или не загруженные оценки, или и то, и другое. Попробуйте использовать их в
start =
опцииglmer
.Вы также можете рассмотреть вопрос о том, являются ли допуски для объявления сходимости более строгими, чем необходимо. Я не ясно, как изменить их из
lme4
документации, хотя.источник
Перед покупкой нового компьютера тоже рассмотрите две другие возможности.
источник
Это может быть более быстрый компьютер. Но вот одна хитрость, которая может сработать.
Создайте симуляцию , но только с условием Y , затем просто выполните OLS или LMM на смоделированных значениях Y ∗ .Y* Y Y*
Предположим, что ваша функция ссылки . это говорит о том, как вы получаете от вероятности Y = 1 до значения Y ∗ , и, скорее всего, является логистической функцией g ( z ) = l o g ( zг( . ) Y= 1 Y* .г( з) = Л о г( з1 - z)
Дайте мне знать, если мне нужно объяснить что-нибудь немного яснее
источник