Вопрос

Я потратил приличное количество времени, пытаясь найти простой способ сделать это - в идеале где-то существует волшебная библиотека, которая возьмет мой набор точек трехмерных данных и вернет 2 точки на линии наилучшего соответствия, используя либо ортогональные регрессия или метод наименьших квадратов, а также вернуть ошибку подобранной линии.Существует ли такое, и если да, то где?

Это было полезно?

Решение

Это достаточно легко сделать, но чтобы написать это самостоятельно, вам понадобится решатель собственных значений или разложение по сингулярным значениям.Создайте матрицу A nx3 ваших данных (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.

В любом случае, если вы хотите вычислить ошибки для точек данных, это будет определяться просто как ортогональное расстояние до рассматриваемой линии.

Другие советы

Погуглите по запросу «библиотека линейной регрессии методом наименьших квадратов Java», и вы найдете несколько вариантов.Один Дрей.Хотя сам я этим не пользовался.

РЕДАКТИРОВАТЬ - Я не уверен, что это ответ на вопрос: я не знаю, поддерживаются ли 3D-данные.

Сделать это достаточно легко, если знать хитрость: http://www.scribd.com/doc/21983425/Least-Squares-Fit

Больше измерений означает больше коэффициентов, но их достаточно легко добавить.Идеи все те же.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top