[ADMB Users] parameterization of Cholesky factor

Saang-Yoon shyunuw at gmail.com
Wed Nov 12 09:58:23 PST 2014


Hi, Dr. Fournier.
I elaborate my question below.   Following your Cholesky factor, 

  L =            1                               0                   
        0

             r/sqrt(1+r*r)           1/sqrt(1+r*r)                   0
 
                  0                       s/sqrt(1+s*s)       
1/sqrt(1+s*s)      


we will see its resultant correlation matrix will be:

 Cmat =          1                           r/sqrt(1+r*r)          
                  0

                  r/sqrt(1+r*r)                        1                  
         s/sqrt( (1+r*r)*(1+s*s))

                       0                       s/sqrt( 
(1+r*r)*(1+s*s))               1


I understand your Cholesky factor, L.   But I wonder about *how* you came 
up with L first.  Usually we have a positive definite matrix (e.g., Cmat), 
*and then* we can get its Cholesky factor.   My parameterization below 
follows such a standard step.   But your brilliant ideas is opposite to the 
standard step.   Again thank you very much.
Saang-Yoon



On Tuesday, November 11, 2014 6:10:46 PM UTC-5, Saang-Yoon wrote:

> Hi, Dr. Fournier.
> I changed the subject to "parameterization of Cholesky factor".    
> Although your parameterization works, I wonder about how you got it, 
> because it is different from the standard method.   What I mean with 
> "standard" method is:
>
> Cmat  =   1       r     0   
>                r       1      s
>                0       s      1
> where Cmat is a correlation matrix in my TPL.    
>
> To make sure that "L*trans(L) = Cmat,"  L must be 
>
> L  =     1                        0                           0
>            r               sqrt(1-r*r)                       0
>            0            s/sqrt(1-r*r)         sqrt(1-r*r-s*s)/sqrt(1-r*r)
>
>
> When I implemented this Cholesky factor (which is what I got from the 
> standard method), I fail to get COR file.   My core question is how you got 
> the following:
>
> L =        1                               0                           0
>
>           r/sqrt(1+r*r)         1/sqrt(1+r*r)                   0
>  
>             0                       s/sqrt(1+s*s)       1/sqrt(1+s*s)      
>
>
> Again thank you very much for your help.
> Saang-Yoon
>
> On Tuesday, November 11, 2014 12:07:04 PM UTC-5, Saang-Yoon wrote:
>
>> Dr. Fournier.   Yes, it runs!!!  GREAT!!!  Thank you very much for your 
>> help.
>> Saang-Yoon
>>
>> On Tuesday, November 11, 2014 10:36:09 AM UTC-5, dave fournier wrote:
>>
>>>  On 11/10/2014 09:23 PM, Saang-Yoon wrote:
>>>  
>>>  Hi, Dr. Fournier and Hans.
>>> Attached are two TPL files:
>>> (1)  ssmbr3v3.TPL, which is based on Hans' link below (i.e., the page in 
>>> the ADMB manual).
>>>  (2)  ssmbr3v4.TPL, which is based on Dr. Fournier's suggestion below.
>>> Although both files still fail to generate its corresponding COR file, 
>>>  the 1st TPL (i.e., ssmbr3v3.TPL) is better than the 2nd TPL (i.e., 
>>> ssmbr3v4.TPL).    Would you mind checking those attached TPL files?    FYI, 
>>> following are the command for run: 
>>>
>>>  admb -r -s ssmbr3v3.tpl
>>> ssmbr3v3 -ind simdataall2.dat -ainp ssmbr3v3.pin -phase 3 -noinit
>>>  
>>> admb -r -s ssmbr3v4.tpl
>>> ssmbr3v4 -ind simdataall2.dat -ainp ssmbr3v4.pin -phase 3 -noinit
>>>
>>>  Again thank you very much.
>>> Saang-Yoon
>>>  
>>>
>>> The code for the choleski factor should look more like this.
>>> I changed both and the model runs fine.
>>>
>>>
>>>  dvar_matrix L(1,nages,1,nages);       // Cholesky factor
>>>   L.initialize();
>>>   L(1,1)=1;
>>>   L(2,1)=rp/sqrt(1+rp*rp);
>>>   L(2,2)=1/sqrt(1+rp*rp);
>>>   L(3,2)=sp/sqrt(1+sp*sp);
>>>   L(3,3)=1/sqrt(1+sp*sp);
>>>
>>> However the bounds on rp and ro are probably not what you want.
>>>
>>>
>>>
>>>
>>>  
>>>  
>>> On Thursday, November 6, 2014 10:30:11 AM UTC-5, Hans wrote:
>>>
>>>> See also: 
>>>>
>>>>  
>>>> http://www.admb-project.org/examples/admb-tricks/parameterization/covariance-matrices/covariance-matrices
>>>>  
>>>>  Hans
>>>>  
>>>> On Thu, Nov 6, 2014 at 4:23 PM, dave fournier <da... at otter-rsch.com> 
>>>> wrote:
>>>>
>>>>>  On 11/05/2014 05:10 PM, Saang-Yoon wrote:
>>>>>
>>>>> As I said, you should work with the Choleski decomposition of the 
>>>>> correlation matrix.
>>>>>
>>>>> In the simple 3x3 case your conditions imply that  it is determined by 
>>>>> 2 parameters
>>>>>
>>>>> r and s   with bounds a and b such that   a<=r<=b.  You get a and b by 
>>>>> solving
>>>>>
>>>>>      0.0<=     r/sqrt(1+r*r)  <=0.7
>>>>>  
>>>>> The matrix is
>>>>>
>>>>>     1                               0                           0
>>>>>
>>>>>      r/sqrt(1+r*r)    1/sqrt(1+r*r)                0
>>>>>
>>>>>       0                     s/sqrt(1+s*s)    1/sqrt(1+s*s)      
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>   Hi, Dr. Fournier and others.  
>>>>> I made some progress.   Exploring many possibilities, I found that the 
>>>>> following assumptions help, but there is still a concern.
>>>>> (Assumption 1) Three age classes are not from the same cohort, and 
>>>>> thus age class 1 and 3 are presumed to be independent.    Thus I fix the 
>>>>> correlation coefficient between age class 1 and 3 as zero.  
>>>>> (Assumption 2) If there is a correlation between neighbor age classes 
>>>>> (e.g., "1 vs. 2", and "2 vs. 3"), the correlation should be positive (i.e. 
>>>>> autocorrelation over the years).    Thus I set bounds of correlation 
>>>>> between those neighbor classes to be positive: (e.g.,  init_bounded_number 
>>>>> corp12(0.0,0.7,3);  )
>>>>>
>>>>>  Then now I have the resultant COR file (i.e., convergence was 
>>>>> made).  It was good news, but the estimates of correlation coefficients 
>>>>> between neighbor age classes are stuck to the uppder bound, 0.7.  If I 
>>>>> allow a wide bound (e.g., init_bounded_number corp12(0.0,0.9,3); ), then I 
>>>>> failed to get positive definite matrices.  
>>>>>
>>>>>  admb -r -s ssmbr3v4.tpl 
>>>>> ssmbr3v4 -ind simdataall2.dat -ainp ssmbr3v3.pin -phase 1 -noinit 
>>>>>
>>>>>  Any advice would be appreciated.    Best Wishes,
>>>>> Saang-Yoon
>>>>>
>>>>> On Tuesday, November 4, 2014 6:30:56 PM UTC-5, dave fournier wrote:
>>>>>
>>>>>>  On 11/04/2014 02:58 PM, Saang-Yoon wrote:
>>>>>>
>>>>>> Hmm.  Well its like this. Pick a number between -infinity and + 
>>>>>> infinity. Why would you expect that it would need to be positive.
>>>>>>
>>>>>> or a matrix like
>>>>>>
>>>>>>   1 .9 .9
>>>>>> .9 1 -.50
>>>>>> .9 -.50 1
>>>>>>
>>>>>> If you check you will see that just like -1 is negative, this matrix 
>>>>>> is not positive definite.
>>>>>>
>>>>>> What you should be asking is how does one parameterize the positive 
>>>>>> definite matrices in a
>>>>>> nice way to do nonlinear parameter estimation.  
>>>>>>
>>>>>>
>>>>>>
>>>>>>   Hi, Dr. Fournier.   Thank you very much for your reply.   Attached 
>>>>>> is models that reflect the TPL code.   At the moment, I have no clue about 
>>>>>> why the covariance matrix is not positive definite.    
>>>>>> Saang-Yoon
>>>>>>
>>>>>> On Monday, November 3, 2014 2:58:49 PM UTC-5, dave fournier wrote:
>>>>>>
>>>>>>> What makes you think the covariance matrix will be positive definite 
>>>>>>> with your parameterization?
>>>>>>>
>>>>>>> On Sunday, November 2, 2014 5:49:50 PM UTC-8, Saang-Yoon wrote: 
>>>>>>>>
>>>>>>>>  Hi.   There was no error in compile-link for the attached TPL 
>>>>>>>> file; i.e., I got its executable file.    However, I fail to get 
>>>>>>>> convergence results.     Would you mind checking the TPL? 
>>>>>>>> Following are commands for runs.   
>>>>>>>>
>>>>>>>>  admb -r -s ssmbr3v4.tpl
>>>>>>>> ssmbr3v4 -ind simdataall2.dat -ainp ssmbr3v3.pin -phase 1 -noinit
>>>>>>>> ssmbr3v4 -ind simdataall2.dat -ainp ssmbr3v3.pin -phase 9 -noinit
>>>>>>>>
>>>>>>>>  Thank you.
>>>>>>>> Saang-Yoon
>>>>>>>>  
>>>>>>>   -- 
>>>>>> You received this message because you are subscribed to the Google 
>>>>>> Groups "admb-users" group.
>>>>>> To unsubscribe from this group and stop receiving emails from it, 
>>>>>> send an email to admb-users+... at googlegroups.com.
>>>>>> To post to this group, send email to admb-... at googlegroups.com.
>>>>>> Visit this group at http://groups.google.com/group/admb-users.
>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>
>>>>>>
>>>>>>     -- 
>>>>> You received this message because you are subscribed to the Google 
>>>>> Groups "admb-users" group.
>>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>>> an email to admb-users+... at googlegroups.com.
>>>>> To post to this group, send email to admb-... at googlegroups.com.
>>>>> Visit this group at http://groups.google.com/group/admb-users.
>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>
>>>>>  
>>>>>
>>>>>  -- 
>>>>> You received this message because you are subscribed to the Google 
>>>>> Groups "admb-users" group.
>>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>>> an email to admb-users+... at googlegroups.com.
>>>>> To post to this group, send email to admb-... at googlegroups.com.
>>>>> Visit this group at http://groups.google.com/group/admb-users.
>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>
>>>>  
>>>>   -- 
>>> You received this message because you are subscribed to the Google 
>>> Groups "admb-users" group.
>>> To unsubscribe from this group and stop receiving emails from it, send 
>>> an email to admb-users+... at googlegroups.com.
>>> To post to this group, send email to admb-... at googlegroups.com.
>>> Visit this group at http://groups.google.com/group/admb-users.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>>
>>>  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.admb-project.org/pipermail/users/attachments/20141112/904272f8/attachment-0001.html>


More information about the Users mailing list