Holt_Winters三次平滑指数实现

本文介绍了一种适用于具有周期性数据的预测方法——Holt-Winters三次指数平滑。通过调整平滑因子,寻找方差最小的最佳预测。文章提供了Java代码实现,包括初始化水平、趋势和季节性组件,以及进行预测的步骤。
摘要由CSDN通过智能技术生成

参考网址:




适用场景:

具有周期性的数据的预测,平滑因子,季节平滑因子,趋势平滑因子通过反复测试,比较方差最小的为最佳预测。

实现代码:


import java.util.ArrayList;
import java.util.List;


/**
 * 三次指数平滑预测,最多外推一个周期
 * @author Administrator
 *
 */
public class HoltWintersTripleExponentialImpl {


static double[] alphas=new double[]{0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9};

public static Double getbetterforecast(List<Integer> y, int period, int m) {
double[] result=betterforecast(y,period,m);
return result[result.length-1];
}

/**
* 求出最佳预测
* @param y
* @param alpha
* @param beta
* @param gamma
* @param period
* @param m
* @param debug
* @return
*/
public static double[] betterforecast(List<Integer> y, int period, int m) {
double[] result = null;
double avg=0;
for(int i=0;i<alphas.length;i++){
int sum=0;
double[] temp=forecast(y,alphas[i],0.25,0,period,m,false);
for(int j=0;j<y.size();j++){
sum+=Math.abs(y.get(j)-temp[j]);
}
if(i==0){
avg=sum/y.size();
result=temp;
}
if(avg<(sum/y.size())){
result=temp;
}
}
return result;
}

/**
* This method is the entry point. It calculates the initial values and returns the forecast
* for the m periods.
* @param y 数据集合
* @param alpha - Exponential smoothing coefficients for level, trend, seasonal components.
* @param beta - Exponential smoothing coefficients for level, trend, seasonal components.
* @param gamma - Exponential smoothing coefficients for level, trend, seasonal components.
* @param perdiod - 一个完整周期的长度,至少需要两个周期 
* @param m -预测的个数
* @param debug - 是否打印详细信息

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值