Régression linéaire avec une seule variable prédictive
La régression linéaire simple décrit la relation entre une seule variable prédictive et une variable de réponse. Un modèle de régression linéaire est utile pour comprendre l’influence des modifications du prédicteur sur la réponse.
Cet exemple montre comment ajuster, visualiser et valider des modèles de régression linéaire simple de degrés divers avec les fonctions polyfit et polyval. Pour savoir comment ajuster et visualiser un modèle en utilisant plutôt l’outil Basic Fitting, consultez Interactively Fit Data and Visualize Model.
Utilisez la régression linéaire simple lorsque :
Vous disposez d’une seule variable prédictive.
La relation entre le prédicteur et la réponse est linéaire dans les coefficients.
Vous souhaitez quantifier l’effet du prédicteur sur la réponse.
Tracer les données
Commencez par tracer les données pour identifier les degrés d’ajustement polynomial possibles.
Par exemple, créez et visualisez un échantillon avec une variable prédictive x et une variable de réponse y. Cette visualisation suggère qu’un ajustement linéaire ou quadratique pourrait décrire la relation entre le prédicteur et la variable de réponse.
x = [0:0.5:5]'; y = [2.73 2.50 3.79 3.98 4.21 7.18 6.95 9.63 12.39 14.10 19.93]'; scatter(x,y)

Ajuster un modèle de premier degré
Ajustez un modèle de premier degré (linéaire) aux données avec la fonction polyfit. Spécifiez deux arguments en sortie pour renvoyer les coefficients polynomiaux ainsi que la structure d’estimation des erreurs.
[pLinear,SLinear] = polyfit(x,y,1)
pLinear = 1×2
3.1316 0.1155
SLinear = struct with fields:
R: [2×2 double]
df: 9
normr: 6.3071
rsquared: 0.8715
Affichez le modèle ajusté.
eqLinear = "Linear: " + pLinear(1) + "x + " + pLinear(2)
eqLinear = "Linear: 3.1316x + 0.11545"
Ajuster un modèle de degré supérieur
Si un modèle de premier degré ne décrit pas de manière satisfaisante la relation entre le prédicteur et la variable de réponse, vous pouvez ajuster un modèle de degré supérieur. Par exemple, ajustez un modèle de second degré (quadratique) aux données avec la fonction polyfit. Spécifiez deux arguments en sortie pour renvoyer les coefficients polynomiaux ainsi que la structure d’estimation des erreurs.
[pQuad,SQuad] = polyfit(x,y,2)
pQuad = 1×3
0.7898 -0.8175 3.0773
SQuad = struct with fields:
R: [3×3 double]
df: 8
normr: 2.5152
rsquared: 0.9796
Affichez le modèle ajusté.
eqQuad = "Quadratic: " + pQuad(1) + "x^2 + " + pQuad(2) + "x + " + pQuad(3)
eqQuad = "Quadratic: 0.78984x^2 + -0.81755x + 3.0773"
Comparer les modèles
Pour comparer les modèles à l’aide d’un tracé, évaluez d’abord chacun d’eux aux points de requête et renvoyez les valeurs de réponse prédites avec la fonction polyval. Visualisez ensuite les données et les deux modèles.
Par exemple, obtenez les valeurs de réponse du modèle linéaire et du modèle quadratique sur une plage de valeurs x plus fine.
xQuery = [0:0.05:7]'; yLinear = polyval(pLinear,xQuery); yQuad = polyval(pQuad,xQuery);
Si le modèle de degré supérieur ne prédit pas correctement les valeurs de réponse, cela peut indiquer un surajustement. Pour plus d’informations sur la validation du modèle et la sélection de la complexité appropriée pour celui-ci, consultez la section Valider les modèles.
Tracez ensuite les données de l’échantillon et des modèles.
scatter(x,y) hold on plot(xQuery,yLinear,"-") plot(xQuery,yQuad,"--") hold off xlabel("Predictor") ylabel("Response") legend(["Sample data" "Linear model" "Quadratic model"]) text(0.3,30,[eqLinear eqQuad])

Valider les modèles
Pour valider un modèle, calculez le coefficient de détermination (R au carré) ou le coefficient de détermination ajusté (R au carré ajusté). Une valeur proche de 1 indique un ajustement de bonne qualité.
Valider un modèle linéaire avec R au carré
Pour un modèle de premier degré, vous pouvez accéder à la valeur R au carré avec la structure d’estimation des erreurs renvoyée par la fonction polyfit. Par exemple, interrogez le champ rsquared dans SLinear.
linearR2 = SLinear.rsquared
linearR2 = 0.8715
Valider un modèle de degré supérieur avec R au carré ajusté
En général, pour les modèles de degré supérieur contenant un plus grand nombre de termes, la valeur R au carré augmente, ce qui indique un ajustement plus étroit aux données observées. Toutefois, ces modèles présentent un risque plus élevé de surajustement.
Le surajustement se produit lorsqu’un modèle décrit trop fidèlement les données d’origine (y compris le bruit) et ne prédit pas efficacement les nouvelles données.
Pour trouver le juste équilibre entre qualité de prédiction et complexité du modèle, envisagez de valider le modèle avec la valeur R au carré ajustée, qui inclut une pénalité pour le nombre de prédicteurs. Vous pouvez calculer la valeur R au carré ajustée avec l’équation suivante, où est la valeur du champ rsquared dans la structure d’estimation des erreurs, est le nombre d’observations dans les données et est le degré du modèle.
Par exemple, calculez la valeur R au carré ajustée pour le modèle quadratique.
quadAdjRsq = 1 - (1 - SQuad.rsquared) * (numel(y) - 1) / (numel(y) - 2 - 1)
quadAdjRsq = 0.9744
Calculer l’erreur de prédiction maximale pour chaque modèle
Vous pouvez également valider un modèle en calculant l’erreur la plus élevée entre ses prédictions et l’échantillon de données. Une erreur maximale relativement petite par rapport aux valeurs des données indique un ajustement de bonne qualité.
Par exemple, calculez l’erreur maximale du modèle linéaire et du modèle quadratique.
Lia = ismember(xQuery,x); linearMaxError = max(abs(yLinear(Lia) - y))
linearMaxError = 4.1564
quadMaxError = max(abs(yQuad(Lia) - y))
quadMaxError = 1.2926
Voir aussi
Fonctions
Rubriques
- Interactively Fit Data and Visualize Model
- Linear Regression with Nonpolynomial Terms
- Linear Regression with Multiple Predictor Variables
- Créer et évaluer des polynômes
- Linear Regression Workflow (Statistics and Machine Learning Toolbox)
- Fit Polynomial Models (Curve Fitting Toolbox)