построение графика кумулятивной плотности с использованием объекта fitdistrplus без гистограммы

В пакете R fitdistrplus есть функция denscomp, которая отображает кумулятивная кривая плотности вместе с гистограммой данных. Как новичок в R, я ценю все сюжеты, доступные в этом пакете.

Есть ли простой способ просто построить кривую без гистограммы?

Я не смог найти параметр, подобный histogram = FALSE в функции denscomp в документации.

Как мне использовать fitdist$estimate, чтобы построить только кривую кумулятивной плотности?


person geog_newbie    schedule 01.04.2017    source источник
comment
объяснение отрицательного голоса было бы полезно!   -  person geog_newbie    schedule 01.04.2017


Ответы (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. fitW$estimate содержит параметры shape и 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")

Все три графика показаны ниже:

введите здесь описание изображения

Если вы хотите сравнить подгонку Вейбулла с эмпирической плотностью ядра, вы можете сделать это:

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

введите здесь описание изображения

person eipi10    schedule 01.04.2017
comment
СПАСИБО за развернутый и понятный ответ. Недостающим звеном для меня было использование функции плотности (dweibull). - person geog_newbie; 01.04.2017