如何在java中调用R的auto.Arima函数并存储预测结果?

时间:2012-01-22 10:51:14

标签: java r jri forecasting

我是Java的新手。我在Java中使用R的auto.Arima函数来预测12个周期的数据。但预测结果的期限是十个期间。我如何做12个预测期?我还想在一个数组中存储预测结果。这是我的代码,它无法停止运行,我收到错误消息。

我可以做些什么来存储它的结果?

package Arima;

import org.rosuda.JRI.REXP;
import org.rosuda.JRI.Rengine;

public class Arima {

    public static void main(String[] args) {
        Rengine re = new Rengine(Rargs, false, null);
        System.out.println("Rengine created, waiting for R");
        if (!re.waitForR()) {
            System.out.println("Cannot load R");
            return;
        }
        re.eval("library(forecast);");
        re.eval("data<-scan('D:/timeseries.txt',skip=1);");
        re.eval("datats<-data;");
        // I use auto.arima function to forecast my data for 12 periods. 
        // but the period of forecast result is ten period.
        // How can I do for 12 periods of forecast ?  

        re.eval("arima<-auto.arima(datats);");
        re.eval("fcast<-forecast(arima);");
        REXP fs = re.eval("summary(fcast);");
        // I want to get result of forecast and returned it at an array
        double[] forecast = fs.asDoubleArray();
        for(int i=0; i<forecast.length; i++)
            System.out.println(forecast[i]);
        re.end();
    }
}

1 个答案:

答案 0 :(得分:3)

预测函数有一个参数h,用于指定预测范围。默认情况下为h=10。所以,只需将您的电话更改为forecast(arima,h=12),就可以了。