답변:
Tukey의 boxplot이 보편적 인 이유가 있는데, 가우시안에서 포아송 등 다양한 분포에서 파생 된 데이터에 적용될 수 있습니다. 정상. 그러나 평균과 SD는 특이 치가 많기 때문에 기본 분포와 관련하여 해석해야합니다. 아래 솔루션은 정상 또는 로그 정규 데이터에 더 적합합니다. 여기 에서 강력한 측정 방법을 찾아보고 여기 에서 WRS R 패키지를 탐색 할 수 있습니다 .
# simulating dataset
set.seed(12)
d1 <- rnorm(100, sd=30)
d2 <- rnorm(100, sd=10)
d <- data.frame(value=c(d1,d2), condition=rep(c("A","B"),each=100))
# function to produce summary statistics (mean and +/- sd), as required for ggplot2
data_summary <- function(x) {
mu <- mean(x)
sigma1 <- mu-sd(x)
sigma2 <- mu+sd(x)
return(c(y=mu,ymin=sigma1,ymax=sigma2))
}
# require(ggplot2)
ggplot(data=d, aes(x=condition, y=value, fill=condition)) +
geom_crossbar(stat="summary", fun.y=data_summary, fun.ymax=max, fun.ymin=min)
또한 + geom_jitter()
또는+ geom_point()
코드를 동시에 미가공 데이터 값을 시각화 위에.
바이올린 음모 를 지적한 @Roland에게 감사합니다 . 요약 통계와 동시에 확률 밀도를 시각화하는 데 이점이 있습니다.
# require(ggplot2)
ggplot(data=d, aes(x=condition, y=value, fill=condition)) +
geom_violin() + stat_summary(fun.data=data_summary)
아래에 두 가지 예가 모두 나와 있습니다.
수많은 가능성이 있습니다.
박스 플롯과 혼동을 피하는 데 사용한 한 가지 옵션은 (중앙값이나 원본 데이터를 사용할 수 있다고 가정) 박스 플롯을 플롯하고 평균을 표시하는 기호를 추가하는 것입니다 (이를 명시 적으로 설명하기 위해 범례를 사용하십시오). 평균에 대한 마커를 추가하는이 박스 플롯 버전은 예를 들어 Frigge et al (1989) [1]에서 언급됩니다.
왼쪽 그림은 + 기호를 평균 마커로 표시하고 오른쪽 그림은 가장자리에 삼각형을 사용하여 Doane & Tracy의 beam-and-fulcrum plot [2]의 평균 마커를 조정합니다.
중앙값이 없거나 (또는 실제로 표시하고 싶지 않은 경우) 새 그림이 필요하며 상자 그림과 시각적으로 구분되는 것이 좋습니다.
아마도 이런 식으로 뭔가 :
숫자의 척도가 매우 다르지만 모두 양수이면 로그 작업을 고려하거나 다른 (그러나 명확하게 표시된) 척도로 작은 배수를 수행 할 수 있습니다.
코드 (현재 특히 '좋은'코드는 아니지만 아이디어를 탐색하는 중입니다. 좋은 R 코드 작성에 대한 자습서는 아닙니다) :
fivenum.ms=function(x) {r=range(x);m=mean(x);s=sd(x);c(r[1],m-s,m,m+s,r[2])}
eps=.015
plot(factor(c(1,2)),range(c(A,B)),type="n",border=0)
points((rep(c(1,2),each=5)),c(fivenum.ms(A),fivenum.ms(B)),col=rep(c(2,4),each=5),pch=rep(c(1,16,9,16,1),2),ylim=c(range(A,B)),cex=1.2,lwd=2,xlim=c(0.5,2.5),ylab="",xlab="")
rect(1-1.2*eps,fivenum.ms(A)[2],1+1.4*eps,fivenum.ms(A)[4],lwd=2,col=2,den=0)
rect(2-1.2*eps,fivenum.ms(B)[2],2+1.4*eps,fivenum.ms(B)[4],lwd=2,col=4,den=0)
plot(factor(c(1,2)),range(c(A,B)),type="n",border=0)
points((rep(c(1,2),each=5)),c(fivenum.ms(A),fivenum.ms(B)),col=rep(c(2,4),each=5),pch=rep(c(1,16,9,16,1),2),ylim=c(range(A,B)),cex=1.2,lwd=2,xlim=c(0.5,2.5),ylab="",xlab="")
rect(1-eps/9,fivenum.ms(A)[2],1+eps/3,fivenum.ms(A)[4],lwd=2,col=2,den=0)
rect(2-eps/9,fivenum.ms(B)[2],2+eps/3,fivenum.ms(B)[4],lwd=2,col=4,den=0)
[1] Frigge, M., DC Hoaglin 및 B. Iglewicz (1989),
"상자 그림의 일부 구현"
미국 통계 학자 , 43 (2 월) : 50-54.
[2] Doane DP 및 RL Tracy (2000),
"빔 및 Fulcrum 디스플레이를 사용하여 데이터 탐색"
American Statistician , 54 (4) : 289–290, 11 월
R
명령 에 대해 묻는 다면이 질문은 주제가 아닙니다. 그러나 좋은 음모가 어떻게 생겼는지, 그리고 두 번째로 음모를 만드는 방법에 대해 묻는 것 같습니다. 그렇다면 제목에서 "with R"을 삭제하고 본문에R
사용 가능함을 알리는 것이 좋습니다 .