2015-07-27 19 views
9

Ho installato la distribuzione normale con la funzione fitdist dal pacchetto fitdistrplus. Utilizzando denscomp, qqcomp, cdfcomp e ppcomp possiamo tracciare histogram against fitted density functions, theoretical quantiles against empirical ones, the empirical cumulative distribution against fitted distribution functions e theoretical probabilities against empirical ones rispettivamente come indicato di seguito.Creazione di grafici fitdist con ggplot2

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

enter image description here

qqcomp(ft = fm1, legendtext = "Normal") 

enter image description here

cdfcomp(ft = fm1, legendtext = "Normal") 

enter image description here

ppcomp(ft = fm1, legendtext = "Normal") 

enter image description here

Sono molto interessato a rendere questi grafici fitdist con ggplot2. MWE è qui sotto:

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

enter image description here

ggplot(data=df, aes(sample = df)) + stat_qq(dist = "norm", dparam = fm1$estimate) 

vivamente grato se qualcuno mi dia suggerimenti per rendere questi fitdist trame con ggplot2. Grazie

+3

Se questo non avesse un premio allegato voterei per chiudere come troppo ampio. Ogni grafico dovrebbe essere una domanda diversa (anche se potresti non aver bisogno di chiedere per ogni grafico se hai avuto una risposta per uno o due di essi). – Roland

risposta

2

si potrebbe usare qualcosa di simile:

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

si solo bisogno di definire dfun prima di eseguire il grafico. In questo esempio, si tratta di una distribuzione di Laplace, ma puoi sceglierne uno e aggiungerne altri stat_function se lo desideri.