39 votos

Función de resumen de datos en R

Estoy seguro de que he encontrado una función como esta en un paquete de R antes, pero después de una extensa búsqueda en Google parece que no puedo encontrar en cualquier lugar. La función en la que estoy pensando produce un resumen gráfico para una variable dada, produciendo una salida con algunos gráficos (un histograma y tal vez un diagrama de cajas y bigotes) y algún texto que da detalles como la media, la SD, etc.

Estoy bastante seguro de que esta función no estaba incluida en el R base, pero parece que no puedo encontrar el paquete que usé.

¿Alguien conoce una función como ésta, y si es así, en qué paquete se encuentra?

25voto

DavLink Puntos 101

Frank Harrell's Hmisc dispone de algunos gráficos básicos con opciones de anotación: consulte el paquete summary.formula() y otros relacionados plot funciones de envoltura. También me gusta el describe() función.

Para más información, consulte el La Biblioteca Hmisc o Introducción a S-Plus y a las bibliotecas Hmisc y Design .

Aquí hay algunas imágenes tomadas de la ayuda en línea ( bpplt , describe y plot(summary(...)) ): alt text alt text alt text

Se pueden consultar muchos otros ejemplos en línea en el Manual gráfico de R , ver Hmisc (y no te pierdas rms ).

0 votos

Todas estas funciones están en el paquete Hmisc, no en el de Diseño. Gracias por publicar esto.

0 votos

Dos de los tres enlaces no funcionan.

15voto

Boris Tsirelson Puntos 191

Recomiendo encarecidamente la función gráfico.Correlaciones en el paquete PerformanceAnalytics . Contiene una cantidad asombrosa de información en un solo gráfico: gráficos de densidad de kernel e histogramas para cada variable, y gráficos de dispersión, suavizadores de lowess y correlaciones para cada par de variables. Es una de mis funciones favoritas de resumen de datos gráficos:

library(PerformanceAnalytics)
chart.Correlation(iris[,1:4],col=iris$Species)

I love this chart!

2 votos

+1, FWIW, ?scatterplot.matrix en el paquete de coches le dará un gráfico similar (con algunas diferencias, por ejemplo, sin las r y las estrellas).

0 votos

@gung Es una función excelente, gracias por el consejo.

5voto

georg Puntos 1742

He encontrado esta función útil... el el mango del autor original es respiratoryclub .

Here is an example of output

f_summary <- function(data_to_plot)
{
## univariate data summary
require(nortest)
#data <- as.numeric(scan ("data.txt")) #commenting out by mike
data <- na.omit(as.numeric(as.character(data_to_plot))) #added by mike
dataFull <- as.numeric(as.character(data_to_plot))

# first job is to save the graphics parameters currently used
def.par <- par(no.readonly = TRUE)
par("plt" = c(.2,.95,.2,.8))
layout( matrix(c(1,1,2,2,1,1,2,2,4,5,8,8,6,7,9,10,3,3,9,10), 5, 4, byrow = TRUE))

#histogram on the top left
h <- hist(data, breaks = "Sturges", plot = FALSE)
xfit<-seq(min(data),max(data),length=100)
yfit<-yfit<-dnorm(xfit,mean=mean(data),sd=sd(data))
yfit <- yfit*diff(h$mids[1:2])*length(data)
plot (h, axes = TRUE, main = paste(deparse(substitute(data_to_plot))), cex.main=2, xlab=NA)
lines(xfit, yfit, col="blue", lwd=2)
leg1 <- paste("mean = ", round(mean(data), digits = 4))
leg2 <- paste("sd = ", round(sd(data),digits = 4))
count <- paste("count = ", sum(!is.na(dataFull)))
missing <- paste("missing = ", sum(is.na(dataFull)))
legend(x = "topright", c(leg1,leg2,count,missing), bty = "n")

## normal qq plot
qqnorm(data, bty = "n", pch = 20)
qqline(data)
p <- ad.test(data)
leg <- paste("Anderson-Darling p = ", round(as.numeric(p[2]), digits = 4))
legend(x = "topleft", leg, bty = "n")

## boxplot (bottom left)
boxplot(data, horizontal = TRUE)
leg1 <- paste("median = ", round(median(data), digits = 4))
lq <- quantile(data, 0.25)
leg2 <- paste("25th percentile =  ", round(lq,digits = 4))
uq <- quantile(data, 0.75)
leg3 <- paste("75th percentile = ", round(uq,digits = 4))
legend(x = "top", leg1, bty = "n")
legend(x = "bottom", paste(leg2, leg3, sep = "; "), bty = "n")

## the various histograms with different bins
h2 <- hist(data,  breaks = (0:20 * (max(data) - min (data))/20)+min(data), plot = FALSE)
plot (h2, axes = TRUE, main = "20 bins")

h3 <- hist(data,  breaks = (0:10 * (max(data) - min (data))/10)+min(data), plot = FALSE)
plot (h3, axes = TRUE, main = "10 bins")

h4 <- hist(data,  breaks = (0:8 * (max(data) - min (data))/8)+min(data), plot = FALSE)
plot (h4, axes = TRUE, main = "8 bins")

h5 <- hist(data,  breaks = (0:6 * (max(data) - min (data))/6)+min(data), plot = FALSE)
plot (h5, axes = TRUE,main = "6 bins")

## the time series, ACF and PACF
plot (data, main = "Time series", pch = 20, ylab = paste(deparse(substitute(data_to_plot))))
acf(data, lag.max = 20)
pacf(data, lag.max = 20)

## reset the graphics display to default
par(def.par)

#original code for f_summary by respiratoryclub

}

2 votos

Acabo de actualizar el código para que informe de los n válidos/faltantes, y luego omita los valores faltantes para las funciones que se rompieron por los valores faltantes.

4voto

Sean Hanley Puntos 2428

No estoy seguro de si esto es lo que estabas pensando, pero es posible que quieras comprobar el fitdistrplus paquete. Tiene un montón de buenas funciones que generan automáticamente información resumida útil sobre su distribución, y hacen gráficos de parte de esa información. Estos son algunos ejemplos del paquete viñeta :

library(fitdistrplus)
data(groundbeef)
windows()              # or quartz() for mac
  plotdist(groundbeef$serving)  

enter image description here

windows()
> descdist(groundbeef$serving, boot=1000)
summary statistics
------
min:  10   max:  200 
median:  79 
mean:  73.64567 
estimated sd:  35.88487 
estimated skewness:  0.7352745 
estimated kurtosis:  3.551384 

enter image description here

fw = fitdist(groundbeef$serving, "weibull")

>summary(fw)
Fitting of the distribution ' weibull ' by maximum likelihood 
Parameters : 
       estimate Std. Error
shape  2.185885  0.1045755
scale 83.347679  2.5268626
Loglikelihood:  -1255.225   AIC:  2514.449   BIC:  2521.524 
Correlation matrix:
         shape    scale
shape 1.000000 0.321821
scale 0.321821 1.000000

fg  = fitdist(groundbeef$serving, "gamma")
fln = fitdist(groundbeef$serving, "lnorm")
windows()
  plot(fw)

enter image description here

windows()
  cdfcomp(list(fw,fln,fg), legendtext=c("Weibull","logNormal","gamma"), lwd=2,
          xlab="serving sizes (g)")

enter image description here

>gofstat(fw)
Kolmogorov-Smirnov statistic:  0.1396646 
Cramer-von Mises statistic:  0.6840994 
Anderson-Darling statistic:  3.573646

1voto

Kevin Ballard Puntos 88866

Para explorar el conjunto de datos que realmente me gusta rattle . Instala el paquete y simplemente llama a rattle() . La interfaz se explica por sí misma.

0 votos

Rattle requiere XML que no es compatible con Windows (y no está disponible en un binario de Windows) :-(. cran.r-project.org/web/packages/XML/index.html

0 votos

@whuber: ¡qué pena! es un paquete bastante cuidado

2 votos

@whuber @nico Un archivo zip para XML se puede encontrar por ejemplo en stats.ox.ac.uk/pub/RWin/bin/windows/contrib/2.13 (y de forma similar para algunas otras versiones). Hay otros problemas con él, pero finalmente parece que funciona

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X