R包fitdistrplus具有denscomp
函数,用于绘制拟合的累积密度曲线以及数据的直方图。作为R新手,我很欣赏这个包中的所有情节。
是否有一种简单的方法可以在没有直方图的情况下绘制曲线?
我在文档中的histogram = FALSE
函数中找不到像denscomp
这样的选项。
我应该如何使用fitdist$estimate
绘制累积密度曲线?
答案 0 :(得分:1)
我不确定是否可以轻松更改denscomp
的行为,但您可以使用fitdist
返回的分发参数滚动自己的密度图。这是一个例子:
设置为在一个窗口中绘制三个图:
par(mfrow=c(3,1), mar=c(4,4,3,1))
library(fitdistrplus)
使用fitdist
的帮助中的示例创建denscomp
对象:
data(groundbeef)
serving <- groundbeef$serving
fitW <- fitdist(serving, "weibull")
现在让我们制作一个标准的denscomp
情节:
denscomp(fitW, plotstyle="graphics", main="denscomp Version")
现在我们使用fitdist
返回的参数滚动我们自己的Weibull密度。 fitW$estimate
包含shape
数据的拟合Weibull分布的scale
和serving
参数。下面我们使用这些参数生成与上面相同的图:
x=seq(0, max(serving), length=100)
serving_dwei = dweibull(x, shape=fitW$estimate["shape"], scale=fitW$estimate["scale"])
hist(serving, freq=FALSE, main="Roll Your Own")
lines(x=x, y=serving_dwei, col="red")
最后,单独的密度图:
plot(x=x, y=serving_dwei, type="l", main="Density alone", xlab="Serving", ylab="Density")
所有三个图如下所示:
如果您想将Weibull拟合与经验核密度进行比较,您可以这样做:
plot(x=x, y=serving_dwei, type="l", main="Weibull fit plus empirical density",
xlab="Serving", ylab="Density",
ylim=c(0,max(c(serving_dwei, density(serving)$y))))
lines(density(serving), col="red")