series_fit_poly ()series_fit_poly()

Applica una regressione polinomiale da una variabile indipendente (x_series) a una variabile dipendente (y_series).Applies a polynomial regression from an independent variable (x_series) to a dependent variable (y_series). Questa funzione accetta una tabella contenente più serie (matrici numeriche dinamiche) e genera il polinomio più appropriato per ogni serie usando la regressione polinomiale.This function takes a table containing multiple series (dynamic numerical arrays) and generates the best fit high-order polynomial for each series using polynomial regression.

Suggerimento

  • Per la regressione lineare di una serie con spazi uniformi, come creato dall' operatore Make-Series, usare la funzione più semplice series_fit_line ().For linear regression of an evenly spaced series, as created by make-series operator, use the simpler function series_fit_line(). Vedere l' esempio 2.See Example 2.
  • Se viene fornito x_series e la regressione viene eseguita per un livello elevato, provare a normalizzare l'intervallo [0-1].If x_series is supplied, and the regression is done for a high degree, consider normalizing to the [0-1] range. Vedere l' esempio 3.See Example 3.
  • Se x_series è di tipo DateTime, deve essere convertito in Double e normalizzato.If x_series is of datetime type, it must be converted to double and normalized. Vedere l' esempio 3.See Example 3.
  • Per l'implementazione di riferimento della regressione polinomiale con Python inline, vedere series_fit_poly_fl ().For reference implementation of polynomial regression using inline Python, see series_fit_poly_fl().

SintassiSyntax

T | extend series_fit_poly(y_series , x_series , livello)T | extend series_fit_poly(y_series, x_series, degree)

ArgomentiArguments

ArgomentoArgument DescrizioneDescription Obbligatoria/facoltativaRequired/optional NoteNotes
y_seriesy_series Matrice numerica dinamica contenente la variabile dipendente.Dynamic numerical array containing the dependent variable. ObbligatoriaRequired
x_seriesx_series Matrice numerica dinamica contenente la variabile indipendente.Dynamic numerical array containing the independent variable. Facoltativo.Optional. Obbligatorio solo per le serie con spaziatura irregolare.Required only for unevenly spaced series. Se non viene specificato, viene impostato su un valore predefinito di [1, 2,..., Length (y_series)].If not given, it's set to a default value of [1,2, ..., length(y_series)].
gradodegree Ordine obbligatorio del polinomiale da adattare.The required order of the polynomial to fit. Ad esempio, 1 per la regressione lineare, 2 per la regressione quadratica e così via.For example, 1 for linear regression, 2 for quadratic regression, and so on. FacoltativoOptional Il valore predefinito è 1 (regressione lineare).Defaults to 1 (linear regression).

Risultati restituitiReturns

La series_fit_poly() funzione restituisce le colonne seguenti:The series_fit_poly() function returns the following columns:

  • rsquare: r-Square è una misura standard della qualità Fit.rsquare: r-square is a standard measure of the fit quality. Il valore è un numero compreso nell'intervallo [0-1], dove 1 è il miglior fit possibile e 0 indica che i dati non sono ordinati e non si adattano ad alcuna riga.The value's a number in the range [0-1], where 1 - is the best possible fit, and 0 means the data is unordered and doesn't fit any line.
  • coefficients: Matrice numerica che contiene i coefficienti del polinomiale montato migliore con il grado specificato, ordinati dal più alto coefficiente di potenza al più basso.coefficients: Numerical array holding the coefficients of the best fitted polynomial with the given degree, ordered from the highest power coefficient to the lowest.
  • variance: Varianza della variabile dipendente (y_series).variance: Variance of the dependent variable (y_series).
  • rvariance: Varianza residua che rappresenta la varianza tra i valori dei dati di input e quelli approssimati.rvariance: Residual variance that is the variance between the input data values the approximated ones.
  • poly_fit: Matrice numerica che contiene una serie di valori del polinomio montato migliore.poly_fit: Numerical array holding a series of values of the best fitted polynomial. La lunghezza della serie è uguale alla lunghezza della variabile dipendente (y_series).The series length is equal to the length of the dependent variable (y_series). Valore utilizzato per la creazione di grafici.The value's used for charting.

EsempiExamples

Esempio 1Example 1

Un quinto ordine polinomiale con rumore su x & assi y:A fifth order polynomial with noise on x & y axes:

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 

Grafico che mostra un polinomio di quinto ordine adatto a una serie con rumore

Grafico che mostra un polinomio di quinto ordine adatto a una serie con rumore

Esempio 2Example 2

Verificare che series_fit_poly con Degree = 1 corrisponda series_fit_line :Verify that series_fit_poly with degree=1 matches 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)

Grafico che mostra un polinomio di quinto ordine adatto a una serie con rumore

Grafico che mostra un polinomio di quinto ordine adatto a una serie con rumore

Esempio 3Example 3

Serie temporale irregolare (spazio non uniforme):Irregular (unevenly spaced) time series:

//
//  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)

Grafico che mostra un polinomio di quinto ordine adatto a una serie con rumore