【问题标题】:get output of arima forecast from R and capture as an array in Java从 R 获取 arima 预测的输出并在 Java 中捕获为数组
【发布时间】:2014-03-04 03:26:24
【问题描述】:

我正在尝试使用 Eclipse 使用 Java 中的 R 的 arima 进行预测。我正在使用 Rserve。我需要以数组格式输出预测和间隔。我可以在 Eclipse 控制台中将预测打印出来作为输出。如何检索点预测和置信区间作为数组。这是我的代码。

RConnection c = null;

int[] kings = { 60, 43, 67, 50, 56, 42, 50, 65, 68, 43, 65, 34, 47, 34,
        49, 41, 13, 35, 53, 56, 16, 43, 69, 59, 48, 59, 86, 55, 68, 51,
        33, 49, 67, 77, 81, 67, 71, 81, 68, 70, 77, 56 };
try {
    c = new RConnection();
    System.out.println("INFO : The Server version is :-- " + c.getServerVersion());
    c.eval("library(\"forecast\")");
    c.assign("kings", kings);
    c.eval("datats<-data;");
    c.eval("kingsts<-ts(kings);");
    c.eval("arima<-auto.arima(kingsts);");
    c.eval("fcast<-forecast(arima, h=12);");
    String f = c.eval("paste(capture.output(print(fcast)),collapse='\\n')").asString();
    System.out.println(f);

//网上的代码建议我做以下,但这不起作用 REXP fs = re.eval("summary(fcast);"); 双[] 预测 = fs.asDoubleArray(); for(int i=0; 我

【问题讨论】:

    标签: r forecasting java


    【解决方案1】:

    我想出了如何检索这些值。我将其转换为数据框。 c.eval("ds=as.data.frame(fcast);"); //获取预测值

                c.eval("names(ds)[1]<-paste(\"actual\");");
            REXP actual=c.eval("(ds$\"actual\")");  
            double[] forecast = actual.asDoubles();
            for(int i=0; i<forecast.length; i++)
            System.out.println("forecast values are: "+forecast[i]);
    

    仍然需要弄清楚如何将时间戳附加到数据帧

    【讨论】:

      猜你喜欢
      • 2013-04-15
      • 1970-01-01
      • 1970-01-01
      • 2015-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多