Corrélation non linéaire

Discussions générales concernant les mathématiques.
[ce forum est modéré par les modérateurs globaux du site]
Règles du forum
Merci d'éviter le style SMS dans vos messages et de penser à utiliser la fonction Recherche avant de poster un message. Pour joindre des fichiers à vos messages, consulter ce sujet.
> Penser à utiliser le mode LaTeX (voir ici) afin de rendre vos formules plus lisibles.
> Pour obtenir de l'aide sur un exercice ou un problème, consulter cette section. (ce forum est destiné aux discussions plutôt théoriques)

Corrélation non linéaire

Messagepar mike » Mardi 18 Juillet 2006, 11:30

Bonjour à tous

je souhaiterais savoir s'il y a une formule ou un algorithme qui
permet de déterminer le coéfficient de corrélation de deux séries
statistiques(X,Y) NON LINEAIRES?
La formule que je trouve le plus souvent est le coéfficient de corrélation linéaire, c'est celle là aussi qui est implantée dans excel.

Merci d'avance
mike
Utilisateur
 
Messages: 5
Inscription: Mardi 18 Juillet 2006, 11:20

Publicité

Messagepar nirosis » Mardi 18 Juillet 2006, 12:56

Tu peux déjà chercher des corrélations en formes polynomiales.

Si tu as une série $X$ et une $Y$.

Tu veux expliquer $Y$ comme une fonction de $X$.

Alors tu fais une corrélation linéaire entre $Y$ $X$ $X^2$ $X^3$ ...

Enfin c'est l'idée la plus simple je crois ! Tu peux encore le faire dans excel comme ça.

Sinon il y a Matlab qui la même chose, en mieux ;)
Dernière édition par nirosis le Mardi 18 Juillet 2006, 18:05, édité 1 fois.
nirosis
Administrateur
 
Messages: 1806
Inscription: Samedi 28 Mai 2005, 13:48
Localisation: Orsay, France
Statut actuel: Actif et salarié | Maître de conférence

Messagepar mike » Mardi 18 Juillet 2006, 13:35

Salut!!
Merci pour la réponse, mais au fait en faisant la corrélation entre y x, x², on fait toujours une corrélation linéaire(je l'ai tester avec excel) or mon problème est:
en prenant une série y=1/x² et en faisant la corrélation avec la série x, on trouve un coefficient de corrélation assez faible alors que y forte dépendance avec x.
Donc c'est la formule ou l'algorithme permettant de calculer ce type de corrélation que je voulais savoir.

Merci d'avance
mike
Utilisateur
 
Messages: 5
Inscription: Mardi 18 Juillet 2006, 11:20

Messagepar guiguiche » Mardi 18 Juillet 2006, 14:12

Avec cette technique, on effectue toujours une "corrélation linéaire" mais entre y et x² ou entre y et exp(x) (c'est à dire aussi entre ln(y) et x) ou entre y et cos(x), que sais-je encore. Tu n'a peut-être pas testé la bonne transformation sur (ou sur y) avant de lancer la "corrélation linéaire".
guiguiche
Modérateur
 
Messages: 8065
Inscription: Vendredi 06 Janvier 2006, 15:32
Localisation: Le Mans
Statut actuel: Actif et salarié | Enseignant

Messagepar mike » Mardi 18 Juillet 2006, 14:22

salut!
Je n'ai pas très bien compris ta réponse, mais au fait quand tu fais une corrélation linéaire entre deux séries dépendantes de façon non linéaires, tu fausses le résultat du coefficient de corrélation car la formule prend en compte juste les endroits où c'est linéaire et ignore les autres d'où tu as un mauvais coefficient alors qu'il ya une forte dépendance !
mike
Utilisateur
 
Messages: 5
Inscription: Mardi 18 Juillet 2006, 11:20

Messagepar P.Fradin » Mardi 18 Juillet 2006, 14:34

mike a écrit:tu as un mauvais coefficient alors qu'il ya une forte dépendance !


Mes souvenirs de statistiques sont lointains, mais il me semble normal que le coefficient de corrélation linéaire soit faible quand il n'ya pas de dépendance linéaire!

Si vous avez une dépendance de type affine ($y=ax+b$) on cherche une corrélation linéaire entre y et x.

Si vous avez une dépendance de type exponentielle ($y=a^x$) on cherche une corrélation linéaire entre ln(y) et x (avec un papier semi-logarithmique par exemple)

Si vous avez une dépendance de type puissance ($y=x^a$) on cherche une corrélation linéaire entre ln(y) et ln(x) (avec un papier logarithmique par exemple).

C'est la forme du nuage de points $(x_i,y_i)$ qui nous dit dans quelle direction chercher.
P.Fradin
 

Messagepar mike » Mardi 18 Juillet 2006, 15:14

salut !
je vois ce que tu veux dire, il s'agit de linéariser. c'est une bonne idée et elle nous donne un bon coef de corrélation mais il faut à priori connaitre le type de la dépendance. Avec les données dont je dispose, je ne connais pas à priori le type de dépendance et même en regardant la forme du nuage de point, ce n'est pas évident de déviner le type de dépendance. donc c'est un peu dur. En regardant quelques articles en anglais, j'ai vu "correlation ratio" ou rapport de corrélation qui fait ce genre de calcul. Mais je n'ai pas bien compris car ça fait intevenir des classe dont moi je ne dispose pas et il y a peu d'information et pas d'exemple d'application. si quelqu'un a une idée !!

Merci d'avance
mike
Utilisateur
 
Messages: 5
Inscription: Mardi 18 Juillet 2006, 11:20

Messagepar nirosis » Mardi 18 Juillet 2006, 18:42

Si ces méthodes de corrélation en "devinant" la forme du nuage de point ne te plaisent pas, il existe aussi des méthodes à base de réseaux de neurones formels.

Telles que : Independant components analysis (ICA), non-linear components analysis (NCLA)... Il y a aussi la FastICA (algo en matlab qu'on trouve facilement sur le net). Cherche sur google si une méthode par réseaux de neurone t'intéresse.

Après c'est sûr qu'il te faut essayer de comprendre les méthodes derrières.

Autre méthode appelée Support Vector Machine (SVM) qui peut te permettre de trouver des relations non-linéaires entre des données...

Mais sache que quand ça touche au non-linéaire, il n'y a pas vraiment de recette miracle. Chacun utilisera ce qui lui convient le mieux. Le plus simple étant ce qu'on t'a dit au début. Les autres méthodes sont à voir si tu ne sais pas que c'est $Y$ qui s'exprime en fonction des autres. A ce moment là, des méthodes plus générales comme ICA, NCLA ou SVM seront plus adaptées !!
nirosis
Administrateur
 
Messages: 1806
Inscription: Samedi 28 Mai 2005, 13:48
Localisation: Orsay, France
Statut actuel: Actif et salarié | Maître de conférence

Messagepar guiguiche » Mercredi 19 Juillet 2006, 09:52

mike a écrit:salut !
Avec les données dont je dispose, je ne connais pas à priori le type de dépendance et même en regardant la forme du nuage de point, ce n'est pas évident de déviner le type de dépendance. donc c'est un peu dur.

Certaines calculatrices permettent de tester directement le type de relation entre x et y.
Sinon avec un tableur, à partir des lignes x et y, il est facile de créer des lignes ln(x), ln(y), ... puis de tester les régression entre les différentes lignes comme te le suggère P. Fradin.
guiguiche
Modérateur
 
Messages: 8065
Inscription: Vendredi 06 Janvier 2006, 15:32
Localisation: Le Mans
Statut actuel: Actif et salarié | Enseignant

Messagepar mike » Mercredi 19 Juillet 2006, 13:22

Bonjour !
Merci pour les différentes réponses. Au fait j'ai regardé les différents algorithmes que tu m'as conseillés.
-ICA, NLCA et FastICA sont des méthodes ou algorithmes permettant de faire une séparation aveugle de deux ou plusieurs variables indépendantes (non linéaires) contenues dans une même source (par exple deux signaux sonores différents qu'on mélange dans une seule source, fastICA les identifie et les sépare.)
-SVM: c'est plus une méthode utilisé dans la reconnaissance de visages ou de chiffres maanuscrits ou télésurveillance orientée objets. Ce sont des algo d'entrainement d'après ce que j'ai lu.
Or dans mons problème je cherche à retrouver le dégré de liaison (donc le coefficient de corrélation) de deux séries qui sont non linéaires.Je ne cherche pas à les séparer d'autant plus plus qu'elles sont dans deux colonnes différents. Mon entrée X et ma sortie Y sont parfaitement connues. X et Y sont non linéaire et la forme de la sortie Y n'est pas identifiable à un modèle précis (exponentielle ou puissance), Y est quelconque. J'ai testé la corrélation en forme polynomiale mais le résultat n'est pas bon.
Si quelqu'un a une idée, je suis preneur.

Merci d'avance
mike
Utilisateur
 
Messages: 5
Inscription: Mardi 18 Juillet 2006, 11:20

Messagepar nirosis » Mercredi 19 Juillet 2006, 14:58

Perso, je n'en sais pas plus...

Sauf que tu dois pouvoir évaluer la "corrélation" en calculant la Root Mean square Error (RMSE). Imagine que ton algo trouve que ton nuage de point est en fait un cercle. Il suffit ensuite d'évaluer la distance des points du nuage au cercle lui-même. Plus c'est loin, et moins bien c'est correlé. C'est l'idée.
nirosis
Administrateur
 
Messages: 1806
Inscription: Samedi 28 Mai 2005, 13:48
Localisation: Orsay, France
Statut actuel: Actif et salarié | Maître de conférence

Messagepar Kuja » Jeudi 20 Juillet 2006, 13:45

Bonjour,

Ca fait un long moment que je ne suis pas venu sur ce forum, mais je me permets de faire un commentaire sur la question posée par Mike.
Pour moi, elle n'a pas vraiment de sens.
En effet, j'ai l'impression qu'on mélange analyse de corrélation et régression. Bien sûr les deux peuvent être liés dans beaucoup de problèmes, mais il ne me semble pas que c'est le cas ici. Si mike recherche un "type" de corrélation qui fera que la corrélation sera maximale entre $Y$ et $X$, ce n'est plus une analyse de corrélation, mais de la régression : on cherche tout simplement à approcher la fonction $f$ telle que $Y=f(X)$ à partir d'observations $(X_i,Y_i)_{i=1,\ldots,n}$.
Des outils ont été proposés dans les réponses précédentes, par exemple on peut commencer par faire de la régression linéaire avec un polynôme en $X$. C'est l'outil de base et de départ en régression. Si on a une idée plus précise de la forme de $f$, on peut l'inclure dans la régression. Quand on propose de transformer $Y$ et $X$ (par exemple prendre le log de $Y$ et le cosinus de $X$ ou que sais-je) on est encore dans le cadre de la régression linéaire, mais sur les variables transformées. Mais on ne peut faire ça que si on sait a priori la transformation à faire, ou alors on y va à l'aveuglette.
Si on veut faire des choses plus "sérieuses", on peut effectivement penser à ICA comme l'a signalé nirosis. On peut aussi utiliser ACE, qui trouve les transformations à faire sur $Y$ et $X$. Mais ces méthodes, comme elles sont plus sophistiquées, demandent plus de temps de calcul (et d'avoir les algos aussi !). Il est à noter que ces méthodes sont d'habitude utilisées quand on a plusieurs régresseurs, rarement quand on n'en a qu'un seul (comme ici). Je signale aussi une méthode souvent utilisée en dimension un, la transformation de Box-Cox (je ne détaille pas, une recherche google devrait faire l'affaire).
Enfin, on peut s'éloigner de la régression linéaire et du cadre plus général de la régression paramétrique pour entrer dans celui de la régression non paramétrique. Ce sont des méthodes qui font peu de suppositions sur la forme de la fonction $f$ qu'on veut estimer (en général ce sont juste des hypothèses de "lissitude"). Il en existe des tas : régression par des splines, SVM (contrairement à ce que dit mike le cadre n'est pas aussi limité que ce qu'il dit, ça marche très bien en régression), polynômes locaux ou encore approche bayésienne + processus gaussiens, bref toutes les méthodes classiques de surface de réponse.

Amicalement,
Kuja
Déca-utilisateur
 
Messages: 32
Inscription: Jeudi 16 Juin 2005, 18:25
Localisation: Lyon

Re: Corrélation non linéaire

Messagepar loique13 » Mardi 24 Juin 2008, 11:33

Bonjour,

je viens de lire les différentes réponses et même si je suis loin d'avoir tout compris, je peux donner deux ou trois trucs. Ca se rapporte plus a de la bidouille que de l'analyse rigoureuse, cela permet cependant de voir un peu ou l'on va.
Le truc c'est que nous n'avons pas la moindre idée de la forme de tes données...
Dans la recherche d'une courbe, on peut (et on doit ?) y aller au juger pour déterminer une forme globale puis essayer une famille de fonction qui y ressemble :
- polynomiales c'est bien mais limité
- transformations/serie de fourrier, ca permet de se ramener à des $cos$
- le plus souvent c'est bien de passer au log : les lois en $1/x$ et puissances apparaissent clairement
- les gaussiennes
etc

En gros il y a plein de familles différentes qui permettent de decrire les fonctions, si t'as un peu de chance tu tombe sur la bonne sinon tu peux utiliser matlab qui reste le mieux pour se genre de choses.
J'espere que ça te servira, en ce qui me concerne j'aime bien les transformées de fourier mais c'est juste un vice personnel.
loique13
Utilisateur
 
Messages: 8
Inscription: Mardi 24 Juin 2008, 11:18
Statut actuel: Post-bac | Doctorat

Re: Corrélation non linéaire

Messagepar Matifou » Mardi 01 Juillet 2008, 15:21

Hello

J'ai aussi une réponse très partielle, mais c'est juste rappeler qu'il y a un lien direct entre corrélation et régression. Si je ne m'abuse, le coefficient de corrélation linéaire est égal à la racine (ou au carré, je sais plus dans quel sens) du coefficient de régression R ^2 dans un modèle linéaire avec la variable et une constante. y= ax +b

Donc je chercherais (idéalement d'abord avec des méthodes non paramétriques de lissage) les transformations/inclusion de variables qui maximisent ce R ^2 et je l'interpréterais comme un coefficient de corrélation non linéaire.

Ceci dit 4a me rappelel vaguement qu'il existe ausis une analyse de corrélation canonique, mais je crois que ça reste linéaire.

A plus
Matifou
Déca-utilisateur
 
Messages: 38
Inscription: Jeudi 10 Avril 2008, 18:48
Statut actuel: Post-bac | Licence

Re: Corrélation non linéaire

Messagepar stokastik » Dimanche 13 Juillet 2008, 19:05

Issu de http://rsscse.org.uk/ts/bts/noether/text.html:

A correlation coefficient is intended to measure "strength of relationship". But different correlation coefficients measure strength of relationship in different ways. A product moment coefficient, a Spearman coefficient, and a Kendall coefficient, all equal to1/3 mean three rather different things. Only the Kendall coefficient has a simple interpretation.


La corrélation entre deux variables aléatoires X et Y mesure plus précisément à quel point X et Y "bougent dans le même sens":

When statisticians talk of strength of relationship, they usually have in mind the strength of the tendency of two variables, X and Y, to move in the same (opposite) direction.



Bref pour répondre aux questions de mike il faut déjà leur donner un sens.

Je serais intéressé par un exemple de "nuage de points" où on ne trouve pas de corrélation forte, même après des transformations, mais où néanmoins on pourrait mettre en évidence une certaine "dépendance forte" entre les 2 variables.

Ceci dit, on pourrait dire que la dépendance la plus forte possible entre Y et X est le cas où Y est une fonction de X. Cela revient mathématiquement à dire que la tribu engendrée par Y est contenue dans celle engendrée par X. Dans ce cas il existe donc une fonction f telle que la corrélation de Y et f(X) est égale à 1.

Du point de vue probabiliste la dépendance entre X et Y pourrait être définie comme une distance entre les tribus engendrées par X et Y. Il y a le choix pour de telles distances. Ensuite il s'agirait encore d'estimer cette distance à partir d'un nuage de points.
stokastik
 


Retourner vers Tribune des mathématiques

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Magpie [Crawler] et 2 invités