基于ARIMA模型实现时间序列的预测

# 第一种方案,有点复杂,涉及到模型中系数的调优,简单系统建议使用第2种方案。

一、引入POM

<dependency>
    <groupId>com.github.signaflo</groupId>
    <artifactId>timeseries</artifactId>
    <version>0.4</version>
</dependency>

二、实现示例

2.1 以月度借记卡发行作为时间序列,预测未来12个月的发卡量

ublic static void main(String[] args) throws Exception {

        TimeSeries timeSeries = TestData.debitcards;
        Arima.FittingStrategy fittingStrategy = Arima.FittingStrategy.CSSML;
        ArimaCoefficients coefficients = ArimaCoefficients.builder()
                .setMACoeffs(-0.6760904)
                .setSeasonalMACoeffs(-0.5718134)
                .setDifferences(1)
                .setSeasonalDifferences(1)
                .setSeasonalFrequency(12)
                .build();
        Arima model = Arima.model(timeSeries, coefficients, fittingStrategy);
        //预测未来12个月的发行借记卡数量的上限、下限及可能值
        Forecast forecast = model.forecast(12);

    }

2.2 一组序列,以线性回归的方式预测接下来的7个数字(比较好用)

public static void main(String[] args) {

        TimeSeries timeSeries = Ts.newAnnualSeries(new double[]{1.1, 1.3, 1.5, 1.7, 1.9, 2.1, 2.3, 2.5, 2.7, 2.9, 3.1, 3.3});

        // 在线性回归中,认为timeSeries是因变量,是结果,因此这里被看做了响应
        TimeSeriesLinearRegression model = TimeSeriesLinearRegression.builder().response(timeSeries).build();

        System.out.println(JSON.toJSONString(model.forecast(7).lowerPredictionInterval().asArray()));
        System.out.println(JSON.toJSONString(model.forecast(7).pointEstimates().asArray()));
        System.out.println(JSON.toJSONString(model.forecast(7).upperPredictionInterval().asArray()));
    }

# 方案二:

使用jarima,git hub上项目可以直接使用(但比较简单)

https://github.com/sameerz99/JArima

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值