主要内容

时间序列预测与预后预测

本示例演示如何创建时间序列模型,并使用该模型进行预测、预测和状态估计。测量数据来自一个槽尺寸随时间腐蚀的感应炉。槽尺寸不能直接测量,但可以测量炉电流和消耗的功率。众所周知,随着槽尺寸的增大,槽电阻减小。因此,测量电流的平方与测量功率的比值与插槽大小成正比。您使用测量的电流-功率比(电流和功率测量都有噪声)来创建一个时间序列模型,并使用该模型来估计当前插槽大小并预测未来插槽大小。通过物理检查,感应炉槽尺寸在某些时间点是已知的。

加载并绘制测量数据

测量的电流功率比数据存储在iddata_TimeSeriesPredictionMATLAB文件。该数据每小时测量一次,并显示随着时间的推移,该比率增加,表明炉槽的侵蚀。您可以使用这些数据开发一个时间序列模型。首先将数据分离为标识段和验证段。

负载iddata_TimeSeriesPredictionN =数字(y);Ns = floor(n/2);Y_id = y(1:ns,:);Y_v = y((ns+1:end),:);ddata_id = iddata(y_id, [], t,“TimeUnit”“小时”);data_v = iddata(y_v, [], Ts,“TimeUnit”“小时”“Tstart”ns + 1);情节(data_id data_v)传说(的识别数据验证数据的“位置”“东南”);

模式识别

槽蚀可以被建模为一个状态空间系统,输入为噪声,输出为实测电流-功率比。测量的电流-功率比与系统状态成正比,或

$x_{n+1} = Ax_n + Ke_n$

$y_n = Cx_n + e_n$

在哪里x_n美元状态向量,包含槽的大小;推出美元为被测电流功率比;e_n美元噪音和$ a c k $都要被识别出来。

使用党卫军()命令从测量数据中识别离散状态空间模型。

Sys = ssest(data_id,1,“t”Ts,“形式”“规范”
sys =离散时间可识别状态空间模型:x(t+Ts) = A x(t) + K e(t) y(t) = C x(t) + e(t) A = x1 x1 1.001 C = x1 y1 1 K = y1 x1 0.09465采样时间:1小时参数化:带有指标的CANONICAL形式:1。2参数及其不确定性用“idssdata”、“getpvec”、“getcov”表示。状态:使用SSEST对时域数据“data_id”进行估计。与估计数据拟合:67.38%(预测焦点)FPE: 0.09575, MSE: 0.09348

所识别的模型使提前一步的预测最小化。使用提前10步预测器(即给定的)验证模型y_0美元,美元…,推出使用模型进行预测美元y_ {n + 10} $.请注意,实测值与预测值之间的误差,y_0 - \帽子{y_0},…,推出——\帽子{最大}$,都是用来制作的美元y_ {n + 10} $预测。

对识别数据和独立验证数据使用10步预测器。

Nstep = 10;比较(sys data_id nstep)10步预测与估计数据的%比较网格(“上”);

图;比较(sys data_v nstep)%与验证数据的比较网格(“上”);

上述两个数据集都表明预测器与测量数据相匹配。

通过预测来进一步验证模型。预测使用实测数据记录$ y_0 y_1…,推出——\帽子{最大}$计算时间步n的模型状态。该值作为预测未来时间跨度模型响应的初始条件。我们在验证数据的时间跨度内预测模型响应,然后将两者进行比较。我们还可以计算预测中的不确定性,并绘制其值的+/- 3sd。

MeasuredData = iddata(y, [], Ts,“TimeUnit”“小时”);% = [data_id;data_v]t0 = MeasuredData.SamplingInstants;地平线= size(data_v,1);预测层数%[yF, ~, ~, yFSD] = forecast(sys, data_id, Horizon);注:yF为IDDATA对象,yFSD为双向量t = yf . samplinginstanents;%提取时间样品yFData = yF.OutputData;%提取响应作为双矢量情节(MeasuredData)情节(t, yFData' r . - ', t, yFData+3*yFSD,“r——”, t, yFData-3*yFSD,“r——”)举行标题(“在验证数据的时间跨度内预测响应”网格)

该图显示,具有置信区间的模型响应(由红色虚线表示)与验证数据的测量值重叠。综合预测和预测结果表明,该模型能较好地反映实测电流功率比。

预测结果还表明,在大视界上,模型方差较大,为实际目的,未来预测应限制在短视界。对于感应炉模型,200小时的时间是合适的。

最后,我们使用该模型预测了未来200步的响应时间跨度为502-701小时。

地平线= 200;预测层数%[yFuture, ~, ~, yFutureSD] = forecast(sys, MeasuredData, Horizon);t = yFuture.SamplingInstants;%提取时间样品yFutureData = yFuture.OutputData;%提取响应作为双矢量情节(t0, y,...t yFutureData' r . - '...t yFutureData + 3 * yFutureSD“r——”...t yFutureData-3 * yFutureSD“r——”)标题(“预测反应(200步)”网格)

蓝色曲线显示了跨越1-501小时的测量数据。红色曲线是超过测量数据时间范围200小时的预测响应。红色虚线表示基于已识别模型的随机抽样的预测响应的3 sd不确定性。

状态估计

识别的模型与测量的电流功率比相匹配,但我们感兴趣的是炉槽尺寸,这是模型中的一个状态。所识别的模型具有任意的状态,可以对其进行转换,以便该状态具有意义,在本例中为插槽大小。

为任意状态创建一个预测器。确定的模型协方差需要转换为预测器模型使用translatecov ()命令。的createPredictor ()函数的第三个输出参数预测()与之一起使用的函数translatecov ()

类型createPredictorest = translatecov(@(s) createPredictor(s,data_id),sys)
function pred = createPredictor(mdl,data) % createPredictor返回提前一步的predictor。% % sys = createPredictor(mdl,data) % %为指定的模型mdl %和测量数据创建一个提前一步的预测模型sys。该函数由% |TimeSeriedPredictionExample|和|translatecov()|命令用于%将识别的模型协方差转换为预测器。The MathWorks, Inc. [~,~,pred] = predict(mdl,data,1);est =离散时间识别状态空间模型:x(t+Ts) = A x(t) + B u(t) y(t) = C x(t) + D u(t) A = x1 x1 0.9064 B = y1 x1 0.09465 C = x1 y1 1 D = y1 y1 0采样时间:1小时参数化:带有指标的CANONICAL形式:1。馈通:无扰动分量:无自由系数数:2参数及其不确定性用“idssdata”、“getpvec”、“getcov”表示。现状:由直接构建或改造而产生。不估计。

该模型美国东部时间超前一步的预测器是否在与原始模型相同的状态坐标中表示sys.我们如何转换状态坐标,以便模型的状态对应于(依赖于时间的)插槽大小?解决方案是依赖于实际的、直接的、间歇性的槽大小测量。这在实际中并不少见,因为直接测量的成本很高,而且只能定期进行(例如在更换组件时)。

具体来说,转换预测器状态,x_n美元,z_n美元,所以$y_n = Cz_n$在哪里推出美元测量的电流功率比,和z_n美元是炉槽尺寸。在这个例子中,炉槽尺寸的四个直接测量,sizeMeasured,炉电流功率比,ySizeMeasured,用于估算美元加元.在转换预测因子时,预测因子协方差也需要转换。因此我们使用translatecov ()命令进行状态坐标转换。

Cnew = sizeMeasured\ySizeMeasured;est = translatecov(@(s) ss2ss(s,s.C/Cnew),est)
est =离散时间识别状态空间模型:x(t+Ts) = A x(t) + B u(t) y(t) = C x(t) + D u(t) A = x1 x1 0.9064 B = y1 x1 0.9452 C = x1 y1 0.1001 D = y1 y1 0采样时间:1小时参数化:带有指标的CANONICAL形式:1。馈通:无扰动分量:无自由系数数:2参数及其不确定性用“idssdata”、“getpvec”、“getcov”表示。现状:由直接构建或改造而产生。不估计。

预测器现在以所需的状态坐标表示。它有一个输入是测量系统输出(炉电流功率比)和一个输出是预测系统输出(炉槽尺寸)。对该预测器进行仿真,对系统输出和系统状态进行估计。

opts = simOptions;选择。InitialCondition = sizeMeasured(1);U = iddata([],[data_id.Y;data_v。Y], Ts,“TimeUnit”“小时”);[ye,ye_sd,xe] = sim(est,U,opts);

将估计输出和槽大小与测量值和已知值进行比较。

Yesdp = ye;yesdp。Y = Y .Y+3*ye_sd;Yesdn = ye;yesdn。Y = Y .Y-3*ye_sd;N = number (xe);人物,情节(yesdp [data_id; data_v],你们,‘g’yesdn,‘g’)传说(测量输出的“估计输出”“99.7%的束缚”“位置”“东南”)网格(“上”)图,plot(tsizmeasured,sizeMeasured,的r *1: n, xe 1: n, yesdp.Y / est.C,‘g’1: n, yesdn.Y / est.C,‘g’);传奇(“测量状态”“估计状态”“99.7%的束缚”“位置”“东南”)包含(的时间(小时)) ylabel (“振幅”);网格(“上”

使用预测和预测预后

预测器模型与预测相结合,可以对感应炉进行预测。

预测器模型允许我们根据测量数据估计当前炉槽尺寸。如果估计值处于或接近临界值,则可以安排检查或维护。预测使我们能够从估计的当前状态预测未来的系统行为,从而预测何时可能需要检查或维护。

此外,随着数据的增多,预测器和预测模型可以被重新识别。在本例中,使用一个数据集来识别预测器和预测模型,但随着数据的积累,可以重新识别模型。

另请参阅

||

相关的话题