季节文档

季节估计与年度周期或时间序列相关的异常。

参见:deseason气候学sinefitSineval., 和sinefit_bootstrap

返回气候数据工具内容

内容

语法

[AS,TS] =季节(A,T)[AS,TS] =季节(......,'每日')[AS,TS] =季节(......,'月度')[AS,TS] =季节(......,'DEDREND',DEDRENDOPTION)[AS,TS] =季节(......,',',',',DIMENSION)AS =季节(......,'full')

描述

(ts) =季节(A、t)给出了时间序列的典型季节性(即年度)周期一个对应于次tdatenum或datetime格式。如果t是每天,产出ts是1到366和作为将包含一年中366天的平均值。如果输入是每月的,ts是1:12,作为将包含一年中12个月的平均值。

[如,TS] =季节(......,'每日')直接指定输入是每日分辨率。季节函数通常会自动计算出这一点,但如果您的数据中有很大的缺失间隙,您可能希望通过指定每日来确保正确的结果。

[如,TS] =季节(......,'每月')同上,但强制每月解决。

赛季(ts) =(…,“去趋势”,DetrendOption)指定确定季节异常的相对基线。选项是“线性”'二次',或“没有”.默认情况下,异常是在去除线性最小二乘趋势后计算的,但如果,例如,变暖是强烈的非线性,您可能更喜欢'二次'选择。默认是“线性”

[as,ts] =季节(...,'暗淡',尺寸)指定评估季节的维度。默认情况下,如果一个是1D,季节循环沿着非班车尺寸返回;如果一个是2D,季节是沿着维度1执行的(时间沿着行移动);如果一个是3D,季节沿尺寸3执行。

as =季节(...,'full')返回作为在整个时间序列一个.对于单独查看长时间序列的组件,这是一个方便的选择。

例1:单个时间序列

考虑这个时间序列。让我们称之为温度:

t =数据抑制(1979年1月1日的): datenum (2016年12月31日的);%正弦季节信号+变暖趋势+噪音+一些平均值:T = 4 * sin(机灵(T)'decimalyear')*2*pi) + (t-min(t))/5e3 + randn(size(t)) + 15;情节(t, t)轴紧的盒子离开dateTick('X''keeplimits'

你可以看到温度有一个季节性的循环,但随着时间的推移会逐渐变暖,也会有一些随机的干扰。为了更好地了解季节循环的结构,我们可以把相同的时间序列看作是日与年的函数do功能。我们也会使用cbdate函数格式化彩色栏日期。

图散射(机灵(t)、t、10 t,“填充”)轴紧的colorbar cbdate ('yyyy')xlabel.年的一天ylabel“温度”cmocean.amp.

你可以看到随着时间的推移而升高的温度,而是通过绘制作为一个函数do我们可以看到季节性周期的结构一点更好。现在我们是否希望将长期变暖的影响与季节性周期分开?

Ts =季节(T, T);图绘制(1:366 Ts)盒子离开紧的XLabel.年的一天ylabel“季节性温度循环”

上面我们看到了振幅为4度的季节周期,正如我们所定义的那样。一些噪音仍然存在,因为一年中的每一天代表38个噪音测量的平均值。尽管如此,这是我们对季节周期的最佳近似,而且非常接近。

例2:同时有多个时间序列

假设您有几行数据,每一行都包含不同的时间序列。数据可能是这样的(我们建立在时间序列上T从上面)

T2 = [T + (T -min(T))/2e3;T - 15 * cos(机灵(T)'decimalyear') * 2 *π)+ (t-min (t) / 1 e2;T + (t-min (T)) / 2.5 e3)。^ 3.1);图绘制(t, T2)轴紧的盒子离开dateTick('X''keeplimits')传说('T2'的第一行'' T2的第二行'' T2的第三行''地点''西北'传说)boxoff

这些时间序列的年循环是怎样的?使用季节,但指定维度2,因为每行T2包含一个时间序列。如果每列T2如果包含时间序列,则默认维度1就是我们想要的。

让我们也得到整个时间序列'满的'选项而不是默认日为1到366。

t2_full =季节(t2,t,'尺寸'2,'满的');图绘图(t,t2_full)轴([数据抑制('1995年1月1日')数据项('2010年1月1日')-16 16])盒子离开dateTick('X''keeplimits')传说('T2'的第一行'' T2的第二行'' T2的第三行''地点''西北'

上面我们看到季节提取了每个时间序列的季节周期T2.偶数第三行T2,它有一个长期趋势,规模为3.1的幂,使用默认的线性去趋势充分分析。但是,如果线性反趋势对于您的应用程序是不够的,则使用“去趋势”、“二次”让它更上一层楼。

消除季节性周期

为了方便起见,气候数据工具箱有一个deseason功能,但值得注意的是,那个deseason功能仅通过从原始信号中减去季节性组件来删除季节周期,如下所示:

T_deseasoned = T2 - T2_full;图绘制(t, T2)绘图(T,T_deseAssed)轴紧的盒子离开dateTick('X''keeplimits')传说('T2'的第一行'' T2的第二行'' T2的第三行''地点''西北'传说)boxoff

例3:真正的海冰数据

上面的示例使用了我们创建的一些人工数据。但这个函数如何应用于实际数据呢?让我们来比较一下北半球和南半球海冰范围的季节循环。以下是全职系列的内容:

负载Seaice_extent.图绘图(t,layer_n,“b”) 抓住情节(t, extent_S“r”)轴紧的盒子离开传奇('北''南''地点''西北'

那么海冰的典型年份是什么样的呢?

图绘制(季节(extent_N t),“b”) 抓住情节(季节(Layer_s,T),“r”)轴紧的盒子离开XLabel.年的一天ylabel(“海冰范围异常(10^6 km^2)”) ntitle (“典型的季节周期”)传说('北''南''地点''西北'

例4:网格化再分析数据

让我们探索海面温度的典型季节性周期。以下是维度的每月数据集60x55x802:

负载Pacific_sst.sst_season =季节(sst,t);

这给了我们sst_season,它是60x55x12,代表一年中每个月的一个60x55网格。以典型的最高和最低温度之间的差异来了解太平洋不同地区的季节强度:

T_range = max (sst_season[], 3)分钟(sst_season [], 3);图imagescn(lon,lat,T_range) cb = colorbar;ylabel (cb、'季节性周期(\ Circ C)的大小'')cmocean.amp.

这并不奇怪——季节性在两极附近和浅水区最强。

这个功能如何工作

默认情况下,季节功能从时间序列中删除线性趋势,然后通过对年度的每天(或月)的所有下降数据进行平均来确定时间序列的气候学。

对于每日数据来说,闰年是一个挑战。该函数通过对一年中第59天的所有数据进行平均,计算出2月28日的平均温度。但是3月1日怎么办呢?大多数年份的3月1日是一年的第60天,但每四年的3月1日是一年的第61天。

此功能将所有日期转换为一年中的一天,并根据年内的一天计算季节性周期。由于366天具有较少的年数,因此应用相同的平均所有数据从第366天的所有数据将使366日对异常值敏感。因此,对于第366天,季节功能平均每天365天,第366天和第1天的所有数据。

季节vs气候学

CDT有一个函数叫做季节和另一个函数称为气候学.唯一的区别是输出气候学包括变量的平均值,而输出季节均值总是0。因此,deseason功能消除了可变性的季节性成分,同时保持整体均值和趋势。

一般来说,CDT假设以次年度分辨率采样的变量的多年记录可以用

y = y_0 + y_tr + y_season + y_var + y_noise

在哪里

在这个模型中,

y_climatology = y_0 + y_season

还有其他定义季节性的方法

为另一种定义季节性的方法,看sinefitSineval., 和sinefit_bootstrap

作者信息

这个函数是乍得A. Greene.2017年7月德克萨斯地球物理学院大学地球物理学院学报(州)。