2017-10-13 127 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);