두 개의 범주 형 예측 변수 (a, b)와 이진 대상 (y) 변수가 포함 된 데이터 집합이 있다고 가정합니다.요인 참조 셀 코딩에 의해 도입 된 선형 상관 변수를 무시하는 방법
> df <- data.frame(
> a = factor(c("cat1","cat2","cat3","cat1","cat2")),
> b = factor(c("cat1","cat1","cat3","cat2","cat2")),
> y = factor(c(T,F,T,F,T))
>)
다음의 논리 관계는 데이터에 존재 :
if (a = cat3) then (b = cat3 and y = true)
else if (a = b) then (y = true) else y = false
내가 내 데이터 세트에 대한 모델을 구축 할 glm
를 사용하고 싶습니다. glm
은 내 범주 형 변수 a 및 b에 대한 참조 셀 코딩을 자동으로 적용합니다. 또한 alias
변수가 도입되지 않도록 각 요인 변수에 적합한 코드 번호를 찾는 데 도움이됩니다 (here 설명).
그러나 위의 데이터 세트 에서처럼 변수 a에 대해 생성 된 하나의 참조 코드와 변수 b의 하나의 참조 코드간에 선형 관계가 존재할 수 있습니다.
내 모델의 출력을 참조하십시오> model <- glm(y ~ ., family=binomial(link='logit'), data=df)
> summary(model)
...
Coefficients: (1 not defined because of singularities)
Estimate Std. Error z value Pr(>|z|)
(Intercept) 1.965e-16 1.732e+00 0.000 1.000
acat2 -2.396e-16 2.000e+00 0.000 1.000
acat3 1.857e+01 6.523e+03 0.003 0.998
bcat2 0.000e+00 2.000e+00 0.000 1.000
bcat3 NA NA NA NA # <- get rid of this?
나는이 사건을 처리하는 방법을
? 생성 된 참조 코드 중 일부를 생략하도록 glm에 지시 할 수 있습니까? 실제 문제는 내 "cat3"
값이 NA
에 해당합니다. 두 개의 의미있는 요소 변수가 내 데이터 집합의 정확히 동일한 인스턴스에 NA
있습니다.
편집 :
이 확인 된 답변이 코멘트에서 지적하지만,이 특정한 경우에 특이성이 단순히 무시 될 수있다, 문제를 해결한다.
@ ZheyuanLi : 질문 제기에 감사드립니다. 특이점이 모델 (예 : 알고리즘 수렴 속도)에 부정적인 영향을 미칠 수 있는지 확실하지 않았기 때문에 올바르게 이해하면 이러한 특이점을 무시하고 예측 된 모델을 그대로 사용할 수 있습니까? – fab