series_decompose()
Menerapkan transformasi dekomposisi pada seri.
Mengasumsikan ekspresi yang berisi seri (larik numerik dinamis) sebagai input dan menguraikannya menjadi komponen musiman, tren, dan residu.
Sintaks
series_decompose(
Seri [ Tren,
Musiman,
Test_points,
Seasonality_threshold ] ,
)
Pelajari selengkapnya tentang konvensi sintaksis.
Parameter
Nama | Tipe | Wajib | Deskripsi |
---|---|---|---|
Seri | dynamic |
✔️ | Array nilai numerik, biasanya output yang dihasilkan dari operator seri make atau make_list . |
Musiman | int |
Mengontrol analisis musiman. Nilai yang mungkin adalah: - -1 : Autodetect seasonality menggunakan series_periods_detect. Ini adalah nilai default.- Periode: Bilangan bulat positif yang menentukan periode yang diharapkan dalam jumlah bin. Misalnya, jika seri berada dalam 1 - h bin, periode mingguan adalah 168 bin.- 0 : Tidak ada musiman, jadi lewati ekstraksi komponen ini. |
|
Tren | string |
Mengontrol analisis tren. Nilai yang mungkin adalah: - avg : Tentukan komponen tren sebagai average(x) . Ini adalah default.- linefit : Ekstrak komponen tren menggunakan regresi linier.- none : Tidak ada tren, jadi lewati ekstraksi komponen ini. |
|
Test_points | int |
Bilangan bulat positif yang menentukan jumlah titik di akhir seri untuk dikecualikan dari proses pembelajaran, atau regresi. Parameter ini harus ditetapkan untuk tujuan prakiraan. Nilai default adalah 0. | |
Seasonality_threshold | real |
Ambang batas untuk skor musiman saat Musiman diatur ke autodetect. Ambang skor default adalah 0,6. Untuk informasi selengkapnya, lihat series_periods_detect. |
Mengembalikan
Fungsi ini mengembalikan format berikut:
baseline
: prediksi nilai dari seri (jumlah komponen tren dan musiman, lihat di bawah).seasonal
: rangkaian komponen musiman:- jika periode tidak terdeteksi atau secara eksplisit diatur ke 0: konstanta 0.
- jika terdeteksi atau diatur ke bilangan bulat positif: median dari titik seri dalam fase yang sama
trend
: seri dari komponen tren.residual
: seri dari komponen residu (yaitu, x - garis besar).
Catatan
- Urutan eksekusi komponen:
- Ekstrak seri musiman
- Kurangi dari x, yang menghasilkan seri tidak musiman
- Ekstrak komponen tren dari seri tidak musiman
- Buat garis besar = musiman +tren
- Buat residu = x - garis besar
- Baik musiman dan, atau tren harus diaktifkan. Jika tidak, fungsi tersebut berlebihan, dan hanya menampilkan garis besar = 0 dan residu= x.
Selengkapnya tentang dekomposisi seri
Metode ini biasanya diterapkan pada deret waktu metrik yang diharapkan untuk memanifestasikan perilaku periodik dan/atau tren. Anda dapat menggunakan metode untuk memperkirakan nilai metrik di masa mendatang dan/atau mendeteksi nilai anomali. Asumsi implisit dari proses regresi ini adalah bahwa deret waktu bersifat stokastik dan didistribusikan secara acak terlepas dari perilaku musiman dan tren. Perkirakan nilai metrik masa mendatang dari komponen musiman dan tren sembari mengabaikan bagian residu. Hanya deteksi nilai anomali berdasarkan deteksi outlier pada bagian residu. Detail selengkapnya dapat ditemukan di bab Dekomposisi Deret Waktu.
Contoh
Musiman mingguan
Dalam contoh berikut, buat seri dengan musiman mingguan, lalu tambahkan beberapa outlier ke dalamnya. series_decompose
menemukan dan otomatis mendeteksi musiman, serta membuat garis besar yang hampir identik dengan komponen musiman. Outlier yang kami tambahkan dapat dilihat dengan jelas di komponen residu.
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
Musiman mingguan dengan tren
Dalam contoh ini, kami menambahkan tren ke seri dari contoh sebelumnya. Pertama, kita menjalankan series_decompose
dengan parameter default. Nilai default avg
tren hanya mengambil rata-rata dan tidak menghitung tren. Garis besar yang dihasilkan tidak berisi tren. Saat mengamati tren dalam residu, sudah jelas bahwa contoh ini kurang akurat daripada contoh sebelumnya.
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
Selanjutnya, kita menjalankan kembali contoh yang sama. Karena mengharapkan tren dalam seri ini, kami menentukan linefit
dalam parameter tren. Kita dapat melihat bahwa tren positif terdeteksi dan garis dasar jauh lebih mendekati seri input. Residu mendekati nol, dan hanya outlier yang tampil berbeda. Kita dapat melihat semua komponen pada seri dalam grafik.
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
Konten terkait
- Memvisualisasikan hasil dengan bagan anomali
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk