mad
함수를 사용하여 R
의 stats
패키지에서 outliers를 식별합니다. aggregate
사용, 정말 같은 요인 수준의 각각의 고유 한 조합에 대해 경계 값을 찾을 수 있습니다집계 결과를 부분 집합 데이터로 사용 R
require(stats)
set.seed(492)
y <- rnorm(2000)
x1 <- sample(letters[1:2], 2000,T)
x2 <- sample(letters[1:2], 2000,T)
df <- data.frame(y,x1,x2)
boundaries <- aggregate(df$y, list(df$x1, df$x2), function(x) cbind(median(x)
+ (3*mad(x)), median(x) - (3*mad(x))))
주는 :
+---------------------------------------+
| Group.1 Group.2 x.1 x.2 |
+---------------------------------------+
| 1 a a 2.875560 -2.809068 |
| 2 b a 2.867109 -2.843691 |
| 3 a b 3.137889 -2.960135 |
| 4 b b 3.091169 -3.134296 |
+---------------------------------------+
x.1
은 상한과 x.2
은 하한이다. 하위 수준의 을 사용하여 요인 수준의 각 조합에 대해 이상 값이 제거되도록합니다. 예를 들어, 2.88 이상 또는 -2.80보다 큰 값은 원하지 않지만 ab의 경우에는 상한값을 3.14로 설정하고 낮은 컷 - 오프는 -2.96이다.
은 지금까지 내가 by
를 사용하여 시도했지만, 그것은 길이가 0 행에있는 데이터 프레임 반환 : 모든 지침은 많이 감사합니다
by(df$y, list(df$x1, df$x2), function(x) df[which(df$y>(median(x) + (3*mad(x))) & df$y<(median(x) - (3*mad(x)))),])
합니다.
"x.2"도 하단 컷오프를 나타 냅니까? – A5C1D2H2I1M1N2O1R2T1
예, 죄송합니다! 나는 그 질문에서 분명히 할 것이다. – luser