R (lme4) vs 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에서 같은 모델에 맞습니다. 먼저 R에서 Stata 형식으로 씁니다.

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를 사용합니다.

내가 알 수 있듯이 R의 1.32는

> 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

나는 이것이 무엇을하고 있는지 정말로 이해할 수는 없지만. 누군가 설명 할 수 있습니까?

그리고 Stata의 2.13이 어디에서 왔는지 전혀 알지 못합니다. 단, 추정 방법을 최대 가능성으로 변경하면 다음과 같습니다.

xtmixed g || id:, ml variance

.... 그러면 1.32를 표준 오류로 사용하고 R과 동일한 결과를 생성하는 것 같습니다 ...

여기에 이미지 설명을 입력하십시오

.... 그러나 랜덤 효과 분산의 추정치는 더 이상 R과 일치하지 않습니다 (35.04 vs 31.97).

ML 대 REML과 관련이있는 것 같습니다. 두 시스템에서 REML을 실행하면 모델 출력은 동의하지만 캐터필라 플롯에 사용 된 표준 오류는 동의하지 않지만 Stata의 R 및 ML에서 REML을 실행하면 , 애벌레 도표는 동의하지만 모형 추정치는 그렇지 않습니다.

아무도 무슨 일이 일어나고 있는지 설명 할 수 있습니까?


Robert, Stata 및 / 또는 ? 의 방법 및 공식을 살펴 보셨습니까 ? 그것들은 Pinheiro와 Bates (2000)를 참조하므로 적어도 수학의 일부는 같아야합니다. [XT] xtmixed[XT] xtmixed postestimation
StasK

@StasK Pinheiro와 Bates에 대한 참조를 일찍 보았지만 어떤 이유로 든 지금 찾을 수 없습니다! 랜덤 효과 예측에 관한 기술 노트를 보았습니다. 그것은 "최대 가능성의 표준 이론"을 사용하고 주어진 결과에 대한 점근 적 분산 행렬이 헤 시안의 음의 역함수가된다는 것입니다. 그러나 솔직히 말해서 이것이 실제로 도움이되지 않았습니다! [아마 이해 부족으로 인해]
Robert Long

Stata와 R에서 다르게 수행되는 자유도 보정이 될 수 있습니까? 나는 단지 큰소리로 생각하고 있습니다.
StasK

@StasK 나는 그것에 대해서도 생각했지만 차이가 1.32 vc 2.13이라고 너무 크다고 결론을 내 렸습니다. 물론 이것은 작은 표본 크기입니다-군집 당 적은 수의 군집과 적은 수의 관측치이므로, 그것이 원인이 무엇이든 그것이 표본 크기에 의해 증폭되고 있음을 알고 놀랄 것입니다.
Robert Long

답변:


6

[XT]Stata 11 매뉴얼에 따르면 :

BLUP의 표준 오차는 BLUP 자체를 추정하기위한 Bates and Pinheiro (1998, sec. 3.3)의 반복 기술을 기반으로 계산됩니다. REML로 추정을 수행하는 경우 이러한 표준 오류는 추정치의 불확실성을 설명하는 반면 ML의 경우 표준 오류는 를 알려진 것으로 간주합니다. 따라서 REML 기반 BLUP의 표준 오류는 일반적으로 더 큽니다.ββ

Stata ML 표준 오류가 예제에서 R의 표준 오류와 일치하므로 R이 추정의 불확실성을 설명하지 않는 것 같습니다 . 그것이되어야할지 모르겠다.β

귀하의 질문에 따르면 Stata와 R 모두에서 REML을 시도하고 R에서 REML을 사용하여 Stata에서 ML을 시도했습니다. 둘 다에서 ML을 시도하면 두 결과에서 동일한 결과를 얻을 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.