# [R] convert ms() to optim()

Spencer Graves spencer.graves at pdf.com
Thu Jul 13 19:24:40 CEST 2006

Have you worked through the examples in the help pages for 'optim'
and 'nlminb'?  Also, 'nls', 'nlm', and 'mle{stats4}' provide related
capabilities.

If you'd like further help from this groups, please submit another
post.  To increase your chances of a quick, informative response, I
suggest you include a simple, self-contained example of something you
tried that didn't produce what you expected, as suggested in the posting
guide! "www.R-project.org/posting-guide.html".

Best Wishes,
Spencer Graves

Xiaodong Jin wrote:
>   How to convert the following ms() in Splus to Optim in R? The "Calc" function is also attached.
>
>   ms(~ Calc(a.init, B, v, off, d, P.a, lambda.a, P.y, lambda.y,
>   10^(-8), FALSE, 20, TRUE)\$Bic,
>   start = list(lambda.a = 0.5, lambda.y = 240),
>   control = list(maxiter = 10, tol = 0.1))
>
>   Calc <- function(A.INIT., X., V., OFF., D.,
>   P1., LAMBDA1., P2., LAMBDA2.,
>   TOL., MONITOR., MAX.ITER., TRACE.){
>   lambda1 <- abs(LAMBDA1.)
>   lambda2 <- abs(LAMBDA2.)
>   P <- lambda1 * P1. + lambda2 * P2.
>   a <- Estimate(A.INIT., X., V., OFF., D., P,
>   TOL., MONITOR., MAX.ITER.)
>   Ita <- OFF. + X. %*% a
>   Mu <- c(exp(Ita))
>   Wt <- Mu * V.
>   Bt.W.B <- t(X.) %*% (Wt * X.)
>   BtWBplusP <- Bt.W.B + P
>   Rhs <- Bt.W.B %*% a + t(X.) %*% (V. * (D. - Mu))
>   a <- solve(BtWBplusP, Rhs)
>   Tr <- sum(diag(solve(BtWBplusP, Bt.W.B)))
>   y.init <- D.
>   y.init[D.==0] <- 10^(-4)
>   Dev <- 2*sum( V. * D.*log(y.init/Mu) )
>   Bic <- Dev + log(sum(V.)) * Tr
>   Hazard <- Ita - OFF.
>   if (TRACE. == TRUE) cat(lambda1, lambda2, Bic, "\n")
>   return(a, Hazard, Tr, Dev, Bic, BtWBplusP)
>
>   Thanks,
>   Shelton
>
>
> ---------------------------------
>
> 	[[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help