################################################################## ## Datas is a function for simulation of data sets. ## ## In Datas function, ## ## n: represents sample size. ## ## K: represents the munber of phenotypes. ## ## MAF: represents minor allele frequency. ## ## beta: represents the genetic effects size. ## ## c2: represents the within-factor correlation. ## ## rhoc2: represents the between-factor correlation. ## ## mod: represents the model index. ## ################################################################## Datas=function(n,K,MAF,beta,c2,rhoc2,mod){ rho=rhoc2/c2 if (mod==1) { R=1 effect=beta*c(1:K) gamma=matrix(rep(1,K)) } if (mod==2) { R=2 k1=floor(K/R) k2=K-k1 effect=c(rep(0,k1),rep(beta,k2)) Di=rep(1,k1) gamma=bdiag(rep(list(Di),R)) } if (mod==3) { R=5 k1=floor(K/R) effect=c(rep(0,3*k1),rep(-beta,k1),2*beta/(k1+1)*c(1:k1)) Di=rep(1,k1) gamma=bdiag(rep(list(Di),R)) } if (mod==4) { R=5 k1=floor(K/R) effect=c(rep(0,k1),rep(beta,k1),rep(-beta,k1), -2*beta/(k1+1)*c(1:k1),2*beta/(k1+1)*c(1:k1)) Di=rep(1,k1) gamma=bdiag(rep(list(Di),R)) } Sigma=rho*matrix(rep(1,R*R),R,R)+(1-rho)*diag(R) f=mvrnorm(n,rep(0,R),Sigma) E=mvrnorm(n,rep(0,K),diag(K)) X=matrix(sample(c(0:2),size=n,replace=T, prob=c((1-MAF)^2,2*MAF*(1-MAF),MAF^2))) Y=X%*%effect+sqrt(c2)*f%*%t(gamma)+sqrt(1-c2)*E Y=as.matrix(Y) return(list(X,Y)) }