Trimming과 Winsorization은 이상치에 민감하지 않은 Robust Statistics의 종류입니다. 비슷한 아이디어를 가지는 방법들이지만, 어떤 차이점들이 있는지 알아보겠습니다.

Trimming

Trimming이란 데이터의 일정 cut-off(또는 quantile)을 초과하지 않는 부분만을 이용하는 방법입니다. 예를 들어, 10% trimmed mean이란 데이터의 5% ~ 95% quantile에 해당하는 값으로만 계산한 평균을 의미합니다. 즉, 5% quantile 이하, 95% quantile 이상의 데이터는 계산에서 제외한다는 의미이죠.

R로 간단히 계산해보면 다음과 같습니다.

x <- c(1,2,3,4,5,6,7,8,9,100)
mean(x)
## [1] 14.5

마지막 부분에 100이라는 outlier(이상치)가 섞여있어 평균값이 매우 커지는 것을 볼 수 있죠.

R에서는 mean 함수에 trim 옵션으로 trimming할 비율을 정하여 간단히 trimmed mean을 계산할 수 있습니다.

mean(x, trim = 0.2)
## [1] 5.5

20% trimmed mean을 계산하였더니 값이 5.5가 나오는 것을 볼 수 있습니다. 즉, 양 끝의 각각 10%에 해당하는 데이터(총 2개)를 제외하여 계산한 평균이 되는 것이고, 여기서는 1과 100이라는 값을 제외하여 계산한 값이 됩니다.

Winsorization

Trimming이 특정 quantile 바깥의 값을 제외하는 방법이었다면, Winsorization은 이를 제외하지 않고 다른값으로 대체하여 게산하는 방법입니다.

Winsorization을 할 수 있는 여러 패키지가 있지만 여기서는 DescTools라는 패키지의 Winsorize 함수를 이용해보겠습니다. probs 옵션으로 winsorize할 quantile cut-off를 정할 수 있으며, 다음과 같이 1과 100이라는 값이 각각 1.9와 18.1로 대체된 것을 볼 수 있습니다.

library(DescTools)
Winsorize(x, probs = c(0.1, 0.9))
##  [1]  1.9  2.0  3.0  4.0  5.0  6.0  7.0  8.0  9.0 18.1

1.9와 18.1이라는 값은 각각 probs 옵션으로 지정해준 quantile 값으로 정해집니다.

quantile(x, c(0.1, 0.9))
##  10%  90% 
##  1.9 18.1

그럼 위에서 winsorizing된 데이터의 평균을 계산하면 80% winsorized mean을 계산하는 것이 됩니다.

mean( Winsorize(x, probs = c(0.1, 0.9)) )
## [1] 6.4