private void ComputeNNForecast() { string filePath = (dataDirectory + "\\" + fileName).Replace("\\", "/"); REngine engine = StartEngine(); engine.Evaluate(libraries); engine.Evaluate("data <- read.csv(\"" + filePath + "\")"); engine.Evaluate("myts <- ts(data[,1], frequency = " + frequency + ")"); engine.Evaluate("NNfit <- nnetar(myts)"); engine.Evaluate("NNpred <- forecast(NNfit, h = " + periods + ")"); engine.Evaluate("mean <- as.integer(NNpred$mean)"); IntegerVector v = engine.GetSymbol("mean").AsInteger(); results = v.ToArray(); }
private void ComputeArimaForecast() { string filePath = (dataDirectory + "\\" + fileName).Replace("\\", "/"); REngine engine = StartEngine(); engine.Evaluate(libraries); engine.Evaluate("data <- read.csv(\"" + filePath + "\")"); engine.Evaluate("myts <- ts(data[,1], frequency = " + frequency + ")"); engine.Evaluate("ARIMAfit1 <- auto.arima(myts, stepwise = FALSE, approximation = FALSE)"); engine.Evaluate("myfc <- forecast(ARIMAfit1, h = " + periods + ")"); engine.Evaluate("mean <- as.integer(myfc$mean)"); IntegerVector v = engine.GetSymbol("mean").AsInteger(); results = v.ToArray(); }
//Execute a previson on esempio on the 8 future values based on stagionality = 4. private void esempioForecast() { string esempioPath = (dataDirectory + "\\esempio.csv").Replace("\\", "/"); StartupParameter rinit = new StartupParameter(); rinit.Quiet = true; rinit.RHome = "C:\\Program Files\\R\\R-3.4.4"; rinit.Interactive = true; REngine.SetEnvironmentVariables(); REngine engine = REngine.GetInstance(null, true, rinit); engine.Evaluate(""); engine.Evaluate("library(tseries)"); engine.Evaluate("library(forecast)"); engine.Evaluate("data <- read.csv(\"" + esempioPath + "\")"); engine.Evaluate("myts <- ts(data[,2], frequency = 4)"); engine.Evaluate("ARIMAfit1 <- auto.arima(myts, stepwise = FALSE, approximation = FALSE)"); engine.Evaluate("myfc <- forecast(ARIMAfit1, h = 8)"); engine.Evaluate("intMean <- as.integer(myfc$mean)"); IntegerVector a1 = engine.GetSymbol("intMean").AsInteger(); results = a1.ToArray(); }
//Execute a previson on gioiellerie time series on the 24 future values based on stagionality = 12. private void gioiellerieForecast() { string gioielleriePath = (dataDirectory + "\\gioiellerie.csv").Replace("\\", "/"); StartupParameter rinit = new StartupParameter(); rinit.Quiet = true; rinit.RHome = "C:\\Program Files\\R\\R-3.4.4"; rinit.Interactive = true; REngine.SetEnvironmentVariables(); REngine engine = REngine.GetInstance(null, true, rinit); engine.Evaluate(""); engine.Evaluate("library(tseries)"); engine.Evaluate("library(forecast)"); engine.Evaluate("data <- read.csv(\"" + gioielleriePath + "\")"); //THIS 3 must be converted back into two when the data are readed. engine.Evaluate("myts <- ts(data[,3], frequency = 12)"); engine.Evaluate("ARIMAfit1 <- auto.arima(myts, stepwise = FALSE, approximation = FALSE)"); engine.Evaluate("myfc <- forecast(ARIMAfit1, h = 24)"); engine.Evaluate("intMean <- as.integer(myfc$mean)"); IntegerVector a1 = engine.GetSymbol("intMean").AsInteger(); results = a1.ToArray(); }
public static void Start(REngine engine) { Console.WriteLine("\n\nImporting Objects\n\n"); string RCodeString = string.Empty; //R character vector -- R.NET RDotNet.CharacterVector RCodeString = "mycharvector<-c(\"hello\",\"bye\",\"OSIsoft\")"; Console.WriteLine("\nR Code: " + RCodeString); engine.Evaluate(RCodeString); CharacterVector myCharacterVector = engine.GetSymbol("mycharvector").AsCharacter(); string[] myStringArray = myCharacterVector.ToArray(); Console.WriteLine("\nmyCharacterVector: "); int i = 1; foreach (string myCharacter in myCharacterVector) { Console.WriteLine(i + " value: " + myCharacter); i++; } //R int vector -- R.NET RDotNet.IntegerVector RCodeString = "myintvector<-1:10"; Console.WriteLine("\nR Code: " + RCodeString); IntegerVector myIntegerVector = engine.Evaluate(RCodeString).AsInteger(); int[] myIntegerArray = myIntegerVector.ToArray(); Console.WriteLine("\nInteger Vector: "); i = 1; foreach (int myInteger in myIntegerVector) { Console.WriteLine(i + " value=" + myInteger); i++; } //R real vector -- R.NET RDotNet.NumericVector RCodeString = "myrealvector<-rnorm(5, 0, 1)"; Console.WriteLine("\nR Code: " + RCodeString); NumericVector myNumericVector = engine.Evaluate(RCodeString).AsNumeric(); double[] myDoubleArray = myNumericVector.ToArray(); Console.WriteLine("\nNumeric Vector: "); i = 1; foreach (double myNumeric in myNumericVector) { Console.WriteLine(i + " value=" + myNumeric); i++; } //R complex vector -- R.NET RDotNet.ComplexVector RCodeString = "mycomplexvector<- 1:2 + 1i*(8:9)"; Console.WriteLine("\nR Code: " + RCodeString); ComplexVector myComplexVector = engine.Evaluate(RCodeString).AsComplex(); Complex[] myComplexArray = myComplexVector.ToArray(); Console.WriteLine("\nComplex Vector: "); i = 1; foreach (Complex myComplex in myComplexVector) { Console.WriteLine(i + " value=" + myComplex.Imaginary + "i + " + myComplex.Real); i++; } //R raw vector -- R.NET RDotNet.RawVector RCodeString = "myrawvector<-charToRaw(\"u03a0\")"; Console.WriteLine("\nR Code: " + RCodeString); RawVector myRawVector = engine.Evaluate(RCodeString).AsRaw(); Console.WriteLine("\nRaw Vector: "); i = 1; foreach (Byte myByte in myRawVector) { Console.WriteLine(i + " value=" + myByte); i++; } //R logical vector -- R.NET RDotNet.LogicalVector RCodeString = "mylogicalvector<-c(FALSE, TRUE, FALSE, TRUE, FALSE)"; Console.WriteLine("\nR Code: " + RCodeString); LogicalVector myLogicalVector = engine.Evaluate("c(FALSE, TRUE, FALSE, TRUE, FALSE)").AsLogical(); Boolean[] myBooleanArray = myLogicalVector.ToArray(); Console.WriteLine("\nLogical Vector: \n"); i = 1; foreach (Boolean myBoolean in myLogicalVector) { Console.WriteLine(i + " value=" + myBoolean.ToString()); i++; } //Close R.NET connection engine.Dispose(); }