先对数据进行预处理(包括检测缺失值、离群值、滤波、标准化等等,依据不同情况而采用不同的预处理方法),处理完成之后需要确定马尔科夫状态转移矩阵才能进行下一步的操作。
![](https://img-blog.csdnimg.cn/cfc6c01caaca4252ac596b8c6633b63a.png)
本代码将整个时序数据视为两种状态,一种是上升,一种是下降。因此创建二态的状态转移矩阵,从上面的图像趋势可以大致认为转移概率是非时变的,因此不妨认为转移矩阵有稳态解。
P = NaN(2);
mc = dtmc(P,'StateNames',["上升" "下降"]);
mdl = arima(0,0,0);
Mdl = msVAR(mc,[mdl; mdl]);
P0 = 0.5*ones(2);
mc0 = dtmc(P0,'StateNames',Mdl.StateNames);
mdl01 = arima('Constant',0.1,'Variance',0.1);
mdl01 = estimate(mdl01,train_output,'X',train_input);
mdl02 = arima('Constant',-0.1,'Variance',0.1);
mdl02 = estimate(mdl02,train_output,'X',train_input);
Mdl0 = msVAR(mc0,[mdl01; mdl02]);
figure;
E