2015-01-27 2 views
2

아웃 라이어를 볼 수 있도록 boxplot (ggplot의 geom_boxplot 사용)으로 데이터를 변환했습니다. 이후에 나는 데이터에서 그것들을 제거하기를 원했다. 그래서 "ggplot_build"를 사용하여 플롯의 모든 정보를 얻은 다음 새 이름으로 저장했습니다.박스 플롯 다이어그램의 결과를 사용하여 데이터 프레임에서 아웃 라이어를 서브 세트

Outlier_boxplot<-ggplot_build(boxplot) 

이제 아웃 라이어가있는 열을 추출 할 수있었습니다. 다음 단계에서는 추출 된 아웃 라이어와 동일하지 않은 my data.frame의 값만 선택하기 위해 "하위 집합"기능을 사용했습니다.

Without_Outlier_dF<-subset(round(dF[1],digits=3),Test !=c(round(Outlier_boxplot$data[[1]]$outliers[[4]],digits=3)))) 

거의 모든 경우에 잘 작동했습니다. 문제는 때로는 가치 (심지어 동일하게 보일지라도)가 빠지지 않는다는 것입니다. 값 data.frame의

추출 :

-234,347 75,764 93,34 95,237 99,005 100,044 97,924 98,875 98,072 99,569 98,848 98,414 99,33 96,901 99,29 100,359 99,169 97,828 97,146 97,229 94,278 97,146 97,229 94,278 

이상 치는

-234.347 75.764 93.340 94.278 

결과 : 94,278

95,237 99,005 100,044 97,924 98,875 98,072 99,569 98,848 98,414 99,33 96,901 99,29 100,359 99,169 97,828 97,146 97,229 94,278 

이상 치는이 값을 제외하고 제거는 이미 (모든 값을 반올림 시도 당신이 볼 수 있듯이) 도움이되지 않았습니다. 아이디어가 있습니까?

답변

0

geom_boxplot 위와 아래 수염의 위치를 ​​계산하려면 boxplot.stats을 호출하십시오. 당신도 할 수 있습니다 극단적 인을 포함,

통계 길이 5의 벡터 다음 boxplot.stats 문서에서

:

> boxplot.stats(v) 
$stats 
[1] 93.340 96.069 97.876 99.087 100.359 

$n 
[1] 24 

$conf 
[1] 96.90265 98.84935 

$out 
[1] -234.347 75.764 

(v는 입력 데이터 벡터로 가정) 하단의 '힌지', 중앙값, 상단의 '힌지'및 상단의 위스커의 극단이 아래에 표시됩니다.

n 표본에서 비 NA 관측치의 수.

conf 'notch'(if (do.conf))의 하단과 상단을 conf로 설정합니다. 세부 사항은 을 참조하십시오.

위스커 (if (do.out))의 극단을 넘는 모든 데이터 요소의 값을 출력합니다.

추가 분석을 위해 필요할 수있는 모든 데이터가 포함되어 있다고 생각합니다.

+0

감사합니다. 이것은 나를 많이 도왔다. 하위 커맨드 명령의 한계로 상위 위저 수염의 극치를 사용한 다음 모든 이상 치를 제거했습니다. – user3641144

관련 문제