Question:
Lorsque le forçage de l'interception de 0 dans la régression linéaire est acceptable / conseillé
Zack Newsham
2014-06-10 00:12:36 UTC
view on stackexchange narkive permalink

J'ai un modèle de régression pour estimer le temps d'achèvement d'un processus, basé sur divers facteurs. J'ai 200 essais de ces processus, où les 9 facteurs mesurés varient considérablement. Lorsque j'effectue une régression linéaire des 9 facteurs (et de toutes les interactions à 2 et 3 facteurs), sans interception explicite, j'obtiens un R $ {^ 2} $ ajusté de 0,915, si je force l'interception à 0 j'obtiens un ajusté R $ {^ 2} $ sur 0,953.

Mon intention de forcer l'interception à 0 était de m'assurer que les essais terminés en très peu de temps (< 1 seconde) n'aboutissaient pas à des prédictions d'< 0. La définition de l'interception à 0 n'a pas aidé avec ceci.

Ma question est donc triple. 1) Quand est-il acceptable / conseillé de forcer une interception? 2) Le R $ {^ 2} $ amélioré signifie-t-il réellement que le modèle est un meilleur ajustement (le tracé de l'ajustement par rapport à celui mesuré était meilleur)? 3) Y a-t-il un comment s'assurer que les valeurs ajustées sont toutes> 0?

Vous voudrez également lire: [Suppression du terme d'interception statistiquement significatif boost $ R ^ 2 $ dans le modèle linéaire] (http://stats.stackexchange.com/q/26176/).
Il y a plusieurs votes pour fermer ce fil en double de l'un de ceux référencés dans les commentaires précédents. Ces votes sont valides basés sur (1) et même (2), mais (3) semble nouveau. Je voudrais donc suggérer aux répondants de se concentrer sur la troisième question.
Mes excuses pour le croisement avec d'autres questions, mais j'ai trouvé que les questions que j'ai recherchées, y compris celle liée, ne traitaient pas de détails, par exemple où vous attendez une valeur toujours positive, je suis heureux que l'accent soit mis sur le troisième point cependant, car c'est le plus important.
Huit réponses:
Glen_b
2014-06-10 04:06:55 UTC
view on stackexchange narkive permalink

Il est inhabituel de ne pas correspondre à une interception et généralement déconseillé - on ne devrait le faire que si vous savez que c'est 0, mais je pense que (et le fait que vous ne pouvez pas comparer le $ R ^ 2 $ pour les ajustements avec et sans interception) est bel et bien déjà couverte (si possible un peu surestimée dans le cas de l'interception 0); Je veux me concentrer sur votre problème principal qui est que vous avez besoin que la fonction ajustée soit positive, bien que je revienne au problème de l'interception 0 dans une partie de ma réponse.

La meilleure façon d'obtenir un toujours l'ajustement positif est d'adapter quelque chose qui sera toujours positif; en partie qui dépend des fonctions que vous devez ajuster.

Si votre modèle linéaire était en grande partie un modèle de commodité (plutôt que de provenir d'une relation fonctionnelle connue qui pourrait provenir d'un modèle physique, par exemple), alors vous pourrait à la place fonctionner avec le log-time; le modèle ajusté est alors garanti positif en $ t $. Comme alternative, vous pouvez travailler avec la vitesse plutôt que le temps - mais avec les ajustements linéaires, vous pouvez avoir un problème avec de petites vitesses (temps longs) à la place.

Si vous savez que votre réponse est linéaire dans les prédicteurs, vous pouvez essayer d'ajuster une régression contrainte, mais avec une régression multiple, la forme exacte dont vous avez besoin dépendra de vos x particuliers (il n'y a pas de contrainte linéaire qui fonctionnera pour tous les $ x $), donc c'est un bit ad-hoc.

Vous pouvez également regarder les GLM qui peuvent être utilisés pour ajuster des modèles qui ont des valeurs ajustées non négatives et peuvent (si nécessaire) même avoir $ E (Y) = X \ beta $ .

Par exemple, on peut adapter un gamma GLM avec un lien d'identité. Vous ne devriez pas vous retrouver avec une valeur ajustée négative pour l'un de vos x (mais vous pourriez peut-être avoir des problèmes de convergence dans certains cas si vous forcez le lien d'identité là où il ne rentre vraiment pas).

Voici un exemple: l'ensemble de données voitures dans R, qui enregistre la vitesse et les distances d'arrêt (la réponse).

enter image description here

On pourrait dire "oh, mais la distance pour la vitesse 0 est garantie égale à 0, donc nous devrions omettre l'interception" mais le problème avec ce raisonnement est que le modèle est mal spécifié de plusieurs manières, et cet argument ne fonctionne que bien assez quand le modèle n'est pas mal spécifié - un modèle linéaire avec 0 interception ne convient pas du tout dans ce cas, tandis qu'un modèle avec une interception est en fait une approximation à moitié décente même si ce n'est pas réellement "correct".

Le problème est que si vous ajustez une régression linéaire ordinaire, l'intersection ajustée est plutôt négative, ce qui fait que les valeurs ajustées sont négatives.

La ligne bleue est l'ajustement OLS; la valeur ajustée pour les plus petites valeurs x de l'ensemble de données est négative. La ligne rouge est le gamma GLM avec lien d'identité - tout en ayant une interception négative, il n'a que des valeurs ajustées positives. Ce modèle a une variance proportionnelle à la moyenne, donc si vous trouvez que vos données sont plus étalées à mesure que le temps prévu augmente, il peut être particulièrement approprié.

C'est donc une approche alternative possible qui vaut peut-être la peine d'être essayée. C'est presque aussi simple que d'ajuster une régression dans R.

Si vous n'avez pas besoin du lien d'identité, vous pouvez envisager d'autres fonctions de lien, comme le lien log et le lien inverse, qui concernent les transformations déjà discuté, mais sans la nécessité d'une transformation réelle.


Puisque les gens le demandent habituellement, voici le code de mon intrigue:

  plot (dist ~ speed, data = cars, xlim = c (0, 30), ylim = c (-5,120)) abline (h = 0, v = 0, col = 8) abline (glm (dist ~ vitesse, données = voitures, famille = Gamma (lien = identité)), col = 2 , lty = 2) abline (lm (dist ~ speed, data = cars), col = 4, lty = 2)  

(L'ellipse a été ajoutée à la main par la suite, même si c'est assez facile à faire aussi en R)

Merci pour la réponse, je suis un peu confus sur le but des fonctions Gamma et abline, quand j'essaie d'exécuter la même commande sur mes données, j'obtiens: "en utilisant uniquement les deux premiers des 130 coefficients de régression". Je ne devrais pas que mon modèle soit plus compliqué que "dist ~ speed", il y a 9 facteurs et j'utilise actuellement les 3 interactions de facteurs. Quand j'essaie de tracer la fonction abline, j'obtiens juste une ligne verticale à 0. J'ai essayé de simplifier le modèle (et en utilisant le lien de journal) et j'ai également obtenu une ligne presque horizontale, comment interpréter ces données en utilisant la méthode ci-dessus?
`abline` trace une ligne lorsque vous spécifiez la pente (a) et l'interception (b). Si vous lui passez un modèle linéaire simple ajusté, il les en extraira. Lorsque vous avez plusieurs prédicteurs *, vous ne pouvez pas tracer une ligne * (comment cela fonctionnerait-il? Vous n'avez pas ajusté une ligne). J'illustrais ma suggestion d'utiliser un GLM pour que vous puissiez voir ce qu'il faisait, sans donner une recette à suivre. Je ne sais pas comment vos données sont organisées, il est donc difficile de donner des conseils sur ce qui n'a pas fonctionné avec votre ajustement. L'ajustement d'un GLM sera presque aussi simple que l'ajustement d'une régression dans presque tous les packages de statistiques, si vous êtes habitué à autre chose, utilisez-le.
kjetil b halvorsen
2014-06-10 00:30:50 UTC
view on stackexchange narkive permalink

Réponse courte à la question du titre: (presque) JAMAIS. Dans le modèle de régression linéaire $$ y = \ alpha + \ beta x + \ epsilon $$ , si vous définissez $ \ alpha = 0 $ , alors vous dites que vous SAVEZ que la valeur attendue de $ y $ donnée $ x = 0 $ vaut zéro. Vous ne le savez presque jamais.

$ R ^ 2 $ devient plus élevé sans interception, non pas parce que le modèle est meilleur, mais parce que la définition de $ R ^ 2 $ utilisé en est un autre! $ R ^ 2 $ est une expression d'une comparaison du modèle estimé avec un modèle standard, exprimée en réduction de la somme des carrés par rapport à la somme des carrés avec le modèle standard . Dans le modèle avec interception, la somme de comparaison des carrés est autour de la moyenne. Sans interception, c'est autour de zéro! Le dernier est généralement beaucoup plus élevé, il est donc plus facile d'obtenir une réduction importante de la somme des carrés.

Conclusion: NE LAISSEZ PAS L'INTERCEPTION HORS DU MODÈLE (à moins que vous ne sachiez vraiment, vraiment ce que vous faites ).

EDIT (à partir des commentaires ci-dessous): Une exception est mentionnée ailleurs dans les commentaires (mais ce n’est qu’apparemment une exception, le vecteur constant 1 se trouve dans l’espace des colonnes de la matrice de conception $ X $ . Sinon, comme les relations physiques $ s = vt $ où il n'y a pas de constante. Mais même dans ce cas, si le Le modèle n'est qu'approximatif (la vitesse n'est pas vraiment constante), il peut être préférable de laisser une constante même si elle ne peut pas être interprétée. Avec les modèles non linéaires, cela devient plus un problème.

Mais sûrement avoir des données indiquant que lorsque les 9 facteurs sont ainsi, le temps réel est 0 (ou proche de lui) signifie que je suis assez sûr que lorsque X = 0, Y = 0?
Dans votre cas, vous savez que les délais de réalisation ne peuvent pas être négatifs, oui. Alors un modèle linéaire n'est peut-être pas approprié? Essayez un autre modèle, une analyse de survie peut-être, ou un GLM avec une distribution sur la droite réelle positive (distribution gamma, distribution weibull ...)
Une exception est mentionnée ailleurs dans les commentaires (mais ce n'est qu'une exception, le vecteur constamt 1 est dans l'espace columnn de la matrice de régresseur $ X $. Sinon, comme les relations physiques $ s = vt $ où il n'y a pas de constante Mais même dans ce cas, si le modèle n'est qu'approximatif (la vitesse n'est pas vraiment constante), il peut être préférable de laisser une constante même si elle ne peut pas être interprétée. Avec les modèles non linéaires, cela devient plus un problème.
Lors du calcul de R ^ 2, le modèle de comparaison est toujours autour de la moyenne, jamais autour de zéro, que votre modèle contienne une interception ou non.Par conséquent, votre argument concernant une réduction plus facile de l'erreur est faux.
AdamO
2014-06-10 00:27:24 UTC
view on stackexchange narkive permalink

1) Il n'est jamais acceptable de supprimer une interception sauf dans de très rares types de modèles DiD où le résultat et les prédicteurs sont en fait des différences calculées entre les groupes (ce n'est pas le cas pour vous).

2). Heck non, ce n'est pas le cas. Cela signifie que vous pouvez avoir un degré plus élevé de validité interne (par exemple, le modèle correspond aux données) mais probablement un faible degré de validité externe (par exemple, le modèle serait mauvaise adaptation des données expérimentales obtenues dans des conditions similaires). C'est généralement une mauvaise chose.

3) La suppression de l'interception ne fera pas nécessairement cela, mais je suppose que le prédicteur a une valeur continue. Dans de nombreuses situations, les temps d'achèvement des processus sont analysés à l'aide d'une transformation inverse, par ex. $ x = 1 / t $ où $ t $ est le temps nécessaire pour terminer un processus. L'inverse de la moyenne des données transformées inverses est appelé moyenne harmonique et représente le temps complet moyen d'une tâche.

$$ \ mbox {HM} = \ frac {1} {\ mathbb {E} (x)} = \ frac {1} {\ mathbb {E} (1 / t)} $$

Vous pouvez également utiliser des modèles exponentiels paramétriques ou gamma ou weibull time-to-event qui sont des types de modèles construits spécifiquement pour prédire les temps d'achèvement. Ceux-ci donneront des résultats très similaires aux résultats transformés inverses.

Je pense que c'est un peu fort de dire que vous ne pouvez ** jamais ** supprimer une interception. Et si vous voulez / devez coder des groupes factices $ k $ au lieu des $ k-1 $ plus habituels?
Vous estimez toujours les effets $ k $ dans l'exemple que vous mentionnez. La question de OP est une question de 2 contre 1 effets (* avec * intercept contre * sans * intercept, prédicteur continu).
user777: Oui, mais cela ne fonctionne que dans des cas très spécifiques. Par exemple, si vous avez des classifications croisées en deux groupes, votre astuce ne fonctionne pas.
@AdamO Êtes-vous vraiment en train de dire que la seule exception que vous indiquez dans (1) est la seule exception possible à «jamais», ou voulez-vous dire que c'est la seule que vous connaissez?
@Glen_b Je ne peux vraiment penser à aucun bon exemple lorsqu'une spécification de l'origine d'interception a un sens autrement. Même dans des situations très pratiques, telles que l'analyse de la distance d'arrêt ou des compositions chimiques après l'application d'un catalyseur sur certains substrats, les interceptions qui correspondent à des origines non nulles peuvent aider à gérer les erreurs de mesure, les problèmes d'étalonnage, les problèmes de synchronisation, etc. les années où j'ai fait des analyses, j'ai toujours vu des raisons de faire des interceptions même lorsque les valeurs qu'elles adoptent n'ont pas de sens.
Il semble que nous n’ayons pas de désaccord de fond.
@Glen_b y pense, si l'intersection croise des valeurs qui sont incompatibles avec la science du problème, et a des IC à 95% qui * n'incluent pas * des valeurs qui sont * cohérentes * avec la science du problème, ce que * pente * fait vous faites plus confiance? Celle qui n'est pas affectée par la valeur réelle de l'intersection (puisqu'elle est estimée) ou celle qui est biaisée par une valeur irréaliste qui n'a jamais été mesurée et extrapolée sur la base d'un raisonnement et d'hypothèses fortes que la ligne doit se croiser (0, 0 ).
@Glen_b Je suis d'accord. Je pense qu'il y a des dénominations différentes en la matière, je suis juste d'une variété particulièrement zélée :)
PA6OTA
2014-06-10 09:10:38 UTC
view on stackexchange narkive permalink

1) Forcer l'interception $ 0 $ est conseillé si vous savez que c'est 0. Tout ce que vous savez a priori , vous devez l'utiliser dans votre modèle.

Un un exemple est le modèle Hubble pour l'expansion de l'univers (utilisé dans Statistical Sleuth ):

$$ \ mbox {Galaxy Speed} = k (\ mbox {Distance from Earth}) $$

Ce modèle est assez grossier, mais utilise 0 interception comme conséquence de la théorie du Big Bang: au temps $ 0 $, toute la matière est au même endroit.

De l'autre main, le modèle que vous décrivez aura probablement besoin d'un terme d'interception.

2) Vous pourriez ou non vous améliorer $ R ^ 2_ {adj} $, ou vous pouvez accepter une hypothèse nulle pour le test de intercept étant 0, mais ces deux éléments ne sont pas des raisons de supprimer le terme d'interception.

3) Pour assurer la positivité des réponses, vous pouvez parfois transformer la variable de réponse. Log ou sqrt peut fonctionner en fonction de vos données, bien sûr, vous devrez vérifier les résidus.

C'est un cas très spécial!La plupart des applications ne sont pas comme ça.
Christoph Hanck
2015-12-29 18:31:18 UTC
view on stackexchange narkive permalink

Il est logique (en fait, c'est nécessaire) d'omettre l'interception dans la deuxième étape du test de cointégration d'Engle / Granger. Le test estime d'abord une relation de cointégration candidate via une régression d'une variable dépendante sur une constante (plus parfois une tendance) et les autres variables non stationnaires.

Dans la deuxième étape, les résidus de cette régression sont testés pour une racine unitaire pour tester si l'erreur représente réellement une relation d'équilibre. Comme la régression de la première étape contient une constante, les résidus sont en moyenne zéro par construction. Par conséquent, le test de racine unitaire de deuxième étape n'a pas besoin d'une constante et en fait, la distribution limite pour ce test de racine unitaire est dérivée en supposant que cette constante n'a effectivement pas été ajustée.

IrishStat
2014-06-10 14:38:07 UTC
view on stackexchange narkive permalink

La seule façon que je connais de contraindre toutes les valeurs ajustées à être supérieures à zéro est d'utiliser une approche de programmation linéaire et de la spécifier comme contrainte.

Non. La régression de Poisson et tout modèle linéaire généralisé avec lien log renverra toutes les valeurs prédites positives. @Glen_b a déjà souligné ce point dans sa réponse.
@Nick ... Bien sûr ... Puisque les variables de Poisson sont limitées par 0, il en est ainsi. Merci ...
Ricardo Marques
2016-09-23 21:04:13 UTC
view on stackexchange narkive permalink

Le problème réel est qu'une régression linéaire forçant l'interception = 0 est une incohérence mathématique qui ne devrait jamais être faite:

Il est clair que si y = a + bx, alors average (y) = a + moyenne (x), et en effet nous pouvons facilement réaliser que lorsque nous estimons a et b en utilisant l'estimation linéaire dans Excel, nous obtenons la relation ci-dessus

Cependant, si nous faisons arbitrairement a = 0, alors nécessairement b = moyenne (y) / moyenne (x). Mais cela est incompatible avec l'algorithme des carrés minimum. En effet, vous pouvez facilement vous rendre compte que lorsque vous estimez b en utilisant l'estimation linéaire dans Excel, la relation ci-dessus n'est pas satisfaite

Votre argument semble s'effondrer alors que c'est en fait le cas où $ a = 0 $, car alors il n'y a pas d '"incohérence mathématique", fixer $ a $ à zéro n'est pas arbitraire, et il n'y a pas de problème avec les moindres carrés.
Curious
2014-06-10 17:29:41 UTC
view on stackexchange narkive permalink

Cela a beaucoup de sens dans les modèles avec une covariable catégorielle. Dans ce cas, la suppression de l'interception aboutit à un modèle équivalent avec juste un paramétrage différent:

  > data (mtcars) > mtcars $ cyl_factor <- as.factor (mtcars $ cyl) > summary ( lm (mpg ~ cyl_factor, data = mtcars)) Appel: lm (formule = mpg ~ cyl_factor, data = mtcars) Résiduels: Min 1Q Médiane 3Q Max -5,2636 -1,8357 0,0286 1,3893 7,2364 Coefficients: Estimation Std. Valeur d'erreur t Pr (> | t |) (Interception) 26,6636 0,9718 27,437 < 2e-16 *** cyl_factor6 -6,9208 1,5583 -4,441 0,000119 *** cyl_factor8 -11,5636 1,2986 -8,905 8,57e-10 *** --- Signif . codes: 0 '***' 0,001 '**' 0,01 '*' 0,05 '.' 0,1 '' 1 Erreur standard résiduelle: 3,223 sur 29 degrés de liberté R-carré multiple: 0,7325, R-carré ajusté: 0,714 Statistique F: 39,7 sur 2 et 29 DF, valeur p: 4,979e-09 Résumé > (lm (mpg ~ 0 + cyl_factor, data = mtcars)) Appel: lm (formula = mpg ~ 0 + cyl_factor, data = mtcars) Résiduels: Min 1Q Médiane 3Q Max -5,2636 -1,8357 0,0286 1,3893 7,2364 Coefficients: Estimation Std. Valeur d'erreur t Pr (> | t |) cyl_factor4 26,6636 0,9718 27,44 < 2e-16 *** cyl_factor6 19,7429 1,2182 16,21 4,49e-16 *** cyl_factor8 15,1000 0,8614 17,53 < 2e-16 *** --- Signif. codes: 0 '***' 0,001 '**' 0,01 '*' 0,05 '.' 0,1 '' 1 Erreur standard résiduelle: 3,223 sur 29 degrés de liberté R-carré multiple: 0,9785, R-carré ajusté: 0,9763 Statistique F: 440.9 sur 3 et 29 DF, valeur p: < 2.2e-16  

Le deuxième exemple aboutit en fait à ce que la variable catégorielle soit une interception spécifique à une catégorie, donc en réalité l'interception est n n'est pas supprimé, il semble que oui.

Est-ce vraiment lié à la question? Vous ne forcez pas simplement une interception à zéro dans le deuxième modèle, mais incitez R à utiliser la somme à zéro plutôt que le codage au niveau de référence pour un prédicteur catégoriel.
En fait, c'est à l'envers: "Cela n'a souvent pas de sens dans les modèles avec des covariables catégoriques: si vous essayez du code que vous penseriez forcer l'interception à zéro, R supposera que vous voulez simplement reparamétriser le modèle." aurait raison.
Vous jouez tous les deux avec les mots. La compréhension habituelle de «0 +» ou «-1» dans «lm» est de supprimer l'interception * globale *, ce qu'il fait réellement. BTW, je dis exactement la même chose que vous le faites tous les deux dans la dernière phrase de ma réponse, donc je ne comprends pas vraiment pourquoi quelqu'un a voté contre.
(Je suis une personne, et l'électeur à la baisse.) `+ 0` peut faire ** deux choses complètement différentes **. Si vous codez manuellement les variables factices $ x_1 $ & $ x_2 $ pour `cyl` comme 0 ou 1, son utilisation * forcera * l'interception à zéro et ajustera le modèle à deux paramètres $ \ operatorname {E} Y = \ beta_1 x_1 + \ beta_2 x_2 $. Mais si on dit à R que `cyl_factor` est catégorique, il devient intelligent et correspond au modèle à trois paramètres que vous décrivez. Donc, "supprimer l'interception" est ambigu. Maintenant, je sais tout cela et vous savez tout cela, mais à l'OMI, la réponse n'est pas claire - potentiellement trompeuse - pour quelqu'un qui ne le sait pas.


Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...