Question

J'ai passé une bonne quantité de temps à essayer de traquer une façon simple de le faire - idéalement, une bibliothèque magique existe là quelque part qui prendra mon ensemble de points de données 3D et revenir 2 points sur la meilleure ligne d'ajustement en utilisant soit la régression des moindres carrés ou orthogonal et également renvoyer l'erreur de la ligne ajustée. Est-ce qu'une telle chose existe, et si oui, où?

Était-ce utile?

La solution

Ceci est assez facile à faire, mais pour écrire vous-même, vous aurez besoin d'un solveur ou une valeur propre décomposition de valeurs singulières. Créer la matrice de NX3 A, de votre (x-xbar, y-ybar, z-zbar) les données sous forme de colonnes. Sauf les colonnes signifie pour plus tard, je vais l'appeler V0 = [xbar, ybar, zbar].

Maintenant, calculer les valeurs propres et les vecteurs propres de A '* A, à savoir la matrice 3x3 formée à partir d'une transposée multipliée par A.

Si ces données se trouve sur une ligne dans R ^ 3, alors une de ces valeurs propres est nettement plus grande que les deux autres valeurs propres. Si cela est vrai, alors la ligne de régression orthogonale ne sera pas bien estimé.

Prenez le vecteur propre associé à la plus grande valeur propre de A '* A. Ensuite, si V est le vecteur propre correspondant, la ligne de régression orthogonale est définie comme

V (t) = V0 + t * V

Tout point sur cette ligne peut être donnée par une certaine valeur du paramètre t.

En variante, le calcul de la décomposition en valeurs singulières de A, et prendre le vecteur singulier droit qui correspond à la plus grande valeur singulière de A.

Dans les deux cas, si vous souhaitez calculer les erreurs pour les points de données, ce serait simplement défini comme la distance perpendiculaire à la ligne en question.

Autres conseils

Google pour « carrés moins java linéaire bibliothèque de régression » et vous devriez trouver quelques options. L'un est Drej . Je ne l'ai pas utilisé moi-même, cependant.

EDIT - Je ne suis pas convaincu que cela répond à la question -. Je ne sais pas si les données 3D est prise en charge

Il est assez facile de le faire si vous connaissez le truc: http: / /www.scribd.com/doc/21983425/Least-Squares-Fit

Plus de dimensions signifie plus coefficients, mais ils sont assez faciles à ajouter. Les idées sont les mêmes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top