我使用R.Net 1.5来尝试使用ARIMA进行简单预测。我已经尝试使用R 2.14和R 2.15。我使用的Visual Studio 2012的目标.NET 4中,虽然我也试了.NET 4.5和Visual Studio 2010使用R.Net检索R评估结果
以下是一段代码我已经写了:
string rhome = System.Environment.GetEnvironmentVariable("R_HOME");
if (string.IsNullOrEmpty(rhome))
rhome = @"C:\Program Files\R\R-2.14.0";
System.Environment.SetEnvironmentVariable("R_HOME", rhome);
System.Environment.SetEnvironmentVariable("PATH", System.Environment.GetEnvironmentVariable("PATH") + ";" + rhome + @"\bin\x64");
using (REngine engine = REngine.CreateInstance("RDotNet"))
{
engine.Initialize();
NumericVector testGroup = engine.CreateNumericVector(submissions);
engine.SetSymbol("testGroup", testGroup);
engine.Evaluate("testTs <- c(testGroup)");
NumericVector ts = engine.GetSymbol("testTs").AsNumeric();
engine.Evaluate("tsValue <- ts(testTs, frequency=1, start=c(2010, 1, 1))");
engine.Evaluate("library(forecast)");
engine.Evaluate("arimaFit <- auto.arima(tsValue)");
engine.Evaluate("fcast <- forecast(tsValue, h=36)");
engine.Evaluate("plot(fcast)");
NumericVector nv = engine.GetSymbol("fcast").AsNumeric();
它失败当我试图检索数字向量。 TI会在这里发现一些错误。第一个是“错误:对象不能被强制输入'double'”,第二个是“错误:发现访问冲突 - 继续照顾”
如果我检索预测为GenericVector,我会得到一个RDotNet列表。 SymbolicExpressions。我浏览了那些内容,看看它们包含了什么,它似乎与ARIMA函数有关,但我无法找到实际的预测输出。我可以找到输入和其他相关的值以及一系列数字,我无法确定它们是什么。
如果我在Revolution中运行脚本,我可以看到输出应该是什么,这就是我如何确定R.Net的输出是否准确。我想有可能R.Net在执行预测时不同于革命(虽然我认为不太可能),并且通用向量中的输出之一确实是正确的输出。
这是GenericVector初始化。为了调试的目的,我用一条毯子试一下,抓住它:在DynamicVector内部,我可以真正检查细节。
GenericVector newVector = engine.GetSymbol("fcast").AsList();
foreach (var vector in newVector)
{
try
{
DynamicVector dv = vector.AsVector();
}
catch (Exception)
{
}
感谢您指出了这一点,但我不完全理解。如果我在R中输入值“fcast”,它将返回预测结果。这些值必须存储在“fcast”中的某个位置。我如何检索它们?它绘制的数字很好...... – Chase 2013-02-14 20:23:22
fcast是具有不同数据的复杂对象。你可以使用$这个对象的字段。例如:as.numeric(fcast $ level)是数字向量[80 95],as.numeric(fcast $ mean)是数字向量rep(2,36)等。您可以使用C#中的这些数据,像NumericVector nv = engine.GetSymbol(“fcast $ mean”)。AsNumeric(); – AndreyAkinshin 2013-02-14 20:26:59
fcast $ mean返回空值。这在R中完美地工作,其中fcast $意味着仅返回没有误差余量的预测。我仍然试图挖掘通用向量中的一些数据。我感觉好像它在某处我不知道在哪里。 – Chase 2013-02-18 01:35:32