Soru:
Bir cari ortalamada aykırı değerler için düzeltme
Edward Z. Yang
2009-04-12 12:24:17 UTC
view on stackexchange narkive permalink

Bazı sensörlerden gelen verileri okuyan bir arka plan programımız var ve hesapladığı şeyler arasında (sadece durumu rapor etmenin yanı sıra) sensörlerin bir değerden diğerine geçmesi için geçen ortalama süre. Çalışan ortalama 64 veri noktası tutar ve çalışma süresinin oldukça sabit olduğunu varsayar.

Maalesef, aşağıdaki grafikte gösterildiği gibi, girdi verileri en saf değil:

(Her satır, farklı bir veri kümesini temsil eder; x ekseni, belirsiz bir tarihsel zaman ekseninden başka bir şey ifade etmez).

Başa çıkmak için benim açık çözümüm bununla verilerin histogramını oluşturmak ve ardından modu seçmek olacaktır. Bununla birlikte, daha iyi performans sağlayacak veya hareketli bir ortalamaya sahip operasyon için daha uygun başka yöntemler olup olmadığını merak ediyordum. Bazı hızlı Wikipedia aramaları, aykırı değerleri tespit etmek için algoritmaların da uygun olabileceğini öne sürüyor. Arka plan programı C'de yazıldığı için basitlik bir artıdır.

Düzenleme : Wikipedia'yı inceledim ve şu çeşitli teknikleri buldum:

  • Chauvenet kriteri: ortalama ve standart sapmayı kullanarak, belirli bir veri noktasının gerçekleşme olasılığını hesaplayın ve ardından olasılık gerçekten o kadar kötü ise% 50'den azsa onu hariç tutun. Bu, anlık bir ortalamayı düzeltmek için çok uygun gibi görünse de, etkinliğinden pek emin değilim: Görünüşe göre büyük veri kümelerinde veri noktalarını atmak istemiyor.

  • Grubbs testi: Ortalamadan standart sapmaya farkı kullanan ve "aykırı değer yok" hipotezinin reddedildiği zaman için bir ifade içeren başka bir yöntem

  • Cook'un mesafesi: Bir veri noktasının en küçük kareler regresyonu üzerindeki etkisini ölçer; 1'i aşarsa uygulamamız muhtemelen reddeder

  • Kısaltılmış ortalama: Alt ve üst uçları atın ve ardından ortalamayı normal olarak alın

Herhangi bir özel deneyimi olan ve bu istatistiksel teknikler hakkında yorum yapan var mı?

Ayrıca, fiziksel durumla ilgili bazı yorumlar: mekanik bir çamaşır makinesinin tamamlanmasına kadar geçen ortalama süreyi ölçüyoruz, dolayısıyla çalışma süresi oldukça sabit olmalıdır. Gerçekte normal bir dağılıma sahip olup olmadığından emin değilim.

Düzenleme 2 : Başka bir ilginç soru: arka plan programı önyükleme yaparken, olduğu gibi, önceden herhangi bir veriye sahip değil analiz etmek için, gelen verilerle nasıl başa çıkmalı? Basitçe aykırı budama yapmayın mı?

Düzenleme 3 : Bir şey daha var ... Donanım, çalışma zamanları farklı olacak şekilde değişirse, algoritma bu yeni çalışma zamanlarını atmayacak kadar sağlam, bu olduğunda önbelleği temizlemeyi hatırlamalı mıyım?

Önyükleme sırasında, çalışan ortalamayı başlatmak için 64 veri noktası sağlayın.
Peki bu 64 veri noktası ne olurdu? Makinenin X zamanında çalışacağını önceden varsaymak iyi olmayabilir.
Grubbs' test is superior to the other methods because it is computationally cheaper to determine regression coefficients than to sort and rank data.
Sistem, kalibre edildiğini ve kendini önyüklediğini bilmelidir. Tipik teknikler, ilk değerlerin başlangıç ​​değeri artı veya eksi yüzde on ile tohumlanmasıdır. İkinci değer geldiğinde, tohumlanan değerler araya eklenen birinci ve ikinci değerlerdir.
İlginç! Muhtemelen verileri sıralamaktan kaçınmak istediğime katılıyorum, bu da kesilmiş bir anlamı uygulamayı zorlaştıracaktır.
Bilinen bir olay dağılımı değiştirecekse, yeniden kalibre etmek çok önemlidir. Bir kütle spektrometresinde, cihaz kendisini analiz edilen bileşiğe göre ayarladıkça daha doğru hale gelir. Bu, çok çeşitli girdileri desteklerken doğruluğu artırmak için iyi bilinen bir yöntemdir.
Yedi yanıtlar:
#1
+11
SPWorley
2009-04-12 12:57:36 UTC
view on stackexchange narkive permalink

Elinizdeki örnek grafik tipikse, listelediğiniz kriterlerden herhangi biri işe yarayacaktır. Bu istatistiksel yöntemlerin çoğu, "Bu gerçekten bir hata mı?" Ancak sorununuz çok basit görünüyor .. Hatalarınız sadece normdan birkaç standart sapma değil, 20'den fazla. Bu sizin için iyi bir haber.

Bu nedenle, en basit buluşsal yöntemi kullanın. Bir başlangıç ​​artışının hesaplamanızı bozmasını önlemek için her zaman ilk 5 puanı kabul edin. Ortalama ve standart sapmayı koruyun. Veri noktanız normun dışında 5 standart sapma düşerse, onu atın ve önceki veri noktasını doldurucu olarak tekrarlayın.

Tipik veri davranışınızı önceden biliyorsanız, ortalamayı ve standart sapma, mutlak "reddetme" sınırlarını bağlayabilirsiniz. Bu aslında, başlangıçtaki bir hatanın dedektörünüzü patlatmaması açısından daha iyidir.

Mükemmel! Yine de bir şey; Tipik davranışı bilmemize rağmen, donanımın kapatılması mümkündür, bu yüzden uyarlanabilir bir programın tercih edileceğini düşünüyorum.
Even if it does need to be adaptable, put some EXTREME limits in there anyway. If a hardware glitch gives you 1e280 as a value, or NaN or +Inf, you may want to filter those out regardless.
#2
+4
ojblass
2009-04-12 12:35:41 UTC
view on stackexchange narkive permalink

Anormal bir değeri neyin oluşturduğunun tanımı, verinin kendisine ölçeklenmelidir. Bunu yapmanın klasik yöntemi, veri noktalarının her birinin z puanını hesaplamak ve ortalamadan 3 z puandan büyük değerleri atmaktır. Z puanı, veri noktası ile ortalama arasındaki fark alınarak ve standart sapmaya bölünerek bulunabilir.

How well would this method work for the pathological blue line case?
The pathological blue line case has a high standard deviation. It would take a significant outlying value to get rejected.
#3
+3
vak
2009-06-24 17:16:27 UTC
view on stackexchange narkive permalink

Akan bir medyan (ortalamaya sağlam bir alternatif) ve akan bir deli (sd'ye sağlam bir alternatif) hesaplayarak, medyan http://epp.eurostat.ec'den 5 delinin üzerinde olan her şeyi kaldırırdım. europa.eu/portal/page/portal/research_methodology/documents/S4P1_MIRROROUTLIERDETECTION_LIAPIS.pdf

#4
+3
fredxi
2013-07-26 17:23:19 UTC
view on stackexchange narkive permalink

Başka bir çözüm de harmonik ortalamayı kullanmaktır.

Sizin durumunuz

http://economistatlarge.com/finance/applied adresinde tartışılan örneğe çok benzer -finans / farklılıklar-aritmetik-geometrik-harmonik-araçlar

Dostum, harmonik demek FTW!İnsanlar gerçekten buna bir göz atmalı!
#5
+1
ozan
2009-04-12 12:53:28 UTC
view on stackexchange narkive permalink

Hatalı olarak belirli (daha yüksek) varyasyon örneklerini hariç tutabilmek istiyorsanız, beklenen varyasyon veya dağılım hakkında biraz fikir sahibi olmanız gerekir. Örneğin, "ortalama süreler" sonucunun dağılımını normal (Gauss) bir dağılıma yaklaştırabilirseniz, ojblass'ın önerdiği şeyi yapabilir ve standart sapmanın birkaç katından daha büyük bir varyasyon sergileyen sonuçları hariç tutabilirsiniz ( bu, koşu ortalamanızın yanında anında hesaplanabilir). Yüzde 99,75 (veya daha fazla) hatalı olma olasılığına sahip sonuçları hariç tutmak istiyorsanız, ortalamadan 3 standart sapmadan daha fazla farklılık gösterenleri hariç tutun. Yalnızca% 95 kesinlik istiyorsanız, 2'den fazla standart sapmadan farklı olanları hariç tutun.

"Standart sapma" veya "gauss dağılımı" için biraz googling yapmanın size yardımcı olacağından eminim . Elbette bu, sonuçların normal bir dağılımını beklediğinizi varsayar. Olmayabilirsin. Bu durumda ilk adım, hangi dağılımı beklediğinizi tahmin etmek olacaktır.

#6
  0
1800 INFORMATION
2009-04-12 12:26:45 UTC
view on stackexchange narkive permalink

Belki de iyi bir yöntem, mevcut çalışan ortalamanın dışında tanımlanmış bir değerden daha fazla olan sonuçları göz ardı etmek olabilir mi?

Yes, but how do you say what this "defined value" is?
I expect that would come from an examination of the data based on the actual results
I really would like to avoid hard-coding something like that in the program
It could be a configuration parameter?
#7
  0
dmckee
2009-04-12 20:22:27 UTC
view on stackexchange narkive permalink

Önyükleme sorusuna saf (ve muhtemelen en iyi) cevap, "İlk N değeri filtrelemeden kabul et" dir. Uygulamanızda kurulum süresinin "kısa" olmasına izin verirken, olabildiğince büyük olması için N'yi seçin. Bu durumda, N için pencere genişliğini (64 örnek) kullanmayı düşünebilirsiniz.

O zaman bir tür ortalama ve sigma tabanlı filtre kullanırdım.



Bu Soru-Cevap, otomatik olarak İngilizce dilinden çevrilmiştir.Orijinal içerik, dağıtıldığı cc by-sa 2.0 lisansı için teşekkür ettiğimiz stackexchange'ta mevcuttur.
Loading...