Fungsi gambaran umum data (ringkasan) di R


39

Saya yakin saya telah menemukan fungsi seperti ini dalam paket R sebelumnya, tetapi setelah Googling yang luas, saya tidak dapat menemukannya di mana pun. Fungsi yang saya pikirkan menghasilkan ringkasan grafis untuk variabel yang diberikan padanya, menghasilkan keluaran dengan beberapa grafik (histogram dan mungkin kotak dan kumis plot) dan beberapa teks yang memberikan rincian seperti mean, SD, dll.

Saya cukup yakin fungsi ini tidak termasuk dalam basis R, tapi sepertinya saya tidak dapat menemukan paket yang saya gunakan.

Apakah ada yang tahu fungsi seperti ini, dan jika demikian, paket apa yang ada di dalamnya?

Jawaban:


25

Paket Hmisc milik Frank Harrell memiliki beberapa grafik dasar dengan opsi anotasi: lihat fungsi bungkus yang summary.formula()terkait plot. Saya juga suka describe()fungsinya.

Untuk informasi tambahan, lihat di Perpustakaan Hmisc atau Pengantar S-Plus dan Perpustakaan Hmisc dan Desain .

Berikut adalah beberapa gambar yang diambil dari bantuan on-line ( bpplt, describe, dan plot(summary(...))): teks alternatif teks alternatif teks alternatif

Banyak contoh lain dapat diakses secara online pada R Graphical Manual , lihat Hmisc (dan jangan lewatkan rms ).


Semua fungsi ini ada dalam paket Hmisc, bukan Design. Terima kasih telah memposting ini.
Frank Harrell

Dua dari tiga tautan sedang rusak.
Donnied

15

Saya sangat merekomendasikan bagan fungsi. Korelasi dalam paket PerformanceAnalytics . Ini mengemas jumlah informasi yang luar biasa ke dalam bagan tunggal: plot-kernel kernel dan histogram untuk setiap variabel, dan sebar plot, smacker yang lebih rendah, dan korelasi untuk setiap pasangan variabel. Ini salah satu fungsi ringkasan data grafis favorit saya:

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

Saya suka bagan ini!


2
+1, FWIW ,? Scatterplot.matrix dalam paket mobil akan memberi Anda plot yang sama (tanpa perbedaan, misalnya, tanpa bintang & bintang).
gung - Reinstate Monica

@ung Itu fungsi yang luar biasa, terima kasih atas tipnya.
Zach

5

Saya merasa fungsi ini bermanfaat ... pegangan penulis aslinya adalah klub pernapasan .

Ini adalah contoh dari 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
Saya baru saja memperbarui kode sehingga akan melaporkan valid / missing n, dan kemudian menghilangkan nilai yang hilang untuk fungsi yang rusak oleh nilai yang hilang.
Michael Bishop

4

Saya tidak yakin apakah ini yang Anda pikirkan, tetapi Anda mungkin ingin memeriksa paket fitdistrplus . Ini memiliki banyak fungsi bagus yang secara otomatis menghasilkan informasi ringkasan yang berguna tentang distribusi Anda, dan membuat plot dari beberapa informasi itu. Berikut adalah beberapa contoh sketsa :

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

masukkan deskripsi gambar di sini

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 

masukkan deskripsi gambar di sini

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)

masukkan deskripsi gambar di sini

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

masukkan deskripsi gambar di sini

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

1

Untuk mengeksplorasi dataset saya sangat suka rattle. Instal paket dan panggil saja rattle(). Antarmukanya cukup jelas.


rattle memerlukan XML yang tidak didukung untuk Windows (dan tidak tersedia dalam biner Windows) :-(. cran.r-project.org/web/packages/XML/index.html
whuber

@whuber: sayang sekali! itu paket yang cukup rapi
nico

2
@whuber @nico File zip untuk XML dapat ditemukan misalnya di stats.ox.ac.uk/pub/RWin/bin/windows/contrib/2.13 (dan juga untuk beberapa versi lain). Ada masalah lain dengan itu, tetapi akhirnya tampaknya berhasil
Henry


0

Mungkin tidak persis apa yang Anda cari, tetapi fungsi pairs.panels () dalam paket psych untuk R mungkin terbukti bermanfaat. Ini memberi Anda nilai korelasi di diagonal atas, garis loess, dan poin di diagonal bawah, dan menunjukkan histogram skor masing-masing variabel di garis diagonal matriks. Saya pribadi berpikir itu salah satu ringkasan grafis terbaik dari data di sekitar.


0

Favorit saya adalah DescTools

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

Yang menghasilkan serangkaian plot seperti ini:

masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini dan menampilkan serangkaian nilai deskriptif (termasuk mean, meanSE, median, persentil, rentang, sd, IQR, nilai skewness, dan kurtosis): masukkan deskripsi gambar di sini

Atau, tabplot juga sangat bagus untuk tinjauan grafis.

Ini menghasilkan plot mewah dengan tableplot(iris, sortCol=Species)

masukkan deskripsi gambar di sini

Bahkan ada versi D3 tabplot, yaitu tabplotd3 .

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.