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.