2014-12-10 7 views
0

this blog posting에 도시 된 바와 같이 I가 작용 효과를 계산하고자 그래서 b0이 절편의 추정치 y = (b0 + (b1 * xa) + (b3 * xa * xb)), b1를 계산할 수있는 것은 예측기 (A)의 추정치이며 b3는 예측기 (A)와 사이의 상호 작용의 추정치 B.상호 작용 용어를 사용하여 merMod 객체의 원래 변수를 찾는 방법 (lme4 패키지에 적합)?

내가 장착 모델

  1. 추정을 필요로 이렇게하려면
  2. 예측 인자의 원래 값 (즉, "data.frame"에서 각 값은 "단순"일반화 된 선형 모델를 들어 위의 식)

에 삽입되어 사용되는 변수는, I는 (피팅 모델 객체의 원래의 데이터 값을 저장하는 데이터 매트릭스 파라미터를 사용하여 glm(... x=TRUE). 예 : 보시

fit <- glm(f1care ~ c12hour + neg_c_7 + c172 + 
      sex1 + sex2 + c172:neg_c_7 + sex1:c12hour, 
      data = mydf, 
      x = TRUE, 
      family = binomial("logit")) 

Coefficients: 
       Estimate Std. Error z value Pr(>|z|)  
(Intercept) 1.4674300 0.1759883 8.338 < 2e-16 *** 
c12hour  0.0016157 0.0016315 0.990 0.3220  
neg_c_7  -0.0549614 0.0108868 -5.048 4.45e-07 *** 
c1721   -0.1575547 0.2752344 -0.572 0.5670  
sex12   -0.0320619 0.1286984 -0.249 0.8033  
sex22   0.2091354 0.0874629 2.391 0.0168 * 
neg_c_7:c1721 0.0090043 0.0202720 0.444 0.6569  
c12hour:sex12 -0.0003121 0.0018246 -0.171 0.8642 

> head(fit$x) 
    (Intercept) c12hour neg_c_7 c1721 sex12 sex22 neg_c_7:c1721 c12hour:sex12 
1   1  10  9  0  1  1    0   10 
2   1  4  13  1  1  1   13    4 
3   1  12  21  0  1  1    0   12 
4   1  60  14  0  1  1    0   60 
5   1  40  17  0  1  1    0   40 
6   1  50  17  0  1  1    0   50 

것은, 계수의 이름 모델 데이터 프레임 (fit$x)에서 열 이름과 동일하다. I는 상호 작용 항 (예 c12hour:sex12) 찾으면

, 전 결장의 이름을 분할 c12hoursex12 있고, 모델 매트릭스 컬럼 이름을 통해 값을 찾을 수있다 (이름이 동일하다).

이제 내 질문은 merMod 개체로 어떻게 할 수 있습니까? 원래 값 모델 ([email protected])에 맞도록 사용되는 데이터 프레임의 열 이름은 다음과 같다 : summary 또는 fixef 통해 액세스

library(lme4) 
fit <- glmer(f1care ~ c12hour + neg_c_7 + c172 + 
      sex1 + sex2 + 
      c172:neg_c_7 + sex1:c12hour + (1|g2ctry), 
      data = mydf, 
      family = binomial("logit")) 

> colnames([email protected])[-1] 
[1] "c12hour" "neg_c_7" "c172" "sex1" "sex2" "g2ctry" 

coeffciients을, 다음과 같이 :

Fixed effects: 
       Estimate Std. Error z value Pr(>|z|)  
(Intercept) 1.2388127 0.2382648 5.199 2e-07 *** 
c12hour  0.0018070 0.0016450 1.098 0.272018  
neg_c_7  -0.0387817 0.0115511 -3.357 0.000787 *** 
c1721   0.1187357 0.2842743 0.418 0.676181  
sex12   -0.0305578 0.1306499 -0.234 0.815069  
sex22   0.1580400 0.0897806 1.760 0.078358 . 
neg_c_7:c1721 -0.0106958 0.0209961 -0.509 0.610458  
c12hour:sex12 -0.0009486 0.0018350 -0.517 0.605206 

> cbind(fixef(fit)) 
         [,1] 
(Intercept) 1.2388126568 
c12hour  0.0018069626 
neg_c_7  -0.0387817065 
c1721   0.1187357405 
sex12   -0.0305578499 
sex22   0.1580400407 
neg_c_7:c1721 -0.0106958049 
c12hour:sex12 -0.0009485618 

위에서 볼 수 있듯이 열 이름 sex1sex2은 계수 "이름"sex12sex22과 구별되지 않습니다 (처음에는 단순한 glm 예와 달리 두 요소가 모두 동일 함). al).

나의 현재 접근법

  • 그것이 factor 경우 (예를 sex1)
  • 체크 열 이름을, 그렇다면 levels를 검색 할 수있다 (예를 들어12)
  • CONCAT 열 이름과 요소 레벨 (그래서 우리는 sex11sex12)
  • 가 연결된 "예측 이름"을 포함하는 상호 작용 용어를 찾을 수 있습니다 (그래서 sex11이 일치를 제공하지 않습니다, 그러나, sex12이 일치합니다 두 번째 상호 작용 용어 c12hour:sex12)

나는이 최고 또는 유일한 솔루션입니다 궁금하거나, 경우가있을 경우 상호 작용 조건을 "감지"내 방식이 작동하지 않습니다 어디?

답변

0

좋습니다, model.matrix은 속임수를 사용하고 열 요약이 모델 요약의 용어 이름에 해당하는 데이터 프레임을 반환합니다.