我正在尝试使用Math.NET通过一小组数据点执行简单的线性拟合。使用Fit.Line我很容易执行线性拟合并获得斜率和截距:
Tuple<double, double> result = Fit.Line(xdata, ydata);
var intercept = result.Item1;
var slope = result.Item2;
这很简单,但错误呢?
y-data中的错误
我的y数据可能包含错误栏,Math.NET可以将这些错误考虑在内吗? x数据中没有错误,仅在y数据中。
适合参数错误
生成的拟合参数中的错误怎么样?斜率和截距应该有一个错误或至少某种方式让我知道这些参数有多好。通常我认为您使用协方差矩阵,其对角线元素会给出参数中的误差。我没有看到任何使用它的选项。 Math.NET能否为我提供拟合参数错误?
答案 0 :(得分:1)
我支持您可以使用此行来衡量拟合误差:
GoodnessOfFit.RSquared(xdata.Select(x => a+b*x), ydata); // == 1.0
其中1
表示完美(完全在线上),0
表示不良。
在该页面上的Math.NET文档中对其进行了描述:
http://numerics.mathdotnet.com/docs/Regression.html#Simple-Regression-Fit-to-a-Line