2014-03-04 8 views
5

Ich habe das Gefühl, dass ich etwas sehr Offensichtliches verpasst habe, aber nach einer Stunde des Fidelns/Googelns kann ich das nicht zum Laufen bringen. Code:R- Optimx für Exponentialfunktion mit 2 Parametern - Funktion kann nicht bei ersten Parameterwerten ausgewertet werden

#Generate data from exponential model 

xdata<-seq_len(100) 
ydata<-2*exp(-2*(xdata+rnorm(100))) 

#Fit exponential model to data 
firstorder<-function(C0,k){ 
ynew<-C0*exp(-k*xdata) 
RMSE<-sum((ynew-ydata)^2,na.rm=TRUE) 
return(RMSE) 
} 

#Initial parameter values 
params<-c(1,1) 

#Optimize 
optimx(params,firstorder) 

Fehler in optimx.check (par, optcfg $ UFN, optcfg $ ugr, optcfg $ uhess, niedriger,: nicht funktionieren kann bei Anfangsparameter bewerten

ich eine Vielzahl von Möglichkeiten versucht, die Parameter-Eingang.

Antwort

8

Versuchen

optimx(params, function(x) firstorder(x[1], x[2])) 
+0

Es funktioniert! vielen Dank. So ist der Trick ein einziges Argument zu geben, ist zu optimx? – Pinemangoes

+0

Ja, das ist richtig. –

+0

Was wäre, wenn ich die Funktion um zwei Parameter erweitern möchte, die die zu verwendenden x- und y-Daten angeben? Also 'ersteOrdnung (C0, k, xdata, ydata) {'. Kann ich optimx weiterhin in Bezug auf die C0- und k-Parameter mit festen 'xdata, ydata' verwenden? – Pinemangoes