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

ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 탐색적 자료분석 2. 결측치 확인 및 처리 (SPSS)
    SPSS 2019. 8. 5. 12:43

     결측치 확인도 통계분석에서 중요한 부분의 하나이지만, 쉽게 넘어가는 부분이다. 특히 의학 계열 논문에서는 그 정도가 더 심한데, 그 이유 중 하나가 상당수의 의학 계열 논문에서 outlier나 결측치 대체 같은 통계기법 사용을 인정하지 않기 때문이다. 다른 분야에서 일반적으로 사용되는 기법을 인정하지 않는다고 보수적이라고 생각할 수도 있겠지만, 아무래도 연구 대상이 사람인만큼... 정규분포하지 않는 자료가 많기도 하고, 약간 특이하더라도 누군가의 생명을 outlier 취급 하기에는 무리가 따르는 점도 있다. 하여간 여러 이유로 결측치 확인 및 이상값 처리가 일상적이지 않기는 하지만 그렇다고 그냥 무시하고 넘어갈 수도 없느것이 현실이다. 그 이유를 함께 확인해보자.

     


     우선 본 내용으로 들어가기 전에 선형회귀분석에 대해 잠시 살펴보자.

     

    위와 같은 자료가 있다면,

     

    그래프는 이런 모양일 것이다. 그리고 x와 y를 설명하는 방정식은 

    y = 1 * x  일 것이다.

     

    선형회귀분석 결과도 이와 동일하다.

    비표준화 계수(B) 항목을 보면 x 옆에 1.000 , 그 위의 상수 항 옆에는 0.000이다.

    결국 y = 1.000 * x + 0.000 = 1 * x + 0

    위의 방정식과 동일한 결과이다.

     

      선형회귀분석은 별다른 게 아니라 y = ax + b 를 가정한 후 최적의 a와 b를 찾는 과정이다.

    그리고 이 과정은 선형 회귀분석의 연장인 '로지스틱 회귀분석'과 '생존분석'도 마찬가지이다.

     


     

    원 주제로 돌아와 보면, 

     뭐 10줄 밖에 안되니 연습 삼아 한 번 직접 입력해보자.

     그러고 나서 선형 회귀 분석을 해보면, 

     

     분석 > 회귀분석 > 선형

    y = 0.958*x1 + 0.033 으로 표현되며, 이 회귀식의 R^2은 0.962 이다.

    대략 x1이 1 증가할 때마다 y가 1 증가하게 입력했으니 맞게 나온 결과이다.

    이를 그래프로 확인해 보면, 

     

     

     

     

     위 그림과 같다. 

     

    그럼 여기에다 x2를 추가로 분석해 보자.

     

     

     

     

    회귀식이 좀 크게 바뀌었다.

    y = 0.250*x1 - 0.250*x2 +3.750

    먼저 y = 0.958*x1 + 0.033과 비교하면 기울기가 0.958에서 0.250으로 바뀌었다.

     

    붉은색 선은 x2를 고려하지 않은 첫 번째 회귀식의 그래프이며, 파란색 선이 x2를 넣은 후의 회귀식 그래프이다. 이런 큰 차이가 나는 이유가 뭔가 하면... 

     

    다변수 분석에서 하나의 변수라도 결측치가 있으면 그 관측치 전체가 분석에서 제외된다.

    입력했던 자료를 다시 보면, x2의 경우 4~7째 줄까지만 입력되어 있는 것을 볼 수 있다. 나머지 줄의 자료를 다 버리고 x2가 입력된 4줄만 분석하면 두 번째 회귀식과 같은 결과가 나오는 것이다.

     

    이 내용을 아는 사람은 당연한 내용이라고 말할 수도 있지만, 몰랐던 사람도 있었을 것이다. 다시 한번 언급하건데,

    결측치를 포함한 대상자의 자료는 분석에 이용되지 않는다.     

     

     그럼 다음 문제는 결측치를 가진 자료를 어떻게 처리할 것인가 인데...

     

    1. 결측치 대체법을 사용한다.

    ; 서두에서도 언급했지만 결측치 대체법은 쓰면 안 된다. 쓰는 사람 본적도 없고 상식적으로도 쓰면 안된다. 사람의 목숨은 정규분포를 만족하는 나사 톱니의 일그러짐과는 다르다.

     

    2. 결측치가 너무 많은 변수는 분석에서 제외한다.

    ; 결측치 대체법이 안되면 그나마 이게 현실적인 해결법이다. 자료를 분석하다 보면 결측치가 특별히 많은 변수가 존재한다. 측정하기 힘든 변수라던가... 묻거나 응답하기 민감한 내용인 경우... 연구에 꼭 필요하다면 결측 된 자료를 모두 버리고서라도 가져가는 게 맞겠으나, 예를 들어 암환자 연구에서 소득이나 교육 수준 같은 변수가 꼭 필요할 수도 있지만 아닐 수도 있을 것이다. 

     

    3. 무응답 항목을 따로 구성한다.

    ; 국민건강영양조사 같은 경우 응답을 거부한 경우 '99999' 등의 코드로 입력한 것을 볼 수 있다.  이런 부분은 결측치로 처리하지 말고 무응답 혹은 응답거부 항목으로 분류하면 된다.

    예를 들면,

     

     

     

     위와 같이, 아까 결측이었던 부분을 '2' 로 채워 넣은 후 이 부분을 상황에 맞춰서 미측정 / 무응답 / 응답거부... 상황에 맞게 정의한 후  명목형 변수로 다시 정의한다. (원래 변수는 0 혹은 1 두 개 밖에 없었기 때문에 변수형태 (척도 / 명목형) 상관없었음 (--> 이 내용이 이해가지 않으면 "더미변수" 검색해서 확인). 수정 후 3가지 선택지 (0 /1 /2(미측정))로 바뀌었기 때문에 척도 (혹은 연속형) 변수로 놔둘 수 없음.

     명목형 변수로 수정 후, 일반선형모형을 이용해 다시 분석해 보면,

     

    분석 >  일반선형모형 > 일변량 ('옵션' 항목에서  '모수추정값' 체크) 

     

     

     

    y = 0.963 * x1 + 0.202 (x2=1일 경우 -0.268 , x2=0 일 경우 -0.732) 으로, 결측치로 인해 날렸던 정보를 복원 가능하다. 

        

     

    TAKE HOME MESSAGE

     

    1.  결측치가 있는 자료는 다변수 분석에서 제외된다.

    2.  의학논문에서 결측치 대체법은 사용하면 안 된다.

    3.  따라서 내 자료에서 결측치가 있는 자료가 얼마나 되는지? 어떻게 처리할지? 염두에 두고 있어야 한다. 

    댓글

Designed by Tistory.