Ich versuche, Gittertyp Daten mit GGPLOT2 zu plotten und dann eine Normalverteilung über die Stichprobe Daten zu überlagern, um zu veranschaulichen, wie weit entfernt von normalen die zugrunde liegenden Daten ist. Ich möchte die normale dist an der Spitze haben, um das gleiche Mittel und stdev wie das Gremium zu haben.mit stat_function und facet_wrap zusammen in GGPLOT2 in R
hier ein Beispiel:
library(ggplot2)
#make some example data
dd<-data.frame(matrix(rnorm(144, mean=2, sd=2),72,2),c(rep("A",24),rep("B",24),rep("C",24)))
colnames(dd) <- c("x_value", "Predicted_value", "State_CD")
#This works
pg <- ggplot(dd) + geom_density(aes(x=Predicted_value)) + facet_wrap(~State_CD)
print(pg)
Das alles funktioniert gut und erzeugt eine schöne drei Panel grafische Darstellung der Daten. Wie füge ich das normale dist hinzu? Es scheint, ich würde stat_function verwenden, aber dies nicht gelingt:
#this fails
pg <- ggplot(dd) + geom_density(aes(x=Predicted_value)) + stat_function(fun=dnorm) + facet_wrap(~State_CD)
print(pg)
Es scheint, dass die stat_function nicht mit der facet_wrap Funktion zusammen bekommt. Wie bekomme ich diese beiden gut zu spielen?
------------ EDIT ---------
Ich habe versucht, Ideen aus zwei der Antworten zu integrieren unten, und ich bin immer noch nicht da:
eine Kombination aus beiden Antworten mit diesem ich hacken zusammen:
library(ggplot)
library(plyr)
#make some example data
dd<-data.frame(matrix(rnorm(108, mean=2, sd=2),36,2),c(rep("A",24),rep("B",24),rep("C",24)))
colnames(dd) <- c("x_value", "Predicted_value", "State_CD")
DevMeanSt <- ddply(dd, c("State_CD"), function(df)mean(df$Predicted_value))
colnames(DevMeanSt) <- c("State_CD", "mean")
DevSdSt <- ddply(dd, c("State_CD"), function(df)sd(df$Predicted_value))
colnames(DevSdSt) <- c("State_CD", "sd")
DevStatsSt <- merge(DevMeanSt, DevSdSt)
pg <- ggplot(dd, aes(x=Predicted_value))
pg <- pg + geom_density()
pg <- pg + stat_function(fun=dnorm, colour='red', args=list(mean=DevStatsSt$mean, sd=DevStatsSt$sd))
pg <- pg + facet_wrap(~State_CD)
print(pg)
die ... außer etwas wirklich nahe ist, ist falsch mit dem normalen dist Plotten:
was mache ich hier falsch?
In Zukunft könnten Sie bitte mit Variablennamen verwenden entweder gemischte Fall _or_, aber nicht beides unterstreicht. Es bringt mich um! – hadley
ok ok, das ist ein guter Punkt. :) –
Ich habe meine "Antwort" in den Fragebereich verschoben. Ich hätte es vorwegnehmen sollen. Ich entschuldige mich bei denen, die Kommentare abgegeben haben, da sie nicht übertragen wurden. Ich werde mehr darüber nachdenken, wie ich das in der Zukunft mache. –