Comment tester une association non linéaire?


37

Pour le tracé 1, je peux tester l'association entre x et y en effectuant une simple corrélation. parcelle 1

Pour le tracé 2, où la relation est non linéaire mais où il existe une relation claire entre x et y, comment puis-je tester l'association et nommer sa nature? parcelle 2

Réponses:


35

... la relation est non linéaire mais il existe une relation claire entre x et y, comment puis-je tester l'association et nommer sa nature?

Une façon de le faire serait d'adapter tant que fonction semi-paramétrée de utilisant, par exemple, un modèle additif généralisé et en vérifiant si cette estimation fonctionnelle est constante ou non, ce qui n'indiquerait aucune relation entre et . Cette approche vous évite d'avoir à effectuer une régression polynomiale et à prendre des décisions parfois arbitraires sur l'ordre du polynôme, etc.xyxxyx

Plus précisément, si vous avez des observations , vous pouvez adapter le modèle:(Yi,Xi)

E(Yi|Xi)=α+f(Xi)+εi

et testez l’hypothèse . Dans , vous pouvez le faire en utilisant la fonction. Si est votre résultat et votre prédicteur, vous pouvez taper:H0:f(x)=0, xRgam()yx

library(mgcv) 
g <- gam(y ~ s(x)) 

En tapant summary(g), vous obtiendrez le résultat du test d'hypothèse ci-dessus. En ce qui concerne la nature de la relation, le mieux serait de le faire avec un complot. Une façon de faire cela R(en supposant que le code ci-dessus ait déjà été entré)

plot(g,scheme=2)

Si votre variable de réponse est discrète (par exemple, binaire), vous pouvez intégrer cela dans ce cadre en adaptant un GAM logistique (dans R, vous ajouteriez family=binomialà votre appel à gam). De même, si vous avez plusieurs prédicteurs, vous pouvez inclure plusieurs termes additifs (ou des termes linéaires ordinaires), ou adapter des fonctions à plusieurs variables, par exemple, si vous disposiez de prédicteurs . La complexité de la relation est automatiquement sélectionnée par validation croisée si vous utilisez les méthodes par défaut, bien qu'il y ait beaucoup de flexibilité ici - voir le fichier d'aide si cela vous intéresse.f(x,z)x, zgam


1
Je préfère cette approche aux deux corrélations de rangs séparées de part et d'autre de car elle examine la relation dans son ensemble. C'est aussi mieux que le modèle paramétrique, alors j'ai plutôt accepté cela. x=a
user1447630

@ user1447630 Ceci est un modèle pour la relation. La régression linéaire polynomiale ou la régression non linéaire ainsi que les modèles additifs sont des moyens de caractériser une relation de fonction. J'aurais pu en mentionner aucun. Mais vous avez demandé une mesure d'association, alors je vous ai donné d'autres formes possibles de corrélation. Aussi belle que puisse être la réponse de Macro, elle correspond à une relation fonctionnelle, mais ne fournit pas une mesure d'association.
Michael R. Chernick

1
@ Michael, je ne sais pas quelle question vous lisiez, mais le PO a demandé comment tester une association et non une mesure d'association. Dans tous les cas, aussi agréable que votre réponse puisse être (et ignorer le fait que cela nécessite une connaissance a priori assez forte de l'endroit où se produit le point de changement), je pense que cela est trop adapté au complot spécifique de cette question, au lieu du scénario général. problème "d'association non linéaire".
Macro

3
@ Michael, votre interprétation ( "la question portait sur la manière de généraliser le concept de corrélation .." ) et l'argument statistique que vous donnez (au fait, "test de la siginicance des coefficients et du modèle" dans un modèle linéaire de même que tester une corrélation) n’a aucun sens, étant donné les faits, je ne vais donc pas les aborder. Mais "après que vous ayez donné le vôtre, le mien était inacceptable et le vôtre accepté ... j'ai juste senti que ce n’était pas bien" fait campagne pour votre réponse qui ne fait que refléter une fixation sur les points de repère, rien d’utile pour la communauté.
Macro

5
@Macro et Michael ajustement pour moi un modèle de la relation entre et de façon semi / non-paramétrique est une façon de tester l'association entre les deux. Un tel test pourrait être étendu en mesurant l'étendue de l'association avec les différentes manières que vous avez suggérées. Je pense que les deux réponses et le suivi ici m'ont été très utiles, sans l' ad hominem . Toutefois, comme ma question portait sur la manière dont nous pourrions "étiqueter sa nature", ce qui pourrait être interprété comme une adaptation du modèle, je vais m'en tenir à la réponse de Macro. yxy
user1447630

14

Si la relation non linéaire avait été monotone, une corrélation de rangs (rho de Spearman) serait appropriée. Dans votre exemple, il existe une petite région claire dans laquelle la courbe change de plus en plus croissante à de plus en plus lente comme le ferait une parabole au point où la première dérivée est égale à .0

Je pense que si vous avez des connaissances en modélisation (au-delà des informations empiriques) où ce point de changement se produit (par exemple à ), vous pouvez alors caractériser la corrélation comme positive et utiliser le rho de Spearman sur l'ensemble des paires où pour fournir une estimation de cette corrélation et utiliser une autre estimation de la corrélation de Spearman pour où la corrélation est négative. Ces deux estimations caractérisent ensuite la structure de corrélation entre et et contrairement à une estimation de corrélation qui serait proche de lorsqu’elle est estimée en utilisant toutes les données, ces estimations seront à la fois grandes et de signe opposé.( x , y ) x < a x > a x y 0x=a(x,y)x<ax>axy0

Certains pourraient soutenir que seules les informations empiriques ( c'est-à - dire les paires observées sont suffisantes pour justifier cela.(x,y)


En gros, je scinderais la relation x ~ y en deux parties. En dessous de x = a, la corrélation par le rho de Spearman est positive. Au-dessus de x = a, la corrélation par le rho de Spearman est négative. J'aime cette approche. Cependant, existe-t-il également un moyen de vérifier paramétriquement si la relation entre x et y correspond à une parabole inverse, c.-à-d. , où est négatif. Peut-être cela nécessite-t-il un test statistique personnalisé? ay=ax2+bx+ca
user1447630

1
Pour cela, vous adaptez le modèle quadratique en utilisant la régression linéaire MLS, par exemple, et effectuez un test statistique standard indiquant que le coefficient a est supérieur à 0 (par exemple, un test t unilatéral).
Michael R. Chernick

1
@ Michael, en ce qui concerne votre dernier commentaire, si n'est pas réparti symétriquement autour de zéro, il pourrait y avoir une grande colinéarité entre et . Comme cela affectera probablement le test standard pour un coefficient de régression, un test du rapport de vraisemblance peut être plus approprié, non? x x 2 txxx2t
Macro

@ Macro Je suppose que s'il existe un degré élevé de corrélation entre x et x votre suggestion sera peut-être bonne. Mais je pense qu’il est courant d’appliquer des tests t individuels sur les coefficients, même si les covariables X et X peuvent être corrélées. La forte colinéarité rend les coefficients très instables, car leur identifiabilité est presque perdue. Dans de tels cas, il peut ne pas être judicieux de faire un test sur les coefficients des covariables. 1 2212
Michael R. Chernick le


0

Quelqu'un me corrige si je comprends mal, mais une façon de traiter les variables non linéaires consiste à utiliser une approximation linéaire. Ainsi, par exemple, prendre le journal de la distribution exponentielle devrait vous permettre de traiter la variable comme une distribution normale. Il peut ensuite être utilisé pour résoudre le problème, comme toute régression linéaire.


8
Je ne pense pas que cela réponde vraiment à la question. Prendre des journaux n'est pas la même chose que de faire une approximation linéaire. De plus, même si vous prenez des journaux, la distribution pour laquelle le journal de la variable d'origine est une variable normalement distribuée n'est pas la distribution exponentielle, mais la distribution log - normale . Cependant, ni la variable indépendante ni la variable dépendante ne doivent être distribuées normalement pour que la régression linéaire soit appropriée - le problème ici est la relation entre les variables, pas leur distribution marginale.
Silverfish

0

J'avais l'habitude d'implémenter le modèle général additif pour détecter la relation non linéaire entre deux variables, mais j'ai récemment découvert la corrélation non linéaire implémentée via nlcorpackage dans R, vous pouvez implémenter cette méthode de la même manière que la corrélation de Pearson. , le coefficient de corrélation est compris entre 0 et 1 et non pas -1 et 1 comme dans la corrélation de Pearson. Un coefficient de corrélation plus élevé implique l'existence d'une relation non linéaire forte. Supposons deux séries chronologiques x2et y2la corrélation non linéaire entre les deux séries chronologiques est testée comme suit

install.packages("devtools") 
library(devtools)
install_github("ProcessMiner/nlcor")
library(nlcor)
c <- nlcor(x2, y2, plt = T)
c$cor.estimate
[1] 0.897205

Les deux variables semblent être fortement corrélées via une relation non linéaire, vous pouvez également obtenir la valeur p ajustée pour le coefficient de corrélation

c$adjusted.p.value
[1] 0

Vous pouvez également tracer les résultats

print(c$cor.plot)

Vous pouvez voir ce lien pour plus de détails

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.