반응형

[SAS] 다중 선형 회귀 분석 (Multiple linear regression) - PROC REG, PROC GLM

 

 지난 포스팅에서 연속형 변수의 단순 선형 회귀 분석 (Simple linear regression: 2023.05.14 - [선형 회귀 분석/SAS] - [SAS] 단순 선형 회귀 분석 (Simple linear regression) - PROC REG), 범주형 변수의 단순 선형 회귀 분석 (Simple linear regression with categorical variables: 2023.10.19 - [선형 회귀 분석/SAS] - [SAS] 범주형 변수의 선형 회귀 분석 (Simple linear regression with categorical variable) - PROC REG, PROC GLM)에 대해 알아보았다.  위 분석들은 모두 독립 변수가 1개인 단순 선형 회귀 분석이다. 하지만 세상 일은 그렇게 단순하지 않다. 

 

교란 변수 (Confounder, confounding variable)

 우리는 앞서  연속형 변수의 단순 선형 회귀 분석 (Simple linear regression: 2023.05.14 - [선형 회귀 분석/SAS] - [SAS] 단순 선형 회귀 분석 (Simple linear regression) - PROC REG) 포스팅에서 수축기 혈압과 심혈관 질환의 관련성을 찾아보았다. 그런데, 비만인 사람은 혈압이 대체적으로 높은 것으로 알려져 있다. 더구나 비만인 사람은 심혈관 질환의 위험도도 높아지는 것으로 알려져 있다. 그렇다면, "수축기 혈압이 높았던 사람에게서 높은 심혈관 질환 위험 점수가 발견되었던 것은 그냥 그 사람이 비만도가 높아 당연히 수축기 혈압도 높고, 심혈관 질환 위험 점수도 높았던 것이 아닐까?"라는 의문이 든다. 즉, "우리가 이전 단순 선형 회귀 분석에서 발견한 과학적 현상(수축기 혈압이 높으면 심혈관 질환 위험 점수가 높아진다.)은 사실은 비만 때문이 아니었을까?"라는 의문이 들게 된다. 이렇게 독립변수와 종속변수 모두의 원인이 되는 변수를 교란 변수라고 하며, 이런 현상(교란)은 통계 분석을 할 때 반드시 교정을 해야 한다. (사실 독립변수는 인과적 관계가 아니라 연관 관계이기만 해도 충분하다.)

교란 현상의 해결 방법: 다중 회귀 분석

 교란 현상을 해결하는 방법은 보정(adjustment)과 층화(stratification)가 있다. 층화도 좋은 방법이고, 때로는 보정을 할 수 없어 층화를 해야만 할 때도 있지만, 보통 표본의 수가 부족해지는 문제가 있기 때문에, 층화가 아니라 보정을 시행하곤 한다. 보정을 시행할 수 있는 방법으로는 이전에 다룬 편상관 분석(2023.04.20 - [상관분석/SAS] - [SAS] 편상관 계수, 부분 상관 계수 (Partial correlation coefficient) - PROC CORR)이 있다. 하지만 이는 상관 계수만 구할 수 있어 "예측할 수 있는 정도"만 표현할 수 있다. 그 대신 비만도의 영향을 보정했을 때, 수축기 혈압이 1 단위 증가할 때 심혈관 질환 위험 점수가 얼마나 증가하는지(기울기)를 알 수 있는 방법으로는 본 포스팅에서 다룰 다중 선형 회귀 분석이 있다.

 

*실습용 데이터는 아래 링크를 클릭하면 다운로드할 수 있습니다.

2022.08.04 - [공지사항 및 소개] - 분석용 데이터 (update 22.12.18)

 

분석용 데이터 (update 22.12.18)

2022년 12월 18일 버전입니다. 변수는 계속하여 추가될 예정입니다. 다음 카테고리에 있는 글에서 이용된 데이터입니다. - 기술 통계 - 범주형 자료 분석 - 모평균 검정 - 상관분석 - 반복 측정 자료

medistat.tistory.com

 

시작하기 위해 라이브러리를 만들고, 파일을 불러온다.

라이브러리 만드는 방법: 2022.08.05 - [통계 프로그램 사용 방법/SAS] - [SAS] 라이브러리 만들기 - LIBNAME

파일 불러오는 방법: 2022.08.05 - [통계 프로그램 사용 방법/SAS] - [SAS] 데이터 불러오기 및 저장하기 - PROC IMPORT, PROC EXPORT

*라이브러리 지정하기;
LIBNAME hong "C:/Users/User/Documents/Tistory_blog";

*파일 불러오기;
PROC IMPORT
DATAFILE="C:\Users\user\Documents\Tistory_blog\Data.xlsx"
DBMS=EXCEL
OUT=hong.df
REPLACE;
RUN;

 

 

목표:  BMI의 영향을 배제 혹은 교정했을 때 수축기 혈압(SBP)이 1 단위 증가할 때 심혈관 질환 위험 점수(CVD_RISK)는 얼마나 증가하는가?

 

단순 선형 회귀 분석과 같이 PROC REG 명령어를 사용하며, 코드는 다음과 같다.

코드

PROC REG DATA=hong.df;
MODEL CVD_RISK=SBP BMI;
RUN;

PROC REG DATA=hong.df; : 선형 회귀분석을 시작하라. 데이터는 hong 라이브러리에 있는 df를 사용하라.

 독립변수에 사용된 SBP, BMI 모두 연속변수이기에 PROC GLM이 아니라 REG를 사용해도 무방하다.
MODEL CVD_RISK=SBP BMI; :  종속 변수는 CVD_RISK로, 독립 변수에는 SBP와 BMI를 사용하라. SBP와 BMI의 순서가 바뀌는 것은 아무 상관이 없다. 즉, BMI를 보정했을 때의 SBP의 영향과 SBP를 보정했을 때의 BMI의 영향을 동시에 파악하는 것이다.

 

결과

해석의 방법은 단순 선형 회귀 분석에서와 같다. (2023.05.14 - [선형 회귀 분석/SAS] - [SAS] 단순 선형 회귀 분석 (Simple linear regression) - PROC REG) 그리고, Analysis of Variance Table, Root MSE, R-Square, Dependent Mean, Adj R-Sq, Coeff Var에 대한 내용도 위 단순 선형 회귀 분석 링크에서 확인할 수 있다.

 

 BMI의 영향을 보정하더라도, SBP가 1 단위 증가할 때 CVD_RISK는 0.99389만큼 증가하며 이에 대한 p-value는 0.0001보다 작아 매우 유의함을 알 수 있다. 

 또한, SBP의 영향을 보정하더라도, BMI가 1 단위 증가할 때 CVD_RISK는 1.08243만큼 증가하며 이에 대한 p-value는 0.0001보다 작아 매우 유의함을 알 수 있다. 

 

즉, 단순 회귀 분석에서 나타난 수축기 혈압과 심혈관 질환 위험 점수 사이의 유의한 관련성은 BMI의 영향을 보정하더라도 유의함을 알 수 있다. 또한, 단순 회귀 분석에서의 회귀 계수  1.10193보다 작으므로, 일부분의 설명력은 BMI에게 빼았겼음을 알 수 있다.

 

 

보정 변수가 두 개 이상일 때 코드

 BMI 외에 흡연 상태로도 보정하고 싶을 수 있다. 이럴 땐 어떻게 해야 할까? 답은, 단순히 BMI 뒤에 추가적인 보정변수를 띄어쓰기를 이용하여 나열하면 된다. 그런데, 선형 회귀 분석 전에 연속형 변수와 범주형 변수의 전처리가 다르다는 것을 일전에 소개한 적이 있다. 범주형 변수는 분석 전에 범주형 자료임을 SAS에게 알려주어야 한다. 내용은 다음 링크를 확인하면 된다.

연속형 변수: 2023.05.14 - [선형 회귀 분석/SAS] - [SAS] 단순 선형 회귀 분석 (Simple linear regression) - PROC REG

범주형 변수: 2023.10.19 - [선형 회귀 분석/SAS] - [SAS] 범주형 변수의 선형 회귀 분석 (Simple linear regression with categorical variable) - PROC REG, PROC GLM

 그런데, 흡연 상태 (SMOK)는 범주형 자료다. 따라서 선형 회귀 분석을 시행하기 전에 범주형임을 알려주어야 한다.

PROC GLM DATA=hong.df;
CLASS SMOK(REF='0');
MODEL CVD_RISK= SBP BMI SMOK/SOLUTION;
RUN;
QUIT;

PROC GLM DATA=hong.df; : 선형 회귀분석을 시작하라. 데이터는 hong 라이브러리에 있는 df를 사용하라.

 독립변수에 사용된 SMOK가 범주형 변수이기에 PROC REG이 아니라 GLM를 사용해야만 한다.

CLASS SMOK(REF='0'); : SMOK는 범주형 자료다. 참고치는 0으로 한다.
MODEL CVD_RISK= SBP BMI SMOK/SOLUTION;  : 결과변수는 CVD_RISK, 독립변수는 SBP, BMI, SMOK이다. 각 변수에 대한 beta값, 표준오차, p-value 등을 산출하라. (SOLUTION)
RUN; : 실행하라.
QUIT; : GLM을 종료하라. (QUIT이 필요하지 않은 다른 구문을 추가로 시행해도 상관없다.)

 

결과

 

 SBP, BMI는 유의한 결과를 보이고 있지만, SMOK는 1(과거 흡연자), 2(현재 흡연자) 모두 유의한 결과를 보이고 있지 않다. 

"BMI와 흡연 상태로 보정을 하였을 때, 수축기 혈압 1 단위 증가할 때, CVD_RISK는 0.98417668점 증가한다"라고 할 수 있지만

"SBP와 BMI로 보정을 하였을 때, 비흡연자와 과거 흡연자 혹은 비흡연자와 현재 흡연자 사이의 CVD_RISK의 차이는 존재하지만 유의하다고 할 수 없다."라고 결론 내리게 된다.

 또한 중요한 것은, 만약 SMOK를 단순히 보정변수로만 보고 CVD_RISK와 SBP 사이의 관계만 확인하고 싶다면, SMOK의 참고치(REF)를 무엇으로 설정하든 같은 결과를 낸다는 것이다. 따라서 주된 독립변수가 아니라면 REF를 무엇으로 잡을지 크게 신경 쓰지 않아도 될 뿐만 아니라, 따로 지정을 하지 않아도 상관없다.

 

위 두 개의 표는 다음 링크에서 내용을 확인하길 바란다. (2023.05.14 - [선형 회귀 분석/SAS] - [SAS] 단순 선형 회귀 분석 (Simple linear regression) - PROC REG) CVD_RISK Mean 은 위 링크에서 "Dependent Mean"에 해당한다.

위 두 개의 표 SS(Sum of Squares)에 관한 것인데, Type I과 Type III가 있다. 이는 다음 링크에서 내용을 확인하길 바란다. (링크 추가 예정)

코드 정리

*라이브러리 지정하기;
LIBNAME hong "C:/Users/User/Documents/Tistory_blog";

*파일 불러오기;
PROC IMPORT
DATAFILE="C:\Users\user\Documents\Tistory_blog\Data.xlsx"
DBMS=EXCEL
OUT=hong.df
REPLACE;
RUN;

*다중 선형 회귀분석 시행;
PROC REG DATA=hong.df;
MODEL CVD_RISK=SBP BMI;
RUN;


PROC GLM DATA=hong.df;
CLASS SMOK(REF='0');
MODEL CVD_RISK= SBP BMI SMOK/SOLUTION;
RUN;
QUIT;

 

[SAS] 다중 선형 회귀 분석 (Multiple linear regression) 정복 완료!

작성일: 2023.10.22.

최종 수정일: 2023.10.23.

이용 프로그램: SAS v9.4

운영체제: Windows 11

반응형
반응형

[SAS] 범주형 변수의 선형 회귀 분석 (Simple linear regression with categorical variable) - PROC REG, PROC GLM

 

지난 포스팅에서 우리는 수축기 혈압(SBP)과 심혈관 질병 위험 점수 (CVD_RISK)의 선형 회귀 분석에 대해 알아보았다.(2023.05.14 - [선형 회귀 분석/SAS] - [SAS] 단순 선형 회귀 분석 (Simple linear regression) - PROC REG) 이 분석에 쓰인 독립 변수인 수축기 혈압 (SBP)는 연속형 변수다. 만약 범주형 변수로 선형 회귀 분석을 시행하려 한다면 어떻게 해야 할까? 예를 들어 흡연 여부(SMOK: 비흡연자 or 과거 흡연자 or  현재 흡연자)로 심혈관 위험 점수를 예측하려 할 땐 어떻게 해야 할까? 이번 포스팅에서는 이에 대해 알아볼 것이다.

 

*실습용 데이터는 아래 링크를 클릭하면 다운로드할 수 있습니다.

2022.08.04 - [공지사항 및 소개] - 분석용 데이터 (update 22.12.18)

 

분석용 데이터 (update 22.12.18)

2022년 12월 18일 버전입니다. 변수는 계속하여 추가될 예정입니다. 다음 카테고리에 있는 글에서 이용된 데이터입니다. - 기술 통계 - 범주형 자료 분석 - 모평균 검정 - 상관분석 - 반복 측정 자료

medistat.tistory.com

 

시작하기 위해 라이브러리를 만들고, 파일을 불러온다.

라이브러리 만드는 방법: 2022.08.05 - [통계 프로그램 사용 방법/SAS] - [SAS] 라이브러리 만들기 - LIBNAME

파일 불러오는 방법: 2022.08.05 - [통계 프로그램 사용 방법/SAS] - [SAS] 데이터 불러오기 및 저장하기 - PROC IMPORT, PROC EXPORT

*라이브러리 지정하기;
LIBNAME hong "C:/Users/User/Documents/Tistory_blog";

*파일 불러오기;
PROC IMPORT
DATAFILE="C:\Users\user\Documents\Tistory_blog\Data.xlsx"
DBMS=EXCEL
OUT=hong.df
REPLACE;
RUN;

 

목표:  흡연 여부(SMOK)로 심혈관 위험 점수(CVD_RISK)를 예측할 수 있는가?

이전 단순 선형 회귀 분석에서 배운 대로 선형 회귀 분석을 시행하면 어떻게 될까? 자료의 유형 (연속형 vs 범주형)을 고려하지 않은 책 우선 분석을 시행해 보자. 분석 방법은 이전 포스팅(2023.05.14 - [선형 회귀 분석/SAS] - [SAS] 단순 선형 회귀 분석 (Simple linear regression) - PROC REG)을 보면 알 수 있다.

 

코드

PROC REG DATA=hong.df;
MODEL CVD_RISK=SMOK;
RUN;

 

결과

주목해야 할 건 "SMOK"이다. 이전 연속형 독립 변수로 시행한 선형 회귀 분석의 결과 해석은 "독립 변수가 1 단위 증가할 때 종속 변수의 변화량"="기울기"이다. 그러면 이 결과를 해석하면 어떻게 될까? 참고로 SMOK는 다음과 같은 변수다.

SMOK 해석
0 비흡연자
1 과거 흡연자
2 현재 흡연자

 SMOK가 1단위 증가할 때 CVD_RISK의 변화량은 "비흡연자에 비해 과거 흡연자가", "과거 흡연자에 비해 현재 흡연자가" 얼마나 더 높은 CVD_RISK의 값을 갖는지 표현하는 것이다. 근데 이 값은 15.2974로 같다. 즉, 비흡연자에서 과거 흡연자로 변하는 것과, 과거 흡연자에서 현재 흡연자로 변화하는 것이 같은 수준이라고 가정하고 있는 것이다. 이 말은 SMOK를 등간척도로 보고 있다는 말이다. 등간척도는 연속 변수의 일종이니, SAS는 현재 SMOK를 연속변수로 이해하고 있다는 것이다. 그도 그럴 것이 0,1,2로 구성된 변수를 SAS가 무슨 수로 범주형 변수인지, 연속형 변수인지 알겠는가. 따라서 우리가 직접 지정해주어야만 한다. SAS에서 범주형 변수임을 알려줄 때에는 CLASS구문을 사용한다.

 

잘못된 코드

PROC REG DATA=hong.df;
CLASS SMOK;
MODEL CVD_RISK=SMOK;
RUN;

이전 코드에서 다음 구문이 추가되었다.

CLASS SMOK; : "SMOK는 범주형 변수로 다뤄주세요."라는 뜻이다.

 

그런데 이 명령어는 실행되지 않는다. 왜냐하면 명령어 PROC REG는 CLASS구문을 받아들이지 못하기 때문이다. 이를 실행하기 위해서는 PROC GLM이라는 명령어를 사용해야 한다. 

 

(미완성) 코드

PROC GLM DATA=hong.df;
CLASS SMOK;
MODEL CVD_RISK=SMOK/SOLUTION;
RUN;
QUIT;

PROC GLM DATA=hong.df;  :PROC GLM 명령어를 시작하며, 데이터는 hong라이브러리의 df를 사용하라.
CLASS SMOK;  :SMOK는 범주형 변수로 처리하라
MODEL CVD_RISK=SMOK/SOLUTION;  :결과변수는 CVD_RISK, 독립변수는 SMOK이다. 각 변수에 대한 beta값, 표준오차, p-value등을 산출하라
RUN;  :PROC GLM을 실행하라.
QUIT;  :PROC GLM을 종료하라. 이 구문을 실행하지 않으면 "PROC GLM 실행 중"이라는 말이 계속 뜬다. 이를 없애기 위해서는 "QUIT;" 구문을 실행하거나, "QUIT;"가 필요하지 않은 구문들 (PROC FREQ, PROC UNIVARIATE 등)을 실행하면 된다. 

 

이와 같이 코드를 돌리면 다음과 같은 결과를 내준다.

결과

 

결과를 보면 범주형 변수로 바꾸기 전과 다르게, SMOK에 대한 결괏값이 2개가 나온다. SMOK0과 SMOK1다. SMOK는 0,1,2 세 개의 값을 갖는데, SMOK=0인 그룹과 SMOK=1인 그룹에 대한 통계 검정 결과를 나타내는 것이다. 그렇다면 왜 2는 없을까? 2는 참조값(reference)으로 쓰인 것이다. 즉 현재 흡연자(SMOK=2)에 비해 비흡연자 (SMOK=0)는 심혈관 질환 위험 점수 (CVD_RISK)가 30.0865680점 낮으며, p-value는 매우 작으므로(<0.0001) 이는 유의미한 차이라고 할 수 있다. 또한, 현재 흡연자(SMOK=2)에 비해 과거 흡연자 (SMOK=1)는 심혈관 질환 위험 점수 (CVD_RISK)가 12.4864196점 낮으며, p-value는 매우 작으므로(p<0.0001) 이는 유의미한 차이라고 할 수 있다. 

 

 그런데, 위 결과는 직관적이지 않다. 우리는 "흡연은 몸에 안 좋기 때문에, 흡연을 하면 심혈관 위험 점수가 높아진다."라고 생각한다. 즉, "현재 흡연자보다 비흡연자의 심혈관 위험 점수가 xx점 낮다."보다, "비흡연자보다 현재 흡연자의 심혈관 위험 점수가 xx점 높다."라는 표현이 친숙하다. 즉, 기준점(참조값)을 어떤 값으로 할지의 문제가 발생한다.

 SAS는 가장 큰 값을 자동으로 참조값으로 잡는다. 그래서 SMOK=2인 현재 흡연자가 reference로 잡혔다. 그런데, 위와 같은 문제 때문에 참조값(reference)을 현재 흡연자가 아닌 비흡연자로 지정하고 싶다면 어떻게 해야 할까? CLASS구문에서 (REF=)를 다음과 같이 지정해 주면 된다.

 

코드

PROC GLM DATA=hong.df;
CLASS SMOK(REF='0');
MODEL CVD_RISK=SMOK/SOLUTION;
RUN;
QUIT;

CLASS SMOK(REF='0') : SMOK는 범주형 변수로 처리하되, 기준치(REFerence)는 0(비흡연자)으로 잡아라. 

 

결과

SMOK1과 SMOK2에 대한 내용만 있고, SMOK0은 Estimate(beta) 값은 0으로 바뀌었다. 즉, 비흡연자 (SMOK=0)에 비해, 과거 흡연자 (SMOK=1)는 심혈관 위험 점수가 17.6012484점 높으며, 현재 흡연자 (SMOK=2)는 30.0865680점이 높다. 이 결과는 모두 통계적으로 유의하다 (p<0.0001).

 

위 두 개의 표는 다음 링크에서 내용을 확인하길 바란다. (링크 추가 예정)

 

이분형 변수는 범주형 지정이 필요 없다.

이분형 변수는 범주형 변수로의 변환이 굳이 필요는 없다. 왜냐하면 어차피 값이 두 개밖에 존재하지 않기 때문에, 연속형이든 범주형이든 같은 결과를 내기 때문이다. 하지만, 만약 0과 1로 이루어진 이분형 변수의 경우, 반드시 reference가 1이 되므로 만약 0을 reference로 잡고 싶은 경우, CLASS구문에서 reference를 지정해 주면 된다.

 

코드 정리

*라이브러리 지정하기;
LIBNAME hong "C:/Users/User/Documents/Tistory_blog";

*파일 불러오기;
PROC IMPORT
DATAFILE="C:\Users\user\Documents\Tistory_blog\Data.xlsx"
DBMS=EXCEL
OUT=hong.df
REPLACE;
RUN;

*범주형 변수의 선형 회귀분석 시행;
PROC GLM DATA=hong.df;
CLASS SMOK(REF='0');
MODEL CVD_RISK=SMOK/SOLUTION;
RUN;
QUIT;

 

[SAS] 범주형 변수의 선형 회귀 분석 (Simple linear regression with categorical variable) 정복 완료!

작성일: 2023.10.19.

최종 수정일: 2023.10.23.

이용 프로그램: SAS v9.4

운영체제: Windows 11

반응형
반응형

[SAS] 선형 회귀 분석의 전제 조건 - PROC REG

 

 지난 포스팅에서 단순 선형 회귀 분석을 소개하며, 전제 조건(가정)에 대한 논의가 필요하다고 했다. (단순 선형 회귀 분석: 2023.05.14 - [선형 회귀 분석/SAS] - [SAS] 단순 선형 회귀 분석 (Simple linear regression) - PROC REG) 보통 네 가지 전제조건을 의미하며, 그중 통계적으로 검정하는 조건은 세 가지다.

 

1) 정규성(Normality) : 잔차의 정규성

2) 선형성(Linearity) : 독립변수와 종속변수의 선형성

3) 잔차의 등분산성 (Homoscedasticity) : 잔차의 분산은 종속변수의 값에 따라 달라지지 않는다.

4) 독립성 (Independence): 관측 간의 독립성

 

이 중 4번 "독립성"은 통계적으로 검정하진 않는다. 독립성이란 개별 관측 간에는 연관되어있지 않다는 뜻이다. 대표적인 사례가 반복 측정이다. 같은 사람에서 약물 복용 전 간기능 수치와 약물 복용 후 간기능 수치를 비교한다면 두 개의 값은 "한 사람"에서 나왔기 때문에 독립이라고 볼 수 없다. 이런 경우 독립성을 만족한다고 볼 수 없다. 이런 경우 독립 표본 t 검정이 아닌 대응 표본 t 검정을 사용하는 것과 일맥상통한다. 유전적 정보를 공유하는 가족이나, 같은 경험을 하는 같은 반 학생들은 (항상 그런 것은 아니지만) 가끔 일반적인 선형 회귀 분석이 적절하지 않을 수 있다.

 

나머지 세 가지 전제조건에 대해 검증을 해보도록 하겠다.

 

*실습용 데이터는 아래 링크를 클릭하면 다운로드할 수 있습니다.

2022.08.04 - [공지사항 및 소개] - 분석용 데이터 (update 22.12.18)

 

분석용 데이터 (update 22.12.18)

2022년 12월 18일 버전입니다. 변수는 계속하여 추가될 예정입니다. 다음 카테고리에 있는 글에서 이용된 데이터입니다. - 기술 통계 - 범주형 자료 분석 - 모평균 검정 - 상관분석 - 반복 측정 자료

medistat.tistory.com

 

시작하기 위해 라이브러리를 만들고, 파일을 불러온다.

라이브러리 만드는 방법: 2022.08.05 - [통계 프로그램 사용 방법/SAS] - [SAS] 라이브러리 만들기 - LIBNAME

파일 불러오는 방법: 2022.08.05 - [통계 프로그램 사용 방법/SAS] - [SAS] 데이터 불러오기 및 저장하기 - PROC IMPORT, PROC EXPORT

*라이브러리 지정하기;
LIBNAME hong "C:/Users/User/Documents/Tistory_blog";

*파일 불러오기;
PROC IMPORT
DATAFILE="C:\Users\user\Documents\Tistory_blog\Data.xlsx"
DBMS=EXCEL
OUT=hong.df
REPLACE;
RUN;

 

목표:  수축기 혈압(SBP)과 심혈관 질환 위험 점수 (CVD_RISK) 사이의 선형 회귀 분석의 전제조건이 성립하는가?

 

먼저 선형 회귀 분석을 실시한다. (2023.05.14 - [선형 회귀 분석/SAS] - [SAS] 단순 선형 회귀 분석 (Simple linear regression) - PROC REG)

PROC REG DATA=hong.df;
MODEL CVD_RISK=SBP;
RUN;

 

SAS는 참 고맙게도, 전제 조건 확인을 위한 그래프를 바로 보여주고 있다.

그런데, 여러 그래프를 하나로 합쳐 보여주기 때문에 각 그래프를 자세히는 볼 수 없다는 단점이 있다. 이럴 때에는, 다음과 같이 기존 코드에 "plots=all"을 추가하면 각각의 그림을 크게 확인할 수가 있다.

 

코드

PROC REG DATA=hong.df plots=all;
MODEL CVD_RISK=SBP;
RUN;

실시하면 여러 개의 그래프를 보여주며, 우리는 그중 일부의 그래프만 사용할 것이다.

 

결과

1) 잔차의 정규성 (Normality)

일반 Q-Q plot처럼 해석하면 된다. (Q-Q plot내용은 다음 포스팅을 참고하길 바란다. 2022.08.12 - [기술 통계/SAS] - [SAS] 정규성 검정 - PROC UNIVARIATE) 대부분의 점이 45도의 점선 상에 있는 것을 알 수 있다. (비록 $x$축과 $y$축의 scale이 달라 45도처럼 보이지 않으나, $y=x$직선이다.) 따라서 잔차는 정규성을 따른다고 할 수 있다.

 

추가로 다음 그래프도 정규성을 따른다는 증거로 사용될 수 있다.

 

2) 선형성 (Linearity)

y축에 "Residual"이라고 쓰인 그래프를 확인한다.

해석 방법: Residual이 0 위아래에 고루 분포하며 특정한 형태나 패털을 보이지 않는다. 즉, 점선 위나 아래에 몰려있는 공간이 있으면 안 된다. 예를 들어 Fitted Values가 140인 근방에서는 Residuals이 0보다 큰 게 많고, 200인 근방에서는 0보다 작은 게 많은 상황이 발생했다면 선형성이 망가진 것이다. 

 

 여기서 유의할 것은 절대로 일반적인 산포도로 선형성을 확인하면 안 된다는 것이다. 이유로는 다음 두 가지를 들 수 있다.

 1) 독립변수가 여러 개인 다중 선형 회귀 분석에서는 차원의 문제로 산포도로 선형성을 확인하는 것이 쉽지 않다.

 2) 단순한 변수의 산포도를 확인하면 안 된다. 예를 들어 A와 B의 선형 회귀 분석을 시행할 것인데 A는 로그 변환하여 사용하기로 했다면 산포도는 A와 B의 산포도가 아니라, log(A)와 B의 산포도를 확인해야 한다. 

 

x축에는 수식으로 계산했을 때(a+bx) 예상되는 결과변수의 값(predicted value), y축에는 실제 결과변수의 값을 넣어 그린 plot이다. 본 데이터는 선형성을 만족하므로 점들이 직선관계를 이루고 있다. 선형관계를 만족하지 않는다면 이렇게 직선관계를 이루지는 않을 것이다. (사실 이 그림을 잘 변형하면 위와 같은 그림이 그려지게 된다.) 

 

3) 등분산성 (Homoscedasticity)

y축에 "RStudent"라고 쓰인 그래프를 확인한다.

해석 방법: 점들이 어떤 직사각형 안에 고루 퍼져있다면 등분산성을 만족한다. 그러므로 본 사례는 등분산성을 만족한다.

 설명의 용이성을 위해 단순 선형 회귀 분석에서 "잔차의 등분산성"의 의미는 다음과 같다. "각 SBP값에 대해 잔차의 분산은 같다." 그림으로 설명하면 다음 그림에서, 주황 박스 안의 잔차들의 분산이 파란 박스 안의 잔차들의 분산과 같다는 것이다. 물론 박스는 저 두 곳에만 위치하는 것이 안이라 전 구간에 걸쳐 존재하게 된다. 

 따라서, 점들이 어떤 직사각형 안에 고루 퍼져있지 않고, 특정 Fitted value에서만 넓게 퍼져있거나 좁게 분포해 있다면 등분산성 가정에 위배되게 될 것이다.

 

 

만약 단순 선형 회귀 분석이 아니라 다중 선형 회귀 분석인 경우 "각 SBP(독립 변수) 값에 대해 잔차의 분산은 같다."가 아니라 "예측된 종속 변수(CVD_RISK) 값에 대해 잔차의 분산은 같다."가 될 것이다.

 

주관적이지 않나?

 위 분석들은 모두 주관적으로 결론 내리고 있는 것이 사실이다. 통계적으로 어떤 p-value를 내는 검정 방법이 충분히 존재하겠지만, 현재로서는 대부분은 주관적으로만 판단을 내리고 있는 것이 현실이다. 세상이 바뀌고 객관적인 결정을 내리기를 요구하는 시대가 도래할지도 모르지만, 만약 그런 세대가 온다면, 아마도 위 전제 조건들을 엄격하게 모두 만족하는 데이터는 그리 많지 않을 것이다. 아마 현재로서도 이러한 현실적인 이유 때문에 그렇게까지 가정을 검정하라고 하지는 않는 것 같다.

 하지만 제안된 통계적 방법은 존재한다. 바로 Edsel의 Global Validation of Linear Models Assumptions(GVLMA)다. 이는 ㄴSAS에서는 불가능하고, R에서 gvlma패키지의 gvlma() 함수로 시행할 수 있다. (2022.12.22 - [선형 회귀 분석/R] - [R] 선형 회귀 분석의 전제 조건 - lm(), plot(), gvlma())

 

 

그런데, 왜 하필이면 이런 가정이 필요한 걸까? 이는 선형회귀분석으로 구한 회귀계수들이 참값이기 위한 가정이며, 이 가정들을 가우스-마르코프 정리 (Gauss-Markov theorem)라고 한다. 관련 내용은 다음 링크에서 확인할 수 있다. 2023.06.21 - [통계 이론] - [이론] 가우스-마르코프 정리 (Gauss-Markov Theorem)

 

코드 정리

*라이브러리 지정하기;
LIBNAME hong "C:/Users/User/Documents/Tistory_blog";

*파일 불러오기;
PROC IMPORT
DATAFILE="C:\Users\user\Documents\Tistory_blog\Data.xlsx"
DBMS=EXCEL
OUT=hong.df
REPLACE;
RUN;

*선형 회귀 분석 및 그래프 추출;
PROC REG DATA=hong.df plots=all;
MODEL CVD_RISK=SBP;
RUN;

[SAS] 선형 회귀 분석의 전제 조건 정복 완료!

작성일: 2023.10.17.

최종 수정일: 2023.10.17.

이용 프로그램: SAS v9.4

운영체제: Windows 11

반응형
반응형

[이론] 가우스-마르코프 정리 (Gauss-Markov Theorem)

 

 

이전 최소제곱법 글(2023.06.15 - [통계 이론] - [이론] 보통최소제곱법 (Ordinary Least Squares))에서 회귀 계수를 구하는 방법에 대해 알아보았다. 가우스-마르코프 정리는, 최소제곱법에서 추정한 회귀 계수 값들이 특정한 조건 하에서 가장 좋은 추정량이 된다는 정리다. 그 조건들은 다음과 같다.

 

(1) 선형성 (Linearity) : Linearity in parameters

회귀계수가 선형이어야 한다. 즉, $Y=aX+b$와 같은 관계여야 한다. 여기에서 중요한 것은 a지 X가 아니다. a가 선형이어야 하지, X는 선형이 아니어도 된다. 즉, $Y=aX^2+b$와 같은 관계도 선형이다. 심지어 $Y=af(X)+b$도 회귀계수에 대해서는 선형이다. 

 

(2) 독립변수의 비확률성(Nonstochasticity) : Nonstochasticity of regressors (independent variables)

 독립변수는 미리 정해져 있어야 한다. 즉, 독립변수는 확률변수면 안 된다. 풀어 말하면, 독립변수의 값이 구해져 있는 상태에서 종속변수의 값을 측정해야 한다. 하지만, 일반적인 연구를 할 때에는 독립변수와 종속변수를 동시에 측정한다. 즉, 독립변수가 미리 정해져 있지 않고, 달리 말하면 확률변수라고 말할 수 있다. 이런 경우에는 다음과 같은 조건으로 조금 완화하기도 한다. "독립변수의 값과 잔차의 값은 관련이 없어야 한다." 

위 그림에서 $x_i$값과 오렌지색 선분의 길이는 상관이 없어야 한다. 만약, $x_i$값이 커짐에 따라 오렌지색 선분의 길이가 길어진다면 그것은 관련이 있다는 뜻이다. 예를 들어, 나이와 지식수준의 관련성을 확인하는 상황을 생각해 보면, 3살짜리 아이들의 지식수준은 비슷비슷한데(오렌지색 선분이 짧음), 성인의 차이가 많이 나므로 비상관성이 성립하지 않을 수 있다. (이는 표준화 등의 방법으로 해결할 수 있긴 하다.) 

 

(3) 오차의 평균=0

  관측치들은 회귀선 위에도, 아래에도 고르게 분포하여 오차의 평균은 0이 되어야 한다.

$$ \forall_i, E \left( \epsilon_j | x_i \right)=0$$

즉, 독립변수가 특정 값인 관측치들만 따로 뽑아 종속변수의 평균을 구하면 회귀선 위에 위치한다는 뜻이다.

$$ \forall_i, E\left(y_j | x_i \right) =  \alpha + \beta x_i $$

 

(4) 등분산성 (Homoscedasticity): 오차의 등분산성

 대표적인 대푯값으로는 평균과 표준편차가 있다. 오차의 평균은 위에서 다루었으니, 표준편차도 다루어보도록 한다. 표준편차의 제곱이 분산이므로 표준편차를 다루는 것은 분산을 다루는 것과 같다.

 독립변수의 값에 관계없이, 종속변수가 퍼져있는 정도는 비슷해야 한다. 즉, 오차가 퍼져있는 정도는 독립변수의 값에 관계없이 일정해야 한다. 따라서 적절한 상수 $\sigma$에 대해 다음 수식이 성립해야 한다. 그리고, $\sigma$를 표준편차라 한다.

$$\forall_i, var \left( \epsilon_j | x_i \right) = \sigma^2 $$

 만약 등분산성이 성립하지 않는다면, 즉 $var \left( \epsilon_j | x_i \right)=\sigma_i ^2$이라면, 이분산성 (heteroscedasticity)을 보인다고 한다.

 

(5) 비자기상관성 (Nonautocorrelation)

 한 오차로 다른 오차값을 예상할 수 있으면 안 된다. 각 개인이 10살일 때, 20살일 때의 키에 대한 데이터가 있다고 하자. 10살일 때 키가 평균보다 컸던 사람(오차가 큰 사람)은 20살일 때에도 클(오차가 클) 확률이 높다. 즉, 한 오차값을 알면 다른 오차값을 예측할 수 있게 된다. 이런 경우 자기상관(autocorrelation)이 있다고 하며, 이런 경우는 적절하지 않다. 이를 수식으로 표현하면 다음과 같다.

 $$\forall_{i,k}, cov\left(\epsilon_j, \epsilon_l | x_i , x_k \right)=0$$

 

(6) 다중공선성 없음 (No multicollinearity)

 마지막으로, 다중공선성이 없어야 한다. 보통 다중공선성은 공선성의 개념을 포함하는 것처럼 통용되므로, 본 글에서 다중공선성이 없다는 것은, 공선성도 없다는 것을 내포하기로 한다. 먼저, 공선성과 다중공선성에 대해서 알아보기로 한다.

 공선성이란 "모델에 있는 두 독립변수 간에 긴밀한 상관관계가 있는 것"으로 정의할 수 있다. 예를 들어, 종속변수가 "삶의 질"일 때, 독립변수로 "월 수입"과 "연 수입" 두 개를 넣는 상황을 상정해 보자. 이때, "연 수입 = 월 수입 * 12"라는 정확한 상관관계가 존재하므로, 공선성이 존재한다고 할 수 있고, 두 개의 변수를 모델에 모두 넣으면 안 된다.

 다중공선성이란 "모델에 있는 세 개 이상의 독립변수 간에 일종의 선형 관계가 있는 것"으로 정의할 수 있다. 예를 들어, 독립변수로 "출생 연도", "나이", "현재 년도" 세 가지를 쓰는 상황을 생각해 보자. 이때 "나이=현재 년도 - 출생 연도"라는 정확한 선형 관계가 존재하므로, 다중공선성이 존재한다고 할 수 있다. 따라서 이 세 변수를 모두 독립변수로 사용하려 하면 안 된다. (이런 경우에 세 변수를 모두 독립변수로 사용하기 위한 방법으로 Age-Period-Cohort Analysis가 존재하고, 이 다중공선성을 해결하기 위해 여러 방법론들이 제시되었다. 다음 링크에서 내용을 확인할 수 있다. 링크 추가 예정)

 

 

여기까지가 가우스 마르코프 정리의 내용이다. 통계 공부를 좀 해보신 분들이라면 알 수 있겠지만, 이는 선형 회귀 분석의 가정으로 이어진다. 그리고 이런 모델을 Classical Linear Regression Model이라고 한다.

SPSS : 링크 추가 예정

SAS : 링크 추가 예정

R: 2022.12.22 - [선형 회귀 분석/R] - [R] 선형 회귀 분석의 전제 조건 - lm(), plot(), gvlma()

 

 여기서 의문이 든다. 그렇다면 왜 선형 회귀 분석의 전제조건으로 "잔차의 정규성"을 요구할까?

이는 가설 검정을 통해 유의성, 즉 p-value를 산출하기 위함이다. 정확히 말하면, 잔차의 정규성을 만족하는 순간, 보통 최소 제곱법은 최대가능도와 같은 것이 되므로, 최소제곱법 대신 최대가능도 방법을 사용할 수 있다. 각각에 대한 내용은 다음 링크를 확인하길 바란다.

최소제곱법: 2023.06.15 - [통계 이론] - [이론] 보통최소제곱법 (Ordinary Least Squares)

최대가능도: 2022.11.25 - [통계 이론] - [이론] 로지스틱 회귀분석에서 회귀 계수를 구하는 방법 - Maximum likelihood estimation

  그리고, 잔차의 정규성까지 만족하는 모델을 Classical Normal Linear Regression Model이라고 한다.

 

 

[이론] 가우스-마르코프 정리 (Gauss-Markov Theorem) 정복 완료!

작성일: 2023.06.21.

최종 수정일: 2023.06.21.

 

반응형
반응형

[이론] 보통최소제곱법 (Ordinary Least Squares)

 의학통계를 비롯한 많은 통계에서 모수(parameter)를 추정할 때 가장 많이 쓰이는 방법 중 하나가 보통최소제곱법(Ordinary Least Squares)이다. 이에 대해 알아보고자 한다. 보통최소제곱법 (Ordinary Least Squares)은 최소제곱법 (Least Squares)와 다른 것이지만 많이들 구분하지 않고 사용하고 있다. 본 글에서는 철저히 구분하여 사용할 것이다.

 

최소제곱법 (Least Squares)

  최소제곱법의 분류를 이해하기 위해서는 최소제곱법이 무엇인지 알아야 한다. 

 네 개의 표본으로부터 얻은 데이터를 다음과 같이 좌표평면 위에 표시했다고 하자.

누군가가 "이 데이터는 적절한 선형 관계로 표시할 수 있을 것 같아."라고 생각하였고, 적절한 선을 다음과 같이 그렸다고 하자.

 다른 누군가는 이 직선이 아니라, 기울기와 $y$절편이 조금은 다른 직선이 더 적절하다고 주장할 수도 있다. 그렇다면 어떤 기준으로 직선을 정해야 다수가 받아들일 수 있을까? 그에 대한 답 중 하나가 최소제곱법(Least Squares)이다.

 

최소 제곱법은 직선 관계에서만 답을 내어줄 수 있는 것은 아니다. 또 다른 누군가는 직선이 아니라 아래와 같은 이차함수가 더 적절하다고 주장할 수 있고, 다른 누군가는 오른/왼쪽으로 조금 이동한 이차함수가 더 적절하다고 주장할 수 있다.

 최소제곱법 (Least Squares)은 이런 문제들에 대한 답을 내어준다. 직선 관계로 표현하기로 마음먹었다면, 어떤 직선이 데이터를 가장 잘 설명하는지 답을 내어줄 수 있다. 이차 함수 관계로 표현하기로 했다면, 어떤 이차 함수가 가장 잘 설명하는지 알려줄 수 있다. 

 요약하면, 최소제곱법은 잔차를 제곱한 것들의 합이 최소화되는 순간을 찾는 테크닉이다. 방법은 다음과 같다.

1) 데이터를 잘 설명할 것으로 예상되는 임의의 직선을 그린다. 

2) 그 직선 위 $x$좌표가 데이터의 $X_1 (x_1,y_1)$의 x좌표$(x_1)$와 같은 점$(\hat{X_1})$의 $y$값$(\hat{y_1})$은 직선 관계를 사용하여 구한 예측치다.

3) 실제 $y$값$(x_1)$과 예측치$(\hat{y_1})$의 차이를 잔차라고 한다. (오렌지색 선분)

4) 오렌지색 선분들이 짧으면 짧을 수록, 직선이 데이터를 잘 설명한다고 할 수 있다. 그런 목적으로 잔차의 합을 구하면 문제가 발생한다. 데이터들은 직선 위에도, 아래에도 있으므로 잔차는 +, - 두 가지가 모두 존재한다. 따라서 단순 합산은, 오렌지색 선분이 아무리 길어도 잘 상쇄되기만 하면 0이 될 수도 있다. 그러므로 그냥 더하는 것이 아니라 제곱을 하여 더하게 된다. 이는 통계에서 분산이 편차의 합이 아닌, 편차의 제곱의 합인 이유와 같다.

5) 편차의 제곱의 합을 최소로 만드는 기울기와 $y$절편을 구하면 된다.

 

최소제곱법 (Least Squares)의 분류

사실 위 설명은 최소제곱법 중 하나인 보통최소제곱법 (Ordinary Least Squares, OLS)에 대한 설명이다. 최소제곱법의 분류는 다음과 같다.

1. Linear Least Squares : 선형

 - Ordinary Least Squares

 - Weighted Least Squares : 등분산성이 보장되지 않을 때

 - Generalized Lieast Squares : 등분산성뿐만 아니라 자기상관 등 문제가 있을 

2. Non-Linear Least Squares

 

 

보통최소제곱법 (Ordinary Least Squares, OLS)의 계산법

 지금부터는 실제로 잔차 제곱의 합을 최소화하는 기울기와 $y$절편을 구해보고자 한다.

직선의 방정식은 다음과 같다고 하자

$$y=ax+b$$

데이터는 $n$개의 표본으로 이루어져 있으며, 각 데이터는 다음과 같이 표현된다 

$$X_{i} (x_i, y_i), where \; i\in\mathbb{N}\; AND\; 1\leq i\leq n $$

그럼 $X_{i} (x_i, y_i)$의 잔차 $d_i$는 다음과 같이 계산된다.

$$d_i=y_i - (ax_i +b) $$

잔차의 제곱의 합은 다음과 같다.

$$\sum_{i=1}^{n} {\left(y_i -ax_i-b \right)^2}$$

 

이 값이 최소화되는 지점에서는 $a$에 대해서든, $b$에 대해서든 편미분을 하면 0이 된다.

$$ \frac {\partial} {\partial a} \sum_{i=1}^{n} {\left(y_i -ax_i-b \right)^2} =-2\sum_{i=1}^{n} {x_i \left(y_i - ax_i -b \right) } = 0 \cdots (1) $$

$$ \frac {\partial} {\partial b} \sum_{i=1}^{n} {\left(y_i -ax_i-b \right)^2} =-2\sum_{i=1}^{n} {\left(y_i - ax_i -b \right)}=0 \cdots (2) $$

 

(2)식에서 다음을 얻는다.

$$ \begin{align} b&= \frac {\sum_{i=1}^{n} y_i} {n} - a \frac {\sum_{i=1}^{n} x_i}{n} \\ &=\bar{Y} - a\bar{X} \\&&\end{align} $$

 

이를 (1) 식에 대입하면 다음을 얻는다.

$$ \begin{align} a &= \frac {\sum_{i=1}^{n}x_i \left( y_i - \frac {\sum_{i=1}^{n} y_i } {n} \right)} {\sum_{i=1}^{n} x_i \left(x_i - \frac {\sum_{i=1}^{n} x_i} {n} \right)} \\ &= \frac {\sum_{i=1}^{n} x_i \left( y_i - \bar{Y} \right)} {\sum_{i=1}^{n} x_i \left( x_i - \bar{X} \right)} \cdots(3) \\&&\end{align}$$

 

한편, 

$$ \sum_{i=1}^{n} \left( \bar{X}^2 - x_i \bar{X} \right)= \bar{X} \sum_{i=1}^{n} \left( \bar{X} - x_i \right)=0$$

$$ \sum_{i=1}^{n} \left( \bar{X}y_i - \bar{X}\bar{Y} \right)=\bar{X} \sum_{i=1}^{n} \left( y_i - \bar{Y} \right)=0$$

이므로 (3)식의 분자, 분모는 다음과 같이 쓸 수 있다.

$$\sum_{i=1}^{n} x_i \left(y_i - \bar{Y} \right) = \sum_{i=1}^{n} \left[ x_i \left(y_i - \bar{Y}\right)- \left(\bar{X} y_i - \bar{X}\bar{Y} \right)\right] = \sum_{i=1}^{n} \left(x_i - \bar{X} \right) \left( y_i - \bar{Y} \right) = (n-1) cov \left(X,Y \right) $$

$$\sum_{i=1}^{n} x_i \left( x_i - \bar{X} \right)=\sum_{i=1}^{n} \left[ x_i  \left( x_i - \bar{X} \right) + \left( -x_i\bar{X} + \bar{X}^2 \right) \right]=\sum_{i=1}^{n} \left( x_i - \bar{X} \right)^2 =(n-1) var(X)$$

따라서 다음을 얻는다.

$$a= \frac {cov \left(X,Y \right)} {var(X)}$$

$$b=\bar{Y} - \bar{X} \frac {cov \left(X,Y \right)} {var(X)}$$

 

값이 하나라는 점에서도 알 수 있지만, Local minima가 존재하지 않음을 알 수 있고, 이는 바로 global minima임을 알 수 있다.

 

이렇게, 선형 회귀분석에서 적절한 회귀 계수들을 찾는 방법인 최소제곱법에 대해 알아보았다. '최소제곱법을 통해 구한 값이 정말 최적일까?'라는 질문에 대한 답변은 '가우스-마르코프 정리 Gauss-Markov Theorem'을 통해 얻을 수 있다. 해당 내용은 다음 링크에서 알아볼 수 있다. 링크 추가 예정 

 

[이론] 보통최소제곱법 (Ordinary Least Squares) 정복 완료!

 

작성일: 2023.06.15.

최종 수정일: 2023.06.15.

반응형
반응형

[SAS] 단순 선형 회귀 분석 (Simple linear regression) - PROC REG

 

 지난 상관관계 분석에서 우리는 서로 다른 두 변수가 얼마나 관련되어 있는지를 알아보았다. 즉, 한 변수의 값으로 다른 변수의 값을 예측할 수 있는 정도인 "예측도"의 관점에서 상관 계수를 이해하였다.(2023.04.10 - [상관분석/SAS] - [SAS] 피어슨 상관 계수 (Pearson's correlation coefficient) - PROC CORR) 그런데, 상관 계수의 단점은 "예측도"만 확인할 수 있을 뿐, 실제로 예측을 할 수는 없다. 가령, 수축기 혈압(SBP)이 120인 사람의 심혈관 질환 위험 점수 (CVD_RISK)가 얼마인지는 알 수 없는 것이다. 이걸 가능하게 하는 것이 선형 회귀 분석 (linear regression)이다. 본 포스팅에서는 독립 변수가 1개인 단순 선형 회귀 분석 (simple linear regression)을 시행해 보도록 하겠다. 이는 독립 변수가 1개라는 점에서 univariate linear regression이라고도 부른다.

 

*실습용 데이터는 아래 링크를 클릭하면 다운로드할 수 있습니다.

2022.08.04 - [공지사항 및 소개] - 분석용 데이터 (update 22.12.18)

 

분석용 데이터 (update 22.12.18)

2022년 12월 18일 버전입니다. 변수는 계속하여 추가될 예정입니다. 다음 카테고리에 있는 글에서 이용된 데이터입니다. - 기술 통계 - 범주형 자료 분석 - 모평균 검정 - 상관분석 - 반복 측정 자료

medistat.tistory.com

 

시작하기 위해 라이브러리를 만들고, 파일을 불러온다.

라이브러리 만드는 방법: 2022.08.05 - [통계 프로그램 사용 방법/SAS] - [SAS] 라이브러리 만들기 - LIBNAME

파일 불러오는 방법: 2022.08.05 - [통계 프로그램 사용 방법/SAS] - [SAS] 데이터 불러오기 및 저장하기 - PROC IMPORT, PROC EXPORT

*라이브러리 지정하기;
LIBNAME hong "C:/Users/User/Documents/Tistory_blog";

*파일 불러오기;
PROC IMPORT
DATAFILE="C:\Users\user\Documents\Tistory_blog\Data.xlsx"
DBMS=EXCEL
OUT=hong.df
REPLACE;
RUN;

 

 

목표:  수축기 혈압(SBP)으로 심혈관 질환 위험 점수 (CVD_RISK)를 예측할 수 있는가?

 

선형 회귀 분석은 PROC REG이라는 함수를 사용한다.

코드

PROC REG DATA=hong.df;
MODEL CVD_RISK=SBP;
RUN;

PROC REG DATA=hong.df; : 회귀분석을 시행하는 코드를 시작한다 (PROC REG). 데이터는 hong 라이브러리의 df 데이터를 사용한다.
MODEL CVD_RISK=SBP; : 독립변수를 SBP로, 종속변수를 CVD_RISK로 하는 선형 회귀 분석을 시행한다

 

결과

하나씩 살펴보도록 하자.

 

SBP에 관한 것부터 보자.

 추정치(Estimate)는 1.10193이다. 이는 SBP가 1 증가할 때, CVD_RISK가 1.101935 증가한다는 의미다. 즉, 이는 $xy$평면에서 기울기를 의미하고, 양의 상관관계가 있다는 말이다. 이 값은 논문에서 종종 $\beta$값으로 불린다.

 추정치의 표준 오차는 0.00906다. 이는 추정치(Estimate)의 변동가능성을 의미하고, 이보다 오른쪽에 있는 Pr>|t|를 구할 때 사용된다.

Pr>|t|는 0.0001보다 작다. 이는 p-value를 의미하는데, $0.0001$보다 작으므로 매우 유의한 결과임을 알 수 있다. 그러므로 귀무가설을 기각하면 되는데, 선형 회귀분석에서는 귀무가설과 대립가설이 무엇일까?

 귀무가설: $H_0=$ 추정치(Estimate)는 0이다. 즉, 이 표본이 기원한 모집단에서 SBP와 CVD_RISK는 아무런 관련성이 없다.

 대립가설: $H_1=$ 추정치(Estimate)는 0이 아니다. 즉, 이 표본이 기원한 모집단에서 SBP와 CVD_RISK는 모종의 관련성이 있다.

따라서, 우리는  SBP와 CVD_RISK 사이의 양의 상관관계가 유의미하며, 추정치 1.10193는 유의미하다고 결론 내린다.

 

하지만, 우리가 선형 회귀 분석을 시작한 목적은 SBP의 값으로 CVD_RISK의 값을 예측하기 위함이었는데, 기울기만 알아서는 $xy$평면에서 직선을 그릴 수 없다. 우리는 $y$절편 또한 알아야 한다. 따라서 Intercept값을 보아야 한다.

Intercept는 23.036415이다. 사실 이 값에 대한 p-value는 큰 의미가 없다. 왜냐하면 우리는 이 값이 0이든 아니든 관심이 없기 때문이다. 

 

어찌 되었든 우리는 SBP와 CVD_RISK사이의 관계식이 다음과 같음을 알 수 있게 되었다.

$CVD\_RISK=23.036415+1.101935\times SBP$

 

 

그런데 결과창에 보면 SBP와 CVD_RISK의 산점도와 추세선을 같이 그려주고 있다. 

 추세선처럼 데이터에서 SBP가 증가할수록 CVD_RISK가 증가하고 있다. 하지만 모든 데이터가 완벽히 선 위에 있는 것은 아니다. 선 위의 값들은 예측된 값이므로 실제값과는 차이가 있다. 이 차이를 Residual라고 한다. 

 

 그럼 위 산점도의 오른쪽에 있는 숫자들을 보자. 이 내용은 결과창에서 표로도 제시하고 있다.

이 숫자들의 의미는 다음과 같다.

 

Root MSE(Mean Squared Error) 이는 위 산점도 옆 숫자들 중 MSE (26.793)에 루트를 씌운 값이다. 이는 위에서 설명한 residual의 표준오차가 5.176이라는 뜻이다. 

(산점도 그림의) Error DF 오차의 자유도가 998인데 자유도(degrees of freedom)가 언급된 이유는, 표준오차를 계산할 때 자유도를 이용하기 때문이다. 998인 이유는, 쉽게 설명하면 표본의 수인 1000에서 변수(SBP, Intercept=y절편)의 수인 2를 뺀 것이다. 어렵게 설명하면, 총 분산은 표본의 수에서 1을 뺀 999개의 자유도를 갖는다. 그리고, 모델 자체의 자유도는 변수의 수(2)에서  1을 뺀 1개의 자유도를 갖는다. 따라서 총 분산의 수(999)에서 모델의 자유도(1)을 뺀 998이 도출된다.

Dependent Mean : 종속변수인 CVD_RISK의 평균이다.

Coeff Var: 변동계수 (Coefficient of variance)에 100을 곱한 것이다. 따라서 다음 수식에 따라 구해진 것이다. $$Coeff\,Var = 100\times \frac {Root MSE} {Dependent Mean} =100\times \frac {5.17622}{171.82726}$$

R-squared:  0.9369 : R squared는 SBP가 CVD_RISK를 어느 정도 설명하는지를 의미한다. 여기에서는 SBP가 CVD_RISK를 93.69% 설명한다고 말할 수 있다.

Adj(usted) R-squared:  0.9368 : 본 분석은 독립 변수가 1개이므로 별로 의미는 없는 지표이다. 그럼에도 불구하고 Adjusted R-squared를 설명하면, 다음과 같다. 독립 변수가 많아지면 많아질수록 종속 변수를 설명하는 능력은 증가되기 마련이다. 하지만 마냥 변수가 많아진다고 실제로 설명력이 높아지는 것은 아니다. 따라서 어느 정도의 패널티를 주어야 하는데, 이 패널티를 고려한 것이 Adjusted R-squared이다.

 

다루지 않고 남은 한 개의 표를 마저 보자.

 이 표는 분산분석 표다.

1. DF: 자유도를 의미한다. 이렇게 숫자가 계산되는 이유는 위에서 밝히었다.

2. Sum of Squares: 분산분석 표에서 흔히들 이야기하는 SSR, SSE, SST에 관한 이야기다.

  Sum of Squares
Model SSR
Error SSE
Corrected Total SST

이를 구하는 방법, 그리고 관계식 등에 대한 내용은 다음 링크를 확인하길 바란다. 링크 추가 예정

 

3. Mean Square: Sum of Squares를 DF로 나누어 구한다.

4. F Value: 이는 Model의 Mean Square를 Error의 Mean Square로 나누어 구한다. 이 값은 F 분포를 따른다고 알려져 있으므로, 이에 해당하는 p-value를 구할 수 있고, 이는 Pr>F의 column에 나타나있다.

  이 내용은 사실 독립 변수가 1개인 본 분석에는 별로 의미가 없다. 그럼에도 불구하고 설명하면. 이 p-value의 귀무가설은 "모든 독립 변수의 Estimate가 0이다"이다. p-value가 0.05보다 작으므로 적어도 한 개 이상의 Estimate가 유의미한 값을 갖는다는 결론을 내리게 된다. 하지만 여기에서는 독립 변수가 원래 1개이므로 그 독립변수, SBP가 유의미하다는 것을 알 수 있다.

 

 

가정

 단순 선형 회귀 분석 자체는 간단하지만, 단순 선형 회귀 분석 시행의 전제조건을 따지는 것이 이보다 까다롭고 더 중요하다. 이는 내용이 꽤 많으므로 다음 포스팅을 참고하길 바란다. 링크 추가 예정

  

 

독립 변수의 종류: 연속형

 필자는 연속형 변수인 SBP를 독립 변수로 사용하였다. 만약 범주형 변수를 사용하고자 한다면 분석 방법이 약간은 달라지게 된다. 이에 관한 내용은 다음 링크에서 확인할 수 있다. 링크 추가 예정

 

코드 정리

*라이브러리 지정하기;
LIBNAME hong "C:/Users/User/Documents/Tistory_blog";

*파일 불러오기;
PROC IMPORT
DATAFILE="C:\Users\user\Documents\Tistory_blog\Data.xlsx"
DBMS=EXCEL
OUT=hong.df
REPLACE;
RUN;

*선형 회귀 분석;
PROC REG DATA=hong.df;
MODEL CVD_RISK=SBP;
RUN;

 

[SAS] 단순 선형 회귀 분석 (Simple linear regression) 정복 완료!

작성일: 2023.05.14.

최종 수정일: 2023.05.14.

이용 프로그램: SAS v9.4

운영체제: Windows 11

반응형
반응형

[SAS] 편상관 계수, 부분 상관 계수 (Partial correlation coefficient) - PROC CORR

 

세상의 많은 지표들은 서로 상관되어있는 경우가 많다. 비흡연자에 비해 흡연자가 폐암에 잘 걸리고, 부모의 키가 클수록 아이의 키도 크다. 소득 수준이 높은 나라일수록 평균 수명도 길고, 수학 점수가 높은 학생은 물리 점수가 높으며, 식당에서 음식을 많이 시킬수록 계산해야 하는 금액도 커진다. 변수의 형태에 따라 피어슨 상관 계수 (Pearson's correlation coefficient)를 구하거나 스피어만 상관 계수 (Spearman's correlation coefficient), 혹은 켄달의 타우 (Kendall's tau)를 구하기도 한다. 관련 내용은 다음 링크에서 확인할 수 있다.

2023.04.10 - [상관분석/SAS] - [SAS] 피어슨 상관 계수 (Pearson's correlation coefficient) - PROC CORR ()

2023.04.10 - [상관분석/SAS] - [SAS] 스피어만 상관 계수, 켄달의 타우 (Spearman's rank correlation coefficient, Kendall's tau) - PROC CORR

 

 

 그런데 만약 다음과 같은 상황이라면 어떨까?

목표: 수축기 혈압이 심혈관 질환 위험에 미치는 영향을 알아보고자 한다. 

상황: 수축기 혈압이 높은 사람은 일반적으로 BMI도 높다. 그런데, 높은  BMI는 심혈관 질환의 위험 인자다.

문제: 높아진 심혈관 질환 위험이 수축기 혈압 때문인지, BMI 때문인지 구분할 수가 없다.

 

 이런 상황에서 BMI를 교란 요인 (confounding factor, confounding variable, confounder)이라고 하며, 교란요인의 영향을 보정하는 것은 의학 통계 전반에 있어서 아주 중요한 문제다. 

 

 상관 계수 (correlation coefficient)를 구할 때 교란 변수를 보정하는 방법은 편상관 계수 혹은 부분 상관 계수(partial correlation coefficient)를 구하는 것이다. 이에 대해서 알아보도록 하겠다.

 

*실습용 데이터는 아래 링크를 클릭하면 다운로드할 수 있습니다.

2022.08.04 - [공지사항 및 소개] - 분석용 데이터 (update 22.12.18)

 

분석용 데이터 (update 22.12.18)

2022년 12월 18일 버전입니다. 변수는 계속하여 추가될 예정입니다. 다음 카테고리에 있는 글에서 이용된 데이터입니다. - 기술 통계 - 범주형 자료 분석 - 모평균 검정 - 상관분석 - 반복 측정 자료

medistat.tistory.com

 

시작하기 위해 라이브러리를 만들고, 파일을 불러온다.

라이브러리 만드는 방법: 2022.08.05 - [통계 프로그램 사용 방법/SAS] - [SAS] 라이브러리 만들기 - LIBNAME

파일 불러오는 방법: 2022.08.05 - [통계 프로그램 사용 방법/SAS] - [SAS] 데이터 불러오기 및 저장하기 - PROC IMPORT, PROC EXPORT

*라이브러리 지정하기;
LIBNAME hong "C:/Users/User/Documents/Tistory_blog";

*파일 불러오기;
PROC IMPORT
DATAFILE="C:\Users\user\Documents\Tistory_blog\Data.xlsx"
DBMS=EXCEL
OUT=hong.df
REPLACE;
RUN;

 

 

 

 

목표:  BMI의 영향을 배제 혹은 교정하고도 수축기 혈압은 심혈관 질환 위험과 상관 관계를 갖는가?

 

코드 - 일반적인 피어슨 상관 계수 구하기

먼저 수축기 혈압과 심혈관 질환 위험 간의 상관 계수를 구해보자. 이는 이전 포스팅에서 다룬 PROC CORR 함수를 사용하면 된다.

2023.04.10 - [상관분석/SAS] - [SAS] 피어슨 상관 계수 (Pearson's correlation coefficient) - PROC CORR

PROC CORR DATA=hong.df;
VAR SBP CVD_RISK;
RUN;

 

결과

상관 계수가 0.96792로 매우 높다. 

 

그렇다면, BMI의 영향을 배제하는 코드는 어떻게 될까?

코드 - 편상관 계수 / 부분 상관 계수

PROC CORR DATA=hong.df;
VAR SBP CVD_RISK;
PARTIAL BMI;
RUN;

PROC CORR DATA=hong.df; : 상관계수를 구하는 작업을 시작하되, 데이터는 hong라이브러리의 df를 사용하라.
VAR SBP CVD_RISK; : SBP와 CVD_RISK간의 상관계수를 구하라
PARTIAL BMI; : 
근데, BMI의 영향은 배제시킨 편상관 계수 / 부분 상관 계수를 구하라.

 

결과

BMI로 보정하면, SBP와 CVD_RISK사이의 상관 계수는 0.85242로 보정하기 전의 0.96792보다는 소폭 감소한 모양이다. BMI가 CVD_RISK를 증가시키는 설명력을 배제하였기 때문이다. 이때의 p-value는 0.0001보다 작으므로 0이 아니라는 대립 가설을 택할 수 있다. 

 

두 개 이상의 교란 변수를 보정

만약, 두 개 이상의 교란 변수를 보정하고자 한다면 보정할 변수들을 list로 만들어 넣으면 된다. BMI뿐만 아니라 흡연력인 SMOK도 보정변수로 넣고 싶다면 다음과 같은 코드를 쓰면 된다. (SMOK는 순서형 변수이므로 Pearson이 적절하지 않으므로 Spearman이나 Kendall 사이에서 골라야 하는데, 같은 값을 갖는 사람(tie)이 많으므로 Kendall의 tau를 구하도록 한다.)

PROC CORR DATA=hong.df KENDALL;
VAR SBP CVD_RISK;
PARTIAL BMI SMOK;
RUN;

 

결과

결과에 p-value가 제시되지 않는다. SAS 로그창에는 다음과 같이 언급된다: 

NOTE: 켄달의 부분 타우-b 에 대한 확률값을 이용할 수 없습니다.

이는 당연하다. SAS의 PROC CORR 다큐먼트에 의하면 다음과 같이 쓰여있다. 

 If you use a PARTIAL statement, probability values for Kendall’s partial tau-b are not available.

이에 대해 이 방법론의 개발자인 Kendall은 "p-value를 구할 수 있는 방법이 없다." 라고 언급하고 있다. (출처: Goodman, Leo A. "Partial tests for partial taus." Biometrika 46.3/4 (1959): 425-432.)

 

그런데, 같은 내용을 다룬 R에서는 p-value를 제시하고 있다. 2022.12.18 - [상관분석/R] - [R] 편상관 계수, 부분 상관 계수 (Partial correlation coefficient) - pcor.test() 그 사이 무슨 특별한 방법이라도 개발된 것일까? 당연히 그렇지 않은 것으로 보인다. R에서 제시하는 Kendall's partial tau의 p-value는 일반 Kendall's tau의 p-value와 같은 방법으로 구하고 있는 것으로 보인다. 쌍이 50개 미만이고, tie가 없다면 exact p-value를 구해주고. 그 이상이라면 정규분포를 따른다고 생각되는 통계량을 구한 뒤 그에 대한 p-value를 제시한다. 

 

얼마나 높아야 높다고 할 수 있는가?

상관계수가 "얼마나 높아야 높다고 할 수 있는가?"라는 의문이 들 수 있다. 즉, "how high is high?"라는 질문에 대한 답은 사실 정해져 있진 않다. 연구자마다 기준은 다른데, 그중 한 가지는 다음과 같다.

상관 계수의 절댓값 $ ( \vert \rho \vert )$ 해석
$0.0<\vert \rho \vert\le0.2$ Very weak
$0.2<\vert \rho \vert\le0.4$ Weak
$0.4<\vert \rho \vert\le0.6$ Moderate
$0.6<\vert \rho \vert\le0.8$ Strong
$0.8<\vert \rho \vert\le1.0$ Very strong

 

코드 정리

*라이브러리 지정하기;
LIBNAME hong "C:/Users/User/Documents/Tistory_blog";

*파일 불러오기;
PROC IMPORT
DATAFILE="C:\Users\user\Documents\Tistory_blog\Data.xlsx"
DBMS=EXCEL
OUT=hong.df
REPLACE;
RUN;

*편상관계수 구하기;
PROC CORR DATA=hong.df;
VAR SBP CVD_RISK;
PARTIAL BMI;
RUN;

*두 변수로 보정한 편상관계수(Kendall) 구하기;
PROC CORR DATA=hong.df KENDALL;
VAR SBP CVD_RISK;
PARTIAL BMI SMOK;
RUN;

 

 

 

[SAS] 편상관 계수, 부분 상관 계수 (Partial correlation coefficient) 정복 완료!

작성일: 2023.04.20.

최종 수정일: 2023.10.17.

이용 프로그램: SAS v9.4

운영체제: Windows 11

반응형
반응형

[R] 스피어만 상관 계수, 켄달의 타우 (Spearman's rank correlation coefficient, Kendall's tau) - cor.test()

 

 세상의 많은 지표들은 서로 상관되어 있는 경우가 많다. 비흡연자에 비해 흡연자가 폐암에 잘 걸리고, 부모의 키가 클수록 아이의 키도 크다. 소득 수준이 높은 나라일수록 평균 수명도 길고, 수학 점수가 높은 학생은 물리 점수가 높으며, 식당에서 음식을 많이 시킬수록 계산해야 하는 금액도 커진다.

 그런데, 세상만사 칼같이 딱딱 떨어지는 게 아니다. 폐암에 걸리지 않는 꼴초도 있는가 하면, 부모의 키는 크지만 아이의 키는 작을 수 있다. 수학만 잘하고 물리는 못 할 수도 있다. 이렇게 예외가 있는 관계가 있는가 하면, 예외가 있을 수 없는 관계도 있다. $10,000$원짜리 삼겹살을 $x$인분 시키면 계산해야 하는 금액은 반드시 $10,000x$가 되는 게 일례가 될 수 있다. 

불확실성이 존재하는 관계

 

예외가 없는 관계

 

 예외가 많은 부모와 자녀의 키 문제로 돌아가 보자. 부모의 키로 자녀의 키를 유추하면 틀리는 경우가 많이 생기게 된다. 다시 말해, 불확실성이 높아진다. 반대로 삼겹살 주문량으로 예측한 계산 금액은 틀릴 수가 없다. 우리는 얼마나 정확하게 예측할 수 있는지를 계량하고자 한다. 그 방법 중 하나로, 두 변수가 연속 변수일 때 사용하는 피어슨 상관 계수 (Pearson's correlation coefficient)가 있다. 이는 이전 포스팅에서 다루었다. 2023.04.10 - [상관분석/SAS] - [SAS] 피어슨 상관 계수 (Pearson's correlation coefficient) - PROC CORR ()

 

 하지만 세상 모든 변수가 연속형 변수는 아니다. "월 수입이 얼마입니까?"라는 설문에 주관식으로 "_____만원"으로 답했다면 이는 연속변수일 것이다. 하지만 "월 수입이 다음 중 어디에 속하십니까?"라는 설문에 대해 다음과 같은 객관식으로 답을 하게 되어있다면 이는 연속형 변수가 아닌 순위형 변수가 될 것이다.

 1) 100만 원 미만

 2) 100만 원 이상 300만 원 미만

 3) 300만 원 이상 700만 원 미만

 4) 700만 원 이상 1,500만 원 미만

 5) 1,500만 원 이상

 

 월 소득 50만원인 사람 A에게는 1이란 값이 부여될 것이고, 월 소득 1,700만 원인 사람 B에게는 5라는 값이 부여될 것이다. 부여된 1과 5의 평균을 구하는 것이 의미가 있을까? 만약 의미가 있다고 치고 구해보면 1과 5의 평균은 3이다. 따라서 평균 소득은 300만 원 이상 700만 원 미만일 것이라고 예측할 수 있는데, 사실  이 두 명의 평균 소득은 875만 원이므로 4번 구간에 속한다. 이런 차이가 발생하게 되므로, 점수 같은 연속형 변수 값 자체가 아니라 석차와 같은 순위형 변수의 상관관계를 보고 싶을 때에는 피어슨 상관 계수를 사용할 수 없다. 왜냐하면 피어슨 상관 계수는 평균, 표준편차, 공분산을 사용하기 때문이다. 대신에 스피어만 상관 계수 (Spearman's rank correlation coefficient)나 켄달의 타우 (Kendall's tau)를 사용해야 한다. 

 

스피어만 상관 계수 (Spearman's rank correlation coefficient - 주로 rho로 나타낸다.)나 켄달의 타우 (Kendall's tau)는 두 변수 사이의 상관관계의 정도를 나타내는 지표다. 이는 -1과 1 사이의 값을 갖는데 -1 혹은 1에 가까워질수록, 달리 표현하면 상관 계수의 절댓값이 커질수록, 즉 0에서 멀어질수록 "예측할 수 있는 정도"가 높아진다. 1에 가까워지는 것은 양의 상관관계인데 "예측도"가 증가하는 것을 의미하고, -1에 가까워지는 것은 음의 상관관계인데 "예측도"가 증가하는 것을 의미한다. 

 

*실습용 데이터는 아래 링크를 클릭하면 다운로드할 수 있습니다.

2022.08.04 - [공지사항 및 소개] - 분석용 데이터 (update 22.12.18)

 

분석용 데이터 (update 22.12.18)

2022년 12월 18일 버전입니다. 변수는 계속하여 추가될 예정입니다. 다음 카테고리에 있는 글에서 이용된 데이터입니다. - 기술 통계 - 범주형 자료 분석 - 모평균 검정 - 상관분석 - 반복 측정 자료

medistat.tistory.com

 

시작하기 위해 라이브러리를 만들고, 파일을 불러온다.

라이브러리 만드는 방법: 2022.08.05 - [통계 프로그램 사용 방법/SAS] - [SAS] 라이브러리 만들기 - LIBNAME

파일 불러오는 방법: 2022.08.05 - [통계 프로그램 사용 방법/SAS] - [SAS] 데이터 불러오기 및 저장하기 - PROC IMPORT, PROC EXPORT

*라이브러리 지정하기;
LIBNAME hong "C:/Users/User/Documents/Tistory_blog";

*파일 불러오기;
PROC IMPORT
DATAFILE="C:\Users\user\Documents\Tistory_blog\Data.xlsx"
DBMS=EXCEL
OUT=hong.df
REPLACE;
RUN;

 

 

 

목표:  월 수입(순위형 변수)과 거주 지역 단위에는 관계가 있는가?

월 수입 :INC_CAT

0: 하위 3분위

1: 중앙 3분위

2: 상위 3분위

 

거주 지역 단위: RESID

0: 대도시

1: 중소도시

2: 시골

 

스피어만 상관 계수와 켄달의 타우를 구하는 코드는 다음과 같다.

 

코드

PROC CORR DATA=hong.df SPEARMAN KENDALL;
VAR RESID INC_CAT;
RUN;

PROC CORR DATA=hong.df SPEARMAN KENDALL; 상관분석(CORRelation)을 할 것이다. 데이터는 hong 라이브러리의 df 데이터를 사용해라. 구할 지표는 Spearman's rank correlation coefficient와 Kendall의 tau다.
VAR RESID INC_CAT; RESID와 INC_CAT 간의 상관계수를 구하

결과

 

-중요한 것은 상관계수 -0.90115-0.87119이다. -1에 가까울수록 음의 상관관계가 존재함을 나타내는데, 이 정도면 꽤 높은 음의 상관관계가 있다고 할 수 있다.

- 따라서 대도시에 사는 사람일수록 수입이 많다고 할 수 있다.

- p value는 <0.0001로 상당히 작아 매우 유의함을 알 수 있다. 따라서 귀무가설을 기각하고 대립 가설을 택해야 하는데, 이 검정의 귀무가설은 "상관 계수는 0"이라는 것이다. 따라서 상관 계수가 0은 아니라고 결론 내릴 수 있다.

 

얼마나 높아야 높다고 할 수 있는가?

위에서 0.79 정도면 꽤 높은 상관관계가 있다고 할 수 있다고 했는데, "얼마나 높은 것이 높은 것인가?"라는 의문이 들 수 있다. 즉, "how high is high?"라는 질문에 대한 답은 사실 정해져 있진 않다. 연구자마다 기준은 다른데, 그중 한 가지는 다음과 같다.

스피어만 상관 계수/켄달의 타우의 절댓값 $ ( \vert \rho \vert )$ 해석
$0.0<\vert \rho \vert\le0.2$ Very weak
$0.2<\vert \rho \vert\le0.4$ Weak
$0.4<\vert \rho \vert\le0.6$ Moderate
$0.6<\vert \rho \vert\le0.8$ Strong
$0.8<\vert \rho \vert\le1.0$ Very strong

 

둘 중 하나만 순위형 변수인 경우

 

만약 둘 중 하나만 순위형 변수고 다른 하나는 연속형 변수인 경우 어떻게 해야 할까? 예를 들어, 거주 지역 단위와 대기 중 미세먼지의 양 사이의 상관관계를 구하고자 할 때에도 스피어만 상관 계수 (Spearman's rank correlation coefficient)나 켄달의 타우 (Kendall's tau)를 사용해야 한다. 

 

 

스피어만 상관 계수 vs 켄달의 타우

둘 중에 어떤 것을 사용해야 할까?

스피어만 상관 계수는 tie가 없다고 가정한다. 즉, 같은 순위를 갖는 사람이 없는 것이다. 위 예시의 경우 대도시, 중소도시, 시골에 사는 사람이 1명씩은 아니니 스피어만 상관 계수는 적절하지 않다. 이럴 때에는 켄달의 타우가 더 적절하다. 또한, 표본의 수가 적을 때에도 켄달의 타우가 조금 더 적절하다.

 

[SAS] 스피어만 상관 계수, 켄달의 타우 (Spearman's rank correlation coefficient, Kendall's tau) 정복 완료!

 

작성일: 2023.04.10.

최종 수정일: 2023.10.17.

이용 프로그램: SAS v9.4

운영체제: Windows 11

반응형

+ Recent posts