Bonjour,
Je suis actuellement en train d'essayer d'estimer des paramètres en résolvant un problème de moindres carrés non linéaires, par l'ajustement à une courbe connue.
Mon code est le suivant:
Quelqu'un a-t-il déjà rencontré cette erreur ? Si oui, pourriez-vous m'aider ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 ydat = Rm tdat = seq_along(ydat) weeddata = data.frame(y=ydat, tt=tdat) eunsc = y ~ (1-b1)*(1-(1-b2)^tt) ## les paramètres à optimiser sont b1, b2. tt correspond à une valeur de jours, connue, et y le vecteur contenant les valeurs de la courbe sur laquelle on souhaite ajuster les paramètres # définition d'un vecteur initial. start1 = c(b1=longZ,b2=0.5) ## longZ valeur comprise entre 0 et 1 weeds <- data.frame(y=ydat, x=tdat) weed.f <- function(b,mydata){ (1/2)*sum((mydata$y-((1-b[1])*(1-(1-b[2])^mydata$x)))^2) } weed.optx <- optimx(par=start1, fn=weed.f, mydata=weeds, upper=c(longZ,1),lower=c(0,0),method=c("L-BFGS-B","nlminb","Rcgmin","Rvmmin","spg"),control=list(save.failures=TRUE,maximize=F),) ## J'ai imposé des valeurs pour b1 et b2. ## j'obtiens l'erreur suivante: Error in optim(par = par, fn = ufn, gr = ugr, lower = lower, upper = upper, : non-finite finite-difference value [1]
J'ai déjà eu aussi ce type d'erreur:
Je sais qu'elle provient de mes paramètres d'initialisation et/ou de mes bornes imposées aux paramètres mais je ne comprends pas pourquoi ça ne fonctionne pas...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Error in optimx.check(par, optcfg$ufn, optcfg$ugr, optcfg$uhess, lower, : Infeasible point, no further tests
Si quelqu'un peut m'aider.
Si vous avez d'autres suggestions de packages pour ce type de problème, je suis également preneuse. Je cherchais également à le faire avec un algorithme de type Levenberg-Marquardt, mais je n'arrive pas à faire fonctionner la fonction du package minpack.LM qui me donne des résultats très étranges...
Merci à tous.
Partager