Permutation fitting for ncvreg
Fits multiple penalized regression models in which the outcome is randomly permuted, thereby allowing estimation of the marginal false discovery rate.
perm.ncvreg(X, y, ..., permute=c("outcome", "residuals"), N=10, seed, trace=FALSE)
X |
The design matrix, without an intercept, as in |
y |
The response vector, as in |
... |
Additional arguments to |
permute |
What to permute. If |
N |
The number of permutation replications. Default is 10. |
seed |
You may set the seed of the random number generator in order to obtain reproducible results. |
trace |
If set to TRUE, perm.ncvreg will inform the user of its progress by announcing the beginning of each permutation fit. Default is FALSE. |
The function fits a penalized regression model to the actual data,
then repeats the process N
times with a permuted version of the
response vector. This allows estimation of the expected number of
variables included by chance for each value of lambda
. The
ratio of this expected quantity to the number of selected variables
using the actual (non-permuted) response is called the marginal false
discovery rate (mFDR).
An object with S3 class "perm.ncvreg"
containing:
EF |
The number of variables selected at each value of
|
S |
The actual number of selected variables for the non-permuted data. |
mFDR |
The estimated marginal false discovery rate ( |
fit |
The fitted |
loss |
The loss/deviance for each value of |
Patrick Breheny <patrick-breheny@uiowa.edu>
# Linear regression -------------------------------------------------- data(Prostate) pmfit <- perm.ncvreg(Prostate$X, Prostate$y) op <- par(mfcol=c(2,2)) plot(pmfit) plot(pmfit, type="EF") plot(pmfit$fit) lam <- pmfit$fit$lambda pmfit.r <- perm.ncvreg(Prostate$X, Prostate$y, permute='residuals') plot(pmfit.r, col="red") # Permuting residuals is lines(lam, pmfit$mFDR, col="gray60") # less conservative par(op) # Logistic regression ------------------------------------------------ data(Heart) pmfit <- perm.ncvreg(Heart$X, Heart$y, family="binomial") op <- par(mfcol=c(2,2)) plot(pmfit) plot(pmfit, type="EF") plot(pmfit$fit) par(op)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.