PyMC - 方差-协方差矩阵估计

2024-02-07

我读了下面的论文(http://www3.stat.sinica.edu.tw/statistica/oldpdf/A10n416.pdf http://www3.stat.sinica.edu.tw/statistica/oldpdf/A10n416.pdf)其中,他们将方差-协方差矩阵 Σ 建模为:

Σ = diag(S)*R*diag(S)(论文中的公式1)

S 是标准差的 k×1 向量,diag(S) 是对角元素为 S 的对角矩阵,R 是 k×k 相关矩阵。

我如何使用 PyMC 来实现这一点?

这是我编写的一些初始代码:

import numpy as np
import pandas as pd
import pymc as pm

k=3
prior_mu=np.ones(k)
prior_var=np.eye(k)
prior_corr=np.eye(k)
prior_cov=prior_var*prior_corr*prior_var

post_mu = pm.Normal("returns",prior_mu,1,size=k)
post_var=pm.Lognormal("variance",np.diag(prior_var),1,size=k)
post_corr_inv=pm.Wishart("inv_corr",n_obs,np.linalg.inv(prior_corr))


post_cov_matrix_inv = ???

muVector=[10,5,-2]
varMatrix=np.diag([10,20,10])
corrMatrix=np.matrix([[1,.2,0],[.2,1,0],[0,0,1]])
cov_matrix=varMatrix*corrMatrix*varMatrix

n_obs=10000
x=np.random.multivariate_normal(muVector,cov_matrix,n_obs)
obs = pm.MvNormal( "observed returns", post_mu, post_cov_matrix_inv, observed = True, value = x )

model = pm.Model( [obs, post_mu, post_cov_matrix_inv] )
mcmc = pm.MCMC()

mcmc.sample( 5000, 2000, 3 )

Thanks

[edit]

我认为可以使用以下方法来完成:

@pm.deterministic
def post_cov_matrix_inv(post_sdev=post_sdev,post_corr_inv=post_corr_inv):
    return np.diag(post_sdev)*post_corr_inv*np.diag(post_sdev)

这是为了偶然发现这篇文章的人的利益而提供的解决方案:

p=3
prior_mu=np.ones(p)
prior_sdev=np.ones(p)
prior_corr_inv=np.eye(p)


muVector=[10,5,1]
sdevVector=[3,5,10]
corrMatrix=np.matrix([[1,0,-.1],[0,1,.5],[-.1,.5,1]])
cov_matrix=np.diag(sdevVector)*corrMatrix*np.diag(sdevVector)

n_obs=2000
x=np.random.multivariate_normal(muVector,cov_matrix,n_obs)

prior_cov=np.diag(prior_sdev)*np.linalg.inv(prior_corr_inv)*np.diag(prior_sdev)

post_mu = pm.Normal("returns",prior_mu,1,size=p)
post_sdev=pm.Lognormal("sdev",prior_sdev,1,size=p)
post_corr_inv=pm.Wishart("inv_corr",n_obs,prior_corr_inv)

#post_cov_matrix_inv = pm.Wishart("inv_cov_matrix",n_obs,np.linalg.inv(prior_cov))
@pm.deterministic
def post_cov_matrix_inv(post_sdev=post_sdev,post_corr_inv=post_corr_inv,nobs=n_obs):
    post_sdev_inv=(post_sdev)**-1
    return np.diag(post_sdev_inv)*cov2corr(post_corr_inv/nobs)*np.diag(post_sdev_inv)

obs = pm.MvNormal( "observed returns", post_mu, post_cov_matrix_inv, observed = True, value = x )

model = pm.Model( [obs, post_mu, post_sdev ,post_corr_inv])
mcmc = pm.MCMC(model)

mcmc.sample( 25000, 15000, 1,progress_bar=False )
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PyMC - 方差-协方差矩阵估计 的相关文章

随机推荐

  • 从 git 存储库中删除丢失的 LFS 对象

    我的 git 存储库 中缺少一堆 LFS 对象 无论是在客户端还是在服务器上 我知道那些物品丢失了 没关系 不幸的是这意味着git lfs fetch all甚至git lfs push all origin将失败 我想从存储库中清除 损坏
  • 迭代对数幂

    我最近搞砸了一次采访 使用 collabedit 的电话屏幕 这是问题 编写一个交互式 O lg n 算法来求 x y 的幂 x 是双精度型 y gt 0 是整数 我首先进行了递归分而治之 并尝试将其转换为迭代 但我不能 S 有没有一种方法
  • Rust 使用 vs mod?

    我正在努力解决这些问题 use宣言 A 使用声明创建一个或多个与其他路径同义的本地名称绑定 通常 一个use声明用于缩短引用模块项所需的路径 这些声明可能出现在模块和块中 通常位于顶部 And mod item A 模块项是一个模块 用大括
  • 如何在 Xcode (Swift) 中添加自动完成注释?

    如何将文本添加到自动完成功能 如下所示 告诉元素激活自身 部分 这就是我所拥有的 但是 这是一个测试 部分不会出现在自动完成中 请不要链接到其他介绍如何编写评论的帖子 以便它们会显示在通过 Option Click 弹出的窗口中 我很清楚如
  • 多租户身份服务器 4

    我正在尝试实现一个 IdentityServer 来处理多租户应用程序的 SSO 我们的系统将只有一个 IdentityServer4 实例来处理多租户客户端的身份验证 在客户端 我正在使用acr value传递租户 ID Startup
  • 如何在package.json中添加多个NODE_PATH?

    如何在package json中添加多个NODE PATH 我想要有这些多条路径 NODE PATH NODE PATH modules or NODE PATH lib NODE PATH modules 包 json name my a
  • 将 pandas 数据框列转换为带有源和目标的 networkx 图

    我在 pandas 中有一个 DataFrame 其中包含有关人员及时位置的信息 大约有 300 多万行 这是示例 其中每个名称都分配给一个唯一的index by group by并排序Name and Year import pandas
  • htaccess 通过查询字符串阻止请求

    有没有办法阻止具有特定查询字符串的所有请求 我应该阻止所有包含 userid 1234 或 userid 1234 的请求 例如 directory page php userid 1234 var2 abc var3 directory
  • Gradle 任务差异

    下面两个代码片段有什么区别 First task copyFiles type Copy lt lt from folder from into dest folder Second task copyFiles type Copy fro
  • 如何通过EC2 SSH隧道从本地JAVA程序连接到RDS

    我正在尝试通过 SSH 隧道从本地 JAVA 程序连接到 RDS 数据库到 EC2 实例 以进行调试 我正在尝试在 EC2 实例中建立 SSH 隧道 然后将端口转发到 RDS 数据库 这是我的代码 final int localPort 9
  • Webgl 没有渲染我的圆圈

    我正在尝试学习如何使用 Webgl 并且已经学会了如何绘制三角形 正方形和直线 我在 webgl 中创建圈子时遇到问题 var InitDemo function var canvas document getElementById cir
  • 如何设置绑定项目的ContextMenu?

    我正在努力实现以下目标
  • C# RichTextBox选择问题

    我的应用程序上有一个 RichTextBox 控件 这是我的问题 当应用程序运行时 如果我开始用鼠标选择单词内的某些字符并继续在其外部选择 则选择会自动包含我开始选择的整个单词以及我想从中选择一部分的任何其他单词 ms word ish 如
  • IMPORTXML 到具有自动更新功能的 Google Apps 脚本中 [重复]

    这个问题在这里已经有答案了 我正在尝试让 Google 表格应用程序脚本适用于我正在使用的 IMPORTXML A1 importxml http www nfl com liveupdate scorestrip ss xml q A2
  • 获取矩阵元素的邻居

    我有一个矩阵 对于每个元素 我想获取其周围元素的索引 所有这些结果必须按以下方式存储到矩阵中 矩阵的每一行对应于一个矩阵元素 并且该矩阵的每一列包含 s 个邻居索引 例如 对于 4x4 矩阵 我们将得到一个 16x8 结果数组 某些矩阵元素
  • Ms Access vba 打开另一个数据库中表的数据表视图

    该语句将打开当前数据库中指定表的数据表视图 DoCmd OpenTable sTablename acViewNormal 有没有办法让另一个数据库中的表达到相同的结果 我有一个表单 可以在其中选择 Access 数据库 然后下拉菜单中会填
  • Mongodb 是否可以聚合对象?

    我正在尝试汇总本文档中的数据包总数 id ObjectId 51a6cd102769c63e65061bda capture 1369885967 packets 0 595 1 596 2 595 3 595 我能得到的最接近的是 db
  • Jythonc 失踪

    我刚刚安装了 Jython 2 5 1 我想将我的 Python 文件转换为 Java 类文件 网站上指示使用 jythonc 命令行工具 但我找不到它 有谁知道我在哪里可以找到它 基本上我想要完成的是让我的 Python 代码在浏览器中运
  • ValueError:无法处理多标签指示器和二进制的混合

    我将 Keras 与 scikit learn 包装器一起使用 特别是 我想使用 GridSearchCV 进行超参数优化 这是一个多类问题 即目标变量只能在一组 n 个类上选择一个标签 例如 目标变量可以是 Class1 Class2 C
  • PyMC - 方差-协方差矩阵估计

    我读了下面的论文 http www3 stat sinica edu tw statistica oldpdf A10n416 pdf http www3 stat sinica edu tw statistica oldpdf A10n4