全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 MATLAB等数学软件专版
18070 7
2009-08-26
MATLAB里求转移矩阵的命令[TRANS_EST, EMIS_EST] = hmmestimate(seq, states),我实在没看懂怎么用,seq 和state到底该取多少?
我现在有如下数据:
w=44.93  46.35  44.84
  19.48  19.29  19.25
  17.74  17.3   18.26
  17.85  17.07  17.65;
ww=44.73  44.93  46.35
  19.97  19.48  19.29
  17.39  17.74  17.3
  17.9   17.85  17.07;
ww是W的滞后一期矩阵,W矩阵的列分别为03,04,05年的数据,而ww分别为02,03,04年的数据,数据均为比例,现在要计算一步转移概率矩阵P,即ww*P=w,其约束条件是:[email=min=@sum(bz(j,t):(w(j,t)-@sum(zt(i):ww(i,t)*p(i,j)))^2]min=@sum(bz(j,t):(w(j,t)-@sum(zt(i):ww(i,t)*p(i,j)))^2[/email]);
@for(zt(i):@sum(zt(j):p(i,j))=1);
一个表示最小化,另一个表示P矩阵列元素和为1,
这些语言是LINGO软件的,我想把它转换为MATLAB语言,请问该怎么做?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2009-8-26 15:45:25
抱歉,你的问题超出了我的能力范围。不太懂你的模拟,个人建模水平有限。
不过可以和你探讨下MATLAB的代码。
用范例来解释一下吧。
两个色子。一个是好的,一个是偏一面的。
仍色子的几率矩阵是trans转移矩阵是emis
>> trans = [0.95,0.05; 0.10,0.90];
>> emis = [1/6,  1/6,  1/6,  1/6,  1/6,  1/6;
1/10, 1/10, 1/10, 1/10, 1/10, 1/2;];

seq代表的是一个序列,不是写上去的,而是用代码算出来的。
[seq,  states] = hmmgenerate(1000,trans,emis);
1000是步长值。
得到seq,seq在此是 Columns 1 through 12 ....

     2     5     1     5     6     4     3     3     5     4     6     5...

以下略,太长....

再用
[trans, emis] = hmmestimate(seq,states);
得到trans 和emis的值。
>> trans

trans =

    0.9501    0.0499
    0.1069    0.8931

>> emis

emis =

    0.1733    0.1630    0.1733    0.1557    0.1733    0.1615
    0.1129    0.0784    0.1066    0.1254    0.1066    0.4702

可以看出,非常接近设定值。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2009-8-27 11:43:23
我现在的问题就是只知道初始状态,想求EMISSION矩阵,那该怎么求?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2009-8-27 13:26:38
3# wpcz_c
转移规则都没有,或者历史数据 如果做转移矩阵?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2009-8-27 13:35:07
对你的问题我很难回答,水平有限...
不如你就直接用矩阵公式算吧,再加个约束条件做排除法.....
不对之处请海涵。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2009-8-27 15:50:13
w=44.93  46.35  44.84
  19.48  19.29  19.25
  17.74  17.3   18.26
  17.85  17.07  17.65;
ww=44.73  44.93  46.35
  19.97  19.48  19.29
  17.39  17.74  17.3
  17.9   17.85  17.07;
ww是W的滞后一期矩阵,它们俩都是状态矩阵,如果直接用矩阵求解的话得到的结果是
0.7398   -3.0057         0    4.0148
    0.1538    0.4273         0    0.2272
    0.2892    1.1156         0   -0.9761
    0.0552    1.7228         0   -1.0628
这个结果不符合要求,我要的是各个元素都大于0小于1,这个约束条件怎么加呢?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群