2017-10-13 38 views
0

我想用MathNet來計算我的數據的加權線性迴歸。尋找一個樣本如何做加權線性迴歸

該文檔是here

我試圖找到a x + b = y,使它最適合(x,y,w)的列表,其中w是每個點的權重。

 var r = WeightedRegression.Weighted(
      weightedPoints.Select(p=>new Tuple<double[],double>(new [] { p.LogAvgAmount}, p.Frequency), 
      weightedPoints.Select(p=>Convert.ToDouble(p.Weight)).ToArray(), false); 

因此,在r我得到一個單一的點。我期待的是a和b的值。

我在做什麼錯?

回答

1

WeightedRegression.Weighted預計預測矩陣作爲第一個參數,並且只傳遞LogAvgAmount。嘗試添加一個1到列表或調用WeightedRegression.Weightedintercept: true

var x = weightedPoints.Select(p => new[] {p.LogAvgAmount}).ToArray(); 
var y = weightedPoints.Select(p => p.Frequency).ToArray(); 
var w = weightedPoints.Select(p => Convert.ToDouble(p.Weight)).ToArray(); 

// r1 == r2 
var r1 = WeightedRegression.Weighted(weightedPoints.Select(p => 
    new[] {1, p.LogAvgAmount}).ToArray(), y, w); 

var r2 = WeightedRegression.Weighted(x, y, w, intercept: true);