寻找样本如何进行加权线性回归
Looking for a sample how to do weighted linear regression
我正在尝试使用 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 的值。
我做错了什么?
WeightedRegression.Weighted
需要一个预测矩阵作为第一个参数,并且只有 LogAvgAmount
被传递。尝试将 1
添加到列表或使用 intercept: true
调用 WeightedRegression.Weighted
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);
使用 Math.Net 数值可能是个好主意。
加权回归
有时可以通过抑制特定数据点来减少回归误差。我们可以通过在正规方程 XTy=XTXp 中引入权重矩阵 W 来实现这一点。这样的权重矩阵通常是对角线的,对角线上的每个数据点都有一个单独的权重。
var p = WeightedRegression.Weighted(X,y,W);
如果我们可以使权重回归适应感兴趣的点,例如抑制远处的所有数据点。不幸的是,这样模型参数取决于兴趣点 t。
1: // warning: preliminary api
2: var p = WeightedRegression.Local(X,y,t,radius,kernel);
您可以在以下位置找到更多信息:
https://numerics.mathdotnet.com/regression.html
我正在尝试使用 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 的值。
我做错了什么?
WeightedRegression.Weighted
需要一个预测矩阵作为第一个参数,并且只有 LogAvgAmount
被传递。尝试将 1
添加到列表或使用 intercept: true
WeightedRegression.Weighted
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);
使用 Math.Net 数值可能是个好主意。
加权回归
有时可以通过抑制特定数据点来减少回归误差。我们可以通过在正规方程 XTy=XTXp 中引入权重矩阵 W 来实现这一点。这样的权重矩阵通常是对角线的,对角线上的每个数据点都有一个单独的权重。
var p = WeightedRegression.Weighted(X,y,W);
如果我们可以使权重回归适应感兴趣的点,例如抑制远处的所有数据点。不幸的是,这样模型参数取决于兴趣点 t。
1: // warning: preliminary api
2: var p = WeightedRegression.Local(X,y,t,radius,kernel);
您可以在以下位置找到更多信息: https://numerics.mathdotnet.com/regression.html