Dela via


series_fit_poly()

Tillämpar en polynomregression från en oberoende variabel (x_series) på en beroende variabel (y_series). Den här funktionen tar en tabell som innehåller flera serier (dynamiska numeriska matriser) och genererar den bästa polynomen i hög ordning för varje serie med polynomregression.

Tips

  • För linjär regression av en jämnt fördelad serie, som skapats av make-series-operatorn, använder du den enklare funktionen series_fit_line(). Se exempel 2.
  • Om x_series anges och regressionen görs i hög grad bör du överväga att normalisera till intervallet [0–1]. Se exempel 3.
  • Om x_series är av datetime-typ måste den konverteras till dubbel och normaliserad. Se exempel 3.
  • Referensimplementering av polynomregression med infogad Python finns i series_fit_poly_fl().

Syntax

T | extend series_fit_poly(y_series [,x_series,grad ])

Läs mer om syntaxkonventioner.

Parametrar

Namn Typ Obligatorisk Beskrivning
y_series dynamic ✔️ En matris med numeriska värden som innehåller den beroende variabeln.
x_series dynamic En matris med numeriska värden som innehåller den oberoende variabeln. Krävs endast för ojämnt fördelade serier. Om det inte anges anges det till standardvärdet [1, 2, ..., length(y_series)].
Grad Den polynomordning som krävs för att passa. Till exempel 1 för linjär regression, 2 för kvadratisk regression och så vidare. Standardvärdet är 1, vilket indikerar linjär regression.

Returer

Funktionen series_fit_poly() returnerar följande kolumner:

  • rsquare: r-square är ett standardmått på passformens kvalitet. Värdet är ett tal i intervallet [0–1], där 1 – passar bäst, och 0 innebär att data är osorterade och inte passar någon rad.
  • coefficients: Numerisk matris med koefficienterna för den bäst monterade polynomen med den angivna graden, sorterad från den högsta effektkoefficienten till den lägsta.
  • variance: Varians för den beroende variabeln (y_series).
  • rvariance: Residualvarians som är avvikelsen mellan indatavärdena de ungefärliga.
  • poly_fit: Numerisk matris med en serie värden för den bäst anpassade polynomen. Serielängden är lika med längden på den beroende variabeln (y_series). Värdet används för diagram.

Exempel

Exempel 1

En femte ordningen polynom med brus på x & y axlar:

range x from 1 to 200 step 1
| project x = rand()*5 - 2.3
| extend y = pow(x, 5)-8*pow(x, 3)+10*x+6
| extend y = y + (rand() - 0.5)*0.5*y
| summarize x=make_list(x), y=make_list(y)
| extend series_fit_poly(y, x, 5)
| project-rename fy=series_fit_poly_y_poly_fit, coeff=series_fit_poly_y_coefficients
|fork (project x, y, fy) (project-away x, y, fy)
| render linechart 

Diagram som visar polynom i femte ordningen passar till en serie med brus.

Koefficienter i femte ordningens polynom passar till en serie med brus.

Exempel 2

Kontrollera att series_fit_poly med degree=1 matchar series_fit_line:

demo_series1
| extend series_fit_line(y)
| extend series_fit_poly(y)
| project-rename y_line = series_fit_line_y_line_fit, y_poly = series_fit_poly_y_poly_fit
| fork (project x, y, y_line, y_poly) (project-away id, x, y, y_line, y_poly) 
| render linechart with(xcolumn=x, ycolumns=y, y_line, y_poly)

Diagram som visar linjär regression.

Koefficienter för linjär regression.

Exempel 3

Oregelbundna (ojämnt fördelade) tidsserier:

//
//  x-axis must be normalized to the range [0-1] if either degree is relatively big (>= 5) or original x range is big.
//  so if x is a time axis it must be normalized as conversion of timestamp to long generate huge numbers (number of 100 nano-sec ticks from 1/1/1970)
//
//  Normalization: x_norm = (x - min(x))/(max(x) - min(x))
//
irregular_ts
| extend series_stats(series_add(TimeStamp, 0))                                                                 //  extract min/max of time axis as doubles
| extend x = series_divide(series_subtract(TimeStamp, series_stats__min), series_stats__max-series_stats__min)  // normalize time axis to [0-1] range
| extend series_fit_poly(num, x, 8)
| project-rename fnum=series_fit_poly_num_poly_fit
| render timechart with(ycolumns=num, fnum)

Diagram som visar den åttonde ordningens polynompassning till en oregelbunden tidsserie.