출처: https://3months.tistory.com/307 [Deep Play]

ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 다변수분석법 (SPSS)
    SPSS 2019. 9. 7. 03:14

    diamond.sav
    0.02MB

    탐색적 자료 분석이 끝난 후 본 분석인 다변수 분석을 시행해야 한다. 탐색적 자료 분석을 성실히 시행했으면 다변수 분석 결과는 이미 머릿속에 대충 그려질 것이다. 그 내용을 논문 양식에 맞춰서 제시하는 것이 이번 포스트의 중심 내용이다. 

     

     

    1. 다변수 분석의 필요성

     

     사실 예전에 개인용 컴퓨터가 일반화되지 않았을 때는 통계작업을 전부 수기로 진행했었다고 한다. 그러니 다변수 분석 같은 것은 상상도 하기 힘들고 전문 수학자나 통계학자 같은 경우만 선형 회귀, 로지스틱 회귀 같은 분석을 시행하고, 나머지 대부분의 학자들은 카이 스퀘어 검정 하나에만 목매달고 있었다고 한다. 세월이 지나서 더 이상 수기로 통계 계산을 할 필요가 없어지고 개인용 컴퓨터가 보급되기 시작하면서 학문 영역에서 쓰이는 통계기법도 점점 발달하게 되었다. SPSS(Statistical Software for Social Science)가 1970년 생이며, SAS(Statistical Analysis System)는 1976년생,  R이 1995년생 (stable beta는 2000년)이니 그 전 사람들은 어쩔 수 없었을 것이다.

     근데 일이 쉬워진다고 꼭 좋은 것만은 아니다. 이 바닥이 어차피 경쟁사회라서 남들이 지겹게 쓴 내용 그대로 써서는 논문에 실리기 힘들다. 뭔가 새로운 것이 있어야 하니 자꾸 이전에 안 쓰던 기법을 이용할 수밖에 없다. 그러다 보니 특히 NEJM 같은 경우에는 정상적인 교육을 받은 전문의들이 도저히 이해할 수 없는 기법을 이용한 연구가 대부분이다. 심지어는 RCT에도 뭔가 새로운 기법들이 자꾸 도입되어서 보는 사람의 눈을 어지럽게 만든다.

     원래 전문의 수련 과정에 논문 작성이 포함되어 있는 이유는, 최신 의학지식을 받아들여서 그 결과를 임상현장에 적용하라는 의미인데, 최근의 의학연구는 너무 복잡한 통계기법이 사용되기 때문에 정상적인 교육과정 과정 (선형회귀, 로지스틱 회귀, 생존분석)을 거친 의사들은 최신 의학연구를 이해할 수도, 연구에 대한 아이디어가 있다고 쳐도 본인이 스스로 연구를 진행해서 해외 학술지에 논문을 실을 수 없게 되었다.  이와 같은 괴리를 벗어나는 방법은 최신 지견이 이해될 때까지 통계적 지식을 늘리거나, 아니면 최신 연구결과를 참조하는 것을 완전히 포기하고 연수교육이나 교과서 등의 방법을 이용해 지식을 습득하는 방법 (제대로 교육받은 의사 = 의학자라는 대전제를 포기) 밖에는 남지 않은 것 같다. 

     쓸데없는 쪽으로 말이 길어졌는데, 제 길로 다시 돌아와 말하자면, 지금 세상은 개인용 컴퓨터가 너무도 흔한 세상이니 최소한 다변수 분석은 필수라는 것이다. 그게 싫으면 1970년대 이전으로 돌아가는 수밖에 없다.

     

    첨부된 파일을 열어보자. 첨부된 데이터는 ggplot2에 내장된 diamonds파일의 축약본이다.

    다이아몬드 가격을 결정짓는 요소로 4C라는게 존재한다고 한다 (Carat, Cut, Color, Clarity). 결혼반지 살때는 이런 게 있는 줄도 몰랐고, 크기(carat)만 생각했었는데...

    cut에 따른 다이아의 가격을 본다고 해보자.

     등분산 검정은 르벤 검정에서 등분산 만족 못하는 것(p=0.006)으로 나왔다. 그래서 Welch test로 결과를 보니 최소한 한 그룹은 다른 그룹들과 차이가 있었다 (p<0.001). 그래서 Tamhane's T2 pairwise comparisone 결과를 보니 Fair vs Ideal, Good vs  Premium, Premium vs Ideal 이 유의한 차이를 보였다. 

     

    어? Ideal 보다 Premium cut이 비싸네? 당연히 Ideal cut이 비싼줄 알았는데... 세계에서 내가 첫 번째로 알아낸 사실이다^^. 세계 최초 너무 좋아하면 안된다. 세계 최초라는 것은 두 가지 의미가 있다. 내가 천재 거나 또라이거나. 근데 내가 천재일 가능성은 그리 많지 않으니 당연히... 세상은 절대로 만만치 않다. 그리고 이런 결과는 밖에 유출되면 절대로 안된다. 

     

     얼마전부터 인터넷 뉴스들을 보면 건강 부분에 의학연구결과들이 심심치 않게 실리는 것을 볼 수 있다. 알고 보니 연구결과가 언론을 타면 지도교수(지도전문의)에게 인센티브를 주는 곳도 있단다. 그러니 아무리 허접한 논문이라도 어디든 실리면 무조건 보도자료 뿌린단다. 결과가 기존 상식과 큰 차이 없는 결과면 다행인데, 문제는 기존 상식과 다른 경우 발생한다. 위 결과와 같이... 기존 상식과 다르니 기자들은 얼씨구나 하고 보도자료대로 뉴스 낼 거고... 다치는 사람은 결국 주저 자이다.  

     

     다변수 분석하면 괜찮다고? 정답이다. 근데... 다변수 분석을  해야 한다. 제대로 안 하면 제대로 보정되지 않아 단변수결과와 다름없이 나온다. 그럼 위의 결과와 비슷해진다. 

     

     연구에 대해 어설프게 아는 사람의 최고 문제점 중 하나가, 실제(real world)의 법칙이 이론과 어긋나는 점을 보면 실제 세상의 문제점을 찾으려 드는 점이다. 본인의 이론이 틀렸다는 생각은 잘하지 않는다. 겸손해야 한다. 내 지식과 실제 세상의 모습이 다르면 내게 무슨 문제가 있는지 찾고 또 찾아봐야 한다. 개인적으로 학자 인생 중 하나라도 뭔가를 최초로 찾아냈다면 그 사람의 학자로서의 인생은 그리 나쁘지 않았다 생각한다. 그런 일생에 한두 번 있는 이벤트이니 만큼 기존 상식과 어긋나는 결과는 고찰하고 또 고찰해라.   

     

     

    2. 다변수분석의 실제

     

     앞의 포스트에서 carat과 price는 로그 씌워 분석해야 한다는 얘기 까진 했는데... 범주형 변수를 다루는 포스트에서는 다른 데이터를 사용한 이유로 cut, color, clarity에 대한 탐색적 자료 분석에 대한 결과는... 

     다변수 분석에 들어갈 자료는 단변수 분석에서 유의했던 변수 + 이전 연구들에서 유의했던 변수 + 내가 중요하다고 생각하는 변수 이다. 대개 method 마지막에 statistical analysis 부분이 있는데 거기 다변수 분석에 투입한 변수를 결정한 기준을 넣으면 된다. 단변수 분석기준 p<0.1 보다 낮은 경우 투입한다는 사람도 있는데... 그건 연구자의 맘인 것 같다. 중요한 변수를 다변수 분석에 넣지 않아서 문제가 되는 경우는 흔하지만 중요하지 않은 변수를 넣어서 문제가 되는 경우는 드물다. 그리고 상호작용의 경우 유의한 상호작용만 본 분석에 투입하고 그 내용을 method 부분에 언급하면 문제 없을 것 같다.

     하여간 앞의 포스트에서 설명한 방법대로 분석했고 문제가 없었다는 가정하에 다변수 분석을 해보자.

    분석 > 일반선형모형 > 일변량
    종속변수에 "log_price" 입력
    고정요인에 "cut", "color", "clarity" 입력
    공변량에 "log_carat"입력
    "모형" 항에서 아래 그림과 같이 주효과 및 상호작용 입력

     

    다변수 분석의 anova table이다(위의 자료 입력 어려우면 이전 포스트 내용 다시 확인). 그리고 범주형변수*볌주형변수의 상호작용은 보지 않는다 했는데... 예들이 자꾸 설명한 내용과 다른 것 같다 TT. 하여간 유의하긴 하다. 결과를 제시하는 게 만만치 않아 그렇지.

     

     생략해서 그렇지 실제 결과는 컴퓨터 화면 하나를 넘는다 TT. color와 clarity가 여러 개의 범주를 가진 변수이다 보니 상호작용의 개수도 늘어나서 그런다. 만약 실제 연구였으면 나 같으면 color*clarity 상호작용은 제외하고 분석하고 발표했을 거다 (결과가 달라지지 않는다는 전제 하에). 어쨌든 그 결정은 연구자가 하는 거다. 

     

     이제 잔차검정 시작해야 한다. 사실 단변수 분석 및 상호작용 제대로 봤으면 잔차분석 그리 필요 없을 수도 있는데... 그렇게 방심하고 있으면 꼭 놓치는 게 있다. 확인해 주자.

     잔차검정 및 다중공선성 검사는 일반선형모형 항목이 아니라 선형회귀모형 항목에서 가능하다. SPSS의 고질적 문제인데... 왜 일반선형모형에서는 잔차검정 및 다중공선성 검사를 제대로 할 수 없다 (정확히 잔차 검정은 어떻게든 되지만 다중공선성 검사는 불가능하다. 심지어 로지스틱회귀 분석할 때도 다중공선성 검사는 선형회귀로 들어와 해야 한다.). 선형회귀에서는 범주형변수를 직접 다룰 수 없지만 다행히 다중공선성 검사 및 잔차검정 모두 연속형 변수만 대상으로 하면 되니 확인해보자.

     

    분석 > 회귀분석 > 선형

     다중공선성은 분산팽창지수(VIF)로 확인하는데, 독립변수끼리 강한 상관관계를 지니는 경우 VIF 수치가 올라간다. 대개 VIF수치가 5이상으로 올라가면 변수조정이 필요하다 말하는데, 절대적인 기준은 아닌 것 같다. 특히 복잡한 상호작용을 보는 경우 변수들끼리 상관관계가 있을 수밖에 없어서(곱하기니...) 절대적인 기준을 강요할 수 없다. 이번 예제는 연속변수가 하나밖에 없어서 문제가 없지만 다중공선성이 있는 경우 VIF 수치가 수십에서 수백으로 뛰어오른다. 그런 경우 관계있는 두 변수를 보고 판단해야 한다.

     예전에 심사 했던 논문 중 하나는 결과변수가 뭐였는지는 잘 기억나지 않는데, 하여간 통계방법은 로지스틱 회귀였고... 보정을 열심히 해보겠다고 BMI와 허리둘레를 동시에 보정했다. BMI와 허리둘레니 보지 않아도 상관관계 높을 거고... 그럼 BMI와 허리둘레에 관련된 통계치를 신뢰할 수 없게 된다. 이런 경우 해답은 둘 중 중요한 것 하나만 남기는 거다. 만약 두 변수 다 아주 중요하기 때문에 절대 빼는 게 안된다면... 1) 주성분 분석 이용해서 2개의 직교하는 성분으로 분리하거나, 2) PLS 분석 같은 걸 쓰면 된다 (이해 안 되면 통계 자문 구하거나 포기하면 쉽다. 언급한 이유는 방법이 존재한다는 걸 알려주려는 의미이다.).      

     잔차도표는 그럭저럭 나쁘지 않아 보인다. 0을 중심으로 위아래로 even 하게 펼쳐져 있으며 특별한 모향을 보이지도 않는다. 잔차검정을 더 자세히 하려면 잔차를 저장해서 정규성 검사하고, 일반선형항목에 Breush-Pagan 검정 (잔차의 등분산검사, Levene 검정은 명목형변수, Breush-Pagan은 연속변수...) 하면 된다. 

     

     이상치 확인은 Cook의 거리 및 레버리지값을 저장해서 확인하는 방법이 우선인데... 솔직히 권하고 싶지 않다. 이런 부분까지 신경 쓰고 싶으면 다른 통계 패키지로 갈아타는 게 낫다(SPSS의 한계점이다. 쉽게 버튼만 클릭클릭하면 누구나 결과를 얻을 수 있다는 장점이 있지만 그를 위해 포기해야 하는 부분이 분명히 존재한다.). 탐색적 데이터 분석을 제대로 했으면 한 변수 분석 혹은 두 변수 분석과정에서  이상치가 보였을 것이다. 그때그때 처리하는 게 차라리 낫다.

     

     

     

     

    Take Home Message

     

    1. 제대로 된 다변수 분석이 중요하다.

    2. 잔차검정, 이상치 분석

    3. 연구를 하다 보면 어느 정도 적당히 합의할 필요도 있다.

     

     

      

     

     

     

     

     

    댓글

Designed by Tistory.