Otokorelasyon ve sinir ağları için Matlab kullanırken zaman serisi verilerindeki boşluklar / NaN'ler ile nasıl başa çıkılır?


9

Bir zaman serisi ölçümlerim var (yükseklikler bir boyutlu seri). Gözlem döneminde, ölçüm süreci bazı zaman noktalarında azalmıştır. Sonuçta elde edilen veriler, verilerde boşlukların bulunduğu NaN'lere sahip bir vektördür. MATLAB kullanarak, otokorelasyon ( autocorr) hesaplanırken ve sinir ağları ( nnstart) uygulanırken bu bana bir soruna neden oluyor .

Bu boşluklar / NaN'ler nasıl ele alınmalıdır? Bunları vektörden çıkarmalı mıyım? Veya girişlerini enterpolasyonlu bir değerle mi değiştiriyorsunuz? (öyleyse nasıl MATLAB'da)

Yanıtlar:


4

Verilere hiç dokunmam. NaN'lerle otokorelasyon için bunu kullanın:

http://www.mathworks.com/matlabcentral/fileexchange/43840-autocorrelation-and-partial-autocorrelation-with-nans/content/nanautocorr.m

"verilere dokunmamak" herhangi bir verinin veya zaman adımının kaldırılmaması veya 0 veya ortalama ile değiştirilmemesi anlamına gelir; belirli bir gecikme süresi doğrusal bağımlılığı hakkındaki bilgileri tehlikeye atar. Ayrıca, "NUMUNE" otokorelasyonu ile ilgileniyorsanız, boşluklardaki değerleri simüle etmekten kaçınırım, yine de en iyi simülasyon tekniği bile otokorelasyon hakkında daha fazla bilgi vermez, verilere dayanır. Matlab (yukarıdaki bağlantı) otokorelasyon ve kısmi otokorelasyon fonksiyonlarını NaN'lerle başa çıkmak için kısmen kodladım: NaN'ler dahil tüm veri çiftleri hesaplama dışında bırakılır. Bu her gecikme için yapılır. Benim için çalıştı. Herhangi bir öneri kabul edilir.


Welcome @Fabio: "Verilere dokunmama" ile ne demek istediğinize daha fazla açıklama yapabilir misiniz? Bir şey çıkarmamak mı demek istiyorsun? Ayrıca, bağlantı verdiğiniz içeriği tanıtmaya ve bunun OP'ye neden yardımcı olduğunu açıklamaya yardımcı olur.
Momo

Merhaba Momo, yorum için teşekkürler. "verilere dokunmamak" herhangi bir verinin veya zaman adımının kaldırılmaması veya 0 veya ortalama ile değiştirilmemesi anlamına gelir; belirli bir gecikme süresi doğrusal bağımlılığı hakkındaki bilgileri tehlikeye atar. Matlab (yukarıdaki bağlantı) otokorelasyon ve kısmi otokorelasyon fonksiyonlarını NaN'lerle başa çıkmak için kısmen kodladım: NaN'ler dahil tüm veri çiftleri hesaplama dışında bırakılır. Bu her gecikme için yapılır. Benim için çalıştı. Herhangi bir öneri kabul edilir.
Fabio

3

Eksik değerlere karşı bağışık olmayan bazı algoritmalar vardır, bu nedenle tercih edilen çözüm onları acfaramaktır (örneğin , otokorelasyon için R'ler).

Genel olarak, gidilecek yol ya sadece eksik gözlemleri olan verileri atmak (çok acı verici olabilir) ya da sadece değerlerini ima etmek - komşuların ortalamaları pürüzsüz seriler ve küçük boşluklar için yeterli olabilir, ancak elbette var spline, rasgele / en sık kullanılan değerler, modellerden çarpışma vb. kullanan diğer daha güçlü yöntemlerin bolluğu.


2
Eksik değeri olan acf normal şekilde hesaplanır, ancak eksik değerler toplamlarda 'atlanır' (yani, belirli bir gecikme için acf formülü bir toplamın bölünmüş gibi görünür, bu toplamların her birinde eksik değerler olabilir atlanmalıdır). Bu, eksik verilerin orijinal verilerden kaldırılmasıyla aynı şey değildir. Matlab ile ilgili problem, NaN'yi atlamaması ve hesaplamaya dahil edilmesi her şeyi NaN'ye dönüştürmesidir.
Sıfır

1

Yararlı ARIMA yapısından ve herhangi bir yerel zaman trendinden ve / veya seviye kaymasından faydalanan eksik değerleri çarpıtmak için Müdahale Tespiti kullanın.


1

Burada 2 problem var. birincisi, matlab'daki otokorelasyon cevabınız için anlamlı bir sayısal çerçeve sağlamaktır. bunun olması için, veri vektörlerinizin zaman serisi bölümünü genişletmeniz ve / veya yama yapmanız gerekir ... sorunun bu 'veri bütünlüğü' bileşeni en temel unsurdur.

ikincisi, vektörünüzün 'değer' bileşenini nasıl ele alacağınıza karar vermeniz gerekir ... bu büyük ölçüde belirli bir uygulamaya, en iyi neyin varsayılması gerektiğine bağlıdır (örneğin, küçük, eksik zaman damgaları ve karşılık gelen NaN'ler) veya Null'lar komşularından güvenli bir şekilde enterpole edilebilir ... daha büyük boşluklarda, değeri sıfıra ayarlamak muhtemelen daha güvenli ... veya yukarıda önerildiği gibi impute olabilir - açıkçası bunun anlamlı olması için, boşlukların tekrar nispeten küçük olması gerekir.) .

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.