Создание графиков фитдиста с помощью ggplot2
Я установил нормальное распределение fitdist
функция от fitdistrplus
пакет. С помощью denscomp
, qqcomp
, cdfcomp
а также ppcomp
мы можем построить histogram against fitted density functions
, theoretical quantiles against empirical ones
, the empirical cumulative distribution against fitted distribution functions
, а также theoretical probabilities against empirical ones
соответственно, как указано ниже.
set.seed(12345)
df <- rnorm(n=10, mean = 0, sd =1)
library(fitdistrplus)
fm1 <-fitdist(data = df, distr = "norm")
summary(fm1)
denscomp(ft = fm1, legendtext = "Normal")
qqcomp(ft = fm1, legendtext = "Normal")
cdfcomp(ft = fm1, legendtext = "Normal")
ppcomp(ft = fm1, legendtext = "Normal")
Мне очень интересно сделать это fitdist
участки с ggplot2
, MWE ниже:
qplot(df, geom = 'blank') +
geom_line(aes(y = ..density.., colour = 'Empirical'), stat = 'density') +
geom_histogram(aes(y = ..density..), fill = 'gray90', colour = 'gray40') +
geom_line(stat = 'function', fun = dnorm,
args = as.list(fm1$estimate), aes(colour = 'Normal')) +
scale_colour_manual(name = 'Density', values = c('red', 'blue'))
ggplot(data=df, aes(sample = df)) + stat_qq(dist = "norm", dparam = fm1$estimate)
Я был бы очень признателен, если бы кто-то дал мне подсказки, чтобы сделать эти fitdist
участки с ggplot2
, Спасибо
1 ответ
Вы можете использовать что-то вроде этого:
library(ggplot2)
ggplot(dataset, aes(x=variable)) +
geom_histogram(aes(y=..density..),binwidth=.5, colour="black", fill="white") +
stat_function(fun=dnorm, args=list(mean=mean(z), sd=sd(z)), aes(colour =
"gaussian", linetype = "gaussian")) +
stat_function(fun=dfun, aes(colour = "laplace", linetype = "laplace")) +
scale_colour_manual('',values=c("gaussian"="red", "laplace"="blue"))+
scale_linetype_manual('',values=c("gaussian"=1,"laplace"=1))
вам просто нужно определить dfun
перед запуском графики. В этом примере это дистрибутив Laplace, но вы можете выбрать любой, какой захотите, и добавить еще stat_function
если ты хочешь.