series_periods_detect()

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

Syntax

series_periods_detect(Serisi,, min_period, max_periodnum_periods)

Söz dizimi kuralları hakkında daha fazla bilgi edinin.

Parametreler

Ad Tür Gerekli Açıklama
Serisi dynamic ✔️ Sayısal değerler dizisi, genellikle make-series veya make_list işleçlerinin elde edilen çıkışıdır.
min_period real ✔️ Aranacak en küçük nokta.
max_period real ✔️ Aranacak en büyük dönem.
num_periods long ✔️ Gereken en fazla dönem sayısı. 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önemlerin biraz üzerinde 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.

Döndürülenler

işlevi iki sütunlu bir tablo çıkışı oluşturur:

  • 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.

Ö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

Seri dönemleri.

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)

Çıkış

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.