2014-06-10 2 views
1

회귀 분석 결과에서 모델 행렬의 이름을 사용하지 않고 회귀에서 모델 행렬을 사용할 수 있습니까?회귀 분석 결과에 나타나는 model.matrix의 이름을 방지합니다.

필자는 관찰 할 수없는 몇 가지 상호 작용이있는 과정을 거쳐야합니다. (즉) 상호 작용 결과가 NA 인 경우

관련 질문은 here입니다.

mydata <- read.csv("http://www.ats.ucla.edu/stat/data/binary.csv") 
str(mydata) 

gre_ <- mydata$gre-mean(mydata$gre) 

a <- model.matrix(~-1+gre_:factor(rank),data=mydata)[,-c(2)] 

summary(glm(admit~gpa+gre+factor(rank)+a,data=mydata, family=binomial)) 

우리가 model.matrix 이름 결과에 제거하려면 어떻게

Call: 
glm(formula = admit ~ gpa + gre + rank + a, family = binomial, 
data = mydata) 

Deviance Residuals: 
    Min  1Q Median  3Q  Max 
-1.6449 -0.8886 -0.6332 1.1706 2.1949 

Coefficients: 
         Estimate Std. Error z value Pr(>|z|)  
(Intercept)   -3.0039781 1.4012928 -2.144 0.0321 * 
gpa     0.7634679 0.3297215 2.315 0.0206 * 
gre     0.0016098 0.0016634 0.968 0.3332  
rank    -0.5584921 0.1288588 -4.334 1.46e-05 *** 
agre_:factor(rank)1 0.0014010 0.0028001 0.500 0.6168  
agre_:factor(rank)3 0.0010074 0.0025007 0.403 0.6871  
agre_:factor(rank)4 0.0009936 0.0034111 0.291 0.7708  
--- 

결과 :

여기 내 지점을 설명하기 위해 일부 데이터는?

답변

2

이 수식 구문을 사용하여 실행하면 R은 "a"를 넣습니다. 계수의 이름을 추출하고 gsub()을 원할 경우 첫 번째 "a"를 제거하거나 substr()을 사용하여 첫 번째 문자를 제거 할 수 있습니다. 그것은 당신이 줄을 처리하는 방법에 따라 다릅니다.

다른 옵션은 glm.fit을 사용하고 완전한 모델 행렬을 직접 지정하는 것입니다.

a <- model.matrix(~-1+gre_:factor(rank),data=mydata)[,-c(2)] 
b <- model.matrix(~gpa+gre+rank, data=mydata) 
mm<-cbind(b,a) 

ff<-glm.fit(mm,mydata$admit, family=binomial()) 
class(ff)<-c("glm","lm") 
summary(ff) 

같은 뭔가 견적이 동일하고 변수 이름 그대로 여기에

Call: 
NULL 

Deviance Residuals: 
    Min  1Q Median  3Q  Max 
-1.6449 -0.8886 -0.6332 1.1706 2.1949 

Coefficients: 
        Estimate Std. Error z value Pr(>|z|)  
(Intercept)  -3.0039781 1.4012928 -2.144 0.0321 * 
gpa     0.7634679 0.3297215 2.315 0.0206 * 
gre     0.0016098 0.0016634 0.968 0.3332  
rank    -0.5584921 0.1288588 -4.334 1.46e-05 *** 
gre_:factor(rank)1 0.0014010 0.0028001 0.500 0.6168  
gre_:factor(rank)3 0.0010074 0.0025007 0.403 0.6871  
gre_:factor(rank)4 0.0009936 0.0034111 0.291 0.7708  
--- 
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

(Dispersion parameter for binomial family taken to be 1) 

    Null deviance: 499.98 on 399 degrees of freedom 
Residual deviance: 459.13 on 393 degrees of freedom 
AIC: 473.13 

Number of Fisher Scoring iterations: 4 

를 반환합니다. 기술적으로 실제적으로 glm이라는 실제 객체가 아니기 때문에 우리는 클래스 정보를 추가하여 조금씩 fibbing하고 있지만 거의 동일한 속성 ("call"이 없다는 것을 볼 수 있습니다)을 가지며 대부분의 경우 보통의 glm 객체처럼 동작해야합니다 대부분의 기능은 summary()입니다.

+0

답변 해 주셔서 감사합니다. 그것은 내가 예상하지 못한 곳으로 나를 보냈습니다. 솔루션을 glm에 전달할 수 있습니까? 궁극적 인 목표는 효과 패키지를 사용하는 것입니다. 효과 ("gre_ : 인자 (랭크) 1", 테스트); 하지만, 오류가 발생합니다 .' 오류 조건. 기본 (모델) : 조건이없는 요소 나 속성이 없습니다. ' – DJJ

+0

'이와 같은 디자인 매트릭스에 대해 궁금해 할 때 '조건'은 더 이상 모델을 대표하지 않습니다. 왜 또 이러는거야? 일부 그룹이 누락 될 수 있습니까? 그것들을 모델에 남겨두면 좋을 것이고 R은 그것들을 추정 할 수 없을 것입니다. 그리고 왜 당신은 때때로 랭크를 모두 숫자와 범주로 취급하고 있습니까? 특이한 것 같습니다. – MrFlick

+0

숫자 순위는 오타 였고 첫 코멘트는 부적절합니다. 나는 glm의 모든 속성을 지키는 것이 흥미로울 수도 있다고 생각했습니다. 그러나 나는 그것을 선택해야한다고 생각한다. 감사 – DJJ