반응형

[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

반응형

+ Recent posts