ARIMAを使用して簡単な予測を行うには、R.Net 1.5を使用しています。私はR 2.14とR 2.15で試しました。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();
は、それが失敗した:私は、私も試してみたもののVisual Studioの2012年の目標.NET 4 .NET 4.5とVisual Studioここでは2010
を使用していますことは、私が書いたコードの一部であります私は数値ベクトルを取得しようとします。 TIはここでいくつかのエラーを取得します。最初は「エラー:オブジェクトは「double」と入力することはできません.2番目は「エラー:キャッチしたアクセス違反 - 気をつけて続行」
予測をGenericVectorとして取得すると、RDotNetのリストが取得されます。シンボリックエクスプレッション。私はそれらが何を含んでいるかを見るためにループしましたが、それはARIMA機能に関連しているようですが、実際の予測出力を見つけることはできません。私は入力と他の関連する値だけでなく、私は彼らが何であるかを判断することができない数字のリストの束を見つけることができます。
私がRevolution内でスクリプトを実行すると、出力が何であるべきかを知ることができます。これは、R.Netからの出力が正確かどうかを判断する方法です。 R.NetがRevolutionとは違った予測をしている可能性はあると思いますが(おそらくそうは思いませんが)、genericvectorの出力の1つは実際に正しい出力です。
GenericVectorの初期化は次のとおりです。私はブランケット試しに包み込み、デバッグのためだけに捕まえました.DynamicVectorの内部では、実際に詳細を調べることができます。
GenericVector newVector = engine.GetSymbol("fcast").AsList();
foreach (var vector in newVector)
{
try
{
DynamicVector dv = vector.AsVector();
}
catch (Exception)
{
}
をそのを指摘いただきありがとうございますが、私は完全には理解していません。 Rに「fcast」という値を入力すると、予測結果が返されます。これらの値は "fcast"のどこかに格納しなければなりません。どうすればそれらを取得できますか?それはちょうど良い数字をプロットします... – Chase
fcastは異なるデータを持つ複雑なオブジェクトです。 $でこのオブジェクトのフィールドを使用できます。たとえば、as.numeric(fcast $ level)は数値ベクトル[80 95]です。as.numeric(fcast $ mean)は数値ベクトルrep(2,36)です。このデータはC#のNumericVector nv = engine.GetSymbol( "fcast $ mean")。AsNumeric(); – AndreyAkinshin
fcast $ meanはヌル値を返します。これはR内で完璧に動作し、fcast $ meanはエラーマージンのない予測のみを返します。私はまだジェネリックベクトルのデータのいくつかを掘り下げようとしています。どこかにあるかのように私はちょうどどこにいるのか分からない。 – Chase