package quickml.supervised.crossValidation.movingAverages; import java.util.List; /** * Created by alexanderhawk on 4/29/14. */ public class HoltWintersMovingAverage implements MovingAverage { double average = 0; private double alpha; private double beta; public HoltWintersMovingAverage(double alpha, double beta) { this.alpha = alpha; this.beta = beta; } public void setAlpha(double alpha) { this.alpha = alpha; } public void setBeta(double beta) { this.beta = beta; } public double getAverage(List<Double> values) { double s = values.get(1); double b = values.get(1) - values.get(0); for(int i = 2; i < values.size(); i++) { double s_prev = s; s = alpha * values.get(i) + (1 - alpha) * (s - b); b = beta * (s - s_prev) + (1 - beta) * b; } return s; } }