김예빈Yebeen Kim

연구 · 학부 팀 프로젝트 · 확률과통계 (2018-1)

수능 정답률 분석·예측 — 데이터가 없으면 2,416문항을 직접 만든다

2010–2018년 수능·6월·9월 모의고사 2,416문항을 손으로 읽어 변수로 바꾸고, SPSS 다중회귀로 국어·영어 정답률을 설명해 본 기록

기간
2018.03 – 2018.06
역할
7인 팀 SEVEN ELEVEN — 데이터 수집·라벨링, SPSS 코딩변경과 회귀 실행, 발표자료 제작
발표·산출
확률과통계 중간발표 · 기말발표 (SEVEN ELEVEN 팀)
날짜
2018.06
목차 14개 절
목차
  1. 출발점 — "매년 반복되는 난이도 조절 실패", 그리고 데이터가 없다는 문제
  2. 무엇이 문항을 어렵게 만드는가 — 네 가지 기준
  3. 과목마다 다르게 설계한 변수 체계
  4. 2,416문항을 직접 읽어 표로 만들다
  5. 문항의 형식도 함께 봤다 — 긍정형·부정형·짝문제
  6. 손으로 적은 문자열을 변수로 바꾸는 일
  7. 연구 절차와 평가 지표
  8. 영어 — 여섯 변수를 모두 넣은 모형
  9. 영어 — 전진선택과 후진소거가 서로 다른 답을 냈다
  10. 국어 — 가장 먼저 들어온 변수는 '본문내용'이었다
  11. 수학 — 상관분석에서 더 나아가지 못했다
  12. 잔차 진단 — 정규성은 대체로 만족했다
  13. 적어 둔 한계점, 그리고 나중에야 보인 한계점
  14. 남은 것
요약
  • "이 문제는 왜 어려운가"를 문항 데이터로 설명해 보려 했는데 문항 단위 공개 데이터셋이 없었다. 2010–2018년 수능과 6월·9월 모의고사 시험지에서 국어·영어·수학 2,416문항(영어 듣기평가 제외)을 직접 읽어 표로 만들었다.
  • EBS 연계성·지문 길이·내용 단원·문제 유형 네 가지를 기준으로 삼고, 과목마다 난이도가 만들어지는 방식이 다르다고 보아 국어·영어·수학의 변수 체계를 따로 설계했다.
  • SPSS 다중선형회귀를 입력(전체 투입)·전진선택·후진소거 세 방식으로 돌렸다. 영어(N=531)는 6개 변수 전체 입력에서 R²=0.400, t값이 가장 큰 변수는 유형이름과 연계설명이었다. 국어(N=605)는 R²=0.327이었고 본문내용과 문장수만 유의했다.
  • 수학은 상관분석에서 멈췄다. 단원분류 변수가 상수로 들어가 SPSS가 상관계수를 계산하지 못했다.
  • 발표 자료를 다시 정리하다 보니 슬라이드의 모형요약과 ANOVA 표가 서로 맞지 않는 곳이 여러 군데 있었다. 그때는 그 검산을 하지 않았다.
주요 수치
2,416직접 수집·라벨링한 문항2010–2018년 수능 + 6월·9월 모의고사, 국어·영어·수학 (영어 듣기평가 제외)
531문항영어 회귀 표본ANOVA 전체 자유도 530, 잔차 진단 히스토그램 N=531
605문항국어 회귀 표본ANOVA 전체 자유도 604
R² 0.400영어 모형 설명력6개 변수 전체 입력, 수정 R² 0.378, 추정값의 표준오차 16.82%p — 슬라이드 인쇄값이며 같은 모형의 ANOVA와 어긋난다
R² 0.327국어 모형 설명력6개 변수 전체 입력, 수정 R² 0.323, 추정값의 표준오차 12.41%p
7명팀 인원SEVEN ELEVEN — 발표 표지에 7명의 이름이 적혀 있다

출발점 — "매년 반복되는 난이도 조절 실패", 그리고 데이터가 없다는 문제

수험생이 아니라 출제 기관 입장에서 질문을 세웠는데, 정작 문항 단위 데이터셋이 어디에도 없었다.

연구 배경으로 삼은 문장은 두 개였다. "매년 반복되는 수능 난이도 조절 실패""영어영역 절대평가 전환". 발표 슬라이드는 이 두 문장 아래에 결론을 하나 달아 두었다 — "한국교육과정평가원의 정답률 예측 및 난이도 조절의 필요성 제기." 출제 기관 입장에서는 출제한 문항이 실제로 몇 퍼센트나 맞힐 문항인지를 시험 전에 가늠할 수 있어야 한다는 뜻이다.

그래서 이 프로젝트의 질문은 "어떤 학생이 문제를 틀리는가"가 아니라 "어떤 문항이 어렵게 만들어지는가"였다. 분석 단위를 학생이 아니라 문항으로 잡았고, 종속변수는 문항별 정답률 한 가지로 고정했다. 목표는 두 단계 — 먼저 정답률에 영향을 주는 변수를 회귀로 찾아내 설명하고, 그다음 분석에 쓰지 않은 문항의 정답률을 그 모형으로 예측해 검증하는 것이었다.

설계 자체는 단순했다. 문항의 길이, 유형, EBS 연계 여부 같은 특성을 독립변수로 놓고 정답률을 회귀하면 된다. 문제는 그런 데이터셋이 어디에도 없다는 것이었다. 시험지는 공개되어 있고 문항별 정답률도 공개되어 있지만, 둘을 문항 단위로 이어 붙여 변수화해 놓은 자료는 없었다. 선택은 두 가지였다. 분석을 포기하거나, 데이터를 직접 만드는 것. 후자를 택했다.

중간발표 시점의 "연구 진행 상황" 슬라이드에 그 사정이 그대로 적혀 있다 — "현재 분석된 자료가 없는 연구이기 때문에 단어수, 문장수, 줄수, 글자수 등 문항별로 계산 중인 상황." 학기의 절반을 모형이 아니라 데이터 만들기에 썼다는 뜻이다.

무엇이 문항을 어렵게 만드는가 — 네 가지 기준

변수를 만들기 전에, 난이도가 생기는 경로를 네 갈래로 정리했다.

문항을 읽기 전에 먼저 "무엇을 세어야 하는가"를 합의해야 했다. 중간발표에서 정리한 기준은 네 가지였다.

기준세부 내용출처·근거
EBS 연계성 및 연계 유형연계 여부(o/x)와 연계 방식EBS가 제공하는 연계내용 분석자료를 이용
지문 길이단어수 · 문장수 (실제 변수 목록에는 글자수가, 영어에는 줄수가 더해졌다)시험지 지면에서 직접 계수
내용 단원 · 범위과목별 교육과정 단원발표에 과목별 단원 목록을 제시
문제 유형대의 파악(목적·심경변화·주장) · 내용 일치/불일치 · 어법, 어휘, 지칭 추론 · 빈칸 추론 · 글의 순서, 문장 삽입, 무관한 문장문항 발문으로 분류

연계 유형은 과목마다 EBS가 쓰는 용어가 달라서 그대로 받아 적었다. 국어는 소재 활용·개념 원리 활용·지문 활용·핵심 제재·논지 활용, 수학은 원리 활용·자료 상황 활용·문항 축소·확대·변형, 영어는 지문 활용·문항 활용·제재 활용이다.

단원 역시 과목별로 다르게 잡았다. 국어는 화법·작문·문법·독서·문학, 수학은 가형(미적분2·확률과통계·기하와벡터)과 나형(수학2·미적분1·확률과통계)을 나눠서, 영어는 듣기/말하기·어법·어휘·읽기/쓰기로 두었다.

과목마다 다르게 설계한 변수 체계

국어·영어는 읽어야 하는 양이, 수학은 어느 단원에서 어떤 방식으로 냈는지가 난이도를 만든다고 보았다.

국어·영어·수학은 문항이 어려워지는 방식 자체가 다르다고 보았다. 그래서 같은 종속변수(정답률)를 설명하면서도 독립변수 집합은 과목별로 따로 설계했다. 중간발표에서는 이를 "과목별 4~12가지 변수"라고 표현했다.

과목설계한 변수설계 근거
국어문장수 · 단어수 · 글자수 · 유형 · 연계여부 · 본문내용읽어야 하는 텍스트의 양과 지문(본문)의 성격이 난이도를 만든다
영어문장수 · 단어수 · 줄수 · 글자수 · 문제유형 · 연계여부국어 변수에 지면상의 줄수와 세분화된 문제유형을 추가 — 시각적 분량과 유형이 체감 난이도를 크게 바꾼다
수학연계여부 · 연계방법 · 문제유형 · 단원 · 세부단원텍스트 길이가 아니라 어느 단원에서 어떤 방식으로 출제되었는지가 난이도를 결정한다

정리하면 국어를 기준으로 영어에는 줄수와 세분화된 문제유형을 더했고, 수학은 길이 변수를 통째로 걷어내고 연계방법 · 단원 · 세부단원이라는 구조 변수로 교체했다. 같은 "난이도"를 설명하는 문제였지만 변수 공간은 과목마다 다르게 만든 셈이다.

이 결정이 결국 결과의 범위를 정했다. 영어에 "줄수"를 넣을지 말지, 수학에서 "세부단원"까지 내려갈지 말지가 곧 어떤 결론이 나올 수 있는지를 미리 정해 버렸다.

2,416문항을 직접 읽어 표로 만들다

9개 학년도 × 3개 시험 × 3개 과목의 시험지를 구해, 문항을 하나하나 읽으며 수기로 기록했다.

2010년부터 2018년까지의 수능과 6월·9월 모의고사 시험지를 모두 구해, 문항을 하나하나 읽으며 변수 값을 채워 넣었다. 기말발표 슬라이드에는 "2416 문제 모두 조사 완료"라고 적었다.

항목내용
수집 기간2010년 – 2018년 (9개 학년도)
시험 종류대학수학능력시험 + 6월 모의고사 + 9월 모의고사
과목국어 · 영어 · 수학
제외 대상영어 듣기평가 (지면 정보로 변수화할 수 없어 제외)
총 문항 수2,416문항
기록 방식시험 하나를 표 하나로 두고, 문항 단위로 수기 입력
종속변수문항별 정답률

표는 시험 단위로 쪼개서 관리했다. 2010년 수능부터 2018년 수능까지 아홉 개, 그리고 연도별 6월·9월 모의고사가 따로 있었다. 그 안의 칸을 사람이 손으로 채웠다.

표에 마지막으로 손을 댄 날짜는 2018년 5월 31일과 6월 2일에 몰려 있다. 기말발표를 3주쯤 앞둔 시점이고, 학기 막판까지 데이터를 채우고 있었다는 뜻이다.

수집·라벨링은 혼자 한 일이 아니었다. 유학생 학우가 포함된 7인 팀이 나눠 맡았다. 한국어 시험지를 읽어야 하는 작업이었기 때문에 같은 문항을 누가 읽어도 같은 값이 나오도록 라벨링 기준을 적어 두는 일이 데이터 품질의 전부였다. 다만 팀 안에서 누가 어느 과목·어느 연도를 맡았는지 같은 세부 분담은 남아 있는 발표 자료에 적혀 있지 않다.

시험 단위로 하나씩 만든 문제분석 표들 — 2010~2018년 수능과 연도별 6월·9월 모의고사가 나란히 쌓여 있다. 마지막으로 손을 댄 날짜는 2018년 5월 말에서 6월 초에 몰려 있다.
시험 단위로 하나씩 만든 문제분석 표들 — 2010~2018년 수능과 연도별 6월·9월 모의고사가 나란히 쌓여 있다. 마지막으로 손을 댄 날짜는 2018년 5월 말에서 6월 초에 몰려 있다.

문항의 형식도 함께 봤다 — 긍정형·부정형·짝문제

발문이 "적절한 것은"인지 "적절하지 않은 것은"인지도 구분해 두었다.

지문 길이와 유형 말고도, 문항의 형식 자체가 정답률에 영향을 준다고 보았다. 기말발표에서 따로 한 장을 할애해 구분한 것이 긍정형 · 부정형 · 짝문제였다.

  • 긍정형 — "가장 적절한 것은?"처럼 맞는 선택지를 고르는 문항
  • 부정형 — "적절하지 않은 것은?"처럼 틀린 선택지를 고르는 문항. 다섯 개를 모두 검토해야 하므로 부담이 다르다
  • 짝문제 — 하나의 지문에 여러 문항이 붙어 있는 형태

부정형은 선택지 다섯 개를 전부 판정해야 답이 나오고, 짝문제는 앞 문항을 푸느라 이미 지문을 읽은 상태에서 뒤 문항을 만나게 된다. 같은 지문·같은 길이라도 정답률이 달라질 수 있는 지점이라고 판단했다.

다만 이 구분이 실제로 변수가 되었는지는 확인되지 않는다. 같은 발표의 "연구 범위" 슬라이드에 적힌 과목별 변수 목록에도, 회귀에 들어간 변수 목록에도 긍정형·부정형·짝문제에 해당하는 항목이 없다. 구분해 두기만 하고 데이터로 옮기지는 못한 것으로 보인다. 뒤에 적을 한계점 중 "28~30번 문제 지문 통일"이 바로 짝문제 이야기인데, 그것도 변수가 아니라 반성으로 남았다.

긍정형 문항의 예 — "가장 적절한 것은?"으로 묻는 국어 문항.
긍정형 문항의 예 — "가장 적절한 것은?"으로 묻는 국어 문항.
부정형 문항의 예 — "적절하지 않은 것은?"으로 묻는 국어 문항. 선택지를 전부 판정해야 답이 나온다.
부정형 문항의 예 — "적절하지 않은 것은?"으로 묻는 국어 문항. 선택지를 전부 판정해야 답이 나온다.

손으로 적은 문자열을 변수로 바꾸는 일

손으로 적은 값은 대부분 문자열이었다. 회귀에 넣으려면 전부 숫자로 바꿔야 했다.

수기로 만든 데이터는 정형 테이블이 아니었다. 문제유형 칸에는 "목적,심경,요지,주제,제목", "빈칸추론", "무관한문장" 같은 한글 문자열이 들어 있었고, EBS 연계 칸에는 o와 x가 들어 있었다. 회귀에 넣으려면 전부 수치로 바꿔야 했다.

변환은 범주마다 숫자 코드를 붙이는 방식으로 했다. 영어 데이터의 매핑이 실행 기록에 그대로 남아 있다.

원래 값코드원래 값코드
목적, 심경, 요지, 주제, 제목1지칭추론6
도표2빈칸추론7
내용일치/불일치3무관한문장8
어법4글의순서9
어휘5글 요약10

EBS 연계 여부는 같은 방식으로 o를 11, x를 12로 바꿨다. 뒤에서 연계 변수의 계수가 −8.132로 나오는 것을 읽을 때, 두 값의 간격이 1이라는 사실이 필요하다.

발표에 함께 붙어 있는 변환 화면 캡처는 이 기록과 조금 다르다. 화면의 목록에는 "어휘"가 빠져 있어 코드가 1~9로 끝나고("글 요약" → 9), 최종 기록의 1~10과 번호가 어긋난다. 작업 도중의 화면을 캡처해 붙인 것으로 보이지만, 어느 쪽 코드가 회귀에 들어갔는지는 원본 자료가 없어 확인할 수 없다.

변환하는 동안 경고가 계속 떴다 — 같은 유형인데 사람이 손으로 적은 문자열이라 공백이나 표기가 조금씩 달랐던 것이다. 수기 데이터의 대가를 여기서 치렀다.

그리고 이 매핑에는 지금 보면 분명한 문제가 있다. 문제유형은 순서가 없는 명목형인데 1부터 10까지의 숫자를 부여했고, 회귀에서는 그 숫자를 그대로 연속형처럼 썼다. "빈칸추론(7)이 어법(4)보다 3만큼 크다"는 뜻이 되어 버린다. 기말발표 한계점 슬라이드의 첫 줄 "선형으로 설정 후 계산"이 바로 이 문제를 가리킨다.

범주를 숫자 코드로 바꾸는 화면 — 문제유형 한글 문자열에 코드를 붙이고 있다. 이 화면의 목록은 '어휘'가 빠진 9개짜리라 최종 기록(1~10)과 번호가 다르다.
범주를 숫자 코드로 바꾸는 화면 — 문제유형 한글 문자열에 코드를 붙이고 있다. 이 화면의 목록은 '어휘'가 빠진 9개짜리라 최종 기록(1~10)과 번호가 다르다.
실제로 실행된 변환 기록 — 손으로 만든 표를 읽어 문제유형과 EBS 연계를 숫자 코드로 바꾼다. 아래로 문자열 길이가 서로 다르다는 경고가 반복해서 찍혀 있다.
실제로 실행된 변환 기록 — 손으로 만든 표를 읽어 문제유형과 EBS 연계를 숫자 코드로 바꾼다. 아래로 문자열 길이가 서로 다르다는 경고가 반복해서 찍혀 있다.
변환을 마친 영어 데이터셋 — 문항 번호, 문제유형, 연계 여부(o/x), 문장수·단어수·줄수·글자수, 정답률, 그리고 새로 만든 문제유형 코드·연계 코드 열이 문항 한 줄씩 들어 있다.
변환을 마친 영어 데이터셋 — 문항 번호, 문제유형, 연계 여부(o/x), 문장수·단어수·줄수·글자수, 정답률, 그리고 새로 만든 문제유형 코드·연계 코드 열이 문항 한 줄씩 들어 있다.

연구 절차와 평가 지표

정리 → 회귀 → 변수 중요도 → 예측·검증의 네 단계로 잡았다.

중간발표에서 정한 절차는 네 단계였다.

  1. 문제 데이터 정리 — 역대 수능·모의고사 문항을 네 가지 기준에 따라 문항별로 정리
  2. 회귀분석 — 과목별 4~12가지 변수로 다중회귀를 돌려 주요 변수 추출
  3. 변수 중요도 분류 — 변수 중요도에 따라 값(가중치)을 결정
  4. 예측 / 검증 — 분석에 사용하지 않은 문항의 정답률을 예측하고 검증

모형은 다중선형회귀를 썼고, 변수 선택은 전진선택법후방소거법을 모두 돌려 비교하기로 했다.

예측 단계의 평가 지표로는 MSE, RMSE, MAE, MAPE 네 가지를 수식까지 적어 정의해 두었다. 정답률처럼 0~100% 범위를 갖는 값이라 절대오차와 상대오차를 함께 보려 한 것이었다.

기말발표에 실린 평가 지표 정의 — MSE · RMSE · MAE · MAPE 네 가지의 수식을 적어 두었다. 실제 값을 채운 슬라이드는 남아 있지 않다.
기말발표에 실린 평가 지표 정의 — MSE · RMSE · MAE · MAPE 네 가지의 수식을 적어 두었다. 실제 값을 채운 슬라이드는 남아 있지 않다.

영어 — 여섯 변수를 모두 넣은 모형

531문항에 6개 변수를 전부 투입했을 때 설명력은 R² 0.400이었다.

영어부터 돌렸다. 표본은 531문항, 독립변수는 유형이름·연계설명·글자수·줄수·단어수·문장수 여섯 개, 종속변수는 정답률이다. 먼저 여섯 개를 모두 투입하는 입력법으로 기준 모형을 만들었다.

변수비표준화 계수 B표준오차표준화 계수 βt유의확률
(상수)171.11517.5669.741.000
유형이름-1.7980.245-0.297-7.342.000
연계설명-8.1321.588-0.211-5.121.000
단어수-0.0990.039-0.366-2.574.010
문장수0.7220.2230.2393.244.001
글자수0.0080.0060.1951.424.155
줄수0.0050.0050.0890.920.358

모형 요약은 R = .633, R² = 0.400, 수정된 R² = 0.378, 추정값의 표준오차 16.82%p였다. 분산분석은 F(6, 524) = 20.135, p < .001로 모형 자체는 유의했다.

읽히는 것은 세 가지였다. 첫째, 유의한 변수는 유형이름·연계설명·단어수·문장수 네 개였고 글자수와 줄수는 유의하지 않았다. 둘째, 연계설명의 계수가 -8.132로 다른 변수와 자릿수가 다르다 — 연계 여부를 11과 12로 코딩했으니 두 값 사이를 오갈 때 정답률 예측치가 8%p 넘게 움직인다는 뜻이다. 셋째, 단어수(-0.099)와 문장수(+0.722)의 부호가 반대로 나왔다. 단어수는 많을수록 어렵고 문장수는 많을수록 쉽다는 뜻인데, 같은 단어 수를 짧은 문장 여러 개로 쪼갠 지문이 더 쉽다는 해석과 맞아떨어진다 — 다만 두 변수가 서로 강하게 상관되어 있어 계수를 따로 떼어 읽는 데는 한계가 있다.

다중선형회귀를 실행하는 화면. 오른쪽 뒤에 영어 입력 모형의 출력(추정값의 표준오차 16.81919%, F 20.135, 유형이름 t = −7.342, 연계설명 t = −5.121)이 열려 있다.
다중선형회귀를 실행하는 화면. 오른쪽 뒤에 영어 입력 모형의 출력(추정값의 표준오차 16.81919%, F 20.135, 유형이름 t = −7.342, 연계설명 t = −5.121)이 열려 있다.

영어 — 전진선택과 후진소거가 서로 다른 답을 냈다

같은 데이터에 두 알고리즘을 돌렸더니 남는 변수 집합이 달랐다.

변수 선택을 자동으로 맡겨 보기로 하고 전진선택법과 후진소거법을 각각 돌렸다. 결과는 같지 않았다.

전진선택법은 두 단계에서 멈췄다. 1단계에서 유형이름이 들어가고(R = .547, R² = 0.299), 2단계에서 연계설명이 들어간 뒤(R = .610, R² = 0.372, 수정 R² = 0.369) 더 이상 진입 기준(입력에 대한 F 확률 ≤ .050)을 넘는 변수가 없었다. 제외된 변수들의 유의확률은 글자수 .492, 줄수 .286, 단어수 .759, 문장수 .153이었다. 길이 변수는 전부 탈락했다.

후진소거법은 여섯 개를 다 넣고 시작해 줄수(2단계), 글자수(3단계) 두 개만 떨어뜨리고 멈췄다(제거 기준: 제거에 대한 F의 확률 ≥ .100). 최종적으로 네 변수가 남았다.

방법최종 변수최종 R²남은 변수 수
입력 (전체 투입)유형이름, 연계설명, 글자수, 줄수, 단어수, 문장수0.4006
전진선택유형이름, 연계설명0.3722
후진소거유형이름, 연계설명, 단어수, 문장수0.2784

후진소거 최종 모형(3단계)의 계수는 상수 172.890, 유형이름 -1.791(β = -0.295), 연계설명 -8.272(β = -0.215), 단어수 -0.054(β = -0.200, p = .007), 문장수 0.671(β = 0.222, p = .002)이었고 F(4, 526) = 29.437, p < .001이었다.

세 방법이 공통으로 남긴 변수는 유형이름과 연계설명 두 개였다. 반대로 단어수·문장수는 전진선택에서는 진입조차 못 했는데 후진소거에서는 끝까지 살아남았다. 단독으로는 설명력이 없지만 다른 변수와 함께 있을 때만 기여하는 전형적인 상황이다. 이 차이를 보고 "자동 변수 선택이 알려 주는 것은 정답이 아니라 데이터의 상관 구조"라는 걸 처음 체감했다.

그 상관 구조는 출력에도 찍혀 있었다. 후진소거 2단계의 제외된 변수 표에서 줄수의 공차가 0.166으로 나온다. 줄수가 다른 길이 변수들로 대부분 설명된다는 뜻이고, 글자수·단어수·문장수·줄수 네 개를 한꺼번에 넣은 것이 애초에 무리였다는 신호다.

다만 이 표들을 지금 다시 보면 앞뒤가 맞지 않는다. 후진소거의 1단계는 입력법과 완전히 같은 여섯 변수 모형인데, 모형요약에 인쇄된 R²는 0.284로 입력법의 0.400과 다르다. 최종 3단계의 수정 R²도 한 슬라이드에는 0.177로, 뒤쪽의 같은 표에는 0.277로 인쇄되어 있다. 위 표의 값은 슬라이드에 찍힌 대로 옮긴 것이지만, 이 표들 중 일부는 다른 실행의 결과이거나 잘못 붙여 넣은 것으로 보인다.

국어 — 가장 먼저 들어온 변수는 '본문내용'이었다

605문항, 6개 변수. 길이보다 지문의 성격이 먼저 선택됐다.

국어는 605문항으로 돌렸다. 변수는 글자수·단어수·문장수·연계설명·본문내용·문제유형 여섯 개다. 영어와 달리 줄수가 없고 본문내용(지문의 성격을 코드화한 변수)이 들어간다.

변수비표준화 계수 B표준오차t유의확률
(상수)81.74113.4006.100.000
문장수0.0850.0214.042.000
본문내용-0.7820.202-3.874.000
글자수-0.0200.014-1.443.150
단어수-0.0050.015-0.355.723
문제유형0.3940.3321.187.236
연계설명0.0791.1490.068.945

모형 요약은 R = .572, R² = 0.327, 수정된 R² = 0.323, 추정값의 표준오차 12.41%p였고 F(6, 598) = 7.950, p < .001이었다. 유의한 변수는 문장수와 본문내용 두 개뿐이었다.

가장 눈에 띄는 차이는 EBS 연계였다. 영어에서 연계설명은 β = -0.211로 두 번째로 강한 변수였는데, 국어에서는 계수 0.079에 p = .945로 아무 설명력이 없었다. 국어 지문은 연계되더라도 소재나 논지만 가져오는 방식이라 실제 문항이 크게 달라지지 않는다는 해석이 가능하지만, 이 프로젝트로는 거기까지 확인하지 못했다.

같은 표에서 한 가지 더 걸리는 것이 표준화 계수다. 글자수 -1.279, 문장수 1.442처럼 절댓값이 1을 넘는 베타가 찍혀 있다. 표준화 계수가 1을 넘는다는 것은 설명변수끼리 심하게 겹쳐 있다는 뜻이다 — 글자수·단어수·문장수를 한 모형에 다 넣은 대가다. 발표 당시에는 이 숫자를 그냥 지나쳤다.

전진선택법은 세 단계로 진행됐다. 1단계 본문내용, 2단계 단어수, 3단계 문장수 순서로 들어갔고, 최종 모형의 계수는 상수 87.060, 본문내용 -0.780, 단어수 -0.025, 문장수 0.066이었다. 길이 변수보다 지문의 성격이 먼저 선택되었다는 점이 국어 결과의 핵심이다. 다만 이 표의 모형요약도 이상하다. R²가 0.334 → 0.254 → 0.314로 오르내리는데, 변수를 더하기만 하는 전진선택에서 R²는 줄어들 수 없다. 게다가 1단계 값 0.334는 여섯 변수를 모두 넣은 입력법의 0.327보다도 크다.

수학 — 상관분석에서 더 나아가지 못했다

단원분류 변수가 상수로 들어가 SPSS가 상관계수를 아예 계산하지 못했다.

수학은 회귀까지 가지 못하고 상관분석에서 멈췄다. 변수는 연계성·문제유형변수·단원분류·연계방법분류였다.

변수 쌍Pearson r유의확률N
연계성 – 정답률.355.000510
연계방법분류 – 정답률.194.000351
문제유형변수 – 정답률.128.028294
연계성 – 문제유형변수.334.000294
단원분류 – (모든 변수)계산 불가0

SPSS가 남긴 각주는 "하나 이상의 변수가 상수이므로 계산할 수 없습니다"였다. 단원분류 변수가 유효 관측치 0으로 들어갔다는 뜻이다. 설계 단계에서 가장 공을 들인 변수(단원·세부단원)가 정작 분석에 한 번도 쓰이지 못했다.

남은 세 변수의 상관도 그리 강하지 않았다. 연계성이 r = .355로 가장 높았고 문제유형은 r = .128로 유의수준을 겨우 넘겼다. 표본 수가 변수마다 510, 351, 294로 제각각인 것도 문제였다 — 결측이 많았다는 뜻이고, 회귀로 넘어갔다면 실제 표본은 더 줄었을 것이다.

이 표 역시 완전히 정합적이지는 않다. 연계성과 연계방법분류 칸은 상관계수 자리에 "계산 불가" 각주가 붙어 있으면서도 유의확률 .000과 N = 351이 함께 인쇄되어 있다.

잔차 진단 — 정규성은 대체로 만족했다

계수를 읽기 전에 잔차부터 봤다.

계수를 해석하기 전에 회귀 표준화 잔차의 분포를 확인했다. 정규 P-P 도표와 히스토그램 두 가지를 봤다.

영어 모형의 히스토그램은 평균 -1.18E-15, 표준편차 0.996, N = 531로 표준정규에 가까웠다. 다만 모양은 왼쪽으로 꼬리가 길고(-4까지) 오른쪽은 +2 부근에서 잘려 있다. 정답률이 100%를 넘을 수 없어 생기는 상한 절단의 흔적이다. 종속변수가 비율인데 선형회귀를 그대로 쓴 대가가 잔차에 남았다.

P-P 도표에서는 점들이 대각선 위로 부풀어 오른 완만한 활 모양을 그렸다. 정규성 가정을 심하게 어기는 수준은 아니지만, 관측 누적확률 0.2~0.8 구간에서 체계적으로 벗어나 있다는 것은 모형이 놓친 구조가 있다는 뜻이다. 국어 모형의 P-P 도표도 같은 방향으로, 오히려 더 크게 휘었다.

이 단계에서 이상을 발견하고도 변환이나 재적합으로 돌아가지는 않았다. 학기가 끝나 가고 있었고, 잔차를 보는 것까지는 했지만 그 결과로 모형을 고치는 데까지는 가지 못했다.

영어 모형의 표준화 잔차 히스토그램 — 평균 -1.18E-15, 표준편차 0.996, N = 531. 왼쪽 꼬리는 -4까지 늘어지고 오른쪽은 +2에서 잘려 있다.
영어 모형의 표준화 잔차 히스토그램 — 평균 -1.18E-15, 표준편차 0.996, N = 531. 왼쪽 꼬리는 -4까지 늘어지고 오른쪽은 +2에서 잘려 있다.
영어 모형의 정규 P-P 도표 — 점들이 대각선 위쪽으로 완만하게 부풀어 있다.
영어 모형의 정규 P-P 도표 — 점들이 대각선 위쪽으로 완만하게 부풀어 있다.
국어 모형의 정규 P-P 도표 — 영어와 같은 방향으로, 더 크게 휘어 있다. 두 모형이 비슷한 편향을 공유한다.
국어 모형의 정규 P-P 도표 — 영어와 같은 방향으로, 더 크게 휘어 있다. 두 모형이 비슷한 편향을 공유한다.

적어 둔 한계점, 그리고 나중에야 보인 한계점

발표에서 말한 다섯 가지와, 자료를 다시 정리하면서 보인 것들.

기말발표 마지막 장에 한계점 다섯 개를 적었다.

발표에 적은 한계지금 다시 쓰면
선형으로 설정 후 계산문제유형·단원 같은 명목형 범주를 1, 2, 3… 숫자로 바꿔 연속형처럼 회귀에 넣었다. 더미 변수로 처리했어야 한다.
교육과정이 바뀌어서 변화가 있음2010–2018년 사이 교육과정이 개정되어 단원 체계와 출제 범위가 바뀌었는데, 9개 학년도를 한 표에 그대로 쌓았다.
문제 배치를 고려하지 않았다같은 문항이라도 시험지 앞쪽에 있는지 뒤쪽에 있는지에 따라 정답률이 달라지는데, 문항 위치를 변수로 넣지 않았다.
28~30번 문제 지문 통일한 지문에 여러 문항이 붙는 구간을 문항별 독립 관측치로 취급했다. 관측치 독립성 가정 위반이다.
수학 서답형·객관식 구분하지 못함수학의 단답형 문항과 5지선다 문항을 같은 척도로 놓았다. 정답률 분포가 근본적으로 다른 두 집단이다.

발표 당시에는 못 봤는데 이번에 자료를 다시 정리하다 보인 것도 있다. 슬라이드에 붙여 넣은 표들이 서로 맞지 않는다.

  • 영어 입력 모형은 R² = 0.400이라고 적혀 있는데, 같은 모형의 ANOVA 제곱합으로 계산하면 34175.351 / 182407.247 = 0.187이 나온다.
  • 같은 여섯 변수 모형인데 후진소거 1단계에서는 R² = 0.284, 회귀 제곱합 96382.351로 인쇄되어 있다. 한 모형의 숫자가 슬라이드마다 다르다.
  • 국어 ANOVA는 회귀 53534.294 + 잔차 46543.706 = 100078.0인데 전체 제곱합은 99516.000이다. 둘이 맞지 않는다.
  • 국어 전진선택 모형요약의 R²가 0.334 → 0.254 → 0.314로 단조증가하지 않는다.
  • "국어 후진"이라고 적힌 표에는 국어에 존재하지도 않는 유형이름·줄수 변수가 들어 있고 수치가 영어 후진소거 표와 똑같다. 영어 표를 그대로 복사한 것으로 보여 본문에 싣지 않았다.

데이터 쪽에서도 하나 나왔다. 발표에 붙인 데이터 화면 캡처를 확대해 보면 2018-19번부터 2018-45번까지 정답률 열의 값이 문항 번호와 똑같은 숫자(19.00%, 20.00% … 45.00%)로 채워져 있다. 정답률을 옮겨 적다가 번호를 그대로 끌어 쓴 입력 오류로 보인다. 그 상태의 데이터가 실제로 회귀에 들어갔는지는 원본이 없어 확인할 수 없지만, 확인하지 않은 채로 계수를 읽었다는 사실은 남는다.

결국 도구가 뱉은 표를 캡처해 슬라이드에 붙이면서, 그 표들이 서로 맞는지를 한 번도 검산하지 않았다. 계산은 도구가 해 줬지만 그 결과가 앞뒤가 맞는지 확인하는 일은 도구가 대신해 주지 않는다.

계획했던 4단계 중 마지막 "분석에 사용되지 않은 문제의 오답률 예측 및 검증"도 끝내지 못했다. MSE·RMSE·MAE·MAPE를 수식까지 정의해 두고 실제 값을 계산해 넣은 슬라이드는 남아 있지 않다. 학기 안에 데이터를 만드는 데까지가 한계였다.

남은 것

결과보다 데이터를 만드는 과정에서 얻은 것이 컸다.

이 프로젝트에서 실제로 확인된 것은 크지 않다. 슬라이드에 인쇄된 값 기준으로 영어 정답률의 40%(수정 R² 기준 38%)를 여섯 개 변수로 설명했고 — 앞에서 적었듯 그 값 자체가 같은 모형의 다른 표와 어긋나 있다 — 그중 안정적으로 유의했던 것은 문제유형과 EBS 연계 두 가지였다. 국어는 문장수와 본문내용 두 개, 수학은 상관계수 몇 개가 전부다.

대신 남은 것은 데이터를 만드는 과정 쪽이었다. 2,416개의 문항을 손으로 읽으며, 변수를 어떻게 정의하느냐가 결론의 범위를 미리 정해 버린다는 것을 체감했다. 영어에 "줄수"를 넣기로 한 결정, 수학에서 "세부단원"까지 내려가기로 한 결정이 곧 이 연구가 무엇을 말할 수 있는지를 정했다. 그리고 정작 그렇게 공들여 만든 수학 단원 변수는 결측 때문에 한 번도 쓰이지 못했다.

같은 종속변수를 설명하면서 과목마다 다른 변수 체계를 설계한 판단은 지금도 맞다고 본다. 국어·영어에는 길이가, 수학에는 구조가 난이도를 만든다는 가설은 실제로 결과에서 갈라져 나왔다 — 영어에서는 길이 변수가 유의했고, 국어에서는 지문의 성격이 먼저 선택됐으며, 수학에서는 길이를 아예 세지 않았다.

이후 문항과 결과 데이터를 다루는 일을 할 때마다 이 프로젝트가 기준점이 되었다. 데이터가 없으면 만들 수 있다는 것, 만든 데이터의 품질은 결국 라벨링 기준을 얼마나 명확히 적어 두었느냐로 결정된다는 것, 그리고 도구가 내놓은 표는 사람이 한 번 검산해야 한다는 것이다.

여기서 배운 것

  1. 데이터를 만드는 것부터가 분석의 일부다. 2,416문항을 손으로 라벨링하면서, 변수를 어떻게 정의하느냐가 결론의 범위를 먼저 정해 버린다는 것을 체감했다.
  2. 자동 변수 선택이 알려 주는 것은 정답이 아니라 데이터의 상관 구조다. 같은 영어 데이터에서 전진선택은 2개, 후진소거는 4개를 남겼고 공통은 유형이름·연계설명 두 개뿐이었다.
  3. 범주를 숫자로 바꾸는 순간 가정이 하나 생긴다. 문제유형을 1~10으로 코딩해 연속형처럼 회귀에 넣은 것이 이 프로젝트의 가장 큰 방법론적 결함이었고, 발표에서도 "선형으로 설정 후 계산"으로 스스로 적어 두었다.
  4. 종속변수가 0~100%인 비율이면 선형회귀의 잔차에 흔적이 남는다. 히스토그램의 잘린 오른쪽 꼬리와 P-P 도표의 완만한 활 모양이 그것이었는데, 발견하고도 모형을 고치는 데까지는 가지 못했다.
  5. 도구가 계산해 준 결과가 서로 앞뒤가 맞는지는 사람이 검산해야 한다. 슬라이드의 R²와 ANOVA 제곱합이 어긋나 있는 것을 발표 당시에는 아무도 보지 못했다.