로지스틱 회귀 예측 결과


14

다음 코드를 사용하여 로지스틱 회귀를 만들었습니다.

full.model.f = lm(Ft_45 ~ ., LOG_D)
base.model.f = lm(Ft_45 ~ IP_util_E2pl_m02_flg)
step(base.model.f, scope=list(upper=full.model.f, lower=~1),
     direction="forward", trace=FALSE)

그런 다음 출력을 사용하여 최종 모델을 만들었습니다.

final.model.f = lm(Ft_45 ~ IP_util_E2pl_m02_flg + IP_util_E2_m02_flg + 
                           AE_NumVisit1_flg + OP_NumVisit1_m01_flg + IP_TotLoS_m02 + 
                           Ft1_45 + IP_util_E1_m05_flg + IP_TotPrNonElecLoS_m02 + 
                           IP_util_E2pl_m03_flg + LTC_coding + OP_NumVisit0105_m03_flg +
                           OP_NumVisit11pl_m03_flg + AE_ArrAmb_m02_flg)

그런 다음 예측 함수를 사용하여 다른 데이터 세트의 결과를 예측했습니다.

log.pred.f.v <- predict(final.model.f, newdata=LOG_V)

유쾌한 ROC 곡선을 설정하고 민감도와 특이도를 설정하여 예상되는 응답을 제공하는 테이블을 만들 수있었습니다.

그러나 내가하려고하는 것은 각 데이터 행에 대해 Ft_45의 확률이 1인지 확인하는 것입니다. log.pred.fv의 출력을 보면 예를 들어 다음과 같습니다.

1 -0.171739593    
2 -0.049905948    
3 0.141146419    
4 0.11615669    
5 0.07342591    
6 0.093054334    
7 0.957164383    
8 0.098415639    
.
.
.
104 0.196368229    
105 1.045208447    
106 1.05499112

나는 내가하고있는 일을 잠정적으로 파악하기 때문에 0과 1 사이의 확률을 기대할 때 1보다 큰 음수와 높은 값을 해석하는 방법을 이해하기 위해 고심하고 있습니다.

그래서 내 질문은 출력을 변환해야하거나 완전히 잘못 된 단계를 놓친 것입니다. 제공 할 수있는 도움에 대해 미리 감사드립니다.

답변:


23

먼저 로지스틱 회귀 모델이 아닌 일반 선형 회귀 모델을 작성한 것처럼 보입니다. 로지스틱 회귀 모델을 구축하기 위해, 당신은 사용할 필요 glm() family="binomial" 하지 lm().

사건 의 확률을 예측하기 위해 독립 변수 및 을 사용하여 다음과 같은 로지스틱 회귀 모델을 작성한다고 가정합니다 .x 3 y엑스1,엑스2엑스와이

logit <- glm(y~x1+x2+x3,family="binomial")

이 모델에는 회귀 계수 및 있습니다. β 3β0,β1,β2β

그런 다음 predict(logit)R은 계산하고 반환 b0 + b1*x1 + b2*x2 + b3*x3합니다.

와이=영형(1)=β0+β1엑스1+β2엑스2+β엑스

R에서는 다음과 같이 할 수 있습니다.

pred <- predict(logit,newdata=data) #gives you b0 + b1x1 + b2x2 + b3x3
probs <- exp(pred)/(1+exp(pred)) #gives you probability that y=1 for each observation

첫 번째로 코드를 수정하고 두 번째로 R의 확률을 얻는 방법을 설명해 주셔서 대단히 감사합니다. 나는 그것을 진행했으며 완벽하게 작동합니다. 몇 주 전에 물어 봤으면 좋겠다 !!
SeBee

2
probs <- exp(predict(logit, type = "response" , newdata=data)`probs <-1 / (1 + exp (-pred)) 로 짧게 만들 거나 최소 로 만들 수 있습니다
snoram

11

의 문서를 보면 호출 predict.glm에서 추가 매개 변수를 사용하는 것이 쉬운 것처럼 보입니다 predict.

 type = "response"

설명서를 참조하십시오 :

입력 - 예측의 유형이 필요합니다. 기본값은 선형 예측 변수의 척도입니다. 대안 "응답"은 반응 변수의 척도에 있습니다. 따라서 기본 이항 모형의 경우 기본 예측은 log-odds (logit scale의 확률)이고 type = "response"는 예측 된 확률을 제공합니다. "terms"옵션은 선형 예측 변수 척도에서 모형 수식에 각 항의 적합치를 제공하는 행렬을 반환합니다. 이 인수의 값은 축약 될 수 있습니다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.