Hareketli bir ortalama eksik veri noktalarını nasıl ele almalıdır?


10

Farklı günlerde kullanıcının ağırlığını ortalayan bir program yazıyorum. 5 puanlık bir hareketli ortalama kullanmayı planlıyorum (şimdiki gün, iki öncesi ve iki sonrası). Bazen 1-2 gün boyunca bir veri noktası eksiktir. Bu davalar genellikle nasıl ele alınır?

(kullanabileceğim daha iyi bir düşük geçiş filtresi varsa, önerileri çok isterim)


akla gelen ilk şey, hareketli ortalama filtresini kullanmadan önce noktaları enterpolasyon etmektir
someguy

3
Bir Gerçekten daha istatistiksel en azından daha fazla bağlam yokluğunda bir sinyal işleme söz daha soru. Ancak ortalamayı yeniden hesaplamayı atlayabilir, geçerli ortalamayı değiştirme değeri olarak kullanabilir veya sonraki ölçümleri bekleyebilir ve doğrusal veya başka şekilde enterpolasyon girişiminde bulunabilirsiniz.
Daniel R Hicks

Diğerlerinin de belirttiği gibi, bu genellikle filtrelenmiş çıktının nasıl davranmasını istediğinize ilişkin düşüncenize bağlı olarak uygulamaya özel bir karar olacaktır. Çoğu sinyal işleme teorisi tekdüze aralıklı örneklere dayanır, bu nedenle objektif olarak "doğru cevap" olarak adlandırılabilecek bir şey elde edemezsiniz.
Jason R

@JasonR Kullanıcının o noktada kilosunun daha makul bir tahminini vermek için filtreliyorum. Bazı veri noktaları eksik olduğu sürece, veriler eşit olarak örneklenir (örnekleme sıklığı = 1 / gün).
Anna

@Anna: Doğru, neden verileri filtrelediğinizi anlıyorum. Ancak, eksik veri noktalarınız olduğu için verileriniz aynı şekilde örneklenmez. Bu nedenle, belirttiğim gibi, probleminize tatmin edici bir teorik cevap bulamazsınız. Özel uygulamanız için "mantıklı" olduğunu düşündüğünüz geçici bir çözüm muhtemelen cevap olacaktır.
Jason R

Yanıtlar:


4

Genel bir izlenim olarak, regresyon, seçtiğiniz hareketli bir ortalama filtreden ziyade eksik noktaları otomatik olarak yerleştirmede daha iyi çalışır.

Bir AR (otomatik regresif filtre) veya ARMA filtresi kullanıyorsanız - geçmiş girdilere dayalı olarak bir örnek çıktısının tahmini değerine sahip olabilirsiniz.

X^[ben]=Σωk*x[ben-1-k]+η

Burada X, [ I ] öngörülen bir değerdir.X^[ben]

Özellikle sizin durumunuzda, kişinin ağırlığının belirli bir aralığı olduğunu bildiğinizi varsayalım . Eğer yoksa Şimdi eğer x [ i - 1 ] değeri - Min ile bir ve Max ile bir ve mevcut modele dayalı olarak iki uç örneği sonuçlarını olacak - İki farklı ikameler uygulamak X [ i ] ve seçebilirsiniz aralarında bir şey.Xmbirx,Xmbennx[ben-1]X^[ben]

Başka alternatifler de var -

X^[ben]=X[ben-1]
X^[ben]=Uzun vadeli numune ortalaması X 

Esasen, söz konusu değerin bir tahmin oyunudur ve onu bir sinyal olarak kullanmaya devam eder. Tabii ki, tahmin orijinal bir örnekle aynı olmayacak, ancak veri olmaması için ödediğiniz fiyat değildir.


2
Neden regresyonun uyumda daha iyi çalışacağını söylüyorsunuz? Teşekkürler
Spacey

3

Eksik verileriniz varsa, eksik verileri doldurmanın basit ve genel bir yöntemi
Doğrusal regresyon kullanmaktır . Diyelim ki hiçbiri eksik olmadan arka arkaya 5 adet 1000 koşu var.
1000 x 1 vektör y ve 1000 x 4 matris X'i ayarlayın:

y       X
wt[0]   wt[-2] wt[-1] wt[1] wt[2]
---------------------------------
68      67     70     70    68
...

Regresyon size en iyi eşleşmeyi veren 4 numara abcd verecektir

wt[0] ~= a * wt[-2]  + b * wt[-1]  + c * wt[1]  + d * wt[2]

1000 veri satırınız için - farklı veriler, farklı abc d.
Sonra bu abcd eksik wt [0] tahmin (tahmin, enterpolasyon) için kullanın.
(İnsan ağırlıkları için abcd'nin 1/4 civarında olmasını beklerdim.)

Python'da bkz. Numpy.linalg.lstsq .

(Her düzeyde regresyon hakkında milyonlarca kitap ve makale var. İnterpolasyon ile bağlantı için, iyi bir giriş bilmiyorum; kimse?)


1

[bir,b,c,?,e]

bir+b+c+e4

1

Ben en basit yolu daha önce gelen verileri kullanarak zaman serisinde "bütün" tarihini "tahmin" olacağını düşünüyorum. parametre zamanlaması için bu zaman çizelgelerini kullanabilirsiniz. (daha sonra, tüm (tamamlanmış) zaman çizelgelerindeki tahmini parametrelerinizi kullanarak eksik değerleri devam ettirebilir ve yeniden bildirebilir ve birleşene kadar tekrarlayabilirsiniz). güven sınırlarını, tamamlanmış verilerin uzunluğundan değil, sahip olduğunuz gerçek veri noktalarının sayısından almalısınız.

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.