이 데이터를 고려하십시오 :
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"]]
이제 우리는 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을 실행하면 , 애벌레 도표는 동의하지만 모형 추정치는 그렇지 않습니다.
아무도 무슨 일이 일어나고 있는지 설명 할 수 있습니까?
[XT] xtmixed
[XT] xtmixed postestimation