PyMC3中如何创建多个随机游走变量?
在PyMC3中创建多个高斯随机游走的正确姿势
没错,你完全想对了!当你在pm.GaussianRandomWalk里设置shape=(20,100)时,PyMC3会生成20个独立的、长度为100的高斯随机游走实例,数组的每一行正好对应一个完整的随机游走序列。
验证维度确认结果
你可以通过抽样后查看结果的形状来直观验证:
import pymc3 as pm import arviz as az with pm.Model() as model: z = pm.GaussianRandomWalk('z', mu=0, sd=1, shape=(20,100)) # 执行抽样并返回ArviZ格式的结果 trace = pm.sample(1000, return_inferencedata=True) # 打印后验结果的形状 print(trace.posterior.z.shape)
输出会是类似(2, 1000, 20, 100)的结果:
- 第一个维度是默认的抽样链数(2条链)
- 第二个维度是每条链的抽样次数
- 第三个维度就是你需要的20个随机游走实例
- 第四个维度是每个游走包含的100个时间步
小技巧:单独访问某个随机游走
如果后续需要提取特定的随机游走(比如第3个,注意Python是0索引),可以用索引操作快速定位:
# 获取所有抽样中第3个随机游走的全部时间步数据 third_walk = trace.posterior.z[..., 2, :]
关于“整合为单个变量”
其实你当前的写法已经把20个游走整合到了一个变量z中,它是一个结构化的张量,后续分析时可以轻松按维度做批量操作——比如计算所有游走的时间步均值,或者对每个游走单独做统计检验,完全不需要额外拆分。
内容的提问来源于stack exchange,提问作者Booley
相关产品推荐
相关产品推荐

