특이 치를 드러내 기 위해 평균과 표준 편차를 하나만 남겨 둘 수 있습니까?


17

정규적으로 데이터를 분산했다고 가정합니다. 데이터의 각 요소에 대해 평균에서 얼마나 많은 SD가 있는지 확인하고 싶습니다. 데이터에 특이 치가있을 수 있지만 (하나만 가능하지만 2 ~ 3 일 수도 있음),이 특이 치는 기본적으로 내가 찾고있는 것입니다. 현재보고있는 요소를 평균 및 SD 계산에서 일시적으로 제외하는 것이 합리적입니까? 내 생각은 그것이 평균에 가까워지면 아무런 영향을 미치지 않는다는 것입니다. 특이 치인 경우 평균 및 SD 계산을 바이어스하고 감지 가능성을 낮출 수 있습니다. 나는 통계학자가 아니므로 도움을 주시면 감사하겠습니다!


7
완벽한 의미를 지니고 있으며 많은 이상치 탐지 기술의 기초입니다. 그러나 작동하지 않을 수도 있고 작동하지 않을 수도있는 자신의 방법을 발명하는 대신 (후자는 통계학자가 새로 발명 한 방법으로 훨씬 가능성이 높으므로 신중한 연구가 필요한 이유) 이론적으로 사용 된 방법을 사용하지 않는 이유는 무엇입니까? 확인되고 경험적으로 테스트 되었습니까?
whuber

지적 해 주셔서 감사합니다. 이러한 기술을 살펴보고 내 데이터에서 잘 수행되는지 확인합니다.
Oliver

1
R에 회귀 삭제 진단에이 페이지를 체크 아웃 : stat.ethz.ch/R-manual/R-patched/library/stats/html/...
벤 Ogorek

.... 그리고 하나 이상의 이상 값을 찾는 데 의존 할 수없는 이유를 보여주는 답변.
user603

특이 치 플래그 지정에 대한 위의 위대한 생각. 언젠가는 예외 플래그 지정에 대한 손실 통과 필터에 대한 기사를 작성했습니다. 위의 아이디어를 확장하는 데 도움이되기를 바랍니다. 기사 링크 : datascience.com/blog/python-anomaly-detection
Pramit

답변:


25

직관적이지 않은 것처럼 보일 수도 있지만 설명하는 접근 방식을 사용하는 것은 말이 되지 않습니다 (말로 표현하기 위해 "결과가 의도 한 것과는 매우 다른 결과를 초래할 수 있습니다"라고 쓰십시오). 그것은 작동하지 않으며 결과적으로 추가 비용없이 사용할 수있는 더 간단하고 훨씬 안전하며 더 나은 대안이 있습니다.

첫째, 특이 치가 하나 인 경우 제안한 절차에 따라 결과를 찾을 수 있습니다. 그러나 일반적으로 (데이터에 하나 이상의 특이 치가있을 때), 제안한 알고리즘은 좋은 데이터 포인트를 특이 치로 거부하거나 특이 치를 좋은 데이터 포인트로 유지하도록 잠재적으로 의미가 있습니다. 잠재적으로 치명적인 결과를 초래합니다.

아래에서는 제안하는 규칙이 세분화되고 훨씬 안전하고 확실한 대안을 제안하는 간단한 수치 예를 제시하지만이 전에 a) 제안한 방법에 어떤 문제가 있는지, b) 일반적으로 선호하는 사항에 대해 설명하겠습니다. 그것에 대한 대안입니다.

본질적으로, 사용하는 추정치 (평균과 표준 편차는 그대로 남음)가 여전히 나머지를 향하여 당겨지기 쉬우므로, 데이터의 평균 한도 및 표준 편차로부터 관측 거리를 사용하여 특이 치를 탐지 할 수 없습니다 특이 치 :이를 마스킹 효과라고합니다.

간단히 말해서 이상 값을 안정적으로 감지하는 한 가지 간단한 방법은 제안한 일반적인 아이디어 (위치 및 스케일의 추정치로부터의 거리)를 사용하지만 사용한 추정값을 하나의 평균, sd를 제외하고 강력한 것으로 대체하는 것입니다. 특이 치에 의해 좌우되는 경향이 훨씬 적습니다.

Normal 0,1에서 가져온 47 개의 실제 관측치에 3 개의 특이 치를 추가하는이 예를 고려하십시오.

n    <- 50
set.seed(123)  # for reproducibility
x    <- round(rnorm(n,0,1), 1)
x[1] <- x[1]+1000
x[2] <- x[2]+10
x[3] <- x[3]+10

아래 코드는 1 차 평균과 표준 편차 (예 : 제안한 접근 방식)를 기준으로 외곽 지수를 계산합니다.

out_1 <- rep(NA,n)
for(i in 1:n){  out_1[i] <- abs( x[i]-mean(x[-i]) )/sd(x[-i])  }

이 코드는 아래에 표시된 플롯을 생성합니다.

plot(x, out_1, ylim=c(0,1), xlim=c(-3,20))
points(x[1:3], out_1[1:3], col="red", pch=16)

이미지 1은 관측치 값의 함수로 외곽 지수의 값을 나타냅니다 (이상치에서 가장 먼 거리는이 그림의 범위를 벗어나지 만 다른 두 개는 빨간색 점으로 표시됨). 실제로 두 번째와 세 번째 (온화한) 이상 값이 지금도 (당신의 outlyingness 지수) 값이보다 작은 : 당신이 볼 수 있듯이 당신이 이상치 공개 실패 제안으로, 가장 극단적 인의 하나를 제외하고 outlyingness 인덱스 구성 을 모두당신이 제안한 접근법 하에서,이 두 개의 극단적 인 특이 값을 진정한 관측 값 세트로 유지함으로써, 49 개의 남은 관측 값을 마치 동일한 균질 프로세스에서 나온 것처럼 사용할 수있게되어 최종 결과를 얻게됩니다 0.449 및 2.32의 49 개 데이터 포인트를 기반으로 한 평균 및 sd의 추정치 ( 샘플 의 부분에 대한 매우 잘못된 설명) !

이미지 2

엑스나는엑스

영형(엑스나는,엑스)=|엑스나는메드(엑스)|미친(엑스)

메드(엑스)엑스미친(엑스)

R에서이 두 번째 외곽 지수는 다음과 같이 계산 될 수 있습니다.

out_2 <- abs( x-median(x) )/mad(x)

다음을 사용하여 (이전과 같이) 플롯했습니다.

plot(x, out_2, ylim=c(0,15), xlim=c(-3,20))
points(x[1:3], out_2[1:3], col="red", pch=16)

이미지 2

이미지 2는 동일한 데이터 세트에 대한이 대체 외곽 지수의 값을 나타냅니다. 보시다시피, 이제 세 가지 특이 치 모두 명확하게 드러납니다. 또한이 이상치 탐지 규칙에는 몇 가지 기존 통계 속성이 있습니다. 이는 무엇보다도 사용 가능한 차단 규칙으로 이어집니다. 예를 들어, 데이터의 실제 부분이 유한 한 순간의 대칭 분포에서 도출 된 것으로 가정 할 수있는 경우 모든 데이터 포인트를 거부 할 수 있습니다.

|엑스나는메드(엑스)|미친(엑스)>3.5

이상 값으로. 위의 예에서이 규칙을 적용하면 관측치 1,2 및 3에 올바르게 플래그를 지정할 수 있습니다.이를 거부하면 나머지 관측치의 평균 및 SD는 0.021 및 0.93이며, 표본의 실제 부분에 대한 훨씬 더 나은 설명입니다. !


2
첫 번째 문장에도 불구하고 +1. 즉시 모순됩니다 (OP의 제안 최대 1 개의 이상 값을 가정 할 때 의미가 있습니다. 반대는 가정을 위반 한 경우이 절차의 문제와 관련이 있습니다).
whuber

1
감사합니다. 그 동안 이전 의견을 삭제 한 후에는 수정 후 의견이 더 이상 사용되지 않을 것으로 예상됩니다.
whuber

3
여러 특이 치가 단일 특이 치 탐지를 눈에 띄지 않게 만드는 현상을 종종 마스킹 이라고 합니다. 이는 사람들이 문제와 관련된 추가 정보를 찾는 데 도움이 될 수 있습니다.
Glen_b-복지 주 모니카

1
@ user603 예시적인 시나리오를 만드는 좋은 일이지만, 당신은 목욕물로 아기를 버리고 있다고 생각합니다. 회귀 삭제 진단은 완벽하지는 않지만 광범위하게 적용 가능하며 시간 테스트를 거쳤습니다. 중간 값을 취하는 것은 좋지만 더 복잡한 우도 기반 모델로 접근 방식을 확장하는 방법이 궁금합니다.
Ben Ogorek

2
+6, 이것은 코드, 그림 및 수식으로 표시된 명확하고 철저하게 설명 된 훌륭한 답변입니다. 좀 더 읽기 쉽도록 코드 형식을 약간 조정했습니다. 마음에 들지 않으면 사과와 함께 롤백하십시오.
gung-복원 Monica Monica
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.