Ağır kuyruklu dağıtımlar için boxplot eşdeğeri?


13

Yaklaşık olarak normal olarak dağıtılmış veriler için kutu grafikleri, medyanı ve verilerin yayılmasını ve ayrıca herhangi bir aykırı değerlerin varlığını hızlı bir şekilde görselleştirmenin harika bir yoludur.

Bununla birlikte, daha ağır kuyruklu dağılımlar için, uç noktalar IQR'nin sabit faktörünün dışında olduğu tanımlandığından ve çok kuyruklu dağılımlarda elbette çok daha sık gerçekleştiği için çok fazla nokta aykırı olarak gösterilir.

Peki insanlar bu tür verileri görselleştirmek için ne kullanıyor? Daha uyarlanmış bir şey var mı? Eğer önemliyse, R üzerinde ggplot kullanıyorum.


1
Ağır kuyruklu dağılımlardan alınan numuneler, orta% 50'ye kıyasla geniş bir aralığa sahip olma eğilimindedir. Bununla ilgili ne yapmak istiyorsun?
Glen_b -Reinstate Monica

7
Birkaç ilgili konu zaten örn. Stats.stackexchange.com/questions/13086/… Kısa cevap önce dönüşümü içerir! histogramlar; çeşitli türlerde kuantil araziler; çeşitli şerit araziler.
Nick Cox

@ Glen_b: bu kesinlikle benim sorunum, kutu grafiklerini okunamaz hale getiriyor.
static_rtti

2
Şey, birden fazla şey var ki olabilir ne yüzden ... yapılabilir istiyorum bunu yapmak?
Glen_b-Monica'yı geri yükle

2
Belki de istatistik dünyasının çoğunun kutularını, 1970'lerde John Tukey tarafından isimlendirilmesinden ve (yeniden) tanıtılmasından bildiğini belirtmek gerekir. (Onlarca yıl önce klimatoloji ve coğrafyada kullanıldılar.) Ancak 1977 Keşifsel veri analizi (Reading, MA: Addison-Wesley) kitabının sonraki bölümlerinde ağır kuyruklu dağılımları ele alma konusunda oldukça farklı fikirleri var. Görünüşe göre hiç kimse yakalanmadı. Fakat kantil araziler benzer ruhtadır.
Nick Cox

Yanıtlar:


8

Ve ben bu cevapların çoğu aslında, sorunu çözme sanmıyorum - OP gibi görünüyor merkezi bir sorun onlar çok ağır kuyruklu veriye sahip olmasıdır hiç bir cevap benim önceki yorumunu teşvik ediyorum böylece.

Kutu grafikleriyle kalmak istiyorsanız, bazı seçenekler aşağıda listelenmiştir. Temel sorunu gösteren R bazı veri yarattık:

 set.seed(seed=7513870)
 x <- rcauchy(80)
 boxplot(x,horizontal=TRUE,boxwex=.7)

tatmin edici boxplot

Verilerin orta yarısı, birkaç mm genişliğinde küçük bir şeride indirgenmiştir. Aynı sorun, QQ grafikleri, şerit grafikleri, arı kovanı / balmumu grafikleri ve keman grafikleri dahil olmak üzere diğer önerilerin çoğunu da etkiler.

Şimdi bazı potansiyel çözümler:

1) dönüşüm ,

Günlükler veya ters çevrilebilir bir kutu çizimi oluşturuyorsa, bunlar çok iyi bir fikir olabilir ve orijinal ölçek yine de eksende gösterilebilir.

En büyük sorun bazen 'sezgisel' dönüşüm olmamasıdır. Daha küçük bir problem var ki, kantilleri kendileri de monotonik dönüşümlerle yeterince iyi çevirirken, çitler yok; (burada yaptığım gibi) dönüştürülen verileri kutuya yerleştirirseniz, bıyıklar orijinal grafikten farklı x değerlerinde olacaktır.

dönüştürülen değerlerin kutu grafiği

Burada ters hiperbolik-sin (asinh) kullandım; kuyruklarda günlük benzeri bir şeydir ve sıfıra yakın doğrusalya benzer, ancak insanlar genellikle sezgisel bir dönüşüm bulamazlar, bu yüzden genellikle günlük gibi oldukça sezgisel bir dönüşüm açık olmadığı sürece bu seçeneği önermem. Bunun kodu:

xlab <- c(-60,-20,-10,-5,-2,-1,0,1,2,5,10,20,40)
boxplot(asinh(x),horizontal=TRUE,boxwex=.7,axes=FALSE,frame.plot=TRUE)
axis(1,at=asinh(xlab),labels=xlab)

2) kireç kırıcılar - aşırı uçları alın ve her iki uçta merkezden çok daha sıkıştırılmış bir ölçekle dar pencerelere sıkıştırın. Bunu yaparsanız tüm ölçek boyunca tam bir mola tavsiye ederim.

ölçek sonu ile boxplot

opar <- par()
layout(matrix(1:3,nr=1,nc=3),heights=c(1,1,1),widths=c(1,6,1))
par(oma = c(5,4,0,0) + 0.1,mar = c(0,0,1,1) + 0.1)
stripchart(x[x< -4],pch=1,cex=1,xlim=c(-80,-5))
boxplot(x[abs(x)<4],horizontal=TRUE,ylim=c(-4,4),at=0,boxwex=.7,cex=1)
stripchart(x[x> 4],pch=1,cex=1,xlim=c(5,80))
par(opar)

3) aşırı aykırı değerlerin kırpılması (normalde bunu çok net bir şekilde belirtmeden tavsiye etmem, ancak her iki uçta "<5" ve "2>" olmadan bir sonraki arsa gibi görünüyor) ve

4) Ben aşırı-aykırı "oklar" olarak adlandıracağım - kırpmaya benzer, ancak her iki uçta gösterilen kesilmiş değerlerin sayısı ile

aşırı değerlerin sayısını ve oklara işaret eden kutu grafiği

xout <- boxplot(x,range=3,horizontal=TRUE)$out
xin <- x[!(x %in% xout)]
noutl <- sum(xout<median(x))
nouth <- sum(xout>median(x))
boxplot(xin,horizontal=TRUE,ylim=c(min(xin)*1.15,max(xin)*1.15))
text(x=max(xin)*1.17,y=1,labels=paste0(as.character(nouth)," >"))
text(x=min(xin)*1.17,y=1,labels=paste0("< ",as.character(noutl)))

Bunu yazmaya zaman ayırdığınız için teşekkürler! Bu tam olarak beklediğim bir cevaptı. Şimdi sadece bu grafikleri R :) ile nasıl uygulayacağımı öğrenmem gerekiyor
static_rtti

1
Bazı kodlar şimdi orada. Ben 3 için kod vermedi) çünkü 4 basit bir sürümü); bundan hatları keserek elde edebilmelisiniz.
Glen_b

Bu arada, bu fikirlerin çoğu burada önerilen diğer harika görüntülerle de çalışır - gerilmiş stripcharts ve balmumu / arı kovanı arsaları ve keman arsaları ve benzeri.
Glen_b

Tekrar teşekkürler. Eminim bu cevap birkaç kişi için faydalı olacaktır.
static_rtti

Katılıyorum, bu soruya cevabımdan çok daha iyi hitap ediyor. İyi şeyler.
TooTone

4

Şahsen ben en azından veriler için bir fikir edinmek için jitter ile bir striptizci kullanmak istiyorum . Aşağıdaki grafik R kafes ile (üzgünüm ggplot2 değil). Bu grafikleri seviyorum çünkü yorumlaması çok kolay. Söylediğiniz gibi, bunun bir nedeni herhangi bir dönüşüm olmaması.

df <- data.frame(y1 = c(rnorm(100),-4:4), y2 = c(rnorm(100),-5:3), y3 = c(rnorm(100),-3:5))
df2 <- stack(df)
library(lattice)
stripplot(df2$values ~ df2$ind, jitter=T)

resim açıklamasını buraya girin

Beeswarm paketi (öneri için @January sayesinde) büyük stripplot için alternatif sunuyor.

beeswarm(df2$values ~ df2$ind)

resim açıklamasını buraya girin

Verilerinizle, yaklaşık olarak normal olarak dağıtıldığından, denenecek başka bir şey bu durumda bir qqplot, qqnorm olabilir .

par(mfrow=c(1,3))
for(i in 1:3) { qqnorm(df[,i]); abline(c(0,0),1,col="red") }

resim açıklamasını buraya girin


2
Ben de stripplots seviyorum, ama soru açık bir şekilde ağır kuyruklu dağıtımlar ile ne yapacağımız hakkında.
Nick Cox

1
Mesele şu ki, örneğin qqnorm kullanma tavsiyesi soru ile eşleşmiyor. Diğer tür kantil-kantil parseller, daha önce de belirttiğim gibi, çok iyi bir fikir olabilir.
Nick Cox

1
R'den gelen striptizcilerden bile daha iyisi paketteki arazilerdir beeswarm.
Ocak

1
@Ocak Evet, bu çok güzel, cevabıma ekliyorum (eğer itiraz ederseniz lütfen söyleyin).
TooTone

1
Cevabım, bu sorunun (sıra dışı olarak daha dar) bir sürümü olarak gördüğüm stats.stackexchange.com/questions/13086 adresine gönderildi . Ben "boxplot algoritmasını değiştirmeyin: yerine verileri yeniden ifade" olarak özetledim. Bu sorudaki "uyarlanmış" ın ima ettiği konu, değişkenlerin yararlı yeniden ifadelerini bulmak için standart Açıklayıcı Veri Analizi teknikleri ile ele alınmaktadır.
whuber

2

Kutu çizgilerine yapışabilirsiniz. Bıyık tanımlamak için farklı olasılıklar vardır. Kuyruk kalınlığına, örnek sayısına ve aykırı değerlere bağlı olarak iki veya daha fazla uç kuantum seçebilirsiniz. Sorununuz göz önüne alındığında, IQR aracılığıyla tanımlanan bıyıklardan kaçınırım.
Tabii ki verilerinizi dönüştürmek istemediğiniz sürece, bu durumda anlayışı zorlaştırır.


1
Son cümle yorum yapmadan geçmek için yeterli değildir. Dönüşüm her derde deva değildir, ancak çok çarpık verilerin dönüştürülmesinin anlaşılmasını kolaylaştırmaz. Verilerin tümü pozitifse, en azından root, logaritmik veya karşılıklı skalayı kullanmayı deneyebilirsiniz. Gerçekten yardımcı olmazsa, geri çekilin.
Nick Cox

Çarpık verilerin anlaşılmasında hangi zorluklardan bahsediyorsunuz? IQR'ye bağlı bıyıkları olanlar mı? Hafif kuyruklarda bile bu bir problem. Ve biz eğriden bağımsız olarak ağır kuyruklardan bahsetmiyoruz mu? Dönüşümleri aydınlatan kuyruklar kesinlikle daha düzenli kutu grafikleri verir, ancak konfor için ticaret anlayışı, bir yorum katmanı ekler. Ama eğer isterse buna bir özellik diyebiliriz.
Quartz

2
Dönüşümler genellikle yardımcı olur: bu benim en alt satırım. Logaritmik ölçekte (özellikle) birçok şeyin daha net göründüğünü öğrenmemiş istatistiksel bir kişi, var olan en eski ve en etkili hilelerden birinde ciddi bir şekilde eksiktir. Bunu inkar ediyor gibisin; Umarım seni yanlış okurum.
Nick Cox

1
Katılmıyorum. Çok çarpık verileri her zaman dönüştürüyorum ve deneyimlerim, bunun bir estetik sorunundan çok daha fazlası olduğu yönünde. Genellikle işe yarıyor. Anonim bir istatistikçi, bir süre önce lognormalin normalden daha normal olduğunu yazdı. Biraz huysuzdu ama orada da önemli bir gerçek var. (Diğer birçok dağıtım daha iyi uymayabilir.)
Nick Cox

1
Sanırım başkalarının yargılamasına izin vermek için burada durmam gerekiyor, ama benim görüşüm eksantrik değil. Dönüşüm, örneğin stats.stackexchange.com/questions/13086/… adresinde bir olasılık olarak ele alınmaktadır .
Nick Cox

0

Bu sorunun verileri anlamakla ilgili olduğunu varsayıyorum (aksi takdirde “yönetilmesi” yerine)
Veriler ağır kuyruklu ve / veya multimodal ise, ggplot2'nin bu "katmanlarını" amaç için çok yararlı buluyorum : geom_violinve geom_jitter.


3
Ağır kuyruk dağılımlarında keman çizimlerinin ve / veya gerilmiş noktaların neden yararlı olacağını özetleyebilir misiniz?
chl
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.