정작 정제가 필요했던 것 / What actually needed cleaning
당첨번호 값 자체는 이미 깨끗했습니다 — 중복·누락 회차, 범위(1–45)를 벗어난 값이 전혀 없었죠. 정제가 필요했던 건 값이 아니라 스키마였습니다. 스프레드시트를 SQLite로 덤프하며 생긴 세 가지 구조적 잡동사니를 걷어냈습니다: 유령 열, 인코딩이 깨진 당첨금 타입, 고아 시트 테이블.
왜 이 단계가 중요한가 — tidy data 원칙
Tidy data: 각 변수는 하나의 열, 각 관측은 하나의 행. 유령 열 399개와 고아 테이블 8개는
이 원칙을 위반해 분석을 오염시킵니다. 정제 파이프라인은 원본을 수정하지 않고
정규화된 data/clean/lotto_clean.db를 새로 만듭니다.
결측 분류: 최근 회차의 당첨금 결측은 진짜 결측(MCAR 아님, 아직 미집계)이므로 0으로 채우지 않고 NULL로 보존합니다. 결측을 잘못 채우면 하류 통계가 편향됩니다.
이론이 말하는 정답 / What the math predicts
데이터를 보기 전에, 공정한 추첨이라면 무엇이 나와야 하는지 닫힌 형태로 계산합니다. 45개 중 6개가 당첨일 때 6개를 골라 k개 맞을 확률은 초기하분포를 따릅니다.
| 맞춘 개수 | 확률 | 등수 |
|---|
독립 vs 종속 — 로또와 연금복권의 근본 차이
로또는 비복원 추출이라 한 추첨 내 번호끼리 음의 상관(종속)을 가집니다: $\mathrm{Cov}(\mathbb{1}_i,\mathbb{1}_j)=-\tfrac{p(1-p)}{N-1}=$ . 반면 연금복권 자릿수는 복원·독립이라 각 자리가 정확히 Uniform{0–9}입니다. 같은 '복권'도 표본추출 구조가 통계적 성질을 지배합니다 — 분석 전에 데이터 생성 과정을 이해해야 하는 이유입니다.
모든 것이 균등을 가리킵니다 / Everything points to uniform
번호 빈도는 균등 기대값 주위에 흩어지고, 합계 평균은 이론값 138에 거의 정확히 맞습니다.
번호별 출현 횟수 Number frequency
합계 분포 Sum
홀수 개수 균형 Odd balance
정식으로 검정하기 / Formal tests
귀무가설 H0: 추첨은 공정하고 기억 없는 균등 샘플러다. χ²·런·자기상관·핫넘버 검정으로 반증을 시도합니다.
| 검정 | 통계량 | p-value | 판정 |
|---|
번호 표준화 잔차 χ² residuals
합계 자기상관 ACF
이 수열은 정말 무작위인가 / RNG audit
RNG 감사관처럼 배터리를 돌립니다. 각 검정은 다른 종류의 구조에 민감합니다. 검정마다 무작위 친화 방향이 달라 (ADF는 기각이 무작위), 통합 판정 열로 정리했습니다.
| 검정 | 통계량 | p-value | 무작위 부합 |
|---|
각 번호의 진짜 확률과 불확실성 / Credible intervals
"균등한가?"(빈도주의) 대신 "각 번호 확률은 얼마이고 얼마나 확신하나?"를 묻습니다. 켤레 Beta-Binomial로 후분포가 닫힌 형태로 나옵니다.
번호별 확률의 95% 신용구간 forest plot
강력한 모델도 신호를 못 찾는다 / AUC ≈ 0.5
이진 분류 — 번호 k가 다음 회차에 나오는가? 누수 없는 walk-forward로 로지스틱과 그래디언트 부스팅(XGBoost 계열)을 학습합니다. 지표가 스스로 결론을 내립니다.
| 모델 | AUC | vs 우연(0.5) |
|---|
ROC 곡선 대각선에 붙음
특성 중요도 permutation
숨은 군집은 없다 / No hidden structure
레이블 없이 데이터 자체의 구조를 찾습니다. PCA·k-means·t-SNE 모두 "군집 없음"으로 수렴합니다.
PCA 설명 분산 지배 성분 없음
t-SNE 임베딩 색=회차
어떤 전략도 무작위를 못 이깁니다 / Nothing beats chance
벤치마크는 산수입니다: 티켓당 기대 적중 6 × 6/45 = 0.8. 휴리스틱 5종 + 07의 그래디언트 부스팅을 누수 없는 walk-forward로 겨루게 합니다.
전략별 백테스트 walk-forward · 95% CI
앱 자신의 예측 기록 The app's own — archived tickets
🎫 아무 번호나 채점해 보세요 Score any ticket
도구와 기록 / Tools & Records
아래는 재미와 학습을 위한 도구입니다. 본문(01–09)이 증명하듯 예측은 확률을 높이지 못합니다 — 그럼에도 여느 복권 앱처럼 생성기·체커를 제공하되, 정직하게 그 한계를 함께 보여줍니다.
연금복권 심층 분석 / Pension deep-dive
연금복권은 조(1–5) + 6자리(0–9) 구조입니다. 로또와 달리 복원·독립 추출이라 각 자리가 균등해야 합니다(노트북 02 참조). —회차 데이터로 확인합니다.
조 출현 빈도 Group 1–5
자릿수 합계 분포 digit sum
위치별 자릿수 빈도 6 positions × 0–9 heatmap
등수별 당첨 구조 Prize tiers
| 등수 | 일치 조건 | 확률 | 당첨금 |
|---|
번호 생성기 / Prediction generator
번호 평가기 / Pattern-fit score
내 번호가 과거 당첨 조합의 '모양'(합계·홀짝·고저·AC·연속·분포)과 얼마나 비슷한지 점수화합니다. 덤으로 실제 과거 회차와 비교해 등수도 확인할 수 있습니다.
적중 기록 아카이브 / Per-회차 records
누수 없는 회고 엔진이 과거 각 회차마다 그 이전 데이터만으로 생성한 예측의 실제 성적입니다. 행을 클릭하면 방법별 상세가 열립니다. §09의 결론(무엇도 무작위를 못 이김)을 회차 단위로 확인하세요.
회차별 분석 / Per-draw explorer (lotto)
확률 이론·EDA·가설검정·무작위성 배터리·베이지안·머신러닝·비지도학습·백테스트 — 서로 다른 도구가 모두 같은 답에 도달했습니다. 로또는 공정한 균등 난수와 구별되지 않습니다.