Стандартна помилка випадкових ефектів в R (lme4) проти Stata (xtmixed)


19

Будь ласка, врахуйте ці дані:

dt.m <- structure(list(id = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12), occasion = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("g1", "g2"), class = "factor"),     g = c(12, 8, 22, 10, 10, 6, 8, 4, 14, 6, 2, 22, 12, 7, 24, 14, 8, 4, 5, 6, 14, 5, 5, 16)), .Names = c("id", "occasion", "g"), row.names = c(NA, -24L), class = "data.frame")

Ми підходимо до простої моделі дисперсійних компонентів. У R ми маємо:

require(lme4)
fit.vc <- lmer( g ~ (1|id), data=dt.m )

Потім виробляємо сюжет гусениці:

rr1 <- ranef(fit.vc, postVar = TRUE)
dotplot(rr1, scales = list(x = list(relation = 'free')))[["id"]]

Ділянка гусениці від R

Тепер ми підходимо до тієї ж моделі в Stata. Спочатку напишіть у формат Stata з R:

require(foreign)
write.dta(dt.m, "dt.m.dta")

У штаті

use "dt.m.dta"
xtmixed g || id:, reml variance

Вихід погоджується з результатом R (ні показано), і ми намагаємося створити той же графік гусениці:

predict u_plus_e, residuals
predict u, reffects
gen e = u_plus_e – u
predict u_se, reses

egen tag = tag(id)
sort u
gen u_rank = sum(tag)

serrbar u u_se u_rank if tag==1, scale(1.96) yline(0)

введіть тут опис зображення

Clearty Stata використовує іншу стандартну помилку для R. Насправді Stata використовує 2,13, тоді як R використовує 1,32.

З того, що я можу сказати, походить 1,32 в R

> sqrt(attr(ranef(fit.vc, postVar = TRUE)[[1]], "postVar")[1, , ])
 [1] 1.319977 1.319977 1.319977 1.319977 1.319977 1.319977 1.319977 1.319977 1.319977 1.319977 1.319977 1.319977

хоча я не можу сказати, що я дійсно розумію, що це робить. Може хтось пояснить?

І я поняття не маю, звідки походить 2.13 від Stata, за винятком того, якщо я зміню метод оцінки на максимальну ймовірність:

xtmixed g || id:, ml variance

.... тоді, здається, використовується 1,32 як стандартна помилка і дає ті самі результати, що і R ....

введіть тут опис зображення

.... але тоді оцінка дисперсії випадкових ефектів більше не узгоджується з R (35,04 проти 31,97).

Таким чином, схоже, це має щось спільне з ML проти REML: Якщо я запускаю REML в обох системах, вихід моделі узгоджується, але стандартні помилки, які використовуються на ділянках гусениць, не згодні, тоді як якщо я запускаю REML в R та ML в Stata , ділянки гусениць погоджуються, але модельні оцінки не відповідають.

Хтось може пояснити, що відбувається?


Роберте, ти заглянув у Методи та Формули Стата [XT] xtmixedта / або [XT] xtmixed postestimation? Вони посилаються на Пінхеро та Бейтса (2000), тому хоча б деякі частини математики повинні бути однаковими.
Стаск

@StasK Раніше я бачив посилання на Пінейро та Бейтса, але чомусь не можу його знайти зараз! Я бачив Технічну записку щодо прогнозування випадкових ефектів; що він використовує "стандартну теорію максимальної ймовірності" і даний результат, що асимптотична дисперсійна матриця для того, щоб перетворитись на негативну зворотну частину Гессі. але якщо чесно, це мені не дуже допомогло! [можливо через моє нерозуміння]
Роберт Лонг

Чи може це будь-яка ступінь виправлення свободи робити по-різному в Stata vs R? Я просто думаю вголос.
Стаск

@StasK Я і про це думав, але я дійшов висновку, що різниця - 1,32 vc 2,13 - занадто велика. Звичайно, це невеликий розмір вибірки - невелика кількість кластерів і невелика кількість спостережень на кластер, тому я не здивуюся, дізнавшись, що все, що це викликає, посилюється за розміром вибірки.
Роберт Лонг

Відповіді:


6

Згідно з [XT]посібником для Stata 11:

ββ

β

З вашого запитання ви спробували REML і в Stata, і в R, і ML в Stata з REML в R. Якщо ви спробуєте ML в обох, ви повинні отримати однакові результати в обох.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.