2014-11-06 6 views
1

전 이진수 인 세 가지 요인에 대한 로지스틱 회귀 분석을 실행 중입니다.로지스틱 회귀에 대한 더미 변수 R

내 데이터

table1<-expand.grid(Crime=factor(c("Shoplifting","Other Theft Acts")),Gender=factor(c("Men","Women")), 
    Priorconv=factor(c("N","P"))) 
    table1<-data.frame(table1,Yes=c(24,52,48,22,17,60,15,4),No=c(1,9,3,2,6,34,6,3)) 

하고 모델

fit4<-glm(cbind(Yes,No)~Priorconv+Crime+Priorconv:Crime,data=table1,family=binomial) 
summary(fit4) 

R 범죄 도둑에 대한 이전 유죄 판결 P는 1 일을 보인다. 결과적으로 위의 두 가지가 모두 1 인 경우 상호 작용 효과는 단지 1입니다. 상호 작용 기간에 대해 다른 조합을 시도하고 싶습니다. 예를 들어 이전 확신이 P 인 경우 어떤 내용인지보고 싶습니다. 좀도둑이 아니야.

R이 1과 0에 대해 다른 경우를 사용하도록하는 방법이 있습니까? 그것은 내 분석을 크게 촉진 할 것입니다.

감사합니다.

답변

4

회귀에서 두 가지 범주 형 변수의 네 가지 조합을 모두 얻었습니다. 다음과 같이이를 볼 수 있습니다

은 여기 회귀의 출력입니다 : Priorconv에 대한 그래서

Call: 
glm(formula = cbind(Yes, No) ~ Priorconv + Crime + Priorconv:Crime, 
    family = binomial, data = table1) 

Coefficients: 
          Estimate Std. Error z value Pr(>|z|)  
(Intercept)     1.9062  0.3231 5.899 3.66e-09 *** 
PriorconvP     -1.3582  0.3835 -3.542 0.000398 *** 
CrimeShoplifting    0.9842  0.6069 1.622 0.104863  
PriorconvP:CrimeShoplifting -0.5513  0.7249 -0.761 0.446942 

, 참조 카테고리 N입니다 (더미 값 = 0 인 하나). Crime의 경우 참조 범주는 Other입니다. 그래서 여기에 네 개의 가능성 각각에 대한 회귀 분석 결과를 해석하는 방법 (여기서 로그 (p는/(1-p는))는 Yes 결과의 확률의 로그입니다) :

1. PriorConv = N and Crime = Other. This is just the case where both dummies are 
    zero, so your regression is just the intercept: 

log(p/(1-p)) = 1.90 

2. PriorConv = P and Crime = Other. So the Priorconv dummy equals 1 and the 
    Crime dummy is still zero: 

log(p/(1-p)) = 1.90 - 1.36 

3. PriorConv = N and Crime = Shoplifting. So the Priorconv dummy is 0 and the 
    Crime dummy is now 1: 

log(p/(1-p)) = 1.90 + 0.98 

4. PriorConv = P and Crime = Shoplifting. Now both dummies are 1: 

log(p/(1-p)) = 1.90 - 1.36 + 0.98 - 0.55 

당신은 요소 순서를 변경할 수 있습니다 두 예측 변수의 값을 비교할 수 있지만 위의 네 가지 경우 각각의 변수 조합이 변경됩니다.

업데이트 : 요인의 순서와 관련하여 회귀 계수 문제에 관해서. 기준 레벨을 변경하면 계수가 변경됩니다. 계수가 다양한 범주 조합 간의 대비를 나타내므로 Yes 또는 No 결과의 예상 확률을 변경하지 않기 때문입니다. 예를 들어 참조 범주를 Priorconv으로 전환해도 예측 된 확률은 같습니다.

m1 = glm(cbind(Yes,No)~Priorconv+Crime+Priorconv:Crime,data=table1,family=binomial) 
predict(m1, type="response") 

1   2   3   4   5   6   7   8 
0.9473684 0.8705882 0.9473684 0.8705882 0.7272727 0.6336634 0.7272727 0.6336634 

table2 = table1 
table2$Priorconv = relevel(table2$Priorconv, ref = "P") 

m2 = glm(cbind(Yes,No)~Priorconv+Crime+Priorconv:Crime,data=table2,family=binomial) 
predict(m2, type="response") 

1   2   3   4   5   6   7   8 
0.9473684 0.8705882 0.9473684 0.8705882 0.7272727 0.6336634 0.7272727 0.6336634 
(예 : 예측 범주를 변경하여 예측을 변경할 수있는 경우 회귀 모델링이 모두 신뢰할 수있는 것은 아닙니다.
+0

여기에서 혼란의 주요 원인은 내가 두려워하는 상호 작용 용어입니다. CrimeOther를 1로 설정하고 PriorConvP도 1로 설정했다면 다른 것, 아마도 중요하지 않습니까? – JohnK

+2

@ JohnK이 경우에는 (두 예측 자 모두가 바이너리이기 때문에) 상호 작용과 관련된 계수가 하나뿐이므로 p- 값이 변경되지 않습니다.일반적으로 (예측 변수가 2 레벨 이상), 상호 작용 테스트에 관심이 있다면 (anova()를 사용하여) 옴니버스 테스트를 수행해야합니다. – davechilders

+0

@DMC 모델 전체가 다른 참조 카테고리에 대해 약간 변경됩니다. 이 코드 레벨 (table1 $ Crime)을 사용해보십시오. table1 $ Crime <-relevel (table1 $ Crime, ref = "도둑질") 레벨 (table1 $ Crime) table1 $ Priorconv <-relevel (table1 $ Priorconv, ref = "N") m -glm (cbind (예, 아니요) ~ Priorconv * 범죄, data = table1, family = binomial) summary (m) – JohnK

1

@ eipi10에서 제공하는 해석에 동의합니다. 또한 모델을 피팅하기 전에 기준 레벨을 변경 relevel을 사용할 수 있습니다 : 나는 glm()formula 인수를 변경

levels(table1$Priorconv) 
## [1] "N" "P" 

table1$Priorconv <- relevel(table1$Priorconv, ref = "P") 
levels(table1$Priorconv) 
## [1] "P" "N" 

m <- glm(cbind(Yes, No) ~ Priorconv*Crime, data = table1, family = binomial) 
summary(m) 

주 더 컴팩트 Priorconv*Crime을 포함 할 수 있습니다.

관련 문제