使用math.net进行多次回归

时间:2013-03-13 19:09:45

标签: c# linear-regression mathdotnet

您好我正在尝试使用math.net进行多次回归,我有点困惑。

var xdata = new DenseMatrix(
 new double[,]{{1, 36, 66, 45, 32},
             {1, 37, 68, 12, 2},
             {1, 47, 64, 78, 34},
             {1, 32, 53, 56, 32},
             {1, 1, 101, 24, 90}});

        var ydata = new double[] { 15, 20, 25, 55, 95 };

        var X = DenseMatrix.CreateFromColumns(new[] { new DenseVector(xdata.Length, 1), new DenseVector(xdata) });
        var y = new DenseVector(ydata);

        var p = X.QR().Solve(y);
        var a = p[0];
        var b = p[1];

我想我不懂Math.Net,对此的任何帮助都会很棒。基本上我有多个x和一个y,需要从中获取系数数据。

1 个答案:

答案 0 :(得分:0)

从您准备矩阵的方式(即第一列始终为1),在我看来,您实际上有4个独立变量,并且您正在寻找一个简单的回归,只需将所有自变量的线性组合作为目标函数:

y : (x1, ..., x4) -> p0 + p1*x1 + ... + p4*x4

如果是这种情况,只需删除行var X = ...,然后将xdata重命名为X,然后p向量中的所有5个参数都将按预期显示

鉴于上述数据,您最终会得到大约:

y : (x1, ..., x4) -> 123.2 - 8.9*x1 + 2.8*x2 + 3.7*x3 - 4.4*x4