8

我花了相当多的时间试图寻找一种简单的方法来做到这一点 - 理想情况下,一个神奇的库存在于某个地方,它将获取我的一组 3D 数据点并使用任一正交在最佳拟合线上返回 2 个点回归或最小二乘,并返回拟合线的误差。这样的事情是否存在,如果存在,在哪里?

4

3 回答 3

10

这很容易做到,但要自己编写,您需要一个特征值求解器或奇异值分解。将 (x-xbar, y-ybar, z-zbar) 数据的 nx3 矩阵 A 创建为列。保存这些列意味着以后,我将其称为 V0 = [xbar,ybar,zbar]。

现在,计算 A'*A 的特征值和特征向量,即由 A 转置乘以 A 形成的 3x3 矩阵。

如果此数据位于 R^3 中的一条线上,则其中一个特征值将显着大于其他两个特征值。如果这不是真的,那么正交回归线将不会被很好地估计。

取与 A'*A 的最大特征值相关联的特征向量。那么如果V是对应的特征向量,则正交回归线定义为

V(t) = V0 + t*V

该线上的任何点都可以由参数 t 的某个值给出。

或者,计算 A 的奇异值分解,并取 A 的最大奇异值对应的右奇异向量。

在任何一种情况下,如果您希望计算数据点的误差,这将被简单地定义为与相关直线的正交距离。

于 2010-02-28T23:23:49.157 回答
1

谷歌“java线性最小二乘回归库”,你应该找到一些选择。一个是德雷杰。不过,我自己没有使用过这个。

编辑- 我不相信这能回答这个问题 - 我不知道是否支持 3D 数据。

于 2010-02-28T19:32:29.040 回答
1

如果你知道诀窍,这很容易做到:http ://www.scribd.com/doc/21983425/Least-Squares-Fit

更多的维度意味着更多的系数,但它们很容易添加。想法都是一样的。

于 2010-02-28T19:44:05.410 回答