Ben Bolker bbolker at gmail.com
Tue Apr 12 19:24:05 CEST 2011

```chirine wolley <wolley.chirine <at> hotmail.com> writes:

>  Dear R-users, I would like to use optim( ) to minimize a function
> which depends on 4 parameters: 2 vectors, a scalar, and a matrix.
> And I have a hard to define the parameters at the beginning of the
> function, and then to call optim. Indeed, all the examples I have
> seen dont treat cases where parameters are not all real.  Here is my
> code, it doesnt work but its just to show you where is exactly my
> problem:

suppose the dimensions of X are (Xc,Xr)
and the dimensions of x3 (I can't easily figure out what they should
be) are (m,n)

> g=function(x,matrice)
> {
> x1 = x[1:Xc]         # 1st parameter x1 is a vector
> x2 = x[Xc+1]        # 2nd parameter x2 is real
x3 <- matrix(x[(Xc+2):(Xc+1+m*n)],nrow=m,ncol=n)
## be careful about column- vs row-encoding, possibly use byrow=TRUE

x4 <- x[(Xc+1+m*n+1):length(x)] #4th paramater is a vector

> res1=rep(0,nrow(X))
> res2=matrix(0,nrow=nrow(X),ncol=ncol(Y))
> for (i in 1:nrow(X))
> {
>  res1[i]=log(1/(1+exp(-t(x1)%*%X[i,]-x2)))
>  for (t in 1:ncol(Y))
>  {
>   res2[i,t]=log(((1+exp(-t(x3[,t])%*%X[i,]-x4[t]))/(sqrt(2*pi)))*
>   (exp(-0.5*((1+exp(-t(x3[,t])%*%X[i,]-x4[t]))*(1-Y[i,t]))^(2))))
>  }
> }
> sum(res1)+sum(res2)                # the function to minimize
> }
>

to call optim(), concatenate reasonable initial guesses for your
parameters. (I have no idea what 'c' is in your code below ...)

> opt=optim(c(alpha[,c+1],beta[c+1],w,gamma),g)
>    ### and how can we call optim ???

```