Inscription / Connexion Nouveau Sujet
Niveau autre
Partager :

Regression linéaire en 3D par un plan

Posté par
mister
24-03-08 à 23:57

Bonsoir,

N'étant pas mathématicien de formation je fais face à un soucis mathématique dont je ne trouve pas la vraie solution.
J'aimerai pouvoir obtenir un plan qui fit avec des points dans l'espace. En d'autre terme, une regression linéaire des données en 3D.
Le problème étant est que je ne suis pas mathématicien et que je n'ai jamais eu de formation en 3D.
J'ai pu voir sous R cran des exemples permettant de faire cela mais il n'y a pas d'explication mathématique.

Ma question pour résumer :

J'ai des points (une bonne 50aines), et je veux trouver l'équation du plan qui fit au mieux les données. JE recherche l'explication mathématique et au cas ou si vous connaissez une library en C ou en Python qui le fasse.


Exemple :
A(0,1,2)
B(1,2,3)
C(4,2,1)
D(9,5,4)

Equation :
ax+by+cz+d=0   d'après ce que j'ai compris comment fonctionner les équations de plan



JE vous remercie par avance,
Mister

Posté par
lafol Moderateur
re : Regression linéaire en 3D par un plan 25-03-08 à 14:49

Bonjour
tu peux voir ça comme un problème de projection orthogonale dans un espace de dimension n = le nombre de points dont tu disposes. On commence par mettre l'équation de plan cherchée sous la forme z = ax + by + c

tu fabriques des vecteurs : 1 = (1,1,1...1) (autant de 1 que tu as de points), X=(x_1,x_2,...,x_n) (les abscisses de tes points), Y=(y_1,y_2,...,y_n) (les ordonnées de tes points),Z=(z_1,z_2,...,z_n) (les cotes de tes points).

tu cherches à minimiser \Bigsum_{i=1}^n{(z_i - (ax_i+by_i+c))^2}, qui peut être vue comme ||Z-(aX+bY+c1)||^2 (dans notre espace à n dimensions.)

le minimum est atteint lorsque aX+bY+c1 est le projeté orthogonal de Z sur l'espace engendré par X, Y et 1, ce qui donne

(Z|X)=a||X||^2+b(Y|X) + c(1|X)
 \\ (Z|Y)=a(Y|X)+b||Y||^2 + c(1|Y)
 \\ (Z|1)=a(1|X)+b(Y|1) + c||1||^2

où ( .|. ) désigne le produit scalaire à n dimensions (par exemple, (X|Y) = x_1y_1 + x_2y_2 + ...+x_ny_n)

tu résous ce système et tu trouves a, b et c

Posté par
JJa
re : Regression linéaire en 3D par un plan 17-05-10 à 19:40

Bonjour,

ce problème de régression par la méthode des moindres carrés des distances vraies (orthogonales) est usuellement résolu par des méthodes itératives.
Un calcul direct (sans itération) est possible grâce aux formules données dans l'article suivant :
"Régressions et prajectoires 3D" par le lien :
http://www.scribd.com/people/documents/10794575-jjacquelin

Posté par
lafol Moderateur
re : Regression linéaire en 3D par un plan 18-05-10 à 09:51


Jja, quel intérêt de répondre (un poil hors sujet , au demeurant) à un topic vieux de plus de deux ans, posté par un membre vert (c'est -à-dire plus connecté à l'île depuis au moins 6 mois) ?

Posté par
MrPatate
généralisation ? 27-01-11 à 09:59

Bonjour,
Merci pour la réponse dans ce topic, ça m'a beaucoup aidé!
Cependant, je voulais savoir si la technique utilisée des projections orthogonales pouvait se généraliser , ou s'adapter,pour des régressions quadratiques, ou même d'ordre supérieur.
D'avance merci!
--
Mr Patate

Posté par
lafol Moderateur
re : Regression linéaire en 3D par un plan 27-01-11 à 15:33

Bonjour, MrPatate

ça peut se généraliser à toutes sortes de modèles, pour peu qu'ils soient linéaires
(chercher un truc genre ax² + by² + cx + dy + e, linéaire par rapport aux indéterminées a,b,c,d,e, par exemple)

Posté par
lafol Moderateur
re : Regression linéaire en 3D par un plan 27-01-11 à 15:34

et bienvenue sur l'île

Posté par
dorlomion
solution "directe" 16-02-11 à 10:37

en reprenant les vecteurs x,y et z de dimension n*1 crees par Lafol, on cherche effectivement a mininiser l´erreur de l´approximation, nommons la
  R=/Bigsum_{i=1}^n{(e_i)^2}
avec
   e_i=z_i-(ax_i+by_i+c).

Nous avons m=3 parametres a trouver. Pour cela, on va creer la matrice  A de dimension n*m,

A=[x,y,1];

on cree le vecteur M contenant nos m parametres inconnus : M=[a;b;c] de dimension m*1

Si les points sont parfaitement alignes, on voit que cette methode rend le resultat exact avec le systeme suivant :
   A*M=z
Et maintenant, pour trouver les valeurs de M, on multiplie a droite de a gauche par la transposee de A, /A^t, puis par l´inverse de /A^t*A

ce qui nous donne :

    /M=inv(A^t*A)*A^t*z;

En pratique, cela marche pour toute distribution de points, construire A puis calculer M avec la formule precedente. Le vecteur des erreurs commise est
  E=Z-A*M;

Les utilisateurs experimente m´excuseront, je ne sais pas utiliser les representations mathematiques...

Posté par
dorlomion
renvoi vers question statistique plus complexe 16-02-11 à 10:42

En utilisant la methode decrite ci dessus, on obtient d´excellent resultats en un temps de calcul minimum. Je me permet de demander de l´aide sur un autre post(relie a celui ci, donc pas hors sujet) pour evaluer la precision statistique des coefficients de m : voir post "evaluation des coefficient d´une regression multilineaire"

Merci d´avance



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1719 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !