이번 편에서는 설문 척도를 다룹니다. 설문지를 만들면 “만족도”처럼 하나의 개념을 여러 문항으로 나누어 묻는 경우가 많습니다. 그렇게 모은 문항을 합쳐서 점수 하나로 쓰려면, 먼저 그 문항들이 정말 같은 것을 재고 있는지 확인해야 합니다. 이때 쓰는 것이 신뢰도 분석(Cronbach α)과 요인분석입니다.
그 다음에는 정규분포를 가정하지 않는 비모수 검정 세 가지를 돌려 봅니다. 4편에서 t-검정으로 물었던 질문을, 이번에는 값 대신 순위로 다시 묻는 셈입니다.
한 가지 미리 알려 드리면, 이 시리즈에서 PSPP와 SPSS의 값이 처음으로 어긋나는 곳이 바로 이번 편입니다. 얼마나, 왜 어긋나는지도 함께 살펴보겠습니다.
데이터
이번에도 data/training_survey.sav를 씁니다. 이 중 q1~q5는 만족도 5문항인데, 예제 데이터를 만들 때 공통 요인 하나에 노이즈를 더해서 만들었습니다. 다섯 문항이 같은 “만족도”를 재도록 설계했다는 뜻입니다.
따라서 제대로 계산됐다면 α는 .7~.8 정도가 나와야 하고, 요인분석에서는 첫 번째 요인 하나가 전체 분산의 절반 이상을 설명해야 합니다. 이렇게 기대값을 미리 알고 돌리면, 결과가 이상할 때 바로 알아챌 수 있습니다.
비모수 검정은 4편의 t-검정과 같은 변수(향상분 gain, 사전·사후 점수)를 씁니다. 결론이 t-검정과 같게 나오는지 비교해 보시면 좋습니다.
메뉴로 하기
세 절차는 모두 Analyze 메뉴 아래에 있습니다. Analyze > Reliability, Analyze > Factor Analysis, Analyze > Non-Parametric Statistics입니다. SPSS를 써 보셨다면 이름만 보고도 찾으실 수 있을 것입니다.
신뢰도 대화상자에서는 q1~q5 다섯 문항을 오른쪽 칸으로 옮기고, Model을 Alpha로 두면 됩니다. Alpha가 바로 Cronbach α를 계산하는 방식입니다.

요인분석 대화상자에서도 먼저 다섯 문항을 옮깁니다. 그 다음 Extraction 버튼을 눌러 추출 방법을 주성분(Principal Components)으로 고르고, 요인 개수는 고유값 기준(고유값 1 이상)으로 둡니다. Rotation 버튼에서는 Varimax 회전을 고릅니다. 회전은 요인이 여러 개일 때 각 문항이 어느 요인에 속하는지 더 뚜렷하게 보이도록 축을 돌려 주는 과정입니다.

신택스로 하기
신택스 파일은 syntax/08_reliability_factor.sps와 syntax/09_nonparametric.sps입니다. 메뉴에서 고른 옵션이 신택스에서는 슬래시(/)로 시작하는 하위 명령 하나하나에 대응한다고 보시면 됩니다.
* 신뢰도 분석: 만족도 5문항의 Cronbach alpha를 구합니다.
* SCALE은 척도 이름을 붙이는 부분이고 ALL은 위 문항 전체를 쓴다는 뜻입니다.
* SUMMARY=TOTAL은 문항을 하나씩 뺐을 때의 alpha 표를 추가로 냅니다.
RELIABILITY
/VARIABLES=q1 q2 q3 q4 q5
/SCALE('만족도') ALL
/MODEL=ALPHA
/SUMMARY=TOTAL.
* 요인분석: 주성분 추출(PC), 고유값 1 이상인 성분만 남기고(MINEIGEN), Varimax 회전.
* PRINT는 초기값, 추출 결과, 회전 결과를 모두 출력하라는 뜻입니다.
FACTOR
/VARIABLES q1 q2 q3 q4 q5
/PRINT INITIAL EXTRACTION ROTATION
/CRITERIA MINEIGEN(1)
/EXTRACTION PC
/ROTATION VARIMAX.
비모수 검정은 한 줄씩이면 충분합니다. 각각 어떤 모수 검정에 대응하는지 주석으로 적어 두었습니다.
* Mann-Whitney: 독립표본 t-검정의 비모수판. 대조군(1)과 실험군(2)의 향상분 비교.
NPAR TESTS /M-W=gain BY group(1 2).
* Kruskal-Wallis: 일원분산분석의 비모수판. 부서 1~3의 만족도 평균 비교.
NPAR TESTS /K-W=sat_mean BY dept(1 3).
* Wilcoxon 부호순위: 대응표본 t-검정의 비모수판. 교육 전후 점수 비교.
NPAR TESTS /WILCOXON=pre_score WITH post_score (PAIRED).
출력 읽기
먼저 신뢰도입니다. Cronbach α는 .79로, 데이터를 만들 때 기대한 .7~.8 범위에 들어옵니다. 보통 .7 이상이면 문항들을 합쳐 하나의 척도로 써도 된다고 봅니다.
Reliability Statistics
+----------------+----------+
|Cronbach's Alpha|N of Items|
+----------------+----------+
| .79| 5|
+----------------+----------+
이 표에서 볼 곳은 왼쪽 칸의 .79 하나입니다. 오른쪽 N of Items는 계산에 들어간 문항 수(5)이니, 의도한 문항이 모두 들어갔는지 확인하는 용도로 보시면 됩니다.
/SUMMARY=TOTAL을 넣었기 때문에 문항-총점 통계 표(Item-Total Statistics)도 함께 나옵니다. 이 표의 맨 오른쪽 열 “Cronbach’s Alpha if Item Deleted”는 그 문항을 뺐을 때의 α입니다. 다섯 문항 모두 .74~.77로 전체 α .79보다 낮습니다. 즉 어느 문항을 빼도 α가 오르지 않으므로, 다섯 문항을 그대로 쓰면 됩니다. 만약 어떤 문항을 뺐을 때 α가 오히려 오른다면, 그 문항은 다른 것을 재고 있을 가능성이 있으니 다시 살펴봐야 합니다.
다음은 요인분석입니다. 설명된 총분산 표(Total Variance Explained)에서 고유값이 1 이상인 성분은 첫 번째 하나뿐입니다. 첫 성분의 고유값은 2.73이고, 전체 분산의 54.6%를 설명합니다. 문항이 다섯 개이니 분산의 절반 이상을 성분 하나가 설명한다는 뜻이고, 이것도 기대한 결과입니다.
|1| 2.73| 54.6%| 54.6%| 2.73| 54.6%| 54.6%| 2.73| 54.6%| 54.6%|
위 줄은 표에서 첫 번째 성분의 행만 옮긴 것입니다. 같은 값이 세 번 반복되는데, 왼쪽부터 초기 고유값, 추출 후 값, 회전 후 값입니다. 각 묶음은 “고유값 / 설명 % / 누적 %” 순서입니다. 두 번째 성분부터는 고유값이 1보다 작아서(.70 이하) 추출되지 않았습니다.
다음은 성분 행렬(Component Matrix)입니다. 각 문항이 첫 성분과 얼마나 강하게 관련되는지를 보여 주는 적재량입니다.
|만족도1: 강의 내용이 업무에 도움이 되었다| .77|
|만족도2: 강사의 설명이 명확했다 | .75|
|만족도3: 교육 자료가 유용했다 | .69|
|만족도4: 교육 시간이 적절했다 | .73|
|만족도5: 동료에게 추천하고 싶다 | .76|
적재량은 .69~.77로 고르게 높습니다. 다섯 문항이 모두 같은 성분에 잘 묶인다는 뜻입니다. 참고로 성분이 하나뿐이라 회전할 대상이 없으므로, 회전된 성분 행렬은 위 표와 똑같이 나옵니다. 회전 결과가 달라지지 않았다고 해서 오류가 난 것은 아닙니다.
이제 비모수 검정입니다. 세 검정의 결론을 정리하면 다음과 같습니다.
- Mann-Whitney: 실험군과 대조군의 향상분이 다릅니다(Z=-7.71, p<.001). 4편의 독립표본 t-검정과 같은 결론입니다.
- Kruskal-Wallis: 부서별 만족도에는 차이가 없습니다(H=1.68, p=.431).
- Wilcoxon 부호순위: 교육 전과 후의 점수가 다릅니다(Z=-7.95, p<.001).
Mann-Whitney의 검정 통계량 표는 이렇게 나옵니다.
Test Statistics
+----------------------+--------------+----------+-----+----------------------+
| |Mann-Whitney U|Wilcoxon W| Z |Asymp. Sig. (2-tailed)|
+----------------------+--------------+----------+-----+----------------------+
|점수 향상분(사후-사전)| 1832.50| 6297.50|-7.71| .000|
+----------------------+--------------+----------+-----+----------------------+
결론을 내릴 때 보는 것은 오른쪽 두 칸, Z와 유의확률(Asymp. Sig.)입니다. .000은 p가 .001보다 작다는 뜻으로 읽으시면 됩니다. 왼쪽의 U와 W는 순위합에서 계산한 원래 통계량인데, 바로 이 두 값이 다음 절에서 SPSS와 어긋나는 부분입니다.
Kruskal-Wallis의 H는 PSPP 출력에서 “Chi-Square”라는 이름으로 나옵니다. H 통계량을 카이제곱 분포에 근사해서 유의확률을 구하기 때문에 이렇게 표기합니다.
SPSS와 대조
같은 신택스를 SPSS 32에서 돌린 결과와 나란히 놓아 보았습니다.
| 항목 | PSPP 2.1.1 | SPSS 32 | 판정 |
|---|---|---|---|
| Cronbach α | .79 | .792 | 일치 |
| 요인 1 고유값 / 설명 % | 2.73 / 54.6% | 2.729 / 54.589% | 일치 |
| 적재량 q1~q5 | .77 / .75 / .69 / .73 / .76 | .770 / .746 / .687 / .725 / .763 | 일치 |
| Mann-Whitney U | 1832.50 | 1831.000 | 차이 1.5 |
| Wilcoxon W | 6297.50 | 6296.000 | 차이 1.5 |
| Mann-Whitney Z / p | -7.71 / .000 | -7.713 / <.001 | 일치 |
| Kruskal-Wallis H / df / p | 1.68 / 2 / .431 | 1.683 / 2 / .431 | 일치 |
| Wilcoxon 부호순위 Z / p | -7.95 / .000 | -7.952 / <.001 | 일치 |
신뢰도와 요인분석은 PSPP가 인쇄하는 소수 자리까지 모두 같습니다. SPSS가 소수 자리를 더 많이 보여 줄 뿐입니다.
시리즈에서 처음으로 값이 어긋나는 곳은 Mann-Whitney의 순위합입니다. U, W, 그리고 집단별 순위합이 모두 1.5씩 차이가 납니다. 동점(tie)인 케이스에 중간순위를 나눠 주는 방식이 두 프로그램에서 조금 다른 것으로 보입니다.
다행히 검정통계량 Z와 p는 같으므로, 유의한지 아닌지라는 결론은 달라지지 않습니다. 보고서나 논문에 순위합 자체를 적는 경우에만 어느 프로그램의 값인지 밝혀 두시면 됩니다.
함정과 메모
- Wilcoxon 차이의 방향 표기가 반대입니다. 같은
WILCOXON=pre_score WITH post_score를 돌려도, PSPP는 “교육 전 − 교육 후”로 표기하고 SPSS는 “교육 후 − 교육 전”으로 표기합니다. 그래서 음의 순위와 양의 순위 개수(148 대 50)가 두 프로그램에서 서로 반대 칸에 들어갑니다. Z의 절댓값과 p는 같으니 결론은 같습니다. 다만 양쪽 출력을 나란히 놓고 읽을 때는 부호를 뒤집어서 보셔야 합니다. 대응 검정에서는 항상 표 머리글에 적힌 빼기 순서를 먼저 확인하는 습관을 들이시길 권합니다. - 요인분석에서 적재량의 부호는 알고리즘에 따라 반대로 나올 수 있습니다. 모든 문항의 부호가 한꺼번에 뒤집힌 것이라면 해석은 같으니 절댓값으로 비교하시면 됩니다. 이번 데이터는 성분이 하나뿐이라 그런 문제가 생기지 않았습니다.
- PSPP의 FACTOR는 추출 방법으로 주성분(PC)과 주축요인(PAF)을, 회전 방법으로 Varimax와 Promax를 지원합니다.
다음 편
7편에서는 케이스 선택, 가중, 분할, 집계 같은 데이터 관리 명령과 매크로를 다룹니다. 이 과정에서 PSPP에만 있는 함정이 하나 나오는데, 오류 없이 틀린 값이 나오는 종류라 꼭 알아 두시면 좋겠습니다.
시리즈 목차: 0편 총론 · 1편 · 2편 · 3편 · 4편 · 5편 · 6편 신뢰도·요인·비모수 · 7편 · 8편 · 9편