이번 편에서는 분석의 첫 단계를 다룹니다. 빈도표, 기술통계량, 상자그림을 뽑아 데이터가 어떻게 생겼는지 살펴보고, 교차표와 카이제곱 검정으로 두 범주형 변수의 관계를 확인합니다. 이 편의 질문은 “교육을 받은 실험군이 대조군보다 재수강 의향이 높은가”입니다.
본격적인 검정에 들어가기 전에 기술통계부터 보는 이유가 있습니다. 코딩 실수로 범위를 벗어난 값이 섞여 있지는 않은지, 집단 크기가 한쪽으로 치우치지는 않았는지, 분포가 심하게 비뚤어지지는 않았는지를 여기서 먼저 걸러 내야 뒤의 t-검정이나 회귀 결과를 믿을 수 있습니다.
데이터
2편에서 만든 data/training_survey.sav를 엽니다. 변수 성격에 따라 보는 방법이 다릅니다.
- 범주형 변수(gender, dept, edu, group, reenroll)는 평균을 내는 것이 의미가 없으니 빈도표로 봅니다. 각 범주에 몇 명씩 있는지가 궁금한 것입니다.
- 연속형 변수(age, pre_score, post_score, gain, sat_mean, salary)는 평균, 표준편차, 최솟값·최댓값 같은 기술통계량으로 봅니다.
- 교차표는 group × reenroll입니다. 집단(대조군/실험군)과 재수강 의향(아니오/예)을 가로세로로 교차시킵니다.
신택스로 할 때는 먼저 이 한 줄로 파일을 엽니다.
* 2편에서 저장한 .sav 파일을 연다. 경로는 프로젝트 루트 기준.
GET FILE='data/training_survey.sav'.
메뉴로 하기
Analyze > Descriptive Statistics 아래에 Frequencies, Descriptives, Explore, Crosstabs가 있습니다. SPSS와 이름도 같고 자리도 같습니다.
Frequencies 대화상자에서는 왼쪽 변수 목록에서 원하는 변수를 골라 오른쪽으로 옮기고 OK를 누르면 끝입니다. Statistics 버튼을 누르면 평균이나 중앙값 같은 통계량을 추가할 수 있습니다.

Crosstabs 대화상자에는 행(Rows) 변수와 열(Columns) 변수를 각각 넣습니다. 여기서는 행에 group, 열에 reenroll을 넣습니다. 그리고 Statistics 버튼에서 Chi-square를 켭니다. Cells 버튼에서는 표의 각 칸에 무엇을 표시할지 고를 수 있는데, 관측빈도 외에 기대빈도(Expected)와 행 퍼센트(Row)를 켜 두면 결과를 해석하기 편합니다.

대화상자 아래쪽에 Paste 버튼이 있습니다. 누르면 지금 대화상자에서 고른 설정이 신택스로 바뀌어 신택스 편집기에 붙습니다. SPSS의 붙여넣기 버튼과 같은 기능입니다. 메뉴로 한 번 해 보고 Paste로 신택스를 얻어 두는 것이 신택스를 배우는 가장 빠른 길입니다. 문법을 외우지 않아도 되고, 다음에는 숫자나 변수 이름만 바꿔서 다시 돌리면 됩니다.
신택스로 하기
syntax/02_descriptives.sps와 syntax/03_crosstabs.sps에 들어 있는 명령입니다. 각 명령 앞에 설명 주석을 붙였습니다.
* 빈도표. 범주형 변수 다섯 개의 범주별 인원과 비율을 낸다.
* STATISTICS=NONE 은 평균 같은 통계량 없이 빈도표만 내라는 뜻.
FREQUENCIES VARIABLES=gender dept edu group reenroll
/STATISTICS=NONE.
* 기술통계량. 연속형 변수 여섯 개의 평균, 표준편차, 최솟값, 최댓값, 왜도, 첨도.
DESCRIPTIVES VARIABLES=age pre_score post_score gain sat_mean salary
/STATISTICS=MEAN STDDEV MIN MAX SKEWNESS KURTOSIS.
* 탐색. 점수 향상분을 집단별로 나누어 기술통계와 상자그림을 낸다.
* 메뉴의 Analyze > Descriptive Statistics > Explore 에 해당한다.
EXAMINE VARIABLES=gain BY group
/PLOT=BOXPLOT
/STATISTICS=DESCRIPTIVES.
EXAMINE의 BY group이 핵심입니다. BY 뒤에 범주형 변수를 적으면 그 범주별로 따로 계산해 줍니다. 여기서는 대조군과 실험군의 향상분을 나란히 비교할 수 있게 됩니다.
* 교차표. TABLES 에 '행 변수 BY 열 변수' 순서로 적는다.
* CELLS: 칸마다 관측빈도(COUNT), 행 퍼센트(ROW), 기대빈도(EXPECTED)를 표시.
* STATISTICS: 카이제곱 검정(CHISQ)과 파이·Cramer's V(PHI).
CROSSTABS
/TABLES=group BY reenroll
/CELLS=COUNT ROW EXPECTED
/STATISTICS=CHISQ PHI.
행 퍼센트(ROW)를 고른 데는 이유가 있습니다. 대조군은 94명, 실험군은 106명으로 인원이 다르기 때문에 “예”라고 답한 사람 수를 그대로 비교하면 공정하지 않습니다. 각 집단 안에서 몇 퍼센트가 “예”라고 했는지를 봐야 합니다.
출력 읽기
빈도표는 SPSS와 모양이 같습니다. 값 레이블을 붙여 두었기 때문에 1, 2 같은 숫자 대신 ‘남성’, ‘여성’이 찍힙니다.
성별
+----------+---------+-------+-------------+------------------+
| |Frequency|Percent|Valid Percent|Cumulative Percent|
+----------+---------+-------+-------------+------------------+
|Valid 남성| 99| 49.5%| 49.5%| 49.5%|
| 여성| 101| 50.5%| 50.5%| 100.0%|
+----------+---------+-------+-------------+------------------+
|Total | 200| 100.0%| | |
+----------+---------+-------+-------------+------------------+
열 네 개의 뜻은 이렇습니다. Frequency는 인원수, Percent는 전체 대비 비율, Valid Percent는 결측값을 뺀 유효 응답 대비 비율, Cumulative Percent는 위에서부터 누적한 비율입니다. 이 데이터에는 결측값이 없어서 Percent와 Valid Percent가 같습니다. 설문 데이터에서 무응답이 있다면 이 두 열이 달라지니, 보고할 때는 보통 Valid Percent를 씁니다.
다음은 기술통계량 표입니다.
Descriptive Statistics
+----------------------+---+-------+-------+--------+---------+--------+---------+-------+-------+
| | N | Mean |Std Dev|Kurtosis|S.E. Kurt|Skewness|S.E. Skew|Minimum|Maximum|
+----------------------+---+-------+-------+--------+---------+--------+---------+-------+-------+
|나이 |200| 35.49| 7.30| -.54| .34| .08| .17| 22| 51|
|교육 전 평가 점수 |200| 60.30| 10.02| .38| .34| -.13| .17| 31.4| 92.5|
|교육 후 평가 점수 |200| 65.02| 12.27| .04| .34| -.12| .17| 30.0| 99.6|
|점수 향상분(사후-사전)|200| 4.72| 7.03| -.45| .34| -.16| .17| -11.4| 19.5|
|만족도 평균 |200| 3.06| .82| -.31| .34| -.18| .17| 1.00| 5.00|
|연봉(만원) |200|3657.33| 573.38| -.03| .34| -.01| .17| 2212| 5268|
+----------------------+---+-------+-------+--------+---------+--------+---------+-------+-------+
이 표에서 볼 곳은 세 군데입니다.
- N: 여섯 변수 모두 200입니다. 빠진 값이 없다는 뜻입니다.
- Minimum, Maximum: 값이 말이 되는 범위 안에 있는지 확인합니다. 만족도 평균이 1.00~5.00으로 리커트 척도 범위를 벗어나지 않고, 나이도 22~51세로 자연스럽습니다. 코딩 실수가 있으면 여기서 가장 먼저 드러납니다.
- Skewness(왜도), Kurtosis(첨도): 분포가 한쪽으로 치우쳤는지, 뾰족하거나 납작한지를 나타냅니다. 0에 가까우면 정규분포와 비슷하다는 뜻인데, 여기서는 모두 절댓값 .6 아래로 작습니다.
향상분(gain)의 평균 4.72는 약 +8인 실험군과 약 +1인 대조군을 섞은 값입니다. 두 집단을 합쳐 놓았으니 중간쯤 값이 나온 것입니다. 집단별로 나누어 보려면 다음의 EXAMINE 결과를 봅니다.
EXAMINE은 집단별 기술통계와 상자그림을 냅니다. 상자그림은 png 그림 파일로 나옵니다. 배치로 실행했다면 출력 파일 옆에 따로 저장되고, GUI에서는 출력 뷰어 안에 그려집니다.
EXAMINE ... BY group은 그림을 두 장 냅니다. 첫 장은 집단을 나누지 않은 전체 표본의 상자 하나이고, 둘째 장이 집단별로 나란히 놓은 상자그림입니다. 비교에 쓰는 것은 둘째 장입니다.

상자그림에서 상자 가운데 굵은 선이 중앙값이고, 상자의 아래위 끝이 1사분위수와 3사분위수입니다. 위아래로 뻗은 선(수염)은 이상값을 뺀 최솟값과 최댓값까지 이어집니다. 그림을 보면 대조군의 중앙값은 0 근처인데 실험군은 8~9 근처로, 실험군의 상자 전체가 위쪽으로 올라가 있습니다. 실험군의 향상분이 전반적으로 크다는 뜻입니다. 실험군 아래쪽의 동그라미(176)는 이상값으로 표시된 케이스이고, 숫자는 케이스 번호입니다. 이 차이가 통계적으로 유의한지는 4편의 t-검정으로 확인합니다.
이제 이 편의 질문으로 돌아가 교차표를 보겠습니다.
실험 집단 × 재수강 의향
+-------------------------+------+-----+------+
| | 재수강 의향| |
| +------+-----+ |
| |아니오| 예 | Total|
+-------------------------+------+-----+------+
|실험 집단 대조군 Count | 65| 29| 94|
| Expected| 53.11|40.89| .47|
| Row % | 69.1%|30.9%|100.0%|
| 실험군 Count | 48| 58| 106|
| Expected| 59.89|46.11| .53|
| Row % | 45.3%|54.7%|100.0%|
행마다 세 줄씩 있습니다. 먼저 Row % 줄을 보면, 재수강 의향이 “예”인 비율은 대조군이 30.9%, 실험군이 54.7%입니다. 실험군 쪽이 20%포인트 넘게 높습니다.
Count 줄은 실제 관측된 인원이고, Expected 줄은 두 변수가 서로 아무 관계가 없다고 가정했을 때 기대되는 인원입니다. 예를 들어 대조군·아니오 칸의 기대빈도 53.11은 대조군 94명에 전체 ‘아니오’ 비율(113/200)을 곱한 값입니다. 실제로는 65명이니 기대보다 12명쯤 많습니다. 카이제곱 검정은 이렇게 관측빈도와 기대빈도가 얼마나 벌어졌는지를 하나의 값으로 요약한 것입니다.
Chi-Square Tests
+-------------------------+-----+--+------------------------+------------------+-------------------+
| |Value|df| Asymptotic Sig. (2- | Exact Sig. (2- | Exact Sig. (1- |
| | | | tailed) | tailed) | tailed) |
+-------------------------+-----+--+------------------------+------------------+-------------------+
|Pearson Chi-Square |11.55| 1| .001| | |
|Likelihood Ratio |11.70| 1| .001| | |
|Fisher's Exact Test | | | | .001| .001|
|Continuity Correction |10.60| 1| .001| | |
보통은 첫 줄 Pearson Chi-Square를 읽습니다. Value가 검정통계량 χ²=11.55, df가 자유도 1, Asymptotic Sig. 열이 p값 .001입니다. p가 .05보다 작으므로 “집단과 재수강 의향은 관계가 없다”는 가설을 기각합니다. 즉 실험군과 대조군의 재수강 의향 비율 차이는 우연으로 보기 어렵습니다.
나머지 줄은 상황에 따라 씁니다. Continuity Correction(연속성 수정)은 2×2 표에서 카이제곱 값을 조금 보수적으로 고친 것이고, Fisher’s Exact Test는 기대빈도가 작은 칸이 있어서 카이제곱 근사가 불안할 때 쓰는 정확 검정입니다. 이 데이터에서는 어느 줄을 봐도 p가 .001이라 결론이 같습니다.
신택스에서 PHI를 요청했기 때문에 대칭 측도(Symmetric Measures) 표에 파이 계수와 Cramer’s V도 나옵니다. 둘 다 .24입니다. 카이제곱 검정이 “관계가 있는가”에 답한다면, 이 값들은 “관계가 얼마나 강한가”를 0에서 1 사이로 보여 줍니다.
SPSS와 대조
같은 신택스를 SPSS 32에서 돌린 값입니다. PSPP는 소수 둘째 자리까지 인쇄하므로 그 자리까지 비교합니다.
| 항목 | PSPP 2.1.1 | SPSS 32 |
|---|---|---|
| 성별 빈도 남/여 | 99 / 101 | 99 / 101 |
| 향상분 평균 / 표준편차 | 4.72 / 7.03 | 4.72 / 7.03 |
| Pearson χ² / df / p | 11.55 / 1 / .001 | 11.546 / 1 / <.001 |
| 우도비 | 11.70 | 11.701 |
| 연속성 수정 | 10.60 | 10.595 |
| Fisher 정확검정 p (양측) | .001 | <.001 |
| 파이 / Cramer’s V | .24 / .24 | .240 / .240 |
전부 같습니다. SPSS의 11.546을 소수 둘째 자리에서 반올림하면 PSPP의 11.55가 되고, 다른 값도 마찬가지입니다. SPSS 출력이 더 길어 보이는 것은 소수 자릿수가 많고 표마다 해설 문단이 붙기 때문이지, 표가 더 있어서가 아닙니다.
함정과 메모
- p값 표기가 다릅니다. 아주 작은 p값을 PSPP는
.000으로, SPSS 32는<.001로 찍습니다. 뜻은 같습니다. 논문이나 보고서에는 p가 정확히 0일 수는 없으니p < .001로 적는 것이 관례입니다. - 교차표 Expected 줄의 Total 열을 조심하세요. 위 교차표의 Expected 줄에서 Total 열에 찍힌
.47,.53은 기대빈도가 아니라 행 비율입니다. PSPP는 그 칸에 행 합계의 비율을 넣고, SPSS는 행 합계(94, 106)를 넣습니다. 표에서 값을 옮겨 적을 때 헷갈리기 쉬운 부분입니다.
다음 편
4편에서는 실험군과 대조군의 향상분을 t-검정으로, 부서별 연봉을 일원분산분석과 사후검정으로 비교합니다.
시리즈 목차: 0편 총론 · 1편 · 2편 · 3편 기술통계와 교차표 · 4편 · 5편 · 6편 · 7편 · 8편 · 9편