이 편에서는 PSPP에 없는 절차를 일부러 던져 본다. 어떤 오류가 나는지, 오류 메시지가 무엇을 말해 주는지, 그리고 같은 질문에 PSPP로 답할 우회로가 있는지다. 앞 편들이 “된다”를 보였다면 이 편은 “여기서 갈린다”를 보인다.
데이터
data/training_survey.sav. 반복측정 설계(사전·사후 × 집단), 혼합모형, 편상관, Chart Builder 그래프, 그리고 SPSS 전용 고급 절차 열두 가지를 시도한다.
메뉴에서 먼저 보인다
1편에서 본 PSPPIRE의 Analyze 메뉴에는 General Linear Model 항목 자체가 없다. SPSS 32의 같은 메뉴를 펼치면 일변량, 다변량, 반복측도, 분산성분이 있다.


메뉴에 없는 것은 신택스로 넣어도 안 된다. 다만 오류 메시지는 무엇이 없는지를 정확히 말해 준다.
신택스로 던져 보기
syntax/10_unsupported_glm_repeated.sps, 11_unsupported_mixed.sps, 13_unsupported_graphs.sps의 GGRAPH 부분, 14_data_mgmt_extra_procs.sps의 PARTIAL CORR 부분이다. 전부 SPSS에서는 정상 실행된다.
GLM pre_score post_score BY group
/WSFACTOR=time 2 Polynomial
/METHOD=SSTYPE(3)
/WSDESIGN=time
/DESIGN=group.
MIXED post_score BY group WITH pre_score
/FIXED=group pre_score
/RANDOM=INTERCEPT | SUBJECT(dept)
/METHOD=REML.
PARTIAL CORR
/VARIABLES=salary age BY edu
/SIGNIFICANCE=TWOTAIL.
GGRAPH
/GRAPHDATASET NAME="gd" VARIABLES=dept MEAN(salary)[name="ms"]
/GRAPHSPEC SOURCE=INLINE.
BEGIN GPL
...
END GPL.
PSPP의 답이다.
syntax/10_unsupported_glm_repeated.sps:5.5-5.24: error: GLM: Multivariate analysis is not yet
implemented.
5 | GLM pre_score post_score BY group
| ^~~~~~~~~~~~~~~~~~~~
syntax/11_unsupported_mixed.sps:4.1-4.5: error: MIXED: MIXED is not yet implemented.
4 | MIXED post_score BY group WITH pre_score
| ^~~~~
error: PARTIAL CORR: PARTIAL CORR is not yet implemented.
error: GGRAPH: GGRAPH is not yet implemented.
error: Unknown command `BEGIN GPL'.
첫 번째 메시지를 자세히 보면 캐럿(^)이 /WSFACTOR가 아니라 종속변수 두 개 pre_score post_score를 가리킨다. PSPP가 막히는 지점은 반복측정이라는 설계가 아니라 종속변수가 여러 개인 것 자체다. 실제로 /WSFACTOR 없이 종속변수만 둘 넣은 MANOVA도 정확히 같은 메시지를 낸다.
SPSS 전용 절차 열두 가지
syntax/15_spss_only.sps에 PSPP에 아예 없을 것으로 예상한 절차를 모았다. 다항·순서형 로지스틱, 일반화 선형모형, MANOVA, 생존분석(Kaplan-Meier, Cox), 판별분석, 계층적 군집, 복합표본, 시계열(ARIMA, 전문가 모델러), R·Python 연동이다. SPSS 32에서는 전부 돌아갔고 PSPP에서는 한 절차도 돌지 않았다. 오류는 두 종류로 갈린다.
| PSPP의 반응 | 명령 |
|---|---|
not yet implemented (명령은 알지만 미구현) |
NOMREG, PLUM, KM, COXREG, DISCRIMINANT, CLUSTER, CSPLAN, CSDESCRIPTIVES, DATE, TSMODEL |
Unknown command (명령 자체를 모름) |
GENLIN, ARIMA, BEGIN PROGRAM |
10번과 같은 Multivariate analysis is not yet implemented |
GLM 종속변수 2개 (MANOVA) |
“not yet implemented”는 개발 목록에는 있다는 뜻이고, “Unknown command”는 명령어 표에도 없다는 뜻이다. 어느 쪽이든 지금은 안 된다.
한 가지 주의할 것이 있다. PSPP는 BEGIN PROGRAM 블록 안의 Python 코드를 신택스로 읽으려 든다. import sys를 IMPORT 명령으로 해석해 오류를 내고, 그 자리에서 “연쇄 실패를 막기 위해 처리를 중단한다”며 파일 실행을 멈춘다. 신택스 파일 중간에 Python 블록이 있으면 그 뒤 명령은 실행되지 않는다. SPSS에서 쓰던 파일을 PSPP로 가져올 때 BEGIN PROGRAM 블록부터 걷어내야 하는 이유다.
SPSS에서는 어떻게 나오나
같은 신택스를 SPSS 32에서 돌린 값이다. PSPP 열이 비어 있는 것이 이 편의 요점이다.
| 절차 | SPSS 32 | PSPP 2.1.1 |
|---|---|---|
| 반복측정 GLM: time F (1, 198) | 113.962, p<.001 | — |
| 반복측정 GLM: time × group F | 80.272, p<.001 | — |
| MIXED: group F (1, 197) | 81.014, p<.001 (비수렴 경고) | — |
| PARTIAL CORR: 학력 통제 연봉–나이 r | .628, df=197, p<.001 | — |
| MANOVA: group Wilks λ / F | .700 / 42.281 (2, 197) | — |
| GGRAPH 막대그래프 | 정상 (한글 축 레이블 포함) | — |
MIXED의 비수렴 경고는 예제 데이터에 부서 변량효과가 없어 분산이 0으로 추정되기 때문이고, 통계적으로 정상인 안내다.
우회로
반복측정 2수준 설계 → 차이 점수의 t-검정
사전·사후 두 시점과 집단 하나인 설계에서 관심사는 대개 시점×집단 상호작용, 즉 “실험군의 변화가 대조군보다 큰가”다. 이것은 차이 점수(gain = 사후 − 사전)에 대한 독립표본 t-검정과 같은 검정이다. 4편에서 이미 돌렸다. t=-8.959를 제곱하면 80.26이고, SPSS 반복측정 GLM의 time×group F는 80.272다. 자유도도 (1, 198)로 같다. 반올림 범위에서 같은 값이다.
시점이 셋 이상이거나 개체 내 요인이 둘 이상이면 이 우회로는 안 통한다. 그때는 R(afex, lme4)이나 jamovi·JASP로 간다.
편상관 → 회귀 잔차의 상관
편상관은 정의상 “통제변수로 각각 회귀한 잔차끼리의 상관”이다. PSPP의 REGRESSION은 잔차를 저장할 수 있으니 세 줄이면 된다. 저장소의 syntax/chk_partial_corr_workaround.sps다.
REGRESSION /DEPENDENT salary /METHOD=ENTER edu /SAVE=RESID.
REGRESSION /DEPENDENT age /METHOD=ENTER edu /SAVE=RESID.
CORRELATIONS /VARIABLES=RES1 RES2 /PRINT=TWOTAIL SIG.
|RES1 Pearson Correlation|1.000| .628|
| Sig. (2-tailed) | | .000|
r=.628. SPSS의 PARTIAL CORR 값과 소수 셋째 자리까지 같다. PSPP의 /SAVE=RESID는 SPSS와 달리 변수 이름을 지정하지 못하고 RES1, RES2처럼 자동으로 붙는다는 점만 다르다.
나머지
- MANOVA, 혼합모형, 생존분석, 판별분석, 시계열: PSPP에 우회로가 없다. R이 정답이다. jamovi나 JASP는 GUI로 MANOVA와 혼합모형을 지원한다.
- 다항·순서형 로지스틱: 범주가 셋이면 이항 로지스틱을 범주 쌍마다 돌리는 편법이 있지만 같은 모형은 아니다. R의 nnet, MASS 패키지로 간다.
- GGRAPH: PSPP의 GRAPH로 히스토그램·산점도·막대그래프까지는 된다(3편의 상자그림처럼 png로 나온다). 꾸밈이 필요하면 9편처럼 csv로 뽑아 다른 도구로 그린다.
- Python·R 연동: 없다. 대신 PSPP를 배치 모드로 돌리고 출력을 csv로 받아 Python이나 R에서 이어 가는 것이 9편의 흐름이다.
다음 편
9편에서 이 시리즈의 모든 출력을 GUI 없이 만든 방법, 배치 실행과 자동화를 다룬다. 여기서는 PSPP가 SPSS보다 낫다.
시리즈 목차: 0편 총론 · 1편 · 2편 · 3편 · 4편 · 5편 · 6편 · 7편 · 8편 안 되는 것과 우회로 · 9편