ggplot2 を使用して格子型データをプロットし、サンプル データに正規分布を重ね合わせて、基になるデータが正規からどれだけ離れているかを示します。パネルと同じ平均と標準偏差を持つために、通常のdistを上に置きたいと思います。
例を次に示します。
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)
それはすべてうまく機能し、データの素晴らしい 3 パネル グラフを生成します。上に通常の dist を追加するにはどうすればよいですか? stat_function を使用するようですが、これは失敗します。
#this fails
pg <- ggplot(dd) + geom_density(aes(x=Predicted_value)) + stat_function(fun=dnorm) + facet_wrap(~State_CD)
print(pg)
stat_function が facet_wrap 機能に対応していないようです。この2人をうまくプレイさせるにはどうすればいいですか?
- - - - - - 編集 - - - - -
以下の2つの回答からのアイデアを統合しようとしましたが、まだそこにはありません:
両方の答えを組み合わせて使用すると、これをハックできます。
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)
これは本当に近いです...通常のdistプロットに何か問題があることを除いて:
ここで何が間違っていますか?