series_periods_detect()

Bir zaman serisinde var olan en önemli dönemleri bulur.

işlevi giriş olarak alır:

  • Dinamik bir zaman serisi dizisi içeren sütun. Genellikle sütun, seri yapma işlecinin sonuçta elde edilen çıkışıdır.
  • Minimum ve en büyük dönem boyutunu tanımlayan iki real sayı, aranacak depo gözü sayısı. Örneğin, 1h bölme için günlük dönemin boyutu 24 olur.
  • long İşlevin aranacak toplam dönem sayısını tanımlayan sayı.

işlevi iki sütun çıkışı sağlar:

  • periods: Puanlarına göre sıralanmış, depo gözü boyutundaki birimler halinde bulunan dönemleri içeren dinamik bir dizi.
  • scores: 0 ile 1 arasında değerler içeren dinamik bir dizi. Her dizi, bir dönemin nokta dizisindeki ilgili konumundaki önemini ölçer.

Syntax

series_periods_detect(X,, min_period , max_period num_periods)

Bağımsız değişkenler

  • x: Sayısal değerler dizisi olan dinamik dizi skaler ifadesi, genellikle seri yapma veya make_list işleçlerinin elde edilen çıkışıdır.
  • min_period: real Aranacak en düşük dönemi belirten sayı.
  • max_period: real Aranacak en büyük süreyi belirten sayı.
  • num_periods: long Gerekli en fazla dönem sayısını belirten sayı. Bu sayı, çıkış dinamik dizilerinin uzunluğu olacaktır.

Önemli

  • Algoritma, seri uzunluğunun en az 4 noktayı ve en çok yarısını içeren dönemleri algılayabilir.

  • min_period biraz aşağıya ayarlayın ve zaman serisinde bulmayı beklediğiniz dönemleri biraz daha max_period. Örneğin, saatlik toplanmış bir sinyaliniz varsa ve hem günlük hem de haftalık dönemleri (sırasıyla 24 ve 168 saat) arıyorsanız , min_period=0,8*24, max_period=1,2*168 ayarlayabilir ve bu dönemler etrafında %20 kenar boşluğu bırakabilirsiniz.

  • Giriş zaman serisi normal olmalıdır. Başka bir ifadeyle, sabit bölmeler halinde toplanır. Bu, make-series kullanılarak oluşturulmuşsa her zaman böyledir. Aksi takdirde çıkış anlamsızdır.

Örnek

Aşağıdaki sorgu, bir uygulama trafiğinin bir aylık anlık görüntüsünü günde iki kez toplanmış olarak ekler. Bölme boyutu 12 saattir.

print y=dynamic([80,139,87,110,68,54,50,51,53,133,86,141,97,156,94,149,95,140,77,61,50,54,47,133,72,152,94,148,105,162,101,160,87,63,53,55,54,151,103,189,108,183,113,175,113,178,90,71,62,62,65,165,109,181,115,182,121,178,114,170])
| project x=range(1, array_length(y), 1), y  
| render linechart 

Series periods.

Bu seride çalıştırılırsa series_periods_detect() haftalık dönem 14 puan uzunluğunda olur.

print y=dynamic([80,139,87,110,68,54,50,51,53,133,86,141,97,156,94,149,95,140,77,61,50,54,47,133,72,152,94,148,105,162,101,160,87,63,53,55,54,151,103,189,108,183,113,175,113,178,90,71,62,62,65,165,109,181,115,182,121,178,114,170])
| project x=range(1, array_length(y), 1), y  
| project series_periods_detect(y, 0.0, 50.0, 2)
series_periods_detect_y_periods series_periods_detect_y_periods_scores
[14.0, 0.0] [0.84, 0.0]

Not

Örnekleme çok kaba (12h bölme boyutu) olduğundan grafikte de görülebilen günlük dönem bulunamadı, bu nedenle günlük 2 bölmelik bir dönem, algoritmanın gerektirdiği en düşük 4 nokta nokta boyutunun altındadır.