2013-02-14 9 views
5

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) 
       { 
       } 

答えて

5

これはR.Netの問題ではなく、間違ったスクリプトを実行しようとしただけです。のは、純粋なR上のコードを実行してみましょう:今すぐ

> testTs <- c(1, 2, 3) 
> tsValue <- ts(testTs, frequency=1, start=c(2010, 1, 1)) 
> library("forecast") 
> arimaFit <- auto.arima(tsValue) 
> fcast <- forecast(tsValue, h=36) 
> plot(fcast) 

class(fcast)forecastに等しい:

> class(fcast) 
[1] "forecast" 
> as.numeric(fcast) 
Error: (list) object cannot be coerced to type 'double' 

fcastのstrucure:

> str(fcast) 
List of 11 
$ method : chr "Mean" 
$ level : num [1:2] 80 95 
$ x  : Time-Series [1:3] from 2010 to 2012: 1 2 3 
$ xname : chr "object" 
$ mean  : Time-Series [1:36] from 2013 to 2048: 2 2 2 2 2 2 2 2 2 2 ... 
$ lower : mts [1:36, 1:2] -0.177 -0.177 -0.177 -0.177 -0.177 ... 
    ..- attr(*, "dimnames")=List of 2 
    .. ..$ : NULL 
    .. ..$ : chr [1:2] "80%" "95%" 
    ..- attr(*, "tsp")= num [1:3] 2013 2048 1 
    ..- attr(*, "class")= chr [1:2] "mts" "ts" 
$ upper : mts [1:36, 1:2] 4.18 4.18 4.18 4.18 4.18 ... 
    ..- attr(*, "dimnames")=List of 2 
    .. ..$ : NULL 
    .. ..$ : chr [1:2] "80%" "95%" 
    ..- attr(*, "tsp")= num [1:3] 2013 2048 1 
    ..- attr(*, "class")= chr [1:2] "mts" "ts" 
$ model :List of 4 
    ..$ mu : num 2 
    ..$ mu.se: num 0.577 
    ..$ sd : num 1 
    ..$ call : language meanf(x = object, h = h, level = level, fan = fan) 
$ lambda : NULL 
$ fitted : Time-Series [1:3] from 2010 to 2012: NA 1 1.5 
$ residuals: Time-Series [1:3] from 2010 to 2012: NA 1 1.5 
- attr(*, "class")= chr "forecast" 
+0

をそのを指摘いただきありがとうございますが、私は完全には理解していません。 Rに「fcast」という値を入力すると、予測結果が返されます。これらの値は "fcast"のどこかに格納しなければなりません。どうすればそれらを取得できますか?それはちょうど良い数字をプロットします... – Chase

+0

fcastは異なるデータを持つ複雑なオブジェクトです。 $でこのオブジェクトのフィールドを使用できます。たとえば、as.numeric(fcast $ level)は数値ベクトル[80 95]です。as.numeric(fcast $ mean)は数値ベクトルrep(2,36)です。このデータはC#のNumericVector nv = engine.GetSymbol( "fcast $ mean")。AsNumeric(); – AndreyAkinshin

+0

fcast $ meanはヌル値を返します。これはR内で完璧に動作し、fcast $ meanはエラーマージンのない予測のみを返します。私はまだジェネリックベクトルのデータのいくつかを掘り下げようとしています。どこかにあるかのように私はちょうどどこにいるのか分からない。 – Chase

関連する問題