dtrend_msg
Estimates and removes the least squares linear trend of the rightmost dimension from all grid points (missing values allowed).
Prototype
function dtrend_msg ( x [*] : numeric, y : numeric, remove_mean [1] : logical, return_info [1] : logical ) return_val [dimsizes(y)] : numeric
Arguments
xOne-dimensional array containing the coordinate of the rightmost dimension of y. [eg: time].
yA multi-dimensional array or scalar value equal to the data to be detrended. The dimension from which the trend is calculated needs to be the rightmost dimension. This is usually time.
remove_meanA logical scalar indicating whether or not the mean is removed from return_val. True = remove mean, False = do not remove mean.
return_infoA logical scalar controlling whether attributes corresponding to the y-interscept and slope are attached to return_val. True = attributes returned. False = no attributes returned.
Return value
An array of the same size as y. Double if y is double, float
otherwise.
Two attributes (slope and y_intercept) may be attached to return_val if
return_info = True. These attributes will be one-dimensional arrays if
y is one-dimensional. If y is multi-dimensional, the
attributes will be the same size as y minus the rightmost dimension but in
the form of a one-dimensional array. e.g. if y is 45 x 34, then the
attributes will be a one-dimensional array of size 45*34. This occurs because
attributes can not be multi-dimensional. Double if return_val is double,
float otherwise.
You access the attributes through the @ operator:
print(return_val@slope) print(return_val@y_intercept)
Description
Estimates and removes the least squares linear trend of the rightmost dimension from all grid points. The mean is optionally removed. Missing values are allowed. Optionally returns the slope (eg, linear trend per unit time interval) and y-intercept for graphical purposes.
See Also
Examples
Example 1
Let x be one-dimensional with dimension time and y be three-dimensional with dimensions lat,lon, and time. The return_val will be three-dimensional with dimensions lat,lon, time. The mean is removed.
yDtrend = dtrend_msg (x,y,True,False)
Example 2
Same as example 1 but with the optional attributes. Let y be temperatures in units of K and the time dimension have units of months.
yDtrend = dtrend_msg (x,y,True,True)
; yDtrend@slope is a one-dimensional array of size nlat x nlon elements.
Since attributes can not be returned as two-dimensional arrays, the user should use onedtond to create a two-dimensional array for plotting purposes: will return an array
yDtrend = dtrend_msg (x,y,False,True) slope2D = onedtond(yDtrend@slope, (/nlat,mlon/) ) delete (yDtrend@slope) slope2D = slope2D*120 ; would give [K/decade] yInt2D = onedtond(yDtrend@y_intercept, (/nlat,mlon/) ) delete (yDtrend@y_intercept)Example 3
Let y be three-dimensional array with dimensions time, lat, lon. reorder y so that time is the rightmost dimension.
yDtrend = dtrend_msg(y&time,y(lat|:,lon|:,time|:),True,False) ; yDtrend will be three-dimensional with dimension lat, lon, time.