0

R 包fitdistrplus具有denscomp绘制拟合累积密度曲线以及数据直方图的功能。作为一个 R 新手,我很欣赏这个包中所有可用的地块。

有没有一种简单的方法来绘制没有直方图的曲线?

histogram = FALSE我在文档中的denscomp函数中找不到类似的选项。

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

4

1 回答 1

2

我不确定是否有一种简单的方法可以改变 的行为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")

现在我们将使用返回的参数滚动我们自己的 Weibull 密度fitdistfitW$estimate包含数据的拟合 Weibull 分布的shape和参数。下面我们使用这些参数生成与上面相同的图: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")

所有三个图如下所示:

在此处输入图像描述

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

在此处输入图像描述

于 2017-04-01T06:20:06.307 回答