sinefit_bootstrap文档

sinefit_bootstrap对函数估计的参数执行自举分析sinefit.引导意味着应用sinefit函数到数据的一堆子样本,然后分析每个参数的解的分布,以查看解的鲁棒性。万博 尤文图斯

相关功能请参见sineval而且sinefit文档。

回到气候数据工具内容

内容

语法

ft = sinefit_bootstrap(t,y) ft = sinefit_bootstrap(…,'weight',weights) ft = sinefit_bootstrap(…,'terms',TermOption) ft = sinefit_bootstrap(…,'nboot',nboot) [ft,rmse,Nsamp] = sinefit_bootstrap(…)

描述

Ft = sinefit_bootstrap(t,y)拟合2项(振幅和相位)正弦到1000个随机子样本的时间序列t、y.输出英国《金融时报》是一个1000x2矩阵,分别包含振幅和相位的所有1000个解。万博 尤文图斯看到sinefit输入和输出的完整描述。

Ft = sinefit_bootstrap(…,'weight',w)对每个观察值应用加权y.例如,if形式错误犯错都与y,你可能会让W = 1 /err.^2.默认情况下,W = ones(size(y))

ft = sinefit_bootstrap(…,'terms',TermOption)指定在正弦拟合中计算哪些项。默认是2因为越多的项计算起来就越慢!TermOption可以是2、3、4或5:

Ft = sinefit_bootstrap(…,'nboot',nboot)指定引导样本的数量。默认是1000,这意味着正弦曲线适合数据的1000个随机子样本。

[ft,rmse,Nsamp] = sinefit_bootstrap(…)还返回残差的均方根误差分布(正弦曲线拟合数据的程度)和Nsamp,表示构成数据的每个子样本的数据点数。

例子

本例对海冰范围数据集的相位和振幅进行了自举分析。加载并绘制北半球海冰范围时间序列:

负载seaice_extent情节(t, extent_N)盒子ylabel北半球海冰范围(10^6 km^2)

这就像解读条形码一样。试着以一年中的一天为函数来绘制,以便更好地描绘季节周期。我用的是cbdate函数用于日期格式的颜色条。

图散射(天(t,“dayofyear”), extent_N 10 datenum (t)“填充”)轴盒子包含“一年中的一天”Cb = cbdate(“yyyy”);集(cb,“ydir”“反向”%翻转颜色条的方向

现在,sinefit函数可以同时估计该时间序列的振幅、相位、y截距和斜率;然而,每增加一项,计算就会变慢一点,而且sinefit_bootstrap要做一千次计算,为了简单起见,现在让我们去趋势化数据,只解出相位和振幅。去趋势时间序列是这样的:

y = dettrend (extent_N);图(t,y)框ylabel去趋势的西北海冰范围(10^6 km^2)

肉眼可以看到正弦波的振幅约为400万km^2,这是北半球海冰的范围,所以我们可以猜测它的最大值将在北半球冬末或春季。我们可以将2项正弦曲线拟合到完整的时间序列中,以得到比肉眼估计更好的结果:

sinefit (t, y)
Ans = 4.41 66.83

这两个数字,4.4和66.8,是正弦信号的振幅和正弦信号达到最大值的日子。也就是说,440万平方公里和第66天(3月7日)。但是这个解决方案有多健壮呢?使用sinefit_bootstrap将正弦曲线拟合到1000个海冰范围时间序列的随机样本中(这个解决方案大约需要20秒)

Ft = sinefit_bootstrap(t,y);Amp = ft(:,1);%振幅是ft的第一列相位= ft(:,2);% phase是ft的第二列

如果您有统计工具箱,则可以使用scatterhist显示振幅和相位解的分布。万博 尤文图斯否则,您可以将它们作为散点图绘制在2D中,并/或绘制数据单个分布的直方图:

scatterhist(阶段,amp)包含“正弦最大值日”ylabel振幅(10^6 km^2)

这些是非常紧密的簇。他们说正弦曲线的振幅和相位的拟合应该精确在大约

性病(amp)性病(阶段)
Ans = 0.01 Ans = 0.10

0.009 km^2和0.1天。这并不奇怪,考虑到我们有40年(40个周期)的非常好的采样(365个/周期)数据集,我们期望较高的准确性sinefit振幅和相位。但是如果你只有一些随机收集的数据点呢?你还能估计正弦吗?我的意思是:让我们把数据集精简到只有7个随机点:

% 7个随机数据点的指数:Ind = randi(length(y),[7 1]);将y和t修剪为这7个点:Y = Y (ind);T = T (ind);图绘制(t y“波”)轴盒子ylabel北半球海冰范围(km^2)

这看起来只是几个随机点。但是再一次,把它作为一年中的某一天的函数可以帮助我们了解sinefit必须与:

图散射(天(t,“dayofyear”), y, 60, datenum (t)“填充”)轴盒子包含“一年中的一天”colorbar cbdate (“yyyy”);

我们可以看到sinefit即使只有7个点,也可以近似正弦曲线。这7点不足为奇,sinefit得到的值仍然非常接近良好约束的4.4振幅,在第66.8天达到最大值

Ft = sinefit(t,y)
Ft = 4.84 68.09

这是这7点上方的正弦曲线:

持有情节(1:365 sineval(英国《金融时报》,1:365))

使用sinefit_bootstrap量化不确定性。

Ft = sinefit_bootstrap(t,y);图scatterhist(ft(:,2),ft(:,1)) xlabel“正弦最大值日”ylabel“振幅(公里^ 2)”Amp_uncertainty = std(ft(:,1)) phase_uncertainty = std(ft(:,2))
警告:拟合一个正弦小于一年的数据。这可能不是你想要的。Amp_uncertainty = 0.62 phase_uncertainty = 7.87

事实上,即使40年来只收集了7个数据点,sinefit可以估计振幅在约40万km^2内,相位在约7天内。

用户须知

一个简短的说明有关的所有参数估计sinefit:这些参数描述了最佳拟合正弦曲线,但这并不一定意味着它们完全描述了底层数据本身的行为。例如,就气候平均值而言,北半球海冰范围通常在第71天(3月12日)左右达到最大值,而sinefit最佳拟合正弦曲线的最大值出现在第66天(3月7日),这是因为海冰范围的真实行为比简单的正弦曲线更复杂。在你的工作中,一定要考虑真实行为和真实行为的1/年频率分量之间的差异。

作者信息

这个函数是气候数据工具箱Matlab.的sinefitsineval,sinefit_bootstrap函数和辅助文档是由德克萨斯大学地球物理研究所的Ch万博1manbetxad A. Greene编写的。