series_decompose()

Bir seriye ayrıştırma dönüşümü uygular.

Giriş olarak bir seri (dinamik sayısal dizi) içeren bir ifade alır ve bunu mevsimsel, eğilim ve artık bileşenlere ayırır.

Syntax

series_decompose(Serisi, [ Mevsimsellik,Eğilim,, Test_pointsSeasonality_threshold ])

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

Parametreler

Ad Tür Gerekli Açıklama
Seriler dynamic ✔️ Genellikle make-series veya make_list işleçlerinin elde edilen çıkışı olan sayısal değerler dizisi.
Seasonality int Mevsimsel analizi denetler. Olası değerler şunlardır:

- -1: series_periods_detect kullanarak mevsimselliği otomatik olarak algıla. Varsayılan değer budur.
- Nokta: Bölme sayısı olarak beklenen dönemi belirten pozitif bir tamsayı. Örneğin, seri bölmeler içindeyse 1 - h haftalık dönem 168 bölmedir.
- 0: Mevsimsellik yok, bu nedenle bu bileşeni ayıklamayı atlayın.
Eğilim string Eğilim analizini denetler. Olası değerler şunlardır:

- avg: Eğilim bileşenini olarak average(x)tanımlayın. Bu varsayılan seçenektir.
- linefit: Doğrusal regresyon kullanarak eğilim bileşenini ayıklayın.
- none: Eğilim yok, bu nedenle bu bileşeni ayıklamayı atlayın.
Test_points int Öğrenme veya regresyon işleminin dışında tutulacak serinin sonundaki nokta sayısını belirten pozitif bir tamsayı. Bu parametre tahmin amacıyla ayarlanmalıdır. Varsayılan değer 0’dır.
Seasonality_threshold real Mevsimsellik otomatik algılamaya ayarlandığında mevsimsellik puanı eşiği. Varsayılan puan eşiği 0,6'dır.

Daha fazla bilgi için bkz. series_periods_detect.

Döndürülenler

işlevi aşağıdaki ilgili seriyi döndürür:

  • baseline: serinin tahmin edilen değeri (mevsimsel ve eğilim bileşenlerinin toplamı, aşağıya bakın).
  • seasonal: mevsimsel bileşen serisi:
    • nokta algılanmazsa veya açıkça 0 olarak ayarlanırsa: sabit 0.
    • algılandıysa veya pozitif tamsayı olarak ayarlandıysa: seri noktalarının ortancası aynı aşamada
  • trend: eğilim bileşeni serisi.
  • residual: artık bileşenin serisi (yani x - taban çizgisi).

Not

  • Bileşen yürütme sırası:
  1. Sezonluk seriyi ayıklama
  2. X'ten çıkararak deseasonal serisini oluşturma
  3. Modaya uygun olmayan seriden eğilim bileşenini ayıklama
  4. Temeli oluşturma = mevsimsel + eğilim
  5. Artık = x - taban çizgisi oluşturma
  • Mevsimsellik ve veya eğilim etkinleştirilmelidir. Aksi takdirde işlev yedeklidir ve yalnızca taban çizgisi = 0 ve artık = x döndürür.

Seri ayrıştırma hakkında daha fazla bilgi

Bu yöntem genellikle düzenli aralıklarla ve/veya eğilim davranışının ortaya çıkaracağı beklenen ölçüm zaman serisine uygulanır. Gelecekteki ölçüm değerlerini tahmin etmek ve/veya anormal değerleri algılamak için yöntemini kullanabilirsiniz. Bu regresyon işleminin örtük varsayımı, mevsimsel ve eğilim davranışı dışında zaman serisinin stokastik ve rastgele dağıtılmış olmasıdır. Mevsimsel ve eğilim bileşenlerinden gelecek ölçüm değerlerini tahmin ederken artık kısmı yoksayabilirsiniz. Aykırı değer algılamayı temel alan anormal değerleri yalnızca artık bölümde algılayın. Diğer ayrıntılara Zaman Serisi Ayrıştırma bölümünden ulaşabilirsiniz.

Örnekler

Haftalık mevsimsellik

Aşağıdaki örnekte, haftalık mevsimsellik düzeyine sahip ve eğilimsiz bir seri oluşturuyoruz, ardından buna bazı aykırı değerler ekliyoruz. series_decompose mevsimselliği bulur ve otomatik olarak algılar ve mevsimsel bileşenle neredeyse aynı olan bir taban çizgisi oluşturur. Eklediğimiz aykırı değerler artıklar bileşeninde açıkça görülebilir.

let ts=range t from 1 to 24*7*5 step 1 
| extend Timestamp = datetime(2018-03-01 05:00) + 1h * t 
| extend y = 2*rand() + iff((t/24)%7>=5, 10.0, 15.0) - (((t%24)/10)*((t%24)/10)) // generate a series with weekly seasonality
| extend y=iff(t==150 or t==200 or t==780, y-8.0, y) // add some dip outliers
| extend y=iff(t==300 or t==400 or t==600, y+8.0, y) // add some spike outliers
| summarize Timestamp=make_list(Timestamp, 10000),y=make_list(y, 10000);
ts 
| extend series_decompose(y)
| render timechart  

Seriler ayrıştır 1.

Eğilimli haftalık mevsimsellik

Bu örnekte, önceki örnekteki seriye bir eğilim ekleyeceğiz. İlk olarak, varsayılan parametrelerle çalışırız series_decompose . Eğilim avg varsayılan değeri yalnızca ortalamayı alır ve eğilimi hesaplamaz. Oluşturulan taban çizgisi eğilimi içermiyor. Artıklardaki eğilimi gözlemlerken, bu örneğin önceki örnekten daha az doğru olduğu ortaya çıkıyor.

let ts=range t from 1 to 24*7*5 step 1 
| extend Timestamp = datetime(2018-03-01 05:00) + 1h * t 
| extend y = 2*rand() + iff((t/24)%7>=5, 5.0, 15.0) - (((t%24)/10)*((t%24)/10)) + t/72.0 // generate a series with weekly seasonality and ongoing trend
| extend y=iff(t==150 or t==200 or t==780, y-8.0, y) // add some dip outliers
| extend y=iff(t==300 or t==400 or t==600, y+8.0, y) // add some spike outliers
| summarize Timestamp=make_list(Timestamp, 10000),y=make_list(y, 10000);
ts 
| extend series_decompose(y)
| render timechart  

Seri ayrıştır 2.

Ardından aynı örneği yeniden çalıştıracağız. Seride bir eğilim beklediğimiz için eğilim parametresinde belirteceğiz linefit . Pozitif eğilimin algılandığını ve taban çizgisinin giriş serisine çok daha yakın olduğunu görebiliriz. Artıklar sıfıra yakın ve yalnızca aykırı değerler göze çarpıyor. Serideki tüm bileşenleri grafikte görebiliriz.

let ts=range t from 1 to 24*7*5 step 1 
| extend Timestamp = datetime(2018-03-01 05:00) + 1h * t 
| extend y = 2*rand() + iff((t/24)%7>=5, 5.0, 15.0) - (((t%24)/10)*((t%24)/10)) + t/72.0 // generate a series with weekly seasonality and ongoing trend
| extend y=iff(t==150 or t==200 or t==780, y-8.0, y) // add some dip outliers
| extend y=iff(t==300 or t==400 or t==600, y+8.0, y) // add some spike outliers
| summarize Timestamp=make_list(Timestamp, 10000),y=make_list(y, 10000);
ts 
| extend series_decompose(y, -1, 'linefit')
| render timechart  

Seri ayrıştır 3.