首页 > 代码库 > 时间序列分析之 ARIMA 模型的JAVA实现

时间序列分析之 ARIMA 模型的JAVA实现

最近要用ARIMA模型预测用户的数量变化,所以调研了一下ARIMA模型,最后用JAVA实现了ARIMA算法。


一、ARIMA原理

ARIMA的原理主要参考的是ARIMA原理。


二、JAVA实现

弄懂了原理,用JAVA进行了实现,主要参考的步骤是ARIMA实现步骤,JAVA代码如下

(1)AR类,用于构建AR模型
package arima;
import java.util.*;

public class AR {
	
	double[] stdoriginalData=http://www.mamicode.com/{};>
(2)MA类,用于构建MA模型
package arima;
import java.util.Vector;
import arima.ARMAMath;
public class MA {

	double[] stdoriginalData=http://www.mamicode.com/{};>
(3)ARMA类,用于构建ARMA模型
package arima;
import java.util.*;

public class ARMA {
	
	double[] stdoriginalData=http://www.mamicode.com/{};>
(4)ARIMA类,用于构建ARIMA模型
package arima;
import arima.ARMAMath;
import java.util.*;

public class ARIMA {

	double[] originalData=http://www.mamicode.com/{};>
(5)ARIMAiFlex类,用于构建AR模型
package arima;
import java.util.Hashtable;
import java.util.*;

public class ARIMAiFlex {

	
	int             count=0;
	int []          model=new int[2];
	int[][]      modelOri=new int[][]{{0,1},{1,0},{1,1},{0,2},{2,0},{2,2},{1,2},{2,1},{3,0},{0,3},{3,1},{1,3},{3,2},{2,3},{3,3}};

	modelandpara       mp=null;
	int  predictValuetemp=0;
	int   avgpredictValue=http://www.mamicode.com/0;>

(6)ARMAMath类,常见的数据计算任务
package arima;
import Jama.Matrix;

public class ARMAMath
{
	public double avgData(double[] dataArray)
	{
		return this.sumData(dataArray)/dataArray.length;
	}
	
	public double sumData(double[] dataArray)
	{
		double sumData=http://www.mamicode.com/0;>
(7)test1,用于导入数据进行测试
package arima;
import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;
public class test1 {

	public static void main(String args[])
	{
		Scanner ino=null;
			
		try {
			/*********************************************************/
			ArrayList<Double> arraylist=new ArrayList<Double>();
			ino=new Scanner(new File("E:\\work\\Arima\\Arima\\Data\\ceshidata.txt"));
			
			while(ino.hasNext())
			{
				arraylist.add(Double.parseDouble(ino.next()));
			}
			
			double[] dataArray=new double[arraylist.size()]; 
			
			for(int i=0;i<dataArray.length;i++)
				dataArray[i]=arraylist.get(i);
	
			
			ARIMAiFlex myarima=new ARIMAiFlex(dataArray);
			currentAlgorithm cc=new currentAlgorithm(dataArray);
			
			/*********************************************************/
				
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			ino.close();
		}
	}
	
}



时间序列分析之 ARIMA 模型的JAVA实现