Merencanakan statistik ringkasan dengan mean, sd, min, dan maks?


10

Saya dari latar belakang ekonomi dan biasanya dalam disiplin statistik ringkasan variabel dilaporkan dalam tabel. Namun, saya ingin merencanakannya.

Saya bisa memodifikasi plot kotak untuk memungkinkannya menampilkan mean, standar deviasi, minimum dan maksimum tetapi saya tidak ingin melakukannya karena plot kotak secara tradisional digunakan untuk menampilkan median dan Q1 dan Q3.

Semua variabel saya memiliki skala yang berbeda. Akan lebih bagus jika seseorang bisa menyarankan cara yang berarti di mana saya bisa memplot statistik ringkasan ini. Saya dapat bekerja dengan R atau Stata.


1
Selamat datang di daftar. Jika Anda bertanya tentang Rperintah maka pertanyaan ini di luar topik di sini. Tapi sepertinya Anda bertanya terutama tentang seperti apa plot yang akan terlihat dan kedua tentang cara membuatnya. Jika demikian, saya sarankan menghapus "dengan R" dari judul Anda dan mungkin menyatakan, di tubuh, bahwa Anda telah Rtersedia.
Peter Flom - Reinstate Monica

Jawaban:


16

Ada alasan mengapa boxplot Tukey bersifat universal, dapat diterapkan pada data yang berasal dari distribusi yang berbeda, dari Gaussian ke Poisson, dll. normalitas. Namun, mean dan SD lebih rentan terhadap outlier, dan mereka harus ditafsirkan sehubungan dengan distribusi yang mendasarinya. Solusi di bawah ini lebih cocok untuk data normal atau log-normal. Anda dapat menelusuri pilihan langkah-langkah yang kuat di sini , dan menjelajahi paket WRS R di sini .

# simulating dataset
set.seed(12)
d1 <- rnorm(100, sd=30)
d2 <- rnorm(100, sd=10)
d <- data.frame(value=c(d1,d2), condition=rep(c("A","B"),each=100))

# function to produce summary statistics (mean and +/- sd), as required for ggplot2
data_summary <- function(x) {
   mu <- mean(x)
   sigma1 <- mu-sd(x)
   sigma2 <- mu+sd(x)
   return(c(y=mu,ymin=sigma1,ymax=sigma2))
}

# require(ggplot2)
ggplot(data=d, aes(x=condition, y=value, fill=condition)) + 
geom_crossbar(stat="summary", fun.y=data_summary, fun.ymax=max, fun.ymin=min)

Selain itu dengan menambahkan + geom_jitter()atau + geom_point()ke kode di atas Anda dapat secara bersamaan memvisualisasikan nilai data mentah.


Terima kasih kepada @Roland karena menunjukkan plot biola . Ini memiliki keuntungan dalam memvisualisasikan kepadatan probabilitas pada saat yang sama dengan statistik ringkasan:

# require(ggplot2)
ggplot(data=d, aes(x=condition, y=value, fill=condition)) + 
geom_violin() + stat_summary(fun.data=data_summary)

Kedua contoh ditunjukkan di bawah ini.

masukkan deskripsi gambar di sini


2
Saya lebih suka plot biola daripada ini.
Roland

1
Bergantung pada tujuan analisis, mean dan standar deviasi adalah apa yang Anda butuhkan. Namun saya tidak mengerti ketidakkonsistenan dalam summary.data.frame R. Ini menunjukkan cara tetapi tidak ada sds. Saya tidak bisa memikirkan banyak situasi di mana cara berguna tetapi standar deviasi menyesatkan.
Michael M

Memang, kadang-kadang Anda perlu melihat mean dan SD sehingga Anda menilai apakah mereka berguna ....
Nick Cox

1
@ TTW: Topiknya terlalu luas untuk dibahas di sini. Tapi ambil contoh evaluasi ekonomi obat: Untuk pasien, mungkin penting untuk mengetahui durasi pengobatan rata-rata, sedangkan untuk perusahaan asuransi kesehatan itu adalah durasi perawatan rata-rata karena mereka harus membayarnya untuk setiap pasien. Fakta yang aneh: Dalam kasus distribusi eksponensial, rata-rata +/- 1 standar deviasi mencakup 68% dari semua massa, rata-rata +/- 2 dtk mencakup sekitar 95% dari semua massa. Adapun yang normal. (Tapi ini hanya kebetulan;))
Michael M

1
Terima kasih semua, saya suka plot biola yang diusulkan jadi akan pergi ke depan dengan pilihan itu :-)
Ridhima

9

Ada banyak sekali kemungkinan.

Salah satu opsi yang saya lihat digunakan yang menghindari kebingungan dengan boxplots (dengan asumsi Anda memiliki median atau data asli tersedia) adalah untuk plot boxplot dan menambahkan simbol yang menandai rata-rata (mudah-mudahan dengan legenda untuk membuat ini eksplisit). Versi boxplot yang menambahkan penanda untuk nilai tengah disebutkan, misalnya dalam Frigge et al (1989) [1]:

Boxplots menunjukkan mean yang ditandai juga

Plot kiri menunjukkan simbol + sebagai penanda rata-rata dan plot kanan menggunakan segitiga di tepi, mengadaptasi penanda rata-rata dari plot balok-dan-titik tumpu Doane & Tracy [2].

Lihat juga pos SO ini dan yang ini

Jika Anda tidak memiliki (atau benar-benar tidak ingin menunjukkan) median plot baru akan diperlukan dan kemudian akan baik untuk secara visual berbeda dari boxplot.

Mungkin kira-kira seperti ini:

masukkan deskripsi gambar di sini

±

masukkan deskripsi gambar di sini

±

Jika angka Anda berada pada skala yang sangat berbeda, tetapi semuanya positif, Anda dapat mempertimbangkan bekerja dengan log, atau Anda mungkin melakukan kelipatan kecil dengan skala yang berbeda (tetapi ditandai dengan jelas)

Kode (saat ini tidak terlalu bagus 'kode', tetapi saat ini hanya mengeksplorasi ide, ini bukan tutorial tentang menulis kode R baik):

fivenum.ms=function(x) {r=range(x);m=mean(x);s=sd(x);c(r[1],m-s,m,m+s,r[2])}
eps=.015

plot(factor(c(1,2)),range(c(A,B)),type="n",border=0)
points((rep(c(1,2),each=5)),c(fivenum.ms(A),fivenum.ms(B)),col=rep(c(2,4),each=5),pch=rep(c(1,16,9,16,1),2),ylim=c(range(A,B)),cex=1.2,lwd=2,xlim=c(0.5,2.5),ylab="",xlab="")
rect(1-1.2*eps,fivenum.ms(A)[2],1+1.4*eps,fivenum.ms(A)[4],lwd=2,col=2,den=0)
rect(2-1.2*eps,fivenum.ms(B)[2],2+1.4*eps,fivenum.ms(B)[4],lwd=2,col=4,den=0)

plot(factor(c(1,2)),range(c(A,B)),type="n",border=0)
points((rep(c(1,2),each=5)),c(fivenum.ms(A),fivenum.ms(B)),col=rep(c(2,4),each=5),pch=rep(c(1,16,9,16,1),2),ylim=c(range(A,B)),cex=1.2,lwd=2,xlim=c(0.5,2.5),ylab="",xlab="")
rect(1-eps/9,fivenum.ms(A)[2],1+eps/3,fivenum.ms(A)[4],lwd=2,col=2,den=0)
rect(2-eps/9,fivenum.ms(B)[2],2+eps/3,fivenum.ms(B)[4],lwd=2,col=4,den=0)

[1] Frigge, M., DC Hoaglin, dan B. Iglewicz (1989),
"Beberapa implementasi dari plot kotak."
Ahli Statistik Amerika , 43 (Feb): 50-54.

[2] Doane DP dan RL Tracy (2000),
"Menggunakan Layar Beam dan Fulcrum untuk Menggali Data"
American Statistician , 54 (4): 289–290, November

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.