[R] Estimating parameters of 2 phase Coxian using optim

Laura Hill lhill07 at qub.ac.uk
Tue Mar 6 09:54:03 CET 2007


Hi,

My name is Laura. I'm a PhD student at Queen's University Belfast and have
just started learning R. I was wondering if somebody could help me to see
where I am going wrong in my code for estimating the parameters [mu1, mu2,
lambda1] of a 2-phase Coxian Distribution.

cox2.lik<-function(theta, y){
    mu1<-theta[1] 
    
    mu2<-theta[2]
    
    lambda1<-theta[3]
    
    p<-Matrix(c(1, 0), nrow=1, ncol=2)
    
    Q<-Matrix(c(-(lambda1 + mu1), 0, lambda1, -mu2), nrow=2, ncol=2)
    
    q<-Matrix(c(mu1, mu2), nrow=2, ncol=1)
    
    for (i in 1:length(y)){
        loglik<-log(p %*% expm(Q * y(i)) %*% q)
    return(loglik)}
        
    sumloglik<-sum(loglik)
    
    return(-sumloglik)
    }

I have installed the Matrix package. y is a vector of 240 survival times. In
the R console I typed

> source("/private/var/automount/users/lhill07/Desktop/cox2.lik.R")

> optim(c(0.5, 0.5, 0.5), cox2.lik, y=y, method="BFGS")

Error: could not find function "y"

Error in expm(Q * y(i)) : error in evaluating the argument 'x' in selecting
a method for function 'expm'

Error in log(p %*% expm(Q * y(i)) %*% q) :
    error in evaluating the argument 'x' in selecting a method for function
'log'


I'm sorry if I have missed something really obvious and I would appreciate
any help that is offered. Hopefully I have given enough information.

Many thanks in advance,

Laura



More information about the R-help mailing list