sinefit文件

sinefit适合最小二乘估计正弦曲线的,以有1年的周期时间序列数据。

对于相关的功能,请参阅Sineval.sinefit_bootstrap文档。

返回气候数据工具内容

内容

句法

英尺= sinefit(T,Y)FT = sinefit(..., '重量',权重)英尺= sinefit(..., '术语',TermOption)[英尺,RMSE = sinefit(...)

描述

英尺= sinefit(T,Y)适合1年的周期来输入数据的正弦曲线y在时代收集T.。输入时间可在datenum,日期时间,或datestr格式,并且不需要定期进行采样。输出FT.包含下面描述的计算中术语的系数。

英尺= sinefit(..., '体重',w)的适用加权每个观察y。例如,如果正式的错误与关联y,你可能让w = 1./ERR.^2。默认情况下,W =酮(大小(Y))

ft = sinefit(...,'条款',termoption)指定在正弦贴合中计算的术语。TermOption可以是2,3,4,或5:

[英尺,RMSE = sinefit(...)返回的残差的根均方误差y去除正弦贴合后。这是正弦曲线符合数据的程度的一种尺寸,但对于对不确定性的更深入的了解,包括在时机中的不确定性,见sinefit_bootstrap

实施例1a:适合正弦玩具数据

在此示例中,我们将构成一些具有已知参数的数据,然后使用sinefit以适应正弦曲线的数据。让我们假设你有2005年1月1日和今天之间采取100次测量。用Sineval.以产生75单位幅度的sinudoid,具有上每年123天最大值(7月5日),以及长期线性每年-2.2单位的趋势。注意Sineval.我们还必须进入一个有些奇怪的值5E3.,这仅仅是在一年零截距,但不是在21世纪非常有意义给我们。

为了让更多的挑战了sinefit,我们还将增加具有36个单位标准偏差的高斯噪声。(这是相对于正弦曲线75单元幅度的明显噪声。)

2005年1月1日,今天%之间的100个随机日期:t =数据抑制(“2005年1月1日”)+(现在-datenum(“2005年1月1日”))*兰特(100,1);振幅75的%正弦曲线;最多123天(7月5日);趋势-2.2单位/年:sine_parameters = [75 123 5E3 -2.2];ERR = 36 * randn(大小(T));%随机误差Y = sineval([75 123 5E3 -2.2],T)+ ERR;%正弦+噪声%绘制100个数据点:图(之一)图(T,Y,'o')轴紧的%去除空白盒子离开%删除框架dateTick('X''keeplimits'%格式X日期标签

不管你信不信,该数据集是正弦曲线。它更容易看到正弦性质,如果我们使用绘制所有数据作为一年中的哪一天功能:

图(之二)图(DOY(T)中,Y,'o')轴紧的盒子离开XLabel.“今年的日子”

在这个玩具数据集中,我们知道我们应该有一个幅度为75个单位的正弦问题,第123天的最大值,每年的长期趋势为-2.2单位。并且由于我们有意添加了36个单位的高斯噪声,我们知道正弦曲面应将“测量”与大约36个单位的误差匹配。

[ft,ft_error] = sinefit(t,y,“条款”4)
FT = 1.0E + 03 * 0.0864 0.1186 7.6751 -0.0035 ft_error = 33.9327

上面的数字告诉我们sinefit已经确定了我们100个嘈杂的数据点的特征是一个具有幅度的正弦曲线FT(1)我们看到的单位接近规定的75个价值,最大值在今年第123天附近,每年的线性趋势约为-2.2单位。可选的第二个输出sinefit功能告诉我们正弦曲线与“测量”匹配到1-Sigma不确定性ft_error,这是在与高斯噪声的规定值一致。

这里是正弦曲线拟合数据:

%的从第一数据点到最后一个次每日数组:t_daily =分钟(T):最大(T);%的日常分辨率拟合正弦曲线:y_daily = sineval(ft,t_daily);图1)%又回到了第一个图抓住plot(t_daily,y_daily)

示例1b:指定权重

假设你知道每个观测相关的正式错误y。一些测量与它们相关的不确定性比其他测量更高。来自矢量我们以上使用以规定噪音,我们将重视每个观察y像这样:

W = 1./err.^2;图散射(DOY(T)中,Y,25,W,'填充')轴紧的XLabel.“今年的日子”CB =彩色杆;ylabel(CB,'重量')cmocean('amp')CAXIS([0 0.01])

上图表明,我们为具有较低错误的值提供更多权重。现在使用sinefit与指定的权重:

英尺= sinefit(T,Y,'重量',w,“条款”4)
FT = 1.0E + 03 * 0.0764 0.1233 5.1464 -0.0023

与未加权的解决方案相比,您将看到此版本产生稍微准确的系数。

例1C:更不确定性量化

对于正弦曲线拟合不确定性的更深入的分析,检查出sinefit_bootstrap,它可以为这样的每个参数提供1-sigma的不确定性(给它几秒钟):

FTB = sinefit_bootstrap(T,Y,“条款”4);每个参数的%1 sigma不确定性:STD(FTB)
ANS = 1.0E + 03 * 0.0055 0.0029 1.6112 0.0008

这告诉我们sinefit应准确为振幅的约5 1-Σ水平(比较FT(1)在规定幅度证实这一点);定时应在约4天准确;而且这种趋势应该是在大约每年1单元的精确。

实施例2:适合的正弦曲线,以实海冰数据

让我们来看看一些真正的海冰数据nsidc.。我已经打包在.MAT格式的时间序列海冰范围,并列入本文件交换上传这样你就可以跟着一起:

%负载的示例数据:加载seaice_extent.%绘制原始数据:图图(T,extent_N)保持紧的盒子离开ylabel.'NH海冰范围(10 ^ 6公里^ 2)'

非常清楚,数据在1 / YR频率下对其进行了一些周期性。北半球海雪范围在亚地金属尺度上有多少变化,它何时通常达到最大值,以及海冰在长期趋势方面变化多少?

%适合的正弦波:FT = sinefit(T,extent_N,“条款”4)
ft = 4.4079 66.8394 125.2987 -0.0569

类似于实施例1,的输出sinefit告诉我们北极海冰往往每年往往达到44.1亿平方公里,最多左右66天(3月7日)(见下文),自1978年以来,北半球海冰已下降60,000平方公里。

下面是绘制在原始数据的顶部的正弦曲线拟合:

抓住图(t,sineval(ft,t))图例('原始数据'“适合的sinefit”

而在有些放大看结构:

XLIM([日期时间(1995,1,1)日期时间(2000,1,1)])

向用户注意事项

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

实施例3:数据立方体

此功能仍在测试中,但这是我正在使用的代码来测试它:

加载Pacific_sst.FT = sinefit(吨,SST,“条款”,3);图形子图(1,3,1)ImagesCN(LON,LAT,FT(:,:,1))标题“正弦振幅”cmocean.amp.CB =彩色杆;ylabel(CB,'季节性幅度\ circc')轴图片副区(1,3,2)imagescn(LON,LAT,英尺(:,:,2))标题'正弦阶段'cmocean.阶段CAXIS([1 365])CB =彩条;ylabel(CB,“最高温度的月份”)CBDATE(CB,'mmm')轴图片副区(1,3,3)imagescn(LON,LAT,英尺(:,:,3))标题'平均温度'cmocean.热的CB =彩色杆;ylabel(CB,'平均温度')轴图片

上面没有什么太令人吃惊:浅水区拥有全年超过深水更多的耐温变性,一切都在赤道附近是几乎没有季节性。中间面板告诉我们,最温暖的水域发生在八月或九月在北半球,还是在二月或者三月南半球。第三面板仅仅是恒定的偏移,其是有效的平均海平面表面温度。

作者信息

此功能的一部分气候资料MATLAB工具箱。这sinefitSineval., 和sinefit_bootstrap职能以及支持文件是由乍得A. Greene的地球物万博1manbetx理研究所的Greene编写。