R中是否有适合直方图曲线的函数?
假设您有以下直方图
hist(c(rep(65, times=5), rep(25, times=5), rep(35, times=10), rep(45, times=4)))
Run Code Online (Sandbox Code Playgroud)
它看起来很正常,但它是偏斜的.我想要拟合一条倾斜的正常曲线来包裹这个直方图.
这个问题相当基本,但我似乎无法在互联网上找到R的答案.
我试图用ggplot2绘制格子类型数据,然后在样本数据上叠加正态分布,以说明基础数据的正常程度.我想让顶部的正常dist与面板具有相同的均值和stdev.
这是一个例子:
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)
Run Code Online (Sandbox Code Playgroud)
这一切都很好,并产生了一个很好的三个数据面板图.如何在顶部添加正常dist?看来我会使用stat_function,但这会失败:
#this fails
pg <- ggplot(dd) + geom_density(aes(x=Predicted_value)) + stat_function(fun=dnorm) + facet_wrap(~State_CD)
print(pg)
Run Code Online (Sandbox Code Playgroud)
似乎stat_function与facet_wrap功能不相符.我如何让这两个玩得很好?
- - - - - - 编辑 - - - - -
我试图整合下面两个答案中的想法,但我仍然没有:
使用这两个答案的组合我可以一起破解这个:
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"), …Run Code Online (Sandbox Code Playgroud)