python - 生成转移矩阵的算法

标签 python algorithm matrix transition markov

转移概率给出为

enter image description here

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

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

我正在寻找类似下表的一些结果:

enter image description here

例如,假定产品 1 的当前价格水平为 H,产品 2 的当前价格水平为 H,则 1 为 L 和 2 为 H 的概率为 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 种可能的 future 状态,例如(HHHH, HHHL, HHLH, HHLL, HLHH, ....等)

有没有一种简单明了的方法来做到这一点?

最佳答案

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

现在您想看看在给定另外两种产品的情况下,一种产品的转移概率是多少?我对么?那么,您将再次从数据中学习,但这一次,查看每对数据的出现并将它们视为 n-gram。

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

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

关于python - 生成转移矩阵的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22538569/

相关文章:

python - 一个处理程序可以同时处理 post 和 get Tornado 中的不同 URL

algorithm - PCA和KNN算法

python - 从一维列表创建二维列表

c++ - 转置期间的动态内存分配

matrix - 翻转矩阵 fortran

Python re 模块 - 保存状态?

python - "killall python"后看不到键盘输入

python - 如何在python中更改目录youtube_dl

algorithm - NP 完全理论 : Long Path

algorithm - 选择排序递归关系