悬赏 5 个论坛币 未解决
拟解决的问题:建立隐马尔科夫模型,根据发病数预测疾病的流行状态,发病数这个观测在流行与未流行状态下产生的概率服从poisson分布,matlab程序如下:
j=0:10                                                                  # j 为观测值,即发病数
A1=(5.^j) *exp(-1.7)
B1=factorial(j)
p1=A.1/B1                                                          #p1:未流行状态下发病数的概率                                                       
j=0:10 
A2=(15.^j) *exp(-4.8)
B2=factorial(j)
p2=A2./B2                                                           #p2:流行状态下发病数的概率    
tr = [0.8874,0.1126;
0.4677,0.5323];                                                  #tr:两个状态的转移概率
e = [p;p2;];                                                            #e:两个状态下发病数的概率
seq = hmmgenerate(100,tr,e);                       
[estTR, estE] = hmmtrain(seq,tr,e);
estimatedStates = hmmviterbi(seq,tr,e);
pStates =  hmmdecode(seq, tr, e)                  #分别产生观测序列、参数估计值和状态序列
现在的问题是,j 即发病数很大,在700-3000左右,这样j的阶乘B就很大,在matlab中就不能显示,为“INF”,P 就为0了,之后的参数估计值和状态序列这些就没有意义了。但实际上在几百万人中发生千多的病例,应该也算是poisson分布,我现在就不知道应该怎么处理这种观测值 j 很大matlab给不出结果的情形呢?是数据可以在怎么转化或者分布出问题了,还是程序有其他写法呢?
本人是学生,非常希望再次得到大家的帮助,谢谢!