Home > spm_vbglmar_slice > spm_vb_get_R.m

spm_vb_get_R

PURPOSE ^

Get posterior correlation matrix for regression coefficients

SYNOPSIS ^

function [R] = spm_vb_get_R (slice,h0)

DESCRIPTION ^

 Get posterior correlation matrix for regression coefficients
 FORMAT [R] = spm_vb_get_R (slice,h0)
 
 Y         data
 slice     data structure
 
 R         posterior correlation matrix of regression coefficients

 %W% Will Penny %E%

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function [R] = spm_vb_get_R (slice,h0)
0002 % Get posterior correlation matrix for regression coefficients
0003 % FORMAT [R] = spm_vb_get_R (slice,h0)
0004 %
0005 % Y         data
0006 % slice     data structure
0007 %
0008 % R         posterior correlation matrix of regression coefficients
0009 %
0010 % %W% Will Penny %E%
0011 
0012 lambda=h0(end);
0013 k=slice.k;
0014 p=slice.p;
0015 T=slice.T;
0016 X=slice.X;
0017 
0018 % This is described in the section 'approximating posterior
0019 % covariance matrices' in paper VB3
0020 if (slice.p==0)
0021     A=X'*X;
0022 else
0023     a=h0(1:slice.p);
0024     x_err         = zeros(T-p,k);
0025     XtilVXtil     = zeros(k);
0026     for t=p+1:T,
0027         x_err (t-p,:) = X(t,:) - a'*slice.dX(:,:,t-p);
0028         aa = slice.dX(:,:,t-p)'*slice.mean.a_cov;
0029         XtilVXtil     = XtilVXtil + aa*slice.dX(:,:,t-p);
0030     end
0031     A = x_err'*x_err + XtilVXtil; % A in eq. 58/53 paper VB1 with completed square
0032 end
0033 
0034 P=lambda*A+diag(slice.mean.b);
0035 C=inv(P);
0036 d = diag(C);
0037 R = C./sqrt(d*d');
0038

Generated on Mon 23-Aug-2004 14:59:38 by m2html © 2003