将密度曲线拟合成R中的直方图

将密度曲线拟合成R中的直方图

R中是否有与直方图拟合曲线的函数?

假设你有下面的直方图

hist(c(rep(65, times=5), rep(25, times=5), rep(35, times=10), rep(45, times=4)))

它看起来很正常,但它是倾斜的。我想要拟合一个正常的曲线,是倾斜的,围绕这个直方图。

这个问题是相当基本的,但我似乎无法在互联网上找到R的答案。


慕森卡
浏览 1099回答 3
3回答

一只萌萌小番薯

如果我正确理解了您的问题,那么您可能需要一个密度估计和直方图:X&nbsp;<-&nbsp;c(rep(65,&nbsp;times=5),&nbsp;rep(25,&nbsp;times=5),&nbsp;rep(35,&nbsp;times=10),&nbsp;rep(45,&nbsp;times=4))hist(X,&nbsp;prob=TRUE)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&nbsp;prob=TRUE&nbsp;for&nbsp;probabilities&nbsp;not&nbsp;countslines(density(X))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;#&nbsp;add&nbsp;a&nbsp;density&nbsp;estimate&nbsp;with&nbsp;defaultslines(density(X,&nbsp;adjust=2),&nbsp;lty="dotted")&nbsp;&nbsp;&nbsp; &nbsp;#&nbsp;add&nbsp;another&nbsp;"smoother"&nbsp;density稍后编辑很长时间:下面是一个稍微打扮一下的版本:X&nbsp;<-&nbsp;c(rep(65,&nbsp;times=5),&nbsp;rep(25,&nbsp;times=5),&nbsp;rep(35,&nbsp;times=10),&nbsp;rep(45,&nbsp;times=4))hist(X,&nbsp;prob=TRUE,&nbsp;col="grey") #&nbsp;prob=TRUE&nbsp;for&nbsp;probabilities&nbsp;not&nbsp;countslines(density(X),&nbsp;col="blue",&nbsp;lwd=2) &nbsp;#&nbsp;add&nbsp;a&nbsp;density&nbsp;estimate&nbsp;with&nbsp;defaultslines(density(X,&nbsp;adjust=2),&nbsp;lty="dotted",&nbsp;col="darkgreen",&nbsp;lwd=2)

慕后森

这样的事情用ggplot 2很容易。library(ggplot2)dataset&nbsp;<-&nbsp;data.frame(X&nbsp;=&nbsp;c(rep(65,&nbsp;times=5),&nbsp;rep(25,&nbsp;times=5),&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rep(35,&nbsp;times=10),&nbsp;rep(45,&nbsp;times=4)))ggplot(dataset,&nbsp;aes(x&nbsp;=&nbsp;X))&nbsp;+&nbsp; &nbsp;&nbsp;geom_histogram(aes(y&nbsp;=&nbsp;..density..))&nbsp;+&nbsp; &nbsp;&nbsp;geom_density()或者模仿Dirk的解的结果ggplot(dataset,&nbsp;aes(x&nbsp;=&nbsp;X))&nbsp;+&nbsp; &nbsp;&nbsp;geom_histogram(aes(y&nbsp;=&nbsp;..density..),&nbsp;binwidth&nbsp;=&nbsp;5)&nbsp;+&nbsp; &nbsp;&nbsp;geom_density()

慕沐林林

我就是这样做的:foo&nbsp;<-&nbsp;rnorm(100,&nbsp;mean=1,&nbsp;sd=2)hist(foo,&nbsp;prob=TRUE)curve(dnorm(x,&nbsp;mean=mean(foo),&nbsp;sd=sd(foo)),&nbsp;add=TRUE)一个额外的练习就是用ggplot 2软件包来做这件事.。
打开App,查看更多内容
随时随地看视频慕课网APP