我试图通过一个类的Markov模型的多个转换来运行一个数据帧。在
数据框如下所示:
df = pd.DataFrame({'Bull Market': [.9, .8, .5],
'Bear Market': [.25, .05, .25],
'Stagnant Market': [.75, .15, .25]
},
index=["Bull Market", "Bear Market", "Stagnant Market"])
我有两次运行的代码:
^{pr2}$我需要把它在模型上运行X次。我很难在dot()上找到文档,但从我发现的情况来看,您似乎无法运行X次。在
任何帮助都将不胜感激,谢谢!在
这不是马尔可夫链的工作方式。你需要一个起始状态(在本例中,可以是[1,0,0],[0,1,0]或[0,0,1]),然后用状态向量乘以转换矩阵,然后用新获得的状态向量乘以转换矩阵,等等。你不会将转换矩阵乘以它本身。如果您需要计算特定数量的变换之后会发生什么,您可以循环X次并执行X矩阵向量乘法。如果你想要稳态,你需要找到主导特征向量,这可以用numpy.linalg.eig来实现。还要注意的是,这对你的转移矩阵不起作用,因为这些行不是概率分布。在
编辑:好吧,我想我明白你想做什么了。由于矩阵-向量乘法的工作方式,你也可以对矩阵求幂,然后乘以起始状态向量,得到的结果与迭代乘以每个中间结果相同。您可以使用numpy.linalg.matrix_power来执行此操作。我看你是从维基百科上查到的。你只是误读了其中一些数字,即应该是0.025,而不是0.25。每一行的和都是1是很关键的。在
此代码复制了维基百科的示例:
相关问题 更多 >
编程相关推荐