# [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.

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

--