1

我正在尝试使用 Math.NET 通过一小组数据点执行简单的线性拟合。使用 Fit.Line 我可以很容易地执行线性拟合并获得斜率和截距:

Tuple<double, double> result = Fit.Line(xdata, ydata);
var intercept = result.Item1;
var slope = result.Item2;

这很简单,但是错误呢?

y 数据中的错误

我的 y 数据可能包含误差线,Math.NET 可以考虑这些错误吗?x 数据没有错误,只有 y 数据。

拟合参数错误

结果拟合参数中的误差怎么办?斜率和截距应该有一个错误,或者至少以某种方式让我知道这些参数的拟合程度。通常我认为你会使用协方差矩阵,它的对角线元素会在参数中产生错误。我没有看到任何使用它的选项。Math.NET 能够给我拟合参数错误吗?

4

1 回答 1

2

我想你可以用这条线来测量拟合误差:

GoodnessOfFit.RSquared(xdata.Select(x => a+b*x), ydata); // == 1.0

其中1意味着 PERFECT(完全在线)并且0意味着 POOR。

它在该页面上的 Math.NET 文档中进行了描述:

Math.net - 曲线拟合:线性回归

于 2015-01-14T22:38:55.310 回答