0

您好,我正在尝试使用 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 并且需要从中获取系数数据。

4

1 回答 1

0

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

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

如果是这种情况,只需删除该行var X = ...并重命名xdataX,然后所有 5 个参数都将在p向量中按预期可用。

鉴于上面的数据,你最终会得到大约:

y : (x1, ..., x4) -> 123.2 - 8.9*x1 + 2.8*x2 + 3.7*x3 - 4.4*x4
于 2013-03-13T21:04:07.647 回答