corMatrixGenerator<-function(n,k=10,p){
zeromatrix<-matrix(rep(0,(n/k)^2),n/k)
diagcormatrix<-matrix(rep(p,(n/k)^2),n/k)
cormatrix<-matrix(rep(NA,n^2),n)
cormatrix[1:(n/k),]<-cbind(diagcormatrix,matrix(rep(0,(n/k)*(k-1)/k*n),n/k))
cormatrix[((n/k)+1):(2*n/k),]<-cbind(zeromatrix,diagcormatrix,matrix(rep(0,(n/k)*(k-2)/k*n),n/k))
cormatrix[((2*n/k)+1):(3*n/k),]<-cbind(zeromatrix,zeromatrix,diagcormatrix,matrix(rep(0,(n/k)*(k-3)/k*n),n/k))
cormatrix[((3*n/k)+1):(4*n/k),]<-cbind(zeromatrix,zeromatrix,zeromatrix,diagcormatrix,matrix(rep(0,(n/k)*(k-4)/k*n),n/k))
cormatrix[((4*n/k)+1):(5*n/k),]<-cbind(zeromatrix,zeromatrix,zeromatrix,zeromatrix,diagcormatrix,
matrix(rep(0,(n/k)*(k-5)/k*n),n/k))
cormatrix[((5*n/k)+1):(6*n/k),]<-cbind(zeromatrix,zeromatrix,zeromatrix,zeromatrix,zeromatrix,diagcormatrix,
matrix(rep(0,(n/k)*(k-6)/k*n),n/k))
cormatrix[((6*n/k)+1):(7*n/k),]<-cbind(zeromatrix,zeromatrix,zeromatrix,zeromatrix,zeromatrix,zeromatrix,diagcormatrix,
matrix(rep(0,(n/k)*(k-7)/k*n),n/k))
cormatrix[((7*n/k)+1):(8*n/k),]<-cbind(zeromatrix,zeromatrix,zeromatrix,zeromatrix,zeromatrix,zeromatrix,zeromatrix,diagcormatrix,
matrix(rep(0,(n/k)*(k-8)/k*n),n/k))
cormatrix[((8*n/k)+1):(9*n/k),]<-cbind(zeromatrix,zeromatrix,zeromatrix,zeromatrix,zeromatrix,zeromatrix,zeromatrix,zeromatrix,
diagcormatrix,matrix(rep(0,(n/k)*(k-9)/k*n),n/k))
cormatrix[((9*n/k)+1):n,]<-cbind(zeromatrix,zeromatrix,zeromatrix,zeromatrix,zeromatrix,zeromatrix,zeromatrix,zeromatrix,zeromatrix,
diagcormatrix)
return(cormatrix)
}
two_normals_classificationDataGenerator <- function(n0,n1,mu0,mu1,sigma0,sigma1){
require(MASS)
x0 <- mvrnorm(n0,mu0,sigma0)
x1 <- mvrnorm(n1,mu1,sigma1)
x <- rbind(x0,x1)
y <- c(rep(0,n0),rep(1,n1))
list.xy <- cbind(x,y)
return(list.xy)
}
cor_two_normals_classification_indexDataGenerator<- function(n,k=10,p){
cormatrix <-corMatrixGenerator(n,k=10,p)
number<-matrix(NA,k,n/k)
for(i in 1:k){
number[i,1] <-sample(((i-1)*n/k+1):(i*n/k),1)
o<-number[i,1]
for(j in 2:(n/k)){
number[i,j]<-sample((1:n),1,prob=cormatrix[o,],replace=F)
o <- number[i,j]
}
}
return(number)
}
cor_two_normals_classification.DataGenerator <- function(dataConf){
require(MASS)
n <- dataConf$n
n0 <- dataConf$n0
n1 <- dataConf$n1
mu0 <- dataConf$mu0
mu1 <- dataConf$mu1
sigma0 <- dataConf$sigma0
sigma1 <- dataConf$sigma1
k <- dataConf$k
p <- dataConf$p
data <- two_normals_classificationDataGenerator(n0,n1,mu0,mu1,sigma0,sigma1)
index <- cor_two_normals_classification_indexDataGenerator(n,k=10,p)
new_data <-matrix(NA,n,ncol(data))
for(i in 1:k){
new_data[((i-1)*n/k+1):(i*n/k),] <- data[index[i,],]
}
x <- new_data[, -ncol(new_data)]
y <- new_data[, ncol(new_data)]
return(list(x,y))
}
cor_two_normals_classification.Prepackages <- c("MASS")
cor_two_normals_classification.validation <- function(dataConf) {
if(is.null(dataConf$n)) { return(FALSE) }
if(is.null(dataConf$n0)) { return(FALSE) }
if(is.null(dataConf$n1)) { return(FALSE) }
if(is.null(dataConf$mu0)) { return(FALSE)}
if(is.null(dataConf$mu1)) { return(FALSE) }
if(is.null(dataConf$sigma0)) {return(FALSE)}
if(is.null(dataConf$sigma1)) {return(FALSE)}
if(is.null(dataConf$k)) { return(FALSE) }
if(is.null(dataConf$p)) { return(FALSE) }
return(TRUE)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.