Modèles non-linéaire
Calcul de variance résiduelle par leave-one-out
Description
On s'intérese à la repousse des pâturages. Les variable sont
- Temps: écoulé après pâture
- Production: mesure de la repousse d'herbage
pour lesquelles on dispose de 9 individus:
-
t = c(9,14,21,28,42,57,63,70,79)
p = c(8.93,10.8,18.59,22.33,39.35,56.11,61.73,64.62,67.08)
pour l'estimation d'un modèle
non-linéaire a quatre paramètres (plus la variance):
p=b1-b2*exp(-exp(b3+b4*log(t)))
+ bruit.
N'ayant que 9 individus, on estimera la variance du bruit par
validation croisée (PRESS).
Analyse
Dans toute la suite, on considérera x=log(t) comme nouveau
régresseur
1/ Estimer le modèle au maximum de vraisemblance.
-
Il faut utiliser la routine nls de la bibliothèque
nls. La difficulté est de trouver des valeurs initiales pour
(b1,b2,b3,b4).
Pour cela, on commencera par proposer une valeur initiale
pour (b1,b2), basée sur les données
(interpréter ces deux paramètres). Ces deux valeurs étant fixées, on
estimera (b3,b4) avec nls(.) en partant de la
valeur initiale (0, 0.01). Le quadruplet formé des
valeurs utilisées pour (b1,b2) et des
valeurs obtenues pour (b3,b4) constituera un bon
point initial pour le calcul du vecteur de paramètres complet.
Pour réintroduire l'estimée de (b3,b4) dans
les conditions initiales, on pourra convertir la solution obtenue avec
getAllPars()
en un simple vecteur de réels en utilisant
as.real()
.
2/ Tracer les points et la courbe de régression.
-
Pour éviter l'effacement, on utilisera
plot()
d'abord pour
les points de données,
et ensuite lines()
avec les 9 xi et les predictions
correspondantes.
3/ Estimées de sigma
-
Estimer les residus par validation croiseée et en déduire
l'estimation CV de sigma.
La comparer à l'estimateur MV.
Indication : pour chacune des optimisations à faire, on
donnera comme valeur initiale des paramètres celles obtenues
à la première question.
Une solution ici
Source
Ratkowsky, D. A. (1983). Nonlinear
Regression Modelling. Marcel Dekker, New York.
L'âge des lapins
Description
The European rabbit Oryctolagus cuniculus is a major pest
in Australia. A reliable method of age determination for rabbits
caught in the wild would be of importance in ecological studies. In
this study, the dry weight of the eye lens was measured for 71
free-living wild rabbits of known age. Eye lens weight tends to vary
much less with environmental conditions than does total body weight,
and therefore may be a much better indicator of age.
The rabbits were born and lived free in
an experimental 1.7 acre enclosure at Gungahlin, ACT. The birth data
and history of each individual were accurately known. Rabbits in the
enclosure depended on the natural food supply. In this experiment, 18
of the eye lenses were collected from rabbits that died in the course
of the study from various causes such as coccidiosis, bird predation
or starvation. The remaining 53 rabbits were deliberately killed,
immediately after being caught in the enclosure or after they had
been kept for some time in cages. The lenses were preserved and their
dry weight determined.
Variables
- Age: Age of rabbit in days
- Lens:Dry weight of eye lens in milligrams
Analyse
- 1/ Lire les données.
- 2/ Choix du modèle.
-
Au vu de tracés des données, discuter les modèles
-
Lens = aexp{ -b/ (Age + c) } + bruit
et
-
log(Lens) =a-b/ (Age + c) + bruit
- 3/ Estimation.
-
- Pour l'estimation avec la fonction
nls
, on observera sans doute que l'algorithme diverge.
Pour remédier à cela, on pourra soit
- (a)
deviner des valeurs initiales raisonnables pour a, b et c au vu des
données (penser à la signification de ces trois quantités) :
mod= nls(y~a-b/(Age+c),start=c(a=?,b=?,c=?))
- (b) soit
utiliser l'option algorithm="plinear". Par exemple un modèle y=b1+b2 x+b3 exp(b4 x)
se définira par la formule
mod =nls(y~cbind(1,x,exp(b4 x)),start=c(b4=?),algorithm="plinear")
où l'on ne donne de valeur initiale que pour b4. Ainsi l'algorithme
exploitera la linéarité en (b1,b2,b3) et aura davantage
de chances de converger.
Tracer ensuite la courbe de régression
et les données sur un même graphique. Pour éviter
l'effacement, on utilisera plot()
d'abord pour les points de
données, et ensuite lines()
avec les régresseurs des
données et les predictions correspondantes (utiliser fitted(mod)
).
- 4/ Calcul de la variance MV.
- Comparer les résultats de
sum(mod$m$resid()^2)
et mod$m$deviance()
. En déduire
une estimée de la variance.
- 5/ Calcul de la variance par validation croisée.
- Il faut faire une boucle.
On ôtera la donnée i par la commande
lapi=lap[row.names(lap)!=i,]
.
Pour l'estimation on donnera le modèle précédemment estimé comme valeur initiale
(utiliser mod$m$getAllPars()
).
On prédira avec la fonction predict avec comme argument newdata la liste
list(Age=lap$Age[i])
.
Sources
OzDASL
Dudzinski, M. L., and Mykytowycz, R. (1961). The eye lens as an
indicator of age in the wild rabbit in Australia. CSIRO
Wildlife Research, 6, 156-159.
Ratkowsky, D. A. (1983). Nonlinear Regression Modelling.
Marcel Dekker, New York.
Wei, B.-C. (1998). Exponential Family Nonlinear Models.
Springer, Singapore. Examples 2.4 and 6.8
Available Chlorine (Bootstrap)
Description
The data are from a Proctor and Gamble study reported by Smith and
Dubey (1964) on the amount of available chlorine in a product as a
function of time since manufacture. Theoretical considerations lead
to the model
Chlorine = a + (0.49 - a) exp{ -b (Weeks - 8) }
Variables
- Weeks: Time in weeks since manufacture
- Chlorine: Available chlorine
Analyse
1/ Faire une régression non-linéaire avec la
bibliothèque nls
de R.
-
Pour cela, on identifiera le modèle y=b1+b2*exp(-b3*x)
avec l'option
algorithm=«plinear»
(cf.TP «lapins» point 3.(b) ci-dessus).
On vérifiera ensuite que la contriainte donnée a priori
b2*exp(-8*b3)+b1=0,49 est réaliste au vu des intervalles de confiance sur les estimées.
On peut travailler ensuite directement sur le modèle un peu
plus compliqué à estimer: y=a+(0,49-a)*exp(-b*(x-8)).
2/ Tracer les points et la courbe
de régression.
-
Pour éviter l'effacement, on utilisera
plot()
d'abord pour
les points de données, et ensuite lines()
avec les xi
et les predictions correspondantes.
3/ Estimer la variance d'estimation de chaque bi par
la méthode de boostrap sur les résidus; comparer à
celles données par R. Calculer par la même méthode
un intervalle de confiance à 95% pour chaque bi.
Sources
- OzDASL
- Jennrich, R. I., and Bright, P. B. (1976). Fitting systems of
linear differential equations using computer generated exact
derivatives. Technometrics, 18, 385-392.
- Jennrich, R. I. (1995). An Introduction to Computational
Statistics. Prentice-Hall, Englewood Cliffs, New Jersey. Section
8.2.1.