이항 결과의 범주 형 예측 변수 집합의 예측력을 평가하는 방법은 무엇입니까? 확률 또는 로지스틱 회귀 계산?


10

간단한 확률이 내 문제에 효과가 있는지 또는 로지스틱 회귀와 같은보다 정교한 방법을 사용하고 배우는 것이 더 나은지 결정하려고합니다.

이 문제의 반응 변수는 이항 반응 (0, 1)입니다. 나는 모두 범주적이고 순서가없는 많은 예측 변수를 가지고 있습니다. 예측 변수의 조합이 1의 가장 높은 비율을 산출하는지 확인하려고합니다. 로지스틱 회귀가 필요합니까? 범주 형 예측 변수의 각 조합에 대해 샘플 세트의 비율을 계산하는 것이 어떻게 유리합니까?


예측 변수가 두 개 이상인 경우 일종의 회귀 모델없이이 작업을 수행하는 것이 까다로울 수 있습니다. 무엇을 염두에 두셨습니까? 단지 큰 차원 연속 표 ( 는 예측 변수의 수)입니까? k케이케이
매크로

예측 변수 범주가 둘 이상의 요소로 그룹화되어 있습니까? 그렇지 않으면 교차되거나 중첩됩니까? 또한 서술 적 진술에만 관심이 있습니까? 데이터가 복잡한 경우 LR 모델이 더 편리 할 수 ​​있으며 LR을 추론하고 싶을 때는 강력히 선호합니다.
gung-Monica Monica 복원

@ 매크로-예, 본질적으로 큰 테이블 일 것으로 생각했습니다. 하나의 열은 시나리오에 해당하는 샘플 포인트 수를 표시하고 다른 열은 1의 비율을 나타냅니다. 각각 10-30 개의 가능한 값을 가진 5 개의 범주 형 예측 변수가 있으므로 시나리오 목록이 높을 것입니다. 나는 R을 통해 각각의 루프를 스크립팅하여 중요한 결과 (시나리오에서 1의 높은 비율과 많은 샘플 포인트 수)를 출력하려고했습니다.
Rachel

@gung-요소가 부분적으로 만 교차됩니다. 어떤 요소도 중첩 된 것으로 간주되지 않습니다. 응답 변수가 1 일 가능성이 높은 요소 (예 : 주, 고객, 직원)의 조합을 찾는 데 관심이 있습니다.
Rachel

1
@EmreA-불행히도 범주 형 변수는 완전히 독립적이지 않습니다. 일부 조합은 다른 조합보다 가능성이 높습니다 ...
Rachel

답변:


11

로지스틱 회귀는 수치 적 부정확도까지 표로 표시 한 백분율과 정확히 일치합니다. 따라서 독립 변수가 인수 객체 factor1등이고 종속 결과 (0 및 1)가 인 x경우 다음과 같은 표현식으로 효과를 얻을 수 있습니다

aggregate(x, list(factor1, <etc>), FUN=mean)

이것을 다음과 비교하십시오

glm(x ~ factor1 * <etc>, family=binomial(link="logit"))

예를 들어, 임의의 데이터를 생성 해 봅시다 :

set.seed(17)
n <- 1000
x <- sample(c(0,1), n, replace=TRUE)
factor1 <- as.factor(floor(2*runif(n)))
factor2 <- as.factor(floor(3*runif(n)))
factor3 <- as.factor(floor(4*runif(n)))

요약

aggregate.results <- aggregate(x, list(factor1, factor2, factor3), FUN=mean)
aggregate.results

출력 내용

   Group.1 Group.2 Group.3         x
1        0       0       0 0.5128205
2        1       0       0 0.4210526
3        0       1       0 0.5454545
4        1       1       0 0.6071429
5        0       2       0 0.4736842
6        1       2       0 0.5000000
...
24       1       2       3 0.5227273

나중에 참조 할 수 있도록 출력의 6 행에서 수준 (1,2,0)의 요인에 대한 추정치는 0.5입니다.

로지스틱 회귀 는 다음과 같이 계수를 포기합니다.

model <- glm(x ~ factor1 * factor2 * factor3, family=binomial(link="logit"))
b <- model$coefficients

이를 사용하려면 물류 기능이 필요합니다.

logistic <- function(x) 1 / (1 + exp(-x))

예를 들어, 수준 (1,2,0)의 요인에 대한 추정치를 구하려면

logistic (b["(Intercept)"] + b["factor11"] + b["factor22"] + b["factor11:factor22"])

(모든 상호 작용이 모델에 포함되어야하고 올바른 추정값을 얻기 위해 모든 관련 계수를 적용해야하는 방법에 유의하십시오.) 출력은 다음과 같습니다.

(Intercept) 
        0.5

의 결과에 동의합니다 aggregate. (출력의 "(인터셉트)"표제는 입력의 흔적이며이 계산에는 사실상 의미가 없습니다.)


또 다른 형식의 동일한 정보가의 출력에 나타납니다table . 예를 들어, (길이) 출력

table(x, factor1, factor2, factor3)

이 패널을 포함합니다 :

, , factor2 = 2, factor3 = 0

   factor1
x    0  1
  0 20 21
  1 18 21

의 컬럼 factor1레벨 (1,2,0) 및 도시에서의 세 가지 요소에 대응 = 1은 의 값이 동일한 우리가 판독 된 것과 동의, 및 .121/(21+21)=0.5x1aggregateglm


마지막으로, 데이터 집합에서 가장 높은 비율 산출하는 요소 조합은 다음의 출력에서 ​​편리하게 얻을 수 있습니다 aggregate.

> aggregate.results[which.max(aggregate.results$x),]
  Group.1 Group.2 Group.3         x
4       1       1       0 0.6071429

1
이것은 많은 정보이며 소화하는 데 약간의 시간이 걸리지 만, 표로 표시된 백분율을 듣고 기꺼이 로지스틱 회귀는 본질적으로 동일한 결과를 제공합니다. 두 예측 변수에 대해 집계 함수를 실행하고 즉시 완료되었습니다 ... 로지스틱 적합에 대한 결과가 몇 분 동안 실행되어 아직 완료되지 않았습니다. 계속해서 내용을 조정하지만 표 형식의 백분율을 사용하게 될 수도 있습니다. 감사합니다!
Rachel

(+1), 커프 오프 로지스틱 회귀 분석 에서이 맥락의 표준 오류 내가 제안한 그래픽 모자이크 플롯 요약에 포함시킬 수 있는지 궁금합니다 . 또한 이것이 흥미로운 상호 작용에 대한 결과를 신속하게 "필터링"할 수있는 좋은 방법이라고 생각합니다 (이것은 단지 나의 생각입니다!)
Andy W

"물리적 회귀는 수치 적 부정확도에 따라 표로 표시 한 백분율과 정확히 일치합니다": 예측 변수의 모든 구성에 대해 표를 표시하지 않습니까? 이 경우 로지스틱 회귀는 가능한 모든 관계를 인코딩 할 수 없습니다.
Neil G

@Neil 물론 모든 "관계"(인자 조합)를 인코딩 할 수 있습니다. 가능한 모든 상호 작용을 사용하십시오. 예제는 R 코드를 참조하십시오. 요소가 많으면 실제로 많은 빈 조합이 있지만 적절한 소프트웨어는 문제를 해결하지 못합니다. 더 나은 소프트웨어는 응답에 변화가없는 조합을 처리합니다.
whuber

@Andy 그래픽에 대한 귀하의 답변을 좋아합니다. 정확한 답변이되는 스레드를 만드는 방법을 찾아야합니다! 아마도 오류 추정치를 모자이크 플롯에 통합하는 것에 대한 당신의 생각은 그것에 접근하는 방법 일 것입니다 : 당신은 어떻게 물류 추정치, 실제 데이터 및 / 또는 동시에 오류를 표현할 것입니까?
whuber

6

각 범주 내에서 이진 반응의 비율 및 / 또는 여러 범주에서 조건부 로 빠르게 살펴 보려면 그래픽 플롯이 유용 할 수 있습니다. 특히, 많은 범주 형 독립 변수에 따른 비율을 동시에 시각화하려면 Mosaic Plots을 제안 합니다.

아래는 블로그 게시물, 영역 기반 플롯 이해 : 통계 그래픽 및 기타 블로그 의 모자이크 플롯 에서 가져온 예 입니다. 이 예는 승객 클래스에 따라 타이타닉 생존자의 비율을 파란색으로 표시합니다. 생존자 비율을 동시에 평가하면서 각 하위 그룹 내 총 승객 수를 여전히 감사 할 수 있습니다 (특히 특정 하위 그룹의 수가 희박하고 더 임의적 인 변동이있을 경우 유용한 정보).

타이타닉의 모자이크 플롯
(출처 : theusrus.de )

그런 다음 여러 범주 형 독립 변수에 대해 후속 모자이크 플롯을 조건부로 만들 수 있습니다. 빠른 시각적 요약에서 동일한 블로그 게시물의 다음 예 는 1 등석 및 2 등석의 모든 어린이 승객이 생존 한 반면 3 등석 어린이는 거의 운임이 없음을 보여줍니다. 또한 클래스 간 여성 생존자의 비율이 첫 번째 클래스에서 두 번째 클래스에서 세 번째 클래스로 눈에 띄게 감소했지만 (승무원의 경우 상대적으로 다시 높았지만) 바의 폭이 좁아지면 여성 승무원은 많지 않습니다.

세 번째 변수에 대한 모자이크 조건부
(출처 : theusrus.de )

얼마나 많은 정보가 표시되는지 놀랍습니다. 이것은 네 가지 차원 (계급, 성인 / 어린이, 성별 및 생존자의 비율)의 비율입니다!

나는 당신이 일반적으로 예측이나 더 많은 인과 적 설명에 관심이 있다면 더 공식적인 모델링을 원할 것이라고 동의합니다. 그래픽 플롯은 데이터의 특성에 관한 매우 빠른 시각적 단서가 될 수 있으며 단순히 회귀 모델을 추정 할 때 (특히 다른 범주 형 변수 간의 상호 작용을 고려할 때) 종종 놓칠 수있는 다른 통찰력을 제공 할 수 있습니다.


+1, 이것이 목표가 단순한 설명인지 추론인지에 관한 위의 의견에서 내가 말하려고 한 포인트입니다. Nb, 요점은 더 명확하고 수치가 더 좋았습니다!
gung-모니 티 복원

@ gung 고마워, 무엇 Nb을 의미합니까? 나는 항상 수치로 더 잘 말합니다!
Andy W

2
통계와 관련이있는 "nb"는 nota bene을 나타내며 , 이는 'note well'(문자 그대로) 또는 'note that'/ 'notice'(더 구어체)로 라틴어입니다.
gung-Monica Monica 복원

3

필요에 따라 재귀 파티셔닝은 결과 변수를 예측하기위한 해석하기 쉬운 방법을 제공한다는 것을 알 수 있습니다. 이러한 방법에 대한 R 소개는 Quick-R의 트리 기반 모델 페이지를 참조하십시오. 나는 일반적으로 ctree()프 루닝에 대해 걱정할 필요가 없으며 기본적으로 예쁜 그래픽을 생성하므로 R의 파티 패키지 구현을 선호 합니다.

이것은 이전 답변에서 제안 된 기능 선택 알고리즘 범주에 속하며 일반적으로 로지스틱 회귀 분석보다 더 나은 예측을 제공합니다.


2

205

데이터가 적 으면 더 적은 수의 매개 변수를 배우려고합니다. 예를 들어 개별 예측 변수의 구성이 반응 변수에 일관된 영향을 미치는 것으로 가정하여 모수의 수를 줄일 수 있습니다.

예측 변수가 서로 독립적이라고 생각하면 로지스틱 회귀는 올바른 일을하는 고유 한 알고리즘입니다. (독립적이지 않더라도 여전히 잘 할 수 있습니다.)

요약하면 로지스틱 회귀 분석은 예측 변수의 독립적 영향에 대해 가정하여 모형 모수의 수를 줄이고 배우기 쉬운 모형을 만듭니다.


1

기능 선택 알고리즘을 살펴 봐야합니다. 귀하의 경우에 적합한 방법 (이진 분류, 범주 변수)은 "최소 중복 최대 관련성"(mRMR) 방법입니다. http://penglab.janelia.org/proj/mRMR/ 에서 온라인으로 빠르게 사용해 볼 수 있습니다 .


둘 이상의 범주 형 예측 변수로이 프로그램을 실행할 수 있습니까? 업로드 페이지에서 첫 번째 열만 데이터의 "클래스"가 될 수있는 것처럼 보입니다. 아마도 데이터의 형식이 어떻게 지정되어 있는지 이해할 수 없습니다.
Rachel

아니면 "클래스"가 출력 변수 (이 경우 0 또는 1) 여야합니까? 그렇다면 범주 형 변수를 더미 변수로 바꾸어 각각에 대한 표시기를 나타내는 것이 중요합니까?
Rachel

원하는만큼 많은 예측 변수를 가질 수 있습니다. 데이터 파일의 첫 번째 행은 기능 이름이어야하고 첫 번째 열은 샘플의 클래스 (응답 변수) 여야합니다. 예를 들면 다음과 같습니다. response,predictor1,predictor2,predictor3 <line break here> 1,5,4,3 <line break here> 0,5,3,-1 <line break here> 1,1,2,3
emrea

1

나는 신용 점수 분야에서 일하는데, 여기서 이상한 사례로 제시되는 것이 표준입니다.

로지스틱 회귀 분석을 사용하고 범주 형 변수와 연속 변수를 모두 가중치 가중치 (WOE)로 변환 한 다음 회귀 분석의 예측 변수로 사용합니다. 범주 형 변수를 그룹화하고 연속 형 변수를 이산 (binning / classing)하는 데 많은 시간이 소요됩니다.

증거의 무게는 간단한 계산입니다. 그것은 클래스에 대한 확률의 로그이고 인구에 대한 확률의 로그는 적습니다.
WOE = ln (Good (Class) / Bad (Class))-ln (Good (ALL) / Bad (ALL)) 이것은 로지스틱 회귀를 사용하여 구축 된 거의 모든 신용 평가 모델에 대한 표준 변환 방법론. 조각 단위로 같은 숫자를 사용할 수 있습니다.

그것의 장점은 각 WOE에 할당되는 계수가 의미가 있는지 항상 알 수 있다는 것입니다. 음의 계수는 데이터 내의 패턴과 상반되며 일반적으로 다중 공선 성으로 인해 발생합니다. 1.0보다 큰 계수는 초과 보상을 나타냅니다. 대부분의 계수는 0과 1 사이에서 나옵니다.


흥미롭고 유익한 게시물에 감사드립니다. 그러나이 스레드의 질문에 어떻게 응답하는지 알 수 없습니다. "이상한 사건"이란 무엇입니까? 다른 곳에서 다른 질문에 답하기 위해 이것을 사용하려고했을까요?
whuber
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.