检测爆发的明显变化和信号

此示例示出了如何确定通过累加和变点和检测信号的变化或崩落。

通过累积和爆发检测

有你在哪里监测数据的许多实际应用,并且希望当底层进程迅速改变尽可能被提醒。一个非常受欢迎的技术来实现,这是由一个累积和(CUSUM)控制图的装置。

为了说明CUSUM是如何工作的,首先检查累计报告2014年西非埃博拉病例。

资源:疾病预防与控制中心

加载WestAfricanEbolaOutbreak2014情节(WHOreportdate,[TotalCasesGuinea TotalCasesLiberia TotalCasesSierraLeone]'.-')图例('几内亚''利比里亚''塞拉利昂');标题(“总怀疑,埃博拉出血热的可能和确诊病例”);

如果你看一下在几内亚的首次爆发的前沿,你可以看到最初的一百病例的报告围绕2014年3月25日,该日之后显著增加。什么是有趣的是,虽然利比里亚三月也有一些疑似病例,病例数在控制相对呆到约三十天后。

要获得新的病人输入速度感,情节的案件总数相对一天到一天的变化,在发病于2015年3月25日开始。

daysSinceOutbreak =日期时间(2014,3,24+(0:400));例= interp1(WHOreportdate,TotalCasesLiberia,daysSinceOutbreak);dayOverDayCases = DIFF(例);图(dayOverDayCases)称号(“自3月25日在利比里亚新病例(每日津贴)率2014”);ylabel(“变化的每日津贴报告病例数”);xlabel(“天数自开始爆发”);

如果你在100天的数据的放大,可以看到,虽然有案件的初始涌入,他们中许多人第30天,其中的变化率降至零下后,暂时排除了。你也可以看到天95到100之间的显著上升趋势,其中达到每天七个新病例的速度。

XLIM([1101])

对输入数据执行CUSUM测试可以是一个快速的方法来确定发生爆发时。CUSUM跟踪两个累积和的:上和检测何时局部平均位移向上和下总和,其检测当平均向下移动。集成技术提供CUSUM忽略传入速率大的(瞬时)穗但是还是要在速率稳定的小变化的敏感性的能力。

当它遇到从最初的数据中超过五个标准偏差意味着更多的转变调用带有默认参数CUSUM将检查第25样本和报警数据。

CUSUM(dayOverDayCases(1:101))图例(“上和”“较低和”

需要注意的是CUSUM抓住了假报告在30天(33天)的情况下,拿起开始在80天(90日)爆发的初次发病。如果你对前面的情节仔细比较这些结果,可以看出,累积和能够忽略在29天假上扬,但第90天,大的上升趋势开始之前仍然触发报警五天。

如果您累积和调整,以便它有一个目标均值为零的情况下/天的目标加或减三例/天,可以忽略,在30天的假报警,在92天拿起爆发:

CLIMIT = 5;mshift = 1;tmean = 0;TDEV = 3;CUSUM(dayOverDayCases(1:100),CLIMIT,mshift,tmean,TDEV)

找到一个显着变化差异

在统计检测突然变化的另一种方法是通过变点检测,其分区的信号到相邻的节段,其中一个统计量(例如平均值,方差,坡度等)是每个段内是恒定的。

在下一个例子中分析了在开罗附近的罗达计测得的年622至AD 1281尼罗河的每年最小水位。

加载nilometer年= 622:1284;图(年,nileriverminima)称号(“每年最低水平尼罗河”)xlabel('年')ylabel('高度(m)'

施工开始于公元715更新更准确的测量设备上。没有多少在此时间之前,但有关进一步的检查,你可以看到,有相当较小变异各地722后找到的一段时间,当新设备投入运行,你可以搜索的根 - 最好的变化表演元素方面的分化后均方水位,以去除任何缓慢变化的趋势。

I = findchangepts(差异(nileriverminima),'统计''RMS');AX = GCA;XP = [年(ⅰ)ax.XLim([2 2])年(I)];YP = ax.YLim([1 1 2 2]);补丁(datenum(XP),YP,[5 0.5 0.5],'facealpha',0.1);

虽然样本式分化是一个简单的方法,以除去的趋势,还有其它更复杂的方法来检查在更大尺度方差。关于如何使用该数据集通过执行小波变点检测的示例,请参见小波检测的Changepoint(小波工具箱)。

检测输入信号的变化多

在下一个示例中涉及一个CR-CR 4速变速器块45第二仿真,在1个毫秒的间隔进行采样。汽车发动机RPM的模拟数据和扭矩显示在下面。

加载simcarsig副区(2,1,2);情节(carTorqueNM);xlabel(“样品”);ylabel('扭矩(N M)');标题(“扭矩”);副区(2,1,1);情节(carEngineRPM);xlabel(“样品”);ylabel('转速(RPM)');标题('引擎速度');

在这里,车加速时,改变齿轮三次,切换到中性,然后施加制动。

由于发动机速度可被自然地建模为一系列直线段的,则可以使用findchangepts寻找到汽车改变齿​​轮的样品。

图findchangepts(carEngineRPM,'统计'“线性”'MaxNumChanges',4)xlabel(“样品”);ylabel('发动机转速(RPM)');

在这里你可以看到四个转变(五个直线段之间),他们周围发生的10,000,20,000,30,000,40,000样品标记。放大到波形的空闲部分:

XLIM([18000 22000])

需要注意的是直线拟合密切跟踪输入波形,但它可以得到改善。

观察多级赛事共享的信号间切换

看到改善,增加changepoints的数目为20,并在样本号19000观察变速齿轮的附近范围内的变化

findchangepts(carEngineRPM,'统计'“线性”'MaxNumChanges',20)XLIM([18000 22000])

观察到的发动机速度开始在样本19035和降低了510个样品之前它在样品19550.由于采样间隔定居是1ms,这是一个〜0.51的拖延,并且变换齿轮之后的一段典型量。

现在看同一区域内的发动机扭矩的changepoints:

findchangepts(carTorqueNM,'统计'“线性”'MaxNumChanges',20)XLIM([19000 20000])

观察到的发动机转矩在样品19605充分传递到车轴,发动机速度最终沉降后55毫秒。这个时间与发动机和扭矩生产的进气冲程之间的延迟。

为了找到当离合器搞成了,你可以进一步放大到信号。

XLIM([19000 19050])

离合器在样品19011压下和耗时约30个样品(毫秒)成为完全脱离。