【问题标题】:Algorithm to Generate Transition Matrix生成转移矩阵的算法
【发布时间】:2014-03-20 16:00:46
【问题描述】:

转移概率为

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

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

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

例如,假设当前价格水平是产品 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 个可能的未来状态,例如(HHHH,HHHL,HHLH,HHLL,HLHH,....等)

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

【问题讨论】:

  • 转换表确实会迅速(指数)增加,但你真的需要在内存中拥有完整的表吗?为什么不只管理基本表,然后仅在需要时计算从向量 a 到向量 b 的特定转换?
  • 我正在解决一个动态规划问题,需要完整的表格。
  • 鉴于您的限制,我想真正的改进是不可能的。也许如果你揭示了你试图解决的完整问题,就会提出新的方法。

标签: python algorithm matrix transition markov


【解决方案1】:

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

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

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

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

【讨论】:

  • 每种产品只有两个价格等级:H 和 L,例如两个热狗摊 A 和 B 的热狗价格可以是 1 美元或 2 美元。所以任何时期总是有四种状态:11、12、21、22。所以矩阵不会变得很大。
  • 好吧,你不会再回头了。要计算更多产品的转移矩阵,只需设置一个 for 查看您当前的代码。这需要一些注意,但它会完全有效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-11
  • 1970-01-01
  • 1970-01-01
  • 2018-03-21
  • 1970-01-01
相关资源
最近更新 更多