← 문제 목록/Winsorization (quantile clipping) [medium]
문제 해설

Winsorization (quantile clipping) [medium]

전처리 · medium

preview

Winsorization [medium]

v1 value clip고정 경계 [lo,hi][lo, hi]. 실무에선 경계를 데이터로부터 자동 으로 잡는 게 더 robust — 이것이 Winsorization (Charles Winsor 이름):

x~i=clip(xi,Qp(x),Q1p(x))\tilde{x}_i = \text{clip}(x_i, Q_p(x), Q_{1-p}(x))

  • QpQ_p = pp-quantile.
  • 예: p=0.05p = 0.05 → 하위 5%, 상위 95% 경계로 clip → 양쪽 꼬리 5% 씩 축소.

Trimming 과의 차이

  • Trimming: 극단값을 버림 (샘플 수 감소).
  • Winsorization: 극단값을 경계값으로 대체 (샘플 수 유지).

Winsorization 이 N 보존하므로 downstream 분석 (변형된 t-test, 회귀 등) 에 더 적합.

장단점

  • ✅ Outlier 영향 완화: 평균, 분산이 덜 흔들림.
  • ✅ robust 통계에 유용.
  • ❌ 분포 왜곡: 경계 부분에 spike 생김.
  • ❌ p 선택 heuristic (보통 0.05 또는 0.01).

과제

함수 winsorize(x, p) 를 완성하세요.

  • x shape (N,) 또는 더 높은 차원 (axis 고려 없이 전체 quantile).
  • p: 양쪽 꼬리 비율, 0 ≤ p < 0.5.
  • 반환: 같은 shape, clip 된 배열.
  • 힌트: lo = np.quantile(x, p); hi = np.quantile(x, 1-p); return np.clip(x, lo, hi).

테스트 케이스

#이름검증
1shape 유지
2p=0 → 원본 그대로
3p=0.5 → 모두 중앙값양끝 경계가 같은 값
4극단값 안전 처리outlier 가 경계값으로 대체
5평균 robustness: mean(winsorized) 는 원본 mean 보다 outlier 덜 반영
6scipy winsorize 와 일치
7정렬된 입력에서 경계 인덱스 정확
코드 작성
Loading...
실행 결과

코드를 작성하고 Run 을 눌러보세요.