Aykırı değerleri kaldırmak için iyi bir form mu?


12

Yazılım derlemeleri için istatistikler üzerinde çalışıyorum. Başarılı / başarısız ve geçen süre için her yapı için veri var ve biz bu / hafta ~ 200 üretiyoruz.

Başarı oranının toplanması kolaydır,% 45'inin herhangi bir hafta geçtiğini söyleyebilirim. Ancak geçen süreyi de toplamak istiyorum ve verileri çok kötü bir şekilde yanlış tanıtmadığımdan emin olmak istiyorum. Profesyonellere sorsam iyi olur :-)

Diyelim ki 10 sürem var. Hem başarılı hem de başarısız durumları temsil ederler. Bazı yapılar derhal başarısız olur, bu da süresi olağandışı bir şekilde kısa yapar. Bazıları test sırasında takılır ve zaman aşımına uğrar ve çok uzun sürelere neden olur. Farklı ürünler üretiyoruz, bu nedenle başarılı yapılar bile 90 saniye ile 4 saat arasında değişiyor.

Böyle bir set alabilirim:

[50, 7812, 3014, 13400, 21011, 155, 60, 8993, 8378, 9100]

İlk yaklaşımım kümeyi sıralayarak ve orta değeri alarak medyan zamanı elde etmekti, bu durumda 7812 (çift sayılı kümeler için aritmetik ortalama ile uğraşmadım.)

Ne yazık ki, bu sadece bir varyasyon oluşturuyor gibi görünüyor, çünkü sadece bir değer seçiyorum. Bu değeri eğilimleseydim, hangi yapının medyanda olduğuna bağlı olarak 5000-10000 saniye arasında sıçrardı.

Bunu düzeltmek için başka bir yaklaşım denedim - aykırı değerleri kaldırın ve kalan değerler üzerinde bir ortalama hesaplayın. Onu tertillere ayırmaya karar verdim ve sadece ortada çalıştım:

[50, 60, 155, 3014, 7812, 8378, 8993, 9100, 13400, 21011] ->
[50, 60, 155], [3014, 7812, 8378, 8993], [9100, 13400, 21011] ->
[3014, 7812, 8378, 8993]

Bunun benim için daha iyi görünmesinin nedeni iki misli:

  • Daha hızlı yapılarda herhangi bir işlem istemiyoruz, zaten iyi durumdalar
  • En uzun yapılar muhtemelen zaman aşımına bağlıdır ve her zaman orada olacaktır. Bunları tespit etmek için başka mekanizmalarımız var

Bana öyle geliyor ki aradığım veri bu, ama gerçeği kaldırarak pürüzsüzlük elde ettiğimden endişeliyim.

Bu tartışmalı mı? Yöntem aklı başında mı?

Teşekkürler!


Geçen zaman ölçünüze neden sahip olmak istediğinizi hala söylemediniz . Ödediğiniz toplam makine süresini tahmin etmeniz mi gerekiyor? Kahve makinesine kaç seyahat yapabileceğinizi tahmin etmeniz gerekiyor mu? Eğer zamanı biliyor olsaydınız muhtemelen ne yapacaksınız?
StasK

Ayrıca, oluşturduğunuz heterojen ürünleriniz varsa, zıplamak doğaldır ve ondan kurtulmaya çalışmamalısınız. Belirli bir projenin karmaşıklığının bir ölçüsüne sahipseniz (dosya sayısı, kod satırı, rutin sayısı, vb.), O zaman daha kararlı olabilen karmaşıklık tarafından normalleştirilen geçen zamanla ilgilenebilirsiniz. Zaman içinde gerçekten istikrarlı ve düz hale getirmek istiyorsanız, ne zaman harekete geçmeniz gerektiğini öğrenemezsiniz.
StasK

@StasK: Yorumlarınız için teşekkürler, bu değerli bir girdidir. Eylem zaten biliniyor: Bu yapıların çoğu çok uzun sürüyor ve onları daha hızlı hale getirmeye çalışmalıyız. İşlerin daha iyi veya daha kötü olup olmadığını görmek için toplu önlemi kullanmak istiyorum.
Kim Gräsman

Ve evet, ideal olarak bunu ürüne göre yaparım, ancak kaynak veriler bu bilgileri korumaz, bu yüzden dağıtım hakkında bildiklerime göre hile yaparım. Bu zamanla değişebilir ve elbette yeniden düşünmem gerekebilir.
Kim Gräsman

Bana öyle geliyor ki verilerinizde üç grup var: (i) bu yapıları inşa ediyor; (ii) başarısız olan yapılar (ve oldukça hızlı bir şekilde başarısız olma eğiliminde olduklarını söylüyorsunuz) ve (iii) telefonu kapatan (veya neredeyse böyle) yapılar - ve muhtemelen eylemde bulunmak istediğiniz tek grup olmasa da ana. Toplam zaman ölçüsü çok işe yaramayabilir; ancak en uzun 10. yapı veya derleme sürelerinin dağılımının 10. en yüksek yüzdelik dilimi gibi bir şey, önem verdiğiniz dağıtımın en uç noktasında daha iyi bir ölçü olabilir. EPA'nın kirlilik izlemesinde kabaca kullandığı budur.
StasK

Yanıtlar:


8

Yaklaşımınız, hedefinizi dikkate alarak bana mantıklı geliyor. Çok basit, anlaşılır, işi hallediyor ve muhtemelen bu konuda bilimsel bir makale yazmak istemiyorsunuz.

Biri gerektiğini bir şey her zaman aykırı mücadelede yapmaktır anlamaya bunları ve zaten bu konuda büyük bir iş yapmak. Yaklaşımınızı geliştirmenin olası yolları şöyledir: Hangi yapıların asılı olduğu hakkında bilgi kullanabilir misiniz? "Bunları tespit etmek için başka mekanizmalara" sahip olduğunuzdan bahsediyorsunuz - onları tespit edip sadece örnekten olanları çıkarabilir misiniz?

Aksi takdirde, daha fazla veriye sahipseniz, tertilleri değil, beşte birliklerini kaldırmayı düşünebilirsiniz ... ancak bir noktada, bu muhtemelen çok fazla fark yaratmayacaktır.


"Diğer" mekanizmalar dediğimde, bu veri kümesinin dışında tamamen farklı demek istiyorum , bu yüzden buna dayanarak karar veremiyorum. Her gün veri topluyoruz ve günde sadece ~ 50 derleme alıyoruz, bu yüzden beşte birliklerin çok az veri verebileceğini düşünüyorum, ancak öneri için teşekkürler, bununla deney yapabilirim!
Kim Gräsman

13

Yaptığınız şey kesilmiş bir araç olarak bilinir .

Yaptığınız gibi, her bir taraftan aynı oranı (kırpma oranı) kırpmak yaygındır.

% 0 (sıradan bir ortalama) ile (neredeyse)% 50 (medyanı veren) arasında herhangi bir şey kırpabilirsiniz. Örneğin her iki uçtan% 30 kırpılmış.

Bkz bu cevabı ve ilgili Wikipedia makalesi .

[Düzenle: Nick Cox'un bu konudaki mükemmel tartışmasına bakın .]

Oldukça makul, biraz sağlam bir yer tahmincisi. Genellikle simetrik olmayan dağılımlar için yüksek eğimli olanlardan daha uygun olarak kabul edilir, ancak amacınıza uyuyorsa * kullanmamanın bir nedeni yoktur. En iyi kesim, sahip olduğunuz dağıtım türlerine ve aradığınız özelliklere bağlıdır.

* Burada ne tahmin etmek istediğiniz tam olarak belli değil.

Bazıları da faydalı bulabileceğiniz dağıtımların 'merkezini' özetlemek için çok sayıda başka sağlam yaklaşım vardır. (örneğin, M tahmincileri sizin için biraz fayda sağlayabilir)

[ Kesilmiş ortalamanızla gitmek için karşılık gelen bir değişkenlik ölçüsüne ihtiyacınız varsa, Winsorized standart sapması sizin için biraz yararlı olabilir (esas olarak, sd'yi hesaplarken, keserken keseceğiniz değerleri en uç değerlerle değiştirin kesmedi).]


Aslında dağıtımımın tipik şeklini kontrol etmedim, sanırım insanların nerede değişiklik yaptığına bağlı olarak haftaya göre değişiyor. Aslında çok eğri olabilir.
Kim Gräsman

Hack işime bir isim verdiğiniz için teşekkürler, btw.
Kim

2

Yine başka bir yöntem, tüm çift ortalamaların medyanını hesaplamak veya önyükleme yapmaktır.

Güncelleme:

Tüm çift ortalamaların medyanına Hodges-Lehmann tahmincisi denir . Bu tahminci genellikle yüksek bir verimliliğe sahiptir. Scott L. Hershberger'in bu ansiklopedi girişi şöyle diyor:

Hem medyan hem de Hodges-Lehmann tahmin edicisinin her ikisi de simetrik olmayan dağılımlar için numune ortalamasına tercih edilirken, Hodges-Lehmann tahmin edicisi ortalamaya göre medyandan daha büyük asimptotik nispi verimliliğe sahiptir.

Önyükleme daha az alakalı ve daha fazla hesaplama yoğun olabilir, ancak verilerin yerine küçük bir rastgele örnek alabilir ve bu alt örneğin ortalamasını hesaplayabilir, birçok kez yapabilir ve tüm araçların medyanını hesaplayabilirsiniz.

Her iki durumda da artık verilerinizin değerleri arasında (sıradan medyanı hesapladığınızda) bir değer seçmek zorunda değilsiniz, bunun yerine verilerin alt kümelerinden birçok ortalama arasından seçim yaparsınız.


2
Bu yöntemlerin avantaj ve dezavantajlarını tarif edebilir misiniz? Tek satırlık cevap yetersizdir.
StasK

1
Daha fazla açıklama ile bir güncelleme yapmaya çalıştım
Finn Årup Nielsen

Hem çift ortalamalar hem de önyükleme, tüm veri kümesi üzerinde bir dizi yeniden hesaplama içeriyor gibi görünmektedir. Örnek genellikle oldukça küçüktür (<500 değer), bu yüzden muhtemelen bir sorun değildir, ancak daha karmaşık görünmektedir. Kesilmiş ortalama çok künt olursa, deney yapmak için daha fazla yaklaşım olduğunu bilmek güzel. Teşekkürler!
Kim Gräsman

1

Yaptığınız şey makul görünüyor: sadece bilgi için aşağıdaki süreci benzer bir amaç için sık sık kullanıyorum: ama sadece Üst Ekstremlerle gerçekten ilgileniyorum.

Beş sayı özeti hesaplayın: Min, Q1, Medyan, Q3, Maks. Çeyreklik Aralıkları Hesapla: Q3-Q1. Aykırı 'çitlerinizi' Q1-IQR * X ve Q3 + IQR * X olarak ayarlayın: burada 'X'in makul değeri 1,5'tir.

Yukarıdaki Excel ve rakamlarınızı kullanarak ('X' ** için 1.5 kullanarak) bir üst aykırı değer verir: 21011

MIN 50
Q1  3014
MEDIAN  8095
Q3  9073.25
MAX 21011
IQR 6059.25
UPPER FENCE 18162.125
LOWER FENCE -6074.875

Bu nedenle, buradaki alt çit aslında örneğiniz için yararlı veya gerçekçi değildir: bu, diğer verilerinizin belirli verilerinizin anlamını anlamanın önemi ile ilgili noktasını yedekler.

(** '1.5' kuralı için bir alıntı bulundu: Yetkili olduğunu söylemiyorum, ancak benim için makul bir başlangıç ​​noktası gibi görünüyor: http://statistics.about.com/od/Descriptive-Statistics/a/ Kartlararası-Aralık-Kural-ht.htm )

Ayrıca sadece IQR'nin içine giren veri noktalarını kullanmaya da karar verebilirsin (belki de): bu mantıklı sonuçlar veriyor gibi görünüyor (yöntemine üyeliğin çok benzer olması).

aynı verileri kullanarak bu, 'veri alanı'na aşağıdaki veri noktalarını yerleştirir:

7812
3014
13400
21011
8993
8378
9100

Bir Boxplot'ta: bu noktaların tümü şemanın kutu kısmı (bıyık kısmı yerine) içine düşecektir.

At, bu listenin orijinal listenizde olmayan bazı öğeleri içerdiği görülebilir (daha uzun süren derlemeler); Bir listenin herhangi bir şekilde daha doğru olup olmadığını söyleyemem. (yine, veri kümenizi anlamaya gelir).


Teşekkürler, bu prensipte zaten yaptığım şeye çok yakın görünüyor. Bu yöntem, veri yöntemini bölümlere ayırmaktan daha iyi ne olabilir?
Kim Gräsman

1
Her iki yöntemin daha iyi olup olmadığını gerçekten söyleyemem: Bunu istatistik kitaplarında / sitelerinde okuduğum şeye dayanarak önerdim. Yöntemin eklediği bir şey, 'çitleri' uygun hissettiğiniz her şeye (1.5 faktörünü ayarlamak) ayarlamanıza izin vermesidir; sadece orta üçüncü alarak potansiyel olarak yüksek bir aykırı (ki muhtemelen daha iyi çitin dışında sınıflandırılmış olabilir) dahil daha duyarlı olabilir ..... ama ben bunu söyleyemem. Quartiles kullanımı ile ilgili diğer bir şey, 5 sayı özetinin oldukça iyi anlaşılmış ve yaygın olarak kullanılmasıdır.
monojohnny

Eklenen ayrıntı için teşekkürler! Bunu Python'da yapıyorum, bu yüzden veri kümesini N parçalara böldüğüm ve daha sonra orta kısmı çıkardığım bir fonksiyonum var. Bunun yerine 5 veya 7 bölüm yapmak tek karakterlik bir değişikliktir. Ancak sizin açınızdan iyi düşünülmüş ve bu soruna yaklaşmanın başka bir yaygın yolunu görmek güzel. Tekrar teşekkürler.
Kim Gräsman

kulağa iyi geliyor: Çeyrek ve çitler (değişken bölümlere sahip olmak yerine) kullanımı hakkında vurgulamak için bir şey daha ekleyeceğim - doğrudan kutu çizgilerine eşleşmeleri: en.wikipedia.org/wiki/Box_plot (diğer şeylerin yanı sıra) farklı dağılımları grafiksel olarak karşılaştırmanın standart bir yolu.
monojohnny
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.