predict.CPGLIB {CPGLIB}R Documentation

Predictions for CPGLIB Object

Description

predict.CPGLIB returns the predictions for a CPGLIB object.

Usage

## S3 method for class 'CPGLIB'
predict(
  object,
  newx,
  groups = NULL,
  ensemble_type = c("Model-Avg", "Coef-Avg", "Weighted-Prob", "Majority-Vote")[1],
  class_type = c("prob", "class")[1],
  ...
)

Arguments

object

An object of class CPGLIB.

newx

New data for predictions.

groups

The groups in the ensemble for the predictions. Default is all of the groups in the ensemble.

ensemble_type

The type of ensembling function for the models. Options are "Model-Avg", "Coef-Avg" or "Weighted-Prob" for classifications predictions. Default is "Model-Avg".

class_type

The type of predictions for classification. Options are "prob" and "class". Default is "prob".

...

Additional arguments for compatibility.

Value

The predictions for the CPGLIB object.

Author(s)

Anthony-Alexander Christidis, anthony.christidis@stat.ubc.ca

See Also

cpg

Examples


# Data simulation
set.seed(1)
n <- 50
N <- 2000
p <- 300
beta.active <- c(abs(runif(p, 0, 1/2))*(-1)^rbinom(p, 1, 0.3))
# Parameters
p.active <- 150
beta <- c(beta.active[1:p.active], rep(0, p-p.active))
Sigma <- matrix(0, p, p)
Sigma[1:p.active, 1:p.active] <- 0.5
diag(Sigma) <- 1

# Train data
x.train <- mvnfast::rmvn(n, mu = rep(0, p), sigma = Sigma) 
prob.train <- exp(x.train %*% beta)/
              (1+exp(x.train %*% beta))
y.train <- rbinom(n, 1, prob.train)
# Test data
x.test <- mvnfast::rmvn(N, mu = rep(0, p), sigma = Sigma)
prob.test <- exp(x.test %*% beta)/
             (1+exp(x.test %*% beta))
y.test <- rbinom(N, 1, prob.test)

# CPGLIB - Multiple Groups
cpg.out <- cpg(x.train, y.train,
               glm_type = "Logistic",
               G = 5, include_intercept = TRUE,
               alpha_s = 3/4, alpha_d = 1,
               lambda_sparsity = 0.01, lambda_diversity = 1,
               balanced_cycling = TRUE,
               tolerance = 1e-5, max_iter = 1e5)

# Predictions
cpg.prob <- predict(cpg.out, newx = x.test, type = "prob", 
                    groups = 1:cpg.out$G, ensemble_type = "Model-Avg")
cpg.class <- predict(cpg.out, newx = x.test, type = "prob", 
                     groups = 1:cpg.out$G, ensemble_type = "Model-Avg")
plot(prob.test, cpg.prob, pch=20)
abline(h=0.5,v=0.5)
mean((prob.test-cpg.prob)^2)
mean(abs(y.test-cpg.class))




[Package CPGLIB version 1.0.1 Index]