> ### Generate Bivariate Normal Data > > ####################################################################### > > # help(rmvnorm) > # rmvnorm(n, mean=rep(0,d), cov=diag(d), sd, rho, d=2) > > n <- 30 > > rho <- 0.90 > > X <- rmvnorm(n, rho=0.90, d=2) > > z1 <- X[,1] > z2 <- X[,2] > > r.samp <- cor(z1,z2) > r.samp [1] 0.877 > > plot(z1,z2) > > # Fisher's z-transformation > > zrho <- c(-1,0,1)*1.96*(1/sqrt(n-3)) + 0.50*log((1+r.samp)/(1-r.samp)) > zrho [1] 0.984 1.361 1.738 > > # 95% Fisher's CI centered at the sample correlation, r.samp > > (exp(2*zrho)-1)/(exp(2*zrho)+1) [1] 0.755 0.877 0.940 > > # Nonparametric Bootstrap > > B <- 1000 > > r.boot <- numeric(B) > > for(i in 1:B){ + index <- seq(1:n) + index.boot <- sample(index, n, replace = T) + r.boot[i] <- cor(z1[index.boot],z2[index.boot]) + } > > summary(r.boot) Min. 1st Qu. Median Mean 3rd Qu. Max. 0.65 0.846 0.882 0.873 0.911 0.965 > r.boot.ci <- quantile(r.boot,c(0.025,0.975)) > r.boot.ci 2.5% 97.5% 0.757 0.942 > hist(r.boot) > > r.boot.ztran <- 0.50*log((1+r.boot)/(1-r.boot)) > hist(r.boot.ztran) >