2017-08-08 54 views
0

如何使用R.NET執行更改點分析。我使用下面的代碼如何使用R.NET執行更改點分析

REngine.SetEnvironmentVariables(); 
REngine engine = REngine.GetInstance(); 
double[] data = new double[] { 1, 2, 3, 4, 5, 6 }; 
NumericVector vector = engine.CreateNumericVector(data); 
engine.SetSymbol("mydatapoints", vector); 
engine.Evaluate("library(changepoint)"); 
engine.Evaluate("chpoints = cpt.mean(mydatapoints, method="BinSeg")"); 
DynamicVector result = engine.Evaluate("x<-cpts(chpoints)").AsVector(); ; 
engine.Dispose(); 

我在圖書館(變點)收到以下錯誤上engine.Evaluate("library(changepoint)");

錯誤:沒有包稱爲 '變點'

編輯# 1

changepoint包是s如果沒有明確安裝,則默認情況下不存在。使用RGui - > Packages - > Load package進行安裝。

現在錯誤已被更改爲

狀態錯誤爲chpoints = cpt.mean(mydatapoints,方法=」 BinSeg」): 意外輸入

編輯#2

解決了前兩個錯誤之後,第二個評估語句中出現以下錯誤。

錯誤BINSEG(sumstat,筆= pen.value,cost_func = costfunc, minseglen = minseglen,:Q不是 段4

出現相同的錯誤的最大數目更大的R上以及使用這些命令

value.ts <- c(29.89, 29.93, 29.72, 29.98) 
chpoints = cpt.mean(value.ts, method="BinSeg") 
+0

結果呢,當你R中純粹鍵入此命令? –

+0

@MongZhu我不知道R有些例子,但是那些正在產生這個系列。我想和我的系列作品一起工作。 – bjan

+0

我在談論使用'library(changepoint)'時的錯誤信息。當你在R shell中輸入這個命令時,你會得到相同的消息嗎? –

回答

0

數據點應該在時間序列中轉換。

REngine.SetEnvironmentVariables(); 
REngine engine = REngine.GetInstance(); 
double[] data = new double[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }; 
NumericVector vector = engine.CreateNumericVector(data); 
engine.Evaluate("library(changepoint)"); 
engine.SetSymbol("values", vector); 
engine.Evaluate("values.ts = ts(values, frequency = 12, start = c(2017, 1))"); 
engine.Evaluate("chpoints = cpt.mean(values.ts, method=\"BinSeg\")"); 
var result = engine.GetSymbol("chpoints"); 
engine.Dispose(); 

現在正在尋找如何獲得滿意的結果早在C#,chpointsplot(chpoints)

+0

您可以將您的問題標記爲已回答,然後發佈另一個問題。 。 –

+0

@ 42-當然,但現在不允許接受它。另一個問題已經發布https://stackoverflow.com/questions/45567909/retrieve-result-from-r-in-c-sharp – bjan

0

的錯誤是不是在你的調用代碼,而是在你使用的R(你現在顯然實現的。)所以標籤這與rdotnet或c-sharp有關似乎具有誤導性:

mydatapoints <- c(1, 2, 3, 4, 5, 6) 
library(changepoint); 
chpoints = cpt.mean(mydatapoints, method="BinSeg"); 
#Error in BINSEG(sumstat, pen = pen.value, cost_func = costfunc, minseglen = minseglen, : 
# Q is larger than the maximum number of segments 4 

我不確定你的意圖。變點分析通常需要成對數據點... x-y和所有爵士樂。給R迴歸函數完美的線性數據也是不明智的。它通常會導致不可逆的矩陣。

我建議你用https://stackoverflow.com/search?q=%5Br%5D+changepoint進行搜索,找到一個簡單的代碼構建到你的REngine呼叫方案中。

+0

你是對的,數據點需要轉換爲時間系列。張貼我的答案。現在正在尋找如何在C#中獲得結果# – bjan