[ncl-talk] regression with lag
Kevin Hallock
hallock at ucar.edu
Tue Oct 3 16:15:15 MDT 2017
Hi,
I think there might be an issue with the P1 variable passed as an argument to regline(). The documentation for the regline() function <https://www.ncl.ucar.edu/Document/Functions/Built-in/regline.shtml> indicates that both arguments should be 1-dimensional arrays of the same length, although in your code P1 is being passed as a 3-dimensional array. You may want to try something like this:
dims_P1 = dimsizes(P1)
do a=0,dims_P1(0)-1
do b=0,dims_P1(1)-1
do n=0,nlagr-1
Regdata(a,b,n) = regline(x(0:Nend-n-yLag), P1(a,b,yLag+n:Nend))
end do
end do
end do
Kevin
> On Oct 3, 2017, at 2:58 AM, Sancta Vega <sanctavega at gmail.com> wrote:
>
> Hi Kevin thank you for your suggestion.
> I don't want value of n to increase by 2 every loop iteration but normally from 0 to 20 in order to get 21 as "nlagr".
>
> I removed the "n=-1" and "n=n+1" but still getting same error as before.
> do n=0,nlagr-1
> Regdata(:,:,n) =regline(x(0:Nend-n-yLag), P1(:,:,yLag+n:Nend))
> end do ;
>
> 2017-10-03 1:44 GMT+02:00 Kevin Hallock <hallock at ucar.edu <mailto:hallock at ucar.edu>>:
> Hi,
>
> I noticed in your code’s do-loop that you’re incrementing n independently of the loop.
>
> If you modify the loop to include “print(n)”:
> do n=0,nlagr-1
> n = n+1
> print(n)
> Regdata(:,:,n) =regline(x(0:Nend-n-yLag), P1(:,:,yLag+n:Nend))
> end do ;
>
> you can see that the only values of “n” used in the “Regdata(:,:,n) =…” line are (/1,3,5,7,9,11,13,15,17,19,21/), because n is being incremented by both the loop structure itself and the “n = n+1” line.
>
> If this is intentional and you want your value of n to increase by 2 every loop iteration, you could cleanly write this by adding a third comma-separated value on the “do n=“ line, for example:
> do n=0,nlagr-1,2
> print(n)
> end do
>
> Otherwise, you might want to try removing the “n = n+1” line and rerunning your script.
>
> Regarding the subscript error you experienced, I believe that the final 21 value mentioned above is causing the error you’re seeing, as the third dimension of Regdata is “nlagr” elements long — 21 in this case, with valid indices ranging from 0 to 20, inclusive.
>
> I hope this helps,
> Kevin
>
>> On Oct 2, 2017, at 8:25 AM, Sancta Vega <sanctavega at gmail.com <mailto:sanctavega at gmail.com>> wrote:
>>
>> according to this answer https://www.ncl.ucar.edu/Support/talk_archives/2013/2968.html <https://www.ncl.ucar.edu/Support/talk_archives/2013/2968.html>
>>
>> I need the 10 positive and negative lag regression of my data x(time), P1(lat,lon,time) but I dont loop trough lat lon .
>>
>> This is my code :
>>
>> dim_s = dimsizes(P1) ;;;
>> Nend = 5000 ; length of x
>> nlagr= 21 ; +- 10 lag
>> yLag = 10
>>
>> Regdata = new((/dim_s(0),dim_s(1),nlagr/),"float")
>>
>> n=-1
>> do n=0,nlagr-1
>> n= n+1
>> Regdata(:,:,n) =regline(x(0:Nend-n-yLag), P1(:,:,yLag+n:Nend))
>> end do ;
>>
>>
>> This give me an error :
>> fatal:Subscript out of range, error in subscript #2
>> fatal:An error occurred reading P1
>>
>> I try to replace regline by regCoef and get the same error message.
>>
>> Thanks in advance!!
>>
>> _______________________________________________
>> ncl-talk mailing list
>> ncl-talk at ucar.edu <mailto:ncl-talk at ucar.edu>
>> List instructions, subscriber options, unsubscribe:
>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk <http://mailman.ucar.edu/mailman/listinfo/ncl-talk>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20171003/d94d2994/attachment.html>
More information about the ncl-talk
mailing list