2009-01-19 7 views
2

Nous utilisons un langage de programmation qui ne possède pas de fonction de régression linéaire. Nous avons déjà mis en œuvre une équation linéaire variable unique:Equations pour régression linéaire à 2 variables

y = Ax + B

et avons simplement calculé les coefficents A et B à partir des données en utilisant une solution similaire à this Stack Overflow answer.

Je sais ce problème devient géométriquement plus difficile que les variables sont ajoutées, mais pour nos besoins, nous avons seulement besoin d'ajouter un:

z = Ax + By + C

Quelqu'un avoir les équations de forme fermée, ou code dans n'importe quelle langue qui peut résoudre pour A, B et C donné un tableau de x, y et z?

Répondre

6

si vous avez trois équations linéaires

k = aX1 + bY1 + cZ1 
k = aX2 + bY2 + cZ2 
k = aX3 + bY3 + cZ3 

Qu'est-ce que vous pouvez faire est récrire comme matriz

| x1 y1 z1 | | a | | k | 
| x2 y2 z2 | | b | = | k | 
| x3 y3 y3 | | c | | k | 

de travailler [a b c ] faire l'opération matricielle suivante

| a |    | x1 y1 z1 |  | k | 
| b | = inverse( | x2 y2 z2 |) | k | 
| c |    | x3 y3 y3 |  | k | 

Le formule pour un inverse matrice 3x3 peut être trouvé here

+0

Merci. C'est exactement ce dont j'avais besoin. – lkessler

+0

Si vous avez plus de trois points, cette méthode ne fonctionnera pas. La solution des moindres carrés minimise l'erreur sur plus de trois points. – duffymo

+0

Pas de duffymo. Ceci est correct et fonctionne pour résoudre une régression linéaire à 2 variables. Voir l'exemple sur: http://en.wikipedia.org/wiki/Linear_regression où la matrice X est de 15 lignes sur 3 colonnes. Il se multiplie par sa transposition et crée ainsi une matrice 3x3 qui doit être inversée. – lkessler

2

Oui, c'est un problème d'algèbre linéaire facile si vous y pensez de la façon dont Gil Strang le fait. Here's une explication écrite.