교육통계/Rstudio

교육통계 R랑가몰라 8. 다항(서열)로지스틱 회귀분석

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

안녕하세요, 이번엔 다항 로지스틱 회귀분석에 대해 알아보려 합니다.

저번에 다루었던 로지스틱은 종속변수의 값이 0 또는 1의 값을 가지는 이항 로지스틱이지만,

어쩌면 종속변수가 범주 변수처럼 1, 2, 3, 4 등등의 값을 가지는 변수를 분석할 상황이 올 수도 있겠죠.

이때 사용하는 분석방법이 바로 다항 로지스틱입니다.

7장에서 사용하였던 아동청소년 패널 2018 1차 자료

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

코딩은

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

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

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

이렇게 되어 있었고요.

독립변수도 7장과 같이 여학생 더미, 학업열의, 자아존중감, 학업 무기력을 사용하려 합니다.

분석에 사용한 데이터셋

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

여기서 사용하는 종속변수는 응답이 3개인데요.

다항 로지스틱을 위해서는 '참조 범주'가 필요합니다.

연구자가 무엇에 더 관심을 두는지에 따라서 참조 범주를 정해주시면 되겠고

예를 들어, 2번을 참조로 둔다면

1-2번을 대비하면, 2번에 비해 1번을 선택할 확률

3-2번을 대비하면, 2번에 비해 3번을 선택할 확률

이 되겠지요..?

다항 로지스틱을 위해서는 'nnet' 패키지가 필요합니다.

이렇게 설치해서 실행해주시고요

바로 분석에 들어가기 전에, 종속변수를 'factor'로 변환해주어야 합니다.

왜냐면,, 범주형 변수를 분석하는 것이니까요

그래서 종속변수로 지정했던 'job'을 as.factor를 사용해서 변환합니다.

그러면, str함수를 사용해서 이전과 비교해보면,

여기선 num으로 나오지만

sample3$job <- as.factor(sample3$job) 을 입력하면

factor로 변환되었네요

다음으로 이제, 참조 범주를 정해주어야 합니다.

이때 사용하는 함수는 relevel입니다.

sample3라는 데이터셋에 job2라는 객체를 따로 만들었고

그곳에 relevel 함수로 sample3$job 열과

참조 범주는 ref = "2"를 통해 지정해줍니다.

그럼 이제 분석하면 끝입니다.ㅎ

분석에 사용하는 함수는 multinom입니다.

종속변수나 독립변수 넣는 것은 7장 이항 로지스틱과 똑같습니다.

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

결괏값은 summary 함수를 사용하면 됩니다

로짓

바로 summary를 사용하면 '로짓'값이 나오는 것입니다.

승산비를 보려면 exp(coef(객체))를 써야 합니다.

저는 mlogit이라는 객체에 결괏값을 담아서

승산비

이렇게 결과를 얻었네요

해석을 해보자면, 2번(대강 하고 싶은 직업이 있다)에 비해 1번(아직 하고 싶은 직업을 결정하지 않았다)을 선택할 승산은

학업열의가 1 단위 높아질수록 승산이 0.825배 낮아지고,

확률로 계산하면 (0.8257902-1)*100 = -17.4% 낮아지는 것으로 나타났습니다.

반면, 2번(대강 하고 싶은 직업이 있다)에 비해 3번(구체적으로 정해 놓은 직업이 있다)을 선택할 승산은

학업열의가 1 단위 높아질수록 승산이 1.114배 높아지고,

확률로 계산하면 (1.1142093-1)*100 = 11.4% 높아지는 것으로 나타났습니다.

다항 로지스틱 검증은 7장 이항 로지스틱과 같습니다!

(7장 참고해주세요..ㅎ)

2. 서열 로지스틱 회귀분석 코드

범주형 변수인 것 같은데 왠지 서열 변수로 봐도 될 것 같은 변수들도 있지요

그럴 때는 또 서열 로지스틱 분석을 따로 해주어야 합니다.ㅋㅋ

서열은 말 그대로 변수 1,2,3,4 응답에 서열이 있는 것인데요..

이때 확률은 '누적'입니다.

1을 선택할 확률 + 2를 선택할 확률 + 3을 선택할 확률 + 4를 선택할 확률

다 더하면 확률의 최고값인 '1'이 나오는 것을 가정합니다.

그래서 해석할 때

1을 선택하는 것은 2,3,4에 비해 1을 선택하는 것

2를 선택하는 것은 3,4에 비해 1,2를 선택하는 것

3을 선택하는 것은 4에 비해 1,2,3을 선택하는 것

4를 선택하는 것은.. 다 포함해야 되네요..ㅋㅋ

역시 지금 사용하는 변수는 딱히 적절하지 않을 수 있으나..

뭐.. 여기선 그냥 연습하는 거니까요.. 분석 코드만 알면 나중에 필요한 곳에 요긴하게 쓰면 되지요..ㅎ

서열 로지스틱에서는패키지가 필요합니다!

변수를 위에서 사용한 것을 그대로 쓴다면,

함수는 polr입니다

다른 것은 다 똑같은데... 마지막 꼬리에 붙은 'Hess = T'만 붙여주면 분석에 문제는 없어 보입니다.

저 Hess를 설정해야 헤시안 행렬을 사용해서 데이터 셋을 어쩌고... 저쩌고.. 하네요..ㅎ

하지만.. 조금 더 디테일하게 들어가면

서열 로지스틱은 종속변수 사례수 분포에 따라 분석 코드를 따로 입력해주어야 합니다.

 

분포가 고를때
logistic
정규분포 가정
probit
높은 범주가 많을때
loglog
낮은 범주가 많을때
cloglog
극단 값이 많을 때
cauchit

이렇게 5가지가 있으니 참고하시기 바랍니다.

종속변수 분포는 table함수를 통해서 살짝 볼까요

음... 이 정도면 적당히 가운데가 많네요..ㅋㅋㅋ

그럼 저는 가장 위에 있는 logistic을 사용해보겠습니다.

앞선 다항 로지스틱 분석 결과보단 약간 불친절하네요..ㅎㅎ

그래도 t-value값이라도 주니까.. 이걸로 유의도 검증하면 될 것 같고요

학업열의가 높을수록 더 높은 범주에 속할 가능성이 높아지고,

반대로 학업 무기력은 낮아질수록 더 낮은 범주에 속할 가능성이 높아지겠네요..

서열 로지스틱 해석이 조금 애매한데..

아무리 리스 뒤져보아도 서열 로지스틱을 딱 이거다 하고 보여주는 국내 논문을 못 찾겠네요;;ㅎㅎㅎ

혹시 서열 로지스틱을 좀 더 연구하셔서 좋은 소스가 있다면

꼭 알려주세요.. ㅎㅎ

이상으로 마치겠습니다.

감사합니다!