共用方式為


series_periods_detect()

適用於:✅Microsoft網狀架構✅✅✅

尋找時間序列中最重要的期間。

series_periods_detect() 函式適用於偵測數據中的定期模式,例如每日、每周或每月週期。

語法

series_periods_detect( ,min_period max_period num_periods ,,)

深入瞭解 語法慣例

參數

姓名 類型​​ 必要 描述
系列 dynamic ✔️ 數值陣列,通常是make-seriesmake_list運算子所產生的輸出。
min_period real ✔️ 要搜尋的最小期間長度。
max_period real ✔️ 要搜尋的最大期間長度。
num_periods long ✔️ 要傳回的期間數上限。 這個數位是輸出動態數位的長度。

重要

  • 演算法可以偵測包含至少 4 點和最多一半數列長度的期間。
  • 設定下方的min_period一點,並max_period您預期在時間序列中找到的期間。 例如,如果您有每小時匯總的訊號,而且您同時尋找每日和每周期間(分別為 24 和 168 小時),您可以設定 min_period=0.8*24,max_period=1.2*168,並保留 20% 的邊界。
  • 輸入時間序列必須是一般。 也就是說,在常數量化中匯總,如果是使用 make-series建立,則一律會發生這種情況。 否則,輸出是毫無意義的。

傳回

函式會傳回具有兩個數據行的數據表:

  • 句點:動態數位,包含依其分數排序的間隔大小單位找到的期間。
  • scores:動態陣列,包含介於 0 到 1 之間的值。 每個陣列都會測量句點在句點陣列中其各自位置的意義

範例

下列查詢會內嵌應用程式流量的快照集一個月。 每天匯總兩次流量,表示量化大小為12小時。 查詢會產生一個折線圖,清楚顯示數據中的模式。

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_detect() 函式,以識別週期性模式。 函式會搜尋指定期間範圍內的模式,並傳回兩個值。 第一個值表示偵測到的模式,其長 14 分,分數約為 .84。 另一個值是零,表示找不到其他模式。

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.84, 0]

series_periods_detect_y_periods_scores中的值會截斷。

注意

圖表中也會顯示每日模式,但查詢不會傳回此模式,因為取樣太粗(12 小時間隔大小)。 每日期間為 2 個間隔低於演算法所需的最小期間大小 4 點。