2017-10-13 10 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を追加するか、intercept: 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); 
でを追加してみてください
関連する問題