2012-06-07 5 views
7

lm()을 사용하는 경우 lm()으로 전화를 걸어 na.action = na.pass을 호출하면 요약표에 추정 할 수없는 계수가 있습니다 (왜냐하면 이 경우 누락 된 셀 수).계수에 대한 NA 작업과 R 모델의 요약 R

그러나 요약 오브젝트에서 계수를 추출하는 경우 summary(myModel)$coefficients 또는 coef(summary(myModel))을 사용하면 NA가 생략됩니다.

요약을 인쇄 할 때 계수가 포함 된 것과 같은 방법으로 계수를 추출 할 때 NA가 포함되기를 원합니다. 이것을 할 수있는 방법이 있습니까?

설정 options(na.action = na.pass)은 도움이되지 않습니다.

> set.seed(534) 
> myGroup1 <- factor(c("a","a","a","a","b","b")) 
> myGroup2 <- factor(c("first","second","first","second","first","first")) 
> myDepVar <- rnorm(6, 0, 1) 
> myModel <- lm(myDepVar ~ myGroup1 + myGroup2 + myGroup1:myGroup2) 
> summary(myModel) 

Call: 
lm(formula = myDepVar ~ myGroup1 + myGroup2 + myGroup1:myGroup2) 

Residuals: 
     1  2  3  4  5  6 
-0.05813 0.55323 0.05813 -0.55323 -0.12192 0.12192 

Coefficients: (1 not defined because of singularities) 
        Estimate Std. Error t value Pr(>|t|) 
(Intercept)   -0.15150 0.23249 -0.652 0.561 
myGroup11   0.03927 0.23249 0.169 0.877 
myGroup21   -0.37273 0.23249 -1.603 0.207 
myGroup11:myGroup21  NA   NA  NA  NA 

Residual standard error: 0.465 on 3 degrees of freedom 
Multiple R-squared: 0.5605,  Adjusted R-squared: 0.2675 
F-statistic: 1.913 on 2 and 3 DF, p-value: 0.2914 

> coef(summary(myModel)) 
       Estimate Std. Error t value Pr(>|t|) 
(Intercept) -0.15149826 0.2324894 -0.6516352 0.5611052 
myGroup11 0.03926774 0.2324894 0.1689012 0.8766203 
myGroup21 -0.37273117 0.2324894 -1.6032180 0.2072173 

> summary(myModel)$coefficients 
       Estimate Std. Error t value Pr(>|t|) 
(Intercept) -0.15149826 0.2324894 -0.6516352 0.5611052 
myGroup11 0.03926774 0.2324894 0.1689012 0.8766203 
myGroup21 -0.37273117 0.2324894 -1.6032180 0.2072173 

답변

1

은 왜 그냥 장착 모델 계수를 추출하지 않습니다 : 가장 쉬운 옵션을 보인다

> coef(myModel) 
      (Intercept)    myGroup1b 
      -0.48496169    -0.07853547 
      myGroup2second myGroup1b:myGroup2second 
       0.74546233      NA 

여기

은 예입니다.

na.action은 이와 관련이 없습니다. 예를 들어, 이 아니고 na.action = na.pass이 아닙니다.

na.action

보통 화학식과 관련하여, 모델에 맞게 전달 된 데이터 NA의 처리를위한 전역 옵션이고; 그것은 또한 함수 이름 인 na.action()입니다. R은 data 인수와 수식에 표현 된 모델의 상징적 표현에서 소위 모델 프레임을 구축합니다. 이 시점에서 NA이 감지되고 na.action의 기본 옵션은 어떤 변수에 대해서도 NA으로 샘플을 삭제하여 NA을 데이터에서 제거하려면 na.omit()을 사용하는 것입니다. 가장 유용한 대체 방법은 na.exclude()입니다. 피팅하는 동안 NA이 제거되지만 적합 값, 잔차 등의 올바른 위치에 NA을 다시 추가하십시오.이 경우 ?options을 읽고 더 많은 경우 ?na.omit?na.action을 읽어보십시오.

+2

감사합니다. 적합 모델에서 계수를 추출하는 것이 최후의 수단으로 작용할 수도 있지만 요약 표에 신뢰 구간을위한 두 개의 열을 바인딩하려고합니다. 나는 견적만을 원하지 않는다. 나는 표준 오차, p- 값 등을 신뢰 구간이 끝에 붙도록하고 싶다. 나는 처음부터 테이블을 만들 수는 있지만, 같은 순서로 같은 수의 행을 출력하기 위해'coef (summary (myModel))'와'confint (myModel)'을 변경해야하는 간단한 설정이있을 수 있다고 생각했습니다. . – Jdub

+0

@Jdub, 너 알아 냈어? 나는 똑같은 문제가있다. –

+0

여기와 동일! 같은 문제 – vagabond

0

summary.lm의 문서에서 '반환 된 개체에서 별칭 계수가 생략되었지만 인쇄 방법으로 복원되었습니다'라는 메시지가 표시됩니다. 이 생략을 제어하는 ​​매개 변수가없는 것 같습니다. @Gavin Simpson이 제안한대로 coef (summary (myModel))를 사용하는 것 외에 다른 작업이 있습니다. 당신은 매트릭스

nr <- num_regressors - nrow(summary(myModel)$coefficients) ##num_regressors shall be defined previously 
nc <- 4 
rnames <- names(which(summary(myModel)$aliased)) 
cnames <- colnames(summary(myModel)$coefficients) 
mat_na <- matrix(data = NA,nrow = nr,ncol = nc, 
      dimnames = list(rnames,cnames)) 

를 만든 다음 두 matrice rbind 수 있습니다 다음 na.action 설정이 문제와 관련이없는 것을 설명하기위한

mat_coef <- rbind(summary(myModel)$coefficients,mat_na)