PSPP 강의 5편 — 상관, 회귀, 로지스틱

4편에서는 집단 사이의 평균 차이를 봤습니다. 이번 편에서는 변수와 변수 사이의 관계를 봅니다. 다룰 분석은 세 가지입니다.

  • 상관분석: 두 변수가 함께 움직이는지(나이가 많을수록 연봉도 높은지 등)를 -1에서 1 사이의 숫자로 봅니다.
  • 다중회귀: 연봉을 나이, 학력, 부서로 설명합니다. 상관이 “관계가 있다”까지라면, 회귀는 “다른 조건이 같을 때 나이가 한 살 많으면 연봉이 얼마나 오르는가”처럼 크기를 알려 줍니다.
  • 로지스틱 회귀: 결과가 ‘예/아니오’처럼 두 가지일 때 쓰는 회귀입니다. 여기서는 재수강 의향을 만족도, 향상분, 집단으로 예측합니다.

데이터

이번에도 data/training_survey.sav를 씁니다. 연봉은 나이, 학력, 개발부서 여부로 계산되도록 만들었기 때문에, 이 세 변수로 회귀를 돌리면 R²가 .6~.7 근처로 나와야 정상입니다. R²는 연봉의 흩어짐 가운데 모형이 설명하는 비율이라서, .67이면 약 3분의 2를 설명한다는 뜻입니다. 재수강 의향은 만족도와 향상분이 높을수록 ‘예’가 나오기 쉽도록 만들었습니다.

메뉴로 하기

상관분석은 Analyze > Bivariate Correlation, 선형회귀는 Analyze > Regression > Linear, 로지스틱 회귀는 Analyze > Regression > Binary Logistic에 있습니다. ‘Binary’는 결과가 두 가지(이항)라는 뜻입니다.

상관 대화상자에 변수를 여러 개 넣으면 모든 쌍의 상관을 한 번에 계산해 행렬로 보여 줍니다. 변수 다섯 개를 넣으면 5×5 표가 나옵니다.

PSPPIRE Bivariate Correlations 대화상자

선형회귀 대화상자에는 설명하려는 종속변수 하나와, 설명에 쓰는 독립변수 여러 개를 넣습니다. Statistics 버튼에서 계수(Coefficients), R, 분산분석표(ANOVA)를 고릅니다. 계수표에서 각 변수의 영향 크기를, R에서 모형 전체의 설명력을, 분산분석표에서 모형 전체가 유의한지를 봅니다.

PSPPIRE Linear Regression 대화상자

신택스로 하기

신택스 파일은 syntax/06_correlation_regression.sps와 syntax/07_logistic.sps입니다.

회귀에 부서를 넣으려면 한 가지 준비가 필요합니다. 부서(dept)는 1=영업, 2=개발, 3=관리처럼 번호로 되어 있지만, 이 번호는 크기가 아니라 이름표일 뿐입니다. 그대로 회귀에 넣으면 “부서 번호가 1 커질 때마다 연봉이 얼마 오른다”는 엉뚱한 해석이 됩니다. 그래서 “개발부서인가 아닌가”를 0과 1로 표시한 더미 변수를 새로 만듭니다. (dept = 2)라는 식은 참이면 1, 거짓이면 0이 되는 SPSS 식 그대로이고, PSPP에서도 똑같이 동작합니다.

* 상관행렬.
* VARIABLES 에 나열한 변수끼리 모든 쌍의 Pearson 상관을 구합니다.
* PRINT=TWOTAIL SIG 는 양측 검정 유의확률을 함께 인쇄하라는 뜻입니다.
CORRELATIONS
  /VARIABLES=age edu salary sat_mean gain
  /PRINT=TWOTAIL SIG.

* 부서 더미(개발 여부) 생성 후 급여 회귀.
* dept 가 2(개발)이면 dev=1, 아니면 dev=0 이 됩니다.
COMPUTE dev = (dept = 2).
VARIABLE LABELS dev '개발부서 여부'.

* STATISTICS 로 계수표, 모형 요약(R), 분산분석표를 요청합니다.
* DEPENDENT 에 종속변수를 적습니다.
* METHOD=ENTER 는 나열한 독립변수를 한꺼번에 모두 넣는 방식입니다.
REGRESSION
  /STATISTICS COEFF R ANOVA
  /DEPENDENT salary
  /METHOD=ENTER age edu dev.

로지스틱 회귀는 VARIABLES 뒤에 결과 변수를, WITH 뒤에 예측 변수를 씁니다.

* 재수강 의향(reenroll: 0=아니오, 1=예)을 만족도, 향상분, 집단으로 예측합니다.
* PRINT=SUMMARY 는 요약 수준의 출력을 요청합니다.
LOGISTIC REGRESSION VARIABLES reenroll
  WITH sat_mean gain group
  /PRINT=SUMMARY.

출력 읽기

먼저 상관행렬의 일부입니다.

|나이                 Pearson           |1.000|    -.017|     .544|       .017|               -.011|
|                     Sig. (2-tailed)   |     |     .816|     .000|       .810|                .882|
|최종 학력            Pearson           |-.017|    1.000|     .476|       .046|               -.002|
|연봉(만원)           Pearson           | .544|     .476|    1.000|      -.028|                .012|

행과 열이 만나는 칸이 두 변수의 상관계수입니다. 열 순서는 신택스에 적은 순서(나이, 학력, 연봉, 만족도 평균, 향상분)와 같습니다. 대각선의 1.000은 변수 자기 자신과의 상관이라 볼 필요가 없습니다. Pearson 줄에서 계수를, 그 아래 Sig. (2-tailed) 줄에서 유의확률을 읽습니다.

나이와 연봉은 r=.544, 학력과 연봉은 r=.476으로, 둘 다 나이가 많을수록, 학력이 높을수록 연봉이 높은 양의 관계입니다. 나이와 학력의 상관은 -.017로 사실상 관계가 없습니다. 이 점이 뒤의 회귀에서 중요합니다. 독립변수끼리 서로 얽혀 있지 않으면 각 변수의 영향을 깔끔하게 나눠 볼 수 있기 때문입니다. 만족도와 향상분은 어느 변수와도 상관이 거의 없는데, 처음부터 그렇게 설계했습니다.

다음은 회귀의 모형 요약입니다.

                 Model Summary (연봉(만원))
+---+--------+-----------------+--------------------------+
| R |R Square|Adjusted R Square|Std. Error of the Estimate|
+---+--------+-----------------+--------------------------+
|.82|     .67|              .66|                    332.84|
+---+--------+-----------------+--------------------------+

R Square 열의 .67이 앞에서 말한 설명력입니다. 나이, 학력, 개발부서 여부 세 가지로 연봉 차이의 약 67%를 설명한다는 뜻입니다. Adjusted R Square(.66)는 변수 개수를 감안해 조금 깎은 값이고, 변수를 많이 넣은 모형끼리 비교할 때 씁니다. 마지막 열 Std. Error of the Estimate(332.84)는 모형의 예측이 실제 연봉에서 대략 얼마나 벗어나는지를 연봉 단위(만원)로 보여 줍니다.

이어서 계수표입니다.

|(Constant)   |     1136.76|         140.15|                      .00| 8.11|.000|
|나이         |       44.22|           3.23|                      .56|13.68|.000|
|최종 학력    |      316.58|          30.87|                      .43|10.25|.000|
|개발부서 여부|      434.65|          48.38|                      .37| 8.98|.000|

열은 왼쪽부터 비표준화 계수 B, 그 표준오차, 표준화 계수 Beta(β), t, 유의확률입니다. 세 독립변수 모두 마지막 열이 .000이므로 p<.001로 유의합니다.

B 열은 원래 단위로 읽는 값입니다. “다른 변수가 같을 때 나이가 한 살 많으면 연봉이 44만원, 학력이 한 단계 높으면 317만원, 개발부서면 435만원 더 높다”로 해석합니다. 데이터를 그렇게 만들었으니 당연한 결과이긴 하지만, 회귀가 설계해 둔 값을 되찾아 냈다는 점을 확인할 수 있습니다.

Beta 열은 단위를 없앤 값이라 변수끼리 영향력을 비교할 때 씁니다. 나이(.56), 학력(.43), 개발부서(.37) 순입니다. B만 보면 학력(316.58)이 나이(44.22)보다 훨씬 커 보이지만, 나이는 수십 살 범위로 움직이고 학력은 네 단계뿐이라 단위가 다릅니다. 그래서 “어느 변수가 더 중요한가”는 Beta로 비교합니다.

마지막으로 로지스틱 회귀의 계수표입니다.

                   Variables in the Equation
+-----------------------------+-----+----+-----+--+----+------+
|                             |  B  |S.E.| Wald|df|Sig.|Exp(B)|
+-----------------------------+-----+----+-----+--+----+------+
|Step 1 만족도 평균           |  .56| .20| 7.86| 1|.005|  1.74|
|       점수 향상분(사후-사전)|  .08| .03| 9.29| 1|.002|  1.09|
|       실험 집단             |  .39| .35| 1.22| 1|.269|  1.48|
|       Constant              |-3.00| .80|13.95| 1|.000|   .05|
+-----------------------------+-----+----+-----+--+----+------+

로지스틱 회귀에서는 B보다 마지막 열 Exp(B)를 읽는 편이 쉽습니다. Exp(B)는 오즈비라고 부르며, 그 변수가 1 늘 때 ‘예’가 나올 오즈(예가 나올 가능성 대비 아니오가 나올 가능성)가 몇 배가 되는지를 뜻합니다. 1보다 크면 ‘예’ 쪽으로, 1보다 작으면 ‘아니오’ 쪽으로 기웁니다.

만족도는 Exp(B)=1.74, p=.005로 유의합니다. 만족도 평균이 1점 높으면 재수강 의향 오즈가 약 1.74배가 됩니다. 향상분도 Exp(B)=1.09, p=.002로 유의합니다. 점수가 1점 더 오를 때마다 오즈가 약 1.09배씩 커집니다. 반면 집단(실험군 여부)은 p=.269로 유의하지 않습니다. 향상분을 이미 모형에 넣어 두었기 때문에, 그 효과를 빼고 나면 집단 자체가 따로 더 설명하는 부분은 뚜렷하지 않다는 뜻입니다.

같은 출력의 분류표(Classification Table)에서는 모형이 200명 중 몇 명의 재수강 의향을 맞혔는지 보여 줍니다. 전체 정확도는 68.0%입니다.

SPSS와 대조

같은 신택스를 SPSS 32에서 돌린 값입니다.

항목 PSPP 2.1.1 SPSS 32
r 나이–연봉 / 학력–연봉 .544 / .476 .544 / .476
R / R² / 수정 R² .82 / .67 / .66 .817 / .668 / .663
추정값의 표준오차 332.84 332.838
B 상수 / 나이 / 학력 / 개발 1136.76 / 44.22 / 316.58 / 434.65 1136.765 / 44.219 / 316.578 / 434.653
β 나이 / 학력 / 개발 .56 / .43 / .37 .563 / .427 / .374
로지스틱 B 만족도 / 향상분 / 집단 .56 / .08 / .39 .556 / .083 / .390
로지스틱 Exp(B) 1.74 / 1.09 / 1.48 1.743 / 1.086 / 1.477
로지스틱 p .005 / .002 / .269 .005 / .002 / .269
분류 정확도 68.0% 68.0%

전부 같습니다. SPSS가 소수 자리를 한두 자리 더 보여 줄 뿐, PSPP가 인쇄하는 자리까지는 일치합니다.

한 가지 더 확인해 본 것이 있습니다. SPSS에서 같은 로지스틱 모형을 GENLIN(일반화 선형모형)으로 다시 돌려도 계수가 완전히 같았습니다. GENLIN은 PSPP에 없는 명령이지만, 이항 로지스틱이라면 LOGISTIC REGRESSION으로 같은 답을 얻을 수 있습니다. 교재나 논문에서 GENLIN으로 로지스틱 회귀를 한 신택스를 보시더라도, PSPP에서는 LOGISTIC REGRESSION으로 바꿔 돌리면 됩니다.

함정과 메모

  • 상관행렬에서 PSPP는 소수 셋째 자리(.544)까지 인쇄합니다. 다른 표는 대부분 둘째 자리까지라서, 같은 PSPP 출력 안에서도 자릿수가 다를 수 있다는 점을 알아 두시면 좋습니다.
  • REGRESSION의 단계선택(STEPWISE)은 PSPP에서 지원이 제한적입니다. 이 시리즈에서는 변수를 한꺼번에 넣는 ENTER만 썼습니다.
  • 편상관(PARTIAL CORR)은 PSPP에 없습니다. 회귀 잔차를 이용해 우회하는 방법을 8편에서 다룹니다.

다음 편

6편에서는 만족도 5문항이 하나의 척도로 묶일 만큼 일관된지(신뢰도), 어떤 구조로 묶이는지(요인분석)를 확인합니다. 그리고 비모수 검정에서 PSPP와 SPSS의 값이 처음으로 어긋나는 지점을 살펴봅니다.


시리즈 목차: 0편 총론 · 1편 · 2편 · 3편 · 4편 · 5편 상관·회귀·로지스틱 · 6편 · 7편 · 8편 · 9편