[R] Estimating parameters of 2 phase Coxian using optim
Laura Hill
lhill07 at qub.ac.uk
Thu Mar 8 11:25:15 CET 2007
On 7/3/07 00:15, "Gad Abraham" <g.abraham at ms.unimelb.edu.au> wrote:
> Andy Fugard wrote:
>> Hi There,
>>
>> Perhaps the problem is the line
>>
>> loglik<-log(p %*% expm(Q * y(i)) %*% q)
>>
>> You mention that y is a vector but here you're treating it as a
>> function. Maybe try
>>
>> loglik<-log(p %*% expm(Q * y[i]) %*% q)
>>
>> ?
>>
>> Don't have a clue about the correctness of the contents of cox2.lik...
>>
>> Andy
>>
>>
>> On 6 Mar 2007, at 08:54, Laura Hill wrote:
>>
>>> 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)
>>> }
>
> Just to add my 2 AU cents regarding the for loop:
>
> You're trying to create a vector of log likelihoods to sum up later, but
> that's not what's happening there. Instead, assign an empty vector of
> same length as y, then assign the loglik from each iteration to a
> different cell.
>
> Lastly, there's no need to return anything from a for loop, it's not a
> function.
>
> HTH,
> Gad
Hi Gad,
Yes that's exactly hat I am trying to do. If I gave you a simple example,
could you perhaps tell me how I could create a vector of log likelihoods.
Lets say I have 1x1 matrices:
p=[1]
Q=[0.05] i.e. [mu1]
q=[-0.05] i.e. [-mu1]
Where mu1 is the parameter that I would like to estimate and I have chosen
the initial value mu1=0.05
Loglik<-p %*% expm(Q*y) %*% q
Where y=(5 10)
I want to sum the log likelihoods that I get for y=5 and y=10 using
Sumloglik<-sum(allloglik)
Where allloglik = vector of log likelihoods
Any help would be greatly appreciated.
Thanks in advance
Laura
More information about the R-help
mailing list