[R] optimization setup

ctu at bigred.unl.edu ctu at bigred.unl.edu
Thu May 29 21:30:31 CEST 2008


Hi,
I think Ray has answered this question in the previous e-mail.
Because optim can only use one single parameter thus you can not have  
the parameters: theta, theta1 and x at the same time.

such as:
f1<-function(theta)
{theta[1]+theta[2]}

f2<-function(theta)
{f1(theta)*3}


f3<-function(theta)
{f1(theta)-f2(theta)}
optim(par=c(1,1), f3)

Chunhao


Quoting threshold <r.kozarski at gmail.com>:

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



More information about the R-help mailing list