Je sais comment effectuer une régression linéaire sur un ensemble de points. Autrement dit, je sais comment adapter un polynôme de mon choix, à un ensemble de données donné (au sens LSE). Cependant, ce que je ne sais pas, c'est comment forcer ma solution à passer par certains points particuliers de mon choix. J'ai déjà vu cela se faire auparavant, mais je ne me souviens pas de la façon dont la procédure a été appelée, et encore moins de la façon dont elle a été effectuée.
Comme exemple très simple et concret, disons que j'ai 100 points dispersés sur le plan xy, et je choisis de faire passer un polynôme d'ordre quelconque à travers eux. Je sais très bien effectuer cette régression linéaire. Cependant, disons que je veux `` forcer '' ma solution, pour parcourir, disons, trois de mes points de données aux coordonnées , x = 19 et x = 89 (et leurs coordonnées y correspondantes bien sûr).
Comment appelle-t-on cette procédure générale et comment dois-je la connaître?
Éditer:
Je voudrais ajouter que je cherche un moyen concret de le faire. J'ai écrit un programme qui effectue en fait la régression linéaire de deux manières, en inversant la matrice de covariance directement ou par descente de gradient. Ce que je demande, c'est comment, exactement, étape par étape, je modifie ce que j'ai fait, de sorte que je force la solution polynomiale à passer par des points spécifiques?
Merci!
Réponses:
Le modèle en question peut être écrit
où est un polynôme de degré d - 1 passant par des points prédéterminés ( x 1 , y 1 ) , … , ( x d , y d ) et ε est aléatoire. (Utilisez le polynôme interpolateur de Lagrange .) Écriture ( x - x 1 ) ⋯ ( x - x d ) = rp ( xje) = yje ré- 1 ( x1, y1) , … , ( Xré, yré) ε nous permet de réécrire ce modèle en( x - x1) ⋯ ( x - xré) = r ( x )
qui est un problème de régression multiple OLS standard avec la même structure d'erreur que l'original où les variables indépendantes sont les quantités r ( x ) x i , i = 0 , 1 , … , p . Calculez simplement ces variables et exécutez votre logiciel de régression familier , en veillant à l'empêcher d'inclure un terme constant. Les mises en garde habituelles concernant les régressions sans terme constant s'appliquent; en particulier, le R 2 peut être artificiellement élevé; les interprétations habituelles ne s'appliquent pas.p + 1 r ( x ) xje, i = 0 , 1 , … , p R2
(En fait, la régression par l'origine est un cas particulier de cette construction où , ( x 1 , y 1 ) = ( 0 , 0 ) , et p ( x ) = 0 , de sorte que le modèle est y = β 0 x + ⋯ + β p x p + 1 + ε . )ré= 1 ( x1, y1) = ( 0 , 0 ) p ( x ) = 0 y= β0x + ⋯ + βpXp + 1+ ε .
Voici un exemple travaillé (en
R
)Les trois points fixes sont affichés en rouge continu - ils ne font pas partie des données. L'ajustement des moindres carrés polynomiaux du quatrième ordre non contraint est représenté par une ligne pointillée noire (il a cinq paramètres); l'ajustement contraint (de l'ordre de cinq, mais avec seulement trois paramètres libres) est indiqué par la ligne rouge.
Inspecter la sortie des moindres carrés (
summary(fit0)
etsummary(fit)
) peut être instructif - je laisse cela au lecteur intéressé.la source
Si vous voulez forcer une ligne à passer par deux points dans un plan XY, c'est assez facile à faire aussi. Deux points quelconques peuvent correspondre à une ligne. Vous pouvez utiliser la formule point-pente pour calculer votre pente, puis utiliser l'un des points, la pente et l' équation d'une ligne pour trouver l'ordonnée à l'origine.
Je me sens obligé de mentionner à ce stade, cependant, que ce n'est peut-être pas une bonne chose à faire (à moins que votre théorie ne fournisse des raisons très solides pour le faire). Vous pouvez également examiner la régression bayésienne , où vous pouvez permettre à votre modèle de trouver la meilleure combinaison des informations dans vos données et certaines informations antérieures (que vous pourriez utiliser pour biaiser fortement votre interception vers zéro, par exemple, sans tout à fait le forçant).
la source
Pour ajouter un peu d'informations supplémentaires à l'excellente couverture de @ gung du cas linéaire, dans le cas polynomial d'ordre supérieur, il existe plusieurs façons de le faire exactement ou approximativement (mais à peu près aussi précisément que nécessaire).
Notons tout d'abord que les degrés de liberté du polynôme (ou bien de toute fonction ajustée) doivent être au moins aussi importants que le nombre de points "connus". Si les degrés de liberté sont égaux, vous n'avez pas du tout besoin des données, car la courbe est complètement déterminée. S'il y a plus de points «connus», vous ne pouvez pas le résoudre (à moins qu'ils ne reposent tous sur exactement le même polynôme du degré spécifié, auquel cas tout sous-ensemble de taille appropriée suffira). À partir de là, je vais juste parler du moment où le polynôme a plus de df que les points connus (comme un cube - avec 4df - et trois points connus, de sorte que le cube n'est ni surdéterminé par les points connus ni complètement déterminé par eux) .
1) "la courbe doit passer par ce point" est une contrainte linéaire sur les paramètres, entraînant une estimation contrainte ou des moindres carrés contraints (bien que les deux termes puissent inclure autre chose que des contraintes linéaires, telles que des contraintes de positivité). Vous pouvez incorporer des contraintes linéaires en
(a) refonte de la paramétrisation pour inclure implicitement chaque contrainte résultant en un modèle d'ordre inférieur.
(b) utiliser des outils standard qui peuvent incorporer des contraintes linéaires sur les paramètres d'un ajustement par moindres carrés. (généralement via quelque chose comme la formule donnée au lien ci-dessus)
2) Une autre méthode consiste à effectuer une régression pondérée. Si vous donnez aux points connus un poids suffisamment important, vous pouvez obtenir essentiellement le même ajustement qu'en (1). Ceci est souvent facilement implémenté, peut être beaucoup plus rapide que le reparamétrage et peut être effectué dans des packages qui n'offrent pas d'ajustement contraint.
Toutes les mises en garde de @ gung s'appliquent
la source