生成转移矩阵的算法

时间:2014-03-20 16:00:46

标签: python algorithm matrix transition markov

转换概率为

enter image description here

例如,对于一种产品,当前价格为高时,下一期间为高价的概率为0.3,而低价为0.7。

我的问题是,对于两个独立的产品,转换概率是多少?

我正在寻找一些如下表所示的结果:

enter image description here

例如,给定当前价格水平为产品1的H和产品2的H,L为1且H为2的概率为0.7 * 0.3 = 0.21。

我正在使用的当前代码如下:

from sklearn.utils.extmath import cartesian
pr = np.array([[0.3,0.7],[0.6,0.4]])
P = np.zeros((4,4))
count = 0
for i in range(2):
    for j in range(2):
        P[count] = cartesian((pr[i],pr[j])).prod(1)
        count += 1
P

它适用于两种产品,但对于更多产品,它会非常混乱。例如对于四个独立的产品,转换矩阵是16 * 16:对于每个当前状态(例如HHHH),存在16种可能的未来状态,例如, (HHHH,HHHL,HHLH,HHLL,HLHH,......等)

有一种简单明了的方法吗?

1 个答案:

答案 0 :(得分:0)

如果我是正确的,你正在生成一个简单的马尔科夫TM。

现在你想看看另外两个产品的转换概率是多少?我对么?好吧,那么你只是要从数据中再次学习,但这一次,看看每个数据对的出现并将它们视为n-gram。

你的矩阵确实会变得非常大,但这不应该立刻造成问题。

如果你想回顾大量的时期,那么你可能想要考虑另一种可以更好地处理时间序列的技术。