Как lmer (из пакета R lme4) вычисляет логарифмическую вероятность?

Я пытаюсь понять функцию lmer. Я нашел много информации о том, как использовать команду, но не много о том, что она делает на самом деле (за исключением некоторых загадочных комментариев здесь: http://www.bioconductor.org/help/course-materials/2008/PHSIntro/lme4Intro-handout-6.pdf). Я играю со следующим простым примером:

library(data.table)
library(lme4)
options(digits=15)

n<-1000
m<-100
data<-data.table(id=sample(1:m,n,replace=T),key="id")
b<-rnorm(m)
data$y<-rand[data$id]+rnorm(n)*0.1
fitted<-lmer(b~(1|id),data=data,verbose=T)
fitted

Я понимаю, что lmer соответствует модели формы Y_ {ij} = beta + B_i + epsilon_ {ij}, где epsilon_ {ij} и B_i - независимые нормали с дисперсиями sigma ^ 2 и tau ^ 2 соответственно. Если тета = тау / сигма фиксировано, я вычислил оценку бета с правильным средним и минимальной дисперсией, чтобы

c = sum_{i,j} alpha_i y_{ij}

где

alpha_i = lambda/(1 + theta^2 n_i)
lambda = 1/[\sum_i n_i/(1+theta^2 n_i)]
n_i = number of observations from group i

Я также вычислил следующую объективную оценку для сигмы ^ 2:

s ^ 2 = \ sum_ {i, j} alpha_i (y_ {ij} - c) ^ 2 / (1 + theta ^ 2 - lambda)

Эти оценки, кажется, согласуются с тем, что дает Имер. Однако я не могу понять, как в этом контексте определяется вероятность журнала. Я рассчитал, что плотность вероятности

pd(Y_{ij}=y_{ij}) = \prod_{i,j}[f_sigma(y_{ij}-ybar_i)]
    * prod_i[f_{sqrt(sigma^2/n_i+tau^2)}(ybar_i-beta) sigma sqrt(2 pi/n_i)]

где

ybar_i = \sum_j y_{ij}/n_i (the mean of observations in group i)
f_sigma(x) = 1/(sqrt{2 pi}sigma) exp(-x^2/(2 sigma)) (normal density with sd sigma)

Но lmer производит не лог вышеперечисленного. Как в этом случае рассчитывается логарифмическая вероятность (и почему для бонусных оценок)?

Изменить: изменено обозначение для единообразия, вычеркнута неправильная формула для оценки стандартного отклонения.


person stewbasic    schedule 07.01.2014    source источник
comment
Пакет имеет открытый исходный код, поэтому смотрели ли вы в исходном коде, чтобы узнать, как он рассчитывается?   -  person Joshua Ulrich    schedule 07.01.2014
comment
О, я этого не осознавал. Я посмотрю, спасибо.   -  person stewbasic    schedule 07.01.2014
comment
И вы можете найти этот вопрос / ответ: Как просмотреть исходный код функции?.   -  person Joshua Ulrich    schedule 07.01.2014
comment
По поводу что и почему вы можете взглянуть на черновик книги Дуга Бейтса по lme4 ... lme4.r-forge.r-project.org/lMMwR/lrgprt.pdf (в частности, раздел 1.4). Не уверен, насколько актуален код в книге относительно последнего большого обновления lme4, но его необходимо прочитать.   -  person Nate Pope    schedule 08.01.2014
comment
Это очень большой и сложный вопрос. Черновик книги Дуга - разумное начало (но не легкое). Любая книга по смешанным моделям (например, Пинейро и Бейтс 2000) была бы хорошим началом.   -  person Ben Bolker    schedule 08.01.2014
comment
Спасибо за ссылки. В конце концов я нашел статью Дуга Бейтса (pages.cs.wisc.edu/ ~ bates / reports / MixedComp.pdf), что, я думаю, ответит на мой вопрос. Я обновлю свой вопрос тем, что он переводится в моем простом примере, как только я прочитаю ...   -  person stewbasic    schedule 08.01.2014


Ответы (1)


Ссылки в комментариях содержали ответ. Ниже я изложил то, до чего упрощаются формулы в этом простом примере, поскольку результаты несколько интуитивно понятны.

lmer соответствует модели вида  Y_ {ij} = \ beta + B_i + \ epsilon_ {ij} , где  \ epsilon_ {ij} и «B_i» - независимые нормали с отклонениями \ sigma ^ 2и  \ tau ^ 2 соответственно. Совместное распределение вероятностей Y_ {ij}и  B_i поэтому

 \  left (\ prod_ {i, j} f _ {\ sigma ^ 2} (y_ {ij} - \ beta-b_i) \ right) \ left (\ prod_i f _ {\ tau ^ 2} (b_i) \ right)

где

 f _ {\ sigma ^ 2} (x) = \ frac {  1} {\ sqrt {2 \ pi \ sigma ^ 2}} e ^ {- \ frac {x ^ 2} {2 \ sigma ^ 2}} .

Вероятность получается путем интегрирования этого по отношению к b_i(что не наблюдается), чтобы получить

 \ left (\ prod_ {i, j} f _ {\ sigma ^ 2}  (y_ {ij} - \ bar y_i) \ right) \ left (\ prod_i f _ {\ sigma ^ 2 / n_i + \ tau ^ 2} (\ bar y_i- \ beta) \ sqrt {2 \ pi \ sigma ^ 2 /  n_i} \ right)

где n_i- количество наблюдений из группы  i и  \ bar y_i - среднее значение наблюдений из группы i. Это отчасти интуитивно понятно, поскольку первый термин охватывает разброс внутри каждой группы, который должен иметь дисперсию \ sigma ^ 2, а второй фиксирует разброс между группами. Обратите внимание, что \ sigma ^ 2 / n_i + \ tau ^ 2 - это дисперсия \ bar y_i.

Однако по умолчанию (REML = T) lmer максимизирует не вероятность, а «критерий REML», полученный путем его дополнительной интеграции с  \ beta чтобы дать

 \ left (\ prod_ {i, j} f _ {\ sigma ^ 2} (y_  {ij} - \ bar y_i) \ right) \ left (\ prod_i f _ {\ sigma ^ 2 / n_i + \ tau ^ 2} (\ bar y_i- \ hat \ beta) \ sqrt {2 \ pi \ sigma ^ 2 /  n_i} \ right) \ sqrt {\ frac {2 \ pi \ sigma ^ 2} {\ sum_i \ frac {n_i} {1 + n_i \ theta ^ 2}}}

где \ hat \ betaприведен ниже.

Увеличение вероятности (REML = F)

Если \ theta = \ tau / \ sigmaисправлен, мы можем явно найдите \ betaи  \ sigma , которые увеличивают вероятность. Они оказываются

 \ hat \ beta = \ frac {\  sum_ {i, j} y_ {ij} / (1 + n_i \ theta ^ 2)} {\ sum_i n_i / (1 + n_i \ theta ^ 2)}

 \ hat \ sigma ^ 2 = \ frac {1} {n} \ left (\ sum_ {i, j} (y_  {ij} - \ bar y_i) ^ 2 + \ sum_i \ frac {n_i} {1 + n_i \ theta ^ 2} (\ bar y_i- \ hat \ beta) ^ 2 \ right)

Примечание. В \ hat \ sigma ^ 2есть два термина для различий внутри и между группами, а также < img src = "https://latex.codecogs.com/gif.latex?%5chat%5cbeta" alt = "\ hat \ beta"> находится где-то между средним значением  y_ {ij} и среднее значение  \ bar y_i в зависимости от значения  \ theta .

Подставив их в вероятность, мы можем выразить вероятность журнала lчерез  \ theta :

 - 2l = \ sum_i \ log (1 + n_i \ theta ^ 2) + n (1+ \ log (2 \ pi \ hat \ sigma ^ 2  ))

Имер выполняет итерацию, чтобы найти значение \ theta, которое минимизирует это. На выходе - 2lи  l отображаются в полях deviance и logLik (если REML = F) соответственно.

Максимизация ограниченной вероятности (REML = T)

Поскольку критерий REML не зависит от \ beta, мы используем ту же оценку для  \ beta как указано выше. Мы оцениваем \ sigma, чтобы максимизировать критерий REML:

 \ hat \ beta = \ frac {\  sum_ {i, j} y_ {ij} / (1 + n_i \ theta ^ 2)} {\ sum_i n_i / (1 + n_i \ theta ^ 2)}

 \ hat \ sigma ^ 2 = \ frac {1} {n-1} \ left (\ sum_ {i,  j} (y_ {ij} - \ bar y_i) ^ 2 + \ sum_i \ frac {n_i} {1 + n_i \ theta ^ 2} (\ bar y_i- \ hat \ beta) ^ 2 \ right)

Вероятность ограничения журнала l_Rопределяется как

 - 2l_R = \ sum_i \ log (1 + n_i \ theta ^ 2) + (n-1) (1+ \ log (2 \ pi \ hat \ sigma ^ 2))  + \ log \ left (\ sum_i \ frac {n_i} {1 + n_i \ theta ^ 2} \ right)

В выводе lmer - 2l_Rи  l_R отображаются в полях" REMLdev "и" logLik "(если REML = T) соответственно.

person stewbasic    schedule 16.01.2014
comment
теперь это больше похоже на вопрос / ответ CrossValidated ... - person Ben Bolker; 16.01.2014
comment
Да, оглядываясь назад, возможно, это было не лучшее место для этого, но я не знаю, как его переместить. - person stewbasic; 18.01.2014