Bagaimana saya mengabaikan outlier di boxplot ggplot2? Saya tidak hanya ingin mereka menghilang (yaitu outlier.size = 0), tetapi saya ingin mereka diabaikan sehingga sumbu y menunjukkan skala untuk menunjukkan 1/3 persentil. Pencilan saya menyebabkan "kotak" menyusut begitu kecil sehingga praktis sebuah garis. Apakah ada beberapa teknik untuk mengatasi ini?
Edit Ini contohnya:
y = c(.01, .02, .03, .04, .05, .06, .07, .08, .09, .5, -.6)
qplot(1, y, geom="boxplot")
fivenum()
pada data untuk mengekstrak apa, IIRC, digunakan untuk engsel atas dan bawah pada boxplots dan gunakan output itu dalamscale_y_continuous()
panggilan yang ditunjukkan @Ritchie. Ini dapat diotomatisasi dengan sangat mudah menggunakan alat R dan ggplot menyediakan. Jika Anda juga perlu memasukkan kumis, pertimbangkanboxplot.stats()
untuk menggunakan untuk mendapatkan batas atas dan bawah untuk kumis dan gunakan kemudianscale_y_continuous()
.Jawaban:
Berikut ini adalah solusi menggunakan boxplot.stats
sumber
ylim <- c(-0.1, 1000) * 1.05
memberi[1] 0.105 1050
. Untuk mendapatkan batas yang sama di sekitar rata-rata yang bisa Anda gunakanylim + c(-0.05, 0.05) * diff(ylim) / 2
. Lebih cantik menurut saya.facet_grid()
. Maka Anda memiliki banyak boxplots, bukan satu. Dengan demikian Anda tidak mendapatkan batas yang tepat.Gunakan
geom_boxplot(outlier.shape = NA)
untuk tidak menampilkan outlier danscale_y_continuous(limits = c(lower, upper))
untuk mengubah batas sumbu.Sebuah contoh.
Sebenarnya, seperti yang ditunjukkan Ramnath dalam jawabannya (dan Andrie juga dalam komentar), lebih masuk akal untuk memotong skala setelah Anda menghitung statistik, via
coord_cartesian
.(Anda mungkin masih harus menggunakan
scale_y_continuous
untuk memperbaiki istirahat sumbu.)sumber
coord_cartesian()
tidak bermain dengan baikcoord_flip()
, dalam pengalaman saya, jadi saya lebih sukascale_y_continuous()
.Saya memiliki masalah yang sama dan menghitung nilai untuk Q1, Q2, median, ymin, ymax menggunakan
boxplot.stats
:Hasilnya adalah boxplot tanpa outlier.
sumber
Satu ide adalah menangkan data dalam prosedur dua langkah:
jalankan pass pertama, pelajari batasannya, mis. potongan pada persentil tertentu, atau standar deviasi N di atas rata-rata, atau ...
dalam pass kedua, atur nilai di luar batas yang diberikan ke nilai batas itu
Saya harus menekankan bahwa ini adalah metode kuno yang seharusnya didominasi oleh teknik-teknik canggih yang lebih modern, tetapi Anda masih sering menemukannya.
sumber
Opsi "coef" dari fungsi geom_boxplot memungkinkan untuk mengubah batas outlier dalam hal rentang interkuartil. Opsi ini didokumentasikan untuk fungsi stat_boxplot. Untuk menonaktifkan pencilan (dengan kata lain mereka diperlakukan sebagai data biasa), seseorang dapat menggunakan nilai default 1,5 daripada menentukan nilai cutoff yang sangat tinggi:
sumber
Jika Anda ingin memaksa kumis untuk memperluas ke nilai max dan min, Anda dapat mengubah
coef
argumen. Nilai default untukcoef
adalah 1,5 (yaitu panjang kumis standar adalah 1,5 kali IQR).sumber
Ipaper :: geom_boxplot2 adalah yang Anda inginkan.
sumber