2012-11-21 5 views
3

에서 임의 효과 모드 추출 내가 lmer()로 불리는 만든 mer 개체가 있습니다.관찰의 수와 메르 객체

ranef()으로 랜덤 효과를 얻을 수 있지만 각 무작위 효과에 해당하는 관측 수를 갖고 싶습니다. 쉬운 방법이 있습니까?

추가 정보 :

나는 위의 자신을 아주 분명하게하지 않았을 수 있습니다. 내가 병원에 ​​대한 병원 및 임의 차단 ​​내에서 클러스터 환자와 간단한 2 레벨 모델이있는 경우 예를 들어, 나는 각 병원 내에서 환자의 수와 ranef()함께 각 병원의 임의 효과를 추출하고 싶습니다. 지금이 순간, 내가 좋아하는 나에게 뭔가를 제공

ranef(fullmodel)[[1]] 

사용

 (Intercept) n 
ADE -0.108195883 77 
BEJ -0.005761677 171 
CIS 0.124129426 201 
CMH 0.270879048 39 
CSI 0.285344837 171 
CUL 0.189308979 131 

이렇게하려면, 내가

을 사용하고 있습니다 :

 (Intercept) 
ADE -0.108195883 
BEJ -0.005761677 
CIS 0.124129426 
CMH 0.270879048 
CSI 0.285344837 
CUL 0.189308979 

을 내가 좋아하는 뭔가를 좀하고 싶습니다

fullmodel <- glmer(.....+(1|hospital), data=dt1) 

freqs <- as.data.frame(table(dt1$hospital)) 
freqs <- freqs[foo$Freq>0,] 

그리고 0,123,408,이 결과를 ranef(fullmodel)[[1]]

에서 얻을 수 있습니다. 그러나 이것은 단순하고 오류가있는 것처럼 보입니다.

답변

4

ranef은 그룹화 인수에 해당하는 행렬 목록을 반환합니다. 각 행렬의 행은 무작위 효과의 관측 (계수 수준)에 해당하며 열은 임의 효과 변수 (절편, 경사도 등)에 해당합니다. 관찰의 수를 얻을 따라서 가장 쉬운 방법은이 명령은 임의 요소 수준의 주파수와 함께 임의의 효과를 반환

sapply(ranef(model),nrow) 
+0

감사 벤. 내가 OP에서 나 자신을 분명히하지 않으면 나는 유감이다. 나는 그 질문을 갱신했다. –

2

입니다 :

lapply(names(ranef(model)), 
     function(x) cbind(ranef(model)[[x]], table(model.frame(model)[[x]]))) 
+0

Excellent, thank you (+1) –

+0

'@ frame'을 사용하는 것에 대해별로 신경 쓰지 않아요. 대신'model.frame (model)'을 사용하겠습니까? –

+0

@BenBolker 동의, 내 대답을 수정했습니다. –