재현 가능성
우리가 언제 어디서든 실험하더라도, 처음에 실험했던 것이랑 똑같은 결과가 나올 수 있는 상태
우연한 결과가 아니라 항상 일관된 결과가 나와야 의미가 있어지는 것임!
- 예: 신약을 개발할 때도 실험실 뿐만 아니라 실제 상황에서도 일관된 결과가 나와야 해
- 최근 p값에 대한 논쟁이 있음 (변경하는 것이 좋다)
- 가설검정 원리상 문제나 원하는 결과가 나올 때까지 반복실험하는 문제
- 논문을 다시 실험해보는데 똑같은 결과가 나오지 않는 사례가 많은...
- 결과가 재현이 안된다면 가설의 신뢰도가 떨어짐
- 실험 조건을 동일하게 조성하기 어려움
가설검정 사용방법에 있어서 잘못됨
- p 값이 0.05가 유도되게끔 조작하는 것이 가능 (p 해킹)
- 실제 통계적으로 의미없음에도 있다고 해버리는 1종 오류
- 유의수준을 0.005로 설정하면서 데이터 수를 70% 더 놀려서 베타값 컨트롤 하는 방향
- 우연히 0.05보다 낮아서 가설이 맞는 것처럼 보일 수 있음
p-해킹
인위적으로 p 값을 낮추지 않도록 조심해야 함!
데이터 분석 결과의 신뢰성을 저하시킴
데이터 수를 늘리면서 p값이 0.05 이하가 되어 대립가설 채택하는 것
결과를 먼저 보고 가설을 다시 끼워 맞추는 것
마음에 드는 상황만 골라서 보고하는 것
탐색적으로 분석한 경우 가능한 모든 변수를 보고하고 본페로니 보정 같은 방법을 사용해야 함
즉, p값에 따라 모든 것을 끼워맞추는 것을 하지 않아야 한다.
선택적 보고
유의미한 결과만 보고하고 그렇지 않은 결과는 보고하지 않음
결과를 보고 가설을 다시 새로 설정했는데 처음부터 설정한 가설이라고 할 때
자료수집 중단 시점 결정
원하는 결과가 나올 때까지 자료를 수집하는 것을 조심! p해킹과 관련
데이터 수집을 언제 멈출지 결정하는 것은 결과에 영향을 미칠 수 있음

데이터 탐색과 검증 분리
검증하기 위한 데이터는 반드시 따로 분리 해놓아야 함!
이는 데이터 과적합을 방지하고 결과의 신뢰성을 높임

데이터 탐색과 검증을 분리하면 탐색 과정에서 발견된 패턴이 검증 데이터에서도 유효한지 확인 가능
데이터셋을 탐색용(training)과 검증용(test)으로 분리하여 사용
from sklearn.model_selection import train_test_split
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
from sklearn.metrics import r2_score
# 데이터 생성
np.random.seed(42)
X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 1)
# 데이터 분할 (탐색용 80%, 검증용 20%)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 모델 학습
model = LinearRegression()
model.fit(X_train, y_train)
# 탐색용 데이터로 예측
y_train_pred = model.predict(X_train)
# 검증용 데이터로 예측
y_test_pred = model.predict(X_test)
# 탐색용 데이터 평가
train_mse = mean_squared_error(y_train, y_train_pred)
train_r2 = r2_score(y_train, y_train_pred)
print(f"탐색용 데이터 - MSE: {train_mse}, R2: {train_r2}")
# 검증용 데이터 평가
test_mse = mean_squared_error(y_test, y_test_pred)
test_r2 = r2_score(y_test, y_test_pred)
print(f"검증용 데이터 - MSE: {test_mse}, R2: {test_r2}")
> 탐색용 데이터 - MSE: 0.8476788564209705, R2: 0.7582381034538057
> 검증용 데이터 - MSE: 0.6536995137170016, R2: 0.8072059636181393
머신러닝 진짜 모델은 검증용 데이터로 평가한 성능이 진짜 성능이다!
여기서 말하는 탐색용 데이터 = 학습용 데이터
통계학 관련 자료 추천
- 여인권 교수님의 기초통계학
- 고지마 히로유키, 세상에서 가장 쉬운 통계 입문
(네이버 블로그 | 기다림의 미학2270 세상에서 가장 쉬운 통계학 입문)
(고지마 히로유키TISTORY세상에서 가장 쉬운 통계학 입문[고지마 히로유키] 정리)
아베 마사토, 통계 101 x 데이터 분석
'통계 (Statistics)' 카테고리의 다른 글
| [통계] 마인드맵으로 통계 맥락 알아보기 👀 (1) | 2025.10.12 |
|---|---|
| [통계/세션] 4회차 - 데이터셋으로 실습 ( 수업 흐름대로, 의식 흐름대로 ) (0) | 2025.10.03 |
| [통계/인강] 챕터5 - 피어슨/스피어만/켄달타우 상관계수 | 상호정보 상관계수 (0) | 2025.10.01 |