[R] HPDinterval question - nonlinear transformations/functions of parameters.

Christos Argyropoulos argchris at hotmail.com
Tue Jul 6 22:01:11 CEST 2010



Hi, 
I have a quick question about HPDinterval (package coda). I am simulating from a trivariate multivariate normal with 3 components (A,B,C) and general (not necessarily diagonal) covariance matrix.  Interest lies in describing the distribution of the function:
 
f(A,B,C) = exp(A*B+C)
 
 
The question concerns the intervals returned by HPD under two different invokations
 
a) directly on the function f(A,B,C)
 
b) exponentiation of the HPD interval of the function: A*B+C
 
As long as the components of the covariance matrix of the original multivariate normal are small, the intervals returned by the 2 invokations are similar. However  a simple scaling of the covariance matrix can turn the agreement to disagreement. 
 
(You can reproduce this behaviour by varying the value of X in the R code attached at the end of this email. Smaller values of x lead to greater discrepancies e.g. compare X=0.1 v.s X=5.1).
 
>From my understanding of how HPDinterval works, the intervals returned by the 2 different invokations should be very similar. So what causes this discrepancy? Which one of the 2 intervals should be used?
 
Regards, 
 
Christos Argyropoulos
 
R CODE FOLLOWS
 
library(MASS)
library(coda)
## Covariance Matrix
X<-5.1
 S<-matrix(c( 1.237582e-02, -5.861086e-03, -2.034300e-02 ,
 -5.861086e-03,  1.725401e-02 , 0.234207e-01, -2.034300e-02,  
 0.234207e-01,  1.410518e-01),3,3)/X
cov2cor(S)
## Component Means
MU<-c(-0.22263475 , 0.55119463 , -0.08819141)
## Sample from MVNormal   
set.seed(1234)
N<-100000
ran<-mvrnorm(N,MU,S)
## Interested in the following quantity
## log(Tot) = 1st*2nd MVN component + 3rd Component

logtot<-ran[,1]*ran[,2]+ran[,3]
HPDinterval(as.mcmc(exp(logtot)))
exp(HPDinterval(as.mcmc(logtot)))
exp(quantile(logtot,c(0.025,0.975)))
plot(density(logtot)) 		 	   		  
_________________________________________________________________
Hotmail: Trusted email with Microsoft’s powerful SPAM protection.



More information about the R-help mailing list