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:
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]
Quelqu'un a-t-il déjà rencontré cette erreur ? Si oui, pourriez-vous m'aider ?

J'ai déjà eu aussi ce type d'erreur:
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
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...

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.