# Item 1 getr2 <- function(obj, adjusted = FALSE) { sumobj <- summary(obj) if(adjusted) { sumobj[["r.squared"]] } else { sumobj[["adj.r.squared"]] } } # Item 2 gendata <- function(n, m, stdev, distype = 1) { result <- NULL if(distype == 1) { result <- rnorm(n, 0, 1) } else if (distype == 2) { result <- rt(n, 4) } else if (distype == 3) { result <- rf(n, 1, 15) } else if (distype == 4) { result <- 1 - rf(n, 1, 15) } else { stop("The distype argument is not valid.") } result <- (result - mean(result)) / sd(result) temp <- rnorm(n, m, stdev) result <- sd(temp) * result + mean(temp) return(result) } nonnormalsim <- function(cond, nrep, alpha = 0.05) { result <- rep(NA, nrep) for(i in 1:nrep) { x <- gendata(cond[1], 0, 1, cond[2]) y <- gendata(cond[1], 0, 1, cond[3]) out <- cor.test(x, y) result[i] <- out[["p.value"]] < alpha } result } ns <- c(50, 150, 250) xdists <- 1:4 ydists <- 1:4 conds <- expand.grid(ns, xdists, ydists) superresult <- apply(conds, 1, nonnormalsim, nrep = 1000, alpha = 0.05) cbind(conds, apply(superresult, 2, mean))