使用fitdistrplus对象绘制累积密度图,不使用直方图

时间:2017-04-01 05:53:31

标签: r plot fitdistrplus

R包fitdistrplus具有denscomp函数,用于绘制拟合的累积密度曲线以及数据的直方图。作为R新手,我很欣赏这个包中的所有情节。

是否有一种简单的方法可以在没有直方图的情况下绘制曲线?

我在文档中的histogram = FALSE函数中找不到像denscomp这样的选项。

我应该如何使用fitdist$estimate绘制累积密度曲线?

1 个答案:

答案 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分布的scaleserving参数。下面我们使用这些参数生成与上面相同的图:

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")

所有三个图如下所示:

enter image description here

如果您想将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")

enter image description here