He pasado una buena cantidad de tiempo tratando de encontrar una forma sencilla de hacerlo; idealmente, existe una biblioteca mágica en alguna parte que tomará mi conjunto de puntos de datos 3D y devolverá 2 puntos en la línea de mejor ajuste usando ya sea regresión ortogonal o mínimos cuadrados y también devuelve el error de la línea ajustada. Existe tal cosa, y si es así, ¿dónde?¿Adaptar una línea 3D a datos de puntos 3D en Java?
Respuesta
Esto es bastante fácil de hacer, pero para escribirlo usted mismo necesitará un solucionador de valor propio o una descomposición de valor singular. Cree la matriz nx3 A, de sus datos (x-xbar, y-ybar, z-zbar) como columnas. Guarde esos medios de columna para más adelante, lo llamaré V0 = [xbar, ybar, zbar].
Ahora, calcular los valores propios y los vectores propios de A '* A, es decir, la matriz de 3x3 formado de una transposición multiplicado por A.
Si estos datos se encuentra en una línea en R^3, entonces uno de los los valores propios serán significativamente más grandes que los otros dos valores propios. Si esto no es cierto, entonces la línea de regresión ortogonal no será estimada correctamente.
Tome el vector propio asociado con el valor propio más grande de A '* A. Entonces, si V es el vector propio correspondiente, la línea de regresión ortogonal se define como
V (t) = V0 + t * V
Cualquier punto en que la línea puede ser dada por un valor del parámetro t.
Alternativamente, calcular la descomposición en valores singulares de A, y tomar el vector singular derecho que corresponde al mayor valor singular de A.
En cualquier caso, si desea calcular los errores de los puntos de datos, esto se definiría simplemente como la distancia ortogonal a la línea en cuestión.
Google para "biblioteca de regresión lineal de mínimos cuadrados de Java" y debe encontrar algunas opciones. Uno es Drej. Aunque no he usado esto yo mismo.
EDIT - No estoy seguro de que esto responda la pregunta - No sé si se admiten datos 3D.
Es bastante fácil hacerlo si se conoce el truco: http://www.scribd.com/doc/21983425/Least-Squares-Fit
más dimensiones significa más coeficientes, pero son lo suficientemente fácil de añadir en las ideas son todos iguales..
Mal. Lo que importa es la codificación, y cuando tienes una línea en 3D, la codificación es 2 (para una línea en 2D es 1). Por lo tanto, me temo que toda la lógica comúnmente utilizada para derivar el ajuste de mínimos cuadrados (como en su enlace) se rompe completamente. Consulte la respuesta de las astillas de madera a continuación. – AVB
- 1. Trazar puntos 3D en Matlab
- 2. Colocación de un elipsoide en puntos de datos 3D
- 3. forma más sencilla de gráficos 3D superficie dada puntos 3d
- 4. Zend_Mail y = 0D = 0A = 3D = 3D = 3D = 3D = 3D
- 5. Puntos bidimensionales de proyección inversa en 3D
- 6. Javascript: ¿Cómo dibujar una línea simple sobre lienzo (en 3d) y hacerla rotativa (en 3d)?
- 7. Puntos de ajuste de la curva en el espacio 3D
- 8. Java 3D Game Engine?
- 9. Trama 3D en java. Java3D o Jmonkey
- 10. Motor java 3d gratis
- 11. Dibuje una línea 3D con Irrlicht
- 12. Asignación de valores de Hilbert a puntos 3D
- 13. Movimiento de 2D a 3D
- 14. parcelas Generación 3D en R con puntos y puntos de vista de datos arbitrarias
- 15. Gráficos 3D: software para visualizar vectores 3D?
- 16. back-projecting una línea Plucker 2D punto a 3D
- 17. Programación de juegos en 3D en Java
- 18. programación de juegos en 3D en Java
- 19. Agregar letras a puntos de datos de trazado 3D en Matlab
- 20. aumentando el rendimiento en una consulta SELECT con un gran conjunto de datos de puntos 3D
- 21. algoritmo de agrupamiento 3D
- 22. Voxel 3d "grid"
- 23. Proyección 3D inversa (triángulo)
- 24. ¿Cómo proyecto inversamente los puntos 2D en 3D?
- 25. ¿Cómo envío imágenes 3D a mi TV 3D?
- 26. Matriz de proyección 3d a 2d
- 27. ¿Hay algún sistema de control de versiones para modelos 3D/datos en 3D?
- 28. generación uniforme de puntos 3D en cilindro/cono
- 29. Conjunto de datos 3D de ajuste de curva
- 30. ¿Cómo mostrar un gráfico 3D de una matriz 3D isosurface en matplotlib mplot3D o similar?
@ user85109 felicitaciones por una respuesta tan clara – Nic
Para obtener una prueba formal del método presentado, se puede consultar el enlace que se presenta aquí: http://mathhelpforum.com/advanced-statistics/181810-3d-line-best- fit.html – Nic