Math.NET回归斜率,截距和系数

时间:2018-02-05 21:42:12

标签: c# mathdotnet

对我原来问题的模糊性感到抱歉。以下是同一问题的修订和更详细的格式。

我在下面的示例中引用了此页面: https://numerics.mathdotnet.com/regression.html

该页面向我展示了如何获得具有两个一维数组输入的简单回归的斜率和截距,即xdata和ydata:

double[] xdata = new double[] { 10, 20, 30 };
double[] ydata = new double[] { 15, 20, 25 };

Tuple<double, double> p = Fit.Line(xdata, ydata);
double a = p.Item1; // == 10; intercept
double b = p.Item2; // == 0.5; slope

基于xdata和ydata输入,我想我可以通过这样做得到系数:

var coefficient = GoodnessOfFit.R(xdata, ydata);

现在我想弄清楚的是,如果xdata输入是二维数组,我如何得到截距,斜率和系数值。以下是xdata和ydata输入值:

double[][] xdata = new[] { new[] { 1.0, 4.0 }, new[] { 2.0, 5.0 }, new[] { 3.0, 2.0 } };
double[] ydata = new[] { 15.0, 20, 10 };

上面的math.net页面上有一节介绍了多元回归,但我不确定如何从中提取斜率,截距和系数值:

double[] p = Fit.MultiDim(xdata, ydata, intercept: true);

请指教。谢谢!

1 个答案:

答案 0 :(得分:0)

Fit.MultiDim是一个返回double []的函数。我没有使用过MultiDim,但我非常确定系数值会在数组中返回,如其他回归方法的文档中所述。

要使用GoodnessOfFit,请使用系数创建建模值数组。这些和原始的Y值都会进入R,StandardError等。请注意,如果它需要degreesOfFreedom,它实际上要求在你的情况下通过回归减少DF的数量= #ystems = 3。