Class MovingFunctions
java.lang.Object
org.elasticsearch.search.aggregations.pipeline.MovingFunctions
Provides a collection of static utility methods that can be referenced from MovingFunction script contexts
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic double
ewma(double[] values, double alpha)
Calculate a exponentially weighted moving average.static double
holt(double[] values, double alpha, double beta)
Calculate a doubly exponential weighted moving average Alpha controls the smoothing of the data.static double[]
holtForecast(double[] values, double alpha, double beta, int numForecasts)
Version of holt that can "forecast", not exposed as a whitelisted function for moving_fn scripts, but here as compatibility/code sharing for existing moving_avg agg.static double
holtWinters(double[] values, double alpha, double beta, double gamma, int period, boolean multiplicative)
Calculate a triple exponential weighted moving average Alpha controls the smoothing of the data.static double[]
holtWintersForecast(double[] values, double alpha, double beta, double gamma, int period, double padding, boolean multiplicative, int numForecasts)
Version of holt-winters that can "forecast", not exposed as a whitelisted function for moving_fn scripts, but here as compatibility/code sharing for existing moving_avg agg.static double
linearWeightedAvg(double[] values)
Calculate a linearly weighted moving average, such that older values are linearly less important.static double
max(double[] values)
Find the maximum value in a window of values.static double
min(double[] values)
Find the minimum value in a window of values If all values are missing/null/NaN, the return value will be NaNstatic double
stdDev(double[] values, double avg)
Calculate a standard deviation over the values using the provided average.static double
sum(double[] values)
Find the sum of a window of values If all values are missing/null/NaN, the return value will be 0.0static double
unweightedAvg(double[] values)
Calculate a simple unweighted (arithmetic) moving average.
-
Constructor Details
-
MovingFunctions
public MovingFunctions()
-
-
Method Details
-
max
public static double max(double[] values)Find the maximum value in a window of values. If all values are missing/null/NaN, the return value will be NaN -
min
public static double min(double[] values)Find the minimum value in a window of values If all values are missing/null/NaN, the return value will be NaN -
sum
public static double sum(double[] values)Find the sum of a window of values If all values are missing/null/NaN, the return value will be 0.0 -
unweightedAvg
public static double unweightedAvg(double[] values)Calculate a simple unweighted (arithmetic) moving average. Only finite values are averaged. NaN or null are ignored. If all values are missing/null/NaN, the return value will be NaN. The average is based on the count of non-null, non-NaN values. -
stdDev
public static double stdDev(double[] values, double avg)Calculate a standard deviation over the values using the provided average. Only finite values are averaged. NaN or null are ignored. If all values are missing/null/NaN, the return value will be NaN. The average is based on the count of non-null, non-NaN values. -
linearWeightedAvg
public static double linearWeightedAvg(double[] values)Calculate a linearly weighted moving average, such that older values are linearly less important. "Time" is determined by position in collection Only finite values are averaged. NaN or null are ignored. If all values are missing/null/NaN, the return value will be NaN The average is based on the count of non-null, non-NaN values. -
ewma
public static double ewma(double[] values, double alpha)Calculate a exponentially weighted moving average. Alpha controls the smoothing of the data. Alpha = 1 retains no memory of past values (e.g. a random walk), while alpha = 0 retains infinite memory of past values (e.g. the series mean). Useful values are somewhere in between. Defaults to 0.5. Only finite values are averaged. NaN or null are ignored. If all values are missing/null/NaN, the return value will be NaN The average is based on the count of non-null, non-NaN values.- Parameters:
alpha
- A double between 0-1 inclusive, controls data smoothing
-
holt
public static double holt(double[] values, double alpha, double beta)Calculate a doubly exponential weighted moving average Alpha controls the smoothing of the data. Alpha = 1 retains no memory of past values (e.g. a random walk), while alpha = 0 retains infinite memory of past values (e.g. the series mean). Useful values are somewhere in between. Defaults to 0.5. Beta is equivalent to alpha, but controls the smoothing of the trend instead of the data Only finite values are averaged. NaN or null are ignored. If all values are missing/null/NaN, the return value will be NaN The average is based on the count of non-null, non-NaN values.- Parameters:
alpha
- A double between 0-1 inclusive, controls data smoothingbeta
- a double between 0-1 inclusive, controls trend smoothing
-
holtForecast
public static double[] holtForecast(double[] values, double alpha, double beta, int numForecasts)Version of holt that can "forecast", not exposed as a whitelisted function for moving_fn scripts, but here as compatibility/code sharing for existing moving_avg agg. Can be removed when moving_avg is gone. -
holtWinters
public static double holtWinters(double[] values, double alpha, double beta, double gamma, int period, boolean multiplicative)Calculate a triple exponential weighted moving average Alpha controls the smoothing of the data. Alpha = 1 retains no memory of past values (e.g. a random walk), while alpha = 0 retains infinite memory of past values (e.g. the series mean). Useful values are somewhere in between. Defaults to 0.5. Beta is equivalent to alpha, but controls the smoothing of the trend instead of the data. Gamma is equivalent to alpha, but controls the smoothing of the seasonality instead of the data Only finite values are averaged. NaN or null are ignored. If all values are missing/null/NaN, the return value will be NaN The average is based on the count of non-null, non-NaN values.- Parameters:
alpha
- A double between 0-1 inclusive, controls data smoothingbeta
- a double between 0-1 inclusive, controls trend smoothinggamma
- a double between 0-1 inclusive, controls seasonality smoothingperiod
- the expected periodicity of the datamultiplicative
- true if multiplicative HW should be used. False for additive
-
holtWintersForecast
public static double[] holtWintersForecast(double[] values, double alpha, double beta, double gamma, int period, double padding, boolean multiplicative, int numForecasts)Version of holt-winters that can "forecast", not exposed as a whitelisted function for moving_fn scripts, but here as compatibility/code sharing for existing moving_avg agg. Can be removed when moving_avg is gone.
-