2017-10-13 19 views
0

MathNet을 사용하여 데이터의 가중 선형 회귀를 계산하려고합니다.샘플을 찾고 가중 선형 회귀를 수행하는 방법

설명서는 here입니다.

w은 (x, y, w)의 목록에 가장 적합하도록 a x + b = y을 찾으려고합니다. 여기서 각 점의 가중치는 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); 

결과적으로 에는 단일 지점이 있습니다. 내가 기대하는 것은 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); 
과 함께 을 추가하십시오.