# Generate toy data
set.seed(123)
maf <- 0.25
n.snps <- 50
N <- 2000
X <- matrix(sample(0:2, n.snps * N, replace = TRUE,
prob = c((1-maf)^2, 1-(1-maf)^2-maf^2, maf^2)),
ncol = n.snps)
colnames(X) <- paste("SNP", 1:n.snps, sep="")
X <- splitSNPs(X)
Z <- matrix(rnorm(N, 20, 10), ncol = 1)
colnames(Z) <- "E"
Z[Z < 0] <- 0
y <- -0.75 + log(2) * (X[,"SNP1D"] != 0) +
log(4) * Z/20 * (X[,"SNP2D"] != 0 & X[,"SNP3D"] == 0) +
rnorm(N, 0, 1)
# \donttest{
# Fit and evaluate single logicDT model
model <- logicDT(X[1:(N/2),], y[1:(N/2)],
Z = Z[1:(N/2),,drop=FALSE],
max_vars = 3, max_conj = 2,
search_algo = "sa",
tree_control = tree.control(
nodesize = floor(0.05 * nrow(X)/2)
),
simplify = "vars",
allow_conj_removal = FALSE,
conjsize = floor(0.05 * nrow(X)/2))
calcNRMSE(predict(model, X[(N/2+1):N,],
Z = Z[(N/2+1):N,,drop=FALSE]), y[(N/2+1):N])
plot(model)
print(model)
# Fit and evaluate bagged logicDT model
model.bagged <- logicDT.bagging(X[1:(N/2),], y[1:(N/2)],
Z = Z[1:(N/2),,drop=FALSE],
bagging.iter = 50,
max_vars = 3, max_conj = 3,
search_algo = "greedy",
tree_control = tree.control(
nodesize = floor(0.05 * nrow(X)/2)
),
simplify = "vars",
conjsize = floor(0.05 * nrow(X)/2))
calcNRMSE(predict(model.bagged, X[(N/2+1):N,],
Z = Z[(N/2+1):N,,drop=FALSE]), y[(N/2+1):N])
print(model.bagged)
# Fit and evaluate boosted logicDT model
model.boosted <- logicDT.boosting(X[1:(N/2),], y[1:(N/2)],
Z = Z[1:(N/2),,drop=FALSE],
boosting.iter = 50,
learning.rate = 0.01,
subsample.frac = 0.75,
replace = FALSE,
max_vars = 3, max_conj = 3,
search_algo = "greedy",
tree_control = tree.control(
nodesize = floor(0.05 * nrow(X)/2)
),
simplify = "vars",
conjsize = floor(0.05 * nrow(X)/2))
calcNRMSE(predict(model.boosted, X[(N/2+1):N,],
Z = Z[(N/2+1):N,,drop=FALSE]), y[(N/2+1):N])
print(model.boosted)
# Calculate VIMs (variable importance measures)
vims <- vim(model.bagged)
plot(vims)
print(vims)# }
# Single greedy model
model <- logicDT(X[1:(N/2),], y[1:(N/2)],
Z = Z[1:(N/2),,drop=FALSE],
max_vars = 3, max_conj = 2,
search_algo = "greedy",
tree_control = tree.control(
nodesize = floor(0.05 * nrow(X)/2)
),
simplify = "vars",
allow_conj_removal = FALSE,
conjsize = floor(0.05 * nrow(X)/2))
calcNRMSE(predict(model, X[(N/2+1):N,],
Z = Z[(N/2+1):N,,drop=FALSE]), y[(N/2+1):N])
plot(model)
print(model)
Run the code above in your browser using DataLab