2016-06-13 2 views
3

에서 임의 효과 (BLUPs/조건부 모드)에 대한 공분산 행렬을받는 방법, 내가 R에 두 개의 임의 차단과 선형 혼합 모델을 장착했습니다그래서 lme4

Y = X beta + Z b + e_i, 

b ~ MVN (0, Sigma); XZ은 각각 고정 및 임의 효과 모델 행렬이며 betab은 고정 효과 매개 변수 및 임의 효과 BLUP/조건부 모드입니다.

기본 공분산 행렬 b을 사용하고 싶습니다. lme4 패키지에서 사소한 일이 아닌 것 같습니다. 실제 상관 행렬이 아니라 VarCorr으로 분산 만 얻을 수 있습니다.

one of the package vignettes (2 페이지)에 따르면 베타 : e_i * lambda * t(lambda)의 공분산을 계산할 수 있습니다. lme4의 출력에서 ​​추출 할 수있는 모든 구성 요소.

나는 이것이 갈 길인지 궁금해하고 있었습니까? 아니면 다른 제안이 있습니까? ?ranef 가입일

+1

시작. 수학 표기법을 분명히 해주십시오. (Xbeta는 실제로 X * 베타 버전입니까? 아마 베타, b, 시그마가 무엇인지 말해야합니다. 전문가는 아니지만 그 표기법이 분명 할 수도 있지만). 당신이 더 명확하게 질문을 쓰면, 더 적절한 답을 얻을 수 있다는 것을 기억하십시오. – YakovL

+0

예, X 베타는 X * 베타였습니다. 베타는 디자인 행렬 X의 고정 효과 벡터이고, b는 무작위 효과 벡터이며, σ는 b의 분산 공분산 행렬입니다. 팁 주셔서 감사합니다, 나는 그것을 명심 할거야. –

답변

2

:

'condVar'는 상기 데이터 프레임 각각 대칭 얼굴 입체 배열 ' "postVar"'라는 속성 있습니다 'TRUE'인 경우

; 각면은 그룹화 요소의 특정 레벨 인 에 대한 분산 - 공분산 행렬을 포함합니다. (이 속성 의 이름은 역사적인 유물, 그리고 미래에 어떤 점에서 'condVar'로 변경 될 수 있습니다.)

는 예를 들어 설정 :

library(lme4) 
fm1 <- lmer(Reaction ~ Days + (Days | Subject), sleepstudy) 
rr <- ranef(fm1,condVar=TRUE) 

이 분산을 가져 오기를 절편

pv <- attr(rr[[1]],"postVar") 
str(pv) 
##num [1:2, 1:2, 1:18] 145.71 -21.44 -21.44 5.31 145.71 ... 

대한 b 값 중에서 -covariance 행렬 그래서 이것은 2x2x18 배열이고; 각 슬라이스는 특정 대상에 대한 조건 적 절편과 기울기 중 분산 공분산 행렬입니다 (정의에 따라 각 대상의 절편과 기울기는 다른 모든 대상의 절편과 기울기와 무관합니다).

가 분산 공분산 행렬이 전환하려면 (... getMethod("image",sig="dgTMatrix") 참조)에 StackOverflow에

library(Matrix) 
vc <- bdiag( ## make a block-diagonal matrix 
      lapply(
       ## split 3d array into a list of sub-matrices 
       split(pv,slice.index(pv,3)), 
        ## ... put them back into 2x2 matrices 
         matrix,2)) 
image(vc,sub="",xlab="",ylab="",useRaster=TRUE) 

enter image description here

+0

정말 고마워요! 내가 그것을 체크 아웃합니다 :) –

+0

StackOverflow [감사합니다]라고 말하기를 사용하여 [http://meta.stackoverflow.com/questions/258004/should-thank-you-comments-be-flagged?lq = 1); 이 대답이 유용하다면 당신은 그것을 (당신이 충분한 평판을 가지고 있다면) upvote 할 수 있으며, 어떤 경우에는 만족스럽게 당신의 질문에 대답한다면 그것을 받아들이 기 위해 체크 마크를 클릭하는 것이 좋습니다. –