Pourquoi la régression linéaire n'est-elle pas en mesure de prédire le résultat d'une simple séquence déterministe?

9

Un de mes collègues m'a envoyé ce problème apparemment en faisant le tour sur Internet:

If $3 = 18, 4 = 32, 5 = 50, 6 = 72, 7 = 98$, Then, $10 =$ ?

La réponse semble être 200.

3*6  
4*8  
5*10  
6*12  
7*14  
8*16  
9*18  
10*20=200  

Quand je fais une régression linéaire dans R:

data     <- data.frame(a=c(3,4,5,6,7), b=c(18,32,50,72,98))  
lm1      <- lm(b~a, data=data)  
new.data <- data.frame(a=c(10,20,30))  
predict  <- predict(lm1, newdata=new.data, interval='prediction')  

Je reçois:

  fit      lwr      upr  
1 154 127.5518 180.4482  
2 354 287.0626 420.9374  
3 554 444.2602 663.7398  

Mon modèle linéaire prédit donc .10=154

Quand je trace les données, elles semblent linéaires ... mais évidemment j'ai supposé quelque chose qui n'est pas correct.

J'essaie d'apprendre comment utiliser au mieux les modèles linéaires dans R. Quelle est la bonne façon d'analyser cette série? Où me suis-je trompé?

Brett Phinney
la source
7
f(3)=1818=3×632=4×86=3×28=4×218=3×3×232=4×4×2f(x)=2x2
4
f(10)
1
@TrevorAlexander si vous pensez que cette question est une perte de temps, pourquoi vous embêter à y répondre? De toute évidence, certaines personnes le trouvent intéressant.
jwg
@jwg parce que quelqu'un a tort sur Internet . ;)
étoile brillante

Réponses:

23

Un modèle de régression, tel que celui ajusté par, lm()suppose implicitement que le processus de génération de données sous-jacent est probabiliste . Vous supposez que la règle que vous essayez de modéliser est déterministe . Par conséquent, il y a un décalage entre ce que vous essayez de faire et la façon dont vous essayez de le faire.

Il existe d'autres logiciels (c'est-à-dire pas R) qui sont explicitement conçus pour trouver / adapter la fonction la plus simple à des données déterministes (un exemple serait Eureqa ). Il peut y avoir un package R pour cela (que je ne connais pas), mais R est destiné à la modélisation statistique des données probabilistes.

Quant à la réponse qui lm()vous a été donnée, elle semble raisonnable et pourrait être exacte. Cependant, je suppose que le contexte dans lequel ce problème a été présenté implique fortement qu'il doit être compris comme déterministe. Si cela n'avait pas été le cas et que vous vous demandiez si l'ajustement était raisonnable, une chose que vous pourriez remarquer est que les deux points de données extrêmes sont au-dessus de la ligne de régression, tandis que les données du milieu sont toutes en dessous. Cela suggère une forme fonctionnelle mal spécifiée. Cela peut également être vu dans les graphiques résiduels vs ajustés ( plot(lm1, which=1):

entrez la description de l'image ici

Quant au modèle ajusté par @AlexWilliams, il semble beaucoup mieux:

entrez la description de l'image ici

gung - Réintégrer Monica
la source
17
+1 L'intrigue résiduelle raconte l'histoire de telle manière qu'on ne peut pas la manquer. En effet, cela montre pourquoi le `` look linéaire '' de l'OP est souvent trompeur - de nombreuses fonctions courbes peuvent sembler `` presque droites '' si nous ne regardons que quelques points non proches d'un point tournant. Si vous pensez que c'est linéaire, sortez cette ligne et voyez ce qui reste!
Glen_b -Reinstate Monica
1
Des informations incroyablement utiles! Merci, j'apprécie vraiment
Brett Phinney
1
Cela n'a absolument rien à voir avec la distinction entre données probabilistes et déterministes. La régression linéaire ajusterait et extrapolerait les données déterministes si elles étaient linéaires. Il ne serait pas possible de bien prédire les données probabilistes si le modèle sous-jacent était quadratique.
jwg
3
n(n1)
Je ne pense pas qu'il cherche un ajustement parfait. Il essaie de comprendre pourquoi la valeur extrapolée est si éloignée.
jwg
22

La tendance est quadratique et non linéaire. Essayer:

lm1 <- lm(b~I(a^2), data=data)

Mise à jour: voici le code.

data <- data.frame(a=c(3,4,5,6,7),b=c(18,32,50,72,98))
lm1 <- lm(b~I(a^2), data=data)
new.data <- data.frame(a=c(10,20,30))
predict(lm1, newdata = new.data, interval='prediction')

Et sortie:

   fit  lwr  upr
1  200  200  200
2  800  800  800
3 1800 1800 1800
Alex Williams
la source
Cette réponse me semble un peu circulaire: tout l'intérêt du problème est de reconnaître le comportement quadratique. Vous signalez correctement qu'une fois le comportement quadratique spécifié, une régression linéaire peut trouver les coefficients. Mais en fait, vous avez déjà fait l'analyse cruciale au moment où vous avez écrit la première ligne de cette réponse.
whuber
5
@whuber - La question est de savoir pourquoi un modèle linéaire échoue. Il échoue car la forme fonctionnelle n'est pas linéaire, elle est quadratique. Je voulais donner une réponse simple et précise. La réponse de Gung fait un bon travail pour entrer dans les détails et montre comment vous pouvez utiliser les graphiques résiduels pour trouver un meilleur modèle. (Je viens de le faire au stylo et au papier.) Je suis d'accord que sa réponse est plus détaillée et complète et je l'ai votée positivement.
Alex Williams
13

J'hésite à ajouter aux excellentes réponses données par Alex Williams et Gung, mais il y a un autre point qui devrait, je pense, être souligné. La question utilise les expressions «régression linéaire» et «modèle linéaire», suggérant peut-être qu'elles signifient la même chose. Cependant, le sens habituel de «régression linéaire» fait référence au modèle de régression linéaire classique (CLRM) dans lequel «linéaire» signifie «linéaire dans les paramètres». C'est une condition sur les paramètres, pas sur les variables indépendantes. Donc un modèle quadratique tel que:

Yi=β1+β2Xi2

β1β2

Yi=β1+β2Xi

Xi

Adam Bailey
la source
1
J'ai toujours du mal à m'en souvenir. Ceci est un excellent ajout aux autres réponses.
naught101