Función de resumen de datos gráficos (resumen) en R

39

Estoy seguro de que he encontrado una función como esta en un paquete R antes, pero después de buscar en Google, parece que no puedo encontrarla en ningún lado. La función en la que estoy pensando produjo un resumen gráfico para una variable dada, produciendo resultados con algunos gráficos (un histograma y tal vez un diagrama de caja y bigotes) y algunos textos que dan detalles como media, SD, etc.

Estoy bastante seguro de que esta función no se incluyó en la base R, pero parece que no puedo encontrar el paquete que utilicé.

¿Alguien sabe de una función como esta, y si es así, en qué paquete está?

robintw
fuente

Respuestas:

25

El paquete Hmisc de Frank Harrell tiene algunos gráficos básicos con opciones de anotación: consulte las funciones de ajustesummary.formula() y relacionadas plot. También me gusta la describe()función.

Para obtener información adicional, eche un vistazo a The Hmisc Library o An Introduction to S-Plus y Hmisc and Design Libraries .

Aquí hay algunas fotos tomadas de la ayuda en línea ( bpplt, describey plot(summary(...))): texto alternativo texto alternativo texto alternativo

Muchos otros ejemplos se pueden navegar en línea en el Manual gráfico de R , vea Hmisc (y no se pierda rms ).

chl
fuente
Estas funciones están todas en el paquete Hmisc, no en Design. Gracias por publicar esto.
Frank Harrell el
Dos de los tres enlaces están caídos.
Donnied
15

Recomiendo encarecidamente el gráfico de funciones. Correlaciones en el paquete PerformanceAnalytics . Empaqueta una cantidad sorprendente de información en un solo gráfico: gráficos de densidad del núcleo e histogramas para cada variable, y gráficos de dispersión, suavizadores bajos 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)

¡Me encanta esta tabla!

Zach
fuente
2
1, Fwiw, ? Scatterplot.matrix en el paquete de coche le dará una trama similar (w / algunas diferencias, por ejemplo, w / o de estrellas y el r).
gung - Restablece a Monica
@gung Esa es una función excelente, gracias por la sugerencia.
Zach
5

He encontrado útil esta función ... el identificador del autor original es el club respiratorio .

Aquí hay un ejemplo de salida

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

}
Michael Bishop
fuente
2
Acabo de actualizar el código para que informe n válido / faltante, y luego omite los valores faltantes para las funciones que se rompieron por los valores faltantes.
Michael Bishop
4

No estoy seguro de si esto es lo que estaba pensando, pero es posible que desee consultar el paquete fitdistrplus . Esto tiene muchas funciones agradables que generan automáticamente información de resumen útil sobre su distribución, y trazan parte de esa información. Aquí hay algunos ejemplos de la viñeta :

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

ingrese la descripción de la imagen aquí

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 

ingrese la descripción de la imagen aquí

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)

ingrese la descripción de la imagen aquí

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

ingrese la descripción de la imagen aquí

>gofstat(fw)
Kolmogorov-Smirnov statistic:  0.1396646 
Cramer-von Mises statistic:  0.6840994 
Anderson-Darling statistic:  3.573646 
gung - Restablece a Monica
fuente
1

Para explorar el conjunto de datos que realmente me gusta rattle. Instale el paquete y solo llame rattle(). La interfaz es bastante autoexplicativa.

nico
fuente
sonajero 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
whuber
@whuber: ¡qué pena! es un paquete bastante ordenado
nico
2
@whuber @nico Se puede encontrar un archivo zip para XML, por ejemplo, en stats.ox.ac.uk/pub/RWin/bin/windows/contrib/2.13 (y de manera similar para algunas otras versiones). Hay otros problemas con él, pero finalmente parece funcionar
Henry
0

Tal vez estás buscando la biblioteca ggplot2 que te permite trazar las cosas de una manera bonita. O puede consultar este sitio web que parece tener muchas utilidades gráficas R http://addictedtor.free.fr/graphiques/

mariana más suave
fuente
0

Probablemente no sea exactamente lo que está buscando, pero la función pares.panels () en el paquete psicológico para R puede resultar útil. Le proporciona valores de correlación en la diagonal superior, líneas de loess y puntos en la diagonal inferior, y muestra un histograma de las puntuaciones de cada variable en la línea diagonal de la matriz. Personalmente, creo que es uno de los mejores resúmenes gráficos de datos.

richiemorrisroe
fuente
0

Mi favorito es DescTools

library(DescTools)
data("iris")
Desc(iris, plotit = T)

Lo que produce una serie de tramas como estas:

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí y muestra una serie de valores descriptivos (incluyendo media, media SE, mediana, percentiles, rango, SD, IQR, valores de asimetría y curtosis): ingrese la descripción de la imagen aquí

Alternativamente, tabplot también es muy bueno para una descripción gráfica.

Produce parcelas elegantes con tableplot(iris, sortCol=Species)

ingrese la descripción de la imagen aquí

Incluso hay una versión D3 de tabplot, es decir, tabplotd3 .

epo3
fuente