Это достаточно просто сделать, но чтобы написать это самостоятельно, вам понадобится решатель по собственным значениям или разложение по сингулярным значениям. Создайте nx3 матрицу A ваших данных (x-xbar, y-ybar, z-zbar) в виде столбцов. Сохраните эти средства столбцов на потом, я назову это V0 = [xbar, ybar, zbar].
Теперь вычислим собственные значения и собственные векторы A '* A, то есть матрицу 3x3, сформированную из транспонирования A, умноженную на A.
Если эти данные лежат на линии в R ^ 3, то одно из этих собственных значений будет значительно больше, чем два других собственных значения. Если это не так, то линия ортогональной регрессии не будет хорошо оценена.
Возьмем собственный вектор, который связан с наибольшим собственным значением A '* A. Тогда, если V является соответствующим собственным вектором, линия ортогональной регрессии определяется как
V (t) = V0 + t * V
Любая точка на этой линии может быть задана некоторым значением параметра t.
В качестве альтернативы вычислите разложение по сингулярному значению A и возьмите правый единственный вектор, который соответствует наибольшему сингулярному значению A.
В любом случае, если вы хотите вычислить ошибки для точек данных, это будет определено как просто ортогональное расстояние до рассматриваемой линии.