From: Ray Brownrigg <Ray.Brownrigg_at_mcs.vuw.ac.nz>

Date: Fri, 30 May 2008 08:20:00 +1200

R-help_at_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. Received on Thu 29 May 2008 - 20:24:35 GMT

Date: Fri, 30 May 2008 08:20:00 +1200

Did you copy-paste that error message?

*> optim(par=c(1,1), f3)
*

Error in f1(theta, theta1) : object "theta" not found

*>
*

You seem to be confusing your formal and actual parameters.

When you invoke f3 (within optim()), theta is not defined within f3().

On Fri, 30 May 2008, threshold wrote:

> 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_at_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.
*

R-help_at_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. Received on Thu 29 May 2008 - 20:24:35 GMT

Archive maintained by Robert King, hosted by
the discipline of
statistics at the
University of Newcastle,
Australia.

Archive generated by hypermail 2.2.0, at Mon 02 Jun 2008 - 06:30:39 GMT.

*
Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help.
Please read the posting
guide before posting to the list.
*