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