로지스틱 회귀 분석 그래프 | 로지스틱회귀분석(Logistic Regression, Logit Regression) With Spss [자막] 3025 투표 이 답변

당신은 주제를 찾고 있습니까 “로지스틱 회귀 분석 그래프 – 로지스틱회귀분석(Logistic regression, Logit regression) with SPSS [자막]“? 다음 카테고리의 웹사이트 https://chewathai27.com/you 에서 귀하의 모든 질문에 답변해 드립니다: https://chewathai27.com/you/blog/. 바로 아래에서 답을 찾을 수 있습니다. 작성자 이기훈 이(가) 작성한 기사에는 조회수 800회 및 좋아요 23개 개의 좋아요가 있습니다.

로지스틱 회귀 분석 그래프 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 로지스틱회귀분석(Logistic regression, Logit regression) with SPSS [자막] – 로지스틱 회귀 분석 그래프 주제에 대한 세부정보를 참조하세요

종속변수가 이항형(Binary)일 때 사용하는 로지스틱 회귀분석의 이론과 실습
공부시간에 따른 합격확률 예측 예제 (simple)
고용형태와 보수에 따른 이직의사 예측 예제 (multiple)
프로빗(Probit)과 로짓(Logit)은 무엇이 다른 것인가?

로지스틱 회귀 분석 그래프 주제에 대한 자세한 내용은 여기를 참조하세요.

로지스틱회귀분석 (R) :: 지루한 일상의 소중함

로지스틱회귀분석에 사용되는 표준로지스틱 함수는,. y=ex1+ex. 이다. 그래프로 그려보면, df <- data.frame(x=seq(-6,6,length.out = 100)) df$y ...

+ 여기를 클릭

Source: every-day-life.tistory.com

Date Published: 3/12/2022

View: 9331

로지스틱회귀분석 그래프 그리기 – 깜신의 통계 왕초보 탈출 38탄

로지스틱회귀분석을 통해 찾은 의미 있는 결과들을 그래프로 그려보려고 합니다. 어떻게요? 아주 예쁘고, 직관적으로요. 더구나 쉽게 말이죠. ^_____ …

+ 여기에 더 보기

Source: jinmedi.tistory.com

Date Published: 2/26/2022

View: 836

로지스틱 회귀 분석 그래프 – CodeDragon

로지스틱 회귀 분석 그래프. 0을 기준으로 꺽여진 양의 값과 꺽여진 음의 값을 가지는 그래프를 따릅니다. 참(1)과 거짓(0) 사이를 구분하는 S자 형태의 선을 그려 …

+ 여기에 보기

Source: codedragon.tistory.com

Date Published: 9/13/2021

View: 3748

R로 로지스틱 함수 그래프 그리기

Introduction. 로지스틱 회귀분석 정리하다가 설명을 위해 로지스틱 함수 그래프를 그렸다. 처음엔 왕 간단하게 ggplot2로 해결하려다가 이왕 블로그 …

+ 여기에 더 보기

Source: sorinya.tistory.com

Date Published: 6/6/2022

View: 8201

[AI] day5. 로지스틱 회귀 (Logistic Regression) – 1

1) 이진 분류 로지스틱 회귀 분석 (Binary Classification Logistic Regression) … 각 그래프에서 가는 선이 y = 1일 때, 테스트케이스가 0과 1로만 …

+ 여기에 자세히 보기

Source: keykat7.blogspot.com

Date Published: 5/9/2022

View: 663

5-6. 로지스틱 회귀분석(Logistic Regression)

로지스틱회귀분석 은 종속변수가 범주형이면서 0 or 1 인 경우 사용하는 … 그리고 이 식을 X에 대한 P의 그래프 로 나타내면, P 는 0과 1의 값을 …

+ 더 읽기

Source: nittaku.tistory.com

Date Published: 4/5/2021

View: 9233

로지스틱 회귀 – 위키백과, 우리 모두의 백과사전

하지만 로지스틱 회귀는 선형 회귀 분석과는 다르게 종속 변수가 범주형 데이터를 대상으로 하며 입력 데이터가 주어졌을 때 해당 데이터의 결과가 특정 분류로 나뉘기 …

+ 여기에 자세히 보기

Source: ko.wikipedia.org

Date Published: 5/16/2021

View: 6525

주제와 관련된 이미지 로지스틱 회귀 분석 그래프

주제와 관련된 더 많은 사진을 참조하십시오 로지스틱회귀분석(Logistic regression, Logit regression) with SPSS [자막]. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

로지스틱회귀분석(Logistic regression, Logit regression) with SPSS [자막]
로지스틱회귀분석(Logistic regression, Logit regression) with SPSS [자막]

주제에 대한 기사 평가 로지스틱 회귀 분석 그래프

  • Author: 이기훈
  • Views: 조회수 800회
  • Likes: 좋아요 23개
  • Date Published: 2022. 4. 21.
  • Video Url link: https://www.youtube.com/watch?v=xHWBOrX-hl8

로지스틱회귀분석 (R)

logistic.Rdata 0.04MB

이전까지는 주로 선형회귀분석방법에 대해 알아보았다. 선형회귀분석법은 다른 분석방법을 배우기 위한 기본과정이기 때문에 많은 시간을 할애해서 배울 필요성이 있기는 하지만, 실제로 논문작성에서 그리 많이 사용되는 방법은 아니다. 하지만 이번에 다룰 로지스틱회귀분석법은 극단적으로 말하자면 관찰연구의 대부분을 차지하는 방법이다. 아마 대부분의 임상의사는 로지스틱회귀분석+생존분석으로 평생 욹어 먹을 가능성이 크다. 그런 만큼 세심히 알아보자.

1. 로지스틱회귀분석의 기본원리

원래 학문적 배경이 수학이나 통계 쪽이 아니라서 숫자 나오면 두통이 발생하기 시작한다. 하지만 그래도 이해를 위해 어쩔 수 없이 알아야 하는 과정이 존재한다. 머리 덜 아프게 그리스식 알파벳은 사용 않고 최대한 쉽게 설명해 보려 한다.

로지스틱 회귀분석은 확률을 다루는 분석법이다. 나이가 증가함에 따라 당뇨 확률이 어떻게 변하는가? 허리둘레와 당뇨 확률의 관계는 어떤가?… 등등… yes/no를 비율을 다루는 분석법이다.

확률을 다룸에 있어서,

1) 대개 yes는 1, no는 0 으로 처리한다.

2) 그렇게 되면 어느 시점에서의 확률은 평균치와 동일해진다. (BMI 30인 사람 10명 중 당뇨환자가 5명이었다면 당뇨 확률은 (0*5+1*5)/2=0.5, 즉 50%이다.)

3) 확률은 최소치가 0이며, 최대치는 1이다. (0~1 사이 범위를 벗어날 수 없다.)

4) 3)에 의해 확률은 선형일 수 없다. (왜냐하면 BMI와 당뇨 확률이 선형이라면, BMI가 아주 낮은 경우 당뇨확률은 -가 되어야 한다. 마찬가지로 BMI가 아주 높은 경우 당뇨확률은 1을 넘어야 한다.–> 그런 수치가 나오는 BMI가 현실성이 있느냐 없느냐와는 다른 얘기다. 선형관계인 경우 무조건 확률이 0~1 범위를 벗어날 수 있다는 것 자체가 중요하다.)

이런 문제를 해결하기 위해 사용된 방법 중 하나가 로지스틱 곡선이다.

로지스틱회귀분석에 사용되는 표준로지스틱 함수는,

$$y=\frac{e^x}{1+e^x}$$

이다. 그래프로 그려보면,

df <- data.frame(x=seq(-6,6,length.out = 100)) df$y <- exp(df$x)/(1+exp(df$x)) with(df,plot(x,y,type = "l")) 위와 같은 그래프가 그려진다. x가 -∞ 이어도 y는 0 미만으로 내려가지 않으며, x가 ∞여도 y는 1을 넘지 않는다. 흔히 말하는 시그모이드 형태의 대표적인 곡선이다. 하지만 이런 형태의 곡선이 여럿 존재하는데 로지스틱 곡선이 최강자가 된 이유는 계산이 쉽기 때문이다. $$odd=\frac{p}{1-p}$$ $$log(odd)=logit=log(\frac{p}{1-p})$$ $$log(\frac{y}{1-y})=x$$ with(df,plot(x,log(y/(1-y)),type="l")) 아주 심플해졌다. 로지스틱회귀분석이 많이 사용되는 이유는, 확률이 로지스틱 곡선을 만족한다고 가정하면, 확률의 로그오즈값(로짓값)을 선형회귀방정식으로 구할 수 있다는 것이다. 한 단계 더 진행해 보자. library(dplyr) library(ggplot2) dm %>% ggplot(aes(floor(HbA1c*2)/2,DM))+stat_summary(fun.y = mean, geom = “line”)+theme_classic(base_size = 12)

당화혈색소수치에 따른 당뇨 확률의 그래프이다(floor는 소수점 아래를 버리라는 명령어이다. floor(x*2)/2는 무엇을 목적으로 한 명령어 일까? 임의의 숫자로 연습해보자.). HbA1c를 0.5 간격으로 묶었음에도 불구하고 그래프 특히 후반부 가 지저분하다. HbA1c 6.5 이상이면 당뇨인데… 진단 안 받은 채로 당뇨 아니라고 우기는 사람들의 역할 + HbA1c의 분포 자체가 right shifted 되어 있어서 9 이상인 사람의 절대수가 그리 많지 않다는 점 등이 복합적으로 작용한 결과이다.

로지스틱 회귀분석을 해 보면,

m1 <- glm(DM~HbA1c, data=dm, family="binomial") summary(m1) 이 결과를 해석해보면, $$log(\frac{p}{1-p})=2.08*HbA1c-14.96$$ $$\frac{p}{1-p}=e^{2.08*HbA1c-14.96}$$ 이 된다. 이는 HbA1c 가 1 증가하면 오즈값은 exp(2.08)=8배 증가한다는 것을 보여준다(HbA1c의 분포는 Right shifted 되어 있다. 여기서는 이해를 쉽게 하기 위해 그냥 분석했지만 제대로 하려면 정규분포화 시킨 후 분석해야 한다.). round(cbind(exp(coef(m1)),exp(confint(m1))),3) df <- data.frame(HbA1c=seq(4,14,length.out = 100)) df$pred <- predict(m1, newdata = df, type = "response") dm %>% ggplot(aes(floor(HbA1c*2)/2,DM))+stat_summary(fun.y = mean, geom = “line”)+geom_line(data=df,aes(HbA1c,pred),lty=2,lwd=1,col=”red”)+theme_classic(base_size = 12)

로지스틱회귀분석이 어떤 방식으로 진행되는지 대충 감이 잡히는지?

그런데… 이 결과를 좋다고 받아들이기에는 2가지 문제가 있다.

1) HbA1c와 로그 오즈(당뇨)의 관계는 진짜로 선형인가? 선형회귀분석때는 그래프 그려서 선형 확인했었는데… 확률은 그래프 그리기 만만치 않다. 아마 선형 아닐 거다. 자연적인 관계에서 완전 선형은 그리 쉽지 않다.

2) 확률의 천장이 진짜 1 맞는가? 바닥은 0 맞아 보이는데, 천장은 내 눈에는 1보다 낮은 수치로 보인다.

이 문제를 해결하기 위한 방법은,

1) 웬만하면 로지스틱 회귀분석에서 독립변수로 연속 변수는 사용하지 않는다. 전부 범주형 변수로 바꿔 사용하면 선형성 문제를 벗어날 수 있다. 아니면 일반 가법 모형(Generalized Additive Model) 쓰는 방법도 있기는 한데…. 아마 의학계열에서는 리뷰어 심사 통과하기 힘들 거다(틀렸다는 얘기는 아니다. 그 분야에서 흔히 쓰이지 않는 분석법을 이용하면 리뷰어에게 받아들여질 가능성은 0으로 수렴한다. 그럼에도 불구하고 꼭 필요하다면 우선 진행한 후 이 논문 저 논문에 받아들여질 때까지 계속 투고하는 방법밖에는 없다.).

2) 연구대상 설정 단계부터 주의한다. 다른 말로 하면 당뇨 진단 유무에 대해 연구하고 싶으면 연구 대상자가 당뇨의 유병률이 어느 정도 이상 되는 집단이 되도록 설정하라는 얘기다. 나이를 중년 이후로 한정한다던가… 위의 예제는 HbA1c 6.5 이상이면 다른 거 필요 없이 당뇨이다. 따라서 후반부 확률은 1에 가까울 것이 예측되는 상황이었다. 그런데도 실제로 보니 후반부도 1보다 낮아 보인다. 납득하기 힘든가?

m2 <- nls(DM~SSlogis(input = HbA1c,Asym = Asym,xmid = xmid,scal = scal),data=dm) summary(m2) df$pred2 <- predict(m2, newdata = df) dm %>% ggplot(aes(floor(HbA1c*2)/2,DM))+stat_summary(fun.y = mean, geom = “line”) +geom_line(data=df,aes(HbA1c,pred),lty=2,lwd=1,col=”red”) +geom_line(data=df,aes(HbA1c,pred2),lwd=1,col=”blue”)+theme_classic(base_size = 12)

오늘 주제도 아니면서 앞으로도 볼일 거의 없을 “비선형 회귀분석” 결과이다. 파란 실선이 비선형회귀분석 결과인데 천장 높이는 0.76이다(회귀식 결과에서 Asym). 눈으로 보니 어떤가? 왠지 붉은 선보다 파란선이 더 그럴듯해 보이지 않은가? 로지스틱 회귀분석은 확률을 무조건 0~1 사이에 분포시킨다. 이번 분석은 천장이 1에 가까우니 문제없지만 만약 천장이 0.5보다 낮으면… 사실 이런 문제 신경 안 써도 큰 문제는 없다. 하지만 n 수 끌어 모으려고 아토피 연구에 80대 노인까지 넣는다던가… 흡연 연구에 초등학생까지 집어넣는 일은 하지 말자. n수 늘리려다 오히려 연구가 망가지는 경우가 있다.

2. 결과변수(Y) 설정

그럼 이제 본 분석으로 넘어가 보자. 분석법으로 로지스틱 회귀분석을 사용하는 경우는 1) 처음부터 결과변수가 이 분형 변수일 때와, 2) 결과변수가 연속 변수나 그 비슷한 형태이었는데 필요에 의해 이분형 변수로 나눈 경우 두 가지 경우가 있다. 첨부파일 중 dep 데이터를 열어보자.

library(car) library(dplyr) library(ggplot2) head(dep) summary(dep)

dep데이터는 65세 이상 노인의 우울증 점수(PHQ-9)를 보기 위한 가상의 데이터이다.

연구의 목적(study question)이 “과연 직업 여부는 독거노인의 우울증 점수에 영향을 미치는가?”라고 한다면 원인 변수(X)는 직업 유무가 될 것이며, 결과변수(Y)는 우울증 점수가 될 것이다(두 명의 주인공). 그 외 다른 변수들은 보정변수(들러리)로 처리하면 된다. 당연한 얘기겠지만 주인공에게는 좀 더 따뜻한 관심을 가져야 한다. 직업 유무는 occu 변수(1:있음, 0:없음)이며, 우울증 점수는 PHQ변수이다. 직업유무는 이분형 변수이니 우선은 넘어가고 PHQ-9에 대해 먼저 살펴보자.

설문지는 9 항목으로 구성되어 있으며, 0~3까지 항목 중 하나를 선택하도록 되어 있다. 그러면 점수를 합산해서 아래의 표에 따라 해석하도록 되어 있다 (1~4: minimal, 5~9:mild, 10~14:moderate, 15~19:moderately severe, 20~27: severe)

다시 자료로 돌아와서 PHQ-9 점수의 분포를 살펴보면,

table(dep$PHQ9) hist(dep$PHQ9)

전형적인 right-shift 되어있는 자료이다. 우선 예로 내려오는 말에 따라 로그 변환(0이 포함되어 있으니 정확히는 log(PHQ+1))해보면,

좀 even 하게 펼쳐지긴 했지만 아직도 right-shift 되어 있는 상태이다. 더욱이 이 문제는 0점이 대부분이어서 생긴 문제이기 때문에 변수 변환을 한다고 해결되지 않는다. 변수변환 후 연속 변수로 처리하는 것은 문제가 있으니 다음 단계는,

1) 최솟값 그리고 최빈값이 0이며, 정수로 된 값이니 0-inflated poisson이나 0-inflated negative binomial 분포를 가정하고 분석하는 법

2) 설문 해석 법대로 none, mild, moderate, moderately severe, severe로 분리해서 순서형 로지스틱 분석(ordered logistic regression) 시행

3) 두 단계로 나눠 로지스틱 회귀분석 시행

이 될 것이다.

자료는 단순하게 만들수록 안에 담긴 정보를 잃는다. 따라서 정보의 질은 1>2>3의 순서로 볼 수 있다. 근데 문제는 1번과 2번 방법은 분석도 어렵고 해석은 더 어렵다는 점이다. 개인적으로는 분석 및 해석이 용이한 로지스틱 회귀분석을 이용해서 진행하고, 만약 n수가 적어서… 등의 이유로 더 많은 정보가 필요하다면(통계적으로 유의한 결과를 얻는데 실패한다면) 그때 다른 방법을 고려해 볼 수 있을 것이다.

자 그럼 로지스틱 회귀분석으로 결정 났으니, 어딘가를 절단점으로 잘라야 한다. 절단점을 결정함에 있어서 고려할 사항은 1) 임상적 판단과 2) 통계적 판단이다.

1) 임상적 판단: 절단점은 임상적으로 의미를 지녀야 한다. 다른 말로 하면 절단한 이유가 합당해야 한다. 이분형 변수를 최대한 효율적으로 분석하기 위해서는 절단점이 중심값(median)인 경우가 가장 좋다. PHQ-9의 median은 2점인데, 2점은 임상적으로 아무 의미가 없다(PHQ-9 interpretation table 참조). 0/1 기준으로 자르면 우울증 유무로 나눌 수 있고, 9/10 기준으로 자르면 상담 및 약물치료가 필요한 우울증으로 나눌 수 있다. 임상적 의미를 가진다는 말은 이런 의미이다.

2) 통계적 판단: 절단한 후의 대상자 수는 50/50이 되는 것이 가장 이상적이다. 흔히 연구 대상자 수를 언급할 때 무조건 n수가 많으면 좋은 것으로 착각하는 경향이 있다. 때문에 아토피 연구에 노인을 포함하는 만행을 저지르는 것이다. 대상자가 만약 10만 명이라도 연구 대상자의 결과변수 분포가 99999/1 명이라면 이건 유의할 수 없는 연구이다.

연구 대상자가 얼마나 돼야 하나의 명확한 정의는 존재하지 않지만, 아무리 관찰연구라도 100명은 넘기는 것이 좋다. 예전에 차트 찾아 논문 낼 때는 50명만 넘으면 어떻게 해 보려 했었는데… 그래도 SCI급 논문을 노린다면 100명이 안되면 좀… 많을수록 좋기는 한데 최소 100은 넘기게 해 보자. 그다음은 실질적인 연구대상자이다. 결과변수 분포가 98/2명이면 실질적 대상자는 4명(2+2)이다. 물론 진짜 대상자 수가 4명인 연구에 비하면 +alpha가 존재하지만 4명으로 이해하는 것이 좋다(이해 안 가고 납득할 수도 없으면 effect size에 대해 찾아볼 것). 대상자가 50/50이어야 비로소 100명짜리 연구가 되는 것이다.

결과변수 분포의 경험적인 하한 값은 30%이다. 위에서 천장이 어딘지 본 기억이 나는가? 로지스틱 회귀는 확률이 무조건 0과 1 사이에 분포한다고 가정한 후 진행한다. 따라서 확률이 낮을 때는 0에 가까워야 하며, 높을 때는 1에 가까워야 한다. 경험적으로 결과변수의 분포 하한 값이 30%가 안된다면 천장이 1에 비해 결과에 영향을 줄 정도로 많이 낮을 가능성이 있다. 그 부분을 염두에 두고 진행해야 한다.

이런 두 가지 측면을 고려한다면 절단점으로 고려 가능한 부분은 0/1, 4/5, 9/10 셋 중 하나가 될 것이다.

만약 절단점을 0/1로 한다면 대상자의 분포는 41.46/58.54, 실질적 대상자수는 1190명(595*2)이 될 것이다. 절단점이 4/5인 경우는 대상자의 분포는 77.07/22.93, 실질적 대상자수는 658명(329*2), 9/10인 경우 대상자의 분포는 90.73/9.27, 실질적 대상자수는 266명(133*2)이다. 순수 통계적인 측면에서는 절단점 0/1이 가장 좋은데, 임상적인 의미를 고려한다면 4/5도 그리 나쁘지 않다(PHQ-9를 해석하는 방법에 따라 0~4를 하나로 묶기도 한다.). 임상적인 의미는 9/10이 가장 좋지만 9/10의 경우 실질적 대상자가 상당히 많이 줄어들게 된다. 9/10이 꼭 필요하다면 대상자를 더욱 늘리는 방법 (혹은 아예 우울증 환자 집단과 같은 우울증 유병률이 높은 집단을 대상으로 연구 대상 자체를 바꾸는 방법)을 생각해 봐야 한다. 이런저런 측면을 고려해서 이번 예제에서는 4/5를 절단점으로 하기로 했다(어디까지나 이건 내 주관적인 판단이다. 임상적 의미와 통계적 의미의 판단은 연구자 스스로 판단하는 것이 좋다.).

dep$dep <- ifelse(dep$PHQ>=5, 1, 0)

3. 탐색적 자료 분석

다음 단계는 탐색적 자료 분석이다. 로지스틱 회귀분석에서 탐색적 자료 분석은 아무래도 선형 회귀분석 때에 비해 제한적이다. 우선 개별 변수의 분석은 선형 회귀 때와 같으니 생략하고 두 변수의 분석을 살펴보자.

xtabs(~dep+occu, data=dep) round(prop.table(xtabs(~dep+occu, data=dep))*100,2) chisq.test(xtabs(~dep+occu, data=dep))

로지스틱 회귀분석은 결과변수(Y)가 이분형 변수이기 때문에 독립변수가 연속 변수인 경우 t-test, 범주형 변수인 경우 카이스퀘어검정을 사용해서 table 1을 작성하게 된다. t-test는 이전에 다뤘으니 넘어가고 카이스퀘어 검정은 위와 같이 하면 된다. 개인적으로 table에 넣을 내용은 table() 명령어보단 xtab() 명령어를 주로 사용한다. xtab()은 행과 열 값을 보여줘서 헛갈리지 않도록 해 준다. 통계 결과는 chisq.test()를 이용해서 확인한다. 가끔 보면 X가 순서를 가진 범주형 변수인 경우 p for trend 결과를 대신 제시하기도 하는데, 이건 X를 연속형 변수로 처리하겠다는 의미이다. 만약 X를 연속형 변수로 처리할 마음이 없다면 p for trend는 필요 없는 사족이다. 마지막으로 이런 식으로 테이블 만들고 카이 스퀘어 검정하는 게 귀찮고 짜증 나는 경우 gmodels package 같은 것을 이용해 볼 수 있다. 노가다는 줄지만… 이거 저거 하다 보면 로드된 패키지가 많은 경우 엉키거나(에러가 나거나) 짜증 날 수(느려질 수) 있다.

단변수 분석은 glm()을 이용해서 시행한다.

m <- glm(dep~occu, data=dep, family = "binomial") summary(m) round(exp(cbind(coef(m),confint(m))),3) 카이스퀘어 검정 결과와 마찬가지로 단변수 분석에서도 occu 변수에 따른 depression은 유의하다. 위에서도 언급했듯이 로지스틱 회귀분석상의 estimate는 log odds 값이기 때문에 exponential 값이 우리가 원하는 오즈비 값이다. 위 내용을 해석해보면 직업이 있을 경우 우울증이 있을 오즈비는 0.714(95% CI: 0.542-0.934)이다. 혹은 직업이 있을 경우 우울할 가능성이 29% 낮다 (1-0.71). 다음은 age 변수이다. table(dep$age) hist(dep$age) dep$age_cate <- factor(floor(dep$age/5)*5) table(dep$age_cate) 연속 변수 형태인데 어째 65세와 80세만 많다. 히스토그램 분포상으로는 left-shift? even? 하게 분포되어있기는 한데... 한 수치만 많은 경우 이걸 정규화시킬 필요는 없다. 나머지 수치들은 고르게 분포하고 있는데 수치 하나를 바로잡겠다고 정규화시키려다가 오히려 더 망가지기 때문이다. 거기에 age변수는 주인공인 X나 Y가 아니라 엑스트라이다. 큰 문제없으면... 거기에 주 분석법이 로지스틱 회귀 분석이므로, 연속형 변수는 웬만하면 범주화하는 게 맞다. 그래서 5씩 끊어서 age_cate 변수를 만들었다. m <- glm(dep~age_cate, data=dep, family = "binomial") summary(m) round(exp(cbind(coef(m),confint(m))),3) 나이는 유의하지 않다. 독거 여부의 경우를 보면, m <- glm(dep~solo,data=dep, family="binomial") summary(m) round(exp(cbind(coef(m),confint(m))),3) 독거 상태인 경우 (solo=1) 유의하게 우울증일 확률이 증가한다. 위험도가 1.391배 높다 or 39.1% 높다.(원래는 오즈비로 표현하는 게 맞는 표현이다. 그런데 유병률이 낮은 경우 오즈비는 상대위험도와 비슷해지며, 해석도 상대위험도와 비슷하게 한다. 논문 표현에서도 계속 오즈비 어쩌고 하는 것보다 통상 위험도가 얼마 높고 낮다는 표현이 통상적으로 사용된다. 하지만 어디까지나 로지스틱 회귀분석의 결과는 오즈비이다.) 사족으로, 인과관계의 해석에는 주의해야 한다. 지금 이 분석 결과는 단면 연구이기 때문에 인과관계를 포함하고 있지 않다. 우울하기 때문에 독거 상태가 된 건지, 독거 상태라서 우울한 건지 알 수 없다는 얘기다. 다이아몬드 예제에서도 보았듯이 이런 식으로 영향력이 있는 변수는 다른 변수의 결과를 일그러 뜨릴 수 있다. 다변수 분석 및 상호작용을 잘 살펴봐야 한다. 월수입을 보면, hist(dep$log_income) 가구 월소득에 로그 씌우면 정규분포 비스름해진다. 최저 월소득도 기초연금 때문인지 17만 원이라서 로그 씌우는데 아무 문제없었고, 왠지 이 정도로 예쁜 모양으로 만들어지면 범주화시키지 않고 연속 변수 상태로 분석해보고 싶은 충동이 생긴다.^^ library(mgcv) m <- gam(dep~s(log_income),data=dep,family="binomial" summary(m) plot(m) log_income을 연속 변수로 처리하기 위해서는 우선 dep의 확률과 log_income이 선형 관계를 지니는지 확인이 필요하다. 그리고 앞에서도 언급했듯이 어떤 확률이 선형인지 확인하는 것은 상당히 귀찮은 일이다. 이걸 편안하게 해 주는 것이 일반화 가법 모형이다(Generalized Additive Model). 모형을 보면 s(log_income)이라는 항목이 있는데, 이건 log_income을 곡선(spline)으로 처리해 주라는 표현이다. 그리고 곡선으로 처리했음에도 불구하고 위와 같이 직선 모양이 나오면... 이건 직선이라는 얘기이다. 문제는 이 결과를 그대로 제시할 수 있는가이다. 의학계열 논문에서 아직까지는 일반화 가법 모형은 흔히 쓰이는 통계기법은 아니다. 따라서 일반화 가법 모형 결과를 논문에 그대로 제시하거나, 선형성을 확인했으니 로지스틱 회귀분석에 연속 변수 형태로 사용하는 데에는 문제가 발생한다. 따라서 가장 안전한 방법은 월소득도 범주화시켜서 분석하는 것이다(리뷰어 설득이 그리 쉬운 일은 아니다). 하지만 여기서는 선형성을 확인했으니 연속 변수 형태로 다변수 분석으로 가보자. 하여간 봐야 할 변수도 남았고 상호작용도 봐야 하는데... 왠지 귀찮으니 봤다 치고 다변수 분석으로 넘어가 보자. (다만 women*log_income, solo*log_income 두 상호작용에 대해서는 직접 확인해보자.) 4. 다변수 분석 m1 <- glm(dep~women+age_cate+factor(edu)+solo+occu+log_income,data=dep,family="binomial") summary(m1) round(exp(cbind(coef(m1),confint(m1))),3) 다변수 분석 상 성별과 월수입만 유의했고, 그 외 이번 연구의 목표인 직업 유무는 유의하지 않았다. 앞에서 언급했던 women*log_income과 solo*log_income 두 상호작용은 나름 타당성을 가지고 있으나 다분석 결과에서 통계적 유의성을 보이지 않아 제외하였다. 로지스틱 회귀분석에서는 다변수 분석 후에 잔차검정의 중요성이 크지 않다. 아무래도 결과변수가 0/1로 한정되어 있어서 하나의 관측치가 전체적인 모형을 뒤틀 위험성이 크지 않아 그런것으로 보인다. 잔차검정은 넘어가더라도 다중공선성에 대해서는 한 번 확인하고 넘어가는 것이 좋겠다. 위의 vif 결과를 보면 튀는 수치 없이 전부 안정적임을 알 수 있다. 여태까지 로지스틱회귀분석에 대해 알아보았다. 로지스틱 회귀분석은 일반적으로 잔차 검정 및 이상치 검사의 필요성이 그리 크지 않아 초보자들도 무리 없이 분석 가능하다고 알려져 있지만, 그래도 신경 써야 할 부분이 존재하는 것도 사실이다. 이런 부분을 신경 써 준다면 좋은 결과를 얻을 수 있을 것이다. Take Home Message 1. 결과변수의 비율을 신경 쓰자. 2. 연속 변수는 되도록 범주화시켜서 분석

로지스틱회귀분석 그래프 그리기 – 깜신의 통계 왕초보 탈출 38탄

안녕하세요.

깜신 김종엽입니다.

35,36,37탄에 이어 이번 시간에도 로지스틱 이야기를 좀 더 하려고 합니다.

35탄에서는 로지스틱회귀분석의 개념에 대해서 알아봤고

36,37탄에서는 분석 방법을 실제로 따라해봤으니,

이번 포스팅에서는

로지스틱회귀분석을 통해 찾은 의미 있는 결과들을 그래프로 그려보려고 합니다.

어떻게요?

아주 예쁘고, 직관적으로요.

더구나 쉽게 말이죠. ^_____^

이번 유튜브 영상을 찬찬히 보면서 따라하시면

여러분도 이제 로지스틱회귀분석을 활용한 논문 작성에 뛰어들 준비를 모두 마치게 됩니다.

화이팅입니다.

아자아자!!

로지스틱 회귀 분석 그래프

반응형

로지스틱 회귀 분석 그래프

0을 기준으로 꺽여진 양의 값과 꺽여진 음의 값을 가지는 그래프를 따릅니다.

참(1)과 거짓(0) 사이를 구분하는 S자 형태의 선을 그려줍니다.

약물 치료 후 환자의 반응 예측

약물 치료에 대한 환자의 반응(종속 변수)을 예측하고자 할 때,

약물 치료 적용 후 환자가 살아남은 경우 1로, 살아남지 못한 경우를 0으로 표현할 수 있습니다.

반응형

R로 로지스틱 함수 그래프 그리기

0. Introduction

로지스틱 회귀분석 정리하다가 설명을 위해 로지스틱 함수 그래프를 그렸다. 처음엔 왕 간단하게 ggplot2로 해결하려다가 이왕 블로그에 올리는 거니 쪼금 예쁘게 그려야지 하다가 좀 길어졌다. 고로 어떻게 쪼금이나마 예쁘게 그렸는지를 보여주려고 한다!

아래는 단계별로 그래프가 어떻게 변화했는지를 보여준다.

왼쪽 -> 오른쪽

사실 큰 차이는 없고 ㅎㅎ 그냥 어떻게하면 그래프가 좀 깔끔해질까를 고민하다가 만든거다. 아무것도 안하고 그냥 고대로 쓰면 맨 왼쪽이고, 조금 신경쓰면 오른쪽이니 각자 성향껏 그래프를 맘대로 만져보자는 취지!

1. ggplot2의 원리

왜 다짜고짜 ggplot의 원리를 알아보자고 하냐면 ‘R은 시각화가 빵빵해 = ggplot2을 써!’ 나 다름없기 때문이다. 근데 또 막상 ggplot2을 쓰려고 하면 이것저것 기능들이 엄청 많은데, 이걸 다 알아야하나 싶고…하다가 ggplot2의 원리를 한번 이해하고 나니까 사용하기가 심적으로(?) 편해졌다고 해야하나…(먼산) 그래서 첫글인만큼 먼저 설명하고 넘어가려 한다.

“ggplot2은 layer구조다.”

설명끝 포토샵처럼 층을 하나둘씩 쌓아간다고 생각하면 된다. 왜 쓰다보면 ggplot(~) + geom_line() + $ \cdots $ 하면서 쌓아가지 않는가. 여기서 +가 바로 층을 쌓는다는 개념이다.

한번에 데이터도 세팅하고, 예쁘게 꾸미고, label도 바꾸고, legend도 바꾸고, theme도 기본 grey말고 흰색으로 바꾸고, 이왕 넣을꺼 smooth도 넣어서 통계적으로 좀 있어보이게 해보고

$$ \vdots $$

하다가 머리만 아프고 어떻게 쓸지 막막해 진다는거! 순차적으로 단계를 나누고 접근하면 좀 더 다루기 편해지는게 ggplot2라고 (나는) 생각한다

2. 로지스틱 함수 그리기

위 원리를 활용해서 크게 3단계로 나눠서 접근해보았다.

0. 그 전에 데이터 세팅부터 하자

x <- seq(-10,10,0.01) y <- 1/(1+exp(-x)) #요게 로지스틱 함수식 df <- data.frame(y,x) df 첫줄의 seq함수는 자세하게는 seq(from = -10, to = 10, by=0.01)으로 -10부터 10까지 0.01씩 증가하는 수열을 뽑아내는 함수다. 즉, x값으로 해당 수열값을 넣는다는 의미! 1. 기본 틀 짜기(데이터 넣기, 원하는 그래프 얹기) base <- ggplot(df, aes(x=x, y=y)) # 사용할 데이터는 df이며, x,y를 축으로 하는 그래프를 그린다 + geom_line(color = "blue") # 그래프의 선 색은 'blue'로 설정한다 + xlim(-5,5) + ylim(-1.3,1.3) # 각 x, y축의 범위를 설정한다. + geom_hline(yintercept = 0) + geom_vline(xintercept = 0) # 각 x(y=0), y(x=0)축을 그래프에 표시한다. ggplot()안에 aes는 aesthetic의 줄임말로 그래프에 추가할 미적인 영역을 설정하는 구역이다. 가령 x축으로는 df의 x라는 열을, y축으로는 df의 y라는 열을 쓰겠다는 걸 정하고 싶을 때 쓰인다. 선 색은 파랑이로 넣었고, x축 y축 범위를 지정하고 싶어서 xlim, ylim을 썼다. 또 x축이랑 y축을 찐하게 표현하고 싶어서geom_hline, geom_vline을 사용해서 선을 그었다. 2. 라벨 수정하기 labelled <- base + labs(x="z" ,y = "g(z)", title = "logistic function") labs를 쓰면 한번에 라벨들을 붙일 수 있어서 좋다 여기서는 따로 legend가 필요없어서 안 썼다. 나중에 legend 쓰게될 때 다뤄보는 걸루! 3. theme 수정하기 styled <- labelled + theme_light() + theme(plot.title = element_text(face = "bold", size = 11, hjust = 0.5)) default theme은 theme_grey다 theme 종류는 딥따 많으니 원하는 걸 선택해서 쓰면 된다. 개인적으로 깔끔한 거 좋아하는 사람들은 theme_bw, theme_light, theme_classic 추천한다. 왼쪽부터 차례대로 bw, light, classic이다. 나는 가운데꺼로 선택했다 일단 첫번째 시각화 글은 이걸로 끝이다. 모두 예쁜 그래프 그려요! 얍!

[AI] day5. 로지스틱 회귀 (Logistic Regression)

미리 정의되어 있는 클래스의 라벨(종류) 중 하나를 예측하는 것이다. 두 개로 분류하는 이진 분류 (Binary Classification)과 다중 분류 (Multiclass Classification)이 있다.

선형 회귀 분석과 같이 독립변수와 종속변수 간의 관계를 구체적인 함수로 나타내고 예측한다. 2가지 종류 중 하나를 택하는 방식으로 0 또는 1, true 또는 false 중에 하나를 고르는 것이다. 즉 이진 분류 로지스틱 회귀 분석은 이진 분류를 이용하여 독립변수와 종속변수 간의 관계를 파악하는 것이다. 머신러닝에서는 보통 0과 1로서 관계를 나타낸다.각 그래프에서 가는 선이 y = 1일 때, 테스트케이스가 0과 1로만 이루어진다면 (즉, y = 0, y = 1에 대해 몰려있다면), 선형 회귀는 테스트케이스에 대해 오차가 상당히 크지만, 로지스틱 회귀의 경우 그래프가 x축과 평행한 부분이 상당 부분 존재하기 때문에 선형 회귀보다 상대적으로 테스트케이스에 대한 오차가 적은 편이다.예제를 통해 자세히 알아보자.

np.random.multivariate_normal(mu, cov[ , size, check_valid, tol])

mu : 평균

cov(shape) : 분포의 공분산 행렬

size : 난수의 개수

np.eye()는 1을 대각선 형태로 갖고, 나머지는 0으로 채우는 배열이다.

np.eye(N, M=None, k=0, dtype=, order=’C’)

N : row (행) 의 수

M : column (열) 의 수

K : 대각선 위치 변경

([[1, 0, 0, 0, 0], ([[0, 1, 0, 0, 0], ([[0, 0, 0, 0, 0],

[0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [1, 0, 0, 0, 0],

[0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 1, 0, 0, 0],

[0, 0, 0, 1, 0], [0, 0, 0, 0, 1], [0, 0, 1, 0, 0],

[0, 0, 0, 0, 1]]) [0, 0, 0, 0, 0]]) [0, 0, 0, 1, 0]])

k = 0 k > 0 k < 0 즉 위의 코드에서 np.eye(2)는 2차원 배열 ([1, 0], [0, 1]) 을 의미한다. 위의 코드로 생성한 data_y0는 아래와 같은 배열 형태를 보인다. 이 데이터를 Pandas Dataframe을 이용하여 dataframe 형태로 출력해보면 아래와 같이 나온다. 이 처럼 Pandas Dataframe은 배열 데이터를 쉽게 변경하고 다룰 수 있어서 데이터 처리에 많이 쓰는 라이브러리이다. import tensorflow as tf import numpy as np from numpy.random import multivariate_normal, permutation import pandas as pd from pandas import DataFrame from matplotlib import pyplot as plt # Y_0 = 20 Y_1 = 15 learningRate = 0.01 totalStep = 20001 np . random . seed( 321 ) dataNumber_y0 = Y_0 mu_y0 = [ 10 , 11 ] variance_y0 = 20 data_y0 = multivariate_normal(mu_y0, np . eye( 2 ) * variance_y0, dataNumber_y0) df_y0 = DataFrame(data_y0, columns = [ ‘x1’ , ‘x2’ ]) df_y0[ ‘y’ ] = 0 dataNumber_y1 = Y_1 mu_y1 = [ 18 , 20 ] variance_y1 = 22 data1 = multivariate_normal(mu_y1, np . eye( 2 ) * variance_y1, dataNumber_y1) df_y1 = DataFrame(data1, columns = [ ‘x1’ , ‘x2’ ]) df_y1[ ‘y’ ] = 1 # for i in data_y0: # print(data_y0) # for i in df_y0: # print(df_y0) # df = pd . concat([df_y0, df_y1], ignore_index = True ) df_totalTrainData = df . reindex(permutation(df . index)) . reset_index(drop = True ) print( “===== DATA =====>” ) print(df_totalTrainData) print( “df_totalTrainData Shape : {}

” . format(df_totalTrainData . shape)) xTrainData = df_totalTrainData[[ ‘x1’ , ‘x2’ ]] . as_matrix() yTrainData_temp = df_totalTrainData[ ‘y’ ] . as_matrix() print( “xTrainData shape : {}” . format(xTrainData . shape)) print( “yTrainData shape : {}” . format(yTrainData_temp . shape)) yTrainData = yTrainData_temp . reshape([len(df_totalTrainData), 1 ]) print( “yTrainData reshape : {}” . format(yTrainData . shape))

import tensorflow as tf import numpy as np from numpy.random import multivariate_normal, permutation import pandas as pd from pandas import DataFrame from matplotlib import pyplot as plt # Y_0 = 20 Y_1 = 15 learningRate = 0.01 totalStep = 20001 np . random . seed( 321 ) dataNumber_y0 = Y_0 mu_y0 = [ 10 , 11 ] variance_y0 = 20 data_y0 = multivariate_normal(mu_y0, np . eye( 2 ) * variance_y0, dataNumber_y0) df_y0 = DataFrame(data_y0, columns = [ ‘x1’ , ‘x2’ ]) df_y0[ ‘y’ ] = 0 dataNumber_y1 = Y_1 mu_y1 = [ 18 , 20 ] variance_y1 = 22 data1 = multivariate_normal(mu_y1, np . eye( 2 ) * variance_y1, dataNumber_y1) df_y1 = DataFrame(data1, columns = [ ‘x1’ , ‘x2’ ]) df_y1[ ‘y’ ] = 1 # for i in data_y0: # print(data_y0) # for i in df_y0: # print(df_y0) # df = pd . concat([df_y0, df_y1], ignore_index = True ) df_totalTrainData = df . reindex(permutation(df . index)) . reset_index(drop = True ) print( “===== DATA =====>” ) print(df_totalTrainData) print( “df_totalTrainData Shape : {}

” . format(df_totalTrainData . shape)) xTrainData = df_totalTrainData[[ ‘x1’ , ‘x2’ ]] . values yTrainData_temp = df_totalTrainData[ ‘y’ ] . values print( “xTrainData shape : {}” . format(xTrainData . shape)) print( “yTrainData shape : {}” . format(yTrainData_temp . shape)) yTrainData = yTrainData_temp . reshape([len(df_totalTrainData), 1 ]) print( “yTrainData reshape : {}” . format(yTrainData . shape)) # X = tf . placeholder(tf . float32, shape = [ None , 2 ]) Y = tf . placeholder(tf . float32, shape = [ None , 1 ]) W = tf . Variable(tf . zeros([ 2 , 1 ]), name = ‘weight’ ) b = tf . Variable(tf . zeros([ 1 ]), name = ‘bias’ )

Pandas의 concat으로 확률이 0, 1인 데이터를 하나의 Dataframe으로 합쳐준다. 이 때 데이터는 0, 1의 순서에 따라 합쳐지게 되므로 reindex()를 이용해 순서에 상관없이 재정렬되도록 해준다.이제 df_totalTrainData에 재정렬된 데이터가 들어가게 된다. 이 Dataframe을 리스트 형식으로 변환해주자. Pandas의 as_matrix()를 이용해 x1, x2의 데이터는 xTrainData에, y의 데이터는 yTrainData_temp에 저장해준다. 이 결과 xTrainData는 (35, 2)의 shape를, yTrainData는 (35, )의 shape를 가진다. 뒤에 학습 모델 그래프를 구성할 때 행렬 곱셈을 할 때 shape가 다를 경우 계산 수식에서 오류가 발생할 수 있으므로 yTrainData를 reshape()로 (35, 1)로 변경해준다. 이제 출력해보자.지긋지긋한 FutureWarning… .as_matrix() 대신 .values를 사용하란다. 바꿔주고 다시 출력해보자.위 처럼 데이터가 0, 1의 순서에 상관없이 정렬이 되게 출력이 될 것이다. 이제 학습 데이터 준비를 완료했다. 모델 생성을 위한 변수를 초기화하자.x1, x2 데이터는 X 플레이스홀더에, y 데이터는 Y 플레이스홀더에 들어갈 것이다. 이 때 shape에 [35, 2] 같이 모양을 정해줄 수도 있지만, 데이터 수를 정확히 모른다면 None으로 지정해야 계산할 때 오류가 발생하지 않는다.weight와 bias는 각각 tf.zeros()를 이용해서 위와 같은 크기의 배열로 초기화한 변수로 선언해준다.다음엔 학습 모델 그래프를 만들어줄 차례지만, 설명할 내용이 많기 때문에 다음에 이어서 쓰도록 하겠다.

5-6. 로지스틱 회귀분석(Logistic Regression)

로지스틱 회귀분석

지금까지 학습한 선형 회귀분석 단순/다중은 모두 종속변수Y가 연속형 이었다.

로지스틱회귀분석 은 종속변수가 범주형이면서 0 or 1 인 경우 사용하는 회귀분석이다.

로지스틱 회귀분석을 설명하기 위해서는 먼저 로짓 변환 과 오즈 에 대해서 알아야한다.

왼쪽그림의 경우, Y가 0 or 1(사망/생존, 실패/성공, 불합격/합격)이라면 선형회귀로는 fitting하기가 힘들다. 그래서 곡선으로 fitting 하기 위해 사용하는 것이 logistic함수 = 로짓변환 이다.

Odds 는 비 이고, Odds ratio 는 비의 비율 이다.

Odds의 해석은 확률 에서 시작되어 실패에 비해 성공할 확률의 비 를 의미하며 , odds = p / 1-p 로 계산한다.

예를 들어, 게임에서 이길 확률이 1/5, 질 확률이 4/5이면, 게임에서 이길 odds 1/4이 되며, 계산된 값을 바탕으로 5번 중에, 4번 질 동안 1번 이긴다 라고 해석한다.

이 Odds에 Log를 취한 것 이 바로 로짓(Log p/1-p) 이다.

예를 들어, 아래와 같은 교차표가 있다고 가정해보자.

Odds라는 것은 각 독립변수(drugA, drugB)에 대해 실패/성공에 대한 확률을 구한 뒤, 각각 구하는 것이며, 각 약에 대한 <생존Odds>가 구해지면 -> Odds ratio도 계산 할 수 있다.

Odds ratio는 위험요인과 질병발생간의 연관성을 나타낼 때 사용 + 논문기재시 신뢰구간도 같이 제시 해야한다.

예를 들어, 대조군(DrugB)와 실험군(DrugA)를 이용해서, 위험요인(DrugA)와 생존/사망의 연관성을 나타낼때, 각각의 Odds -> Odds ratio를 구한 뒤 제시한다.

오즈비 = 교차비 = 승산비 = 대응위험도 라는 표현도 쓴다.

Odds(A)구하기 P(A, A에 대해 생존확률) = 20 / 52 = 0.38

1-P(A, 사망확률) = 0.62

Odds(A) = 실패(사망)에 비해 생존(성공)할 확률의 비 = 0.38 / 0.62 = 0.61

A약 먹으면, 100명 사망할 동안, 61명 생존 Odds(B)구하기 P(B, 생존/성공확률) = 24/66 = 0.63

1-P(B, 사망/실패확률) = 0.37

Odds(B) = 0.63 / 0.37 = 1.7

B약 먹으면, 100명 사망할 동안, 170명 생존 Odds ratio 구한 뒤 해석 하기 B에 대한 A의 Odds ratio = 0.61 / 1.7 = 0.36

= 0.61 / 1.7 = 해석 : B에 비해 A일 때, 생존(성공)이 0.36배 = 64%가 생존율(성공률)이 떨어진다

로짓 변환

일반 선형회귀모형 glm : f(x) = b0 + b1X1 + b2X2 + .. bpXp

f(x)는 링크함수라고 한다. 이 f(x)자리에 특별한 함수들이 들어가서 구체적인 회귀분석을 만든다.

다중선형 회귀분석 : Y = b0 + b1X1 + b2X2 + .. bpXp

: = b0 + b1X1 + b2X2 + .. bpXp 로지스틱 회귀분석 : ln( p/1-p ) = = b0 + b1X1 + b2X2 + .. bpXp

즉, 로지스틱 회귀분석은 일반회귀모형의 링크함수를 로짓으로 변형한 분석이다.

선형회귀분석은 Y값이 -무한대 < Y < +무한대의 연속형이다. 그러나 로지스틱 회귀분석의 경우 먼저, p는 0 < p < 1 0< 1-p < 1 p가 0에 가까울 경우 : p/1-p = 0/1 = 0 p가 1에 가까울 경우 : p/1-p = 1/0 = 무한대 p/1-p (오즈)의 범위 : 0 < Odds < 무한대 (오즈)의 범위 : 0 < Odds < 무한대 ln( p / 1-p ) 의 범위 : -무한대 < 로짓 < +무한대 역시.. 링크함수의 범위가 -무한대 < <+무한대 범위를 가지게 된다. 독립변수가 1개인 상황의 로지스틱 회귀분석의 식을 p(독립변수X가 성공할 확률) 에 대해서 정리해보자. 그리고 이 식을 X에 대한 P의 그래프 로 나타내면, P 는 0과 1의 값을 가진다. 관측치x를 대입하면 P는 0 or 1로 fitting시킬 수 있게 된다. 로지스틱 회귀분석에서 통계량의 이해 ln(p/1-p) = b0 + b1X1 + b2X2 + ... + bpXp의 로지스틱회귀분석에서 X1을 위험인자라 가정하고, 아래에 대한 해석을 해보자. 오즈비(Odd ratio)에 대한 해석 위험인자 있을 때의 로짓1 = 회귀식1(X1=1대입)을 만든다. 위험인자 없을 때의 로짓2 = 회귀식2(X1=0대입)을 만든다. 회귀식에서 b0, b2X2, ... bpXp는 모두 같고, X1만 대입한 식이 다를 것이다. 로짓1과 로짓2를 뺀다. 우항은 b1*1 - b1*0 으로 인해 b1 만 남는다. ln(p/1-p) - ln(p'/1-p') = b1 ln( 위험인자있을때의 오즈 / 위험인자없을때의 오즈) = b1 ln( 오즈비 ) = b1 ==> b1을 ln(오즈비)로 생각하자. b1 = ln(오즈비) 이므로, b1에 exp취한 값이 오즈비 R에서 실제 구해지는 결과는 b1 이므로, exp를 취한 것( exp(b1) )을 오즈비로 해석 하면 된다.

이므로, 하면 된다. exp(b1) = Odds ratio 는 기준이 1 이며 효과가 없다 로 해석한다. 즉, 위험요인 0에 비해 위험요인1인 경우, 사망율 1배 -> 0% 사망율이 떨어진다. = 효과없다.

는 기준이 이며 로 해석한다. 즉, 위험요인 0에 비해 위험요인1인 경우, 사망율 1배 -> 0% 사망율이 떨어진다. = 효과없다. 1보다 클 경우 는 risky 로 해석한다. 즉, 위험요인 0에 비해 위험요인 1인 경우 사망률이 1.5배 -> 사망율이 50% 증가한다. risky 는 분모오즈의 상황( base line, 대조군, X1=0 )에 비해 분자오즈의 상황( 위험인자, 실험군, X1=1 )이 더 큰 상황

는 로 해석한다. 즉, 위험요인 0에 비해 위험요인 1인 경우 사망률이 1.5배 -> 사망율이 50% 증가한다. 는 분모오즈의 상황( )에 비해 분자오즈의 상황( )이 더 큰 상황 1보다 작을 경우 는 protective 로 해석한다. 즉, 위험요인 0에 비해 위험요인 1인 경우 사망률이 0.5배 -> 사망률이 50% 감소한다. 유의사항1 : 단, 다른효과가 일정(동일)한 상태라는 가정 이 있어야 한다. 유의사항2 : 신뢰구간(Confidence Interval)가 같이 제시해야하며, 적은 값을 기준으로 소극적(보수적)으로 해석한다. 예를 들어, OR(odds ratio)의 95% CI = 5.4 ( 3.3 ~ 7.8) => 3.3 기준으로 최소 3.3배는 위험하다 로 소극적 해석

예를 들어보기

종속변수survived(Y)는 0과 1로 구성되어 있고, 0 = 사망, 1 = 생존 이며, 이것을 예측한다고 가정해보자.

R에서 선형회귀분석을 한다면 lm() 이며,

R에서 로지스틱 회귀분석을 한다면, glm() + family = ‘binomial’ 인자를 사용해야한다.

model <- glm( survived ~ . , family = 'binomial'(link = 'logit'), data= train) model을 summary() 했을 때, Estimated 로 나온 것은 각 변수들의 회귀계수이다. 여기에 exp() 를 취해야지 Odds ratio 가 나온다. Coefficiets(회귀계수) 에는 절편(Intercept) + 각 변수들의 기울기와 표준편차 + wald's z-statistics + p-value 가 나온다. 만약 범주형 변수 sex의 회귀계수를 보면, 범주형이므로 male은 기준이 되어 male에 비해 female 한 단위 증가시 Y의 변화량이 나타날 것이다. 그 추정치는 -2.6609987이다. 이것은 bp(회귀계수, 기울기)이므로, exp()를 취해야지 Odds ratio가 나온다. exp(-2.66) = 0.069 => *남자(ref, Xp=0)에 비해 female(Xp=1, female)의 생존율 이 0.069배 감소한다 *. 왜냐하면 회귀계수가 음수 이므로 반대로 해석 한다. = female의 생존율은 93.1% 증가한다.

직접적으로 바로 exp( model$coefficients) 로 오즈비(Odds ratio)만 관찰할 수 있다.

Age의 오즈비가 0.959가 나왔다? => age가 한단위 증가할수록 생존율 이 0.959배 증가한다. -> 0.041 감소 -> 생존률이 4.1% 감소한다.

직접적으로 바로 신뢰구간을 포함한 오즈비를 보는 방법은 exp( confint(model) ) 를 통해 확인할 수 있다. 2.5% cutoff와 97.5% cut off를 제시한다.

위키백과, 우리 모두의 백과사전

로지스틱 회귀(영어: logistic regression)는 영국의 통계학자인 D. R. Cox가 1958년[1]에 제안한 확률 모델로서 독립 변수의 선형 결합을 이용하여 사건의 발생 가능성을 예측하는데 사용되는 통계 기법이다.

로지스틱 회귀의 목적은 일반적인 회귀 분석의 목표와 동일하게 종속 변수와 독립 변수간의 관계를 구체적인 함수로 나타내어 향후 예측 모델에 사용하는 것이다. 이는 독립 변수의 선형 결합으로 종속 변수를 설명한다는 관점에서는 선형 회귀 분석과 유사하다. 하지만 로지스틱 회귀는 선형 회귀 분석과는 다르게 종속 변수가 범주형 데이터를 대상으로 하며 입력 데이터가 주어졌을 때 해당 데이터의 결과가 특정 분류로 나뉘기 때문에 일종의 분류 (classification) 기법으로도 볼 수 있다.

흔히 로지스틱 회귀는 종속변수가 이항형 문제(즉, 유효한 범주의 개수가 두개인 경우)를 지칭할 때 사용된다. 이외에, 두 개 이상의 범주를 가지는 문제가 대상인 경우엔 다항 로지스틱 회귀 (multinomial logistic regression) 또는 분화 로지스틱 회귀 (polytomous logistic regression)라고 하고 복수의 범주이면서 순서가 존재하면 서수 로지스틱 회귀 (ordinal logistic regression) 라고 한다.[2] 로지스틱 회귀 분석은 의료, 통신, 데이터마이닝과 같은 다양한 분야에서 분류 및 예측을 위한 모델로서 폭넓게 사용되고 있다.

기초 [ 편집 ]

로지스틱 회귀는 이항형 또는 다항형이 될 수 있다. 이항형 로지스틱 회귀(binomial logistic regression)의 경우 종속 변수의 결과가 (성공, 실패) 와 같이 2개의 카테고리가 존재하는 것을 의미하며 다항형 로지스틱 회귀는 종속형 변수가 (맑음, 흐림, 비)와 같이 2개 이상의 카테고리로 분류되는 것을 가리킨다. 이항형 로지스틱의 회귀 분석에서 2개의 카테고리는 0과 1로 나타내어지고 각각의 카테고리로 분류될 확률의 합은 1이 된다.

로지스틱 회귀는 일반적인 선형 모델(generalized linear model)의 특수한 경우로 볼 수 있으므로 선형 회귀와 유사하다. 하지만, 로지스틱 회귀의 모델은 종속 변수와 독립 변수 사이의 관계에 있어서 선형 모델과 차이점을 지니고 있다. 첫 번째 차이점은 이항형인 데이터에 적용하였을 때 종속 변수 y의 결과가 범위[0,1]로 제한된다는 것이고 두 번째 차이점은 종속 변수가 이진적이기 때문에 조건부 확률(P(y│x))의 분포가 정규분포 대신 이항 분포를 따른다는 점이다.

따라서, 대상이 되는 데이터의 종속 변수 y의 결과는 0과 1, 두 개의 경우만 존재하는 데 반해, 단순 선형 회귀를 적용하면 범위[0,1]를 벗어나는 결과가 나오기 때문에 오히려 예측의 정확도만 떨어뜨리게 된다.

이를 해결하기 위해 로지스틱 회귀는 연속이고 증가함수이며 [0,1]에서 값을 갖는 연결 함수 g(x)를 제안하였다. 연결함수의 형태는 다양하게 존재하는데 그 중 대표적인 두 개는 아래와 같다.

로지스틱 모형: g ( x ) = e x 1 + e x {\displaystyle g(x)={\frac {e^{x}}{1+e^{x}}}}

검벨 모형: g ( x ) = e − e x {\displaystyle g(x)=e^{-e^{x}}}

이 중에 계산상의 편리성으로 인하여 로지스틱 모형이 널리 사용된다.

로지스틱 함수 [ 편집 ]

σ ( t ) {\displaystyle \sigma (t)} t {\displaystyle t} σ ( t ) ∈ [ 0 , 1 ] {\displaystyle \sigma (t)\in [0,1]} 표준 로지스틱 함수; 모든에 있어서이다.

로지스틱 모형 식은 독립 변수가 (-∞,∞)의 어느 숫자이든 상관 없이 종속 변수 또는 결과 값이 항상 범위 [0,1] 사이에 있도록 한다. 이는 오즈(odds)를 로짓(logit) 변환을 수행함으로써 얻어진다.[3]

식 [ 편집 ]

오즈 (odds) & 로짓 변환 성공 확률이 실패 확률에 비해 몇 배 더 높은가를 나타내며 그 식은 아래와 같다. odds = p ( y = 1 | x ) 1 − p ( y = 1 | x ) {\displaystyle {\text{odds}}={\frac {p(y=1|x)}{1-p(y=1|x)}}}

로짓 변환 오즈에 로그를 취한 함수로서 입력 값의 범위가 [0,1] 일 때 출력 값의 범위를 ( − ∞ , + ∞ ) {\displaystyle (-\infty ,+\infty )} logit ⁡ ( p ) = log ⁡ p 1 − p {\displaystyle \operatorname {logit} (p)=\log {\frac {p}{1-p}}}

로지스틱 함수 (logistic function): 로지스틱 함수의 그래프는 Figure 1과 같고 이는 독립 변수 x가 주어졌을 때 종속 변수가 1의 범주에 속할 확률을 의미한다. 즉, p ( y = 1 | x ) {\displaystyle {p(y=1|x)}} 로지스틱 함수는 로짓 변환을 통해 만들어지고, 그 형태는 다음과 같다. logistic function = e β ⋅ X i 1 + e β ⋅ X i {\displaystyle {\text{logistic function}}={\frac {e^{\beta \centerdot X_{i}}}{1+e^{\beta \centerdot X_{i}}}}}

수식 유도 [ 편집 ]

가정 [ 편집 ]

N개의 관찰된 데이터 요소의 연속된 숫자가 존재한다고 가정하면, 각 데이터 요소는 m개의 독립 변수의 집합 ( x 1 , i , . . . , x m , i {\displaystyle x_{1,i},…,x_{m,i}} )을 포함하고 있고 이는 설명 변수, 예측 변수, 입력 변수, 특징, 속성이라고도 불린다. 그리고 독립 변수와 연관된 이진 값 형태의 종속 변수 Y i {\displaystyle Y_{i}} 가 존재한다. 이 종속 변수는 응답 변수, 결과 변수, 클래스 변수라고도 일컬어진다. 향후 수식 표현에서는 종속 변수에는 오직 2개의 가능한 값, ‘0’ (실패 또는 없음을 의미)과 ‘1’ (성공 또는 존재를 의미)만이 존재한다고 가정한다. 로지스틱 회귀의 목적은 독립 변수와 종속 변수의 관계를 찾음으로써, 새로운 독립 변수의 집합이 주어졌을 때 종속 변수의 값을 예측할 수 있게 하는 것이다.

독립 변수 [ 편집 ]

예시에서 볼 수 있다시피, 독립 변수는 실제 값, 이진 값, 카테고리 등 어떤 형태든 될 수 있다. 종속 변수의 형태는 연속 변수(수입, 나이, 혈압) 또는 이산 변수(성별, 인종)로 구분된다. 만약, 특정 이산 변수 값의 후보가 2개 이상이 존재한다면 일반적으로 해당 후보들을 임시 변수로 변환하여 로지스틱 회귀를 수행한다. 즉, 구분된 독립 변수들이 각각 ‘0’ 또는 ‘1’의 값을 갖도록 변환한다. ‘0’은 해당 변수가 특정 값을 지니지 않음으로 의미하고 ‘1’은 해당 변수가 주어진 값과 동일하다는 것을 의미한다. 예를 들어, 혈액형의 종류는 4가지(A, B, AB, O)가 있는데 이를 로지스틱 회귀를 수행하기 위해서 데이터 변환을 하면 4가지 혈액형 중에 특정 사람의 혈액형과 같은 값만 ‘1’이 되고 나머지는 ‘0’의 값을 지닌다. 즉, A형인 사람의 데이터는 (1,0,0,0)이 되는 것이다. 이렇게 변환함으로써 구분된 회귀 계수가 이산적인 값을 지니게 할 수 있다.

종속 변수 [ 편집 ]

종속 변수 Y i {\displaystyle Y_{i}} 는 일반적으로 베르누이 분포의 데이터로서 표현한다. 각 종속 변수는 관찰되지 않은 확률 p i {\displaystyle p_{i}} 에 의해 결정된다. 이는 다음의 수학적 표현으로 표현할 수 있다.

Y i | x 1 , i , . . . , x m , i B e r n o u l l i ( p i ) {\displaystyle Y_{i}|x_{1,i},…,x_{m,i}~Bernoulli(p_{i})} Y i {\displaystyle Y_{i}} p i {\displaystyle p_{i}} p i {\displaystyle p_{i}}

E [ Y i | x 1 , i , . . . , x m , i ] = p i {\displaystyle \mathbb {E} [Y_{i}|x_{1,i},…,x_{m,i}]=p_{i}} 각 Y i {\displaystyle Y_{i}} p i {\displaystyle p_{i}} p i {\displaystyle p_{i}} p i {\displaystyle p_{i}}

P r ( Y i = y i | x 1 , i , . . . , x m , i ) = { p i if y i = 1 1 − p i if y i = 0 {\displaystyle Pr(Y_{i}=y_{i}|x_{1,i},…,x_{m,i})={\begin{cases}p_{i}&{\mbox{if }}y_{i}=1\\1-p_{i}&{\mbox{if }}y_{i}=0\end{cases}}} 베르누이 분포의 확률 질량 함수를 표현한 것으로서 2개의 경우에 대한 확률이 존재한다.

P r ( Y i = y i | x 1 , i , . . . , x m , i ) = p i y i ( 1 − p i ) ( 1 − y i ) {\displaystyle Pr(Y_{i}=y_{i}|x_{1,i},…,x_{m,i})=p_{i}^{y_{i}}(1-p_{i})^{(1-y_{i})}} 확률 질량 함수를 다른 표현으로 적은 것으로, 그것은 3번의 식 두 개를 한번에 표현한 것이다.

선형 예측 변수 [ 편집 ]

로지스틱 회귀의 기본적인 접근은 이미 개발되어 있는 선형 회귀의 방식을 사용하는 것이다. 즉, 독립 변수의 선형 결합과 회귀 계수에 관한 선형 예측 함수에서 비롯되었다. 선형 예측 함수 f ( i ) {\displaystyle f(i)} 는 특정 데이터 항에 대해 아래와 같이 표현된다.

f ( i ) = β 0 + β 1 x 1 , i + ⋯ + β m x m , i ( β 0 , . . . , β m ) {\displaystyle f(i)=\beta _{0}+\beta _{1}x_{1,i}+\cdots +\beta _{m}x_{m,i}(\beta _{0},…,\beta _{m})}

이 모델은 다음의 간결한 형태로 표현될 수 있다.

회귀 계수 ( β 0 , ⋯ , β m ) {\displaystyle (\beta _{0},\cdots ,\beta _{m})} β {\displaystyle \beta }

독립 변수 x 0 , i , x 1 , i , ⋯ , x m , i {\displaystyle x_{0,i},x_{1,i},\cdots ,x_{m,i}} X i {\displaystyle X_{i}}

위를 기반으로 선형 예측 함수는 다음과 같이 간결화 될 수 있다.

f ( i ) = β ⋅ X i {\displaystyle f(i)=\beta \centerdot X_{i}}

로지스틱 함수 유도 [ 편집 ]

로지스틱 회귀가 다른 회귀 분석과 구분되는 가장 큰 특징은 결과 값이 0 또는 1이라는 것이다. 따라서 결과 값의 범위가 [ − ∞ , + ∞ ] {\displaystyle [-\infty ,+\infty ]} 인 선형 회귀의 식을 결과 값의 범위가 [0,1]이 되도록 로짓 변환을 수행한다. 로지스틱 함수를 구하는 과정은 아래와 같다.

일단, 오즈비를 종속 변수 값에 상관 없이 결과 값이 항상 [0,1] 사이에 있도록 하기 위해 로짓 변환을 수행한다.

logit ⁡ ( E [ Y i | x 1 , i , ⋯ , x m , i ] ) = logit ⁡ ( p i ) = ln ⁡ p i 1 − p i {\displaystyle \operatorname {logit} (\mathbb {E} [Y_{i}|x_{1,i},\cdots ,x_{m,i}])=\operatorname {logit} (p_{i})=\ln {\frac {p_{i}}{1-p_{i}}}}

그리고 로지스틱 회귀에서 로짓 변환의 결과는 x에 대한 선형 함수와 동일하므로,

logit ⁡ ( p i ) = β 0 + β 1 x 1 , i + ⋯ + β m x m , i = β ⋅ X i {\displaystyle \operatorname {logit} (p_{i})=\beta _{0}+\beta _{1}x_{1,i}+\cdots +\beta _{m}x_{m,i}=\beta \cdot X_{i}}

위 두식을 결합하면,

ln ⁡ p i 1 − p i = β ⋅ X i {\displaystyle \ln {\frac {p_{i}}{1-p_{i}}}=\beta \cdot X_{i}}

따라서, 우리가 구하고자 하는 특정 독립 변수 x가 주어졌을 때, 종속 변수가 1의 카테고리에 속할 확률은

p i = logit − 1 ⁡ ( β ⋅ X i ) = 1 1 + e − β ⋅ X i {\displaystyle p_{i}=\operatorname {logit} ^{-1}({\boldsymbol {\beta }}\cdot \mathbf {X} _{i})={\frac {1}{1+e^{-{\boldsymbol {\beta }}\cdot \mathbf {X} _{i}}}}}

이를 확률 질량 함수로 표현하면 다음과 같다.

Pr ⁡ ( Y i = y i ∣ X i ) = p i y i ( 1 − p i ) 1 − y i = ( 1 1 + e − β ⋅ X i ) y i ( 1 − 1 1 + e − β ⋅ X i ) 1 − y i {\displaystyle \operatorname {Pr} (Y_{i}=y_{i}\mid \mathbf {X} _{i})={p_{i}}^{y_{i}}(1-p_{i})^{1-y_{i}}=\left({\frac {1}{1+e^{-{\boldsymbol {\beta }}\cdot \mathbf {X} _{i}}}}\right)^{y_{i}}\left(1-{\frac {1}{1+e^{-{\boldsymbol {\beta }}\cdot \mathbf {X} _{i}}}}\right)^{1-y_{i}}}

형식적 수학 모델 [ 편집 ]

잠재변수 모델(latent-variable) [ 편집 ]

앞서 설명된 로지스틱 모델은 잠재변수 모델로서 동등한 공식화가 존재한다. 이 공식화는 이산 선택 모델 이론에서 공통적으로 쓰이며, 로지스틱 회귀를 이와 깊이 관련된 프로빗 모델과 비교하기 쉽도록 해줄뿐만 아니라, 다수의 상호연관된 선택지를 지니는 더 복잡한 특정 모델로 확장하기 쉽게 해준다. 매 i번째 시행마다 연속적인 잠재변수 Y i ∗ {\displaystyle Y_{i}^{*}} (즉, 관찰되지 않은 확률변수)가 다음과 같이 분포해 있다고 해보자:

Y i ∗ = β ⋅ X i + ε {\displaystyle Y_{i}^{*}={\boldsymbol {\beta }}\cdot \mathbf {X} _{i}+\mathrm {\varepsilon } }

where

ε ∼ Logistic ⁡ ( 0 , 1 ) {\displaystyle \varepsilon \sim \operatorname {Logistic} (0,1)\,}

즉, 잠재변수는 선형 예측변수 함수와 표준 로지스틱 분포를 따르는 가산 확률 오차 변수로써 곧바로 표현될 수 있다. 그러면, Y i {\displaystyle Y_{i}} 를 이 잠재변수가 양수인지 아닌지에 대한 지표로 볼 수 있다:

Y i = { 1 if Y i ∗ > 0 i.e. − ε < β ⋅ X i , 0 otherwise. {\displaystyle Y_{i}={\begin{cases}1&{\text{if }}Y_{i}^{\ast }>0\ {\text{ i.e. }}-\varepsilon <{\boldsymbol {\beta }}\cdot \mathbf {X} _{i},\\0&{\text{otherwise.}}\end{cases}}} 오차 변수를 구체적으로 표준 로지스틱 분포를 따르도록 모델링하는 것은 임의의 위치 및 축척을 가지는 보편적인 로지스틱 분포로 모델링하는 것보다 제한적이어 보이나, 사실은 그렇지 않다. 회귀 계수는 얼마든지 마음대로 고를 수 있고, 때때로 오차 변수 분포의 매개변수 변화량을 상쇄시키는데 사용될 수 있음을 명심해야 한다. 예를 들어, 0이 아닌 위치 매개변수 μ(평균값)를 가지는 로지스틱 오차 변수 분포는 절편계수에 μ를 더하면 위치 매개변수가 0인 분포와 동등해진다. 두 경우 모두 설명 변수의 설정과는 관계없이 같은 Y i ∗ {\displaystyle Y_{i}^{*}} 값을 낳는다. 마찬가지로 임의의 축척 매개변수 s는 축척 매개변수를 1로 설정한 뒤 모든 회귀 계수를 s로 나눈 것과 동등한 효과를 나타낸다. 후자의 경우, Y i ∗ {\displaystyle Y_{i}^{*}} 의 결과값이 모든 설명변수들의 조합에 대해 이전보다 s배만큼 작아진다—그러나 중요한건, 0을 기준으로 언제나 동일한 쪽에 남아있기 때문에, 결국 같은 Y i {\displaystyle Y_{i}} 선택을 따른다. (이러한 사실에서 곧 축척 매개변수의 무관성이 두 개 이상의 선택이 존재하는 보다 더 복잡한 모델에도 적용되지는 않을 수도 있음을 예견한다는 점에 주목하자.) 앞서 잠재변수 없이 일반화된 선형 모델로 표현된 것과 이 공식화가 정확히 동등함이 알려져 있다. 이는 표준 로지스틱 분포의 누적 분포 함수가 로지스틱 함수, 즉, 로짓 함수의 역함수라는 사실을 이용하여 다음과 같이 나타낼 수 있다. 다시 말해, Pr ( ε < x ) = logit − 1 ⁡ ( x ) {\displaystyle \Pr(\varepsilon 0 ∣ X i ) = Pr ( β ⋅ X i + ε > 0 ) = Pr ( ε > − β ⋅ X i ) = Pr ( ε < β ⋅ X i ) (because the logistic distribution is symmetric) = logit − 1 ⁡ ( β ⋅ X i ) = p i (see above) {\displaystyle {\begin{aligned}\Pr(Y_{i}=1\mid \mathbf {X} _{i})&=\Pr(Y_{i}^{\ast }>0\mid \mathbf {X} _{i})&\\&=\Pr({\boldsymbol {\beta }}\cdot \mathbf {X} _{i}+\varepsilon >0)&\\&=\Pr(\varepsilon >-{\boldsymbol {\beta }}\cdot \mathbf {X} _{i})&\\&=\Pr(\varepsilon <{\boldsymbol {\beta }}\cdot \mathbf {X} _{i})&&{\text{(because the logistic distribution is symmetric)}}\\&=\operatorname {logit} ^{-1}({\boldsymbol {\beta }}\cdot \mathbf {X} _{i})&\\&=p_{i}&&{\text{(see above)}}\end{aligned}}} 이 공식화—표준 이산 선택 모델—는 표준 로지스틱 분포 대신 표준 정규 분포를 따르는 오차 변수가 사용된 프로빗 모델과 로지스틱 회귀("로짓 모델") 사이의 관계를 명료하게 한다. 로지스틱 분포와 정규 분포 둘 다 단봉형의 "종형 곡선" 모양으로 대칭적이다. 유일한 차이점은 로지스틱 분포가 조금 더 무거운 꼬리를 가지고 있어, 외진 데이터(outlying data)에 대해 덜 예민하다는 것이다(따라서 그릇된 데이터에 대해 더 강건하다). 이중(two-way) 잠재변수 모델 [ 편집 ] 또 다른 공식화는 별개의 두 잠재변수를 사용한다: Y i 0 ∗ = β 0 ⋅ X i + ε 0 Y i 1 ∗ = β 1 ⋅ X i + ε 1 {\displaystyle {\begin{aligned}Y_{i}^{0\ast }&={\boldsymbol {\beta }}_{0}\cdot \mathbf {X} _{i}+\varepsilon _{0}\,\\Y_{i}^{1\ast }&={\boldsymbol {\beta }}_{1}\cdot \mathbf {X} _{i}+\varepsilon _{1}\,\end{aligned}}} where ε 0 ∼ EV 1 ⁡ ( 0 , 1 ) ε 1 ∼ EV 1 ⁡ ( 0 , 1 ) {\displaystyle {\begin{aligned}\varepsilon _{0}&\sim \operatorname {EV} _{1}(0,1)\\\varepsilon _{1}&\sim \operatorname {EV} _{1}(0,1)\end{aligned}}} where EV 1 (0,1) is a standard type-1 extreme value distribution: i.e. Pr ( ε 0 = x ) = Pr ( ε 1 = x ) = e − x e − e − x {\displaystyle \Pr(\varepsilon _{0}=x)=\Pr(\varepsilon _{1}=x)=e^{-x}e^{-e^{-x}}} Then Y i = { 1 if Y i 1 ∗ > Y i 0 ∗ , 0 otherwise. {\displaystyle Y_{i}={\begin{cases}1&{\text{if }}Y_{i}^{1\ast }>Y_{i}^{0\ast },\\0&{\text{otherwise.}}\end{cases}}}

이 모델은 종속변수의 가능한 각 결과값들에 대하여 별개의 잠재변수와 별도의 회귀 계수 집합을 가지고 있다. 이렇게 변수들을 분리하는 이유는, 로지스틱 회귀를 다항 로짓 모델에서처럼 다수-결과값의 범주적 변수들로 확장하기 쉽게 만들어 주기 때문이다. 이러한 모델에서는 서로 다른 회귀 계수들을 사용하여 가능한 각 결과값을 모델링하는게 당연하다. 각 별개의 잠재변수들을 관련된 선택을 하는데 있어 이론적인 효용(utility)으로서 의미를 부여하면, 효용 이론면에서 로지스틱 회귀를 일깨우는 것도 가능하다. (효용 이론면에서, 이성적인 수행자는 언제나 가장 큰 효용과 결부된 선택지를 고른다.) 이 접근법은 이론적으로 강력한 토대를 제공할뿐만 아니라, 모델에 대한 직관을 용이하게 하기 때문에 경제학자들이 이산 선택 모델을 공식화할 때 채택하는 방법이다. 바꿔 말하면, 다양한 종류의 확장들을 고려하기 쉽게 해준다.

제1형 극값 분포를 선택한 것은 상당히 임의적으로 보이지만, 이는 수학적 계산이 가능케 하고, 이성적 선택 이론을 통해 사용예들을 정당화할 수 있게끔 해준다.

이제는 두 벌의 회귀 계수들과 오차 변수들이 존재하고, 오차 변수가 다른 분포를 따르기 때문에 불분명해 보일 수도 있지만, 이 모델이 이전의 모델과 동등함이 밝혀져 있다. 사실은 다음의 치환을 통해 이 모델이 이전의 모델로 곧바로 축소된다.

β = β 1 − β 0 {\displaystyle {\boldsymbol {\beta }}={\boldsymbol {\beta }}_{1}-{\boldsymbol {\beta }}_{0}} ε = ε 1 − ε 0 {\displaystyle \varepsilon =\varepsilon _{1}-\varepsilon _{0}}

이 치환에 대한 직관은 다음의 사실로부터 얻어진다. 두 값 중 최댓값을 기준으로 선택되기 때문에, 정확한 값들이 아닌 두 값의 차이만이 중요해진다—이로써 하나의 자유도가 실질적으로 제거된다. 또 다른 중요한 사실은 제1형 극값 분포 변수들의 차이가 로지스틱 분포라는 점이다. 즉, ε = ε 1 − ε 0 ∼ Logistic ⁡ ( 0 , 1 ) {\displaystyle \varepsilon =\varepsilon _{1}-\varepsilon _{0}\sim \operatorname {Logistic} (0,1)} 이라고 하면,

다음과 같이 동치를 증명할 수 있다:

Pr ( Y i = 1 ∣ X i ) = Pr ( Y i 1 ∗ > Y i 0 ∗ ∣ X i ) = Pr ( Y i 1 ∗ − Y i 0 ∗ > 0 ∣ X i ) = Pr ( β 1 ⋅ X i + ε 1 − ( β 0 ⋅ X i + ε 0 ) > 0 ) = Pr ( ( β 1 ⋅ X i − β 0 ⋅ X i ) + ( ε 1 − ε 0 ) > 0 ) = Pr ( ( β 1 − β 0 ) ⋅ X i + ( ε 1 − ε 0 ) > 0 ) = Pr ( ( β 1 − β 0 ) ⋅ X i + ε > 0 ) (substitute ε as above) = Pr ( β ⋅ X i + ε > 0 ) (substitute β as above) = Pr ( ε > − β ⋅ X i ) (now, same as above model) = Pr ( ε < β ⋅ X i ) = logit − 1 ⁡ ( β ⋅ X i ) = p i {\displaystyle {\begin{aligned}&\Pr(Y_{i}=1\mid \mathbf {X} _{i})\\[4pt]={}&\Pr(Y_{i}^{1\ast }>Y_{i}^{0\ast }\mid \mathbf {X} _{i})&\\={}&\Pr(Y_{i}^{1\ast }-Y_{i}^{0\ast }>0\mid \mathbf {X} _{i})&\\={}&\Pr({\boldsymbol {\beta }}_{1}\cdot \mathbf {X} _{i}+\varepsilon _{1}-({\boldsymbol {\beta }}_{0}\cdot \mathbf {X} _{i}+\varepsilon _{0})>0)&\\={}&\Pr(({\boldsymbol {\beta }}_{1}\cdot \mathbf {X} _{i}-{\boldsymbol {\beta }}_{0}\cdot \mathbf {X} _{i})+(\varepsilon _{1}-\varepsilon _{0})>0)&\\={}&\Pr(({\boldsymbol {\beta }}_{1}-{\boldsymbol {\beta }}_{0})\cdot \mathbf {X} _{i}+(\varepsilon _{1}-\varepsilon _{0})>0)&\\={}&\Pr(({\boldsymbol {\beta }}_{1}-{\boldsymbol {\beta }}_{0})\cdot \mathbf {X} _{i}+\varepsilon >0)&&{\text{(substitute }}\varepsilon {\text{ as above)}}\\={}&\Pr({\boldsymbol {\beta }}\cdot \mathbf {X} _{i}+\varepsilon >0)&&{\text{(substitute }}{\boldsymbol {\beta }}{\text{ as above)}}\\={}&\Pr(\varepsilon >-{\boldsymbol {\beta }}\cdot \mathbf {X} _{i})&&{\text{(now, same as above model)}}\\={}&\Pr(\varepsilon <{\boldsymbol {\beta }}\cdot \mathbf {X} _{i})&\\={}&\operatorname {logit} ^{-1}({\boldsymbol {\beta }}\cdot \mathbf {X} _{i})&\\={}&p_{i}\end{aligned}}} 로그-선형 모델 [ 편집 ] 또 다른 공식화는 바로 위의 이중 잠재변수 공식화와 더 위의 잠재변수가 없는 공식화를 결합한다. 그 과정에서 다항 로짓의 표준 공식화에 한 연결점을 제공한다. 여기서는 확률의 로짓 p i 를 선형 예측 변수로 쓰는 대신에, 각 두 결과값에 따라 선형 예측 변수를 둘로 분리한다: ln ⁡ Pr ( Y i = 0 ) = β 0 ⋅ X i − ln ⁡ Z ln ⁡ Pr ( Y i = 1 ) = β 1 ⋅ X i − ln ⁡ Z {\displaystyle {\begin{aligned}\ln \Pr(Y_{i}=0)&={\boldsymbol {\beta }}_{0}\cdot \mathbf {X} _{i}-\ln Z\,\\\ln \Pr(Y_{i}=1)&={\boldsymbol {\beta }}_{1}\cdot \mathbf {X} _{i}-\ln Z\,\\\end{aligned}}} 이중 잠재변수 모델에서처럼 별도의 회귀 계수들이 쌍으로 도입되었고, 두 식의 마지막에 추가적으로 − l n Z {\displaystyle -lnZ} 항과 함께 선형 예측 변수로서 관련된 확률이 로그 형태로 나타나 있음에 주목하자. 보다시피 이 항은 결과가 확률분포가 되도록 정규화 인자로서 작용한다. 이는 양변을 지수화함으로써 나타낼 수 있다: Pr ( Y i = 0 ) = 1 Z e β 0 ⋅ X i Pr ( Y i = 1 ) = 1 Z e β 1 ⋅ X i {\displaystyle {\begin{aligned}\Pr(Y_{i}=0)&={\frac {1}{Z}}e^{{\boldsymbol {\beta }}_{0}\cdot \mathbf {X} _{i}}\,\\\Pr(Y_{i}=1)&={\frac {1}{Z}}e^{{\boldsymbol {\beta }}_{1}\cdot \mathbf {X} _{i}}\,\\\end{aligned}}} 이런 형태에서 보면, Z의 용도가 실은 결과를 Y i 에 대한 확률분포(즉, 총합이 1)가 되도록 만드는 것임이 확실해진다. 이는 Z가 단순히 비정규화 확률의 총합이라는 것, 그리고 각 확률을 Z로 나누면 "정규화" 확률이 된다는 것을 의미한다. 다시 말해서: Z = e β 0 ⋅ X i + e β 1 ⋅ X i {\displaystyle Z=e^{{\boldsymbol {\beta }}_{0}\cdot \mathbf {X} _{i}}+e^{{\boldsymbol {\beta }}_{1}\cdot \mathbf {X} _{i}}} 그 결과 방정식들은 Pr ( Y i = 0 ) = e β 0 ⋅ X i e β 0 ⋅ X i + e β 1 ⋅ X i Pr ( Y i = 1 ) = e β 1 ⋅ X i e β 0 ⋅ X i + e β 1 ⋅ X i {\displaystyle {\begin{aligned}\Pr(Y_{i}=0)&={\frac {e^{{\boldsymbol {\beta }}_{0}\cdot \mathbf {X} _{i}}}{e^{{\boldsymbol {\beta }}_{0}\cdot \mathbf {X} _{i}}+e^{{\boldsymbol {\beta }}_{1}\cdot \mathbf {X} _{i}}}}\,\\\Pr(Y_{i}=1)&={\frac {e^{{\boldsymbol {\beta }}_{1}\cdot \mathbf {X} _{i}}}{e^{{\boldsymbol {\beta }}_{0}\cdot \mathbf {X} _{i}}+e^{{\boldsymbol {\beta }}_{1}\cdot \mathbf {X} _{i}}}}\,\end{aligned}}} 또는, 일반적으로 Pr ( Y i = c ) = e β c ⋅ X i ∑ h e β h ⋅ X i {\displaystyle \Pr(Y_{i}=c)={\frac {e^{{\boldsymbol {\beta }}_{c}\cdot \mathbf {X} _{i}}}{\sum _{h}e^{{\boldsymbol {\beta }}_{h}\cdot \mathbf {X} _{i}}}}} 위에서처럼 다항 로짓과 같은 둘 이상의 결과값에 대하여 일반화된 공식화를 보일 수 있다. 일반화된 공식화가 Softmax 함수와 정확히 일치함에 유의하자. Pr ( Y i = c ) = softmax ⁡ ( c , β 0 ⋅ X i , β 1 ⋅ X i , … ) . {\displaystyle \Pr(Y_{i}=c)=\operatorname {softmax} (c,{\boldsymbol {\beta }}_{0}\cdot \mathbf {X} _{i},{\boldsymbol {\beta }}_{1}\cdot \mathbf {X} _{i},\dots ).} 이전 모델과 이 동치가 같음을 증명하기 위해, 바로 위 식에서 중복적으로 명시된 사항( Pr ( Y i = 0 ) {\displaystyle \Pr(Y_{i}=0)} 와 Pr ( Y i = 1 ) {\displaystyle \Pr(Y_{i}=1)} 는 서로 독립적이지 않다)을 이용하자: Pr ( Y i = 0 ) + Pr ( Y i = 1 ) = 1 {\displaystyle \Pr(Y_{i}=0)+\Pr(Y_{i}=1)=1} 이므로 둘 중 하나만 알면 나머지 하나도 저절로 알 수 있다. β 0 , β 1 의 복수 조합으로써 가능한 모든 설명변수들에 대하여 동일한 확률을 내놓기 때문에 결국 모델은 비식별적이다. 사실, 두 식에 아무런 상수 벡터를 더해도 같은 확률을 나타냄을 보일 수 있다: Pr ( Y i = 1 ) = e ( β 1 + C ) ⋅ X i e ( β 0 + C ) ⋅ X i + e ( β 1 + C ) ⋅ X i = e β 1 ⋅ X i e C ⋅ X i e β 0 ⋅ X i e C ⋅ X i + e β 1 ⋅ X i e C ⋅ X i = e C ⋅ X i e β 1 ⋅ X i e C ⋅ X i ( e β 0 ⋅ X i + e β 1 ⋅ X i ) = e β 1 ⋅ X i e β 0 ⋅ X i + e β 1 ⋅ X i {\displaystyle {\begin{aligned}\Pr(Y_{i}=1)&={\frac {e^{({\boldsymbol {\beta }}_{1}+\mathbf {C} )\cdot \mathbf {X} _{i}}}{e^{({\boldsymbol {\beta }}_{0}+\mathbf {C} )\cdot \mathbf {X} _{i}}+e^{({\boldsymbol {\beta }}_{1}+\mathbf {C} )\cdot \mathbf {X} _{i}}}}\,\\&={\frac {e^{{\boldsymbol {\beta }}_{1}\cdot \mathbf {X} _{i}}e^{\mathbf {C} \cdot \mathbf {X} _{i}}}{e^{{\boldsymbol {\beta }}_{0}\cdot \mathbf {X} _{i}}e^{\mathbf {C} \cdot \mathbf {X} _{i}}+e^{{\boldsymbol {\beta }}_{1}\cdot \mathbf {X} _{i}}e^{\mathbf {C} \cdot \mathbf {X} _{i}}}}\,\\&={\frac {e^{\mathbf {C} \cdot \mathbf {X} _{i}}e^{{\boldsymbol {\beta }}_{1}\cdot \mathbf {X} _{i}}}{e^{\mathbf {C} \cdot \mathbf {X} _{i}}(e^{{\boldsymbol {\beta }}_{0}\cdot \mathbf {X} _{i}}+e^{{\boldsymbol {\beta }}_{1}\cdot \mathbf {X} _{i}})}}\,\\&={\frac {e^{{\boldsymbol {\beta }}_{1}\cdot \mathbf {X} _{i}}}{e^{{\boldsymbol {\beta }}_{0}\cdot \mathbf {X} _{i}}+e^{{\boldsymbol {\beta }}_{1}\cdot \mathbf {X} _{i}}}}\,\\\end{aligned}}} 결과적으로, 두 벡터 중 하나에 임의의 값을 선택함으로써 식별성을 복원하고, 문제를 간소화할 수 있다. β 0 = 0 {\displaystyle {\boldsymbol {\beta }}_{0}=\mathbf {0} } 을 선택했다면, e β 0 ⋅ X i = e 0 ⋅ X i = 1 {\displaystyle e^{{\boldsymbol {\beta }}_{0}\cdot \mathbf {X} _{i}}=e^{\mathbf {0} \cdot \mathbf {X} _{i}}=1} 따라서 Pr ( Y i = 1 ) = e β 1 ⋅ X i 1 + e β 1 ⋅ X i = 1 1 + e − β 1 ⋅ X i = p i {\displaystyle \Pr(Y_{i}=1)={\frac {e^{{\boldsymbol {\beta }}_{1}\cdot \mathbf {X} _{i}}}{1+e^{{\boldsymbol {\beta }}_{1}\cdot \mathbf {X} _{i}}}}={\frac {1}{1+e^{-{\boldsymbol {\beta }}_{1}\cdot \mathbf {X} _{i}}}}=p_{i}} 이로써 이 공식화가 이전의 공식화와 동등함이 확실히 보여진다. (이중 잠재변수 모델에서 β = β 1 − β 0 {\displaystyle {\boldsymbol {\beta }}={\boldsymbol {\beta }}_{1}-{\boldsymbol {\beta }}_{0}} 로 설정함으로써 동등한 결과를 내놓기 때문) 모델 적합 [ 편집 ] 모델 적합(fitting)에는 추정(estimation)과 추정의 결과를 평가(evaluation)하는 과정이 존재한다. 추정은 로지스틱 회귀를 통한 모델을 설정할 때 필요한 계수를 예측하기 위한 것이고 평가는 추정한 모델이 데이터에 적합한지 판단하기 위한 것이다. 추정 [ 편집 ] 최대가능도 방법 [ 편집 ] 로지스틱 회귀의 계수 추정은 최대가능도 방법을 이용한다.[4] 위의 로지스틱 함수를 바탕으로 가능도(likelihood)를 나타내면 아래 식으로 나타낼 수 있다. 편의를 위해 로지스틱 함수를 p ( y = 1 | x ) = θ ( β ⋅ X i ) {\displaystyle p(y=1|x)=\theta (\beta \centerdot X_{i})} 가능도는 P r ( Y i = y i | X i ) = p i y i ( 1 − p i ) 1 − y i = θ ( y β ⋅ X i ) {\displaystyle Pr(Y_{i}=y_{i}|X_{i})=p_{i}^{y_{i}}(1-p_{i})^{1-y_{i}}=\theta (y\beta \centerdot X_{i})} 이 식을 바탕으로 전체 데이터에 대한 가능도를 표현하면 아래 식과 같다. 이 때 모든 데이터는 독립이어야 한다. p ( Y | X ) = ∏ i = 1 N P r ( Y i = y i | X i ) {\displaystyle p(Y|X)=\prod _{i=1}^{N}Pr(Y_{i}=y_{i}|X_{i})} N {\displaystyle N} y i , x i {\displaystyle y_{i},x_{i}} 이 식을 최대로 하는 계수 (위의 식에서 β {\displaystyle \beta } ) 을 찾으면, 모델 추정이 완료된다. 최댓값을 찾기 위한 식을 계산의 편의성을 위해 최솟값을 구하는 함수로 나타내기 위해선 log 함수 형태로 고치면 된다. Negative Log Likelihood: N L L = 1 N log ⁡ ( Y | X ) = 1 N ∑ i = 1 N log ⁡ 1 P r ( Y i = y i | X i ) = − 1 N ∑ i = 1 N θ ( y i β ⋅ X i ) {\displaystyle \mathrm {NLL} ={\frac {1}{N}}\log(Y|X)={\frac {1}{N}}\sum _{i=1}^{N}\log {\frac {1}{Pr(Y_{i}=y_{i}|X_{i})}}=-{\frac {1}{N}}\sum _{i=1}^{N}\theta (y_{i}\beta \centerdot X_{i})} 그리고 위의 식은 종속 변수 y의 범위가 [0,1] 사이이므로, 이를 다시 표현하면 아래와 같다. − 1 N ∑ i = 1 N θ ( y i β ⋅ X i ) = − 1 N ∑ i = 1 N ( y i log ⁡ 1 θ ( β ⋅ X i ) + ( 1 − y i ) log ⁡ 1 1 − θ ( β ⋅ X i ) ) {\displaystyle -{\frac {1}{N}}\sum _{i=1}^{N}\theta (y_{i}\beta \centerdot X_{i})=-{\frac {1}{N}}\sum _{i=1}^{N}(y_{i}\log {\frac {1}{\theta (\beta \centerdot X_{i})}}+(1-y_{i})\log {\frac {1}{1-\theta (\beta \centerdot X_{i})}})} 로지스틱 회귀에서는 위의 식을 최소화하는 닫힌 형태(closed-form expression)를 바로 구하는 것이 불가능하다. 그래서 반복 처리(iterative process)를 통해 계수를 추정하는데, 이 과정은 임의의 계수에서 시작하여 해당 계수를 반복적으로 수정해가면서 결과 모델이 개선되는지를 확인한다.[5] 그리고 그 결과가 수렴할 때까지 모델의 개선을 반복함으로써 최종적으로 계수를 구할 수 있다. 하지만 특정 경우에는 모델이 수렴하지 않을 수도 있는데, 이는 반복 처리로써 적합한 해를 찾을 수 없기 때문으로 계수가 중요한 의미를 지니지 않음을 시사한다. 수렴에 실패하는 대표적인 이유로는 사건에 매우 큰 영향력을 미치는 예측변수의 사용, 다중 공선성(multicolinearity), 희소성(sparseness), 완분성(complete separation)들이 있다. 반복적으로 업데이트 하면서 지역적인 최솟값(local minimum)을 찾는 알고리즘 중 대표적인 방법으로는 경사 하강법(Gradient Descent)이 있고 해당 알고리즘의 코드는 아래와 같다. Want min θ NLL : {\displaystyle {\text{Want}}\min _{\theta }{\text{NLL :}}} Repeat { {\displaystyle {\text{Repeat }}\{} β := β − α ∂ ∂ β N L L {\displaystyle \beta :=\beta -\alpha {\frac {\partial }{\partial \beta }}\mathrm {NLL} } } {\displaystyle \}} 집단 데이터의 최소 카이제곱 추정법 [ 편집 ] 각각의 데이터는 매 관측마다 0 또는 1의 값을 가지는 종속변수를 지니는 반면, 집단 데이터는 하나의 관측에 대하여 집단 내에 공통적인 특성(예:인구학적 특성)을 공유한다. 이 경우, 그룹의 어느 특정한 비율이 응답 변수의 한 범주 또는 그 외로 나뉘는 현상이 관찰된다. 만약 이 비율이 0과 1이 아니라면, 최소 카이제곱 추정법은 가중 최소 제곱법(weighted least squares)을 수반하여 종속변수가 비율의 로짓으로 표현되는 선형모델을 추정한다. 평가 [ 편집 ] 로지스틱 회귀의 평가에는 다양한 방법이 사용된다. 대표적인 방법으로는 가능도비 검정, Walt test, Pseudo-R2s, Hosmer-Lemeshow test가 존재한다. 가능도비 검정 [ 편집 ] 가능도비 검정은 두 개의 모형의 가능도비를 계산하여 두 모형의 가능도가 유의한 차이가 나는지 비교함으로써 로지스틱 회귀 분석에서 각 회귀 계수가 통계적으로 유의한지 검정하는 방법이다. '포화 모델(이론적으로 완벽히 들어맞는 모델)'을 구할 수 있다고 했을 때, 편차값은 주어진 모델과 포화 모델을 비교함으로써 계산된다. D = − 2 ln ⁡ Likelihood i n Likelihood S ( {\displaystyle D=-2\ln {\frac {{\textrm {Likelihood}}_{\mathit {in}}}{{\textrm {Likelihood}}_{S}}}\quad (} Likelihood i n : {\displaystyle {\textrm {Likelihood}}_{\mathit {in}}:} Likelihood S : {\displaystyle {\textrm {Likelihood}}_{S}:} ) {\displaystyle )} 위 등식에서 D는 편차값을 나타내고, ln은 자연로그를 나타낸다. 가능도비에 자연로그를 취한 값은 음수이기 때문에 -2를 곱함으로써 근사적으로 카이제곱 분포를 따르게 만든다. 이 때 편차값이 작을수록 포화모델과 차이가 적은, 잘 맞춰진 분석모델임을 의미한다. 로지스틱 회귀에서 편차를 측정하기 위한 또 다른 중요한 측정값은 널편차와 모델 편차이다. 널편차는 예측 모형이 적용되지 않은, 즉, 예측 변수가 없는 모델과 포화 모델간의 차이를 말한다. 이 때, 널편차는 예측 변수 모델과 비교할 대상의 기준을 제공한다. 편차값을 주어진 모델과 포화 모델 사이의 차이라고 가정했을 때, 두 모델간의 편차가 작을수록 오차가 적은 분석 모델이다. 따라서 예측 변수들의 기여도를 평가하기 위해, 널 편차값에서 모델 편차값을 빼거나, 예측할 매개변수의 개수 차이를 자유도로 가지는 카이제곱 분포( χ s − p 2 {\displaystyle \chi _{\mathit {s-p}}^{2}} )로 나타낼 수 있다. 그리고 이를 기준으로 F-test를 수행함으로써 최종적으로 회귀 계수의 유의성을 판단할 수 있다. D n u l l = − 2 ln ⁡ Likelihoodofnullmodel Likelihood S {\displaystyle D_{\mathit {null}}=-2\ln {\frac {\textrm {Likelihoodofnullmodel}}{{\textrm {Likelihood}}_{S}}}} D f i t t e d = − 2 ln ⁡ Likelihood i n Likelihood S {\displaystyle D_{\mathit {fitted}}=-2\ln {\frac {{\textrm {Likelihood}}_{\mathit {in}}}{{\textrm {Likelihood}}_{S}}}} D n u l l − D f i t t e d = − 2 ln ⁡ Likelihoodofnullmodel Likelihood S − ( − 2 ln ⁡ Likelihood i n Likelihood S ) = − 2 ( ln ⁡ Likelihood o f n u l l m o d e l Likelihood S − ln ⁡ Likelihood i n Likelihood S ) = − 2 ln ⁡ ( Likelihoodofnullmodel Likelihood S ) ( Likelihood i n Likelihood S ) = − 2 ln ⁡ Likelihoodofnullmodel Likelihood i n {\displaystyle {\begin{aligned}D_{\mathit {null}}-D_{\mathit {fitted}}&=-2\ln {\frac {\textrm {Likelihoodofnullmodel}}{{\textrm {Likelihood}}_{S}}}-\left(-2\ln {\frac {{\textrm {Likelihood}}_{\mathit {in}}}{{\textrm {Likelihood}}_{S}}}\right)\\&=-2\left(\ln {\frac {{\textrm {Likelihood}}\ of\ null\ model}{{\textrm {Likelihood}}_{S}}}-\ln {\frac {{\textrm {Likelihood}}_{\mathit {in}}}{{\textrm {Likelihood}}_{S}}}\right)\\&=-2\ln {\frac {\left({\frac {\textrm {Likelihoodofnullmodel}}{{\textrm {Likelihood}}_{S}}}\right)}{\left({\frac {{\textrm {Likelihood}}_{\mathit {in}}}{{\textrm {Likelihood}}_{S}}}\right)}}\\&=-2\ln {\frac {\textrm {Likelihoodofnullmodel}}{{\textrm {Likelihood}}_{\mathit {in}}}}\end{aligned}}} 의사-결정계수(Pseudo- R2 ) [ 편집 ] R2은 결정계수라 불리는데, 종속변수의 분산 중 어느 정도 비율(%)이 독립변수에 의해 설명되는가를 나타내는 값으로 0.00 ~ 1.00 사이의 값을 갖는다. 1.00에 가까운 값이 나올수록 완벽한 관계에 가까워지는 것을 의미하고, 선형 회귀에서의 다중 상관계수의 제곱과 거의 유사한 지표이다. 이는 모델의 적합도를 평가하는데 쓰인다. R2를 계산하는 방법은 통일되어 있지 않고 많은 방법이 존재하는데, 이들 중 대표적인 세 가지는 McFadden (1974)가 제안한 방법, Cox and Snell (1989)가 제안한 방법, 그리고 Cox and Snell R2의 수정 버전이 존재한다. McFadden이 제안한 R2은 의사-결정계수라고도 불리는데, 이는 다음과 같이 정의된다. R L 2 = D n u l l − D f i t t i n g D f i t t i n g {\displaystyle R_{L}^{2}={\frac {D_{\mathit {null}}-D_{\mathit {fitting}}}{D_{\mathit {fitting}}}}} 이 공식은 “잔차 분산(error variance)”의 감소 비율(proportionate reduction)에 해당한다. pseudo- R2의 단점은 오즈비와 직접적으로(monotonically) 연관되어 있지 않다는 점이다. 즉, 오즈비가 증가한다고 해서 반드시 R2이 증가하거나, 오즈비가 감소한다고 해서 R2이 감소하지는 않는다는 것이다. Cox and Snell이 제안한 R2는 다음과 같이 정의된다. R C & S 2 = 1 − ( Likelihood of null model Likelihood of fitted model ) 2 n {\displaystyle R_{\mathit {\mathrm {C\&S} }}^{2}=1-\left({\frac {\text{Likelihood of null model}}{\text{Likelihood of fitted model}}}\right)^{\frac {2}{n}}} 이 공식은 선형 회귀 분석과 동일한 원리를 이용하는 것으로서, 선형 회귀 분석에서의 일반적인 R2이 이 공식에 의해 예측 변수가 없는 모델과 있는 모델의 가능도로 결정된다. 이것의 장점은 최대 가능도 추정을 하는 다른 종류의 회귀 분석(예시: count data에 대한 negative binomial regression)으로 확장될 수 있다는 것이다. 하지만 Cox and Snell이 제안한 결정계수는 최대 값이 1.0보다 작고, 특정 경우에는 1.0에 비해 상당히 작은 값이 될 수도 있다는 단점이 존재한다. 의사-결정계수가 Cox and Snell이 제안한 결정계수에 비해 조금 더 선호되는 경향이 있는데, 그 이유는 선형 회귀의 결정계수와 가장 유사하고, 기저율(base rate)에 독립적이기 때문이다. 또한 Cox and Snell이 제안한 R2과는 달리 이는 범위 [0,1]을 가진다. 의사-결정계수를 이용한 해석에서의 유의점은 선형분석에서의 R2 해석과 다르다는 것이다. 로지스틱 회귀분석은 종속 변수가 범주형이므로 오차의 등분산성 가정이 만족되지 않고, 따라서 오차 분산이 예측된 확률에 따라 달라진다. 또한 로지스틱 회귀분석에서 R2은 대개 낮게 나오는 편이므로, 모델 평가에서 R2에 너무 의존할 필요는 없다. 응용 [ 편집 ] 로지스틱 회귀는 의학 또는 소셜 분석을 포함한 다양한 분야에서 많이 사용된다. 일례로, 부상을 입은 환자들의 사망 예측을 위해 사용되는 Trauma and Injury Severity Score (TRISS)는 Boyd에 의해 로지스틱 회귀를 기반으로 개발 되었다.[6] 많은 다른 의학 척도 또한 환자의 심각성을 평가하기 위해 로지스틱 회귀를 이용해서 개발되었다.[7][8][9][10] 로지스틱 회귀는 관찰된 환자의 특성(나이, 성별, 피검사 결과 등)[10][11]을 기반으로 환자의 특정 병 감염 여부를 예측한다. 상수도 설계 시 어떤 도시의 장래 인구 추정에도 로지스틱 회귀가 쓰인다. 포화 인구를 K라 하고, a, b는 상수라고 할 때, P n = K 1 + e a − b n {\displaystyle P_{n}={\frac {K}{1+e^{a-bn}}}} 상수 a, b는 다음으로 구한다. P n + P n e a − b n = K {\displaystyle P_{n}+P_{n}e^{a-bn}=K} P n e a − b n = K − P n {\displaystyle P_{n}e^{a-bn}=K-P_{n}} log ⁡ P n + ( a − b n ) log ⁡ e = log ⁡ ( K − P n ) {\displaystyle \log P_{n}+(a-bn)\log e=\log(K-P_{n})} log ⁡ P n − log ⁡ ( K − P n ) ⏟ Y = b n log ⁡ e ⏟ X − a log ⁡ e ⏟ c {\displaystyle \underbrace {\log P_{n}-\log(K-P_{n})} _{Y}=b\underbrace {n\log e} _{X}-\underbrace {a\log e} _{c}} 최소자승법을 이용해 b, c 계산 b = n Σ X Y − Σ X Σ Y n Σ X 2 − Σ X Σ X {\displaystyle b={\frac {n\Sigma XY-\Sigma X\Sigma Y}{n\Sigma X^{2}-\Sigma X\Sigma X}}} c = Σ X Σ X Y − Σ X 2 Σ Y n Σ X 2 − Σ X Σ X {\displaystyle c={\frac {\Sigma X\Sigma XY-\Sigma X^{2}\Sigma Y}{n\Sigma X^{2}-\Sigma X\Sigma X}}} c를 안다면 a 역시 구할 수 있다.[12] 확장 [ 편집 ] 확장된 로지스틱 회귀의 종류는 다양하다. 같이 보기 [ 편집 ] 더 읽기 [ 편집 ] 참조 [ 편집 ]

키워드에 대한 정보 로지스틱 회귀 분석 그래프

다음은 Bing에서 로지스틱 회귀 분석 그래프 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 로지스틱회귀분석(Logistic regression, Logit regression) with SPSS [자막]

  • 동영상
  • 공유
  • 카메라폰
  • 동영상폰
  • 무료
  • 올리기

로지스틱회귀분석(Logistic #regression, #Logit #regression) #with #SPSS #[자막]


YouTube에서 로지스틱 회귀 분석 그래프 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 로지스틱회귀분석(Logistic regression, Logit regression) with SPSS [자막] | 로지스틱 회귀 분석 그래프, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

Leave a Comment