Delen via


series_dbl_exp_smoothing_fl()

Hiermee past u een dubbele exponentiële afvlakkingsfilter toe op een reeks.

De functie series_dbl_exp_smoothing_fl() is een door de gebruiker gedefinieerde functie (UDF) die een expressie met een dynamische numerieke matrix als invoer gebruikt en een dubbel exponentieel vloeiend filter toepast. Wanneer er een trend in de reeks is, is deze functie superieur aan de functie series_exp_smoothing_fl(), die een basisfilter voor exponentiële afvlakking implementeert.

Syntax

series_dbl_exp_smoothing_fl(y_series [,alfa [,bèta ]])

Meer informatie over syntaxisconventies.

Parameters

Naam Type Vereist Beschrijving
y_series dynamic ✔️ Een matrix van numerieke waarden.
alfa real Een waarde in het bereik [0-1] die het gewicht van het laatste punt versus het gewicht van de vorige punten aangeeft, namelijk 1 - alpha. De standaardwaarde is 0,5.
bèta real Een waarde in het bereik [0-1] die het gewicht van de laatste helling versus het gewicht van de vorige hellingen aangeeft, namelijk 1 - beta. De standaardwaarde is 0,5.

Functiedefinitie

U kunt de functie als volgt definiëren door de code in te sluiten als een door een query gedefinieerde functie of door deze te maken als een opgeslagen functie in uw database:

Definieer de functie met behulp van de volgende let-instructie. Er zijn geen machtigingen vereist.

Belangrijk

Een let-instructie kan niet zelfstandig worden uitgevoerd. Deze moet worden gevolgd door een tabellaire expressie-instructie. Zie Voorbeeld als u een werkend voorbeeld van series_dbl_exp_smoothing_fl()wilt uitvoeren.

let series_dbl_exp_smoothing_fl = (y_series:dynamic, alpha:double=0.5, beta:double=0.5)
{
    series_iir(y_series, pack_array(alpha, alpha*(beta-1)), pack_array(1, alpha*(1+beta)-2, 1-alpha))
};
// Write your query to use the function here.

Voorbeeld

Als u een querygedefinieerde functie wilt gebruiken, roept u deze aan na de definitie van de ingesloten functie.

let series_dbl_exp_smoothing_fl = (y_series:dynamic, alpha:double=0.5, beta:double=0.5)
{
    series_iir(y_series, pack_array(alpha, alpha*(beta-1)), pack_array(1, alpha*(1+beta)-2, 1-alpha))
};
range x from 1 to 50 step 1
| extend y = x + rand()*10
| summarize x = make_list(x), y = make_list(y)
| extend dbl_exp_smooth_y = series_dbl_exp_smoothing_fl(y, 0.2, 0.4) 
| render linechart

Uitvoer

Grafiek met dubbele exponentiële afvlakking van kunstmatige reeksen.