Hi, thanks for your replay the previous post of mine. Let me ask you one more question similar to the previous one, based on a naive example:
f1<-function(theta, theta1) {theta[1]+theta[2]+theta1[1]} f2<-function(theta, x, theta1) {f1(theta, theta1)*exp(x)*theta1[2]} function to be optimized with respect to theta1: f3<-function(theta1) {f1(theta, theta1)-f2(theta,x,theta1)} optim(par=c(1,1), f3) If I do so I get: Error in f1(theta, theta1) : argument "theta1" is missing, with no default What I did wrong? I guess I miss something basic... Thanks in advance, robert Ray Brownrigg-2 wrote: > > On Wed, 23 Apr 2008, threshold wrote: >> Hi, here comes my problem, say I have the following functions (example >> case) #------------------------------------------------------------ >> function1 <- function (x, theta) >> {a <- theta[1] ( 1 - exp(-theta[2]) ) * theta[3] ) >> b <- x * theta[1] / theta[3]^2 >> return( list( a = a, b = b )) } >> #----------------------------------------------------------- >> function2<-function (x, theta) >> {P <- function1(x, theta) >> c <- P$a * x * exp(-theta[2]) >> d <- P$b * exp(x) >> q <- theta[1] / theta[3] >> res <- c + d + q; res} >> >> # Function to be optimized >> function3 <- function(theta1,theta2,theta3) { >> n <- length(data) >> -sum( function2(x = data[2:n], theta = c(theta1, theta2, theta3) ))} >> # 'data' is my input ts class object >> #-------------------------------------------------------------------------- >>------------ >> >> Then I want to maximize function3 with respect to theta(s) (given some >> starting values) >> >> fit<-optim(par=c(theta1=1, theta2=1.2, theta3=.2), fn=function3) >> >> I get the following: >> Error in function1(x, theta) : >> argument "theta2" is missing, with no default >> >> Where I made a mistake? I will appreciate any help ... >> >> r > > Your function to be optimised must be a function of a single parameter > (which > may be a vector). > > So you should have something like: > # Function to be optimized > function3 <- function(thetas) { > n <- length(data) > -sum( function2(x = data[2:n], theta = thetas)) > } > > [Not tested, your provided code has typos]. > > Ray > > ______________________________________________ > R-help@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. > > -- View this message in context: http://www.nabble.com/optimization-setup-tp16825410p17543578.html Sent from the R help mailing list archive at Nabble.com. ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.