0
I 읽어들이 같이 분산 공분산 행렬 Σ 모델링 다음 용지 (http://www3.stat.sinica.edu.tw/statistica/oldpdf/A10n416.pdf)PyMC - 분산 공분산 행렬 추정
Σ = DIAG (S) * R * DIAG (S) (식 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)
감사
[편집]
내가이 다음 사용하여 해당 수행 할 수 있다고 생각 : 여기@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)
"모델"의 의미를 확장하십시오. 그 단어는 통계와 과학에서 많은 의미를 지니고 있습니다. 아마도 공분산 행렬을이 형식으로 분해하는 방법을 묻고 있습니까? 궁금한 점이 있다면 PyMC에서 알고리즘을 코딩하는 것 뿐이므로 알려 주시면 SO 커뮤니티로 마이그레이션 할 수 있습니다. – whuber
제 질문은 PyMC에서의 구현에 관한 것입니다. – akhil
나는 다음과 같은 것을 사용하여 수행 할 수 있다고 생각한다. @ 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) – akhil