교육통계/Rstudio

교육통계 R랑가몰라 7. 로지스틱 회귀분석-2(분석)

개노답이글스 2022. 11. 2. 19:46

안녕하세요, 저번 챕터에 이어 이번엔 R를 사용해서 로지스틱 회귀분석을 해보겠습니다.

늘 그랬듯이..

아동청소년패널 2018 1차 자료를 사용해보려 합니다.

이 조사에서는 1,0으로 코딩된 자료는 없어서 사실 로지스틱 회귀에는 적절하지 않다고 생각되지만,

일단.. 그냥 연습이니까요

설문 중에 '장래 희망직업 결정 여부'가 있습니다.

코딩은

1. 아직 하고 싶은 직업을 정하지 않았다

2. 대강 하고 싶은 직업이 있다.

3. 구체적으로 정해 높은 직업이 있다.

이거를 활용한다면, 다항 로지스틱을 하면 더 적절하겠으나...

다항 로지스틱은 좀 더 공부를 하고 다시 시도를 해보겠습니다..ㅋㅋㅋ

그래서 일단 임의로 '없다'와 '있다'로 나누어서

1번 응답을 '0'으로

2,3번 응답을 '1'로 변환하려 합니다.

코딩 값 변환으로 replace함수를 사용합니다.

replace(대상 열, 대상열 == 변환하려는 값, 바꾸려는 값)

장래희망직업 결정 여부를 'job'이라는 열로 새롭게 저장하고

거기서 1은 0으로 2와 3은 1로 바꾸는 작업을 하였습니다.

그리고 독립변수로는 여학생 더미, 학업열의, 자아존중감, 학업 무기력을 사용했습니다.

-------------------------------------------------------------------------------------------------------------------------------

1. 로지스틱 회귀분석 코드

로지스틱 회귀를 위한 함수로는 'glm'을 사용합니다.

회귀분석에 사용했던 lm함수와 비슷하나 추가되는 것이 하나 있습니다.

glm(종속변수 ~ 독립변수 1+독립변수 2+독립변수 3, family = binomial(), data = 데이터셋)

여기서 family = binomial()을 설정하지 않으면

그냥 선형 회귀분석을 해버립니다...

LR이라는 객체에 분석을 담았고, 이를 summary함수를 써서 결괏값을 보면

결괏값은 선형 회귀와 거의 유사합니다. p-value도 옆에 달아주고요

음.. 상수항이 유의하지 않네요..ㅋㅋ 그리고 여학생 더미도 유의하지 않고

학업열의, 자아존중감, 학업 무기력은 유의하게 나오네요ㅋㅋㅋ

여기서 Estimate 은 로짓 값입니다.

이 숫자를 있는 그대로 해석할 수가 없습니다.

단, +, - 정도는 참고할 필요가 있죠

+값으로 나온 학업열의 와 자아존중감이 높을수록 직업 결정할 확률이 높아지는구나

-값으로 나온 학업 무기력이 높을수록 직업 결정할 확률이 낮아지는구나

그럼 해석을 하려면... 네 승산비로 전환해야 합니다.

승산비 계산을 위해서는 exp(coef(분석객체))하면 됩니다.

통계적으로 유의하지 않았던 것 빼고 승산비는

학업열의는 1.257

자아존중감은 1.3260

학업 무기력은 0.6946

로짓이 +로 나왔던 학업열의 와 자아존중감은 값이 1보다 크고

로짓이 -로 나왔던 학업 무기력은 값이 1보다 작네요

이제 그럼 해석을 해야 하는데

학업열의를 사용한다면,

단순히 학업열의가 1 단위 높아질 경우 직업을 결정할 승산이 1.257배 높아진다고 하거나

(승산비 - 1)*100 승산 변화를 확률(%)로 계산하기도 합니다.

이걸 적용하면, (1.257-1)*100 = 25.7%

학업열의가 1 단위 높아지면 직업을 결정할 승산이 25.7% 높아진다고 할 수 있습니다.

학업 무기력은

학업 무기력이 1 단위 높아지면 직업을 결정할 승산이 0.6946배로 낮아지고,

(0.6946-1)*100 = -30.54% 낮아진다고 할 수 있습니다.

이렇게 숫자를 해석할 수도 있고

아님 어쨌든 확률이 높아지는 거니까

학업열의가 높을수록 직업을 결정할 확률이 높아진다(승산비=1.257)라고 쉽게 써도 되지만

그래도 통계 결과(숫자)는 같이 표기하는 것도 필요합니다.

한편, 2 단위, 3 단위 올라가면 이를 어떻게 표현할까요??

선형 회귀에서는 "+"를 했는데, 여기서는 'x'를 해야 됩니다.

곱셉을 해야 합니다.

그니까 학업열의가 2 단위 증가하는 것이면,

(1.257+1.257-1)*100 이 아니라

(1.257*1.257-1)*100 이 되어야 합니다.

그리고 다른 변수와 같이 승산을 계산한다면,

독립변수 1 승산비 * 독립변수 2 승산비*2 가 되겠고,

몇 단위(n)씩 증가하는 것을 수식으로 표현하면,

$\combi{득립변수1\ 승산비}^n\cdot \combi{독립변수2\ 승산비}^n$1 n·2 n

확률 계산으로 변환하면 다음과 같습니다.

$\left(\combi{득립변수1\ 승산비}^n\cdot \combi{독립변수2\ 승산비}^n\ -1\right)\cdot 100$(1 n·2 n 1)·100

-------------------------------------------------------------------------------------------------------------------------------

2. 모형 검증

로지스틱 회귀분석도 모형 검증이 필요하죠

모형 검증은 독립변수에 아무것도 넣지 않은 모형과 변수를 투입한 모형 간의 차이 분석(chisq)을 통해 검증합니다.

먼저 아무것도 넣지 않은 식을 만들고

여기서 1은 상수항을 표시해 준 것입니다.

아까 만든 LR과 LR0를 anova를 사용해서 차이 검증합니다.

여기서 test = 'chisq'를 꼭 넣어야 합니다.

1번 모델은 독립변수 투입 전

2번 모델은 독립변수 투입 후

차이가 통계적으로 유의하네요, 1번 모델은 기각하고 2번 모델은 채택합니다.

그럼, 모형 검증은 된 것 같고요ㅎㅎ

만약 유의하지 않았다면.. 독립변수를 바꿔야겠죠..?ㅋㅋㅋ

추가로 모형 검증에 사용하는 pseudo R2와 로그 우도 계산 함수는

DescTools를 설치하고, 불러와서

PseudoR2와 LogLik를 사용하면 됩니다.

이때 "CoxSnell", "Nagelkerke"는 많이 사용하는 것 같아요 SPSS도 이거 나오는 것 같고..ㅋㅋ

-------------------------------------------------------------------------------------------------------------------------------

3. 정리

이제 결괏값을 정리해볼까요

B는 비표준화 계수 즉 로짓 값입니다.

이를 표준화한 값을 β 값으로 여전히 로짓 값입니다.

그래서 β 값을 승산으로 변환하여 Exp(β)를 따로 작성합니다.

β 값을 구하는 방법은 lm.beta함수 쓰면 됩니다. 다중회귀에서 했었죠..ㅎ

이렇게 표로 정리하고

해석을 주르르르륵 해나가시면 되지 않을까 싶습니다.

감사합니다!