Untuk data yang terdistribusi normal, plot kotak adalah cara yang bagus untuk memvisualisasikan median dan penyebaran data dengan cepat, serta keberadaan pencilan apa pun.
Namun untuk distribusi yang lebih berat, banyak poin yang ditampilkan sebagai outlier, karena outlier didefinisikan sebagai di luar faktor tetap dari IQR, dan ini terjadi tentu saja lebih sering dengan distribusi berekor berat.
Jadi apa yang digunakan orang untuk memvisualisasikan data semacam ini? Apakah ada sesuatu yang lebih disesuaikan? Saya menggunakan ggplot pada R, jika itu penting.
r
distributions
data-visualization
data-transformation
ggplot2
static_rtti
sumber
sumber
Jawaban:
Masalah utama yang dimiliki OP adalah bahwa mereka memiliki data berekor yang sangat berat - dan saya kira sebagian besar jawaban yang ada saat ini tidak berurusan dengan masalah itu sama sekali , jadi saya mempromosikan komentar saya sebelumnya ke sebuah jawaban.
Jika Anda ingin tetap menggunakan plot box, beberapa opsi tercantum di bawah ini. Saya telah membuat beberapa data dalam R yang menunjukkan masalah mendasar:
Setengah bagian tengah data direduksi menjadi strip kecil selebar beberapa mm. Masalah yang sama menimpa sebagian besar saran lainnya - termasuk plot QQ, strip chart, plot sarang lebah / lebah, dan plot biola.
Sekarang beberapa solusi potensial:
1) transformasi ,
Jika log, atau invers menghasilkan plot box yang dapat dibaca, mereka mungkin ide yang sangat bagus, dan skala aslinya masih dapat ditampilkan pada sumbu.
Masalah besarnya adalah terkadang tidak ada transformasi 'intuitif'. Ada masalah yang lebih kecil bahwa sementara kuantil sendiri menerjemahkan dengan transformasi monoton dengan cukup baik, pagar tidak; jika Anda hanya memplot data yang ditransformasikan (seperti yang saya lakukan di sini), kumisnya akan berada pada nilai x yang berbeda dari pada plot aslinya.
Di sini saya menggunakan inverse-hyperbolic-sin (asinh); itu semacam log-seperti di ekor dan mirip dengan linear mendekati nol, tetapi orang-orang umumnya tidak menganggapnya sebagai transformasi intuitif, jadi secara umum saya tidak akan merekomendasikan opsi ini kecuali transformasi yang cukup intuitif seperti log jelas. Kode untuk itu:
2) skala istirahat - ambil outlier ekstrim dan kompres mereka ke jendela sempit di setiap ujung dengan skala yang jauh lebih terkompresi daripada di tengah. Saya sangat merekomendasikan penembusan total pada seluruh skala jika Anda melakukan ini.
3) pemangkasan outlier ekstrim (yang biasanya tidak saya sarankan tanpa menunjukkan ini dengan sangat jelas, tapi sepertinya plot berikutnya, tanpa "<5" dan "2>" di kedua ujungnya), dan
4) apa yang saya sebut ekstrim-outlier "panah" - mirip dengan pemangkasan, tetapi dengan jumlah nilai yang dipangkas ditunjukkan pada setiap ujung
sumber
Secara pribadi saya suka menggunakan stripplot dengan jitter setidaknya untuk merasakan data. Plot di bawah ini adalah dengan kisi di R (maaf tidak ggplot2). Saya suka plot ini karena sangat mudah diinterpretasikan. Seperti yang Anda katakan, satu alasan untuk ini adalah tidak ada transformasi.
The beeswarm paket menawarkan alternatif yang bagus untuk stripplot (terima kasih kepada @January untuk saran).
Dengan data Anda, karena biasanya terdistribusi secara normal, hal lain yang dapat dicoba adalah qqplot, qqnorm dalam kasus ini.
sumber
beeswarm
paket.Anda dapat menempel pada plot box. Ada berbagai kemungkinan untuk mendefinisikan kumis. Bergantung pada ketebalan ekor, jumlah sampel, dan toleransi terhadap pencilan, Anda dapat memilih dua kuantil yang lebih atau kurang ekstrim. Mengingat masalah Anda, saya akan menghindari kumis yang ditentukan melalui IQR.
Kecuali tentu saja Anda ingin mengubah data Anda, yang dalam hal ini membuat pemahaman lebih sulit.
sumber
Saya berasumsi pertanyaan ini adalah tentang memahami data (sebagai lawan dari “mengelola” itu).
Jika data tersebut berekor berat dan / atau multimodal, saya menemukan "lapisan" ggplot2 ini sangat berguna untuk tujuan:
geom_violin
dangeom_jitter
.sumber