2016-07-12 10 views
1

Ich möchte in diesem Diagramm mehrere Quantile wie in der this link hinweisen.R Mark Quantile in einem Diagramm

x <- rnorm(1000,0,1) 

me <- mean(x) 
s <- sd(x) 

y <- 1/sqrt(2*pi)/s*exp(-(x-me)^2/2/s/s) 
sx <- sort(x) 
n <- seq(1, length(sx),1) 
Px <- (3*n-1)/(3*length(sx)+1) 

plot(sx,Px) 
lines(sx, pnorm(sx, mean=me, sd = s), lwd=3, col="red") 

Welche Funktion würden Sie empfehlen? Ich habe so viele Quantile berechnet.

qq<-quantile(x,c(0.5,0.95)) 

Antwort

1

können Sie versuchen:

# data 
set.seed(1221) 
x <- rnorm(1000,0,1) 
# [your code to plot the graph] 
# Quantiles 
P <- c(0.05, .25, 0.5, 0.75, 0.95) # The quantiles you want to calculate 
qq <- quantile(x, P) 
df <- cbind(P, qq) 
# the segments 
apply(df, 1, function(x) segments(x0 = x[2], x1 = x[2], y0 = -10, y1 = x[1], lty = 2, col = 2)) 
apply(df, 1, function(x, y) segments(x0 = y-10, x1 = x[2], y0 = x[1], y1 = x[1], lty = 2, col = 2), min(x)) 

bearbeiten

# add the text, not that elegant, but it works: 
sapply(1:length(names(qq)), function(x) text(df[x,2], -0.08, bquote(Q[ ~ .(names(qq)[x])]), xpd = TRUE)) 

enter image description here

+0

, das sieht gut aus! Gibt es eine Möglichkeit, den Code so zu bearbeiten, dass nur Verweise auf die x-Achse vorhanden sind? Wenn ja, wäre es sehr hilfreich, die Quantiles Q (Index = 0,5 usw.) zu nennen. Sehr geschätzt! – Alex

+0

@Alex sehe meine letzten Änderungen. Bitte beachten Sie, dass Sie das Kontrollkästchen auf der linken Seite markieren müssen, um die Antwort zu akzeptieren. – Jimbou

+0

Das ist perfekt, vielen Dank! – Alex

0

Auf seiner gröbsten können Sie:

lines(x=c(qq[1], qq[1]), y=c(-2, 0.5), col="darkgreen", lwd=2, lty="dotted") 
lines(x=c(-5, 0), c(0.5, 0.5), col="darkgreen", lwd=2, lty="dotted") 

Und haben ein Spiel mit axis benutzerdefinierte Etiketten hinzuzufügen.