[ncl-talk] Help in saving values in looping

Andreas Chrysanthou eeac at leeds.ac.uk
Mon Jun 5 11:10:38 MDT 2017


There was one not insignificant thing I didn’t mention.

the regline_stats function for the b calculates  both the b(0) +b(1*)x of the linear regression, while the b95 calculates both the 2.5% and 97.5% regression coefficient confidence intervals.
So when it tries to save to that cell, there are two values for the @b and @b95.

That’s why I got the error of : "fatal:Dimension sizes on right hand side of assignment do not match dimension sizes of left hand side"

I only want the slope of the liner trend (b(1)) and my criterion if I need to save these values is that the confidence intervals should not be negative (that would probably need to be included in the if loop).
But I don’t know how to keep only one value of those pair of calculated stats.

Cheers,
Andreas


On 5 Jun 2017, at 17:17, Adam Phillips <asphilli at ucar.edu<mailto:asphilli at ucar.edu>> wrote:

Hi Andreas,
As there are singular values for reg_coef and trend_slope for each start and end time, I think it would be best to simply create a 3D array dimensioned (start_date, end_date,2), with the last dimension (0) = trend_slope and (1) representing reg_coeff. If you must have a 4-dimensional array then you should create an array that is dimensioned 22 x 22 x 2 x 2, but (:,:,1,0) and (:,:,0,1) will be missing. In the example below I show how to create both types of arrays:

finarr = new((/22,22,2/),typeof(value_test))
finarr!0 = "startyear"
finarr&startyear = ispan(1980,2001,1)
finarr!1 = "endyear"
finarr&endyear = ispan(1989,2010,1)
finarrZ = new((/22,22,2,2/),typeof(value_test))
finarrZ!0 = "startyear"
finarrZ&startyear = ispan(1980,2001,1)
finarrZ!1 = "endyear"
finarrZ&endyear = ispan(1989,2010,1)

do i=1980,2001,1
   do j=1989,2010,1
        ntimes=ispan(i,j,1)
        if (j-i .ge. 9 ) then
           test_rc=regline_stats(ntimes,value_test({i:j}))
           print(test_rc)
           start_date=i
           end_date=j
           finarr({i},{j},0) = test_rc at b*10  ; prints slope of the linear trend for the selected range of years
           finarr({i},{j},1) = test_rc at b95         ; prints 2.5% and 97.5% regression coefficient confidence intervals
           finarrZ({i},{j},0,0) = test_rc at b*10
           finarrZ({i},{j},1,1) =  test_rc at b95
       else
           print(“this age range has not been selected, since its less than 9 years")
       end if
       delete(ntimes)
   end do
end do

Hope that helps. If you have any further questions please respond to the ncl-talk email list.
Adam


On Mon, Jun 5, 2017 at 9:48 AM, Andreas Chrysanthou <eeac at leeds.ac.uk<mailto:eeac at leeds.ac.uk>> wrote:

Hi NCL users,


I created a loop for calculating a linear trend sensitivity for different start and end dates.

My timeseries span over 1980-2010 and I want to calculate the linear trend of the timeseries for when the start - end date are more than >= 9years.

(1980-1989, 1980-1990, 1980-1991,..., 1980-2010

1981-1990, 1981-1991, ..., 1981-2010

...

...

...

2000-2009, 2001-2010

2001-2010)


I’ve created the loops that calculate those values but I need to save them in an array as 4 different columns (start_date, end_date,trend_slope,reg_coeff)
My aim is to plot those as a a contour box plot with x axis the start date and y axis the end date, and the calculated (i’m gonna filter out those values with some criteria) trend values based on a colormap.

Can you help me in order to save the values to that new array so I can plot it?

A snippet of the code follows:

do i=1980,2001,1
   do j=1989,2010,1
        ntimes=ispan(i,j,1)
if (j-i .ge. 9 ) then
        test_rc=regline_stats(ntimes,value_test({i:j}))
        print(test_rc)
        start_date=i
        end_date=j
        trend_slope=test_rc at b*10  ; prints slope of the linear trend for the selected range of years
        reg_coeff=test_rc at b95         ; prints 2.5% and 97.5% regression coefficient confidence intervals
else print(“this age range has not been selected, since its less than 9 years")
    end if
      delete(ntimes)
end do
end do

Cheers,
Andreas









Andreas



_______________________________________________
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




--
Adam Phillips
Associate Scientist,  Climate and Global Dynamics Laboratory, NCAR
www.cgd.ucar.edu/staff/asphilli/<http://www.cgd.ucar.edu/staff/asphilli/>   303-497-1726

<http://www.cgd.ucar.edu/staff/asphilli>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20170605/b64cfde4/attachment.html 


More information about the ncl-talk mailing list