varias superponer studio paquete normal histogramas histograma gráficos graficas ggplot curva con r ggplot2

studio - superponer graficas en r ggplot



¿Manera más fácil de trazar la distribución de frecuencia acumulativa en ggplot? (3)

Aún más fácil:

qplot(unique(mydata), ecdf(mydata)(unique(mydata))*length(mydata), geom=''step'')

Estoy buscando una forma más fácil de dibujar la línea de distribución acumulativa en ggplot.

Tengo algunos datos cuyo histograma puedo mostrar inmediatamente con

qplot (mydata, binwidth=1);

Encontré una manera de hacerlo en http://www.r-tutor.com/elementary-statistics/quantitative-data/cumulative-frequency-graph pero implica varios pasos y al explorar los datos, lleva mucho tiempo.

¿Hay alguna manera de hacerlo de una manera más directa en ggplot, similar a cómo las líneas de tendencia y los intervalos de confianza se pueden agregar al especificar opciones?


Hay una función incorporada en ecdf() en R que debería facilitar las cosas. Aquí hay un código de muestra, utilizando plyr

library(plyr) data(iris) ## Ecdf over all species iris.all <- summarize(iris, Sepal.Length = unique(Sepal.Length), ecdf = ecdf(Sepal.Length)(unique(Sepal.Length))) ggplot(iris.all, aes(Sepal.Length, ecdf)) + geom_step() #Ecdf within species iris.species <- ddply(iris, .(Species), summarize, Sepal.Length = unique(Sepal.Length), ecdf = ecdf(Sepal.Length)(unique(Sepal.Length))) ggplot(iris.species, aes(Sepal.Length, ecdf, color = Species)) + geom_step()

Editar. Me acabo de dar cuenta de que quieres frecuencia acumulada. Puede obtenerlo multiplicando el valor ecdf por el número total de observaciones:

iris.all <- summarize(iris, Sepal.Length = unique(Sepal.Length), ecdf = ecdf(Sepal.Length)(unique(Sepal.Length)) * length(Sepal.Length)) iris.species <- ddply(iris, .(Species), summarize, Sepal.Length = unique(Sepal.Length), ecdf = ecdf(Sepal.Length)(unique(Sepal.Length))*length(Sepal.Length))


La nueva versión de ggplot2 (0.9.2.1) tiene una función incorporada stat_ecdf() que te permite trazar distribuciones acumulativas muy fácilmente.

qplot(rnorm(1000), stat = "ecdf", geom = "step")

O

df <- data.frame(x = c(rnorm(100, 0, 3), rnorm(100, 0, 10)), g = gl(2, 100)) ggplot(df, aes(x, colour = g)) + stat_ecdf()

Codifique muestras de la documentación de ggplot2.