# Playing with correlation # Dennis E. Slice (c) 2012 # Clear the room rm(list = ls()) # For instance,... n=100 # Ask between plots par(ask=T) # ==== CREATE A FUNCTION ==== cor_play <- function(r,n, mu1=0, sd1 = 1, mu2=0, sd2=1) { print("--------------") y1 = rnorm(n) yy = rnorm(n) y2 = y1*r + yy*sqrt(1-r*r) y1 = (y1*sd1) + mu1 y2 = (y2*sd2) + mu2 print("r, n, mu1, ds1, mu2, sd2") print(paste(r,n,mu1,sd1,mu2,sd2)) print(cor.test(y1,y2)) plot(y1,y2) } # ================================ # Generate and plot and compute r, ... # y1,y2 ~ N(0,1); r=1.0, -1.0, 0, 0.3, -0.7 r_vals = c(1,-1,0,0.3,-0.7) for (r in r_vals) cor_play(r,n) # y1,y2 ~ N(0,0.2),N(0,2.3); r=1.0, 0, -0.7 r_vals = c(1,0,-0.7) sd_vals = c(0.2,2.3) for (r in r_vals) cor_play(r,n,sd1=sd_vals[1],sd2=sd_vals[2]) # y1,y2 ~ N(1,0.7),N(100,12.5); r=0.3 r_vals = c(1,0,-0.7) mu_vals = c(1,100) sd_vals = c(0.7,12.5) for (r in r_vals) cor_play( r, n, mu1=mu_vals[1], sd1=sd_vals[1], mu2=mu_vals[2], sd2=sd_vals[2]) # y1', y2' – subtract off means and divide by sd