Pergunta

Passei uma quantidade decente de tempo tentando caçar uma maneira simples de fazer isso - idealmente, existe uma biblioteca mágica por aí em algum lugar que levará meu conjunto de pontos de dados 3D e retornará 2 pontos na melhor linha de ajuste usando qualquer um ortogonal regressão ou mínimos quadrados e também retorne o erro da linha ajustada. Isso existe tal coisa e, se sim, onde?

Foi útil?

Solução

Isso é fácil de fazer, mas para escrever você mesmo, você precisará de um solucionador de valor próprio ou uma decomposição de valor singular. Crie a matriz NX3 A, dos seus dados (X-Xbar, Y-Ybar, Z-Zbar) como colunas. Salve esses meios para mais tarde, eu chamo de v0 = [xbar, ybar, zbar].

Agora, calcule os autovalores e os autovetores de A '*A, ou seja, a matriz 3x3 formada a partir de uma transposição multiplicada por A.

Se esses dados estão em uma linha em R^3, um desses autovalores será significativamente maior que os outros dois autovalores. Se isso não for verdade, a linha de regressão ortogonal não será bem estimada.

Pegue o vetor próprio associado ao maior valor próprio de A '*a. Então, se V é o vetor próprio correspondente, a linha de regressão ortogonal é definida como

V (t) = v0 + t*v

Qualquer ponto nessa linha pode ser dado por algum valor do parâmetro t.

Como alternativa, calcule a decomposição do valor singular de A e pegue o vetor singular certo, que corresponde ao maior valor singular de A.

Em ambos os casos, se você deseja calcular os erros para os pontos de dados, isso seria definido como simplesmente a distância ortogonal da linha em questão.

Outras dicas

Google para "Biblioteca de regressão de mínimos quadrados lineares Java" e você deve encontrar algumas opções. Um é Drej. Eu não usei isso sozinho, no entanto.

EDITAR - Não estou confiante de que isso responde à pergunta - não sei se os dados 3D são suportados.

É fácil o suficiente fazer isso se você souber o truque: http://www.scribd.com/doc/21983425/least-squares-fit

Mais dimensões significa mais coeficientes, mas são fáceis de adicionar. As idéias são todas iguais.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top