MASS 패키지의 'polr'함수를 사용하여 15 개의 연속 설명 변수가있는 순서 형 범주 형 반응 변수에 대해 순서 형 로지스틱 회귀 분석을 실행했습니다.
코드를 사용하여 (아래 그림 참조) 내 모델이 UCLA 안내서에 제공된 조언에 따라 비례 승산 가정을 충족하는지 확인했습니다 . 그러나 다양한 컷 포인트의 계수가 비슷할뿐만 아니라 정확히 동일하다는 것을 암시하는 출력에 대해 약간 걱정하고 있습니다 (아래 그림 참조).
FGV1b <- data.frame(FG1_val_cat=factor(FGV1b[,"FG1_val_cat"]),
scale(FGV1[,c("X","Y","Slope","Ele","Aspect","Prox_to_for_FG",
"Prox_to_for_mL", "Prox_to_nat_border", "Prox_to_village",
"Prox_to_roads", "Prox_to_rivers", "Prox_to_waterFG",
"Prox_to_watermL", "Prox_to_core", "Prox_to_NR", "PCA1",
"PCA2", "PCA3")]))
b <- polr(FG1_val_cat ~ X + Y + Slope + Ele + Aspect + Prox_to_for_FG +
Prox_to_for_mL + Prox_to_nat_border + Prox_to_village +
Prox_to_roads + Prox_to_rivers + Prox_to_waterFG +
Prox_to_watermL + Prox_to_core + Prox_to_NR,
data=FGV1b, Hess=TRUE)
모델 요약을 봅니다.
summary(b)
(ctableb <- coef(summary(b)))
q <- pnorm(abs(ctableb[, "t value"]), lower.tail=FALSE) * 2
(ctableb <- cbind(ctableb, "p value"=q))
이제 모수 추정치의 신뢰 구간을 볼 수 있습니다.
(cib <- confint(b))
confint.default(b)
그러나이 결과는 여전히 해석하기가 어렵 기 때문에 계수를 승산 비로 변환하겠습니다
exp(cbind(OR=coef(b), cib))
가정 확인. 따라서 다음 코드는 그래프로 표시 될 값을 추정합니다. 먼저 목표 변수의 각 값보다 크거나 같은 확률의 로짓 변환을 보여줍니다.
FG1_val_cat <- as.numeric(FG1_val_cat)
sf <- function(y) {
c('VC>=1' = qlogis(mean(FG1_val_cat >= 1)),
'VC>=2' = qlogis(mean(FG1_val_cat >= 2)),
'VC>=3' = qlogis(mean(FG1_val_cat >= 3)),
'VC>=4' = qlogis(mean(FG1_val_cat >= 4)),
'VC>=5' = qlogis(mean(FG1_val_cat >= 5)),
'VC>=6' = qlogis(mean(FG1_val_cat >= 6)),
'VC>=7' = qlogis(mean(FG1_val_cat >= 7)),
'VC>=8' = qlogis(mean(FG1_val_cat >= 8)))
}
(t <- with(FGV1b, summary(as.numeric(FG1_val_cat) ~ X + Y + Slope + Ele + Aspect +
Prox_to_for_FG + Prox_to_for_mL + Prox_to_nat_border +
Prox_to_village + Prox_to_roads + Prox_to_rivers +
Prox_to_waterFG + Prox_to_watermL + Prox_to_core +
Prox_to_NR, fun=sf)))
위의 표에는 평행 기울기 가정없이 예측 변수에 대한 종속 변수를 한 번에 하나씩 회귀 분석 할 때 얻을 수있는 (선형) 예측 값이 표시됩니다. 이제 종속 변수에 대한 다양한 컷 포인트로 일련의 이항 로지스틱 회귀 분석을 실행하여 컷 포인트에서 계수의 동등성을 확인할 수 있습니다.
par(mfrow=c(1,1))
plot(t, which=1:8, pch=1:8, xlab='logit', main=' ', xlim=range(s[,7:8]))
통계 전문가가 아니며 여기에 분명한 내용이 빠져있을 수 있습니다. 그러나 모델 가정을 테스트하는 방법에 문제가 있는지 확인하고 동일한 종류의 모델을 실행하는 다른 방법을 알아 내려고 오랜 시간을 보냈습니다.
예를 들어, 많은 도움말 메일 링리스트에서 다른 사람들이 vglm 함수 (VGAM 패키지)와 lrm 함수 (rms 패키지)를 사용한다는 것을 읽었습니다 (예 : 패키지와 함께 R에서 순서 로지스틱 회귀 분석의 비례 배당 가정) VGAM 및 rms ). 동일한 모델을 실행하려고했지만 경고 및 오류가 계속 발생합니다.
예를 들어, 'parallel = FALSE'인수로 vglm 모델을 맞추려고 할 때 (이전 링크 언급은 비례 승산 가정 테스트에 중요하므로) 다음과 같은 오류가 발생합니다.
lm.fit (X.vlm, y = z.vlm, ...) 오류 : 'y'의 NA / NaN / Inf
추가 : 경고 메시지 :
Deviance.categorical.data.vgam (mu = mu, y = y, w = w, 잔차 = 잔차, : 0 또는 1에 가까운 적합치
위에서 생성 한 그래프가 왜 그렇게 보이는지 이해하고 설명 할 수있는 사람이 있는지 물어보고 싶습니다. 실제로 그것이 옳지 않다는 것을 의미한다면, polr 함수를 사용할 때 비례 확률 가정을 테스트하는 방법을 찾도록 도와 줄 수 있습니까? 또는 이것이 가능하지 않은 경우 vglm 함수를 사용하려고 시도하지만 위의 오류가 계속 발생하는 이유를 설명하는 데 도움이 필요합니다.
참고 : 배경으로 여기에는 실제로 연구 영역의 위치 지점 인 1000 개의 데이터 포인트가 있습니다. 범주 형 응답 변수와이 15 개의 설명 변수 사이에 관계가 있는지 확인하려고합니다. 이 15 개의 설명 변수는 모두 공간 특성입니다 (예 : 고도, xy 좌표, 산림에 대한 근접성 등). GIS를 사용하여 1000 개의 데이터 포인트를 무작위로 할당했지만 계층화 된 샘플링 방식을 취했습니다. 8 가지 범주 형 반응 수준 각각에서 125 점을 무작위로 선택했습니다. 이 정보가 도움이되기를 바랍니다.