2013-10-04 2 views
1

주어진 이론 분포에 대한 상자 그림을 그릴 수 있기를 바랍니다. 예를 들어 정규 분포에 대한 상자 플롯을 그려야한다고 가정 해 봅시다. R에는 qnorm 메소드가 있습니다. 이제T의 이론적 분포에 대한 Boxplot

left.whisker <- quartiles[1] - irq * 1.5 
right.whisker <- quartiles[3] + irq * 1.5 

다음 분위 범위를 얻을 수

quartiles <- qnorm((1:3)/4) 

:

irq <- quartiles[3] - quartiles[1] 

수염을 얻을 수 있도록이 같은 첫 번째, 두 번째, 세 번째 사 분위수를 얻을 수 있습니다 어떻게 boxplot을 만들 수 있습니까?

나는 rnorm을 사용할 수 있고 bixplot 메서드를 사용할 수 있지만 이론적 인 분포를 기반으로 boxplot을 그릴 수 있기를 바랍니다. 그것은 교수법에 유용합니다. 학생들은 시뮬레이션해야하는 값의 수를 걱정할 필요가 없으며 출력은 시뮬레이트 된 값의 수에 의존하지 않습니다.

감사합니다, 니콜라

+1

SO 및 rhelp에서 일부 검색을 수행해야합니다. –

답변

-1

합니다 (boxplot 함수는 플로팅 할 bxp를 호출). 따라서 올바른 유형의 객체를 만들어서 bxp에 전달하면됩니다.

q1 <- qnorm(0.25) 
q2 <- qnorm(0.5) 
q3 <- qnorm(0.75) 

lower <- q1 - 1.5*(q3-q1) 
upper <- q3 + 1.5*(q3-q1) 

tmp.list <- list(stats=rbind(lower, q1, q2, q3, upper), 
    out=numeric(0), group=numeric(0), names='') 

bxp(tmp.list) 
+0

감사합니다. 이것은 내가 찾고 있었던 바로 그 것이다! – user2840286

+0

위의 내용은 + -1.5IQR보다는 오히려 수염의 끝으로 1 백 99 번째 백분위 수를 사용하는 것이 좋습니다. 위의 내용은 대칭 배포에서는 좋지만 비뚤어진 배포에서는 백분위 수가 더 의미가 있습니다. –

2

이이 클래스에 사용되는 경우에, 나는 변화가 사방 표준 법선은 점근 적으로 관찰되는 현실 세계에 분포의 연결을 전달하기 위해 이론적 인 분위를 실패 음모를 꾸미고 생각 .

이것은 무작위 변수와 이론적 인 분위수의 관계를 보여주는 나의 시도입니다.

rnorm을 사용하여 샘플링 중이며 geom_jitter geom을 사용하여 geom_boxplot 뒤에있는 데이터를 플로트합니다. alpha 설정을 변경하면 투명성이 영향을받습니다.

install.packages("gridExtra"); install.packages("ggplot2") 
library(gridExtra); library(ggplot2) 

df <- data.frame(list(our_rand_var = rnorm(10000, mean = 0, sd = 1))) 

p1 <- ggplot(df, aes(x = our_rand_var)) + 
    geom_density(fill = "white") + 
    ylab("") + 
    xlab("") + 
    theme(axis.text = element_text(size = 20), 
     axis.title.y = element_blank(), 
     axis.text.y = element_blank()) 

p2 <- ggplot(df, aes(x = "Our Variable", y = our_rand_var)) + 
    geom_jitter(alpha = 0.2) + 
    geom_boxplot(alpha = 0.9, colour = "red", size = 2) + 
    ylab("Standard Deviations") + 
    coord_flip() + 
    theme(axis.text = element_text(size = 20), 
     axis.title.y = element_blank(), 
     axis.text.y = element_blank()) 

grid.arrange(p1, p2, ncol = 1, 
      main = "Standard Normal Distribution (~Z)") 

1

여기에 상당히 무작위 분포의 :

당신이 graphics::boxplot.default으로, 코드를 보면
set.seed(1) 
d1 <- c(rbeta(5,1,1), runif(5)) 
boxplot(d1) 

당신이 (패키지 grDevices에서) 함수 boxplot.stats를 호출 볼 수 있습니다, 어떤 상자 플롯에 필요한 값을 제공하기 위해 호출 할 수 있습니다. 이 차례로 stats::fivenum와 메소드를 호출 x를 벡터에 적용되는 경우 : bxp 기능을 제공 요약 통계를 기반으로 상자 그림을 만드는 데 사용할 수 있습니다

x <- sort(x) 
n4 <- floor((length(x) + 3)/2)/2 
d <- c(1, n4, (length(x) + 1)/2, length(x) + 1 - n4, length(x)) 
0.5 * (x[floor(d)] + x[ceiling(d)]) 
+1

'boxplot.stats'는'fivenum'을 호출합니다. –

+0

누락되었습니다. 감사합니다. 수정되었습니다. – dardisco