Présentation graphique des données (résumé) dans R

39

Je suis sûr que je suis déjà tombé sur une fonction de ce type dans un package R, mais après une longue recherche sur Google, il me semble impossible de la trouver nulle part. La fonction à laquelle je pense a produit un résumé graphique pour une variable qui lui est donnée, produisant une sortie avec quelques graphes (un histogramme et peut-être un diagramme à moustaches) et un texte donnant des détails comme la moyenne, la SD, etc.

Je suis à peu près sûr que cette fonction n'était pas incluse dans la base R, mais je n'arrive pas à trouver le paquet que j'ai utilisé.

Est-ce que quelqu'un connaît une telle fonction, et si oui, dans quel paquet se trouve-t-il?

Robintw
la source

Réponses:

25

Le paquetage Hmisc de Frank Harrell contient des graphismes de base avec des options pour les annotations: consultez les fonctions de bouclagesummary.formula() et connexes plot. J'aime aussi la describe()fonction.

Pour plus d'informations, consultez La bibliothèque Hmisc ou Une introduction à S-Plus et les bibliothèques Hmisc et Design .

Voici quelques photos prises de l'aide en ligne ( bpplt, describeet plot(summary(...))): texte alternatif texte alternatif texte alternatif

De nombreux autres exemples peuvent être consultés en ligne dans le manuel graphique R , voir Hmisc (et ne manquez pas rms ).

chl
la source
Ces fonctions sont toutes dans le paquetage Hmisc, pas dans Design. Merci d'avoir posté ceci.
Frank Harrell
Deux des trois liens sont en panne.
Donnied
15

Je recommande fortement la fonction chart.Correlations dans le package PerformanceAnalytics . Il regroupe une quantité incroyable d'informations dans un seul graphique: graphiques de densité de noyau et histogrammes pour chaque variable, diagrammes de dispersion, valeurs plus faibles et corrélations pour chaque paire de variables. C'est l'une de mes fonctions de résumé de données graphiques préférées:

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

J'adore cette carte!

Zach
la source
2
+1, FWIW, ? Scatterplot.matrix dans le paquet de voiture vous donnera un tracé similaire (w / quelques différences, par exemple, w / o étoiles et les r).
gung - Rétablir Monica
@gung C'est une excellente fonction, merci pour le tuyau.
Zach
5

J'ai trouvé cette fonction utile ... le pseudo de l'auteur d'origine est respiratoire .

Voici un exemple de sortie

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
la source
2
Je viens de mettre à jour le code pour qu'il indique n valide / manquant, puis omet les valeurs manquantes pour les fonctions cassées par des valeurs manquantes.
Michael Bishop
4

Je ne sais pas si c'est ce à quoi vous pensiez, mais vous voudrez peut-être consulter le package fitdistrplus . Cela a beaucoup de fonctions intéressantes qui génèrent automatiquement des informations de synthèse utiles sur votre distribution, et font des tracés de certaines de ces informations. Voici quelques exemples de la vignette :

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

entrez la description de l'image ici

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 

entrez la description de l'image ici

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)

entrez la description de l'image ici

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

entrez la description de l'image ici

>gofstat(fw)
Kolmogorov-Smirnov statistic:  0.1396646 
Cramer-von Mises statistic:  0.6840994 
Anderson-Darling statistic:  3.573646 
gung - Rétablir Monica
la source
1

Pour explorer l'ensemble de données que j'aime vraiment rattle. Installez le paquet et appelez simplement rattle(). L'interface est assez explicite.

Nico
la source
rattle requiert XML qui n'est pas supporté par Windows (et non disponible dans un binaire Windows) :-(. cran.r-project.org/web/packages/XML/index.html
whuber
@ Whuber: tant pis! c'est un paquet très soigné
nico
2
@whuber @nico Un fichier zip pour XML peut être trouvé, par exemple, à l' adresse stats.ox.ac.uk/pub/RWin/bin/windows/contrib/2.13 (et de la même manière pour certaines autres versions). Cela pose d'autres problèmes, mais cela semble finalement fonctionner
Henry,
0

Peut-être recherchez-vous la bibliothèque ggplot2 qui vous permet de tracer les choses de manière élégante. Ou vous pouvez consulter ce site Web qui semble avoir de nombreux utilitaires graphiques R http://addictedtor.free.fr/graphiques/

Mariana Soffer
la source
0

Ce n'est probablement pas exactement ce que vous recherchez, mais la fonction pairs.panels () dans le paquetage psychologique pour R peut s'avérer utile. Il vous donne des valeurs de corrélation dans la diagonale supérieure, des lignes de loess et des points dans la diagonale inférieure, ainsi qu'un histogramme des scores de chaque variable dans la diagonale de la matrice. Personnellement, je pense que c'est l'un des meilleurs résumés graphiques de données.

richiemorrisroe
la source
0

Mon préféré est DescTools

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

Qui produit une série de parcelles comme celles-ci:

entrez la description de l'image ici entrez la description de l'image ici et affiche une série de valeurs descriptives (y compris moyenne, moyenne SE, médiane, percentiles, plage, SD, IQR, valeurs de l'asymétrie et kurtosis): entrez la description de l'image ici

Alternativement, tabplot est également très bon pour un aperçu graphique.

Il produit des parcelles de fantaisie avec tableplot(iris, sortCol=Species)

entrez la description de l'image ici

Il y a même une version D3 tabplot, à savoir tabplotd3 .

epo3
la source