Learn R Programming

MFKnockoffs (version 0.9.1)

MFKnockoffs.stat.lasso_lambda_signed_max_bin: Penalized logistic regression statistics for MFKnockoffs

Description

Computes the signed maximum statistic $$W_j = \max(Z_j, \tilde{Z}_j) \cdot \mathrm{sgn}(Z_j - \tilde{Z}_j),$$ where \(Z_j\) and \(\tilde{Z}_j\) are the maximum values of \(\lambda\) at which the jth variable and its knockoff, respectively, enter the penalized logistic regression model.

Usage

MFKnockoffs.stat.lasso_lambda_signed_max_bin(X, X_k, y, ...)

Arguments

X

original design matrix (size n-by-p)

X_k

knockoff matrix (size n-by-p)

y

response vector (length n). It should be either a factor with two levels, or a two-column matrix of counts or proportions (the second column is treated as the target class; for a factor, the last level in alphabetical order is the target class). If y is presented as a vector, it will be coerced into a factor.

...

additional arguments specific to 'glmnet' or 'lars' (see Details)

Value

A vector of statistics \(W\) (length p)

Details

This function uses glmnet to compute the regularization path on a fine grid of \(\lambda\)'s.

The additional nlambda parameter can be used to control the granularity of the grid of \(\lambda\) values. The default value of nlambda is 100.

This function is a wrapper around the more general MFKnockoffs.stat.glmnet_lambda_difference.

For a complete list of the available additional arguments, see glmnet.

Examples

Run this code
# NOT RUN {
p=100; n=200; k=15
mu = rep(0,p); Sigma = diag(p)
X = matrix(rnorm(n*p),n)
nonzero = sample(p, k)
beta = 3.5 * (1:p %in% nonzero)
pr = 1/(1+exp(-X %*% beta))
y = rbinom(n,1,pr)

knockoffs = function(X) MFKnockoffs.create.gaussian(X, mu, Sigma)
# Basic usage with default arguments
result = MFKnockoffs.filter(X, y, knockoff=knockoffs,
                           statistic=MFKnockoffs.stat.lasso_lambda_signed_max_bin)
print(result$selected)

# Advanced usage with custom arguments
foo = MFKnockoffs.stat.lasso_lambda_signed_max_bin
k_stat = function(X, X_k, y) foo(X, X_k, y, nlambda=200)
result = MFKnockoffs.filter(X, y, knockoffs=knockoffs, statistic=k_stat)
print(result$selected)

# }

Run the code above in your browser using DataLab