Grafische Datenübersicht (Zusammenfassung) in R

39

Ich bin mir sicher, dass ich zuvor in einem R-Paket auf eine Funktion wie diese gestoßen bin, aber nach ausgiebigem Googeln kann ich sie anscheinend nirgendwo finden. Die Funktion, an die ich denke, hat eine grafische Zusammenfassung für eine gegebene Variable erstellt, die eine Ausgabe mit einigen Grafiken (einem Histogramm und vielleicht einem Box- und Whisker-Plot) und einem Text mit Details wie Mittelwert, SD usw. erzeugt.

Ich bin mir ziemlich sicher, dass diese Funktion nicht in Base R enthalten war, aber ich kann das verwendete Paket anscheinend nicht finden.

Kennt jemand eine Funktion wie diese und wenn ja, in welchem ​​Paket ist sie?

robintw
quelle

Antworten:

25

Das Hmisc- Paket von Frank Harrell enthält einige grundlegende Grafiken mit Optionen für Anmerkungen: Schauen Sie sich die summary.formula()zugehörigen plotWrap-Funktionen an. Mir gefällt auch die describe()Funktion.

Weitere Informationen finden Sie in der The Hmisc Library oder in einer Einführung in S-Plus sowie in den Hmisc- und Design Libraries .

Hier sind einige Bilder aus der Online-Hilfe genommen ( bpplt, describe, und plot(summary(...))): Alt-Text Alt-Text Alt-Text

Viele andere Beispiele können online im R Graphical Manual nachgeschlagen werden , siehe Hmisc (und verpassen Sie nicht den Effektivwert ).

chl
quelle
Diese Funktionen sind alle im Hmisc-Paket enthalten, nicht im Design. Danke, dass du das gepostet hast.
Frank Harrell
Zwei der drei Links sind ausgefallen.
Donnied
15

Ich kann den Funktionsplan nur empfehlen. Zusammenhänge im Paket PerformanceAnalytics . Es enthält eine erstaunliche Menge an Informationen in einem einzigen Diagramm: Diagramme und Histogramme der Kerneldichte für jede Variable sowie Streudiagramme, Glättungswerte und Korrelationen für jedes Variablenpaar. Es ist eine meiner Lieblingsfunktionen für die grafische Datenzusammenfassung:

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

Ich liebe diese Grafik!

Zach
quelle
2
+1, FWIW, ? Scatterplot.matrix im Auto - Paket wird Ihnen eine ähnliche Darstellung (w / einige Unterschiede, zB w / o der R & Sterne).
gung - Wiedereinsetzung von Monica
@gung Das ist eine hervorragende Funktion, danke für den Tipp.
Zach
5

Ich fand diese Funktion hilfreich ... der Griff des ursprünglichen Autors ist respiratoryclub .

Hier ist ein Beispiel für die Ausgabe

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
quelle
2
Ich habe den Code soeben aktualisiert, dass er gültiges / fehlendes n meldet und dann die fehlenden Werte für die Funktionen weglässt, die durch fehlende Werte unterbrochen wurden.
Michael Bishop
4

Ich bin mir nicht sicher, ob Sie daran gedacht haben, aber vielleicht möchten Sie das fitdistrplus- Paket ausprobieren . Dies hat viele nette Funktionen, die automatisch nützliche zusammenfassende Informationen über Ihre Distribution generieren und Plots von einigen dieser Informationen erstellen. Hier einige Beispiele aus der Vignette :

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

Bildbeschreibung hier eingeben

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 

Bildbeschreibung hier eingeben

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)

Bildbeschreibung hier eingeben

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

Bildbeschreibung hier eingeben

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

Den Datensatz zu erkunden gefällt mir sehr gut rattle. Installieren Sie das Paket und rufen Sie einfach an rattle(). Die Oberfläche ist selbsterklärend.

nico
quelle
Für Rattle ist XML erforderlich, das für Windows nicht unterstützt wird (und in einer Windows-Binärdatei nicht verfügbar ist) :-(. cran.r-project.org/web/packages/XML/index.html
whuber
@whuber: schade! Es ist ein ziemlich ordentliches Paket
Nico
2
@whuber @nico Eine Zip-Datei für XML finden Sie zum Beispiel unter stats.ox.ac.uk/pub/RWin/bin/windows/contrib/2.13 (und ähnlich für einige andere Versionen). Es gibt andere Probleme damit, aber irgendwann scheint es zu funktionieren
Henry
0

Vielleicht suchen Sie nach der Bibliothek ggplot2, mit der Sie Dinge auf hübsche Weise zeichnen können. Oder Sie können diese Website besuchen, auf der anscheinend viele R-Grafikdienstprogramme zu finden sind. Http://addictedtor.free.fr/graphiques/

mariana weicher
quelle
0

Es ist wahrscheinlich nicht genau das, wonach Sie suchen, aber die pairs.panels () -Funktion im psych-Paket für R kann sich als nützlich erweisen. Es gibt Ihnen Korrelationswerte in der oberen Diagonale, Lösslinien und Punkte in der unteren Diagonale und zeigt ein Histogramm der Punktzahlen jeder Variablen in der diagonalen Linie der Matrix. Ich persönlich denke, es ist eine der besten grafischen Zusammenfassungen von Daten.

richiemorrisroe
quelle
0

Mein Favorit ist DescTools

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

Was eine Reihe von Plots wie diese erzeugt:

Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben und zeigt eine Reihe von beschreibenden Werten an (einschließlich Mittelwert, MittelwertSE, Median, Perzentile, Bereich, SD, IQR, Werte für Schiefe und Kurtosis): Bildbeschreibung hier eingeben

Alternativ ist tabplot auch sehr gut für eine grafische Übersicht.

Es produziert ausgefallene Parzellen mit tableplot(iris, sortCol=Species)

Bildbeschreibung hier eingeben

Es gibt sogar eine D3 - Version tabplot, dh tabplotd3 .

epo3
quelle