[R] Vectorization Problem

Sergey Goriatchev sergeyg at gmail.com
Sat Mar 22 13:42:18 CET 2008


I have the code for the bivariate Gaussian copula. It is written with
for-loops, it works, but I wonder if there is a way to vectorize the
function.
I don't see how outer() can be used in this case, but maybe one can
use mapply() or Vectorize() in some way? Could anyone help me, please?

## Density of Gauss Copula

rho <- 0.5 #corr
R <- rbind(c(1,rho),c(rho,1)) #vcov matrix
id <- diag(2)
gauss <- matrix(0,99,99)

u <- seq(0.01, 0.99, by=0.01)

for(i in 1:99){
	for(j in 1:99){
		xx <- t(t(c(qnorm(u[i]), qnorm(u[j]))))
		gauss[i,j] <- 1/sqrt(1-rho^2)*exp(-0.5*t(xx)%*%(solve(R)-id)%*%xx)
	}
}
persp(u, u, gauss, xlab="x1", ylab="x2", zlab="Density of Gauss Copula",
      theta=320, phi=20, col="palegreen", ticktype="detailed")

-- 
 Sergei



More information about the R-help mailing list