Personnaliser les préférences

Nous utilisons des cookies pour vous aider à naviguer efficacement et à exécuter certaines fonctions. Vous trouverez ci-dessous des informations détaillées sur tous les cookies sous chaque catégorie de consentement.

Les cookies classés comme « Nécessaires » sont stockés sur votre navigateur car ils sont essentiels pour activer les fonctionnalités de base du site.... 

Toujours actif

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

Aucun cookie à afficher.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

Aucun cookie à afficher.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

Aucun cookie à afficher.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

Aucun cookie à afficher.

Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.

Aucun cookie à afficher.

Comment effectuer une régression par morceaux dans R (étape par étape)



La régression par morceaux est une méthode de régression que nous utilisons souvent lorsqu’il existe des « points d’arrêt » clairs dans un ensemble de données.

L’exemple suivant, étape par étape, montre comment effectuer une régression par morceaux dans R.

Étape 1 : Créer les données

Tout d’abord, créons le bloc de données suivant :

#view DataFrame
df <- data.frame(x=c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16),
                 y=c(2, 4, 5, 6, 8, 10, 12, 13, 15, 19, 24, 28, 31, 34, 39, 44))

#view first six rows of data frame
head(df)

  x  y
1 1  2
2 2  4
3 3  5
4 4  6
5 5  8
6 6 10

Étape 2 : Visualisez les données

Créons ensuite un nuage de points pour visualiser les données :

#create scatterplot of x vs. y
plot(df$x, df$y, pch=16, col='steelblue')

Nous pouvons voir que la relation entre x et y semble changer brusquement autour de x = 9 .

Étape 3 : Ajuster le modèle de régression par morceaux

Nous pouvons utiliser la fonction segmented() du package segmented dans R pour adapter un modèle de régression par morceaux à notre ensemble de données :

library(segmented)

#fit simple linear regression model
fit <- lm(y ~ x, data=df)

#fit piecewise regression model to original model, estimating a breakpoint at x=9
segmented.fit <- segmented(fit, seg.Z = ~x, psi=9)

#view summary of segmented model
summary(segmented.fit)

Call: 
segmented.lm(obj = fit, seg.Z = ~x, psi = 9)

Estimated Break-Point(s):
         Est. St.Err
psi1.x 8.762   0.26

Meaningful coefficients of the linear terms:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  0.32143    0.48343   0.665    0.519    
x            1.59524    0.09573  16.663 1.16e-09 ***
U1.x         2.40476    0.13539  17.762       NA    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.6204 on 12 degrees of freedom
Multiple R-Squared: 0.9983,  Adjusted R-squared: 0.9978 

Convergence attained in 2 iter. (rel. change 0)

La fonction segmented() détecte un point d’arrêt à x = 8,762.

Le modèle de régression par morceaux ajusté est :

Si x ≤ 8,762 : y = 0,32143 + 1,59524*(x)

Si x > 8,762 : y = 0,32143 + 1,59524*(8,762) + (1,59524+2,40476)*(x-8,762)

Par exemple, supposons que nous ayons une valeur de x = 5 . La valeur y estimée serait :

  • y = 0,32143 + 1,59524*(x)
  • y = 0,32143 + 1,59524*(5)
  • y = 8,297

Ou supposons que nous ayons une valeur de x = 12 . La valeur y estimée serait :

  • y = 0,32143 + 1,59524*(8,762) + (1,59524+2,40476)*(12-8,762)
  • y = 27,25

Étape 4 : Visualisez le modèle de régression par morceaux final

Nous pouvons utiliser le code suivant pour visualiser le modèle de régression par morceaux final au-dessus de nos données d’origine :

#plot original data
plot(df$x, df$y, pch=16, col='steelblue')

#add segmented regression model
plot(segmented.fit, add=T)

Il semble que le modèle de régression par morceaux s’ajuste assez bien aux données.

Ressources additionnelles

Les didacticiels suivants fournissent des informations supplémentaires sur les modèles de régression dans R :

Comment effectuer une régression linéaire simple dans R
Comment effectuer une régression linéaire multiple dans R
Comment effectuer une régression logistique dans R
Comment effectuer une régression quantile dans R
Comment effectuer une régression pondérée dans R

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *