2
我需要找到一组点的最佳拟合回归线。 例如,对于该矩阵:Java线性回归
int b [][] = { { 3, 1, 0, 0, 0, 0, 0, 0, 0 },
{ 1, 2, 3, 1, 0, 1, 0, 0, 0 },
{ 0, 1, 2, 1, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 3, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 1, 3, 0, 0 },
{ 0, 0, 0, 0, 0, 1, 2, 3, 1 },
{ 0, 0, 0, 0, 0, 1, 1, 1, 2 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 1 } };
每个数字表示的数据点的该位置处的量(重量我想)(其中,行是X轴和列都为Y)。 我试图使用apache数学库中的SimpleRegression类,并遇到一些问题。首先,它似乎不支持权重。第二,我相信我做错了什么,即使对于主对角线上只有1的矩阵,斜率/截距结果也没有意义。
public static void main(String[] args) {
double a[][] = new double[9][9];
for (int i = 0; i < 9; i++)
a[i][i] = 1;
SimpleRegression r = new SimpleRegression(true);
r.addData(a);
System.out.println("Slope = " + r.getSlope());
System.out.println("Intercept = " + r.getIntercept());
}
这给我的结果是不正确的。我会假设这个矩阵表示函数f(x)= x,但我得到的斜率是-0.12499 ..
任何人都可以指出我在做什么错了吗? 我有一种感觉,我不仅滥用代码,而且数学。
addData([] [])期望一个2xN矩阵我想是为什么你不尝试addData(x,y)单独? – gpasch
并且认为应该给坐标(i,j)不是值 - 再次不是简单回归的用户,只是通过阅读 – gpasch
谢谢,它似乎正在沿着sI预期的方向工作,我一定误解了方式该方法起作用。阅读关于维基百科的线性回归让我思考了整个矩阵的线条。 也似乎多次添加相同的坐标会增加它的重量。有用的知道。 我毫不犹豫地称这个解决方案,直到明天早上我再测试一下,但这是一个很好的进展。谢谢。 – TheFooBarWay