La ligne de meilleur ajustement ne ressemble pas à un bon ajustement. Pourquoi?

82

Regardez ce graphique Excel: le graphique

La ligne du meilleur ajustement du «bon sens» apparaîtrait comme une ligne presque verticale au centre des points (modifiée à la main en rouge). Cependant, la ligne de tendance linéaire décidée par Excel est la ligne noire diagonale indiquée.

  1. Pourquoi Excel a-t-il produit quelque chose qui (à l'œil humain) semble être faux?
  2. Comment puis-je produire une ligne de meilleur ajustement qui semble un peu plus intuitive (c'est-à-dire quelque chose comme la ligne rouge)?

Mise à jour 1. Une feuille de calcul Excel avec données et graphique est disponible ici: exemple de données , CSV dans Pastebin . Les techniques de régression type1 et type2 sont-elles disponibles en tant que fonctions Excel?

Mise à jour 2. Les données représentent un parapente grimpant dans une thermique tout en dérivant avec le vent. L'objectif final est d'étudier comment la force et la direction du vent varient avec l'altitude. Je suis un ingénieur, PAS un mathématicien ou un statisticien, donc les informations contenues dans ces réponses m'ont donné beaucoup plus de domaines de recherche.

ConanTheGerbil
la source
5
Pour être honnête, je doute que ce soit une question de régression de Deming contre MLS. En regardant la très faible variabilité absolue de et y , je pense plutôt que cela pourrait être un problème numérique dans Excel. Pouvez-vous modifier votre question pour inclure les données? Xy
S. Kolassa - Réintégrer Monica
12
Ce phénomène a été l’une des découvertes statistiques majeures du 19e siècle (sinon de tous les temps). C'est ce qu'on appelle la régression vers la moyenne . En effet, c'est la raison même pour laquelle cette procédure statistique s'appelle "régression"!
whuber
3
Je devrais ajouter que la raison principale pour laquelle les ajustements ont l'air si différents est que l'intrigue exagère considérablement l'échelle dans l'axe des ordonnées. En le dessinant où les deux échelles sont proportionnelles aux écarts-types marginaux, vous pouvez arriver à des conclusions totalement différentes sur l'adéquation qui convient le mieux au «bon sens».
whuber
6
@StephanKolassa - Notez la taille de l'erreur si vous utilisiez la ligne rouge et prédisiez pour x = - 0,714 ; la ligne rouge ne peut pas être un meilleur ajustement des moindres carrés. Excel a certes ses problèmes, mais je pense que ce n'est pas l'un d'entre eux. yX=-0,714
jbowman
7
Cela a déjà été abordé à de nombreuses reprises sur le site (voir par exemple ici ). Lorsque vous comprenez ce qu'est une ligne de régression, il est facile de comprendre pourquoi c'est la ligne noire. Posez-vous deux questions: 1: quelle est la valeur moyenne de y lorsque x vaut environ 0.712? 2. Que devraient prédire les lignes rouges et noires? ... [Je garde la clôture comme un doublon pour l'instant car il y a des problèmes spécifiques avec vos données sur lesquels il vaudrait la peine de recentrer votre question]
Glen_b

Réponses:

111

Y a-t-il une variable dépendante?

La courbe de tendance dans Excel provient de la régression de la variable dépendante "lat" sur la variable indépendante "lon". Ce que vous appelez une "ligne de bon sens" peut être obtenu si vous ne désignez pas de variable dépendante et si vous traitez la latitude et la longitude de manière égale. Ce dernier peut être obtenu en appliquant PCA . En particulier, c'est l'un des vecteurs propres de la matrice de covariance de ces variables. Vous pouvez y voir une ligne minimisant la distance la plus courte entre un point donné et une ligne, c'est-à-dire que vous tracez une perpendiculaire à une ligne et que vous minimisez la somme de celles-ci pour chaque observation.(Xje,yje)

entrez la description de l'image ici

Voici comment vous pouvez le faire dans R:

> para <- read.csv("para.csv")
> plot(para)
> 
> # run PCA
> pZ=prcomp(para,rank.=1)
> # look at 1st PC
> pZ$rotation
           PC1
lon 0.09504313
lat 0.99547316
> 
> colMeans(para) # PCA was centered
       lon        lat 
-0.7129371 53.9368720 
> # recover the data from 1st PC
> pc1=t(pZ$rotation %*% t(pZ$x) )
> # center and show
> lines(pc1 + t(t(rep(1,123))) %*% c)

yjey(Xje)

Que vous souhaitiez traiter les variables de manière égale ou non dépend de l'objectif. Ce n'est pas la qualité inhérente des données. Vous devez choisir le bon outil statistique pour analyser les données, dans ce cas, choisissez entre la régression et la PCA.

Une réponse à une question qui n'a pas été posée

Alors, pourquoi dans votre cas, une ligne de tendance (de régression) dans Excel ne semble pas être un outil approprié pour votre cas? La raison en est que la courbe de tendance est une réponse à une question qui n’a pas été posée. Voici pourquoi.

lunet=une+b×lon

Imaginez qu'il n'y ait pas de vent. Un parapentiste ferait le même cercle à plusieurs reprises. Quelle serait la ligne de tendance? Évidemment, ce serait une ligne horizontale plate, sa pente serait nulle, mais cela ne veut pas dire que le vent souffle dans la direction horizontale!

y~X

entrez la description de l'image ici

Code R pour la simulation:

t=1:123
a=1 #1
b=0 #1/10
y=10*sin(t)+a*t
x=10*cos(t)+b*t

plot(x,y,xlim=c(-60,60))
xp=-60:60
lines(b*t,a*t,col='red')

model=lm(y~x)
lines(xp,xp*model$coefficients[2]+model$coefficients[1])

La direction du vent n’est donc clairement pas alignée avec la ligne de tendance. Ils sont liés, bien sûr, mais de manière non triviale. Par conséquent, ma déclaration selon laquelle la courbe de tendance Excel est une réponse à une question, mais pas à celle que vous avez posée.

Pourquoi PCA?

Comme vous l'avez noté, le mouvement d'un parapente comporte au moins deux composantes: la dérive avec le vent et le mouvement circulaire contrôlé par un parapente. Ceci est clairement visible lorsque vous connectez les points sur votre tracé:

entrez la description de l'image ici

D'une part, le mouvement circulaire vous gêne vraiment: le vent vous intéresse. Par contre, vous n'observez pas la vitesse du vent, vous ne faites qu'observer le parapente. Votre objectif est donc de déduire le vent non observable de la lecture de la position de parapentiste observable. C'est exactement la situation où des outils tels que l'analyse factorielle et l'ACP peuvent être utiles.

L’ACP a pour objectif d’isoler quelques facteurs qui déterminent les résultats multiples en analysant les corrélations entre les produits. C’est efficace lorsque la sortie est liée aux facteurs de manière linéaire, ce qui est le cas dans vos données: la dérive du vent ajoute simplement les coordonnées du mouvement circulaire, c’est pourquoi PCA travaille ici.

Configuration PCA

Nous avons donc établi que l’APC devrait avoir une chance ici, mais comment allons-nous l’organiser? Commençons par ajouter une troisième variable, le temps. Nous allons attribuer les temps 1 à 123 à chaque observation 123, en supposant une fréquence d'échantillonnage constante. Voici à quoi ressemble le tracé 3D des données, révélant sa structure en spirale:

entrez la description de l'image ici

Le graphique suivant montre le centre imaginaire de rotation d'un parapente sous forme de cercles bruns. Vous pouvez voir comment il dérive sur le plan lat-lon avec le vent, alors que le parapente représenté avec un point bleu tourne autour de lui. Le temps est sur l'axe vertical. J'ai connecté le centre de rotation à l'emplacement correspondant d'un parapente ne montrant que les deux premiers cercles.

entrez la description de l'image ici

Le code R correspondant:

library(plotly)       

 para <- read.csv("C:/Users/akuketay/Downloads/para.csv")
 n=24

   para$t=1:123 # add time parameter

   # run PCA
     pZ3=prcomp(para)
     c3=colMeans(para) # PCA was centered
     # look at PCs in columns
       pZ3$rotation

       # get the imaginary center of rotation 
       pc31=t(pZ3$rotation[,1] %*% t(pZ3$x[,1]) )
     eye = pc31 + t(t(rep(1,123))) %*% c3
     eyedata = data.frame(eye)

     p = plot_ly(x=para[1:n,1],y=para[1:n,2],z=para[1:n,3],mode="lines+markers",type="scatter3d") %>%
       layout(showlegend=FALSE,scene=list(xaxis = list(title = 'lat'),yaxis = list(title = 'lon'),zaxis = list(title = 't'))) %>%
     add_trace(x=eyedata[1:n,1],y=eyedata[1:n,2],z=eyedata[1:n,3],mode="markers",type="scatter3d") 
     for( i in 1:n){
         p = add_trace(p,x=c(eyedata[i,1],para[i,1]),y=c(eyedata[i,2],para[i,2]),z=c(eyedata[i,3],para[i,3]),color="black",mode="lines",type="scatter3d")
       }

subplot(p)

La dérive du centre de rotation du parapente est principalement causée par le vent. La trajectoire et la vitesse de la dérive sont corrélées à la direction et à la vitesse du vent, variables d'intérêt non observables. Voici à quoi ressemble la dérive lorsqu’elle est projetée sur un plan lat-lon:

entrez la description de l'image ici

Régression PCA

Nous avons donc constaté précédemment que la régression linéaire régulière ne semble pas très bien fonctionner ici. Nous avons également compris pourquoi: parce que cela ne reflète pas le processus sous-jacent, parce que le mouvement du parapentiste est hautement non linéaire. C'est une combinaison de mouvement circulaire et d'une dérive linéaire. Nous avons également évoqué le fait que dans cette situation, une analyse factorielle pourrait être utile. Voici un aperçu d’une approche possible pour modéliser ces données: la régression PCA . Mais d'abord je vais vous montrer la courbe ajustée de régression PCA :

entrez la description de l'image ici

Ceci a été obtenu comme suit. Exécutez PCA sur le jeu de données contenant la colonne supplémentaire t = 1: 123, comme indiqué précédemment. Vous obtenez trois composantes principales. Le premier est simplement t. La seconde correspond à la colonne lon, et la troisième à la dernière colonne.

unepéché(ωt+φ)ω,φ

C'est ça. Pour obtenir les valeurs ajustées, vous récupérez les données des composants ajustés en insérant la transposition de la matrice de rotation PCA dans les composants principaux prédits. Mon code R ci-dessus montre certaines parties de la procédure et le reste, vous pouvez le comprendre facilement.

Conclusion

Il est intéressant de voir à quel point la PCA et d’autres outils simples sont puissants en ce qui concerne les phénomènes physiques dans lesquels les processus sous-jacents sont stables et les entrées converties en sorties via des relations linéaires (ou linéarisées). Donc, dans notre cas, le mouvement circulaire est très non linéaire mais nous l’avons facilement linéarisé en utilisant des fonctions sinus / cosinus sur un paramètre de temps t. Mes parcelles ont été produites avec seulement quelques lignes de code R, comme vous l'avez vu.

Le modèle de régression doit refléter le processus sous-jacent, alors vous seul pouvez vous attendre à ce que ses paramètres soient significatifs. S'il s'agit d'un parapente dérivant dans le vent, un simple diagramme de dispersion, comme dans la question initiale, masque la structure temporelle du processus.

La régression Excel était également une analyse transversale, pour laquelle la régression linéaire fonctionne le mieux, alors que vos données sont un processus de série chronologique, dans lequel les observations sont ordonnées dans le temps. L'analyse des séries chronologiques doit être appliquée ici, et cela a été fait dans la régression PCA.

Notes sur une fonction

y=F(X)XyXyyXlunet=F(lon)

Aksakal
la source
11
une péché ωt+b cos ωt
11
Que vous souhaitiez les traiter de manière égale ou non dépend de l'objectif. Ce n'est pas la qualité inhérente des données. - Excellent point et +1.
Richard Hardy
@ NickCox, c'est vrai, cela aurait été moins de travail aussi
Aksakal
Cela vaut la peine de souligner que PCA est la généralisation de la régression d’axe majeur à la situation où vous avez> 2 variables. Mais comme dans ce cas il n’ya que 2 variables, le nom standard de la technique serait régression majeure (également appelée régression orthogonale ou régression de type II).
Tom Wenseleers
61

La réponse est probablement liée à la manière dont vous jugez mentalement la distance à la droite de régression. La régression standard (type 1) minimise l'erreur au carré, l'erreur étant calculée en fonction de la distance verticale de la ligne .

Une régression de type 2 peut être plus analogue à votre jugement de la meilleure ligne. L'erreur au carré minimisée est la distance perpendiculaire à la ligne . Cette différence a plusieurs conséquences. L'un des plus importants est que si vous permutez les axes X et Y dans votre graphique et que vous modifiez la ligne, vous obtiendrez une relation différente entre les variables pour la régression de type 1. Pour la régression de type 2, la relation reste la même.

Mon impression est qu'il y a pas mal de débats sur les endroits où utiliser une régression de type 1 ou de type 2, et je suggère donc de lire attentivement les différences avant de décider laquelle appliquer. Une régression de type 1 est souvent recommandée dans les cas où l'un des axes est soit contrôlé expérimentalement, soit au moins mesuré avec beaucoup moins d'erreur que l'autre. Si ces conditions ne sont pas remplies, la régression de type 1 biaisera les pentes vers 0 et la régression de type 2 est donc recommandée. Cependant, avec un bruit suffisant dans les deux axes, la régression de type 2 tend apparemment à les biaiser vers 1. Warton et al. (2006) et Smith (2009) sont de bonnes sources pour comprendre le débat.

Notez également qu'il existe plusieurs méthodes subtilement différentes entrant dans la grande catégorie de régression de type 2 (axe principal, régression d'axe majeur réduit et régression d'axe majeur standard), et que la terminologie relative aux méthodes spécifiques est incohérente.

Warton, DI, IJ Wright, DS Falster et M. Westoby. 2006. Méthodes d'ajustement de ligne bivariées pour l'allométrie. Biol. Rev. 81: 259-291. doi: 10.1017 / S1464793106007007

Smith, RJ 2009. Sur l'utilisation et la mauvaise utilisation de l'axe principal réduit pour l'ajustement de ligne. Un m. J. Phys. Anthropol 140: 476-486. doi: 10.1002 / ajpa.21090


EDIT :

@ amoeba fait remarquer que ce que j'appelle la régression de type 2 ci-dessus est également appelée régression orthogonale; c'est peut-être le terme le plus approprié. Comme je l'ai dit plus haut, la terminologie utilisée dans ce domaine est incohérente, ce qui justifie des précautions supplémentaires.

mkt - Rétablir Monica
la source
19
Débattre de l'opportunité d'utiliser le type 1 ou le type 2? Il n’ya aucune question à débattre lorsque vous savez quel est votre objectif (fonction objective ou fonction de perte). Et si vous ne le faites pas, alors vous devriez clarifier cela avant de continuer.
Richard Hardy
7
Le type 2 produit également des résultats absurdes si les deux axes utilisent des unités différentes.
John Dvorak
4
Vous utilisez "Type 1" et "Type 2" comme s'il s'agissait de termes standard. Sont-ils? Je n'ai jamais dirigé quiconque qualifiant de régression habituelle et de régression orthogonale "type 1" et "type 2".
Amibe dit de réintégrer Monica
2
@ RichardHardy Bien sûr, il est préférable de clarifier son objectif spécifique. Mais comme je l’ai dit dans ma réponse, j’ai l’ impression qu’il existe un débat en cours sur leur utilisation dans un sous-ensemble de cas - et les documents que je cite (ainsi que les recommandations contradictoires que je continue de recevoir des examinateurs) semblent le confirmer.
Réinitialiser Monica
3
@ mkt, merci pour votre clarification. En effet, il pourrait y avoir un débat parmi les personnes qui ne savent pas trop ce qu’elles veulent. Là, le débat porte sur lequel des deux est le plus pertinent pour l’objectif visé. Ce que je voulais souligner, c’est qu’il n’ya pas de débat une fois que votre objectif est bien défini, c’est-à-dire que l’objet de la matière est traduit en langage statistique (ce qui est inévitable si l’on utilise des méthodes statistiques). Donc, je suppose que nous sommes d’accord, nous ne faisons que souligner différentes parties de l’argument.
Richard Hardy
31

La question à laquelle Excel tente de répondre est la suivante: "En supposant que y soit dépendant de x, quelle ligne prédit y le mieux". La réponse est qu’en raison des énormes variations de y, aucune ligne ne peut être particulièrement performante, et ce que Excel affiche est ce que vous pouvez faire de mieux.

Si vous prenez votre ligne rouge proposée, et vous continuez jusqu'à ce x = -0,714 et x = -0,712, vous constaterez que ses valeurs sont ainsi, loin du tableau, et il est à une grande distance des valeurs y correspondantes .

La question à laquelle Excel répond est non pas "quelle ligne est la plus proche des points de données", mais "quelle est la meilleure ligne pour prédire les valeurs y à partir de x valeurs", et le fait correctement.

gnasher729
la source
4
Exactement. L'hypothèse sous-jacente est "x est donné, y est mesuré / prédit".
Floris
12

Je ne veux rien ajouter aux autres réponses, mais je tiens à dire que vous avez été égaré par une mauvaise terminologie, en particulier le terme "ligne de meilleur ajustement" utilisé dans certains cours de statistiques.

Intuitivement, une "ligne de meilleur ajustement" ressemblerait à votre ligne rouge. Mais la ligne produite par Excel n'est pas une "ligne de meilleur ajustement"; ce n'est même pas essayer d'être. C'est une ligne qui répond à la question: étant donné la valeur de x, quelle est ma meilleure prédiction possible pour y? ou bien, quelle est la valeur y moyenne pour chaque valeur x?

Notez l'asymétrie ici entre x et y; utiliser le nom "line of best fit" masque ceci. Il en va de même pour l'utilisation de "courbe de tendance" par Excel.

Il est très bien expliqué au lien suivant:

https://www.stat.berkeley.edu/~stark/SticiGui/Text/regression.htm

Vous voudrez peut-être quelque chose de plus semblable à ce que l'on appelle "Type 2" dans la réponse ci-dessus ou "Ligne SD" sur la page du cours de statistiques de Berkeley.

Flet
la source
11

Une partie du problème optique provient des différentes échelles - si vous utilisez la même échelle sur les deux axes, elle aura déjà un aspect différent.

En d'autres termes, vous pouvez donner à la plupart de ces lignes de "meilleur ajustement" un aspect "non intuitif" en étalonnant l'échelle d'un axe.

Aganju
la source
1
Je conviens que c’est la réponse - la plage X des valeurs est environ 0,02 large, mais la plage Y seulement environ 0,005 - en fait, le graphique devrait être environ 4 fois plus large qu’il est haut, et il serait évident que le le meilleur ajustement serait horizontal. Le phénomène dans la question est purement visuel en raison des différentes échelles.
RemcoGerlich
3
@RemcoGerlich Nous pouvons convenir que, comme l'indique la question, les proportions du graphique ne sont pas utiles. Mais il est invraisemblable de suggérer un graphe 4 fois plus large que haut, car numériquement, les fourchettes sont dans ce rapport. Ce n'est certainement pas un fait. Si les unités de l'un ou l'autre axe étaient modifiées d'un facteur 1 000, proposeriez-vous un rapport de forme de 4000 ou 0,004? Le ratio 4x est probablement un simple effet secondaire de différentes unités.
Nick Cox
4
Les autres réponses donnent la bonne réponse. Celui-ci ne le fait malheureusement pas. Si nous redimensionnons les valeurs, de manière à obtenir la même image visuelle, mais avec des axes égaux, le problème d’ajustement «type 1» par rapport à «type 2» subsiste.
Hans Janssen
1
Il parle du "bon sens" le mieux adapté, de ce qui est juste "à l'oeil humain". Et puis la mise à l'échelle des axes est la principale chose qui compte.
RemcoGerlich
Il a un point, parfois ce qui semble intuitif est influencé par des choses stupides comme la mise à l'échelle, bien que ce ne soit pas le cas. Nous avons ici un véritable décalage entre ce que fait Excel et ce que veut OP
Aksakal
4

Quelques personnes ont noté que le problème était visuel: la mise à l'échelle graphique utilisée produisait des informations trompeuses. Plus précisément, la taille de "lon" est telle qu’elle apparaît comme une spirale serrée, ce qui suggère que la droite de régression donne un mauvais ajustement (une évaluation à laquelle je conviens, la ligne rouge que vous tracez fournirait des erreurs au carré plus faibles si ont été façonnés de la manière présentée).

Ci-dessous, je fournis un diagramme de dispersion créé dans Excel avec une mise à l'échelle modifiée pour "lon", de sorte à ne pas produire la spirale serrée dans votre diagramme de dispersion. Avec ce changement, la ligne de régression fournit désormais un meilleur ajustement visuel et je pense que cela aide à démontrer comment la mise à l'échelle dans le diagramme de dispersion d'origine a fourni une évaluation trompeuse de l'ajustement.

Je pense que la régression fonctionne bien ici. Je ne pense pas qu'une analyse plus complexe est nécessaire.

entrez la description de l'image ici

Pour tous les intéressés, j'ai tracé les données à l'aide d'un outil de cartographie et montrer la régression ajustée aux données. Les points rouges sont les données enregistrées et le vert est la ligne de régression.

entrez la description de l'image ici

Et voici les mêmes données dans un nuage de points avec la droite de régression; ici lat est traité en tant que personne dépendante et les scores de lat sont inversés pour s’adapter au profil géographique.

entrez la description de l'image ici

Bryan
la source
1
La régression ne montre pas la direction d'une dérive de vent
Aksakal
Nous ne connaissons que lat et long, et pour les données fournies, elles montrent le changement d’un parent à l’autre.
Bryan
Alors, que signifie cette ligne de tendance?
Aksakal
En supposant que le premier point dans le fichier de données constitue l'emplacement de départ, il semble qu'il y ait une légère augmentation de la route vers le nord au fur et à mesure que l'on avance dans l'Est. Les données ne fournissent aucune information sur la force ou la hauteur du vent, mais fournissent une direction - est par nord.
Bryan
Correction, le logiciel de cartographie que j'ai utilisé demande lat-lon, mais ses données sont lon-lat, donc la direction du vent serait légèrement nord-est, c voyagé).
Bryan
1

Votre régression des moindres carrés ordinaires confus (qui minimise la somme de l’écart au carré autour des valeurs prédites (observé-prédit) ^ 2) et de la régression de l’axe principal (qui minimise la somme des carrés de la distance perpendiculaire entre chaque point et la droite de régression, on parle parfois de régression de type II, de régression orthogonale ou de régression normalisée en composantes principales).

Si vous voulez comparer les deux approches juste en R, jetez un œil à

data=read.csv("https://pastebin.com/raw/4TsstQYm")
require(lmodel2)
fit = lmodel2(lat ~ lon, data=data)
plot(fit,method="OLS") # ordinary least squares regression

entrez la description de l'image ici

plot(fit,method="MA") # major axis regression

entrez la description de l'image ici

Ce que vous trouvez le plus intuitif (votre ligne rouge) n’est que la régression sur l’axe principal. Visuellement, c’est bien celle qui semble la plus logique, car elle minimise la distance perpendiculaire à vos points. La régression OLS ne semblera minimiser la distance perpendiculaire à vos points que si les variables x et y sont sur la même échelle de mesure et / ou ont le même niveau d'erreur (vous pouvez le voir simplement sur la base du théorème de Pythagore). Dans votre cas, votre variable y est beaucoup plus étendue, d'où la différence ...

Tom Wenseleers
la source
0

La réponse PCA est la meilleure parce que je pense que c’est ce que vous devriez faire compte tenu de la description de votre problème, bien que la réponse PCA puisse confondre PCA et la régression, qui sont des choses totalement différentes. Si vous souhaitez extrapoler cet ensemble de données particulier, vous devez effectuer une régression et probablement effectuer une régression de Deming (qui, je suppose, est parfois associée à un type II, n'ayant jamais entendu parler de cette description). Toutefois, si vous souhaitez connaître les directions les plus importantes (vecteurs propres) et disposer d'une mesure de leur impact relatif sur l'ensemble de données (valeurs propres), la méthode PCA est la bonne approche.

Andrew H
la source
4
Il s’agit principalement d’une série de commentaires sur d’autres réponses. Il serait préférable de commenter directement sur chacun. Je ne vois pas que la réponse de @Aksakal confonde la PCA et la régression du tout.
Nick Cox
Je voulais commenter directement, mais je n'étais pas assez digne de confiance. Je ne pense pas qu'Aksakal prête à confusion, mais je pense qu'il vaut la peine de signaler au PO que PCA et la régression sont totalement différents.
Andrew H