TADE : RÉGRESSION NON LINÉAIRE AVEC R
MARK ASCH
1. INTRODUCTION
Dans la régression linéaire, la surface moyenne est un plan dans l’espace d’échantillonage. Dans
la régression non linéaire, elle peut être une surface courbée, arbitraire.Sinon, les modèles sont iden-
tiques.Néanmoins, des problèmes de calcul numérique peuvent apparaître.
2. MODÈLES
La forme générale d’un modèle de régression non linéaire est
y=f(x,β) + ε
xest un vecteur de variables explicatives, βest un vecteur de dimension pde paramètres inconnus
et εet un terme d’erreur N(0,σ2).Si yest un vecteur empirique (d’échantillon) de taille n,et si
f(β)est son vecteur moyen, alors l’estimateur de maximum de vraisemblance de βest également
l’estimateur de moindres carrés. Cet estimateur minimise la distance entre le vecteur empirique et
l’espace engendré par β.
L’ajustage d’un modèle non linéaire diffère de celui d’un modèle linéaire par :
(1) Il n’y a pas de formule explicite pour les estimés et un processus itératif, avec des valeurs
initiales, est requis.
(2) Le formules d’un modèle linéaire ne sont pas adéquates et il nous faut un protocole plus
flexible.
3. RÉGRESSION NON LINÉAIRE AVEC R
La fonction principale de Rpour l’ajustage d’un modèle de régression non linéaire est nls. Les
arguments de nls sont les suivants :
formula: Une formule de modèle non linéaire de la forme response ~ mean où le deuxième
membre est une expression algébrique qui contient des variables et des paramètres.
data: Un data frame facultatif pour les variables.
start: Une liste ou un vecteur numérique avec les valeurs initiales pour chaque paramètre. Les
names des composantes de start sont utilisés dans la formule afin de désigner les paramètres.
Tous les autres sont pris pour des variables explicatives.
control: Facultatif - pour les caractéristiques de l’algorithme itératif.
algorithm: Facultatif - pour le choix de l’algorithme itératif.
trace: Pour affichage des information pendant la procédure itérative.
Date: Janvier 2011.
Module TADE, EDSS, Université de Picardie Jules Verne.
1
TADE : RÉGRESSION NON LINÉAIRE AVEC R2
3.1. Utilisation du gradient. La connaissance des dérivées de la fonction à minimiser, apporte
(presque) systématiquement une amélioration de la convergence. Pour cela, on rajoute l’attribut “gra-
dient” à la définition du modèle (voir l’exemple).
4. EXEMPLE :OBÉSITÉ ET PERTE DE POIDS
Des patients obèses dans un programme de perte de poids ont tendance à perdre du tissu adipeux
avec un taux qui va en diminuant. La base de données wtloss dans la bibliothèque MASS contient 2
variables : Days, le temps (en jours) depuis le début du programme, et Weight, le poids du patient.
Voici un script pour charger et afficher les données :
library(MASS)
attach(wtloss)
help(wtloss)
plot(Days,Weight,type="p",ylab="Poids (kg)")
Voici le résultat.
0 50 100 150 200 250
110 120 130 140 150 160 170 180
Days
Poids (kg)
Même si des modèles de régression polynomiale peuvent bien décrire les données dans le range
observé, ils peuvent échouer misérablement en dehors de ce range. Un modèle plus utile, avec du
soutien théorique et empirique, est non linéaire dans les paramètres, de la forme
y=β0+β12t/θ+ε
β0est le poids ultime (asymptote), β1est le poids à perdre et θest le temps nécessaire pour perdre
la moitié de ce qui reste à perdre. Les paramètres β0et β1sont linéaires, et θest un paramètre non
linéaire.
Voici le script pour ajuster le modèle non linéaire.
> wtloss.st<-c(b0=90,b1=95,th=120)
> wtloss.md <- Weight ~ b0 + b1*2^(-Days/th)
> wtloss.fm <- nls(wtloss.md, start=wtloss.st, trace=TRUE)
67.54349 : 90 95 120
TADE : RÉGRESSION NON LINÉAIRE AVEC R3
40.18081 : 82.72629 101.30457 138.71374
39.24489 : 81.39868 102.65836 141.85859
39.2447 : 81.37375 102.68417 141.91052
> wtloss.fm
Nonlinear regression model
model: Weight ~ b0 + b1 * 2^(-Days/th)
data: parent.frame()
b0 b1 th
81.37 102.68 141.91
residual sum-of-squares: 39.24
Number of iterations to convergence: 3
Achieved convergence tolerance: 4.354e-06
> summary(wtloss.fm)
Formula: Weight ~ b0 + b1 * 2^(-Days/th)
Parameters:
Estimate Std. Error t value Pr(>|t|)
b0 81.374 2.269 35.86 <2e-16 ***
b1 102.684 2.083 49.30 <2e-16 ***
th 141.911 5.295 26.80 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.8949 on 49 degrees of freedom
Number of iterations to convergence: 3
Achieved convergence tolerance: 4.354e-06
>
Finalement, on peut tracer la courbe de régression.
> wt<-seq(0,255,le=256)
> lines(wt,predict(wtloss.fm, new=list(Days = wt)))
0 50 100 150 200 250
110 120 130 140 150 160 170 180
Days
Poids (kg)
TADE : RÉGRESSION NON LINÉAIRE AVEC R4
Nous pouvons rajouter le gradient de notre fonction f.On calcul aisement,
f
∂ β0=1,f
∂ β1=2x/θ,f
∂ θ =(log2)β1x2x/θ
θ2
et la fonction Rqui définit le modèle avec ses dérivées est :
expn <- function(b0,b1,th,x){
temp<-2^(-x/th)
model.func <- b0 + b1*temp
Z <- cbind(1, temp, (b1*x*temp*log(2))/th^2)
dimnames(Z)<- list(NULL,c("b0","b1","th"))
attr(model.func,"gradient") <- Z model.func
}
wtloss.gr <- nls(Weight ~ expn(b0,b1,th,Days),data=wtloss,start=wtloss.st,trace=T)
1 / 4 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !