[ADMB Users] 3d ragged array with RE

Mollie Brooks mbrooks at ufl.edu
Mon Feb 20 20:56:09 PST 2012


Sorry for wasting your time. 
Weihai Liu found my mistake. I was missing the column indices in my matrix definition dvar_matrix temp_varcov(2,nobs(p));

Mollie

On 20 Feb 2012, at 4:04 PM, Mollie Brooks wrote:

> Hi,
> I'm tying to figure out a way to work around not being able to use a ragged array in my random effects model. I've tried 2 alternatives and run into problems with each.
> 
> I had been using an object 
> 3darray varcov(1,nponds,2,nobs,2,nobs)
> to store the variance covariance matrix for the observations of all the ponds. nobs is an ivector of length nponds. I got that matrix out as varcov(p).
> 
> ALTERNATIVE 1
> I tried making a large 3d array that was large enough to cover the various sizes
> 3darray varcov(1,nponds,2,maxobs,2,maxobs)
> To access each submatrix, I tried to use the command varcov(p).sub(2,nobs(p)), but got an error that this is not defined for df1b2 arrays.
> 
> ALTERNATIVE 2
> Then I tried not defining any varcov array in the parameter section. Instead, in the procedure section, I define 
> dvar_matrix temp_varcov(2,nobs(p));
> calc_temp_varcov(p,temp_varcov); # a function to fill in the values of temp_varcov
> 
> The program stops in the middle of calc_temp_varcov without any errors. It stops on the line where I try to store a calculated value in temp_varcov(2,l). See code below. All of the calculations that go into it look fine.
> 
> I've also tried the function definition 
> FUNCTION void calc_temp_varcov(const int & p, dvar_matrix & temp_varcov)
> 
> 
> FUNCTION void calc_temp_varcov(const int & p, dvar_matrix temp_varcov)
> 	cout<<"nobs(p)="<<nobs(p)<<endl;
> 	for(int l=2; l<=nobs(p); l++)
> 	{
> 		cout<<pow(rho, 2*column(tk_minus_b(p),2)(obsdates(1,p)+1,obsdates(l,p)))<<endl;
> 		cout<<sum(pow(rho, 2*column(tk_minus_b(p),2)(obsdates(1,p)+1,obsdates(l,p))))<<endl;
> 		temp_varcov(2,l)=sigmaSq*sum(pow(rho, 2*column(tk_minus_b(p),2)(obsdates(1,p)+1,obsdates(l,p))));
> 		cout<<"not ok here"<<endl;
> 		temp_varcov(l,2)=temp_varcov(2,l);
> 	}	
> 
> 
> Any idea how to make either of these alternatives work? Or any other ideas?
> thanks,
> Mollie
> 
> 
> Mollie Brooks
> Ph.D. Candidate
> NSF IGERT Fellow
> Biology Department
> University of Florida
> mbrooks at ufl.edu
> http://people.biology.ufl.edu/mbrooks
> 
> 
> 
> 
> On 8 Feb 2012, at 2:03 PM, Hans J. Skaug wrote:
> 
>> Hi,
>> 
>> You can of course use a matrix that is large enough to "cover"
>> your ragged if it is fairly homogeneous.
>> 
>> I registered in Redmine again, so I added the issue.
>> 
>> Hans
>> 
>>> -----Original Message-----
>>> From: Mollie Brooks [mailto:mbrooks at ufl.edu]
>>> Sent: Wednesday, February 08, 2012 7:46 PM
>>> To: H. Skaug
>>> Cc: ADMB Users
>>> Subject: Re: [ADMB Users] 3d ragged array with RE
>>> 
>>> Thanks Hans,
>>> I'll try to figure out how to work around it.
>>> 
>>> My redmine account also seems to not be working at the moment. Maybe
>>> redmine is broken.
>>> 
>>> Mollie
>>> 
>>> 
>>> On 8 Feb 2012, at 3:09 AM, H. Skaug wrote:
>>> 
>>>> Hi,
>>>> 
>>>> You are probably right: 3d ragged arrays are not implemented for random
>>> effects.
>>>> I have never tried, but it would be nice if things works uniformly across the
>>>> RE and non-RE versions.
>>>> 
>>>> Can you create a Redmine issue (my account is not working at the moment).
>>>> 
>>>> Hans
>>>> 
>>>> 
>>>> 
>>>> On Wed, Feb 8, 2012 at 1:24 AM, Mollie Brooks <mbrooks at ufl.edu> wrote:
>>>>> Hi,
>>>>> I was running a model without any random effects and it was working fine.
>>> Now I need to change it to include random effects.
>>>>> 
>>>>> I'm getting an error on the line where I used to be able to allocate a 3d
>>> ragged array.
>>>>> 
>>>>> This is the error
>>>>> pond.cpp:765: error: no matching function for call to
>>> 'df1b23array::allocate(int, data_int&, int, data_int&, int, data_ivector&, const
>>> char [11])'
>>>>> 
>>>>> This is the line in the cpp file
>>>>> tk_minus_b.allocate(1,nponds,1,ndays,1,nobs,"tk_minus_b");
>>>>> 
>>>>> This seems to be the line in the tpl file
>>>>> 3darray tk_minus_b(1,nponds,1,ndays,1,nobs)//(p,b,k)
>>>>> 
>>>>> nobs is an ivector with length=nponds
>>>>> 
>>>>> Are ragged arrays not available with random effects?
>>>>> 
>>>>> thanks,
>>>>> Mollie
>>>>> 
>>>>> Mollie Brooks
>>>>> Ph.D. Candidate
>>>>> NSF IGERT Fellow
>>>>> Biology Department
>>>>> University of Florida
>>>>> mbrooks at ufl.edu
>>>>> http://people.biology.ufl.edu/mbrooks
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> _______________________________________________
>>>>> Users mailing list
>>>>> Users at admb-project.org
>>>>> http://lists.admb-project.org/mailman/listinfo/users
>>>> 
>> 
>> 
> 
> _______________________________________________
> Users mailing list
> Users at admb-project.org
> http://lists.admb-project.org/mailman/listinfo/users
> 




More information about the Users mailing list