Erstellen eines Boxplots in ggplot2 mithilfe von Zusammenfassungsstatistiken
Im Folgenden finden Sie einen Code zum Erstellen eines Boxplots mit ggplot2, den ich ändern möchte, um ihn meinem Problem anzupassen:
library(ggplot2)
set.seed(1)
# create fictitious data
a <- rnorm(10)
b <- rnorm(12)
c <- rnorm(7)
d <- rnorm(15)
# data groups
group <- factor(rep(1:4, c(10, 12, 7, 15)))
# dataframe
mydata <- data.frame(c(a,b,c,d), group)
names(mydata) <- c("value", "group")
# function for computing mean, DS, max and min values
min.mean.sd.max <- function(x) {
r <- c(min(x), mean(x) - sd(x), mean(x), mean(x) + sd(x), max(x))
names(r) <- c("ymin", "lower", "middle", "upper", "ymax")
r
}
# ggplot code
p1 <- ggplot(aes(y = value, x = factor(group)), data = mydata)
p1 <- p1 + stat_summary(fun.data = min.mean.sd.max, geom = "boxplot") + ggtitle("Boxplot con media, 95%CI, valore min. e max.") + xlab("Gruppi") + ylab("Valori")
In meinem Fall habe ich nicht die tatsächlichen Datenpunkte, sondern nur deren Mittelwert und Standardabweichung (die Daten sind normalverteilt). Also für dieses Beispiel wird es sein:
mydata.mine = data.frame(mean = c(mean(a),mean(b),mean(c),mean(d)),sd = c(sd(a),sd(b),sd(c),sd(d)),group = c(1,2,3,4))
Ich möchte aber trotzdem ein Boxplot erstellen. Ich dachte an die Definition von: ymin = Mittelwert - 3 * sd Unterer Wert = Mittelwert - sd Mittelwert = Mittelwert Oberer Wert = Mittelwert + sd
ymax = Mittelwert + 3 * sd
Aber ich weiß nicht, wie ich eine Funktion definieren soll, die über fun.data in stat_summary auf mean und sd von mydata.mine zugreift. Alternativ kann ich auch einfach benutzenrnorm
Punkte aus einem Normalen zu ziehen, parametrisiert durch den Mittelwert und den SD, den ich habe, aber die erste Option scheint mir ein bisschen eleganter und einfacher zu sein.