From d26c6d3a724564db3a9c812f0c29515d4f0c1e0b Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Tue, 29 Sep 2015 09:07:37 -0700 Subject: [PATCH 001/493] Create README.md --- README.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..f50527e --- /dev/null +++ b/README.md @@ -0,0 +1,16 @@ +# R-software +R software for selective inference +Authors: Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid +Maintainer: Rob Tibshirani + +New tools for inference after selection, for use with forward stepwise regression, least angle regression, the lasso, and the many means problem. + +Code is in the directory selectiveInference/R. +* funs.common.R: Basic functions used by many other functions, such as standardization. +* funs.fixed.R: Inference for LASSO at a fixed, deterministic value of lambda. +* funs.fs.R: Inference for forward stepwise. +* funs.groupfs.R: Inference for forward stepwise with groups of variables, e.g. factors. +* funs.inf.R: Common functions for inference with fixed, fs, lar, and manymeans (but not group). +* funs.lar.R: Inference for least angle regression. +* funs.max.R: Some numerical approximations. Deprecated? + From 48add166ef5cd3fa1331776d03b4dee09bdeda79 Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Tue, 29 Sep 2015 09:10:19 -0700 Subject: [PATCH 002/493] Editing readme --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index f50527e..2d38cdf 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # R-software -R software for selective inference -Authors: Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid -Maintainer: Rob Tibshirani +R software for selective inference +Authors: Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid +Maintainer: Rob Tibshirani New tools for inference after selection, for use with forward stepwise regression, least angle regression, the lasso, and the many means problem. From c8ab08afcdc978df30840bb0993c7572205d5b7e Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Tue, 29 Sep 2015 09:13:54 -0700 Subject: [PATCH 003/493] Fixed test.groupfs.R --- tests/test.groupfs.R | 28 +--------------------------- 1 file changed, 1 insertion(+), 27 deletions(-) diff --git a/tests/test.groupfs.R b/tests/test.groupfs.R index 167dd0a..b590228 100644 --- a/tests/test.groupfs.R +++ b/tests/test.groupfs.R @@ -92,7 +92,7 @@ cnames[fit$action]#[1:length(fsnames)] print("empty") } -<<<<<<< HEAD:forLater/josh/tests/test.groupfs.R + ======= set.seed(1) n = 100 @@ -133,29 +133,3 @@ print(colMeans(pvalmk)) print(mean(pvalm)) print(mean(pvalmk)) -<<<<<<< HEAD ->>>>>>> 5c372de287b5ff9455ddce7dd513fb868d09e7e6:tests/test.groupfs.R -======= - - - - set.seed(1) - n <- 40 - p <- 20 - index <- sort(rep(1:(p/2), 2)) - steps <- 10 - sparsity <- 5 - snr <- 3 - sigma=3 - - y <- rnorm(n)*sigma - x <- matrix(rnorm(n*p), nrow=n) - - - beta <- rep(0, p) - beta[which(index %in% 1:sparsity)] <- snr - y <- y + x %*% beta - - fit <- groupfs(x, y, index=index, maxsteps = steps) - foo=groupfsInf(fit) ->>>>>>> bc141572a79c89a69ca48574049b3006fa4b38ca From fdb0814926d132437378e1cae4056a02afad9b2e Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Tue, 29 Sep 2015 10:21:05 -0700 Subject: [PATCH 004/493] More test.groupfs fixes --- forLater/josh/cv.R | 103 ---------------------------------- forLater/josh/tests/robsNotes | 37 ------------ tests/test.groupfs.R | 17 ++---- 3 files changed, 4 insertions(+), 153 deletions(-) delete mode 100644 forLater/josh/cv.R delete mode 100644 forLater/josh/tests/robsNotes diff --git a/forLater/josh/cv.R b/forLater/josh/cv.R deleted file mode 100644 index 2787990..0000000 --- a/forLater/josh/cv.R +++ /dev/null @@ -1,103 +0,0 @@ -# ------------------------------------------------ -# Cross-validation, preliminary - - -cv_make_folds <- function(x, nfolds = 10) { - #inds <- sample(1:nrow(x), replace=FALSE) - inds <- 1:nrow(x) - foldsize <- floor(nrow(x)/nfolds) - lapply(1:nfolds, function(f) return(inds[1:foldsize+(f-1)*foldsize])) -} - -cv_hat_matrix <- function(x, folds, active.sets) { - nfolds <- length(folds) - lapply(1:nfolds, function(f) { - fold <- folds[[f]] - active <- active.sets[[f]] - x_tr <- x[ -fold, active] - x_te <- x[fold, active] - hatm <- matrix(0, nrow=length(fold), ncol=nrow(x)) - hatm[, -fold] <- x_te %*% ginv(x_tr) - return(hatm) - }) -} - -product_cv_hat <- function(folds, inds, finds, ginds, hat_matrices) { - nfolds <- length(folds) - terms <- lapply(inds, function(h) { - t(hat_matrices[[h]][, finds]) %*% hat_matrices[[h]][, ginds] - }) - return(Reduce('+', terms)) -} - -cv_RSSquad <- function(x, folds, active.sets) { - hat_matrices <- cv_hat_matrix(x, folds, active.sets) - nfolds <- length(folds) - rows <- lapply(1:nfolds, function(f) { - do.call(cbind, lapply(1:nfolds, function(g) { - ginds <- folds[[g]] - finds <- folds[[f]] - if (f == g) { - return(product_cv_hat(folds, setdiff(1:nfolds, f), finds, ginds, hat_matrices)) - } else { - return( - product_cv_hat(folds, setdiff(1:nfolds, c(f,g)), finds, ginds, hat_matrices) - hat_matrices[[f]][, ginds] - t(hat_matrices[[g]][, finds])) - } - })) - }) - Q <- do.call(rbind, rows) - return(Q) -} - -cv_fs <- function(x, y, steps, nfolds = 10) { - - n <- nrow(x) - if (steps >= n*(1-1/nfolds)) stop("Too many steps") - - folds <- cv_make_folds(x, nfolds) - nfolds <- length(folds) - projections <- list() - active.sets <- list() - cv_perm <- sample(1:n) - Y <- y[cv_perm] - mean(y) - X <- x[cv_perm, ] - - for (f in 1:nfolds) { - fold <- folds[[f]] - fit <- groupfs(X[-fold,], Y[-fold], steps=steps) - path.projs <- fit$projections - path.projs <- lapply(path.projs, function(step.projs) { - lapply(step.projs, function(proj) { - expanded.proj <- matrix(0, n, n) - expanded.proj[-fold, -fold] <- proj - return(expanded.proj) - }) - }) - projections[[f]] <- path.projs - active.sets[[f]] <- fit$variable - } - projections <- do.call(c, projections) - - RSSquads <- list() - for (s in 1:steps) { - initial.active <- lapply(active.sets, function(a) a[1:s]) - RSSquads[[s]] <- cv_RSSquad(X, folds, initial.active) - } - - RSSs <- lapply(RSSquads, function(Q) t(Y) %*% Q %*% Y) - sstar <- which.min(RSSs) - quadstar <- RSSquads[sstar][[1]] - - RSSquads <- lapply(RSSquads, function(quad) quad - quadstar) - RSSquads[[sstar]] <- NULL # remove the all zeroes case - - fit <- groupfs(X, Y, steps=sstar) - fit$projections <- flatten(fit$projections) - fit$foldprojections <- flatten(projections) - fit$rssprojections <- flatten(RSSquads) - - fit$cvperm <- cv_perm - - invisible(fit) -} - diff --git a/forLater/josh/tests/robsNotes b/forLater/josh/tests/robsNotes deleted file mode 100644 index 8d7c3be..0000000 --- a/forLater/josh/tests/robsNotes +++ /dev/null @@ -1,37 +0,0 @@ -notes - -see bottom of test.groupfs.R - -1. with n=100, p=120,14 groups, groupfs(x, y,index) returned - - - Error in checkargs.groupfs(x, index, maxsteps) : - maxsteps is too large. If the largest groups are included the model will be saturated/overdetermined - -should have a sensible default so this doesn;t happen - - -2. a=groupfs(x,y,index,maxsteps=4) -groupfsInf(a) gives - - -Using sigma value: -Step 1 - computing p-value for group 14 -Step 2 - computing p-value for group 12 -Step 3 - computing p-value for group 1 -Step 4 - computing p-value for group 13 -Warning messages: -1: In groupfsInf(a) : - p > n/2, and sigmahat = 0.434 used as an estimate of sigma; you may want to use the estimateSigma function -2: In groupfsInf(a) : - P-value NaNs of the form 0/0 converted to 0. This typically occurs for numerical reasons in the presence of a large signal-to-noise ratio. -> aa - -Standard deviation of noise (specified or estimated) sigma = 0.434 -Error in lapply(pvals$support, size) : object 'pvals' not found - - - -3. groupfs has a sigma arg listed in the Rd file, but it's not in the function?? - -you need to do a R CMD check to pick up this stuff diff --git a/tests/test.groupfs.R b/tests/test.groupfs.R index b590228..629bec1 100644 --- a/tests/test.groupfs.R +++ b/tests/test.groupfs.R @@ -1,10 +1,4 @@ -library(intervals) -source("../selectiveInference/R/funs.common.R") -source("../selectiveInference/R/funs.groupfs.R") -source("../selectiveInference/R/funs.quadratic.R") -source("../selectiveInference/R/funs.fs.R") -source("../selectiveInference/R/funs.lar.R") -#library(selectiveInference) +library(selectiveInference) #library(lars) set.seed(1) @@ -65,8 +59,8 @@ for (j in 1:ncol(state.x77)) { states[,j] <- var } states <- cbind(states, state.division) -x <- factor_design(states)$x -X <- scale_groups(x, index)$x +x <- factorDesign(states)$x +X <- scaleGroups(x, index)$x p <- ncol(x) y <- rnorm(n) @@ -92,13 +86,10 @@ cnames[fit$action]#[1:length(fsnames)] print("empty") } - -======= -set.seed(1) n = 100 p = 120 maxsteps = 9 -niter = 50 +niter = 500 # 10 groups of size 10, 10 groups of size 2 index = sort(c(c(1, 1), rep(2:11, 10), rep(12:20, 2))) pvalm = pvalmk = matrix(NA, nrow=niter, ncol=maxsteps) From 5119f8613f5d6bd175355e334fba07f82658888e Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Tue, 29 Sep 2015 22:49:39 -0700 Subject: [PATCH 005/493] Unfinished, but modifying cv to work with refactored groupfs functions --- forLater/josh/selectiveInference/R/cv.R | 105 ++++++++++++++++++++++++ forLater/josh/tests/test.cv.R | 9 ++ 2 files changed, 114 insertions(+) create mode 100644 forLater/josh/selectiveInference/R/cv.R create mode 100644 forLater/josh/tests/test.cv.R diff --git a/forLater/josh/selectiveInference/R/cv.R b/forLater/josh/selectiveInference/R/cv.R new file mode 100644 index 0000000..cdc5092 --- /dev/null +++ b/forLater/josh/selectiveInference/R/cv.R @@ -0,0 +1,105 @@ +# ------------------------------------------------ +# Cross-validation, preliminary + +cvMakeFolds <- function(x, nfolds = 10) { + #inds <- sample(1:nrow(x), replace=FALSE) + inds <- 1:nrow(x) + foldsize <- floor(nrow(x)/nfolds) + lapply(1:nfolds, function(f) return(inds[1:foldsize+(f-1)*foldsize])) +} + +cvHatMatrix <- function(x, folds, active.sets) { + nfolds <- length(folds) + lapply(1:nfolds, function(f) { + fold <- folds[[f]] + active <- active.sets[[f]] + x_tr <- x[ -fold, active] + x_te <- x[fold, active] + hatm <- matrix(0, nrow=length(fold), ncol=nrow(x)) + hatm[, -fold] <- x_te %*% ginv(x_tr) + return(hatm) + }) +} + +cvProductHat <- function(folds, inds, finds, ginds, hat_matrices) { + nfolds <- length(folds) + terms <- lapply(inds, function(h) { + t(hat_matrices[[h]][, finds]) %*% hat_matrices[[h]][, ginds] + }) + return(Reduce('+', terms)) +} + +cvRSSquad <- function(x, folds, active.sets) { + hat_matrices <- cvHatMatrix(x, folds, active.sets) + nfolds <- length(folds) + rows <- lapply(1:nfolds, function(f) { + do.call(cbind, lapply(1:nfolds, function(g) { + ginds <- folds[[g]] + finds <- folds[[f]] + if (f == g) { + return(cvProductHat(folds, setdiff(1:nfolds, f), finds, ginds, hat_matrices)) + } else { + return( + cvProductHat(folds, setdiff(1:nfolds, c(f,g)), finds, ginds, hat_matrices) - hat_matrices[[f]][, ginds] - t(hat_matrices[[g]][, finds])) + } + })) + }) + Q <- do.call(rbind, rows) + return(Q) +} + +cvfs <- function(x, y, index = 1:ncol(x), maxsteps, nfolds = 10) { + + n <- nrow(x) + if (maxsteps >= n*(1-1/nfolds)) { + maxsteps <- floor(n*(1-1/nfolds)) + warning(paste("maxsteps too large for training fold size, set to", maxsteps)) + } + + folds <- cvMakeFolds(x, nfolds) + nfolds <- length(folds) + projections <- list(1:nfolds) + active.sets <- list(1:nfolds) + cv_perm <- sample(1:n) + Y <- y[cv_perm] - mean(y) + X <- x[cv_perm, ] + + # Flatten list or something? + for (f in 1:nfolds) { + fold <- folds[[f]] + fit <- groupfs(X[-fold,], Y[-fold], index, maxsteps=maxsteps) + projections[[f]] <- lapply(fit$projections, function(step.projs) { + lapply(step.projs, function(proj) { + # Reduce from n by n matrix to svdu_thresh + expanded.proj <- matrix(0, n, ncol(proj)) + expanded.proj[-fold, ] <- proj + return(expanded.proj) + }) + }) + active.sets[[f]] <- fit$action + } + projections <- do.call(c, projections) + + RSSquads <- list() + for (s in 1:maxsteps) { + initial.active <- lapply(active.sets, function(a) a[1:s]) + RSSquads[[s]] <- cvRSSquad(X, folds, initial.active) + } + + RSSs <- lapply(RSSquads, function(Q) t(Y) %*% Q %*% Y) + sstar <- which.min(RSSs) + quadstar <- RSSquads[sstar][[1]] + + RSSquads <- lapply(RSSquads, function(quad) quad - quadstar) + RSSquads[[sstar]] <- NULL # remove the all zeroes case + + fit <- groupfs(X, Y, index, maxsteps=sstar) + fit$projections <- flatten(fit$projections) + fit$foldprojections <- flatten(projections) + fit$rssprojections <- flatten(RSSquads) + + fit$cvperm <- cv_perm + + invisible(fit) +} + diff --git a/forLater/josh/tests/test.cv.R b/forLater/josh/tests/test.cv.R new file mode 100644 index 0000000..22743ec --- /dev/null +++ b/forLater/josh/tests/test.cv.R @@ -0,0 +1,9 @@ +library(selectiveInference) + +source("../selectiveInference/R/cv.R") + +n = 100 +p = 20 +x <- matrix(rnorm(n*p), nrow=n) +y <- rnorm(n) +fit <- cvfs(x, y, maxsteps = 5) From d03455fc2e12d5b5e70cc38fe789a968198c3d2a Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Wed, 30 Sep 2015 18:03:13 -0700 Subject: [PATCH 006/493] Some documentation edits, significant progress on CV --- forLater/josh/selectiveInference/R/cv.R | 35 ++++++++----- selectiveInference/DESCRIPTION | 15 +++--- selectiveInference/R/funs.groupfs.R | 67 ++++++++++++++----------- selectiveInference/R/funs.quadratic.R | 3 +- selectiveInference/man/factorDesign.Rd | 3 +- selectiveInference/man/groupfs.Rd | 7 ++- selectiveInference/man/groupfsInf.Rd | 27 ++-------- selectiveInference/man/scaleGroups.Rd | 11 ++-- 8 files changed, 83 insertions(+), 85 deletions(-) diff --git a/forLater/josh/selectiveInference/R/cv.R b/forLater/josh/selectiveInference/R/cv.R index cdc5092..adbc011 100644 --- a/forLater/josh/selectiveInference/R/cv.R +++ b/forLater/josh/selectiveInference/R/cv.R @@ -8,6 +8,9 @@ cvMakeFolds <- function(x, nfolds = 10) { lapply(1:nfolds, function(f) return(inds[1:foldsize+(f-1)*foldsize])) } +############################################ +# Can this be optimized using svdu_thresh? # +############################################ cvHatMatrix <- function(x, folds, active.sets) { nfolds <- length(folds) lapply(1:nfolds, function(f) { @@ -16,7 +19,10 @@ cvHatMatrix <- function(x, folds, active.sets) { x_tr <- x[ -fold, active] x_te <- x[fold, active] hatm <- matrix(0, nrow=length(fold), ncol=nrow(x)) - hatm[, -fold] <- x_te %*% ginv(x_tr) + svdtr <- svd(x_tr) + inds <- svdtr$d > .Machine$double.eps * svdtr$d[1] + xtrinv <- svdtr$v[, inds, drop = FALSE] %*% ((1/svdtr$d[inds]) * t(svdtr$u[, inds, drop = FALSE])) + hatm[, -fold] <- x_te %*% xtrinv return(hatm) }) } @@ -59,7 +65,9 @@ cvfs <- function(x, y, index = 1:ncol(x), maxsteps, nfolds = 10) { folds <- cvMakeFolds(x, nfolds) nfolds <- length(folds) projections <- list(1:nfolds) + maxprojs <- list(1:nfolds) active.sets <- list(1:nfolds) + cvobj <- list(1:nfolds) cv_perm <- sample(1:n) Y <- y[cv_perm] - mean(y) X <- x[cv_perm, ] @@ -68,17 +76,19 @@ cvfs <- function(x, y, index = 1:ncol(x), maxsteps, nfolds = 10) { for (f in 1:nfolds) { fold <- folds[[f]] fit <- groupfs(X[-fold,], Y[-fold], index, maxsteps=maxsteps) - projections[[f]] <- lapply(fit$projections, function(step.projs) { - lapply(step.projs, function(proj) { - # Reduce from n by n matrix to svdu_thresh - expanded.proj <- matrix(0, n, ncol(proj)) - expanded.proj[-fold, ] <- proj - return(expanded.proj) - }) - }) + fit$fold <- fold + ## projections[[f]] <- lapply(fit$projections, function(step.projs) { + ## lapply(step.projs, function(proj) { + ## # Reduce from n by n matrix to svdu_thresh + ## expanded.proj <- matrix(0, n, ncol(proj)) + ## expanded.proj[-fold, ] <- proj + ## return(expanded.proj) + ## }) + ## }) active.sets[[f]] <- fit$action + cvobj[[f]] <- fit } - projections <- do.call(c, projections) + #projections <- do.call(c, projections) RSSquads <- list() for (s in 1:maxsteps) { @@ -94,9 +104,8 @@ cvfs <- function(x, y, index = 1:ncol(x), maxsteps, nfolds = 10) { RSSquads[[sstar]] <- NULL # remove the all zeroes case fit <- groupfs(X, Y, index, maxsteps=sstar) - fit$projections <- flatten(fit$projections) - fit$foldprojections <- flatten(projections) - fit$rssprojections <- flatten(RSSquads) + fit$cvobj <- cvobj + fit$rssprojections <- RSSquads fit$cvperm <- cv_perm diff --git a/selectiveInference/DESCRIPTION b/selectiveInference/DESCRIPTION index df66eb5..0f352b6 100644 --- a/selectiveInference/DESCRIPTION +++ b/selectiveInference/DESCRIPTION @@ -3,12 +3,15 @@ Type: Package Title: Tools for Selective Inference Version: 1.1.1 Date: 2015-09-01 -Author: Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, - Joshua Loftus, Stephen Reid +Author: Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, + Joshua Loftus, Stephen Reid Maintainer: Rob Tibshirani -Depends: glmnet, intervals -Suggests: Rmpfr +Depends: + glmnet, + intervals +Suggests: + Rmpfr Description: New tools for inference after selection, for use - with forward stepwise regression, least angle regression, the - lasso, and the many means problem. + with forward stepwise regression, least angle regression, the + lasso, and the many means problem. License: GPL-2 diff --git a/selectiveInference/R/funs.groupfs.R b/selectiveInference/R/funs.groupfs.R index 3434bd6..8fae045 100644 --- a/selectiveInference/R/funs.groupfs.R +++ b/selectiveInference/R/funs.groupfs.R @@ -1,12 +1,12 @@ #' Select a model with forward stepwise. #' -#' This function implements forward selection of linear models almost identically to \code{\link{stepAIC}} with \code{direction = "forward"}. The reason this is a separate function from \code{\link{fs}} is that groups of variables (e.g. dummies encoding levels of a categorical variable) must be handled differently in the selective inference framework. +#' This function implements forward selection of linear models almost identically to \code{\link[stats]{step}} with \code{direction = "forward"}. The reason this is a separate function from \code{\link{fs}} is that groups of variables (e.g. dummies encoding levels of a categorical variable) must be handled differently in the selective inference framework. #' #' @param x Matrix of predictors (n by p). #' @param y Vector of outcomes (length n). #' @param index Group membership indicator of length p. #' @param maxsteps Maximum number of steps for forward stepwise. -#' @param sigma Estimate of error standard deviation for use in AIC criterion. This determines the relative scale between RSS and the degrees of freedom penalty. Default is NULL corresponding to unknown sigma. See \code{\link{extractAIC}} for details. +#' @param sigma Estimate of error standard deviation for use in AIC criterion. This determines the relative scale between RSS and the degrees of freedom penalty. Default is NULL corresponding to unknown sigma. See \code{\link[stats]{extractAIC}} for details. #' @param k Multiplier of model size penalty, the default is \code{k = 2} for AIC. Use \code{k = log(n)} for BIC, or \code{k = log(p)} for RIC. #' @param intercept Should an intercept be included in the model? Default is TRUE. #' @param normalize Should the design matrix be normalized? Default is TRUE. @@ -196,11 +196,10 @@ add1.groupfs <- function(x, y, index, labels, inactive, k, sigma = NULL) { #' Compute selective p-values for a model fitted by \code{groupfs}. #' -#' Computes p-values for each group of variables in a model fitted by \code{\link{groupfs}}. These p-values adjust for selection by truncating the usual \code{chi^2} statistics to the regions implied by the model selection event. Details are provided in a forthcoming work. +#' Computes p-values for each group of variables in a model fitted by \code{\link{groupfs}}. These p-values adjust for selection by truncating the usual \eqn{\chi^2} statistics to the regions implied by the model selection event. Details are provided in a forthcoming work. #' #' @param obj Object returned by \code{\link{groupfs}} function #' @param sigma Estimate of error standard deviation. If NULL (default), this is estimated using the mean squared residual of the full least squares fit when n >= 2p, and the mean squared residual of the selected model when n < 2p. In the latter case, the user should use \code{\link{estimateSigma}} function for a more accurate estimate. -#' @param projs Additional projections to define model selection event. For use with cross-validation. Default is NULL and it is not recommended to change this. #' @param verbose Print out progress along the way? Default is FALSE. #' @return An object of class "groupfsInf" containing selective p-values for the fitted model \code{obj}. The default printing behavior should supply adequate information. #' @@ -212,18 +211,16 @@ add1.groupfs <- function(x, y, index, labels, inactive, k, sigma = NULL) { #' \item{df}{Rank of group of variables when it was added to the model.} #' \item{support}{List of intervals defining the truncation region of the truncated chi.} #' } -groupfsInf <- function(obj, sigma = NULL, projs = NULL, verbose = FALSE) { +groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { n <- nrow(obj$x) p <- ncol(obj$x) - active <- obj$action maxsteps <- attr(obj, "maxsteps") k <- attr(obj, "k") index <- obj$index x <- obj$x y <- obj$y - Eindex <- which(index %in% active) - Ep <- length(Eindex) + Ep <- sum(index %in% obj$action) nanconv <- FALSE pvals <- numeric(maxsteps) @@ -250,40 +247,43 @@ groupfsInf <- function(obj, sigma = NULL, projs = NULL, verbose = FALSE) { # Compute p-value for each active group for (j in 1:maxsteps) { - i <- active[j] - if (verbose) cat(paste0("Step ", j, "/", maxsteps, ": computing P-value for group ", i, "\n")) + i <- obj$action[j] + if (verbose) cat(paste0("Step ", j, "/", attr(obj, "maxsteps"), ": computing P-value for group ", i, "\n")) # Form projection onto active set minus i # and project x_i orthogonally - x_i <- x[,which(index == i), drop = FALSE] - if (length(active) > 1) { - minus_i <- setdiff(active, i) - x_minus_i <- svdu_thresh(x[,which(index %in% minus_i), drop = FALSE]) + x_i <- obj$x[,which(obj$index == i), drop = FALSE] + if (length(obj$action) > 1) { + minus_i <- setdiff(obj$action, i) + x_minus_i <- svdu_thresh(obj$x[,which(obj$index %in% minus_i), drop = FALSE]) x_i <- x_i - x_minus_i %*% t(x_minus_i) %*% x_i } # Project y onto what remains of x_i Ugtilde <- svdu_thresh(x_i) - R <- t(Ugtilde) %*% y + R <- t(Ugtilde) %*% obj$y TC <- sqrt(sum(R^2)) eta <- Ugtilde %*% R / TC + Z <- obj$y - eta * TC df <- ncol(Ugtilde) - dfs[j] <- df - TCs[j] <- TC - - # For each step... - L <- interval_groupfs(obj, TC, R, eta, Ugtilde) - - # Any additional projections, e.g. from cross-validation? - if (!is.null(projs)) L <- c(L, projs) - + + intervallist <- truncationRegion(obj, TC, R, eta, Z) + if (!is.null(fit$cvobj)) { + intervallist <- c(intervallist, do.call(c, + lapply(fit$cvobj, function(cvf) { + truncationRegion(cvf, TC, R[-cvf$fold], eta[-cvf$fold], Z[-cvf$fold]) + }))) + } + # Compute intersection: - Lunion <- do.call(interval_union, L) - Lunion <- interval_union(Lunion, Intervals(c(-Inf,0))) - E <- interval_complement(Lunion, check_valid = FALSE) + region <- do.call(interval_union, intervallist) + region <- interval_union(region, Intervals(c(-Inf,0))) + E <- interval_complement(region, check_valid = FALSE) supports[[j]] <- E # E is now potentially a union of intervals - if (length(E) == 0) stop("Trivial intersection") + if (length(E) == 0) { + stop(paste("Empty TC support at step", j)) + } # Sum truncated cdf over each part of E denom <- do.call(sum, lapply(1:nrow(E), function(v) { @@ -323,7 +323,7 @@ groupfsInf <- function(obj, sigma = NULL, projs = NULL, verbose = FALSE) { } if (nanconv) warning("P-value NaNs of the form 0/0 converted to 0. This typically occurs for numerical reasons in the presence of a large signal-to-noise ratio.") names(pvals) <- obj$action - out <- list(vars = active, pv=pvals, sigma=sigma, TC=TCs, df = dfs, support=supports) + out <- list(vars = obj$action, pv=pvals, sigma=sigma, TC=TCs, df = dfs, support=supports) class(out) <- "groupfsInf" if (!is.null(attr(obj, "varnames"))) { attr(out, "varnames") <- attr(obj, "varnames") @@ -356,11 +356,18 @@ num_int_chi <- function(a, b, df, nsamp = 10000) { #' Center and scale design matrix by groups #' +#' For internal use by \code{\link{groupfs}}. +#' #' @param x Design matrix. #' @param index Group membership indicator of length p. #' @param center Center groups, default is TRUE. #' @param scale Scale groups by Frobenius norm, default is TRUE. -#' @return Scaled design matrix +#' @return +#' \describe{ +#' \item{x}{Optionally centered/scaled design matrix.} +#' \item{xm}{Means of groups in original design matrix.} +#' \item{xs}{Frobenius norms of groups in original design matrix.} +#' } scaleGroups <- function(x, index, center = TRUE, scale = TRUE) { keys <- unique(index) xm <- rep(0, ncol(x)) diff --git a/selectiveInference/R/funs.quadratic.R b/selectiveInference/R/funs.quadratic.R index 1aff7ec..e8b1408 100644 --- a/selectiveInference/R/funs.quadratic.R +++ b/selectiveInference/R/funs.quadratic.R @@ -1,7 +1,6 @@ -interval_groupfs <- function(obj, TC, R, eta, Ugtilde, tol = 1e-15) { +truncationRegion <- function(obj, TC, R, eta, Z, tol = 1e-15) { - Z <- obj$y - eta * TC n <- nrow(obj$x) L <- lapply(1:length(obj$action), function(s) { diff --git a/selectiveInference/man/factorDesign.Rd b/selectiveInference/man/factorDesign.Rd index d5d2576..3a42e2e 100644 --- a/selectiveInference/man/factorDesign.Rd +++ b/selectiveInference/man/factorDesign.Rd @@ -1,5 +1,4 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand -% Please edit documentation in R/funs.groupfs.R +% Generated by roxygen2 (4.0.1.99): do not edit by hand \name{factorDesign} \alias{factorDesign} \title{Expand a data frame with factors to form a design matrix with the full binary encoding of each factor.} diff --git a/selectiveInference/man/groupfs.Rd b/selectiveInference/man/groupfs.Rd index 4567c6f..6f719a9 100644 --- a/selectiveInference/man/groupfs.Rd +++ b/selectiveInference/man/groupfs.Rd @@ -1,5 +1,4 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand -% Please edit documentation in R/funs.groupfs.R +% Generated by roxygen2 (4.0.1.99): do not edit by hand \name{groupfs} \alias{groupfs} \title{Select a model with forward stepwise.} @@ -16,7 +15,7 @@ groupfs(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE, \item{maxsteps}{Maximum number of steps for forward stepwise.} -\item{sigma}{Estimate of error standard deviation for use in AIC criterion. This determines the relative scale between RSS and the degrees of freedom penalty. Default is NULL corresponding to unknown sigma. See \code{\link{extractAIC}} for details.} +\item{sigma}{Estimate of error standard deviation for use in AIC criterion. This determines the relative scale between RSS and the degrees of freedom penalty. Default is NULL corresponding to unknown sigma. See \code{\link[stats]{extractAIC}} for details.} \item{k}{Multiplier of model size penalty, the default is \code{k = 2} for AIC. Use \code{k = log(n)} for BIC, or \code{k = log(p)} for RIC.} @@ -30,7 +29,7 @@ groupfs(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE, An object of class "groupfs" containing information about the sequence of models in the forward stepwise algorithm. Call the function \code{\link{groupfsInf}} on this object to compute selective p-values. } \description{ -This function implements forward selection of linear models almost identically to \code{\link{stepAIC}} with \code{direction = "forward"}. The reason this is a separate function from \code{\link{fs}} is that groups of variables (e.g. dummies encoding levels of a categorical variable) must be handled differently in the selective inference framework. +This function implements forward selection of linear models almost identically to \code{\link[stats]{step}} with \code{direction = "forward"}. The reason this is a separate function from \code{\link{fs}} is that groups of variables (e.g. dummies encoding levels of a categorical variable) must be handled differently in the selective inference framework. } \examples{ x = matrix(rnorm(20*40), nrow=20) diff --git a/selectiveInference/man/groupfsInf.Rd b/selectiveInference/man/groupfsInf.Rd index 43cf25b..4926896 100644 --- a/selectiveInference/man/groupfsInf.Rd +++ b/selectiveInference/man/groupfsInf.Rd @@ -1,18 +1,15 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand -% Please edit documentation in R/funs.groupfs.R +% Generated by roxygen2 (4.0.1.99): do not edit by hand \name{groupfsInf} \alias{groupfsInf} \title{Compute selective p-values for a model fitted by \code{groupfs}.} \usage{ -groupfsInf(obj, sigma = NULL, projs = NULL, verbose = FALSE) +groupfsInf(obj, sigma = NULL, verbose = FALSE) } \arguments{ \item{obj}{Object returned by \code{\link{groupfs}} function} \item{sigma}{Estimate of error standard deviation. If NULL (default), this is estimated using the mean squared residual of the full least squares fit when n >= 2p, and the mean squared residual of the selected model when n < 2p. In the latter case, the user should use \code{\link{estimateSigma}} function for a more accurate estimate.} -\item{projs}{Additional projections to define model selection event. For use with cross-validation. Default is NULL and it is not recommended to change this.} - \item{verbose}{Print out progress along the way? Default is FALSE.} } \value{ @@ -28,24 +25,6 @@ An object of class "groupfsInf" containing selective p-values for the fitted mod } } \description{ -Computes p-values for each group of variables in a model fitted by \code{\link{groupfs}}. These p-values adjust for selection by truncating the usual \code{chi^2} statistics to the regions implied by the model selection event. Details are provided in a forthcoming work. -} -\examples{ -#NOT RUN -#set.seed(1) -#n <- 40 -#p <- 20 -#index <- sort(rep(1:(p/2), 2)) -#steps <- 10 -#sparsity <- 5 -#snr <- 3 -# x <- matrix(rnorm(n*p), nrow=n) -# beta <- rep(0, p) -# beta[which(index %in% 1:sparsity)] <- snr -# y <- x %*% beta+rnorm(n) - -#fit <- groupfs(x, y, index=1:p, maxsteps = steps) - -#out<- groupfsInf(fit) +Computes p-values for each group of variables in a model fitted by \code{\link{groupfs}}. These p-values adjust for selection by truncating the usual \eqn{\chi^2} statistics to the regions implied by the model selection event. Details are provided in a forthcoming work. } diff --git a/selectiveInference/man/scaleGroups.Rd b/selectiveInference/man/scaleGroups.Rd index 6e41ef6..bfb899c 100644 --- a/selectiveInference/man/scaleGroups.Rd +++ b/selectiveInference/man/scaleGroups.Rd @@ -1,5 +1,4 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand -% Please edit documentation in R/funs.groupfs.R +% Generated by roxygen2 (4.0.1.99): do not edit by hand \name{scaleGroups} \alias{scaleGroups} \title{Center and scale design matrix by groups} @@ -16,9 +15,13 @@ scaleGroups(x, index, center = TRUE, scale = TRUE) \item{scale}{Scale groups by Frobenius norm, default is TRUE.} } \value{ -Scaled design matrix +\describe{ + \item{x}{Optionally centered/scaled design matrix.} + \item{xm}{Means of groups in original design matrix.} + \item{xs}{Frobenius norms of groups in original design matrix.} +} } \description{ -Center and scale design matrix by groups +For internal use by \code{\link{groupfs}}. } From c9a08a6f14dc96027f3788f1794943adb9a24c9b Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Wed, 30 Sep 2015 18:42:04 -0700 Subject: [PATCH 007/493] Simulation to test cv --- forLater/josh/sim.cv.R | 53 +++++++++++++++++++++++++++++ selectiveInference/R/funs.groupfs.R | 16 +++++---- 2 files changed, 62 insertions(+), 7 deletions(-) create mode 100644 forLater/josh/sim.cv.R diff --git a/forLater/josh/sim.cv.R b/forLater/josh/sim.cv.R new file mode 100644 index 0000000..28d9beb --- /dev/null +++ b/forLater/josh/sim.cv.R @@ -0,0 +1,53 @@ +library(intervals) +source("selectiveInference/R/cv.R") +source("../../selectiveInference/R/funs.groupfs.R") +source("../../selectiveInference/R/funs.quadratic.R") +source("../../selectiveInference/R/funs.common.R") + +set.seed(1) +niters <- 500 +n <- 50 +p <- 100 +maxsteps <- 10 +sparsity <- 5 +snr <- 1 +nfolds <- 5 + +instance <- function(n, p, sparsity, snr, maxsteps, nfolds) { + + x <- matrix(rnorm(n*p), nrow=n) + y <- rnorm(n) + + if (sparsity > 0) { + beta <- rep(0, p) + beta[1:sparsity] <- snr * sample(c(-1,1), sparsity, replace=T) + y <- y + x %*% beta + } + + fit <- cvfs(x, y, maxsteps=maxsteps, nfolds=nfolds) + pvals <- groupfsInf(fit, verbose=T) + ## pvals_naive <- interval.groupfs(fit, x, y, index = 1:ncol(x)) + ## fit$projections <- c(fit$projections, fit$rssprojections) + ## pvals_reduced <- interval.groupfs(fit, x, y, index = 1:ncol(x)) + ## fit$projections <- c(fit$projections, fit$foldprojections) + return(list(variable = fit$action, pvals = pvals$pv)) + #pvals_naive = pvals_naive, pvals_reduced = pvals_reduced)) +} + +time <- system.time({ + output <- replicate(niters, instance(n, p, sparsity, snr, maxsteps, nfolds)) +}) + +#pvals_reduced <- do.call(c, list(output[4,])) +#pvals_naive <- do.call(c, list(output[3,])) +pvals <- do.call(c, list(output[2,])) +vars <- do.call(c, list(output[1,])) + +save(pvals, vars, file = paste0( + "results_cv_n", n, + "_p", p, + "_sparsity", sparsity, + "_snr", snr, + ".RData")) + +print(time) diff --git a/selectiveInference/R/funs.groupfs.R b/selectiveInference/R/funs.groupfs.R index 8fae045..cddf907 100644 --- a/selectiveInference/R/funs.groupfs.R +++ b/selectiveInference/R/funs.groupfs.R @@ -248,7 +248,7 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { # Compute p-value for each active group for (j in 1:maxsteps) { i <- obj$action[j] - if (verbose) cat(paste0("Step ", j, "/", attr(obj, "maxsteps"), ": computing P-value for group ", i, "\n")) + if (verbose) cat(paste0("Step ", j, "/", attr(obj, "maxsteps"), ": computing P-value for group ", i, "\n")) # Form projection onto active set minus i # and project x_i orthogonally x_i <- obj$x[,which(obj$index == i), drop = FALSE] @@ -263,9 +263,11 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { R <- t(Ugtilde) %*% obj$y TC <- sqrt(sum(R^2)) eta <- Ugtilde %*% R / TC - Z <- obj$y - eta * TC + Z <- obj$y - eta * TC df <- ncol(Ugtilde) - + TCs[j] <- TC + dfs[j] <- df + intervallist <- truncationRegion(obj, TC, R, eta, Z) if (!is.null(fit$cvobj)) { intervallist <- c(intervallist, do.call(c, @@ -273,7 +275,7 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { truncationRegion(cvf, TC, R[-cvf$fold], eta[-cvf$fold], Z[-cvf$fold]) }))) } - + # Compute intersection: region <- do.call(interval_union, intervallist) region <- interval_union(region, Intervals(c(-Inf,0))) @@ -357,7 +359,7 @@ num_int_chi <- function(a, b, df, nsamp = 10000) { #' Center and scale design matrix by groups #' #' For internal use by \code{\link{groupfs}}. -#' +#' #' @param x Design matrix. #' @param index Group membership indicator of length p. #' @param center Center groups, default is TRUE. @@ -393,8 +395,8 @@ scaleGroups <- function(x, index, center = TRUE, scale = TRUE) { } #' Expand a data frame with factors to form a design matrix with the full binary encoding of each factor. -#' -#' When using \code{\link{groupfs}} with factor variables call this function first to create a design matrix. +#' +#' When using \code{\link{groupfs}} with factor variables call this function first to create a design matrix. #' #' @param df Data frame containing some columns which are \code{factors}. #' @return List containing From 35c3a02281b81dc36b3f57e29db4d5c9868bd774 Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Wed, 30 Sep 2015 18:45:31 -0700 Subject: [PATCH 008/493] Typo fix, change fit to obj --- selectiveInference/R/funs.groupfs.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/selectiveInference/R/funs.groupfs.R b/selectiveInference/R/funs.groupfs.R index cddf907..0a4eb6e 100644 --- a/selectiveInference/R/funs.groupfs.R +++ b/selectiveInference/R/funs.groupfs.R @@ -269,9 +269,9 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { dfs[j] <- df intervallist <- truncationRegion(obj, TC, R, eta, Z) - if (!is.null(fit$cvobj)) { + if (!is.null(obj$cvobj)) { intervallist <- c(intervallist, do.call(c, - lapply(fit$cvobj, function(cvf) { + lapply(obj$cvobj, function(cvf) { truncationRegion(cvf, TC, R[-cvf$fold], eta[-cvf$fold], Z[-cvf$fold]) }))) } From f3043a9b05faab39c33f66d4dc7e4f9f2bc35363 Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Wed, 30 Sep 2015 21:12:41 -0700 Subject: [PATCH 009/493] Included cvquad interval --- forLater/josh/selectiveInference/R/cv.R | 2 +- forLater/josh/tests/test.cv.R | 22 +++++-- selectiveInference/R/funs.groupfs.R | 40 ++++++++----- selectiveInference/R/funs.quadratic.R | 76 +++++++++++++------------ 4 files changed, 82 insertions(+), 58 deletions(-) diff --git a/forLater/josh/selectiveInference/R/cv.R b/forLater/josh/selectiveInference/R/cv.R index adbc011..0a4661b 100644 --- a/forLater/josh/selectiveInference/R/cv.R +++ b/forLater/josh/selectiveInference/R/cv.R @@ -105,7 +105,7 @@ cvfs <- function(x, y, index = 1:ncol(x), maxsteps, nfolds = 10) { fit <- groupfs(X, Y, index, maxsteps=sstar) fit$cvobj <- cvobj - fit$rssprojections <- RSSquads + fit$cvquad <- RSSquads fit$cvperm <- cv_perm diff --git a/forLater/josh/tests/test.cv.R b/forLater/josh/tests/test.cv.R index 22743ec..28b3f44 100644 --- a/forLater/josh/tests/test.cv.R +++ b/forLater/josh/tests/test.cv.R @@ -1,9 +1,21 @@ -library(selectiveInference) - +library(intervals) source("../selectiveInference/R/cv.R") +source("../../../selectiveInference/R/funs.groupfs.R") +source("../../../selectiveInference/R/funs.quadratic.R") +source("../../../selectiveInference/R/funs.common.R") -n = 100 -p = 20 +set.seed(1) +n <- 50 +p <- 100 +maxsteps <- 10 +sparsity <- 5 +snr <- 1 +nfolds <- 5 x <- matrix(rnorm(n*p), nrow=n) y <- rnorm(n) -fit <- cvfs(x, y, maxsteps = 5) +beta <- rep(0, p) +beta[1:sparsity] <- snr * sample(c(-1,1), sparsity, replace=T) +y <- y + x %*% beta +fit <- cvfs(x, y, maxsteps=maxsteps, nfolds=nfolds) +pvals <- groupfsInf(fit, verbose=T) + diff --git a/selectiveInference/R/funs.groupfs.R b/selectiveInference/R/funs.groupfs.R index 0a4eb6e..516d834 100644 --- a/selectiveInference/R/funs.groupfs.R +++ b/selectiveInference/R/funs.groupfs.R @@ -223,9 +223,7 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { Ep <- sum(index %in% obj$action) nanconv <- FALSE - pvals <- numeric(maxsteps) - dfs <- numeric(maxsteps) - TCs <- numeric(maxsteps) + pvals = dfs = TCs = numeric(maxsteps) supports <- list() if (!is.null(sigma)) { @@ -274,6 +272,14 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { lapply(obj$cvobj, function(cvf) { truncationRegion(cvf, TC, R[-cvf$fold], eta[-cvf$fold], Z[-cvf$fold]) }))) + intervallist <- c(intervallist, + lapply(obj$cvquad, function(cvquad) { + etacvquad <- t(eta) %*% cvquad + A <- etacvquad %*% eta + B <- 2 * etacvquad %*% Z + C <- t(Z) %*% cvquad %*% Z + quadratic_roots(A, B, C, tol = 1e-15) + })) } # Compute intersection: @@ -283,6 +289,21 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { supports[[j]] <- E # E is now potentially a union of intervals + pvals[j] <- TC_surv(TC, sigma, df, E) + } + if (nanconv) warning("P-value NaNs of the form 0/0 converted to 0. This typically occurs for numerical reasons in the presence of a large signal-to-noise ratio.") + names(pvals) <- obj$action + out <- list(vars = obj$action, pv=pvals, sigma=sigma, TC=TCs, df = dfs, support=supports) + class(out) <- "groupfsInf" + if (!is.null(attr(obj, "varnames"))) { + attr(out, "varnames") <- attr(obj, "varnames") + } + invisible(out) +} + +# ----------------------------------------------------------- + +TC_surv <- function(TC, sigma, df, E) { if (length(E) == 0) { stop(paste("Empty TC support at step", j)) } @@ -321,20 +342,9 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { # Force p-value to lie in the [0,1] interval # in case of numerical issues value <- max(0, min(1, value)) - pvals[j] <- value - } - if (nanconv) warning("P-value NaNs of the form 0/0 converted to 0. This typically occurs for numerical reasons in the presence of a large signal-to-noise ratio.") - names(pvals) <- obj$action - out <- list(vars = obj$action, pv=pvals, sigma=sigma, TC=TCs, df = dfs, support=supports) - class(out) <- "groupfsInf" - if (!is.null(attr(obj, "varnames"))) { - attr(out, "varnames") <- attr(obj, "varnames") - } - invisible(out) + value } -# ----------------------------------------------------------- - tchi_interval <- function(lower, upper, sigma, df) { a <- (lower/sigma)^2 b <- (upper/sigma)^2 diff --git a/selectiveInference/R/funs.quadratic.R b/selectiveInference/R/funs.quadratic.R index e8b1408..09dee4a 100644 --- a/selectiveInference/R/funs.quadratic.R +++ b/selectiveInference/R/funs.quadratic.R @@ -47,74 +47,76 @@ truncationRegion <- function(obj, TC, R, eta, Z, tol = 1e-15) { B <- 2 * as.numeric(t(Ugeta) %*% UgZ - t(Uheta) %*% UhZ) C <- sum(UgZ^2) - sum(UhZ^2) - pendiff } + + quadratic_roots(A, B, C, tol) + }) + } + # LL is a list of intervals + }) + # L is now a list of lists of intervals + return(unlist(L, recursive = FALSE, use.names = FALSE)) +} - disc <- B^2 - 4*A*C - b2a <- -B/(2*A) +quadratic_roots <- function(A, B, C, tol) { + disc <- B^2 - 4*A*C + b2a <- -B/(2*A) - if (disc > tol) { - # Real roots + if (disc > tol) { + # Real roots pm <- sqrt(disc)/(2*A) endpoints <- sort(c(b2a - pm, b2a + pm)) - } else { - + } else { # No real roots if (A > -tol) { # Quadratic form always positive - return(Intervals(c(-Inf,0))) + return(Intervals(c(-Inf,0))) } else { # Quadratic form always negative - stop(paste("Empty TC support is infeasible", s, "-", l)) + stop(paste("Empty TC support is infeasible", s, "-", l)) } - } + } - if (A > tol) { + if (A > tol) { # Parabola opens upward if (min(endpoints) > 0) { # Both roots positive, union of intervals - return(Intervals(rbind(c(-Inf,0), endpoints))) + return(Intervals(rbind(c(-Inf,0), endpoints))) } else { # At least one negative root - return(Intervals(c(-Inf, max(0, endpoints[2])))) + return(Intervals(c(-Inf, max(0, endpoints[2])))) } - } else { + } else { if (A < -tol) { # Parabola opens downward - if (endpoints[2] < 0) { + if (endpoints[2] < 0) { # Positive quadratic form only when t negative - stop(paste("Negative TC support is infeasible", s, "-", l)) - } else { - # Part which is positive - if (endpoints[1] > 0) { - return(Intervals(rbind(c(-Inf, endpoints[1]), c(endpoints[2], Inf)))) + stop(paste("Negative TC support is infeasible", s, "-", l)) } else { - return(Intervals(c(endpoints[2], Inf))) + # Part which is positive + if (endpoints[1] > 0) { + return(Intervals(rbind(c(-Inf, endpoints[1]), c(endpoints[2], Inf)))) + } else { + return(Intervals(c(endpoints[2], Inf))) + } } - } } else { # a is too close to 0, quadratic is actually linear - if (abs(B) > tol) { - if (B > 0) { - return(Intervals(c(-Inf, max(0, -C/B)))) + if (abs(B) > tol) { + if (B > 0) { + return(Intervals(c(-Inf, max(0, -C/B)))) + } else { + if (-C/B < 0) stop("Error: infeasible linear equation") + return(Intervals(rbind(c(-Inf, 0), c(-C/B, Inf)))) + } } else { - if (-C/B < 0) stop("Error: infeasible linear equation") - return(Intervals(rbind(c(-Inf, 0), c(-C/B, Inf)))) + warning("Ill-conditioned quadratic") + return(Intervals(c(-Inf,0))) } - } else { - warning("Ill-conditioned quadratic") - return(Intervals(c(-Inf,0))) - } } - } - }) } - # LL is a list of intervals - }) - # L is now a list of lists of intervals - return(unlist(L, recursive = FALSE, use.names = FALSE)) } - roots_to_checkpoints <- function(roots) { checkpoints <- unique(sort(c(0, roots))) return(c(0, (checkpoints + c(checkpoints[-1], 2 + checkpoints[length(checkpoints)]))/2)) From 786ea4d1ae9b97e60b0457cef8dcb2de992e4ee4 Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Wed, 30 Sep 2015 21:23:30 -0700 Subject: [PATCH 010/493] Changing simulation to known sigma --- forLater/josh/sim.cv.R | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/forLater/josh/sim.cv.R b/forLater/josh/sim.cv.R index 28d9beb..b8d27cb 100644 --- a/forLater/josh/sim.cv.R +++ b/forLater/josh/sim.cv.R @@ -25,21 +25,14 @@ instance <- function(n, p, sparsity, snr, maxsteps, nfolds) { } fit <- cvfs(x, y, maxsteps=maxsteps, nfolds=nfolds) - pvals <- groupfsInf(fit, verbose=T) - ## pvals_naive <- interval.groupfs(fit, x, y, index = 1:ncol(x)) - ## fit$projections <- c(fit$projections, fit$rssprojections) - ## pvals_reduced <- interval.groupfs(fit, x, y, index = 1:ncol(x)) - ## fit$projections <- c(fit$projections, fit$foldprojections) + pvals <- groupfsInf(fit, sigma = 1, verbose=T) return(list(variable = fit$action, pvals = pvals$pv)) - #pvals_naive = pvals_naive, pvals_reduced = pvals_reduced)) } time <- system.time({ output <- replicate(niters, instance(n, p, sparsity, snr, maxsteps, nfolds)) }) -#pvals_reduced <- do.call(c, list(output[4,])) -#pvals_naive <- do.call(c, list(output[3,])) pvals <- do.call(c, list(output[2,])) vars <- do.call(c, list(output[1,])) From ba4be55e03d37dab6e2ed92f041535c72969218f Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Fri, 2 Oct 2015 11:31:29 -0700 Subject: [PATCH 011/493] Added links --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2d38cdf..7b6b8ff 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,9 @@ # R-software -R software for selective inference +R software for [selective inference](http://cran.r-project.org/web/packages/selectiveInference/). Authors: Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid Maintainer: Rob Tibshirani -New tools for inference after selection, for use with forward stepwise regression, least angle regression, the lasso, and the many means problem. +New tools for inference after selection, for use with forward stepwise regression, least angle regression, the lasso, and the many means problem. The package is available on [CRAN](http://cran.r-project.org/web/packages/selectiveInference/). See [this paper](http://www.pnas.org/content/112/25/7629.full) for a high level introduction to selective inference. Code is in the directory selectiveInference/R. * funs.common.R: Basic functions used by many other functions, such as standardization. From 6641e09b4d15d9f94bcd031b97cbab517a6ea18d Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Fri, 2 Oct 2015 11:45:32 -0700 Subject: [PATCH 012/493] Fixing whitespace problems in markdown --- README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 7b6b8ff..1a50e5b 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # R-software -R software for [selective inference](http://cran.r-project.org/web/packages/selectiveInference/). +R software for [selective inference](http://cran.r-project.org/web/packages/selectiveInference/). Authors: Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid -Maintainer: Rob Tibshirani +Maintainer: Rob Tibshirani New tools for inference after selection, for use with forward stepwise regression, least angle regression, the lasso, and the many means problem. The package is available on [CRAN](http://cran.r-project.org/web/packages/selectiveInference/). See [this paper](http://www.pnas.org/content/112/25/7629.full) for a high level introduction to selective inference. @@ -13,4 +13,3 @@ Code is in the directory selectiveInference/R. * funs.inf.R: Common functions for inference with fixed, fs, lar, and manymeans (but not group). * funs.lar.R: Inference for least angle regression. * funs.max.R: Some numerical approximations. Deprecated? - From a874ffa57230cd5e2e6b52a586815fff7bcb20dd Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Fri, 2 Oct 2015 15:52:59 -0700 Subject: [PATCH 013/493] groupfs should now compute AIC exactly as base R --- selectiveInference/R/funs.groupfs.R | 70 ++++++++++++++--------------- tests/test.groupfs.R | 10 +++-- 2 files changed, 40 insertions(+), 40 deletions(-) diff --git a/selectiveInference/R/funs.groupfs.R b/selectiveInference/R/funs.groupfs.R index 516d834..8c69aa0 100644 --- a/selectiveInference/R/funs.groupfs.R +++ b/selectiveInference/R/funs.groupfs.R @@ -9,6 +9,7 @@ #' @param sigma Estimate of error standard deviation for use in AIC criterion. This determines the relative scale between RSS and the degrees of freedom penalty. Default is NULL corresponding to unknown sigma. See \code{\link[stats]{extractAIC}} for details. #' @param k Multiplier of model size penalty, the default is \code{k = 2} for AIC. Use \code{k = log(n)} for BIC, or \code{k = log(p)} for RIC. #' @param intercept Should an intercept be included in the model? Default is TRUE. +#' @param center Should the columns of the design matrix be centered? Default is TRUE. #' @param normalize Should the design matrix be normalized? Default is TRUE. #' @param verbose Print out progress along the way? Default is FALSE. #' @return An object of class "groupfs" containing information about the sequence of models in the forward stepwise algorithm. Call the function \code{\link{groupfsInf}} on this object to compute selective p-values. @@ -19,7 +20,7 @@ #' fit = groupfs(x, y, index, maxsteps = 5) #' pvals = groupfsInf(fit) #' @seealso \code{\link{groupfsInf}} -groupfs <- function(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE, normalize = TRUE, verbose = FALSE) { +groupfs <- function(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE, center = TRUE, normalize = TRUE, verbose = FALSE) { if (missing(index)) stop("Missing argument: index.") p <- ncol(x) @@ -50,7 +51,7 @@ groupfs <- function(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE x.update <- x # Center and scale design matrix - xscaled <- scaleGroups(x.update, index, scale = normalize) + xscaled <- scaleGroups(x.update, index, center, normalize) xm <- xscaled$xm xs <- xscaled$xs x.update <- xscaled$x @@ -61,9 +62,9 @@ groupfs <- function(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE terms = projections = maxprojs = aicpens = maxpens = cumprojs = vector("list", maxsteps) # Store other information from each step - path.info <- data.frame(imax=integer(maxsteps), L=numeric(maxsteps), df=integer(maxsteps), RSS=numeric(maxsteps), RSSdrop=numeric(maxsteps), chisq=numeric(maxsteps)) + path.info <- data.frame(imax=integer(maxsteps), df=integer(maxsteps), AIC=numeric(maxsteps), RSS=numeric(maxsteps), RSSdrop=numeric(maxsteps), chisq=numeric(maxsteps)) - modelrank <- 1 + modelrank <- as.numeric(intercept) # Begin main loop for (step in 1:maxsteps) { @@ -76,6 +77,8 @@ groupfs <- function(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE active <- union(active, imax) inactive.inds <- which(!index %in% active) + # Compute AIC + added$AIC <- n*log(exp(k*modelrank/n) * added$maxterm/n) + n*(log(2*pi) + 1) # Rank of group modelrank <- modelrank + added$df @@ -86,11 +89,6 @@ groupfs <- function(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE # Regress added group out of y and inactive x P.imax <- added$maxproj %*% t(added$maxproj) - if (is.null(sigma)) { - P.imax <- P.imax / exp(k*added$df/n) - } else { - P.imax <- P.imax * sigma^2 - } P.imax <- diag(rep(1, n)) - P.imax y.update <- P.imax %*% y.update x.update[, inactive.inds] <- P.imax %*% x.update[, inactive.inds] @@ -103,6 +101,7 @@ groupfs <- function(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE if (step > 1) cumprojs[[step]] <- P.imax %*% cumprojs[[step-1]] terms[[step]] <- added$terms + # Compute RSS for unadjusted chisq p-values added$RSS <- sum(y.update^2) scale.chisq <- 1 @@ -112,14 +111,14 @@ groupfs <- function(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE y.last <- y.update # Projections are stored separately - step.info <- data.frame(added[-c(4:(length(added)-3))]) + step.info <- data.frame(added[-c(3:(length(added)-4))]) path.info[step, ] <- step.info if (verbose) print(step.info) } # Create output object - value <- list(action=path.info$imax, L=path.info$L, projections = projections, maxprojs = maxprojs, aicpens = aicpens, maxpens = maxpens, cumprojs = cumprojs, log = path.info, index = index, y = y.begin, x = x.begin, bx = xm, sx = xs, sigma = sigma, intercept = intercept, terms = terms) + value <- list(action=path.info$imax, L=path.info$L, projections = projections, maxprojs = maxprojs, aicpens = aicpens, maxpens = maxpens, cumprojs = cumprojs, log = path.info, index = index, y = y.begin, x = x.begin, bx = xm, sx = xs, sigma = sigma, intercept = intercept, call = match.call(), terms = terms) class(value) <- "groupfs" attr(value, "labels") <- labels attr(value, "index") <- index @@ -147,15 +146,14 @@ groupfs <- function(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE #' @param k Multiplier of model size penalty, use \code{k = 2} for AIC, \code{k = log(n)} for BIC, or \code{k = log(p)} for RIC. #' @param sigma Estimate of error standard deviation for use in AIC criterion. This determines the relative scale between RSS and the degrees of freedom penalty. See \code{\link{extractAIC}} for details. #' @return Index \code{imax} of added group, value \code{L} of maximized negative AIC, lists of projection matrices defining quadratic model selection event. -add1.groupfs <- function(x, y, index, labels, inactive, k, sigma = NULL) { +add1.groupfs <- function(xr, yr, index, labels, inactive, k, sigma = NULL) { # Use characters to avoid issues where # list() populates NULL lists in the positions # of the active variables ### Question for later: does this slow down lapply? keys = as.character(inactive) - n2y <- sum(y^2) - n <- ncol(x) + n <- nrow(xr) # Compute sums of squares to determine which group is added # penalized by rank of group if k > 0 @@ -163,33 +161,31 @@ add1.groupfs <- function(x, y, index, labels, inactive, k, sigma = NULL) { names(projections) = names(terms) = names(aicpens) = keys for (key in keys) { inds <- which(index == key) - xi <- x[,inds] + xi <- xr[,inds] ui <- svdu_thresh(xi) dfi <- ncol(ui) projections[[key]] <- ui - dfi <- ncol(ui) - uy <- t(ui) %*% y + uy <- t(ui) %*% yr if (is.null(sigma)) { - aicpens[[key]] <- exp(k*dfi/n) - terms[[key]] <- (sum(uy^2) - sum(y^2)) * aicpens[[key]] + aicpens[[key]] <- exp(k*(dfi+1)/n) + terms[[key]] <- (sum(yr^2) - sum(uy^2)) * aicpens[[key]] } else { - aicpens[[key]] <- sigma^2 * k * dfi/n - terms[[key]] <- (sum(uy^2) - sum(y^2)) - aicpens[[key]] + aicpens[[key]] <- 2 * sigma^2 * k * dfi/n + terms[[key]] <- (sum(yr^2) - sum(uy^2)) - aicpens[[key]] } } # Maximizer = group to be added - terms.maxind <- which.max(terms) - imax <- inactive[terms.maxind] - keyind <- which(keys == imax) - maxproj <- projections[[keyind]] - maxpen <- aicpens[[keyind]] - projections[[keyind]] <- NULL - aicpens[[keyind]] <- NULL - - L <- terms[[terms.maxind]] - - return(list(imax=imax, L=L, df = ncol(maxproj), projections = projections, maxproj = maxproj, aicpens = aicpens, maxpen = maxpen, terms = terms)) + terms.optind <- which.min(terms) + imax <- inactive[terms.optind] + optkey <- which(keys == imax) + maxproj <- projections[[optkey]] + maxpen <- aicpens[[optkey]] + maxterm <- terms[[optkey]] + projections[[optkey]] <- NULL + aicpens[[optkey]] <- NULL + + return(list(imax=imax, df = ncol(maxproj), projections = projections, maxproj = maxproj, aicpens = aicpens, maxpen = maxpen, maxterm = maxterm, terms = terms)) } # ----------------------------------------------------------- @@ -272,7 +268,7 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { lapply(obj$cvobj, function(cvf) { truncationRegion(cvf, TC, R[-cvf$fold], eta[-cvf$fold], Z[-cvf$fold]) }))) - intervallist <- c(intervallist, + intervallist <- c(intervallist, lapply(obj$cvquad, function(cvquad) { etacvquad <- t(eta) %*% cvquad A <- etacvquad %*% eta @@ -373,14 +369,14 @@ num_int_chi <- function(a, b, df, nsamp = 10000) { #' @param x Design matrix. #' @param index Group membership indicator of length p. #' @param center Center groups, default is TRUE. -#' @param scale Scale groups by Frobenius norm, default is TRUE. +#' @param normalize Scale groups by Frobenius norm, default is TRUE. #' @return #' \describe{ #' \item{x}{Optionally centered/scaled design matrix.} #' \item{xm}{Means of groups in original design matrix.} #' \item{xs}{Frobenius norms of groups in original design matrix.} #' } -scaleGroups <- function(x, index, center = TRUE, scale = TRUE) { +scaleGroups <- function(x, index, center = TRUE, normalize = TRUE) { keys <- unique(index) xm <- rep(0, ncol(x)) xs <- rep(1, ncol(x)) @@ -396,7 +392,7 @@ scaleGroups <- function(x, index, center = TRUE, scale = TRUE) { xsj <- sqrt(normsq) xs[inds] <- xsj if (xsj > 0) { - if (scale) x[, inds] <- x[, inds] / xsj + if (normalize) x[, inds] <- x[, inds] / xsj } else { stop(paste("Design matrix contains identically zero group of variables:", j)) } @@ -469,7 +465,7 @@ print.groupfs <- function(x, ...) { action <- x$action vnames <- attr(x, "varnames") if (length(vnames) > 0) action <- vnames[action] - tab = data.frame(Group = action, Rank = x$log$df, RSS = round(x$log$RSS, 3)) + tab = data.frame(Group = action, Rank = x$log$df, RSS = round(x$log$RSS, 3), AIC = round(x$log$AIC, 3)) rownames(tab) = 1:nsteps print(tab) cat("\nUse groupfsInf() to compute P-values\n") diff --git a/tests/test.groupfs.R b/tests/test.groupfs.R index 629bec1..c0e70e3 100644 --- a/tests/test.groupfs.R +++ b/tests/test.groupfs.R @@ -1,5 +1,9 @@ -library(selectiveInference) +#library(selectiveInference) #library(lars) +library(intervals) +source("../selectiveInference/R/funs.groupfs.R") +source("../selectiveInference/R/funs.quadratic.R") +source("../selectiveInference/R/funs.common.R") set.seed(1) n <- 40 @@ -72,7 +76,7 @@ y <- y + x %*% beta y <- y-mean(y) df <- data.frame(y = y, states) fsfit <- step(lm(y ~ 0, df), direction="forward", scope = formula(lm(y~., df)), steps = maxsteps, k = 2) -fit <- groupfs(x, y, index, maxsteps, k = 2, normalize = T) +fit <- groupfs(x, y, index, maxsteps, k = 2, intercept = F, center = F, normalize = T) # names(fsfit$coefficients)[-1] if (length(fsfit$coefficients) > 0) { fsnames <- cnames[which(!is.na(charmatch(cnames,names(fsfit$coefficients)[-1])))][order(unlist(lapply(cnames, function(cn) { @@ -99,7 +103,7 @@ for (iter in 1:niter) { y = rnorm(n) fit = groupfs(x, y, index, maxsteps) pvals = groupfsInf(fit) - pvalm[iter, ] = pvals$pv + pvalm[iter, ] = pvals$pv fitk = groupfs(x, y, index, maxsteps, sigma = 1) pvalsk = groupfsInf(fitk) pvalmk[iter, ] = pvalsk$pv From 918b74d40ceaf581a79915fa91d739fa76353c5c Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Fri, 2 Oct 2015 15:54:03 -0700 Subject: [PATCH 014/493] Updating documentation --- selectiveInference/man/groupfs.Rd | 4 +++- selectiveInference/man/scaleGroups.Rd | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/selectiveInference/man/groupfs.Rd b/selectiveInference/man/groupfs.Rd index 6f719a9..db2e512 100644 --- a/selectiveInference/man/groupfs.Rd +++ b/selectiveInference/man/groupfs.Rd @@ -4,7 +4,7 @@ \title{Select a model with forward stepwise.} \usage{ groupfs(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE, - normalize = TRUE, verbose = FALSE) + center = TRUE, normalize = TRUE, verbose = FALSE) } \arguments{ \item{x}{Matrix of predictors (n by p).} @@ -21,6 +21,8 @@ groupfs(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE, \item{intercept}{Should an intercept be included in the model? Default is TRUE.} +\item{center}{Should the columns of the design matrix be centered? Default is TRUE.} + \item{normalize}{Should the design matrix be normalized? Default is TRUE.} \item{verbose}{Print out progress along the way? Default is FALSE.} diff --git a/selectiveInference/man/scaleGroups.Rd b/selectiveInference/man/scaleGroups.Rd index bfb899c..1e7e1c4 100644 --- a/selectiveInference/man/scaleGroups.Rd +++ b/selectiveInference/man/scaleGroups.Rd @@ -3,7 +3,7 @@ \alias{scaleGroups} \title{Center and scale design matrix by groups} \usage{ -scaleGroups(x, index, center = TRUE, scale = TRUE) +scaleGroups(x, index, center = TRUE, normalize = TRUE) } \arguments{ \item{x}{Design matrix.} @@ -12,7 +12,7 @@ scaleGroups(x, index, center = TRUE, scale = TRUE) \item{center}{Center groups, default is TRUE.} -\item{scale}{Scale groups by Frobenius norm, default is TRUE.} +\item{normalize}{Scale groups by Frobenius norm, default is TRUE.} } \value{ \describe{ From b28900b16fd6e511e51126112ff9ddae1b1fa74e Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Fri, 2 Oct 2015 16:10:51 -0700 Subject: [PATCH 015/493] Fixing warnings from CMD check --- selectiveInference/R/funs.groupfs.R | 9 ++++++--- selectiveInference/R/funs.quadratic.R | 8 ++++---- tests/test.groupfs.R | 10 +++++----- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/selectiveInference/R/funs.groupfs.R b/selectiveInference/R/funs.groupfs.R index 8c69aa0..b44b600 100644 --- a/selectiveInference/R/funs.groupfs.R +++ b/selectiveInference/R/funs.groupfs.R @@ -138,8 +138,8 @@ groupfs <- function(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE #' #' For internal use by \code{\link{groupfs}}. #' -#' @param x Design matrix. -#' @param y Response vector. +#' @param xr Design matrix at current step. +#' @param yr Response vector residual at current step. #' @param index Group membership indicator of length p. #' @param labels The unique elements of \code{index}. #' @param inactive Labels of inactive groups. @@ -282,6 +282,9 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { region <- do.call(interval_union, intervallist) region <- interval_union(region, Intervals(c(-Inf,0))) E <- interval_complement(region, check_valid = FALSE) + if (length(E) == 0) { + stop(paste("Empty TC support at step", j)) + } supports[[j]] <- E # E is now potentially a union of intervals @@ -301,7 +304,7 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { TC_surv <- function(TC, sigma, df, E) { if (length(E) == 0) { - stop(paste("Empty TC support at step", j)) + stop("Empty TC support") } # Sum truncated cdf over each part of E diff --git a/selectiveInference/R/funs.quadratic.R b/selectiveInference/R/funs.quadratic.R index 09dee4a..2a33cf4 100644 --- a/selectiveInference/R/funs.quadratic.R +++ b/selectiveInference/R/funs.quadratic.R @@ -47,7 +47,7 @@ truncationRegion <- function(obj, TC, R, eta, Z, tol = 1e-15) { B <- 2 * as.numeric(t(Ugeta) %*% UgZ - t(Uheta) %*% UhZ) C <- sum(UgZ^2) - sum(UhZ^2) - pendiff } - + quadratic_roots(A, B, C, tol) }) } @@ -62,7 +62,7 @@ quadratic_roots <- function(A, B, C, tol) { b2a <- -B/(2*A) if (disc > tol) { - # Real roots + # Real roots pm <- sqrt(disc)/(2*A) endpoints <- sort(c(b2a - pm, b2a + pm)) @@ -73,7 +73,7 @@ quadratic_roots <- function(A, B, C, tol) { return(Intervals(c(-Inf,0))) } else { # Quadratic form always negative - stop(paste("Empty TC support is infeasible", s, "-", l)) + stop("Empty TC support is infeasible") } } @@ -91,7 +91,7 @@ quadratic_roots <- function(A, B, C, tol) { # Parabola opens downward if (endpoints[2] < 0) { # Positive quadratic form only when t negative - stop(paste("Negative TC support is infeasible", s, "-", l)) + stop("Negative TC support is infeasible") } else { # Part which is positive if (endpoints[1] > 0) { diff --git a/tests/test.groupfs.R b/tests/test.groupfs.R index c0e70e3..db4feff 100644 --- a/tests/test.groupfs.R +++ b/tests/test.groupfs.R @@ -1,9 +1,9 @@ -#library(selectiveInference) +library(selectiveInference) #library(lars) -library(intervals) -source("../selectiveInference/R/funs.groupfs.R") -source("../selectiveInference/R/funs.quadratic.R") -source("../selectiveInference/R/funs.common.R") +#library(intervals) +#source("../selectiveInference/R/funs.groupfs.R") +#source("../selectiveInference/R/funs.quadratic.R") +#source("../selectiveInference/R/funs.common.R") set.seed(1) n <- 40 From b55101f429ddf5d10126756e5f984dbe0ec5e3d3 Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Sun, 4 Oct 2015 22:04:57 -0700 Subject: [PATCH 016/493] Comprehensive test comparing step to groupfs with categorical designs --- tests/test.categorical.R | 49 ++++++++++++++++++++++++++++++++++++++++ tests/test.groupfs.R | 11 +++++---- 2 files changed, 55 insertions(+), 5 deletions(-) create mode 100644 tests/test.categorical.R diff --git a/tests/test.categorical.R b/tests/test.categorical.R new file mode 100644 index 0000000..a999a1b --- /dev/null +++ b/tests/test.categorical.R @@ -0,0 +1,49 @@ +#library(selectiveInference) +#library(lars) +library(intervals) +source("../selectiveInference/R/funs.groupfs.R") +source("../selectiveInference/R/funs.quadratic.R") +source("../selectiveInference/R/funs.common.R") + +set.seed(1) +n <- 100 +G <- 10 +maxsteps <- 10 +snr <- 1 +niter <- 200 + +print("Comparing step with groupfs on random categorical designs") +aicdiffs <- numeric(niter) +mismatchcount <- 0 +for (iter in 1:niter) { + rles <- 2 + rpois(G, 2) + df <- data.frame(do.call(cbind, lapply(rles, function(g) { + sample(LETTERS[1:g], n, replace = TRUE, prob = runif(g)) + })), stringsAsFactors = TRUE) + if (any(apply(df, 2, function(col) length(unique(col))) == 1)) next + fd <- factorDesign(df) + if (any(duplicated(fd$x, MARGIN = 2))) next + y <- rnorm(n) + x1 <- fd$x[, fd$index == 1] + y <- y + x1 %*% c(snr, rep(0, ncol(x1) - 2), -snr) + y <- y - mean(y) + df$y <- y + capture.output(fsfit <- step(lm(y ~ 0, df), direction="forward", scope = formula(lm(y~.-1, df)), steps = maxsteps, trace = 1000), file = "/dev/null") + fit <- groupfs(fd$x, df$y, fd$index, maxsteps = 10, intercept = F, center = F, normalize = F) + fsnames <- names(fsfit$coefficients) + if (length(fsnames) > 0) { + fsnames <- unique(substr(fsnames, 1, nchar(fsnames) - 1)) + k <- length(fsnames) + fitnames <- attr(fit, "varnames")[fit$action][1:k] + aicdiffs[iter] <- AIC(fsfit) - fit$log$AIC[k] + if (any(fsnames != fitnames)) { + print(paste("Mismatch at iteration", iter)) + print(fsnames) + print(fitnames) + mismatchcount <- mismatchcount + 1 + } + } +} +print(paste("Total mismatches:", mismatchcount, "out of", niter)) +print("Summary of differences in AIC") +summary(aicdiffs) diff --git a/tests/test.groupfs.R b/tests/test.groupfs.R index db4feff..38cc85d 100644 --- a/tests/test.groupfs.R +++ b/tests/test.groupfs.R @@ -1,9 +1,9 @@ -library(selectiveInference) +#library(selectiveInference) #library(lars) -#library(intervals) -#source("../selectiveInference/R/funs.groupfs.R") -#source("../selectiveInference/R/funs.quadratic.R") -#source("../selectiveInference/R/funs.common.R") +library(intervals) +source("../selectiveInference/R/funs.groupfs.R") +source("../selectiveInference/R/funs.quadratic.R") +source("../selectiveInference/R/funs.common.R") set.seed(1) n <- 40 @@ -128,3 +128,4 @@ print(colMeans(pvalmk)) print(mean(pvalm)) print(mean(pvalmk)) + From 0a3e0881b002f38f3d0b29cd22332f343569380f Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Sun, 4 Oct 2015 23:08:40 -0700 Subject: [PATCH 017/493] Started coding early stopping if AIC increases --- selectiveInference/R/funs.groupfs.R | 15 +++++++++++---- selectiveInference/man/factorDesign.Rd | 3 ++- selectiveInference/man/groupfs.Rd | 7 +++++-- selectiveInference/man/groupfsInf.Rd | 3 ++- selectiveInference/man/scaleGroups.Rd | 3 ++- 5 files changed, 22 insertions(+), 9 deletions(-) diff --git a/selectiveInference/R/funs.groupfs.R b/selectiveInference/R/funs.groupfs.R index b44b600..17d2834 100644 --- a/selectiveInference/R/funs.groupfs.R +++ b/selectiveInference/R/funs.groupfs.R @@ -11,6 +11,7 @@ #' @param intercept Should an intercept be included in the model? Default is TRUE. #' @param center Should the columns of the design matrix be centered? Default is TRUE. #' @param normalize Should the design matrix be normalized? Default is TRUE. +#' @param aicstop Early stopping if AIC increases, default is FALSE. #' @param verbose Print out progress along the way? Default is FALSE. #' @return An object of class "groupfs" containing information about the sequence of models in the forward stepwise algorithm. Call the function \code{\link{groupfsInf}} on this object to compute selective p-values. #' @examples @@ -20,7 +21,7 @@ #' fit = groupfs(x, y, index, maxsteps = 5) #' pvals = groupfsInf(fit) #' @seealso \code{\link{groupfsInf}} -groupfs <- function(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE, center = TRUE, normalize = TRUE, verbose = FALSE) { +groupfs <- function(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE, center = TRUE, normalize = TRUE, aicstop = FALSE, verbose = FALSE) { if (missing(index)) stop("Missing argument: index.") p <- ncol(x) @@ -42,7 +43,6 @@ groupfs <- function(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE warning(paste("If the largest groups are included the model will be saturated/overdetermined. To prevent this maxsteps has been changed to", maxsteps)) } - # Initialize copies of data for loop by <- mean(y) y.update <- y @@ -65,6 +65,7 @@ groupfs <- function(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE path.info <- data.frame(imax=integer(maxsteps), df=integer(maxsteps), AIC=numeric(maxsteps), RSS=numeric(maxsteps), RSSdrop=numeric(maxsteps), chisq=numeric(maxsteps)) modelrank <- as.numeric(intercept) + aic.last <- n*(log(2*pi) + log(mean(y.update^2)) + 1 + k * (is.null(sigma) + intercept)) # Begin main loop for (step in 1:maxsteps) { @@ -101,7 +102,6 @@ groupfs <- function(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE if (step > 1) cumprojs[[step]] <- P.imax %*% cumprojs[[step-1]] terms[[step]] <- added$terms - # Compute RSS for unadjusted chisq p-values added$RSS <- sum(y.update^2) scale.chisq <- 1 @@ -109,11 +109,18 @@ groupfs <- function(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE added$RSSdrop <- sum((y.last - y.update)^2) added$chisq <- pchisq(added$RSSdrop/scale.chisq, lower.tail=FALSE, df = added$df) y.last <- y.update - + # Projections are stored separately step.info <- data.frame(added[-c(3:(length(added)-4))]) path.info[step, ] <- step.info + if (aic.last < added$AIC) { + # TODO tomorrow + # Modify the object somehow + # and groupfsInf + break + } + aic.last <- added$AIC if (verbose) print(step.info) } diff --git a/selectiveInference/man/factorDesign.Rd b/selectiveInference/man/factorDesign.Rd index 3a42e2e..d5d2576 100644 --- a/selectiveInference/man/factorDesign.Rd +++ b/selectiveInference/man/factorDesign.Rd @@ -1,4 +1,5 @@ -% Generated by roxygen2 (4.0.1.99): do not edit by hand +% Generated by roxygen2 (4.1.1): do not edit by hand +% Please edit documentation in R/funs.groupfs.R \name{factorDesign} \alias{factorDesign} \title{Expand a data frame with factors to form a design matrix with the full binary encoding of each factor.} diff --git a/selectiveInference/man/groupfs.Rd b/selectiveInference/man/groupfs.Rd index db2e512..c279c9e 100644 --- a/selectiveInference/man/groupfs.Rd +++ b/selectiveInference/man/groupfs.Rd @@ -1,10 +1,11 @@ -% Generated by roxygen2 (4.0.1.99): do not edit by hand +% Generated by roxygen2 (4.1.1): do not edit by hand +% Please edit documentation in R/funs.groupfs.R \name{groupfs} \alias{groupfs} \title{Select a model with forward stepwise.} \usage{ groupfs(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE, - center = TRUE, normalize = TRUE, verbose = FALSE) + center = TRUE, normalize = TRUE, aicstop = FALSE, verbose = FALSE) } \arguments{ \item{x}{Matrix of predictors (n by p).} @@ -25,6 +26,8 @@ groupfs(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE, \item{normalize}{Should the design matrix be normalized? Default is TRUE.} +\item{aicstop}{Early stopping if AIC increases, default is FALSE.} + \item{verbose}{Print out progress along the way? Default is FALSE.} } \value{ diff --git a/selectiveInference/man/groupfsInf.Rd b/selectiveInference/man/groupfsInf.Rd index 4926896..f5ee970 100644 --- a/selectiveInference/man/groupfsInf.Rd +++ b/selectiveInference/man/groupfsInf.Rd @@ -1,4 +1,5 @@ -% Generated by roxygen2 (4.0.1.99): do not edit by hand +% Generated by roxygen2 (4.1.1): do not edit by hand +% Please edit documentation in R/funs.groupfs.R \name{groupfsInf} \alias{groupfsInf} \title{Compute selective p-values for a model fitted by \code{groupfs}.} diff --git a/selectiveInference/man/scaleGroups.Rd b/selectiveInference/man/scaleGroups.Rd index 1e7e1c4..e5a93fa 100644 --- a/selectiveInference/man/scaleGroups.Rd +++ b/selectiveInference/man/scaleGroups.Rd @@ -1,4 +1,5 @@ -% Generated by roxygen2 (4.0.1.99): do not edit by hand +% Generated by roxygen2 (4.1.1): do not edit by hand +% Please edit documentation in R/funs.groupfs.R \name{scaleGroups} \alias{scaleGroups} \title{Center and scale design matrix by groups} From 680a56ddf9057461bd882207798a125f81ac728d Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Mon, 5 Oct 2015 13:22:20 -0700 Subject: [PATCH 018/493] Partially complete with early stopping and checking known sigma vs step --- selectiveInference/R/funs.groupfs.R | 63 ++++++++++++++++++++--------- tests/test.categorical.R | 8 ++-- tests/test.groupfs.R | 2 +- 3 files changed, 48 insertions(+), 25 deletions(-) diff --git a/selectiveInference/R/funs.groupfs.R b/selectiveInference/R/funs.groupfs.R index 17d2834..6abf324 100644 --- a/selectiveInference/R/funs.groupfs.R +++ b/selectiveInference/R/funs.groupfs.R @@ -11,17 +11,17 @@ #' @param intercept Should an intercept be included in the model? Default is TRUE. #' @param center Should the columns of the design matrix be centered? Default is TRUE. #' @param normalize Should the design matrix be normalized? Default is TRUE. -#' @param aicstop Early stopping if AIC increases, default is FALSE. +#' @param aicstop Early stopping if AIC increases. Default is 0 corresponding to no early stopping. Positive integer values specify the number of times the AIC is allowed to increase in a row, e.g. with \code{aicstop = 2} the algorithm will stop if the AIC criterion increases for 2 steps in a row. The default of \code{\link[stats]{step}} corresponds to \code{aicstop = 1}. #' @param verbose Print out progress along the way? Default is FALSE. #' @return An object of class "groupfs" containing information about the sequence of models in the forward stepwise algorithm. Call the function \code{\link{groupfsInf}} on this object to compute selective p-values. #' @examples #' x = matrix(rnorm(20*40), nrow=20) #' index = sort(rep(1:20, 2)) -#' y = rnorm(20) + 2 * (x[,1] - x[,2]) - (x[,3] - x[,4]) +#' y = rnorm(20) + 2 * x[,1] - x[,4] #' fit = groupfs(x, y, index, maxsteps = 5) #' pvals = groupfsInf(fit) -#' @seealso \code{\link{groupfsInf}} -groupfs <- function(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE, center = TRUE, normalize = TRUE, aicstop = FALSE, verbose = FALSE) { +#' @seealso \code{\link{groupfsInf}}, \code{\link{factorDesign}}. +groupfs <- function(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE, center = TRUE, normalize = TRUE, aicstop = 0, verbose = FALSE) { if (missing(index)) stop("Missing argument: index.") p <- ncol(x) @@ -65,7 +65,11 @@ groupfs <- function(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE path.info <- data.frame(imax=integer(maxsteps), df=integer(maxsteps), AIC=numeric(maxsteps), RSS=numeric(maxsteps), RSSdrop=numeric(maxsteps), chisq=numeric(maxsteps)) modelrank <- as.numeric(intercept) - aic.last <- n*(log(2*pi) + log(mean(y.update^2)) + 1 + k * (is.null(sigma) + intercept)) + if (is.null(sigma)) { + aic.begin <- aic.last <- n*(log(2*pi) + log(mean(y.update^2)) + 1 + k * (is.null(sigma) + intercept)) + } else { + aic.begin <- aic.last <- sum(y.update^2)/sigma^2 - n + k * intercept + } # Begin main loop for (step in 1:maxsteps) { @@ -78,8 +82,6 @@ groupfs <- function(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE active <- union(active, imax) inactive.inds <- which(!index %in% active) - # Compute AIC - added$AIC <- n*log(exp(k*modelrank/n) * added$maxterm/n) + n*(log(2*pi) + 1) # Rank of group modelrank <- modelrank + added$df @@ -94,6 +96,13 @@ groupfs <- function(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE y.update <- P.imax %*% y.update x.update[, inactive.inds] <- P.imax %*% x.update[, inactive.inds] + # Compute AIC + if (is.null(sigma)) { + added$AIC <- n*log(exp(k*modelrank/n) * added$maxterm/n) + n*(log(2*pi) + 1) + } else { + added$AIC <- sum(y.update^2)/sigma^2 - n + k * modelrank + } + projections[[step]] <- added$projections maxprojs[[step]] <- added$maxproj aicpens[[step]] <- added$aicpens @@ -109,36 +118,47 @@ groupfs <- function(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE added$RSSdrop <- sum((y.last - y.update)^2) added$chisq <- pchisq(added$RSSdrop/scale.chisq, lower.tail=FALSE, df = added$df) y.last <- y.update - + # Projections are stored separately step.info <- data.frame(added[-c(3:(length(added)-4))]) path.info[step, ] <- step.info - if (aic.last < added$AIC) { - # TODO tomorrow - # Modify the object somehow - # and groupfsInf - break + if (aicstop > 0 && step >= aicstop && aic.last < added$AIC) { + ########## Incomplete ########## + ## cut off the last aicstop variables as well? + if (all(diff(c(aic.begin, path.info$AIC)[(step+1-aicstop):(step+1)]) > 0)) { + path.info <- path.info[1:step, ] + projections[(step+1):maxsteps] <- NULL + maxprojs[(step+1):maxsteps] <- NULL + aicpens[(step+1):maxsteps] <- NULL + maxpens[(step+1):maxsteps] <- NULL + cumprojs[(step+1):maxsteps] <- NULL + terms[(step+1):maxsteps] <- NULL + maxsteps <- step + # add additional projections + break + } } aic.last <- added$AIC if (verbose) print(step.info) } # Create output object - value <- list(action=path.info$imax, L=path.info$L, projections = projections, maxprojs = maxprojs, aicpens = aicpens, maxpens = maxpens, cumprojs = cumprojs, log = path.info, index = index, y = y.begin, x = x.begin, bx = xm, sx = xs, sigma = sigma, intercept = intercept, call = match.call(), terms = terms) + value <- list(action=path.info$imax, L=path.info$L, AIC=path.info$AIC, projections = projections, maxprojs = maxprojs, aicpens = aicpens, maxpens = maxpens, cumprojs = cumprojs, log = path.info, index = index, y = y.begin, x = x.begin, bx = xm, sx = xs, sigma = sigma, intercept = intercept, call = match.call(), terms = terms) class(value) <- "groupfs" attr(value, "labels") <- labels attr(value, "index") <- index attr(value, "maxsteps") <- maxsteps attr(value, "sigma") <- sigma attr(value, "k") <- k + attr(value, "aicstop") <- aicstop if (is.null(attr(x, "varnames"))) { attr(value, "varnames") <- colnames(x) } else { attr(value, "varnames") <- attr(x, "varnames") } - invisible(value) + return(value) } #' Add one group to the model in \code{groupfs}. @@ -177,8 +197,8 @@ add1.groupfs <- function(xr, yr, index, labels, inactive, k, sigma = NULL) { aicpens[[key]] <- exp(k*(dfi+1)/n) terms[[key]] <- (sum(yr^2) - sum(uy^2)) * aicpens[[key]] } else { - aicpens[[key]] <- 2 * sigma^2 * k * dfi/n - terms[[key]] <- (sum(yr^2) - sum(uy^2)) - aicpens[[key]] + aicpens[[key]] <- k * dfi/n + terms[[key]] <- (sum(yr^2) - sum(uy^2))/sigma^2 - aicpens[[key]] } } @@ -203,8 +223,10 @@ add1.groupfs <- function(xr, yr, index, labels, inactive, k, sigma = NULL) { #' #' @param obj Object returned by \code{\link{groupfs}} function #' @param sigma Estimate of error standard deviation. If NULL (default), this is estimated using the mean squared residual of the full least squares fit when n >= 2p, and the mean squared residual of the selected model when n < 2p. In the latter case, the user should use \code{\link{estimateSigma}} function for a more accurate estimate. +#' @param type Type of conditional p-values to compute. With "all" (default), p-values are computed conditional on the final model with all variables up to \code{maxsteps}; with "aic" the number of steps is chosen after which the AIC criterion increases \code{ntimes} in a row, and then the same type of analysis as in "all" is carried out for the active variables at that number of steps. +#' @param ntimes Number of steps for which AIC criterion has to increase before minimizing point is declared. #' @param verbose Print out progress along the way? Default is FALSE. -#' @return An object of class "groupfsInf" containing selective p-values for the fitted model \code{obj}. The default printing behavior should supply adequate information. +#' @return An object of class "groupfsInf" containing selective p-values for the fitted model \code{obj}. For comparison with \code{\link{fsInf}}, note that the option \code{type = "active"} is not available. #' #' \describe{ #' \item{vars}{Labels of the active groups in the order they were included.} @@ -214,8 +236,9 @@ add1.groupfs <- function(xr, yr, index, labels, inactive, k, sigma = NULL) { #' \item{df}{Rank of group of variables when it was added to the model.} #' \item{support}{List of intervals defining the truncation region of the truncated chi.} #' } -groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { +groupfsInf <- function(obj, sigma = NULL, type = c("all", "aic"), ntimes = 2, verbose = FALSE) { + type <- match.arg(type) n <- nrow(obj$x) p <- ncol(obj$x) maxsteps <- attr(obj, "maxsteps") @@ -304,7 +327,7 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { if (!is.null(attr(obj, "varnames"))) { attr(out, "varnames") <- attr(obj, "varnames") } - invisible(out) + return(out) } # ----------------------------------------------------------- diff --git a/tests/test.categorical.R b/tests/test.categorical.R index a999a1b..4edf069 100644 --- a/tests/test.categorical.R +++ b/tests/test.categorical.R @@ -10,7 +10,7 @@ n <- 100 G <- 10 maxsteps <- 10 snr <- 1 -niter <- 200 +niter <- 100 print("Comparing step with groupfs on random categorical designs") aicdiffs <- numeric(niter) @@ -29,14 +29,14 @@ for (iter in 1:niter) { y <- y - mean(y) df$y <- y capture.output(fsfit <- step(lm(y ~ 0, df), direction="forward", scope = formula(lm(y~.-1, df)), steps = maxsteps, trace = 1000), file = "/dev/null") - fit <- groupfs(fd$x, df$y, fd$index, maxsteps = 10, intercept = F, center = F, normalize = F) + fit <- groupfs(fd$x, df$y, fd$index, maxsteps = 10, intercept = F, center = F, normalize = F, aicstop = 1) fsnames <- names(fsfit$coefficients) if (length(fsnames) > 0) { fsnames <- unique(substr(fsnames, 1, nchar(fsnames) - 1)) k <- length(fsnames) - fitnames <- attr(fit, "varnames")[fit$action][1:k] + fitnames <- attr(fit, "varnames")[fit$action][1:(length(fit$action)-attr(fit, "aicstop"))] aicdiffs[iter] <- AIC(fsfit) - fit$log$AIC[k] - if (any(fsnames != fitnames)) { + if (length(fitnames) !=k || any(fsnames != fitnames)) { print(paste("Mismatch at iteration", iter)) print(fsnames) print(fitnames) diff --git a/tests/test.groupfs.R b/tests/test.groupfs.R index 38cc85d..d35800e 100644 --- a/tests/test.groupfs.R +++ b/tests/test.groupfs.R @@ -14,7 +14,7 @@ sparsity <- 5 snr <- 3 system.time({ -for (iter in 1:10) { +for (iter in 1:100) { y <- rnorm(n) x <- matrix(rnorm(n*p), nrow=n) beta <- rep(0, p) From e9f061810d74c818d5a56cb7d6356365b10a9588 Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Mon, 5 Oct 2015 16:05:43 -0700 Subject: [PATCH 019/493] groupfs matches step exactly for both known and unknown sigma --- selectiveInference/R/funs.groupfs.R | 21 ++++++++--- tests/test.categorical.R | 55 +++++++++++++++++++---------- 2 files changed, 52 insertions(+), 24 deletions(-) diff --git a/selectiveInference/R/funs.groupfs.R b/selectiveInference/R/funs.groupfs.R index 6abf324..44f4523 100644 --- a/selectiveInference/R/funs.groupfs.R +++ b/selectiveInference/R/funs.groupfs.R @@ -58,6 +58,7 @@ groupfs <- function(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE x.begin <- x.update y.begin <- y.update + stopped <- FALSE # Store all projections computed along the path terms = projections = maxprojs = aicpens = maxpens = cumprojs = vector("list", maxsteps) @@ -70,6 +71,7 @@ groupfs <- function(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE } else { aic.begin <- aic.last <- sum(y.update^2)/sigma^2 - n + k * intercept } + if (verbose) print(paste0("Start: AIC=", round(aic.begin, 3)), quote = FALSE) # Begin main loop for (step in 1:maxsteps) { @@ -98,9 +100,14 @@ groupfs <- function(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE # Compute AIC if (is.null(sigma)) { - added$AIC <- n*log(exp(k*modelrank/n) * added$maxterm/n) + n*(log(2*pi) + 1) + added$AIC <- n * log(added$maxterm/n) - k * added$df + n + n*log(2*pi) + k * modelrank } else { added$AIC <- sum(y.update^2)/sigma^2 - n + k * modelrank + if (verbose) { + aics <- matrix(round(unlist(added$terms) - n + k * (modelrank - added$df), 2), ncol = 1) + rownames(aics) <- names(added$terms) + write.table(aics, col.names = F, quote = F) + } } projections[[step]] <- added$projections @@ -123,6 +130,8 @@ groupfs <- function(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE step.info <- data.frame(added[-c(3:(length(added)-4))]) path.info[step, ] <- step.info + if (verbose) print(round(step.info, 3)) + if (aicstop > 0 && step >= aicstop && aic.last < added$AIC) { ########## Incomplete ########## ## cut off the last aicstop variables as well? @@ -135,16 +144,17 @@ groupfs <- function(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE cumprojs[(step+1):maxsteps] <- NULL terms[(step+1):maxsteps] <- NULL maxsteps <- step + stopped <- TRUE # add additional projections break } } aic.last <- added$AIC - if (verbose) print(step.info) } # Create output object value <- list(action=path.info$imax, L=path.info$L, AIC=path.info$AIC, projections = projections, maxprojs = maxprojs, aicpens = aicpens, maxpens = maxpens, cumprojs = cumprojs, log = path.info, index = index, y = y.begin, x = x.begin, bx = xm, sx = xs, sigma = sigma, intercept = intercept, call = match.call(), terms = terms) + class(value) <- "groupfs" attr(value, "labels") <- labels attr(value, "index") <- index @@ -152,6 +162,7 @@ groupfs <- function(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE attr(value, "sigma") <- sigma attr(value, "k") <- k attr(value, "aicstop") <- aicstop + if (aicstop > 0) attr(value, "stopped") <- stopped if (is.null(attr(x, "varnames"))) { attr(value, "varnames") <- colnames(x) } else { @@ -194,11 +205,11 @@ add1.groupfs <- function(xr, yr, index, labels, inactive, k, sigma = NULL) { projections[[key]] <- ui uy <- t(ui) %*% yr if (is.null(sigma)) { - aicpens[[key]] <- exp(k*(dfi+1)/n) + aicpens[[key]] <- exp(k*dfi/n) terms[[key]] <- (sum(yr^2) - sum(uy^2)) * aicpens[[key]] } else { - aicpens[[key]] <- k * dfi/n - terms[[key]] <- (sum(yr^2) - sum(uy^2))/sigma^2 - aicpens[[key]] + aicpens[[key]] <- k * dfi + terms[[key]] <- (sum(yr^2) - sum(uy^2))/sigma^2 + aicpens[[key]] } } diff --git a/tests/test.categorical.R b/tests/test.categorical.R index 4edf069..2b5f4bd 100644 --- a/tests/test.categorical.R +++ b/tests/test.categorical.R @@ -12,9 +12,31 @@ maxsteps <- 10 snr <- 1 niter <- 100 +check.mismatch <- function(fsfit, fit) { + fsnames <- names(fsfit$coefficients) + if (length(fsnames) > 0) { + fsnames <- unique(substr(fsnames, 1, nchar(fsnames) - 1)) + k <- length(fsnames) + fitnames <- attr(fit, "varnames")[fit$action][1:(length(fit$action)-attr(fit, "aicstop"))] + if (is.null(fit$sigma)) { + aicdiff <- AIC(fsfit) - fit$log$AIC[k] + } else { + aicdiff <- extractAIC(fsfit, scale = fit$sigma)[2] - fit$log$AIC[k] + } + if (length(fitnames) !=k || any(fsnames != fitnames)) { + print(paste("Mismatch at iteration", iter, ifelse(is.null(fit$sigma), "unknown", "known"))) + print(fsnames) + print(fitnames) + return(list(count = 1, aicdiff = aicdiff)) + } + return(list(count = 0, aicdiff = aicdiff)) + } + return(list(count = 0, aicdiff = 0)) +} + print("Comparing step with groupfs on random categorical designs") -aicdiffs <- numeric(niter) -mismatchcount <- 0 +umismatchcount <- kmismatchcount <- 0 +uaicdiffs <- kaicdiffs <- numeric(niter) for (iter in 1:niter) { rles <- 2 + rpois(G, 2) df <- data.frame(do.call(cbind, lapply(rles, function(g) { @@ -28,22 +50,17 @@ for (iter in 1:niter) { y <- y + x1 %*% c(snr, rep(0, ncol(x1) - 2), -snr) y <- y - mean(y) df$y <- y - capture.output(fsfit <- step(lm(y ~ 0, df), direction="forward", scope = formula(lm(y~.-1, df)), steps = maxsteps, trace = 1000), file = "/dev/null") + capture.output(fsfit <- step(lm(y ~ 0, df), direction="forward", scope = formula(lm(y~.-1, df)), steps = maxsteps), file = "/dev/null") fit <- groupfs(fd$x, df$y, fd$index, maxsteps = 10, intercept = F, center = F, normalize = F, aicstop = 1) - fsnames <- names(fsfit$coefficients) - if (length(fsnames) > 0) { - fsnames <- unique(substr(fsnames, 1, nchar(fsnames) - 1)) - k <- length(fsnames) - fitnames <- attr(fit, "varnames")[fit$action][1:(length(fit$action)-attr(fit, "aicstop"))] - aicdiffs[iter] <- AIC(fsfit) - fit$log$AIC[k] - if (length(fitnames) !=k || any(fsnames != fitnames)) { - print(paste("Mismatch at iteration", iter)) - print(fsnames) - print(fitnames) - mismatchcount <- mismatchcount + 1 - } - } + mismatches <- check.mismatch(fsfit, fit) + umismatchcount <- umismatchcount + mismatches$count + uaicdiffs[iter] <- mismatches$aicdiff + capture.output(fsfit <- step(lm(y ~ 0, df), scale = 1, direction="forward", scope = formula(lm(y~.-1, df)), steps = maxsteps), file = "/dev/null") + fit <- groupfs(fd$x, df$y, fd$index, maxsteps = 10, sigma = 1, intercept = F, center = F, normalize = F, aicstop = 1) + mismatches <- check.mismatch(fsfit, fit) + kmismatchcount <- kmismatchcount + mismatches$count + kaicdiffs[iter] <- mismatches$aicdiff } -print(paste("Total mismatches:", mismatchcount, "out of", niter)) -print("Summary of differences in AIC") -summary(aicdiffs) +print(paste("Mismatches:", umismatchcount, "for unknown sigma and", kmismatchcount, "for known")) +summary(uaicdiffs) +summary(kaicdiffs) From a18943602aae11572b63af64d8ff87417bdb8124 Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Mon, 5 Oct 2015 16:08:06 -0700 Subject: [PATCH 020/493] Removed print statement used for debugging --- selectiveInference/R/funs.groupfs.R | 5 ----- 1 file changed, 5 deletions(-) diff --git a/selectiveInference/R/funs.groupfs.R b/selectiveInference/R/funs.groupfs.R index 44f4523..e9b03d7 100644 --- a/selectiveInference/R/funs.groupfs.R +++ b/selectiveInference/R/funs.groupfs.R @@ -103,11 +103,6 @@ groupfs <- function(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE added$AIC <- n * log(added$maxterm/n) - k * added$df + n + n*log(2*pi) + k * modelrank } else { added$AIC <- sum(y.update^2)/sigma^2 - n + k * modelrank - if (verbose) { - aics <- matrix(round(unlist(added$terms) - n + k * (modelrank - added$df), 2), ncol = 1) - rownames(aics) <- names(added$terms) - write.table(aics, col.names = F, quote = F) - } } projections[[step]] <- added$projections From 23e1599591a93dc9100ee5e661490f7dcbfad1ca Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Mon, 5 Oct 2015 18:06:49 -0700 Subject: [PATCH 021/493] Currently broken, but almost done implementing AICstop --- selectiveInference/R/funs.groupfs.R | 65 +++++++++++++++++++++++++---- 1 file changed, 56 insertions(+), 9 deletions(-) diff --git a/selectiveInference/R/funs.groupfs.R b/selectiveInference/R/funs.groupfs.R index e9b03d7..a3f0b7c 100644 --- a/selectiveInference/R/funs.groupfs.R +++ b/selectiveInference/R/funs.groupfs.R @@ -131,6 +131,40 @@ groupfs <- function(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE ########## Incomplete ########## ## cut off the last aicstop variables as well? if (all(diff(c(aic.begin, path.info$AIC)[(step+1-aicstop):(step+1)]) > 0)) { + stopquads <- ulist <- zlist <- penlist <- vector("list", aicstop) + for (s in seq(aicstop)) { + etas <- cumprojs[[step - aicstop + s]] %*% eta + Zs <- cumprojs[[step - aicstop + s]] %*% Z + maxprojs[[(step-aicstop):step]][[s]] + maxpens[[(step-aicstop):step]][[s]] + } + + Uheta <- t(Uh) %*% etas + Ugeta <- t(Ug) %*% etas + UhZ <- t(Uh) %*% Zs + UgZ <- t(Ug) %*% Zs + etasZs <- t(etas) %*% Zs + peng <- obj$maxpens[[s]] + penh <- obj$aicpens[[s]][[l]] + pendiff <- peng-penh + if (is.null(obj$sigma)) { + A <- sum(Ugeta^2) * peng - sum(Uheta^2) * penh - sum(etas^2) * pendiff + B <- 2 * as.numeric(t(Ugeta) %*% UgZ * peng - t(Uheta) %*% UhZ * penh - etasZs * pendiff) + C <- sum(UgZ^2) * peng - sum(UhZ^2) * penh - sum(Zs^2) * pendiff + } else { + # Check this + A <- sum(Ugeta^2) - sum(Uheta^2) + B <- 2 * as.numeric(t(Ugeta) %*% UgZ - t(Uheta) %*% UhZ) + C <- sum(UgZ^2) - sum(UhZ^2) - pendiff + } + + + if (is.null(sigma)) { + added$AIC <- n * log(added$maxterm/n) - k * added$df + n + n*log(2*pi) + k * modelrank + } else { + added$AIC <- sum(y.update^2)/sigma^2 - n + k * modelrank + } + path.info <- path.info[1:step, ] projections[(step+1):maxsteps] <- NULL maxprojs[(step+1):maxsteps] <- NULL @@ -157,13 +191,15 @@ groupfs <- function(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE attr(value, "sigma") <- sigma attr(value, "k") <- k attr(value, "aicstop") <- aicstop - if (aicstop > 0) attr(value, "stopped") <- stopped + attr(value, "stopped") <- stopped + if (stopped) { + value$stopquads <- stopquads + } if (is.null(attr(x, "varnames"))) { attr(value, "varnames") <- colnames(x) } else { attr(value, "varnames") <- attr(x, "varnames") } - return(value) } @@ -300,18 +336,29 @@ groupfsInf <- function(obj, sigma = NULL, type = c("all", "aic"), ntimes = 2, ve intervallist <- truncationRegion(obj, TC, R, eta, Z) if (!is.null(obj$cvobj)) { + if (attr(obj, "stopped")) stop("Cross-validation and early stopping cannot be used simultaneously") intervallist <- c(intervallist, do.call(c, lapply(obj$cvobj, function(cvf) { truncationRegion(cvf, TC, R[-cvf$fold], eta[-cvf$fold], Z[-cvf$fold]) }))) intervallist <- c(intervallist, - lapply(obj$cvquad, function(cvquad) { - etacvquad <- t(eta) %*% cvquad - A <- etacvquad %*% eta - B <- 2 * etacvquad %*% Z - C <- t(Z) %*% cvquad %*% Z - quadratic_roots(A, B, C, tol = 1e-15) - })) + lapply(obj$cvquad, function(cvquad) { + etacvquad <- t(eta) %*% cvquad + A <- etacvquad %*% eta + B <- 2 * etacvquad %*% Z + C <- t(Z) %*% cvquad %*% Z + quadratic_roots(A, B, C, tol = 1e-15) + })) + } + if (attr(obj, "stopped")) { + intervallist <- c(intervallist, + lapply(obj$stopquads, function(squad) { + etasquad <- t(eta) %*% squad + A <- etasquad %*% eta + B <- 2 * etasquad %*% Z + C <- t(Z) %*% squad %*% Z + quadratic_roots(A, B, C, tol = 1e-15) + })) } # Compute intersection: From d2d9db43c4516842c2b13d3cbf25c75d089862bf Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Mon, 5 Oct 2015 22:12:45 -0700 Subject: [PATCH 022/493] Still broken, closer to finishing AICstop --- selectiveInference/R/funs.groupfs.R | 65 +++++++++++++-------------- selectiveInference/R/funs.quadratic.R | 41 ++++++++--------- 2 files changed, 53 insertions(+), 53 deletions(-) diff --git a/selectiveInference/R/funs.groupfs.R b/selectiveInference/R/funs.groupfs.R index a3f0b7c..686d248 100644 --- a/selectiveInference/R/funs.groupfs.R +++ b/selectiveInference/R/funs.groupfs.R @@ -131,33 +131,6 @@ groupfs <- function(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE ########## Incomplete ########## ## cut off the last aicstop variables as well? if (all(diff(c(aic.begin, path.info$AIC)[(step+1-aicstop):(step+1)]) > 0)) { - stopquads <- ulist <- zlist <- penlist <- vector("list", aicstop) - for (s in seq(aicstop)) { - etas <- cumprojs[[step - aicstop + s]] %*% eta - Zs <- cumprojs[[step - aicstop + s]] %*% Z - maxprojs[[(step-aicstop):step]][[s]] - maxpens[[(step-aicstop):step]][[s]] - } - - Uheta <- t(Uh) %*% etas - Ugeta <- t(Ug) %*% etas - UhZ <- t(Uh) %*% Zs - UgZ <- t(Ug) %*% Zs - etasZs <- t(etas) %*% Zs - peng <- obj$maxpens[[s]] - penh <- obj$aicpens[[s]][[l]] - pendiff <- peng-penh - if (is.null(obj$sigma)) { - A <- sum(Ugeta^2) * peng - sum(Uheta^2) * penh - sum(etas^2) * pendiff - B <- 2 * as.numeric(t(Ugeta) %*% UgZ * peng - t(Uheta) %*% UhZ * penh - etasZs * pendiff) - C <- sum(UgZ^2) * peng - sum(UhZ^2) * penh - sum(Zs^2) * pendiff - } else { - # Check this - A <- sum(Ugeta^2) - sum(Uheta^2) - B <- 2 * as.numeric(t(Ugeta) %*% UgZ - t(Uheta) %*% UhZ) - C <- sum(UgZ^2) - sum(UhZ^2) - pendiff - } - if (is.null(sigma)) { added$AIC <- n * log(added$maxterm/n) - k * added$df + n + n*log(2*pi) + k * modelrank @@ -351,13 +324,39 @@ groupfsInf <- function(obj, sigma = NULL, type = c("all", "aic"), ntimes = 2, ve })) } if (attr(obj, "stopped")) { + + ulist <- etalist <- zlist <- penlist <- vector("list", aicstop) + for (s in seq(aicstop)) { + stepind <- maxsteps - aicstop + s + if (stepind > 1) { + etalist[[s]] <- cumprojs[[stepind]] %*% eta + zlist[[s]] <- cumprojs[[stepind]] %*% Z + } else { + etalist[[s]] <- eta + zlist[[s]] <- Z + } + ulist[[s]] <- obj$maxprojs[[stepind]] + penlist[[s]] <- obj$maxpens[[stepind]] + } + intervallist <- c(intervallist, - lapply(obj$stopquads, function(squad) { - etasquad <- t(eta) %*% squad - A <- etasquad %*% eta - B <- 2 * etasquad %*% Z - C <- t(Z) %*% squad %*% Z - quadratic_roots(A, B, C, tol = 1e-15) + lapply(0:(aicstop-1), function(s) { + # ^ fix this ^ + # check indexing direction + Ug <- ulist[[s]] + Uh <- ulist[[s+1]] + peng <- penlist[[s]] + penh <- penlist[[s+1]] + etag <- etalist[[s]] + etah <- etalist[[s+1]] + Zg <- zlist[[s]] + Zh <- zlist[[s+1]] + + coeffs <- quadratic_coefficients(obj$sigma, Ug, Uh, peng, penh, etag, etah, Zg, Zh) + quadratic_roots(coeffs$A, coeffs$B, coeffs$C, tol) + + # additional constant term + # pendiff * (sum(rs^2) - sum(r_(s-1)^2)) ? })) } diff --git a/selectiveInference/R/funs.quadratic.R b/selectiveInference/R/funs.quadratic.R index 2a33cf4..db73cc8 100644 --- a/selectiveInference/R/funs.quadratic.R +++ b/selectiveInference/R/funs.quadratic.R @@ -6,8 +6,7 @@ truncationRegion <- function(obj, TC, R, eta, Z, tol = 1e-15) { L <- lapply(1:length(obj$action), function(s) { Ug <- obj$maxprojs[[s]] - dfg <- ncol(Ug) - + peng <- obj$maxpens[[s]] if (s > 1) { etas <- obj$cumprojs[[s-1]] %*% eta Zs <- obj$cumprojs[[s-1]] %*% Z @@ -19,25 +18,34 @@ truncationRegion <- function(obj, TC, R, eta, Z, tol = 1e-15) { num.projs <- length(obj$projections[[s]]) if (num.projs == 0) { return(list(Intervals(c(-Inf,0)))) + } else { lapply(1:num.projs, function(l) { - Uh <- obj$projections[[s]][[l]] - dfh <- ncol(Uh) - # The quadratic form corresponding to - # (t*U + Z)^T %*% Q %*% (t*U + Z) \geq 0 - # we find the roots in t, if there are any - # and return the interval of potential t + Uh <- obj$projections[[s]][[l]] + penh <- obj$aicpens[[s]][[l]] + # The quadratic form corresponding to + # (t*U + Z)^T %*% Q %*% (t*U + Z) \geq 0 + # we find the roots in t, if there are any + # and return the interval of potential t + coeffs <- quadratic_coefficients(obj$sigma, Ug, Uh, peng, penh, etas, etas, Zs, Zs) + quadratic_roots(coeffs$A, coeffs$B, coeffs$C, tol) + }) + } + # LL is a list of intervals + }) + # L is now a list of lists of intervals + return(unlist(L, recursive = FALSE, use.names = FALSE)) +} +quadratic_coefficients <- function(sigma, Ug, Uh, peng, penh, etag, etah, Zg, Zh) { Uheta <- t(Uh) %*% etas Ugeta <- t(Ug) %*% etas UhZ <- t(Uh) %*% Zs UgZ <- t(Ug) %*% Zs etasZs <- t(etas) %*% Zs - peng <- obj$maxpens[[s]] - penh <- obj$aicpens[[s]][[l]] pendiff <- peng-penh - if (is.null(obj$sigma)) { + if (is.null(sigma)) { A <- sum(Ugeta^2) * peng - sum(Uheta^2) * penh - sum(etas^2) * pendiff B <- 2 * as.numeric(t(Ugeta) %*% UgZ * peng - t(Uheta) %*% UhZ * penh - etasZs * pendiff) C <- sum(UgZ^2) * peng - sum(UhZ^2) * penh - sum(Zs^2) * pendiff @@ -45,16 +53,9 @@ truncationRegion <- function(obj, TC, R, eta, Z, tol = 1e-15) { # Check this A <- sum(Ugeta^2) - sum(Uheta^2) B <- 2 * as.numeric(t(Ugeta) %*% UgZ - t(Uheta) %*% UhZ) - C <- sum(UgZ^2) - sum(UhZ^2) - pendiff + C <- sum(UgZ^2) - sum(UhZ^2) - sigma^2 * pendiff } - - quadratic_roots(A, B, C, tol) - }) - } - # LL is a list of intervals - }) - # L is now a list of lists of intervals - return(unlist(L, recursive = FALSE, use.names = FALSE)) + return(list(A = A, B = B, C= C)) } quadratic_roots <- function(A, B, C, tol) { From 78f1cb84218ee23d8e1fa03198b0309e1d970ce1 Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Wed, 7 Oct 2015 14:12:01 -0700 Subject: [PATCH 023/493] AICstop may be finished. Needs more testing --- selectiveInference/R/funs.groupfs.R | 73 +++++++++++++-------------- selectiveInference/R/funs.quadratic.R | 36 ++++++------- 2 files changed, 55 insertions(+), 54 deletions(-) diff --git a/selectiveInference/R/funs.groupfs.R b/selectiveInference/R/funs.groupfs.R index 686d248..b6b95b6 100644 --- a/selectiveInference/R/funs.groupfs.R +++ b/selectiveInference/R/funs.groupfs.R @@ -165,9 +165,6 @@ groupfs <- function(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE attr(value, "k") <- k attr(value, "aicstop") <- aicstop attr(value, "stopped") <- stopped - if (stopped) { - value$stopquads <- stopquads - } if (is.null(attr(x, "varnames"))) { attr(value, "varnames") <- colnames(x) } else { @@ -212,8 +209,8 @@ add1.groupfs <- function(xr, yr, index, labels, inactive, k, sigma = NULL) { aicpens[[key]] <- exp(k*dfi/n) terms[[key]] <- (sum(yr^2) - sum(uy^2)) * aicpens[[key]] } else { - aicpens[[key]] <- k * dfi - terms[[key]] <- (sum(yr^2) - sum(uy^2))/sigma^2 + aicpens[[key]] + aicpens[[key]] <- sigma^2 * k * dfi + terms[[key]] <- (sum(yr^2) - sum(uy^2)) + aicpens[[key]] } } @@ -253,6 +250,10 @@ add1.groupfs <- function(xr, yr, index, labels, inactive, k, sigma = NULL) { #' } groupfsInf <- function(obj, sigma = NULL, type = c("all", "aic"), ntimes = 2, verbose = FALSE) { + if (!is.null(obj$cvobj) && attr(obj, "stopped")) { + stop("Cross-validation and early stopping cannot be used simultaneously") + } + type <- match.arg(type) n <- nrow(obj$x) p <- ncol(obj$x) @@ -309,7 +310,6 @@ groupfsInf <- function(obj, sigma = NULL, type = c("all", "aic"), ntimes = 2, ve intervallist <- truncationRegion(obj, TC, R, eta, Z) if (!is.null(obj$cvobj)) { - if (attr(obj, "stopped")) stop("Cross-validation and early stopping cannot be used simultaneously") intervallist <- c(intervallist, do.call(c, lapply(obj$cvobj, function(cvf) { truncationRegion(cvf, TC, R[-cvf$fold], eta[-cvf$fold], Z[-cvf$fold]) @@ -324,40 +324,39 @@ groupfsInf <- function(obj, sigma = NULL, type = c("all", "aic"), ntimes = 2, ve })) } if (attr(obj, "stopped")) { - - ulist <- etalist <- zlist <- penlist <- vector("list", aicstop) - for (s in seq(aicstop)) { - stepind <- maxsteps - aicstop + s - if (stepind > 1) { - etalist[[s]] <- cumprojs[[stepind]] %*% eta - zlist[[s]] <- cumprojs[[stepind]] %*% Z - } else { - etalist[[s]] <- eta - zlist[[s]] <- Z - } - ulist[[s]] <- obj$maxprojs[[stepind]] - penlist[[s]] <- obj$maxpens[[stepind]] + aicstop <- attr(obj, "aicstop") + + ulist <- etalist <- zlist <- penlist <- vector("list", aicstop+1) + for (s in seq(aicstop+1)) { + stepind <- maxsteps - (aicstop+1) + s +# print(c(s, stepind)) + if (stepind > 1) { + etalist[[s]] <- obj$cumprojs[[stepind-1]] %*% eta + zlist[[s]] <- obj$cumprojs[[stepind-1]] %*% Z + } else { + etalist[[s]] <- eta + zlist[[s]] <- Z } + ulist[[s]] <- obj$maxprojs[[stepind]] + penlist[[s]] <- obj$maxpens[[stepind]] + } intervallist <- c(intervallist, - lapply(0:(aicstop-1), function(s) { - # ^ fix this ^ - # check indexing direction - Ug <- ulist[[s]] - Uh <- ulist[[s+1]] - peng <- penlist[[s]] - penh <- penlist[[s+1]] - etag <- etalist[[s]] - etah <- etalist[[s+1]] - Zg <- zlist[[s]] - Zh <- zlist[[s+1]] - - coeffs <- quadratic_coefficients(obj$sigma, Ug, Uh, peng, penh, etag, etah, Zg, Zh) - quadratic_roots(coeffs$A, coeffs$B, coeffs$C, tol) - - # additional constant term - # pendiff * (sum(rs^2) - sum(r_(s-1)^2)) ? - })) + do.call(c, lapply(1:aicstop, function(s) { + lapply((s+1):(aicstop+1), function(sp) { + Ug <- ulist[[s]] + Uh <- ulist[[sp]] + peng <- penlist[[s]] + penh <- prod(unlist(penlist[s:sp])) + etag <- etalist[[s]] + etah <- etalist[[sp]] + Zg <- zlist[[s]] + Zh <- zlist[[sp]] + + coeffs <- quadratic_coefficients(obj$sigma, Ug, Uh, peng, penh, etag, etah, Zg, Zh) + quadratic_roots(coeffs$A, coeffs$B, coeffs$C, tol = 1e-15) + }) + }))) } # Compute intersection: diff --git a/selectiveInference/R/funs.quadratic.R b/selectiveInference/R/funs.quadratic.R index db73cc8..53372be 100644 --- a/selectiveInference/R/funs.quadratic.R +++ b/selectiveInference/R/funs.quadratic.R @@ -39,23 +39,25 @@ truncationRegion <- function(obj, TC, R, eta, Z, tol = 1e-15) { } quadratic_coefficients <- function(sigma, Ug, Uh, peng, penh, etag, etah, Zg, Zh) { - Uheta <- t(Uh) %*% etas - Ugeta <- t(Ug) %*% etas - UhZ <- t(Uh) %*% Zs - UgZ <- t(Ug) %*% Zs - etasZs <- t(etas) %*% Zs - pendiff <- peng-penh - if (is.null(sigma)) { - A <- sum(Ugeta^2) * peng - sum(Uheta^2) * penh - sum(etas^2) * pendiff - B <- 2 * as.numeric(t(Ugeta) %*% UgZ * peng - t(Uheta) %*% UhZ * penh - etasZs * pendiff) - C <- sum(UgZ^2) * peng - sum(UhZ^2) * penh - sum(Zs^2) * pendiff - } else { + # g indexes minimizer, h the comparison + Uheta <- t(Uh) %*% etah + Ugeta <- t(Ug) %*% etag + UhZ <- t(Uh) %*% Zh + UgZ <- t(Ug) %*% Zg + etaZh <- t(etah) %*% Zh + etaZg <- t(etag) %*% Zg + if (is.null(sigma)) { + # Check the signs, make it consistent + A <- penh * (sum(etah^2) - sum(Uheta^2)) - peng * (sum(etag)^2 - sum(Ugeta^2)) + B <- 2 * penh * (etaZh - t(Uheta) %*% UhZ) - 2 * peng * (etaZg - t(Ugeta) %*% UgZ) + C <- penh * (sum(Zh^2) - sum(UhZ^2)) - peng * (sum(Zg^2) - sum(UgZ^2)) + } else { # Check this - A <- sum(Ugeta^2) - sum(Uheta^2) - B <- 2 * as.numeric(t(Ugeta) %*% UgZ - t(Uheta) %*% UhZ) - C <- sum(UgZ^2) - sum(UhZ^2) - sigma^2 * pendiff - } - return(list(A = A, B = B, C= C)) + A <- (sum(etah^2) - sum(Uheta^2)) - (sum(etag)^2 - sum(Ugeta^2)) + B <- 2 * (etaZh - t(Uheta) %*% UhZ) - 2 * (etaZg - t(Ugeta) %*% UgZ) + C <- (sum(Zh^2) - sum(UhZ^2) + penh) - (sum(Zg^2) - sum(UgZ^2) + peng) + } + return(list(A = A, B = B, C= C)) } quadratic_roots <- function(A, B, C, tol) { @@ -107,7 +109,7 @@ quadratic_roots <- function(A, B, C, tol) { if (B > 0) { return(Intervals(c(-Inf, max(0, -C/B)))) } else { - if (-C/B < 0) stop("Error: infeasible linear equation") + if (-C/B < 0) stop("Infeasible linear equation") return(Intervals(rbind(c(-Inf, 0), c(-C/B, Inf)))) } } else { From c2b4cf0853d96e0efe0374c0abb24e4a771f1387 Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Wed, 7 Oct 2015 17:56:54 -0700 Subject: [PATCH 024/493] Fixed some critical typos, more testing of AICstop --- forLater/josh/funs.sims.R | 46 +++++++++++++++++++++++++++ forLater/josh/sim.aicstop.R | 45 ++++++++++++++++++++++++++ selectiveInference/R/funs.groupfs.R | 6 ++-- selectiveInference/R/funs.quadratic.R | 11 +++---- 4 files changed, 99 insertions(+), 9 deletions(-) create mode 100644 forLater/josh/funs.sims.R create mode 100644 forLater/josh/sim.aicstop.R diff --git a/forLater/josh/funs.sims.R b/forLater/josh/funs.sims.R new file mode 100644 index 0000000..7f36d45 --- /dev/null +++ b/forLater/josh/funs.sims.R @@ -0,0 +1,46 @@ +# Functions for simulation/testing + +randomGroupSizes <- function(G, lambda = 2) return(2 + rpois(G, lambda)) + +randomGroups <- function(G, lambda = 2) { + rles <- randomGroupSizes(G, lambda) + return(rep(1:G, rles)) +} + +randomIndexFixedP <- function(p, G) sort(c(sample(1:G), sample(1:G, size = p-G, replace=T))) + +randomFactorDesign <- function(n, G, lambda = 2) { + if (n < (1+lambda)*G) stop("Larger n required to avoid duplicate columns") + rles <- randomGroupSizes(G, lambda) + print(rles) + df <- data.frame(do.call(cbind, lapply(rles, function(g) { + sample(LETTERS[1:g], n, replace = TRUE, prob = runif(g)) + })), stringsAsFactors = TRUE) + if (any(apply(df, 2, function(col) length(unique(col))) == 1)) return(randomFactorDesign(n, G, lambda)) + fd <- factorDesign(df) + if (any(duplicated(fd$x, MARGIN = 2))) return(randomFactorDesign(n, G, lambda)) + return(list(df=df, fd=fd)) +} + +randomFactorsFixedP <- function(p, G) { +# index <- +} + +randomGaussianFixedP <- function(n, p, G = p, sparsity = 0, snr = 0, sigma = 1, rho = 0) { + index <- 1:p + if (G < p) index <- randomIndexFixedP(p, G) + x <- matrix(rnorm(n*p), nrow=n) + if (rho != 0) { + z <- matrix(rep(t(rnorm(n)), p), nrow = n) + x <- sqrt(1-rho)*x + sqrt(rho)*z + } + beta <- rep(0, p) + if (sparsity > 0 && snr > 0) { + for (j in 1:sparsity) { + inds <- which(index == j) + beta[inds] <- snr/sqrt(length(inds)) + } + } + y <- x %*% beta + sigma * rnorm(n) + return(list(x=x, y=y, beta = beta, index=index, sigma = sigma)) +} diff --git a/forLater/josh/sim.aicstop.R b/forLater/josh/sim.aicstop.R new file mode 100644 index 0000000..33037d2 --- /dev/null +++ b/forLater/josh/sim.aicstop.R @@ -0,0 +1,45 @@ +library(intervals) +source("selectiveInference/R/cv.R") +source("../../selectiveInference/R/funs.groupfs.R") +source("../../selectiveInference/R/funs.quadratic.R") +source("../../selectiveInference/R/funs.common.R") + +set.seed(1) +niters <- 500 +n <- 100 +p <- 100 +G <- 50 +maxsteps <- 15 +sparsity <- 5 +snr <- 1 +rho <- .1 +aicstop <- 1 + +instance <- function(n, p, G, sparsity, snr, rho, maxsteps, aicstop) { + + simd <- randomGaussianFixedP(n, p, G, sparsity, snr, rho) + x <- simd$x + y <- simd$y + index <- simd$index + + fit <- groupfs(x, y, index, maxsteps, k = log(n), aicstop = aicstop) + pvals <- groupfsInf(fit, verbose=T) + return(list(variable = fit$action, pvals = pvals$pv, stopped = attr(fit, "stopped"))) +} + +time <- system.time({ + output <- replicate(niters, instance(n, p, G, sparsity, snr, rho, maxsteps, aicstop)) +}) + +stopped <- do.call(c, list(output[3,])) +pvals <- do.call(c, list(output[2,])) +vars <- do.call(c, list(output[1,])) + +save(pvals, vars, stopped, file = paste0( + "results_aic", aicstop, "_n", n, + "_p", p, + "_sparsity", sparsity, + "_snr", snr, + ".RData")) + +print(time) diff --git a/selectiveInference/R/funs.groupfs.R b/selectiveInference/R/funs.groupfs.R index b6b95b6..ae5e972 100644 --- a/selectiveInference/R/funs.groupfs.R +++ b/selectiveInference/R/funs.groupfs.R @@ -304,9 +304,9 @@ groupfsInf <- function(obj, sigma = NULL, type = c("all", "aic"), ntimes = 2, ve TC <- sqrt(sum(R^2)) eta <- Ugtilde %*% R / TC Z <- obj$y - eta * TC - df <- ncol(Ugtilde) + dfi <- ncol(Ugtilde) TCs[j] <- TC - dfs[j] <- df + dfs[j] <- dfi intervallist <- truncationRegion(obj, TC, R, eta, Z) if (!is.null(obj$cvobj)) { @@ -369,7 +369,7 @@ groupfsInf <- function(obj, sigma = NULL, type = c("all", "aic"), ntimes = 2, ve supports[[j]] <- E # E is now potentially a union of intervals - pvals[j] <- TC_surv(TC, sigma, df, E) + pvals[j] <- TC_surv(TC, sigma, dfi, E) } if (nanconv) warning("P-value NaNs of the form 0/0 converted to 0. This typically occurs for numerical reasons in the presence of a large signal-to-noise ratio.") names(pvals) <- obj$action diff --git a/selectiveInference/R/funs.quadratic.R b/selectiveInference/R/funs.quadratic.R index 53372be..2a15ce2 100644 --- a/selectiveInference/R/funs.quadratic.R +++ b/selectiveInference/R/funs.quadratic.R @@ -18,12 +18,11 @@ truncationRegion <- function(obj, TC, R, eta, Z, tol = 1e-15) { num.projs <- length(obj$projections[[s]]) if (num.projs == 0) { return(list(Intervals(c(-Inf,0)))) - + } else { lapply(1:num.projs, function(l) { - Uh <- obj$projections[[s]][[l]] - penh <- obj$aicpens[[s]][[l]] + penh <- obj$aicpens[[s]][[l]] # The quadratic form corresponding to # (t*U + Z)^T %*% Q %*% (t*U + Z) \geq 0 # we find the roots in t, if there are any @@ -48,14 +47,14 @@ quadratic_coefficients <- function(sigma, Ug, Uh, peng, penh, etag, etah, Zg, Zh etaZg <- t(etag) %*% Zg if (is.null(sigma)) { # Check the signs, make it consistent - A <- penh * (sum(etah^2) - sum(Uheta^2)) - peng * (sum(etag)^2 - sum(Ugeta^2)) + A <- penh * (sum(etah^2) - sum(Uheta^2)) - peng * (sum(etag^2) - sum(Ugeta^2)) B <- 2 * penh * (etaZh - t(Uheta) %*% UhZ) - 2 * peng * (etaZg - t(Ugeta) %*% UgZ) C <- penh * (sum(Zh^2) - sum(UhZ^2)) - peng * (sum(Zg^2) - sum(UgZ^2)) } else { # Check this - A <- (sum(etah^2) - sum(Uheta^2)) - (sum(etag)^2 - sum(Ugeta^2)) + A <- (sum(etah^2) - sum(Uheta^2)) - (sum(etag^2) - sum(Ugeta^2)) B <- 2 * (etaZh - t(Uheta) %*% UhZ) - 2 * (etaZg - t(Ugeta) %*% UgZ) - C <- (sum(Zh^2) - sum(UhZ^2) + penh) - (sum(Zg^2) - sum(UgZ^2) + peng) + C <- (sum(Zh^2) - sum(UhZ^2) + penh) - (sum(Zg^2) - sum(UgZ^2) + peng) } return(list(A = A, B = B, C= C)) } From 0c4cfc0ae29ceb4637f0c55258f44f8a640cd319 Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Wed, 7 Oct 2015 17:59:48 -0700 Subject: [PATCH 025/493] sourcing sim functions file --- forLater/josh/sim.aicstop.R | 1 + 1 file changed, 1 insertion(+) diff --git a/forLater/josh/sim.aicstop.R b/forLater/josh/sim.aicstop.R index 33037d2..f2bfa66 100644 --- a/forLater/josh/sim.aicstop.R +++ b/forLater/josh/sim.aicstop.R @@ -1,4 +1,5 @@ library(intervals) +source("funs.sims.R") source("selectiveInference/R/cv.R") source("../../selectiveInference/R/funs.groupfs.R") source("../../selectiveInference/R/funs.quadratic.R") From a730e91fbd69c0c3c84891170bee28b31bb19fb6 Mon Sep 17 00:00:00 2001 From: tibs Date: Sun, 11 Oct 2015 09:03:09 -0700 Subject: [PATCH 026/493] rob fixed lucas bug --- selectiveInference/R/funs.fixed.R | 4 ++++ selectiveInference/man/selectiveInference.Rd | 17 +++++++++++++++++ tests/test.fixed.R | 6 ++++++ 3 files changed, 27 insertions(+) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index f3d99ea..d376090 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -37,6 +37,10 @@ fixedLassoInf <- function(x, y, beta, lambda, intercept=TRUE, sigma=NULL, alpha= "(to within specified tolerances)")) vars = which(abs(beta) > tol.beta / sqrt(colSums(x^2))) + if(length(vars)==0){ + cat("Empty model",fill=T) + return() + } if (any(sign(g[vars]) != sign(beta[vars]))) warning(paste("Solution beta does not satisfy the KKT conditions", "(to within specified tolerances). You might try rerunning", diff --git a/selectiveInference/man/selectiveInference.Rd b/selectiveInference/man/selectiveInference.Rd index e08f69a..0b1ca4c 100644 --- a/selectiveInference/man/selectiveInference.Rd +++ b/selectiveInference/man/selectiveInference.Rd @@ -139,6 +139,23 @@ arXiv:1405.3340. #mu = c(rep(signal, floor (n/5)), rep(0, n-floor(n/5))) # 20% of elements get the signal; rest 0 #y = mu + rnorm (n, 0, 1) #mmObj = manyMeans(y, bh.q=0.1) +# +# +# Forward stepwise with grouped variables +#set.seed(1) +#n <- 40 +#p <- 20 +#index <- sort(rep(1:(p/2), 2)) +#steps <- 10 +#sparsity <- 5 +#snr <- 3 +# x <- matrix(rnorm(n*p), nrow=n) +# beta <- rep(0, p) +# beta[which(index %in% 1:sparsity)] <- snr +# y <- x %*% beta+rnorm(n) +#fit <- groupfs(x, y, index=1:p, maxsteps = steps) +#out<- groupfsInf(fit) + ##estimation of sigma for use in fsInf or larInf or fixedLassoInf diff --git a/tests/test.fixed.R b/tests/test.fixed.R index e214fe9..624fb65 100644 --- a/tests/test.fixed.R +++ b/tests/test.fixed.R @@ -281,3 +281,9 @@ gfit = glmnet(X,y,standardize=F) coef = coef(gfit, s=lam/n, exact=T)[-1] sint = fixedLassoInf(X,y,coef,lam,sigma=sigma,alpha=alpha,type="partial") # Error in v %*% diag(d) : non-conformable arguments + +## lucas again + +load("params_for_Rob.rdata") #variables: X, y, coef, lam, sigma, alpha + +sint = fixedLassoInf(X,y,coef,lam,sigma=sigma,alpha=alpha,type="partial") From 9c19d7bbc7dd9e4cf34b71cb79a6690576a8c50b Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Mon, 12 Oct 2015 13:06:55 -0700 Subject: [PATCH 027/493] groupfs computes and stores coefficients --- selectiveInference/R/funs.groupfs.R | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/selectiveInference/R/funs.groupfs.R b/selectiveInference/R/funs.groupfs.R index ae5e972..447afe9 100644 --- a/selectiveInference/R/funs.groupfs.R +++ b/selectiveInference/R/funs.groupfs.R @@ -154,8 +154,13 @@ groupfs <- function(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE aic.last <- added$AIC } + # Is there a better way of doing this? + # Use some projections already computed? + beta <- coef(lm(y.begin ~ x.begin[,index %in% path.info$imax]-1)) + names(beta) <- index[index %in% path.info$imax] + # Create output object - value <- list(action=path.info$imax, L=path.info$L, AIC=path.info$AIC, projections = projections, maxprojs = maxprojs, aicpens = aicpens, maxpens = maxpens, cumprojs = cumprojs, log = path.info, index = index, y = y.begin, x = x.begin, bx = xm, sx = xs, sigma = sigma, intercept = intercept, call = match.call(), terms = terms) + value <- list(action=path.info$imax, L=path.info$L, AIC=path.info$AIC, projections = projections, maxprojs = maxprojs, aicpens = aicpens, maxpens = maxpens, cumprojs = cumprojs, log = path.info, index = index, y = y.begin, x = x.begin, coefficients = beta, bx = xm, sx = xs, sigma = sigma, intercept = intercept, call = match.call(), terms = terms) class(value) <- "groupfs" attr(value, "labels") <- labels @@ -301,6 +306,7 @@ groupfsInf <- function(obj, sigma = NULL, type = c("all", "aic"), ntimes = 2, ve # Project y onto what remains of x_i Ugtilde <- svdu_thresh(x_i) R <- t(Ugtilde) %*% obj$y + print(R) TC <- sqrt(sum(R^2)) eta <- Ugtilde %*% R / TC Z <- obj$y - eta * TC From 5e1bbee3da78a2cfdcb0580c506dbb8cbfe0776a Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Mon, 12 Oct 2015 14:56:22 -0700 Subject: [PATCH 028/493] Added coef and predict functions for groupfs --- selectiveInference/R/funs.groupfs.R | 34 ++++++++++++++++++++--- selectiveInference/man/factorDesign.Rd | 3 +- selectiveInference/man/groupfs.Rd | 11 ++++---- selectiveInference/man/groupfsInf.Rd | 12 +++++--- selectiveInference/man/predict.groupfs.Rd | 23 +++++++++++++++ selectiveInference/man/scaleGroups.Rd | 3 +- 6 files changed, 68 insertions(+), 18 deletions(-) create mode 100644 selectiveInference/man/predict.groupfs.Rd diff --git a/selectiveInference/R/funs.groupfs.R b/selectiveInference/R/funs.groupfs.R index 447afe9..4e19bcb 100644 --- a/selectiveInference/R/funs.groupfs.R +++ b/selectiveInference/R/funs.groupfs.R @@ -158,13 +158,14 @@ groupfs <- function(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE # Use some projections already computed? beta <- coef(lm(y.begin ~ x.begin[,index %in% path.info$imax]-1)) names(beta) <- index[index %in% path.info$imax] - + # Create output object - value <- list(action=path.info$imax, L=path.info$L, AIC=path.info$AIC, projections = projections, maxprojs = maxprojs, aicpens = aicpens, maxpens = maxpens, cumprojs = cumprojs, log = path.info, index = index, y = y.begin, x = x.begin, coefficients = beta, bx = xm, sx = xs, sigma = sigma, intercept = intercept, call = match.call(), terms = terms) + value <- list(action = path.info$imax, L = path.info$L, AIC = path.info$AIC, projections = projections, maxprojs = maxprojs, aicpens = aicpens, maxpens = maxpens, cumprojs = cumprojs, log = path.info, index = index, y = y.begin, x = x.begin, coefficients = beta, bx = xm, by = by, sx = xs, sigma = sigma, intercept = intercept, call = match.call(), terms = terms) class(value) <- "groupfs" + attr(value, "center") <- center + attr(value, "normalize") <- normalize attr(value, "labels") <- labels - attr(value, "index") <- index attr(value, "maxsteps") <- maxsteps attr(value, "sigma") <- sigma attr(value, "k") <- k @@ -306,7 +307,6 @@ groupfsInf <- function(obj, sigma = NULL, type = c("all", "aic"), ntimes = 2, ve # Project y onto what remains of x_i Ugtilde <- svdu_thresh(x_i) R <- t(Ugtilde) %*% obj$y - print(R) TC <- sqrt(sum(R^2)) eta <- Ugtilde %*% R / TC Z <- obj$y - eta * TC @@ -562,6 +562,32 @@ print.groupfs <- function(x, ...) { invisible() } + +coef.groupfs <- function(object, ...) { + return(object$coefficients) +} + +#' @name predict.groupfs +#' @aliases predict.groupfs +#' @aliases coef.groupfs +#' +#' @title Prediction and coefficient functions for \code{\link{groupfs}}. +#' +#' Make predictions or extract coefficients from a groupfs forward stepwise object. +#' +#' @param object Object returned by a call to \code{\link{groupfs}}. +#' @param newx Matrix of x values at which the predictions are desired. If NULL, the x values from groupfs fitting are used. +#' @return A vector of predictions or a vector of coefficients. +predict.groupfs <- function(object, newx, ...) { + beta <- coef.groupfs(object) + if (missing(newx)) { + newx = object$x + } else { + newx <- scaleGroups(newx, object$index, attr(object, "center"), attr(object, "normalize")) + } + return(newx[, index %in% object$action] %*% beta + ifelse(object$intercept, object$by, 0)) +} + print.groupfsInf <- function(x, ...) { cat(sprintf("\nStandard deviation of noise (specified or estimated) sigma = %0.3f\n", x$sigma)) action <- x$vars diff --git a/selectiveInference/man/factorDesign.Rd b/selectiveInference/man/factorDesign.Rd index d5d2576..3a42e2e 100644 --- a/selectiveInference/man/factorDesign.Rd +++ b/selectiveInference/man/factorDesign.Rd @@ -1,5 +1,4 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand -% Please edit documentation in R/funs.groupfs.R +% Generated by roxygen2 (4.0.1.99): do not edit by hand \name{factorDesign} \alias{factorDesign} \title{Expand a data frame with factors to form a design matrix with the full binary encoding of each factor.} diff --git a/selectiveInference/man/groupfs.Rd b/selectiveInference/man/groupfs.Rd index c279c9e..78cd32f 100644 --- a/selectiveInference/man/groupfs.Rd +++ b/selectiveInference/man/groupfs.Rd @@ -1,11 +1,10 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand -% Please edit documentation in R/funs.groupfs.R +% Generated by roxygen2 (4.0.1.99): do not edit by hand \name{groupfs} \alias{groupfs} \title{Select a model with forward stepwise.} \usage{ groupfs(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE, - center = TRUE, normalize = TRUE, aicstop = FALSE, verbose = FALSE) + center = TRUE, normalize = TRUE, aicstop = 0, verbose = FALSE) } \arguments{ \item{x}{Matrix of predictors (n by p).} @@ -26,7 +25,7 @@ groupfs(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE, \item{normalize}{Should the design matrix be normalized? Default is TRUE.} -\item{aicstop}{Early stopping if AIC increases, default is FALSE.} +\item{aicstop}{Early stopping if AIC increases. Default is 0 corresponding to no early stopping. Positive integer values specify the number of times the AIC is allowed to increase in a row, e.g. with \code{aicstop = 2} the algorithm will stop if the AIC criterion increases for 2 steps in a row. The default of \code{\link[stats]{step}} corresponds to \code{aicstop = 1}.} \item{verbose}{Print out progress along the way? Default is FALSE.} } @@ -39,11 +38,11 @@ This function implements forward selection of linear models almost identically t \examples{ x = matrix(rnorm(20*40), nrow=20) index = sort(rep(1:20, 2)) -y = rnorm(20) + 2 * (x[,1] - x[,2]) - (x[,3] - x[,4]) +y = rnorm(20) + 2 * x[,1] - x[,4] fit = groupfs(x, y, index, maxsteps = 5) pvals = groupfsInf(fit) } \seealso{ -\code{\link{groupfsInf}} +\code{\link{groupfsInf}}, \code{\link{factorDesign}}. } diff --git a/selectiveInference/man/groupfsInf.Rd b/selectiveInference/man/groupfsInf.Rd index f5ee970..7c7190f 100644 --- a/selectiveInference/man/groupfsInf.Rd +++ b/selectiveInference/man/groupfsInf.Rd @@ -1,20 +1,24 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand -% Please edit documentation in R/funs.groupfs.R +% Generated by roxygen2 (4.0.1.99): do not edit by hand \name{groupfsInf} \alias{groupfsInf} \title{Compute selective p-values for a model fitted by \code{groupfs}.} \usage{ -groupfsInf(obj, sigma = NULL, verbose = FALSE) +groupfsInf(obj, sigma = NULL, type = c("all", "aic"), ntimes = 2, + verbose = FALSE) } \arguments{ \item{obj}{Object returned by \code{\link{groupfs}} function} \item{sigma}{Estimate of error standard deviation. If NULL (default), this is estimated using the mean squared residual of the full least squares fit when n >= 2p, and the mean squared residual of the selected model when n < 2p. In the latter case, the user should use \code{\link{estimateSigma}} function for a more accurate estimate.} +\item{type}{Type of conditional p-values to compute. With "all" (default), p-values are computed conditional on the final model with all variables up to \code{maxsteps}; with "aic" the number of steps is chosen after which the AIC criterion increases \code{ntimes} in a row, and then the same type of analysis as in "all" is carried out for the active variables at that number of steps.} + +\item{ntimes}{Number of steps for which AIC criterion has to increase before minimizing point is declared.} + \item{verbose}{Print out progress along the way? Default is FALSE.} } \value{ -An object of class "groupfsInf" containing selective p-values for the fitted model \code{obj}. The default printing behavior should supply adequate information. +An object of class "groupfsInf" containing selective p-values for the fitted model \code{obj}. For comparison with \code{\link{fsInf}}, note that the option \code{type = "active"} is not available. \describe{ \item{vars}{Labels of the active groups in the order they were included.} diff --git a/selectiveInference/man/predict.groupfs.Rd b/selectiveInference/man/predict.groupfs.Rd new file mode 100644 index 0000000..4a4c149 --- /dev/null +++ b/selectiveInference/man/predict.groupfs.Rd @@ -0,0 +1,23 @@ +% Generated by roxygen2 (4.0.1.99): do not edit by hand +\name{predict.groupfs} +\alias{predict.groupfs} +\title{Prediction and coefficient functions for \code{\link{groupfs}}. + +Make predictions or extract coefficients from a groupfs forward stepwise object.} +\usage{ +\method{predict}{groupfs}(object, newx, ...) +} +\arguments{ +\item{object}{Object returned by a call to \code{\link{groupfs}}.} + +\item{newx}{Matrix of x values at which the predictions are desired. If NULL, the x values from groupfs fitting are used.} +} +\value{ +A vector of predictions or a vector of coefficients. +} +\description{ +Prediction and coefficient functions for \code{\link{groupfs}}. + +Make predictions or extract coefficients from a groupfs forward stepwise object. +} + diff --git a/selectiveInference/man/scaleGroups.Rd b/selectiveInference/man/scaleGroups.Rd index e5a93fa..1e7e1c4 100644 --- a/selectiveInference/man/scaleGroups.Rd +++ b/selectiveInference/man/scaleGroups.Rd @@ -1,5 +1,4 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand -% Please edit documentation in R/funs.groupfs.R +% Generated by roxygen2 (4.0.1.99): do not edit by hand \name{scaleGroups} \alias{scaleGroups} \title{Center and scale design matrix by groups} From ee616483eb0fe8ff232eb6bf794bf8c1d8674219 Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Mon, 12 Oct 2015 18:07:44 -0700 Subject: [PATCH 029/493] Fixing an aicstop bug --- selectiveInference/R/funs.groupfs.R | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/selectiveInference/R/funs.groupfs.R b/selectiveInference/R/funs.groupfs.R index 4e19bcb..8dbef78 100644 --- a/selectiveInference/R/funs.groupfs.R +++ b/selectiveInference/R/funs.groupfs.R @@ -127,9 +127,7 @@ groupfs <- function(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE if (verbose) print(round(step.info, 3)) - if (aicstop > 0 && step >= aicstop && aic.last < added$AIC) { - ########## Incomplete ########## - ## cut off the last aicstop variables as well? + if (aicstop > 0 && step < maxstep && step >= aicstop && aic.last < added$AIC) { if (all(diff(c(aic.begin, path.info$AIC)[(step+1-aicstop):(step+1)]) > 0)) { if (is.null(sigma)) { From 0dbf85a32babc0244b8812e847448baffeee717f Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Mon, 12 Oct 2015 18:08:20 -0700 Subject: [PATCH 030/493] Typo --- selectiveInference/R/funs.groupfs.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selectiveInference/R/funs.groupfs.R b/selectiveInference/R/funs.groupfs.R index 8dbef78..4097808 100644 --- a/selectiveInference/R/funs.groupfs.R +++ b/selectiveInference/R/funs.groupfs.R @@ -127,7 +127,7 @@ groupfs <- function(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE if (verbose) print(round(step.info, 3)) - if (aicstop > 0 && step < maxstep && step >= aicstop && aic.last < added$AIC) { + if (aicstop > 0 && step < maxsteps && step >= aicstop && aic.last < added$AIC) { if (all(diff(c(aic.begin, path.info$AIC)[(step+1-aicstop):(step+1)]) > 0)) { if (is.null(sigma)) { From d6f5d87fad907e34bb2100fe7e01c195662db1eb Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Mon, 12 Oct 2015 21:12:59 -0700 Subject: [PATCH 031/493] Created .gitignore --- .gitignore | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..863d843 --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +**DS_Store** +**Rcheck** +**tar.gz +**Rapp.history +**.pdf +**.RData +**.o +**.so +forLater/josh/** \ No newline at end of file From fa8636291c7f06473789e5afa5d1e6b05cb8989a Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Mon, 12 Oct 2015 21:30:51 -0700 Subject: [PATCH 032/493] Changed SNR in simulation function --- forLater/josh/funs.sims.R | 2 +- forLater/josh/sim.aicstop.R | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/forLater/josh/funs.sims.R b/forLater/josh/funs.sims.R index 7f36d45..e51dd2f 100644 --- a/forLater/josh/funs.sims.R +++ b/forLater/josh/funs.sims.R @@ -38,7 +38,7 @@ randomGaussianFixedP <- function(n, p, G = p, sparsity = 0, snr = 0, sigma = 1, if (sparsity > 0 && snr > 0) { for (j in 1:sparsity) { inds <- which(index == j) - beta[inds] <- snr/sqrt(length(inds)) + beta[inds] <- snr/sqrt(n*length(inds)) } } y <- x %*% beta + sigma * rnorm(n) diff --git a/forLater/josh/sim.aicstop.R b/forLater/josh/sim.aicstop.R index f2bfa66..014d18d 100644 --- a/forLater/josh/sim.aicstop.R +++ b/forLater/josh/sim.aicstop.R @@ -6,7 +6,7 @@ source("../../selectiveInference/R/funs.quadratic.R") source("../../selectiveInference/R/funs.common.R") set.seed(1) -niters <- 500 +niters <- 200 n <- 100 p <- 100 G <- 50 From 7ebb7e021da06a415061c5c0d62317364255ac5c Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Mon, 12 Oct 2015 21:37:54 -0700 Subject: [PATCH 033/493] Modifying simulations --- forLater/josh/funs.sims.R | 2 +- forLater/josh/sim.aicstop.R | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/forLater/josh/funs.sims.R b/forLater/josh/funs.sims.R index e51dd2f..3fdd7dd 100644 --- a/forLater/josh/funs.sims.R +++ b/forLater/josh/funs.sims.R @@ -38,7 +38,7 @@ randomGaussianFixedP <- function(n, p, G = p, sparsity = 0, snr = 0, sigma = 1, if (sparsity > 0 && snr > 0) { for (j in 1:sparsity) { inds <- which(index == j) - beta[inds] <- snr/sqrt(n*length(inds)) + beta[inds] <- sample(c(-1,1), length(inds), replace=T) * snr/sqrt(n*length(inds)) } } y <- x %*% beta + sigma * rnorm(n) diff --git a/forLater/josh/sim.aicstop.R b/forLater/josh/sim.aicstop.R index 014d18d..7248573 100644 --- a/forLater/josh/sim.aicstop.R +++ b/forLater/josh/sim.aicstop.R @@ -6,10 +6,10 @@ source("../../selectiveInference/R/funs.quadratic.R") source("../../selectiveInference/R/funs.common.R") set.seed(1) -niters <- 200 +niters <- 100 n <- 100 -p <- 100 -G <- 50 +p <- 200 +G <- 100 maxsteps <- 15 sparsity <- 5 snr <- 1 @@ -24,7 +24,7 @@ instance <- function(n, p, G, sparsity, snr, rho, maxsteps, aicstop) { index <- simd$index fit <- groupfs(x, y, index, maxsteps, k = log(n), aicstop = aicstop) - pvals <- groupfsInf(fit, verbose=T) + pvals <- groupfsInf(fit, sigma = 1, verbose=T) return(list(variable = fit$action, pvals = pvals$pv, stopped = attr(fit, "stopped"))) } @@ -41,6 +41,6 @@ save(pvals, vars, stopped, file = paste0( "_p", p, "_sparsity", sparsity, "_snr", snr, - ".RData")) + "_known.RData")) print(time) From 844235e56fa30e130593e59caefc0ceca2528577 Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Mon, 12 Oct 2015 21:49:10 -0700 Subject: [PATCH 034/493] More changing simulations --- forLater/josh/funs.sims.R | 2 +- forLater/josh/sim.aicstop.R | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/forLater/josh/funs.sims.R b/forLater/josh/funs.sims.R index 3fdd7dd..f07fa55 100644 --- a/forLater/josh/funs.sims.R +++ b/forLater/josh/funs.sims.R @@ -38,7 +38,7 @@ randomGaussianFixedP <- function(n, p, G = p, sparsity = 0, snr = 0, sigma = 1, if (sparsity > 0 && snr > 0) { for (j in 1:sparsity) { inds <- which(index == j) - beta[inds] <- sample(c(-1,1), length(inds), replace=T) * snr/sqrt(n*length(inds)) + beta[inds] <- sqrt(2*log(G)) * sample(c(-1,1), length(inds), replace=T) * snr/sqrt(n*length(inds)) } } y <- x %*% beta + sigma * rnorm(n) diff --git a/forLater/josh/sim.aicstop.R b/forLater/josh/sim.aicstop.R index 7248573..466f9b4 100644 --- a/forLater/josh/sim.aicstop.R +++ b/forLater/josh/sim.aicstop.R @@ -8,17 +8,18 @@ source("../../selectiveInference/R/funs.common.R") set.seed(1) niters <- 100 n <- 100 -p <- 200 -G <- 100 +p <- 100 +G <- 50 maxsteps <- 15 sparsity <- 5 snr <- 1 +sigma <- 1 rho <- .1 aicstop <- 1 instance <- function(n, p, G, sparsity, snr, rho, maxsteps, aicstop) { - simd <- randomGaussianFixedP(n, p, G, sparsity, snr, rho) + simd <- randomGaussianFixedP(n, p, G, sparsity, snr, sigma, rho) x <- simd$x y <- simd$y index <- simd$index From 978d53ee98e7109bafbb673079f32549ee18c783 Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Wed, 4 Nov 2015 22:04:24 -0800 Subject: [PATCH 035/493] Started including F test code for groupfsInf --- selectiveInference/R/funs.groupfs.R | 174 ++++++++++++++++++-------- selectiveInference/R/funs.quadratic.R | 91 ++++++++++---- 2 files changed, 183 insertions(+), 82 deletions(-) diff --git a/selectiveInference/R/funs.groupfs.R b/selectiveInference/R/funs.groupfs.R index 4097808..148e35a 100644 --- a/selectiveInference/R/funs.groupfs.R +++ b/selectiveInference/R/funs.groupfs.R @@ -239,8 +239,6 @@ add1.groupfs <- function(xr, yr, index, labels, inactive, k, sigma = NULL) { #' #' @param obj Object returned by \code{\link{groupfs}} function #' @param sigma Estimate of error standard deviation. If NULL (default), this is estimated using the mean squared residual of the full least squares fit when n >= 2p, and the mean squared residual of the selected model when n < 2p. In the latter case, the user should use \code{\link{estimateSigma}} function for a more accurate estimate. -#' @param type Type of conditional p-values to compute. With "all" (default), p-values are computed conditional on the final model with all variables up to \code{maxsteps}; with "aic" the number of steps is chosen after which the AIC criterion increases \code{ntimes} in a row, and then the same type of analysis as in "all" is carried out for the active variables at that number of steps. -#' @param ntimes Number of steps for which AIC criterion has to increase before minimizing point is declared. #' @param verbose Print out progress along the way? Default is FALSE. #' @return An object of class "groupfsInf" containing selective p-values for the fitted model \code{obj}. For comparison with \code{\link{fsInf}}, note that the option \code{type = "active"} is not available. #' @@ -252,13 +250,14 @@ add1.groupfs <- function(xr, yr, index, labels, inactive, k, sigma = NULL) { #' \item{df}{Rank of group of variables when it was added to the model.} #' \item{support}{List of intervals defining the truncation region of the truncated chi.} #' } -groupfsInf <- function(obj, sigma = NULL, type = c("all", "aic"), ntimes = 2, verbose = FALSE) { +groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { if (!is.null(obj$cvobj) && attr(obj, "stopped")) { - stop("Cross-validation and early stopping cannot be used simultaneously") + stop("Cross-validation and early stopping cannot be used simultaneously.") + # This shouldn't happen in the first place! + # (it wouldn't anyway unless someone tries to trick it) } - type <- match.arg(type) n <- nrow(obj$x) p <- ncol(obj$x) maxsteps <- attr(obj, "maxsteps") @@ -268,8 +267,7 @@ groupfsInf <- function(obj, sigma = NULL, type = c("all", "aic"), ntimes = 2, ve y <- obj$y Ep <- sum(index %in% obj$action) - nanconv <- FALSE - pvals = dfs = TCs = numeric(maxsteps) + pvals = dfs = Tstats = numeric(maxsteps) supports <- list() if (!is.null(sigma)) { @@ -278,6 +276,7 @@ groupfsInf <- function(obj, sigma = NULL, type = c("all", "aic"), ntimes = 2, ve } } else { if (is.null(obj$sigma)) { + type <- "TF" if (n >= 2*p) { sigma <- sqrt(sum(lsfit(obj$x, obj$y, intercept = obj$intercept)$res^2)/(n-p-obj$intercept)) } else { @@ -285,6 +284,7 @@ groupfsInf <- function(obj, sigma = NULL, type = c("all", "aic"), ntimes = 2, ve warning(paste(sprintf("p > n/2, and sigmahat = %0.3f used as an estimate of sigma;",sigma), "you may want to use the estimateSigma function")) } } else { + type <- "TC" sigma <- obj$sigma } } @@ -293,47 +293,92 @@ groupfsInf <- function(obj, sigma = NULL, type = c("all", "aic"), ntimes = 2, ve for (j in 1:maxsteps) { i <- obj$action[j] if (verbose) cat(paste0("Step ", j, "/", attr(obj, "maxsteps"), ": computing P-value for group ", i, "\n")) - # Form projection onto active set minus i - # and project x_i orthogonally - x_i <- obj$x[,which(obj$index == i), drop = FALSE] - if (length(obj$action) > 1) { - minus_i <- setdiff(obj$action, i) - x_minus_i <- svdu_thresh(obj$x[,which(obj$index %in% minus_i), drop = FALSE]) - x_i <- x_i - x_minus_i %*% t(x_minus_i) %*% x_i + + if (!is.null(obj$sigma)) { + # Form projection onto active set minus i + # and project x_i orthogonally + x_i <- obj$x[,which(obj$index == i), drop = FALSE] + if (length(obj$action) > 1) { + minus_i <- setdiff(obj$action, i) + x_minus_i <- svdu_thresh(obj$x[,which(obj$index %in% minus_i), drop = FALSE]) + x_i <- x_i - x_minus_i %*% t(x_minus_i) %*% x_i + } + + # Project y onto what remains of x_i + Ugtilde <- svdu_thresh(x_i) + R <- t(Ugtilde) %*% obj$y + TC <- sqrt(sum(R^2)) + eta <- Ugtilde %*% R / TC + Z <- obj$y - eta * TC + dfi <- ncol(Ugtilde) + Tstats[j] <- TC + dfs[j] <- dfi + + ydecomp <- list(R=R, Z=Z, eta=eta) + + } else { + + Pfull <- svdu_thresh(obj$x[,which(obj$index %in% obj$action), drop = FALSE]) + if (length(obj$action) > 1) { + minus_i <- setdiff(obj$action, i) + Psub <- svdu_thresh(obj$x[,which(obj$index %in% minus_i), drop = FALSE]) + Z <- Psub %*% y + C <- (ncol(Pfull) - ncol(Psub))/(n - ncol(Pfull)) + } else { + Z <- 0 + C <- ncol(Pfull)/(n-ncol(Pfull)) + } + R1 <- y - z + R2 <- y - Pfull %*% y + R <- sqrt(sum(R1^2)) + U <- R1/r + delta <- R1-R2 + Vdelta <- delta/sqrt(sum(delta^2)) + V2 <- R2/sqrt(sum(R2^2)) + ydecomp <- list(R=R, Z=Z, Vd=Vdelta, V2=V2) + } + + intervallist <- truncationRegion(obj, ydecomp, type) - # Project y onto what remains of x_i - Ugtilde <- svdu_thresh(x_i) - R <- t(Ugtilde) %*% obj$y - TC <- sqrt(sum(R^2)) - eta <- Ugtilde %*% R / TC - Z <- obj$y - eta * TC - dfi <- ncol(Ugtilde) - TCs[j] <- TC - dfs[j] <- dfi - - intervallist <- truncationRegion(obj, TC, R, eta, Z) + # Additional constraints from cross-validation? if (!is.null(obj$cvobj)) { intervallist <- c(intervallist, do.call(c, - lapply(obj$cvobj, function(cvf) { - truncationRegion(cvf, TC, R[-cvf$fold], eta[-cvf$fold], Z[-cvf$fold]) - }))) + lapply(obj$cvobj, function(cvf) { + if (type == "TC") { + ydecomp <- list(R=R[-cvf$fold], eta=eta[-cvf$fold], Z=Z[-cvf$fold]) + } else { + #################################### + # THINK ABOUT THIS AGAIN + # when you're not falling asleep + #################################### + ydecomp <- list(R=R[-cvf$fold], Z=Z[-cvf$fold], Vd=Vdelta[-cvf$fold], V2=V2[-cvf$fold]) + } + truncationRegion(cvf, ydecomp, type) + }))) intervallist <- c(intervallist, lapply(obj$cvquad, function(cvquad) { - etacvquad <- t(eta) %*% cvquad - A <- etacvquad %*% eta - B <- 2 * etacvquad %*% Z - C <- t(Z) %*% cvquad %*% Z - quadratic_roots(A, B, C, tol = 1e-15) + if (type == "TC") { + etacvquad <- t(eta) %*% cvquad + A <- etacvquad %*% eta + B <- 2 * etacvquad %*% Z + C <- t(Z) %*% cvquad %*% Z + quadratic_roots(A, B, C, tol = 1e-15) + } else { + #################################### + # DO THIS NEXT + #################################### + } })) } + + # Additional constraints from AIC stopping? if (attr(obj, "stopped")) { aicstop <- attr(obj, "aicstop") - + ulist <- etalist <- zlist <- penlist <- vector("list", aicstop+1) for (s in seq(aicstop+1)) { stepind <- maxsteps - (aicstop+1) + s -# print(c(s, stepind)) if (stepind > 1) { etalist[[s]] <- obj$cumprojs[[stepind-1]] %*% eta zlist[[s]] <- obj$cumprojs[[stepind-1]] %*% Z @@ -348,22 +393,27 @@ groupfsInf <- function(obj, sigma = NULL, type = c("all", "aic"), ntimes = 2, ve intervallist <- c(intervallist, do.call(c, lapply(1:aicstop, function(s) { lapply((s+1):(aicstop+1), function(sp) { - Ug <- ulist[[s]] - Uh <- ulist[[sp]] - peng <- penlist[[s]] - penh <- prod(unlist(penlist[s:sp])) - etag <- etalist[[s]] - etah <- etalist[[sp]] - Zg <- zlist[[s]] - Zh <- zlist[[sp]] - - coeffs <- quadratic_coefficients(obj$sigma, Ug, Uh, peng, penh, etag, etah, Zg, Zh) - quadratic_roots(coeffs$A, coeffs$B, coeffs$C, tol = 1e-15) + if (type == "TC") { + Ug <- ulist[[s]] + Uh <- ulist[[sp]] + peng <- penlist[[s]] + penh <- prod(unlist(penlist[s:sp])) + etag <- etalist[[s]] + etah <- etalist[[sp]] + Zg <- zlist[[s]] + Zh <- zlist[[sp]] + coeffs <- quadratic_coefficients(obj$sigma, Ug, Uh, peng, penh, etag, etah, Zg, Zh) + quadratic_roots(coeffs$A, coeffs$B, coeffs$C, tol = 1e-15) + } else { +################################### + # DO THIS TOO +################################### + } }) }))) } - # Compute intersection: + # Compute intersection: region <- do.call(interval_union, intervallist) region <- interval_union(region, Intervals(c(-Inf,0))) E <- interval_complement(region, check_valid = FALSE) @@ -371,13 +421,31 @@ groupfsInf <- function(obj, sigma = NULL, type = c("all", "aic"), ntimes = 2, ve stop(paste("Empty TC support at step", j)) } supports[[j]] <- E - + # E is now potentially a union of intervals - pvals[j] <- TC_surv(TC, sigma, dfi, E) + if (type == "TC") { + pvals[j] <- TC_surv(TC, sigma, dfi, E) + } else { + pvals[j] <- TF_surv(TF, df1, df2, E) + } + } - if (nanconv) warning("P-value NaNs of the form 0/0 converted to 0. This typically occurs for numerical reasons in the presence of a large signal-to-noise ratio.") + + if (any(is.nan(pvals))) { + nanp <- which(is.nan(pvals)) + pvals[nanp] <- 0 + warning(paste0("P-value NaNs of the form 0/0 converted to 0 for group(s) ", paste(obj$action[nanp], collapse=","), ". This typically occurs for numerical reasons in the presence of a large signal-to-noise ratio.")) + } + names(pvals) <- obj$action - out <- list(vars = obj$action, pv=pvals, sigma=sigma, TC=TCs, df = dfs, support=supports) + out <- list(vars = obj$action, pv=pvals, sigma=sigma) + if (type == "TC") { + out$TC <- Tstats + } else { + out$TF <- Tstats + } + out$df <- dfs + out$support <- supports class(out) <- "groupfsInf" if (!is.null(attr(obj, "varnames"))) { attr(out, "varnames") <- attr(obj, "varnames") @@ -419,10 +487,6 @@ TC_surv <- function(TC, sigma, df, E) { # Survival function value <- numer/denom - if (is.nan(value)) { - value <- 0 - nanconv <- TRUE - } # Force p-value to lie in the [0,1] interval # in case of numerical issues value <- max(0, min(1, value)) diff --git a/selectiveInference/R/funs.quadratic.R b/selectiveInference/R/funs.quadratic.R index 2a15ce2..335bb78 100644 --- a/selectiveInference/R/funs.quadratic.R +++ b/selectiveInference/R/funs.quadratic.R @@ -1,8 +1,15 @@ -truncationRegion <- function(obj, TC, R, eta, Z, tol = 1e-15) { +truncationRegion <- function(obj, ydecomp, type, tol = 1e-15) { n <- nrow(obj$x) - + R <- ydecomp$R + Z <- ydecomp$Z + if (type == "TC") { + eta <- ydecomp$eta + } else { + Vd <- ydecomp$Vd + V2 <- ydecomp$V2 + } L <- lapply(1:length(obj$action), function(s) { Ug <- obj$maxprojs[[s]] @@ -27,8 +34,13 @@ truncationRegion <- function(obj, TC, R, eta, Z, tol = 1e-15) { # (t*U + Z)^T %*% Q %*% (t*U + Z) \geq 0 # we find the roots in t, if there are any # and return the interval of potential t - coeffs <- quadratic_coefficients(obj$sigma, Ug, Uh, peng, penh, etas, etas, Zs, Zs) - quadratic_roots(coeffs$A, coeffs$B, coeffs$C, tol) + if (type == "TC") { + coeffs <- quadratic_coefficients(obj$sigma, Ug, Uh, peng, penh, etas, etas, Zs, Zs) + quadratic_roots(coeffs$A, coeffs$B, coeffs$C, tol) + } else { + coeffs <- TF_coefficients(R, Ug, Uh, peng, penh, Zg, Zh, Vdg, Vdh, V2g, V2h) + TF_roots(R, C, coeffs) + } }) } # LL is a list of intervals @@ -119,32 +131,44 @@ quadratic_roots <- function(A, B, C, tol) { } } -roots_to_checkpoints <- function(roots) { - checkpoints <- unique(sort(c(0, roots))) - return(c(0, (checkpoints + c(checkpoints[-1], 2 + checkpoints[length(checkpoints)]))/2)) -} -roots_to_partition <- function(roots) { - checkpoints <- unique(sort(c(0, roots))) - return(list(endpoints = c(checkpoints, Inf), midpoints = (checkpoints + c(checkpoints[-1], 2 + checkpoints[length(checkpoints)]))/2)) -} +# Efficiently compute coefficients of one-dimensional TF slice function +TF_coefficients <- function(R, Ug, Uh, peng, penh, Zg, Zh, Vdg, Vdh, V2g, V2h) { -# Tchi_roots <- function(Q, a, b, ) + UhZ <- t(Uh) %*% Zh + UgZ <- t(Ug) %*% Zg + UhVd <- t(Uh) %*% Vdh + UgVd <- t(Ug) %*% Vdg + UhV2 <- t(Uh) %*% V2h + UgV2 <- t(Ug) %*% V2g + VdZh <- t(Vdh) %*% Zh + VdZg <- t(Vdg) %*% Zg + V2Zh <- t(V2h) %*% Zh + V2Zg <- t(V2g) %*% Zg + + x0 <- peng * (sum(Zg^2) - sum(UgZ^2)) - penh * (sum(Zh^2) - sum(UhZ^2)) + x1 <- 2*R*(peng * (VdZg - t(UgZ) %*% UgVd) - penh * (VdZh - t(UhZ) %*% UhVd)) + x2 <- 2*R*(peng * (V2Zg - t(UgZ) %*% UgV2) - penh * (V2Zh - t(UhZ) %*% UhV2)) + x12 <- 2*R*(peng * (t(Vdg) %*% V2g - t(UgVd) %*% UgV2) - penh * (t(Vdh) %*% V2h - t(UhVd) %*% UhV2)) + x11 <- R^2*(peng * (sum(Vdg^2) - sum(UgVd^2)) - penh*(sum(Vdh^2) - sum(UhVd^2))) + x22 <- R^2*(peng * (sum(V2g^2) - sum(UgV2^2)) - penh*(sum(V2h^2) - sum(UhV2^2))) + + return(list(x11=x11, x22=x22, x12=x12, x1=x1, x2=x2, x0=x0)) +} -TF_roots <- function(Q, a, b, Vdelta, V2, z, C, r, tol = 1e-14) { +# Numerically solve for roots of TF slice using +# hybrid polyroot/uniroot approach +TF_roots <- function(R, C, coeffs, tol = 1e-14) { - # z = y - R1 - VdeltaQ <- t(Vdelta) %*% Q - V2Q <- t(V2) %*% Q - x11 <- VdeltaQ %*% Vdelta - x12 <- 2 * VdeltaQ %*% V2 - x22 <- V2Q %*% V2 - x1 <- 2 * VdeltaQ %*% z + t(a) %*% Vdelta - x2 <- 2 * V2Q %*% z + t(a) %*% V2 - x0 <- t(z) %*% Q %*% z + t(a) %*% z + b + x11 <- coeffs$x11 + x22 <- coeffs$x22 + x12 <- coeffs$x12 + x1 <- coeffs$x1 + x2 <- coeffs$x2 + x0 <- coeffs$x0 - g1 <- function(t) r*sqrt(C*t/(1+C*t)) - g2 <- function(t) r/sqrt(1+C*t) + g1 <- function(t) R*sqrt(C*t/(1+C*t)) + g2 <- function(t) R/sqrt(1+C*t) I <- function(t) x11*g1(t)^2 + x12*g1(t)*g2(t) + x22*g2(t)^2 + x1*g1(t) + x2*g2(t) + x0 z4 <- r*complex(real = -x11 + x22, imaginary = -x12)/2 @@ -152,7 +176,7 @@ TF_roots <- function(Q, a, b, Vdelta, V2, z, C, r, tol = 1e-14) { z2 <- complex(real = r*x11+r*x22+2*x0/r) z1 <- Conj(z3) z0 <- Conj(z4) - zcoefs <- r*c(z0, z1, z2, z3, z4)/2 + zcoefs <- R*c(z0, z1, z2, z3, z4)/2 croots <- polyroot(zcoefs) thetas <- Arg(croots) modinds <- Mod(croots) <= 1 + tol & Mod(croots) >= 1 - tol @@ -176,7 +200,10 @@ TF_roots <- function(Q, a, b, Vdelta, V2, z, C, r, tol = 1e-14) { })) partition <- roots_to_partition(roots) positive <- which(I(partition$midpoints) > 0) - +######################################## + # Store the complement! + # interval_intersect uses complement anyway +######################################## intervals <- matrix(NA, ncol=2) for (i in 1:length(positive)) { ind <- positive[i] @@ -192,3 +219,13 @@ TF_roots <- function(Q, a, b, Vdelta, V2, z, C, r, tol = 1e-14) { return(list(intervals = Intervals(c(0,Inf)), I=I)) } + +# Helper functions for TF roots +roots_to_checkpoints <- function(roots) { + checkpoints <- unique(sort(c(0, roots))) + return(c(0, (checkpoints + c(checkpoints[-1], 2 + checkpoints[length(checkpoints)]))/2)) +} +roots_to_partition <- function(roots) { + checkpoints <- unique(sort(c(0, roots))) + return(list(endpoints = c(checkpoints, Inf), midpoints = (checkpoints + c(checkpoints[-1], 2 + checkpoints[length(checkpoints)]))/2)) +} From 6b21cadbfabdf1e7afb47be492ca27b104ade4f0 Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Thu, 5 Nov 2015 18:24:53 -0800 Subject: [PATCH 036/493] Almost finished porting F code into groupfsInf --- selectiveInference/R/funs.groupfs.R | 104 ++++++++++++++++++-------- selectiveInference/R/funs.quadratic.R | 35 ++++----- 2 files changed, 92 insertions(+), 47 deletions(-) diff --git a/selectiveInference/R/funs.groupfs.R b/selectiveInference/R/funs.groupfs.R index 148e35a..80e1529 100644 --- a/selectiveInference/R/funs.groupfs.R +++ b/selectiveInference/R/funs.groupfs.R @@ -267,7 +267,7 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { y <- obj$y Ep <- sum(index %in% obj$action) - pvals = dfs = Tstats = numeric(maxsteps) + pvals = dfs = dfs2 = Tstats = numeric(maxsteps) supports <- list() if (!is.null(sigma)) { @@ -322,23 +322,34 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { if (length(obj$action) > 1) { minus_i <- setdiff(obj$action, i) Psub <- svdu_thresh(obj$x[,which(obj$index %in% minus_i), drop = FALSE]) - Z <- Psub %*% y - C <- (ncol(Pfull) - ncol(Psub))/(n - ncol(Pfull)) + Z <- Psub %*% t(Psub) %*% y + df2 <- ncol(Pfull) - ncol(Psub) + C <- df2/(n - ncol(Pfull)) + } else { Z <- 0 - C <- ncol(Pfull)/(n-ncol(Pfull)) + df2 <- ncol(Pfull) + C <- df2/(n-ncol(Pfull)) } - R1 <- y - z - R2 <- y - Pfull %*% y + R1 <- y - Z + R2 <- y - Pfull %*% t(Pfull) %*% y R <- sqrt(sum(R1^2)) - U <- R1/r + R2sq <- sum(R2^2) + U <- R1/R + + # cv-folds redefine Vdelta/V2? + delta <- R1-R2 Vdelta <- delta/sqrt(sum(delta^2)) V2 <- R2/sqrt(sum(R2^2)) - ydecomp <- list(R=R, Z=Z, Vd=Vdelta, V2=V2) - + TF <- (R^2-R2sq)/(C*R2sq) + Tstats[j] <- TF + dfs[j] <- ncol(Psub) + + ydecomp <- list(R=R, Z=Z, Vd=Vdelta, V2=V2, C=C) + } - + intervallist <- truncationRegion(obj, ydecomp, type) # Additional constraints from cross-validation? @@ -348,11 +359,7 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { if (type == "TC") { ydecomp <- list(R=R[-cvf$fold], eta=eta[-cvf$fold], Z=Z[-cvf$fold]) } else { - #################################### - # THINK ABOUT THIS AGAIN - # when you're not falling asleep - #################################### - ydecomp <- list(R=R[-cvf$fold], Z=Z[-cvf$fold], Vd=Vdelta[-cvf$fold], V2=V2[-cvf$fold]) + ydecomp <- list(R=R, Z=Z[-cvf$fold], Vd=Vdelta[-cvf$fold], V2=V2[-cvf$fold], C=C) # C correct? } truncationRegion(cvf, ydecomp, type) }))) @@ -365,25 +372,52 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { C <- t(Z) %*% cvquad %*% Z quadratic_roots(A, B, C, tol = 1e-15) } else { - #################################### - # DO THIS NEXT - #################################### + + zcvquad <- t(Z) %*% cvquad + vdcvquad <- t(Vdelta) %*% cvquad + v2cvquad <- t(V2) %*% cvquad + # (r*(vd*g1 + v2*g2) + z)^T cvquad (r*(vd*g1 + v2*g2) + z) + x0 <- zcvquad %*% Z + x1 <- 2*R*zcvquad %*% Vd + x2 <- 2*R*zcvquad %*% V2 + x12 <- 2*R*vdcvquad %*% V2 + x11 <- R^2*vdcvquad %*% Vd + x22 <- R^2*v2cvquad %*% V2 + TF_roots(R, C, coeffs = list(x0=x0, x1=x1, x2=x2, x12=x12, x11=x11, x22=x22)) } })) } # Additional constraints from AIC stopping? if (attr(obj, "stopped")) { + aicstop <- attr(obj, "aicstop") - - ulist <- etalist <- zlist <- penlist <- vector("list", aicstop+1) + ulist <- penlist <- zlist <- vector("list", aicstop+1) + + if (type == "TC") { + etalist <- vector("list", aicstop+1) + } else { + vdlist <- v2list <- vector("list", aicstop+1) + } + for (s in seq(aicstop+1)) { stepind <- maxsteps - (aicstop+1) + s if (stepind > 1) { - etalist[[s]] <- obj$cumprojs[[stepind-1]] %*% eta - zlist[[s]] <- obj$cumprojs[[stepind-1]] %*% Z + cproj <- obj$cumprojs[[stepind-1]] + if (type == "TC") { + etalist[[s]] <- cproj %*% eta + } else { + v2list[[s]] <- cproj %*% V2 + vdlist[[s]] <- cproj %*% Vdelta + } + zlist[[s]] <- cproj %*% Z } else { - etalist[[s]] <- eta + if (type == "TC") { + etalist[[s]] <- eta + } else { + v2list[[s]] <- V2 + vdlist[[s]] <- Vdelta + } zlist[[s]] <- Z } ulist[[s]] <- obj$maxprojs[[stepind]] @@ -405,9 +439,19 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { coeffs <- quadratic_coefficients(obj$sigma, Ug, Uh, peng, penh, etag, etah, Zg, Zh) quadratic_roots(coeffs$A, coeffs$B, coeffs$C, tol = 1e-15) } else { -################################### - # DO THIS TOO -################################### + + Ug <- ulist[[s]] + Uh <- ulist[[sp]] + peng <- penlist[[s]] + penh <- prod(unlist(penlist[s:sp])) + Vdg <- vdlist[[s]] + Vdh <- vdlist[[sp]] + V2g <- vdlist[[s]] + V2h <- vdlist[[sp]] + Zg <- zlist[[s]] + Zh <- zlist[[sp]] + coeffs <- TF_coefficients(R, Ug, Uh, peng, penh, Zg, Zh, Vdg, Vdh, V2g, V2h) + TF_roots(R, C, coeffs) } }) }))) @@ -418,17 +462,17 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { region <- interval_union(region, Intervals(c(-Inf,0))) E <- interval_complement(region, check_valid = FALSE) if (length(E) == 0) { - stop(paste("Empty TC support at step", j)) + stop(paste("Empty support at step", j)) } supports[[j]] <- E - + # E is now potentially a union of intervals if (type == "TC") { pvals[j] <- TC_surv(TC, sigma, dfi, E) } else { pvals[j] <- TF_surv(TF, df1, df2, E) } - + } if (any(is.nan(pvals))) { @@ -436,7 +480,7 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { pvals[nanp] <- 0 warning(paste0("P-value NaNs of the form 0/0 converted to 0 for group(s) ", paste(obj$action[nanp], collapse=","), ". This typically occurs for numerical reasons in the presence of a large signal-to-noise ratio.")) } - + names(pvals) <- obj$action out <- list(vars = obj$action, pv=pvals, sigma=sigma) if (type == "TC") { diff --git a/selectiveInference/R/funs.quadratic.R b/selectiveInference/R/funs.quadratic.R index 335bb78..59b2b7e 100644 --- a/selectiveInference/R/funs.quadratic.R +++ b/selectiveInference/R/funs.quadratic.R @@ -3,23 +3,26 @@ truncationRegion <- function(obj, ydecomp, type, tol = 1e-15) { n <- nrow(obj$x) R <- ydecomp$R - Z <- ydecomp$Z + Z = Zs = ydecomp$Z if (type == "TC") { - eta <- ydecomp$eta + eta = etas = ydecomp$eta } else { - Vd <- ydecomp$Vd - V2 <- ydecomp$V2 + Vd = Vds = ydecomp$Vd + V2 = V2s = ydecomp$V2 + C = ydecomp$C } L <- lapply(1:length(obj$action), function(s) { Ug <- obj$maxprojs[[s]] peng <- obj$maxpens[[s]] if (s > 1) { - etas <- obj$cumprojs[[s-1]] %*% eta - Zs <- obj$cumprojs[[s-1]] %*% Z - } else { - etas <- eta - Zs <- Z + if (type == "TC") { + etas <- obj$cumprojs[[s-1]] %*% eta + Zs <- obj$cumprojs[[s-1]] %*% Z + } else { + Vds <- obj$cumprojs[[s-1]] %*% Vd + V2s <- obj$cumprojs[[s-1]] %*% V2 + } } num.projs <- length(obj$projections[[s]]) @@ -38,7 +41,7 @@ truncationRegion <- function(obj, ydecomp, type, tol = 1e-15) { coeffs <- quadratic_coefficients(obj$sigma, Ug, Uh, peng, penh, etas, etas, Zs, Zs) quadratic_roots(coeffs$A, coeffs$B, coeffs$C, tol) } else { - coeffs <- TF_coefficients(R, Ug, Uh, peng, penh, Zg, Zh, Vdg, Vdh, V2g, V2h) + coeffs <- TF_coefficients(R, Ug, Uh, peng, penh, Zs, Zs, Vds, Vds, V2s, V2s) TF_roots(R, C, coeffs) } }) @@ -58,17 +61,15 @@ quadratic_coefficients <- function(sigma, Ug, Uh, peng, penh, etag, etah, Zg, Zh etaZh <- t(etah) %*% Zh etaZg <- t(etag) %*% Zg if (is.null(sigma)) { - # Check the signs, make it consistent A <- penh * (sum(etah^2) - sum(Uheta^2)) - peng * (sum(etag^2) - sum(Ugeta^2)) B <- 2 * penh * (etaZh - t(Uheta) %*% UhZ) - 2 * peng * (etaZg - t(Ugeta) %*% UgZ) C <- penh * (sum(Zh^2) - sum(UhZ^2)) - peng * (sum(Zg^2) - sum(UgZ^2)) } else { - # Check this A <- (sum(etah^2) - sum(Uheta^2)) - (sum(etag^2) - sum(Ugeta^2)) B <- 2 * (etaZh - t(Uheta) %*% UhZ) - 2 * (etaZg - t(Ugeta) %*% UgZ) C <- (sum(Zh^2) - sum(UhZ^2) + penh) - (sum(Zg^2) - sum(UgZ^2) + peng) } - return(list(A = A, B = B, C= C)) + return(list(A = A, B = B, C = C)) } quadratic_roots <- function(A, B, C, tol) { @@ -141,11 +142,11 @@ TF_coefficients <- function(R, Ug, Uh, peng, penh, Zg, Zh, Vdg, Vdh, V2g, V2h) { UgVd <- t(Ug) %*% Vdg UhV2 <- t(Uh) %*% V2h UgV2 <- t(Ug) %*% V2g - VdZh <- t(Vdh) %*% Zh + VdZh <- t(Vdh) %*% Zh VdZg <- t(Vdg) %*% Zg V2Zh <- t(V2h) %*% Zh V2Zg <- t(V2g) %*% Zg - + x0 <- peng * (sum(Zg^2) - sum(UgZ^2)) - penh * (sum(Zh^2) - sum(UhZ^2)) x1 <- 2*R*(peng * (VdZg - t(UgZ) %*% UgVd) - penh * (VdZh - t(UhZ) %*% UhVd)) x2 <- 2*R*(peng * (V2Zg - t(UgZ) %*% UgV2) - penh * (V2Zh - t(UhZ) %*% UhV2)) @@ -200,10 +201,10 @@ TF_roots <- function(R, C, coeffs, tol = 1e-14) { })) partition <- roots_to_partition(roots) positive <- which(I(partition$midpoints) > 0) -######################################## +######################################## # Store the complement! # interval_intersect uses complement anyway -######################################## + intervals <- matrix(NA, ncol=2) for (i in 1:length(positive)) { ind <- positive[i] From d791988742f1d9c9c802c0ee8e9b033d0fcfe2ce Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Fri, 6 Nov 2015 15:38:38 -0800 Subject: [PATCH 037/493] Now debugging F test code... --- selectiveInference/R/funs.groupfs.R | 14 ++-- selectiveInference/R/funs.quadratic.R | 93 ++++++++++++++++----------- 2 files changed, 63 insertions(+), 44 deletions(-) diff --git a/selectiveInference/R/funs.groupfs.R b/selectiveInference/R/funs.groupfs.R index 80e1529..a0fe91a 100644 --- a/selectiveInference/R/funs.groupfs.R +++ b/selectiveInference/R/funs.groupfs.R @@ -314,7 +314,7 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { Tstats[j] <- TC dfs[j] <- dfi - ydecomp <- list(R=R, Z=Z, eta=eta) + ydecomp <- list(Z=Z, eta=eta) } else { @@ -335,10 +335,6 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { R2 <- y - Pfull %*% t(Pfull) %*% y R <- sqrt(sum(R1^2)) R2sq <- sum(R2^2) - U <- R1/R - - # cv-folds redefine Vdelta/V2? - delta <- R1-R2 Vdelta <- delta/sqrt(sum(delta^2)) V2 <- R2/sqrt(sum(R2^2)) @@ -352,6 +348,9 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { intervallist <- truncationRegion(obj, ydecomp, type) + region <- do.call(interval_union, intervallist) + # DELETE THIS ########### + # Additional constraints from cross-validation? if (!is.null(obj$cvobj)) { intervallist <- c(intervallist, do.call(c, @@ -461,8 +460,9 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { region <- do.call(interval_union, intervallist) region <- interval_union(region, Intervals(c(-Inf,0))) E <- interval_complement(region, check_valid = FALSE) + print(E) if (length(E) == 0) { - stop(paste("Empty support at step", j)) +# stop(paste("Empty support at step", j)) } supports[[j]] <- E @@ -470,7 +470,7 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { if (type == "TC") { pvals[j] <- TC_surv(TC, sigma, dfi, E) } else { - pvals[j] <- TF_surv(TF, df1, df2, E) +# pvals[j] <- TF_surv(TF, df1, df2, E) } } diff --git a/selectiveInference/R/funs.quadratic.R b/selectiveInference/R/funs.quadratic.R index 59b2b7e..6d9667a 100644 --- a/selectiveInference/R/funs.quadratic.R +++ b/selectiveInference/R/funs.quadratic.R @@ -2,7 +2,6 @@ truncationRegion <- function(obj, ydecomp, type, tol = 1e-15) { n <- nrow(obj$x) - R <- ydecomp$R Z = Zs = ydecomp$Z if (type == "TC") { eta = etas = ydecomp$eta @@ -10,6 +9,7 @@ truncationRegion <- function(obj, ydecomp, type, tol = 1e-15) { Vd = Vds = ydecomp$Vd V2 = V2s = ydecomp$V2 C = ydecomp$C + R = ydecomp$R } L <- lapply(1:length(obj$action), function(s) { @@ -28,7 +28,7 @@ truncationRegion <- function(obj, ydecomp, type, tol = 1e-15) { num.projs <- length(obj$projections[[s]]) if (num.projs == 0) { return(list(Intervals(c(-Inf,0)))) - + print("no projections") } else { lapply(1:num.projs, function(l) { Uh <- obj$projections[[s]][[l]] @@ -136,30 +136,35 @@ quadratic_roots <- function(A, B, C, tol) { # Efficiently compute coefficients of one-dimensional TF slice function TF_coefficients <- function(R, Ug, Uh, peng, penh, Zg, Zh, Vdg, Vdh, V2g, V2h) { - UhZ <- t(Uh) %*% Zh - UgZ <- t(Ug) %*% Zg - UhVd <- t(Uh) %*% Vdh - UgVd <- t(Ug) %*% Vdg - UhV2 <- t(Uh) %*% V2h - UgV2 <- t(Ug) %*% V2g - VdZh <- t(Vdh) %*% Zh - VdZg <- t(Vdg) %*% Zg - V2Zh <- t(V2h) %*% Zh - V2Zg <- t(V2g) %*% Zg - - x0 <- peng * (sum(Zg^2) - sum(UgZ^2)) - penh * (sum(Zh^2) - sum(UhZ^2)) - x1 <- 2*R*(peng * (VdZg - t(UgZ) %*% UgVd) - penh * (VdZh - t(UhZ) %*% UhVd)) - x2 <- 2*R*(peng * (V2Zg - t(UgZ) %*% UgV2) - penh * (V2Zh - t(UhZ) %*% UhV2)) - x12 <- 2*R*(peng * (t(Vdg) %*% V2g - t(UgVd) %*% UgV2) - penh * (t(Vdh) %*% V2h - t(UhVd) %*% UhV2)) - x11 <- R^2*(peng * (sum(Vdg^2) - sum(UgVd^2)) - penh*(sum(Vdh^2) - sum(UhVd^2))) - x22 <- R^2*(peng * (sum(V2g^2) - sum(UgV2^2)) - penh*(sum(V2h^2) - sum(UhV2^2))) + UhZ <- t(Uh) %*% Zh #check + UgZ <- t(Ug) %*% Zg #check + UhVd <- t(Uh) %*% Vdh #check + UgVd <- t(Ug) %*% Vdg #check + UhV2 <- t(Uh) %*% V2h #check + UgV2 <- t(Ug) %*% V2g #check + VdZh <- sum(Vdh*Zh) #check + VdZg <- sum(Vdg*Zg) #check + V2Zh <- sum(V2h*Zh) #check + V2Zg <- sum(V2g*Zg) #check + + x0 <- peng * (sum(Zg^2) - sum(UgZ^2)) - penh * (sum(Zh^2) - sum(UhZ^2)) #check + + x1 <- 2*R*(peng * (VdZg - sum(UgZ*UgVd)) - penh * (VdZh - sum(UhZ*UhVd))) #check + + x2 <- 2*R*(peng * (V2Zg - sum(UgZ*UgV2)) - penh * (V2Zh - sum(UhZ*UhV2))) #check + + x12 <- 2*R^2*(peng * (sum(Vdg*V2g) - sum(UgVd*UgV2)) - penh * (sum(Vdh*V2h) - sum(UhVd*UhV2))) #fixed R -> R^2 + + x11 <- R^2*(peng * (sum(Vdg^2) - sum(UgVd^2)) - penh * (sum(Vdh^2) - sum(UhVd^2))) #check + x22 <- R^2*(peng * (sum(V2g^2) - sum(UgV2^2)) - penh * (sum(V2h^2) - sum(UhV2^2))) #check +# if (x22 == 0) print(c(sum(UgV2^2), sum(UhV2^2))) return(list(x11=x11, x22=x22, x12=x12, x1=x1, x2=x2, x0=x0)) } # Numerically solve for roots of TF slice using # hybrid polyroot/uniroot approach -TF_roots <- function(R, C, coeffs, tol = 1e-14) { +TF_roots <- function(R, C, coeffs, tol = 1e-14, tol2 = 1e-8) { x11 <- coeffs$x11 x22 <- coeffs$x22 @@ -168,13 +173,24 @@ TF_roots <- function(R, C, coeffs, tol = 1e-14) { x2 <- coeffs$x2 x0 <- coeffs$x0 + # Handle some special cases + if ((x11 == 0) && (max(abs(c(x22, x12, x1, x2))) < tol2)) { +# print("Special case 1") + return(Intervals(c(-Inf, 0))) + } + + if ((x22 == 0) && (max(abs(c(x2, x12))) < tol2)) { + x2 <- 0 + x12 <- 0 + } + g1 <- function(t) R*sqrt(C*t/(1+C*t)) g2 <- function(t) R/sqrt(1+C*t) I <- function(t) x11*g1(t)^2 + x12*g1(t)*g2(t) + x22*g2(t)^2 + x1*g1(t) + x2*g2(t) + x0 - z4 <- r*complex(real = -x11 + x22, imaginary = -x12)/2 + z4 <- R*complex(real = -x11 + x22, imaginary = -x12)/2 z3 <- complex(real = x2, imaginary = -x1) - z2 <- complex(real = r*x11+r*x22+2*x0/r) + z2 <- complex(real = R*x11+R*x22+2*x0/R) z1 <- Conj(z3) z0 <- Conj(z4) zcoefs <- R*c(z0, z1, z2, z3, z4)/2 @@ -185,8 +201,9 @@ TF_roots <- function(R, C, coeffs, tol = 1e-14) { roots <- unique(thetas[modinds * angleinds]) troots <- tan(roots)^2/C - if (length(roots) == 0) { - return(list(intervals = Intervals(c(0,Inf)), I=I)) + if (length(troots) == 0) { + #return(list(intervals = Intervals(c(0,Inf)), I=I)) + return(Intervals(c(-Inf,0))) } checkpoints <- roots_to_checkpoints(troots) @@ -197,36 +214,38 @@ TF_roots <- function(R, C, coeffs, tol = 1e-14) { if (length(changeinds) > 0) { roots <- unlist(lapply(changeinds, function(ind) { - uniroot(I, lower = checkpoints[ind-1], upper = checkpoints[ind])$root + uniroot(I, lower = checkpoints[ind-1], upper = checkpoints[ind], tol = tol2)$root })) + +# if (x2 == 0) print(roots) + partition <- roots_to_partition(roots) - positive <- which(I(partition$midpoints) > 0) -######################################## - # Store the complement! - # interval_intersect uses complement anyway + negative <- which(I(partition$midpoints) < 0) intervals <- matrix(NA, ncol=2) - for (i in 1:length(positive)) { - ind <- positive[i] - if ((i > 1) && (ind == positive[i-1] + 1)) { + for (i in 1:length(negative)) { + ind <- negative[i] + if ((i > 1) && (ind == negative[i-1] + 1)) { + # There was not a sign change at end of previous interval intervals[nrow(intervals), 2] <- partition$endpoints[ind+1] } else { intervals <- rbind(intervals, c(partition$endpoints[ind], partition$endpoints[ind+1])) } } - return(list(intervals = Intervals(intervals[-1,]), I=I)) + #return(list(intervals = Intervals(intervals[-1,]), I=I)) + return(Intervals(intervals[-1,])) } - - return(list(intervals = Intervals(c(0,Inf)), I=I)) + #return(list(intervals = Intervals(c(0,Inf)), I=I)) + return(Intervals(c(-Inf,0))) } # Helper functions for TF roots roots_to_checkpoints <- function(roots) { checkpoints <- unique(sort(c(0, roots))) - return(c(0, (checkpoints + c(checkpoints[-1], 2 + checkpoints[length(checkpoints)]))/2)) + return(c(0, (checkpoints + c(checkpoints[-1], 200 + checkpoints[length(checkpoints)]))/2)) } roots_to_partition <- function(roots) { checkpoints <- unique(sort(c(0, roots))) - return(list(endpoints = c(checkpoints, Inf), midpoints = (checkpoints + c(checkpoints[-1], 2 + checkpoints[length(checkpoints)]))/2)) + return(list(endpoints = c(checkpoints, Inf), midpoints = (checkpoints + c(checkpoints[-1], 200 + checkpoints[length(checkpoints)]))/2)) } From 7564fcb1c934ec7a5f7b6bb0f819eafaea25b6db Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Fri, 6 Nov 2015 15:41:18 -0800 Subject: [PATCH 038/493] Not quite finished with F test --- selectiveInference/R/funs.groupfs.R | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/selectiveInference/R/funs.groupfs.R b/selectiveInference/R/funs.groupfs.R index a0fe91a..55a3d6b 100644 --- a/selectiveInference/R/funs.groupfs.R +++ b/selectiveInference/R/funs.groupfs.R @@ -348,8 +348,7 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { intervallist <- truncationRegion(obj, ydecomp, type) - region <- do.call(interval_union, intervallist) - # DELETE THIS ########### + #region <- do.call(interval_union, intervallist) # Additional constraints from cross-validation? if (!is.null(obj$cvobj)) { @@ -462,7 +461,7 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { E <- interval_complement(region, check_valid = FALSE) print(E) if (length(E) == 0) { -# stop(paste("Empty support at step", j)) + stop(paste("Empty support at step", j)) } supports[[j]] <- E @@ -470,6 +469,7 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { if (type == "TC") { pvals[j] <- TC_surv(TC, sigma, dfi, E) } else { + # write TF_surv function first # pvals[j] <- TF_surv(TF, df1, df2, E) } From 80feb547218e9c4fe5eefe4f4bcac778b6f4577b Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Fri, 6 Nov 2015 17:33:08 -0800 Subject: [PATCH 039/493] Searching for a bug... --- selectiveInference/R/funs.quadratic.R | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/selectiveInference/R/funs.quadratic.R b/selectiveInference/R/funs.quadratic.R index 6d9667a..41f2704 100644 --- a/selectiveInference/R/funs.quadratic.R +++ b/selectiveInference/R/funs.quadratic.R @@ -28,9 +28,9 @@ truncationRegion <- function(obj, ydecomp, type, tol = 1e-15) { num.projs <- length(obj$projections[[s]]) if (num.projs == 0) { return(list(Intervals(c(-Inf,0)))) - print("no projections") } else { lapply(1:num.projs, function(l) { + Uh <- obj$projections[[s]][[l]] penh <- obj$aicpens[[s]][[l]] # The quadratic form corresponding to @@ -76,6 +76,7 @@ quadratic_roots <- function(A, B, C, tol) { disc <- B^2 - 4*A*C b2a <- -B/(2*A) + if (disc > tol) { # Real roots pm <- sqrt(disc)/(2*A) @@ -207,6 +208,7 @@ TF_roots <- function(R, C, coeffs, tol = 1e-14, tol2 = 1e-8) { } checkpoints <- roots_to_checkpoints(troots) + signs <- sign(I(checkpoints)) diffs <- c(0, diff(signs)) changeinds <- which(diffs != 0) @@ -217,8 +219,6 @@ TF_roots <- function(R, C, coeffs, tol = 1e-14, tol2 = 1e-8) { uniroot(I, lower = checkpoints[ind-1], upper = checkpoints[ind], tol = tol2)$root })) -# if (x2 == 0) print(roots) - partition <- roots_to_partition(roots) negative <- which(I(partition$midpoints) < 0) @@ -236,6 +236,7 @@ TF_roots <- function(R, C, coeffs, tol = 1e-14, tol2 = 1e-8) { #return(list(intervals = Intervals(intervals[-1,]), I=I)) return(Intervals(intervals[-1,])) } + #return(list(intervals = Intervals(c(0,Inf)), I=I)) return(Intervals(c(-Inf,0))) } From c9a40a907a5ff8cbf506d2c5d7d1a30fde0fdd40 Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Sat, 7 Nov 2015 15:48:47 -0800 Subject: [PATCH 040/493] Fixed a sign change, added more TF functions --- selectiveInference/R/funs.groupfs.R | 90 ++++++++++++++++++++++----- selectiveInference/R/funs.quadratic.R | 70 ++++++++++----------- 2 files changed, 110 insertions(+), 50 deletions(-) diff --git a/selectiveInference/R/funs.groupfs.R b/selectiveInference/R/funs.groupfs.R index 55a3d6b..6432d1e 100644 --- a/selectiveInference/R/funs.groupfs.R +++ b/selectiveInference/R/funs.groupfs.R @@ -322,17 +322,16 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { if (length(obj$action) > 1) { minus_i <- setdiff(obj$action, i) Psub <- svdu_thresh(obj$x[,which(obj$index %in% minus_i), drop = FALSE]) - Z <- Psub %*% t(Psub) %*% y - df2 <- ncol(Pfull) - ncol(Psub) - C <- df2/(n - ncol(Pfull)) - + Z <- Psub %*% t(Psub) %*% obj$y + df1 <- ncol(Pfull) - ncol(Psub) } else { Z <- 0 - df2 <- ncol(Pfull) - C <- df2/(n-ncol(Pfull)) + df1 <- ncol(Pfull) } - R1 <- y - Z - R2 <- y - Pfull %*% t(Pfull) %*% y + df2 <- n - ncol(Pfull) + C <- df1/df2 + R1 <- obj$y - Z + R2 <- obj$y - Pfull %*% t(Pfull) %*% obj$y R <- sqrt(sum(R1^2)) R2sq <- sum(R2^2) delta <- R1-R2 @@ -340,7 +339,7 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { V2 <- R2/sqrt(sum(R2^2)) TF <- (R^2-R2sq)/(C*R2sq) Tstats[j] <- TF - dfs[j] <- ncol(Psub) + dfs[j] <- df1 ydecomp <- list(R=R, Z=Z, Vd=Vdelta, V2=V2, C=C) @@ -348,8 +347,6 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { intervallist <- truncationRegion(obj, ydecomp, type) - #region <- do.call(interval_union, intervallist) - # Additional constraints from cross-validation? if (!is.null(obj$cvobj)) { intervallist <- c(intervallist, do.call(c, @@ -459,7 +456,7 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { region <- do.call(interval_union, intervallist) region <- interval_union(region, Intervals(c(-Inf,0))) E <- interval_complement(region, check_valid = FALSE) - print(E) + if (length(E) == 0) { stop(paste("Empty support at step", j)) } @@ -470,7 +467,7 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { pvals[j] <- TC_surv(TC, sigma, dfi, E) } else { # write TF_surv function first -# pvals[j] <- TF_surv(TF, df1, df2, E) + pvals[j] <- TF_surv(TF, df1, df2, E) } } @@ -557,6 +554,63 @@ num_int_chi <- function(a, b, df, nsamp = 10000) { return((b-a)*mean(integrand)) } +TF_surv <- function(TF, df1, df2, E) { + if (length(E) == 0) { + stop("Empty TF support") + } + + # Sum truncated cdf over each part of E + denom <- do.call(sum, lapply(1:nrow(E), function(v) { + TF_interval(E[v,1], E[v,2], df1, df2) + })) + + # Sum truncated cdf from observed value to max of + # truncation region + numer <- do.call(sum, lapply(1:nrow(E), function(v) { + lower <- E[v,1] + upper <- E[v,2] + if (upper > TF) { + # Observed value is left of this interval's right endpoint + if (lower < TF) { + # Observed value is in this interval + return(TF_interval(TF, upper, df1, df2)) + } else { + # Observed value is not in this interval + return(TF_interval(lower, upper, df1, df2)) + } + } else { + # Observed value is right of this entire interval + return(0) + } + })) + + # Survival function + value <- numer/denom + # Force p-value to lie in the [0,1] interval + # in case of numerical issues + value <- max(0, min(1, value)) + value +} + +TF_interval <- function(lower, upper, df1, df2) { + a <- lower + b <- upper + if (b == Inf) { + integral <- pf(a, df1, df2, lower.tail = FALSE) + } else { + integral <- pf(b, df1, df2) - pf(a, df1, df2) + } + if ((integral < .Machine$double.eps) && (b < Inf)) { + integral <- num_int_F(a, b, df1, df2) + } + return(integral) +} + +num_int_F <- function(a, b, df1, df2, nsamp = 10000) { + grid <- seq(from=a, to=b, length.out=nsamp) + integrand <- df(grid, df1, df2) + return((b-a)*mean(integrand)) +} #' Center and scale design matrix by groups #' @@ -697,13 +751,21 @@ predict.groupfs <- function(object, newx, ...) { print.groupfsInf <- function(x, ...) { cat(sprintf("\nStandard deviation of noise (specified or estimated) sigma = %0.3f\n", x$sigma)) action <- x$vars + isTC <- "TC" %in% names(x) + if (isTC) { + Tstat <- x$TC + } else { + Tstat <- x$TF + } vnames <- attr(x, "varnames") if (length(vnames) > 0) action <- vnames[action] - tab = data.frame(Group = action, Pvalue = round(x$pv, 3), Tchi = round(x$TC, 3), + tab = data.frame(Group = action, Pvalue = round(x$pv, 3), + TC = round(Tstat, 3), df = x$df, Size = round(unlist(lapply(lapply(x$support, size), sum)), 3), Ints = unlist(lapply(x$support, nrow)), Min =round(unlist(lapply(x$support, min)), 3), Max = round(unlist(lapply(x$support, max)), 3)) rownames(tab) = 1:length(x$vars) + if (!isTC) names(tab)[3] <- "TF" print(tab) cat("\nInts is the number of intervals in the truncated chi selection region and Size is the sum of their lengths. Min and Max are the lowest and highest endpoints of the truncation region. No confidence intervals are reported by groupfsInf.\n") invisible() diff --git a/selectiveInference/R/funs.quadratic.R b/selectiveInference/R/funs.quadratic.R index 41f2704..d0660a1 100644 --- a/selectiveInference/R/funs.quadratic.R +++ b/selectiveInference/R/funs.quadratic.R @@ -41,6 +41,7 @@ truncationRegion <- function(obj, ydecomp, type, tol = 1e-15) { coeffs <- quadratic_coefficients(obj$sigma, Ug, Uh, peng, penh, etas, etas, Zs, Zs) quadratic_roots(coeffs$A, coeffs$B, coeffs$C, tol) } else { + # Q <- peng * (diag(rep(1,n)) - Ug %*% t(Ug)) - penh * (diag(rep(1,n)) - Uh %*% t(Uh)) coeffs <- TF_coefficients(R, Ug, Uh, peng, penh, Zs, Zs, Vds, Vds, V2s, V2s) TF_roots(R, C, coeffs) } @@ -134,6 +135,16 @@ quadratic_roots <- function(A, B, C, tol) { } +# Helper functions for TF roots +roots_to_checkpoints <- function(roots) { + checkpoints <- unique(sort(c(0, roots))) + return(c(0, (checkpoints + c(checkpoints[-1], 200 + checkpoints[length(checkpoints)]))/2)) +} +roots_to_partition <- function(roots) { + checkpoints <- unique(sort(c(0, roots))) + return(list(endpoints = c(checkpoints, Inf), midpoints = (checkpoints + c(checkpoints[-1], 200 + checkpoints[length(checkpoints)]))/2)) +} + # Efficiently compute coefficients of one-dimensional TF slice function TF_coefficients <- function(R, Ug, Uh, peng, penh, Zg, Zh, Vdg, Vdh, V2g, V2h) { @@ -148,17 +159,12 @@ TF_coefficients <- function(R, Ug, Uh, peng, penh, Zg, Zh, Vdg, Vdh, V2g, V2h) { V2Zh <- sum(V2h*Zh) #check V2Zg <- sum(V2g*Zg) #check - x0 <- peng * (sum(Zg^2) - sum(UgZ^2)) - penh * (sum(Zh^2) - sum(UhZ^2)) #check - - x1 <- 2*R*(peng * (VdZg - sum(UgZ*UgVd)) - penh * (VdZh - sum(UhZ*UhVd))) #check - - x2 <- 2*R*(peng * (V2Zg - sum(UgZ*UgV2)) - penh * (V2Zh - sum(UhZ*UhV2))) #check - - x12 <- 2*R^2*(peng * (sum(Vdg*V2g) - sum(UgVd*UgV2)) - penh * (sum(Vdh*V2h) - sum(UhVd*UhV2))) #fixed R -> R^2 - - x11 <- R^2*(peng * (sum(Vdg^2) - sum(UgVd^2)) - penh * (sum(Vdh^2) - sum(UhVd^2))) #check - x22 <- R^2*(peng * (sum(V2g^2) - sum(UgV2^2)) - penh * (sum(V2h^2) - sum(UhV2^2))) #check -# if (x22 == 0) print(c(sum(UgV2^2), sum(UhV2^2))) + x0 <- penh * (sum(Zh^2) - sum(UhZ^2)) - peng * (sum(Zg^2) - sum(UgZ^2)) + x1 <- 2*R*(penh * (VdZh - sum(UhZ*UhVd)) - peng * (VdZg - sum(UgZ*UgVd))) + x2 <- 2*R*(penh * (V2Zh - sum(UhZ*UhV2)) - peng * (V2Zg - sum(UgZ*UgV2))) + x12 <- 2*R^2*(penh * (sum(Vdh*V2h) - sum(UhVd*UhV2)) - peng * (sum(Vdg*V2g) - sum(UgVd*UgV2))) + x11 <- R^2*(penh * (sum(Vdh^2) - sum(UhVd^2)) - peng * (sum(Vdg^2) - sum(UgVd^2))) #check + x22 <- R^2*(penh * (sum(V2h^2) - sum(UhV2^2)) - peng * (sum(V2g^2) - sum(UgV2^2))) return(list(x11=x11, x22=x22, x12=x12, x1=x1, x2=x2, x0=x0)) } @@ -174,32 +180,33 @@ TF_roots <- function(R, C, coeffs, tol = 1e-14, tol2 = 1e-8) { x2 <- coeffs$x2 x0 <- coeffs$x0 - # Handle some special cases - if ((x11 == 0) && (max(abs(c(x22, x12, x1, x2))) < tol2)) { -# print("Special case 1") - return(Intervals(c(-Inf, 0))) - } +## # Handle some special cases +## if ((x11 == 0) && (max(abs(c(x22, x12, x1, x2))) < tol2)) { +## # print("Special case 1") +## return(Intervals(c(-Inf, 0))) +## } - if ((x22 == 0) && (max(abs(c(x2, x12))) < tol2)) { - x2 <- 0 - x12 <- 0 - } +## if ((x22 == 0) && (max(abs(c(x2, x12))) < tol2)) { +## x2 <- 0 +## x12 <- 0 +## } - g1 <- function(t) R*sqrt(C*t/(1+C*t)) - g2 <- function(t) R/sqrt(1+C*t) + g1 <- function(t) sqrt(C*t/(1+C*t)) + g2 <- function(t) 1/sqrt(1+C*t) I <- function(t) x11*g1(t)^2 + x12*g1(t)*g2(t) + x22*g2(t)^2 + x1*g1(t) + x2*g2(t) + x0 - z4 <- R*complex(real = -x11 + x22, imaginary = -x12)/2 - z3 <- complex(real = x2, imaginary = -x1) - z2 <- complex(real = R*x11+R*x22+2*x0/R) + z4 <- complex(real = -x11 + x22, imaginary = -x12)/4 + z3 <- complex(real = x2, imaginary = -x1)/2 + z2 <- complex(real = x11/2+x22/2+x0) z1 <- Conj(z3) z0 <- Conj(z4) - zcoefs <- R*c(z0, z1, z2, z3, z4)/2 + + zcoefs <- c(z0, z1, z2, z3, z4) croots <- polyroot(zcoefs) thetas <- Arg(croots) modinds <- Mod(croots) <= 1 + tol & Mod(croots) >= 1 - tol angleinds <- thetas >=0 & thetas <= pi/2 - roots <- unique(thetas[modinds * angleinds]) + roots <- unique(thetas[which(modinds & angleinds)]) troots <- tan(roots)^2/C if (length(troots) == 0) { @@ -241,12 +248,3 @@ TF_roots <- function(R, C, coeffs, tol = 1e-14, tol2 = 1e-8) { return(Intervals(c(-Inf,0))) } -# Helper functions for TF roots -roots_to_checkpoints <- function(roots) { - checkpoints <- unique(sort(c(0, roots))) - return(c(0, (checkpoints + c(checkpoints[-1], 200 + checkpoints[length(checkpoints)]))/2)) -} -roots_to_partition <- function(roots) { - checkpoints <- unique(sort(c(0, roots))) - return(list(endpoints = c(checkpoints, Inf), midpoints = (checkpoints + c(checkpoints[-1], 200 + checkpoints[length(checkpoints)]))/2)) -} From ee08db5a77bd040904a79edb5a104f5decc80119 Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Sat, 7 Nov 2015 16:07:51 -0800 Subject: [PATCH 041/493] Still getting empty support for F, not sure why --- selectiveInference/R/funs.groupfs.R | 37 +++++++++++++++------------ selectiveInference/R/funs.quadratic.R | 2 +- tests/test.groupfs.R | 8 +++--- 3 files changed, 25 insertions(+), 22 deletions(-) diff --git a/selectiveInference/R/funs.groupfs.R b/selectiveInference/R/funs.groupfs.R index 6432d1e..d2c539c 100644 --- a/selectiveInference/R/funs.groupfs.R +++ b/selectiveInference/R/funs.groupfs.R @@ -277,12 +277,12 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { } else { if (is.null(obj$sigma)) { type <- "TF" - if (n >= 2*p) { - sigma <- sqrt(sum(lsfit(obj$x, obj$y, intercept = obj$intercept)$res^2)/(n-p-obj$intercept)) - } else { - sigma = sqrt(obj$log$RSS[length(obj$log$RSS)]/(n-Ep-obj$intercept)) - warning(paste(sprintf("p > n/2, and sigmahat = %0.3f used as an estimate of sigma;",sigma), "you may want to use the estimateSigma function")) - } + ## if (n >= 2*p) { + ## sigma <- sqrt(sum(lsfit(obj$x, obj$y, intercept = obj$intercept)$res^2)/(n-p-obj$intercept)) + ## } else { + ## sigma = sqrt(obj$log$RSS[length(obj$log$RSS)]/(n-Ep-obj$intercept)) + ## warning(paste(sprintf("p > n/2, and sigmahat = %0.3f used as an estimate of sigma;",sigma), "you may want to use the estimateSigma function")) + ## } } else { type <- "TC" sigma <- obj$sigma @@ -294,7 +294,7 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { i <- obj$action[j] if (verbose) cat(paste0("Step ", j, "/", attr(obj, "maxsteps"), ": computing P-value for group ", i, "\n")) - if (!is.null(obj$sigma)) { + if (type == "TC") { # Form projection onto active set minus i # and project x_i orthogonally x_i <- obj$x[,which(obj$index == i), drop = FALSE] @@ -332,12 +332,13 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { C <- df1/df2 R1 <- obj$y - Z R2 <- obj$y - Pfull %*% t(Pfull) %*% obj$y - R <- sqrt(sum(R1^2)) + R1sq <- sum(R1^2) R2sq <- sum(R2^2) + R <- sqrt(R1sq) delta <- R1-R2 - Vdelta <- delta/sqrt(sum(delta^2)) - V2 <- R2/sqrt(sum(R2^2)) - TF <- (R^2-R2sq)/(C*R2sq) + Vdelta <- delta/sqrt(delta^2) + V2 <- R2/sqrt(R2sq) + TF <- (R1sq-R2sq)/(C*R2sq) Tstats[j] <- TF dfs[j] <- df1 @@ -479,9 +480,10 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { } names(pvals) <- obj$action - out <- list(vars = obj$action, pv=pvals, sigma=sigma) + out <- list(vars = obj$action, pv=pvals) if (type == "TC") { out$TC <- Tstats + out$sigma <- sigma } else { out$TF <- Tstats } @@ -749,14 +751,15 @@ predict.groupfs <- function(object, newx, ...) { } print.groupfsInf <- function(x, ...) { - cat(sprintf("\nStandard deviation of noise (specified or estimated) sigma = %0.3f\n", x$sigma)) - action <- x$vars - isTC <- "TC" %in% names(x) - if (isTC) { + if (!is.null(x$sigma)) { + isTF <- FALSE Tstat <- x$TC + cat(sprintf("\nStandard deviation of noise (specified or estimated) sigma = %0.3f\n", x$sigma)) } else { + isTF <- TRUE Tstat <- x$TF } + action <- x$vars vnames <- attr(x, "varnames") if (length(vnames) > 0) action <- vnames[action] tab = data.frame(Group = action, Pvalue = round(x$pv, 3), @@ -765,7 +768,7 @@ print.groupfsInf <- function(x, ...) { Ints = unlist(lapply(x$support, nrow)), Min =round(unlist(lapply(x$support, min)), 3), Max = round(unlist(lapply(x$support, max)), 3)) rownames(tab) = 1:length(x$vars) - if (!isTC) names(tab)[3] <- "TF" + if (isTF) names(tab)[3] <- "TF" print(tab) cat("\nInts is the number of intervals in the truncated chi selection region and Size is the sum of their lengths. Min and Max are the lowest and highest endpoints of the truncation region. No confidence intervals are reported by groupfsInf.\n") invisible() diff --git a/selectiveInference/R/funs.quadratic.R b/selectiveInference/R/funs.quadratic.R index d0660a1..88cab99 100644 --- a/selectiveInference/R/funs.quadratic.R +++ b/selectiveInference/R/funs.quadratic.R @@ -41,7 +41,7 @@ truncationRegion <- function(obj, ydecomp, type, tol = 1e-15) { coeffs <- quadratic_coefficients(obj$sigma, Ug, Uh, peng, penh, etas, etas, Zs, Zs) quadratic_roots(coeffs$A, coeffs$B, coeffs$C, tol) } else { - # Q <- peng * (diag(rep(1,n)) - Ug %*% t(Ug)) - penh * (diag(rep(1,n)) - Uh %*% t(Uh)) + #Q <- peng * (diag(rep(1,n)) - Ug %*% t(Ug)) - penh * (diag(rep(1,n)) - Uh %*% t(Uh)) coeffs <- TF_coefficients(R, Ug, Uh, peng, penh, Zs, Zs, Vds, Vds, V2s, V2s) TF_roots(R, C, coeffs) } diff --git a/tests/test.groupfs.R b/tests/test.groupfs.R index d35800e..0895712 100644 --- a/tests/test.groupfs.R +++ b/tests/test.groupfs.R @@ -9,9 +9,9 @@ set.seed(1) n <- 40 p <- 80 index <- sort(rep(1:(p/2), 2)) -maxsteps <- 10 -sparsity <- 5 -snr <- 3 +maxsteps <- 8 +sparsity <- 4 +snr <- 2 system.time({ for (iter in 1:100) { @@ -21,7 +21,7 @@ for (iter in 1:100) { beta[which(index %in% 1:sparsity)] <- snr y <- y + x %*% beta fit <- groupfs(x, y, index, maxsteps = maxsteps) - pvals <- groupfsInf(fit) + pvals <- groupfsInf(fit, verbose = T) } }) From 504baa1be25ad01773b3295c1b9d4797f2504bee Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Sun, 8 Nov 2015 19:32:16 -0800 Subject: [PATCH 042/493] Fixed another error, but still no dice on the F test --- selectiveInference/R/funs.quadratic.R | 84 +++++++++++++++++++-------- 1 file changed, 61 insertions(+), 23 deletions(-) diff --git a/selectiveInference/R/funs.quadratic.R b/selectiveInference/R/funs.quadratic.R index 88cab99..bffc0b8 100644 --- a/selectiveInference/R/funs.quadratic.R +++ b/selectiveInference/R/funs.quadratic.R @@ -2,27 +2,35 @@ truncationRegion <- function(obj, ydecomp, type, tol = 1e-15) { n <- nrow(obj$x) - Z = Zs = ydecomp$Z + Z <- ydecomp$Z if (type == "TC") { - eta = etas = ydecomp$eta + eta <- ydecomp$eta } else { - Vd = Vds = ydecomp$Vd - V2 = V2s = ydecomp$V2 - C = ydecomp$C - R = ydecomp$R + Vd <- ydecomp$Vd + V2 <- ydecomp$V2 + C <- ydecomp$C + R <- ydecomp$R } L <- lapply(1:length(obj$action), function(s) { Ug <- obj$maxprojs[[s]] peng <- obj$maxpens[[s]] if (s > 1) { + Zs <- obj$cumprojs[[s-1]] %*% Z # This was a fix! if (type == "TC") { etas <- obj$cumprojs[[s-1]] %*% eta - Zs <- obj$cumprojs[[s-1]] %*% Z } else { Vds <- obj$cumprojs[[s-1]] %*% Vd V2s <- obj$cumprojs[[s-1]] %*% V2 } + } else { + Zs <- Z + if (type == "TC") { + etas <- eta + } else { + Vds <- Vd + V2s <- V2 + } } num.projs <- length(obj$projections[[s]]) @@ -41,9 +49,27 @@ truncationRegion <- function(obj, ydecomp, type, tol = 1e-15) { coeffs <- quadratic_coefficients(obj$sigma, Ug, Uh, peng, penh, etas, etas, Zs, Zs) quadratic_roots(coeffs$A, coeffs$B, coeffs$C, tol) } else { - #Q <- peng * (diag(rep(1,n)) - Ug %*% t(Ug)) - penh * (diag(rep(1,n)) - Uh %*% t(Uh)) + + # Debugging + ## Q <- peng * (diag(rep(1,n)) - Ug %*% t(Ug)) - penh * (diag(rep(1,n)) - Uh %*% t(Uh)) + ## g1 <- function(t) sqrt(C*t/(1+C*t)) + ## g2 <- function(t) 1/sqrt(1+C*t) + ## Y <- function(t) { + ## Zs + R * (Vds*g1(t) + V2s*g2(t)) + ## } + coeffs <- TF_coefficients(R, Ug, Uh, peng, penh, Zs, Zs, Vds, Vds, V2s, V2s) - TF_roots(R, C, coeffs) + roots <- TF_roots(R, C, coeffs) + + if (is.null(roots)) print(c(s,l)) + ## print(do.call(rbind, lapply(roots, function(r) { + ## c(r, + ## t(Y(r-0.000001)) %*% Q %*% Y(r-0.000001), + ## t(Y(r)) %*% Q %*% Y(r), + ## t(Y(r+0.000001)) %*% Q %*% Y(r+0.000001)) + ## }))) + + return(roots) } }) } @@ -148,22 +174,22 @@ roots_to_partition <- function(roots) { # Efficiently compute coefficients of one-dimensional TF slice function TF_coefficients <- function(R, Ug, Uh, peng, penh, Zg, Zh, Vdg, Vdh, V2g, V2h) { - UhZ <- t(Uh) %*% Zh #check - UgZ <- t(Ug) %*% Zg #check - UhVd <- t(Uh) %*% Vdh #check - UgVd <- t(Ug) %*% Vdg #check - UhV2 <- t(Uh) %*% V2h #check - UgV2 <- t(Ug) %*% V2g #check - VdZh <- sum(Vdh*Zh) #check - VdZg <- sum(Vdg*Zg) #check - V2Zh <- sum(V2h*Zh) #check - V2Zg <- sum(V2g*Zg) #check + UhZ <- t(Uh) %*% Zh + UgZ <- t(Ug) %*% Zg + UhVd <- t(Uh) %*% Vdh + UgVd <- t(Ug) %*% Vdg + UhV2 <- t(Uh) %*% V2h + UgV2 <- t(Ug) %*% V2g + VdZh <- sum(Vdh*Zh) + VdZg <- sum(Vdg*Zg) + V2Zh <- sum(V2h*Zh) + V2Zg <- sum(V2g*Zg) x0 <- penh * (sum(Zh^2) - sum(UhZ^2)) - peng * (sum(Zg^2) - sum(UgZ^2)) x1 <- 2*R*(penh * (VdZh - sum(UhZ*UhVd)) - peng * (VdZg - sum(UgZ*UgVd))) x2 <- 2*R*(penh * (V2Zh - sum(UhZ*UhV2)) - peng * (V2Zg - sum(UgZ*UgV2))) x12 <- 2*R^2*(penh * (sum(Vdh*V2h) - sum(UhVd*UhV2)) - peng * (sum(Vdg*V2g) - sum(UgVd*UgV2))) - x11 <- R^2*(penh * (sum(Vdh^2) - sum(UhVd^2)) - peng * (sum(Vdg^2) - sum(UgVd^2))) #check + x11 <- R^2*(penh * (sum(Vdh^2) - sum(UhVd^2)) - peng * (sum(Vdg^2) - sum(UgVd^2))) x22 <- R^2*(penh * (sum(V2h^2) - sum(UhV2^2)) - peng * (sum(V2g^2) - sum(UgV2^2))) return(list(x11=x11, x22=x22, x12=x12, x1=x1, x2=x2, x0=x0)) @@ -210,7 +236,15 @@ TF_roots <- function(R, C, coeffs, tol = 1e-14, tol2 = 1e-8) { troots <- tan(roots)^2/C if (length(troots) == 0) { - #return(list(intervals = Intervals(c(0,Inf)), I=I)) + # Something bad happens here + # sometimes there is a root and it's not caught + # by polyroot or something + # do an additional sign change check? + #print(c(I(0), I(100), I(10000), unlist(coeffs)), digits=1) + if (I(0) < 0) { + return(NULL) + return(Intervals(c(0,Inf))) + } return(Intervals(c(-Inf,0))) } @@ -240,11 +274,15 @@ TF_roots <- function(R, C, coeffs, tol = 1e-14, tol2 = 1e-8) { } } - #return(list(intervals = Intervals(intervals[-1,]), I=I)) return(Intervals(intervals[-1,])) } - #return(list(intervals = Intervals(c(0,Inf)), I=I)) + # Something bad happening, see above + #print(c(I(0), I(100), I(10000), unlist(coeffs)), digits=1) + if (I(0) < 0) { + return(NULL) + return(Intervals(c(0,Inf))) + } return(Intervals(c(-Inf,0))) } From 3410957e65bd1c92427a2aefa2a1aa92edd2b006 Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Sun, 8 Nov 2015 20:23:35 -0800 Subject: [PATCH 043/493] Found another error, still not done --- selectiveInference/R/funs.groupfs.R | 2 +- selectiveInference/R/funs.quadratic.R | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/selectiveInference/R/funs.groupfs.R b/selectiveInference/R/funs.groupfs.R index d2c539c..4fd4642 100644 --- a/selectiveInference/R/funs.groupfs.R +++ b/selectiveInference/R/funs.groupfs.R @@ -336,7 +336,7 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { R2sq <- sum(R2^2) R <- sqrt(R1sq) delta <- R1-R2 - Vdelta <- delta/sqrt(delta^2) + Vdelta <- delta/sqrt(sum(delta^2)) V2 <- R2/sqrt(R2sq) TF <- (R1sq-R2sq)/(C*R2sq) Tstats[j] <- TF diff --git a/selectiveInference/R/funs.quadratic.R b/selectiveInference/R/funs.quadratic.R index bffc0b8..401a652 100644 --- a/selectiveInference/R/funs.quadratic.R +++ b/selectiveInference/R/funs.quadratic.R @@ -50,18 +50,18 @@ truncationRegion <- function(obj, ydecomp, type, tol = 1e-15) { quadratic_roots(coeffs$A, coeffs$B, coeffs$C, tol) } else { - # Debugging + # Debugging ## Q <- peng * (diag(rep(1,n)) - Ug %*% t(Ug)) - penh * (diag(rep(1,n)) - Uh %*% t(Uh)) - ## g1 <- function(t) sqrt(C*t/(1+C*t)) - ## g2 <- function(t) 1/sqrt(1+C*t) - ## Y <- function(t) { - ## Zs + R * (Vds*g1(t) + V2s*g2(t)) - ## } + ## g1 <- function(t) sqrt(C*t/(1+C*t)) + ## g2 <- function(t) 1/sqrt(1+C*t) + ## Y <- function(t) { + ## Zs + R * (Vds*g1(t) + V2s*g2(t)) + ## } coeffs <- TF_coefficients(R, Ug, Uh, peng, penh, Zs, Zs, Vds, Vds, V2s, V2s) roots <- TF_roots(R, C, coeffs) - if (is.null(roots)) print(c(s,l)) + ## if (is.null(roots)) print(c(s,l)) ## print(do.call(rbind, lapply(roots, function(r) { ## c(r, ## t(Y(r-0.000001)) %*% Q %*% Y(r-0.000001), @@ -242,7 +242,7 @@ TF_roots <- function(R, C, coeffs, tol = 1e-14, tol2 = 1e-8) { # do an additional sign change check? #print(c(I(0), I(100), I(10000), unlist(coeffs)), digits=1) if (I(0) < 0) { - return(NULL) +# return(NULL) return(Intervals(c(0,Inf))) } return(Intervals(c(-Inf,0))) @@ -280,7 +280,7 @@ TF_roots <- function(R, C, coeffs, tol = 1e-14, tol2 = 1e-8) { # Something bad happening, see above #print(c(I(0), I(100), I(10000), unlist(coeffs)), digits=1) if (I(0) < 0) { - return(NULL) +# return(NULL) return(Intervals(c(0,Inf))) } return(Intervals(c(-Inf,0))) From 0ec3b9b841456858719b8ecc336796db3e045961 Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Sun, 8 Nov 2015 20:48:34 -0800 Subject: [PATCH 044/493] polyroot precision was too low for modinds tol, increased tol and found more roots --- selectiveInference/R/funs.quadratic.R | 35 +++++++++++---------------- 1 file changed, 14 insertions(+), 21 deletions(-) diff --git a/selectiveInference/R/funs.quadratic.R b/selectiveInference/R/funs.quadratic.R index 401a652..77f4468 100644 --- a/selectiveInference/R/funs.quadratic.R +++ b/selectiveInference/R/funs.quadratic.R @@ -61,7 +61,7 @@ truncationRegion <- function(obj, ydecomp, type, tol = 1e-15) { coeffs <- TF_coefficients(R, Ug, Uh, peng, penh, Zs, Zs, Vds, Vds, V2s, V2s) roots <- TF_roots(R, C, coeffs) - ## if (is.null(roots)) print(c(s,l)) + if (is.null(roots)) print(c(s,l)) ## print(do.call(rbind, lapply(roots, function(r) { ## c(r, ## t(Y(r-0.000001)) %*% Q %*% Y(r-0.000001), @@ -230,26 +230,23 @@ TF_roots <- function(R, C, coeffs, tol = 1e-14, tol2 = 1e-8) { zcoefs <- c(z0, z1, z2, z3, z4) croots <- polyroot(zcoefs) thetas <- Arg(croots) - modinds <- Mod(croots) <= 1 + tol & Mod(croots) >= 1 - tol + # Can't specify polyroot precision :( + modinds <- Mod(croots) <= 1 + tol2 & Mod(croots) >= 1 - tol2 angleinds <- thetas >=0 & thetas <= pi/2 roots <- unique(thetas[which(modinds & angleinds)]) troots <- tan(roots)^2/C if (length(troots) == 0) { - # Something bad happens here - # sometimes there is a root and it's not caught - # by polyroot or something - # do an additional sign change check? - #print(c(I(0), I(100), I(10000), unlist(coeffs)), digits=1) - if (I(0) < 0) { -# return(NULL) - return(Intervals(c(0,Inf))) - } - return(Intervals(c(-Inf,0))) + # Polyroot didn't catch any roots + # ad-hoc check: + checkpoints <- c(0, tol, tol2, + seq(from = sqrt(tol2), to = 1, length.out = 50), + seq(from = 1.2, to=50, length.out = 20), + 100, 1000, 10000) + } else { + checkpoints <- roots_to_checkpoints(troots) } - - checkpoints <- roots_to_checkpoints(troots) - + signs <- sign(I(checkpoints)) diffs <- c(0, diff(signs)) changeinds <- which(diffs != 0) @@ -277,12 +274,8 @@ TF_roots <- function(R, C, coeffs, tol = 1e-14, tol2 = 1e-8) { return(Intervals(intervals[-1,])) } - # Something bad happening, see above - #print(c(I(0), I(100), I(10000), unlist(coeffs)), digits=1) - if (I(0) < 0) { -# return(NULL) - return(Intervals(c(0,Inf))) - } + # Apparently no roots, always positive + if (I(0) < 0) stop("Infeasible constraint!") return(Intervals(c(-Inf,0))) } From b75bb54466b1b719a383de09851972d56b62c229 Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Sun, 8 Nov 2015 21:10:14 -0800 Subject: [PATCH 045/493] Fixed typo in aicstop code for F test --- forLater/josh/sim.aicstop.R | 2 +- selectiveInference/R/funs.groupfs.R | 7 ++++--- selectiveInference/R/funs.quadratic.R | 4 ++-- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/forLater/josh/sim.aicstop.R b/forLater/josh/sim.aicstop.R index 466f9b4..2c3e517 100644 --- a/forLater/josh/sim.aicstop.R +++ b/forLater/josh/sim.aicstop.R @@ -25,7 +25,7 @@ instance <- function(n, p, G, sparsity, snr, rho, maxsteps, aicstop) { index <- simd$index fit <- groupfs(x, y, index, maxsteps, k = log(n), aicstop = aicstop) - pvals <- groupfsInf(fit, sigma = 1, verbose=T) + pvals <- groupfsInf(fit, verbose=T) return(list(variable = fit$action, pvals = pvals$pv, stopped = attr(fit, "stopped"))) } diff --git a/selectiveInference/R/funs.groupfs.R b/selectiveInference/R/funs.groupfs.R index 4fd4642..d12af1e 100644 --- a/selectiveInference/R/funs.groupfs.R +++ b/selectiveInference/R/funs.groupfs.R @@ -271,6 +271,7 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { supports <- list() if (!is.null(sigma)) { + type <- "TC" if (!is.null(obj$sigma)) { cat(paste("Using specified value", sigma, "for sigma in place of the value", obj$sigma, "used by groupfs()\n")) } @@ -347,7 +348,7 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { } intervallist <- truncationRegion(obj, ydecomp, type) - + # Additional constraints from cross-validation? if (!is.null(obj$cvobj)) { intervallist <- c(intervallist, do.call(c, @@ -442,8 +443,8 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { penh <- prod(unlist(penlist[s:sp])) Vdg <- vdlist[[s]] Vdh <- vdlist[[sp]] - V2g <- vdlist[[s]] - V2h <- vdlist[[sp]] + V2g <- v2list[[s]] + V2h <- v2list[[sp]] Zg <- zlist[[s]] Zh <- zlist[[sp]] coeffs <- TF_coefficients(R, Ug, Uh, peng, penh, Zg, Zh, Vdg, Vdh, V2g, V2h) diff --git a/selectiveInference/R/funs.quadratic.R b/selectiveInference/R/funs.quadratic.R index 77f4468..8d7a19f 100644 --- a/selectiveInference/R/funs.quadratic.R +++ b/selectiveInference/R/funs.quadratic.R @@ -197,7 +197,7 @@ TF_coefficients <- function(R, Ug, Uh, peng, penh, Zg, Zh, Vdg, Vdh, V2g, V2h) { # Numerically solve for roots of TF slice using # hybrid polyroot/uniroot approach -TF_roots <- function(R, C, coeffs, tol = 1e-14, tol2 = 1e-8) { +TF_roots <- function(R, C, coeffs, tol = 1e-8, tol2 = 1e-6) { x11 <- coeffs$x11 x22 <- coeffs$x22 @@ -254,7 +254,7 @@ TF_roots <- function(R, C, coeffs, tol = 1e-14, tol2 = 1e-8) { if (length(changeinds) > 0) { roots <- unlist(lapply(changeinds, function(ind) { - uniroot(I, lower = checkpoints[ind-1], upper = checkpoints[ind], tol = tol2)$root + uniroot(I, lower = checkpoints[ind-1], upper = checkpoints[ind], tol = tol)$root })) partition <- roots_to_partition(roots) From 17b8b6530a01779773e86ee59f51aacdd4ff1f67 Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Mon, 9 Nov 2015 20:43:23 -0800 Subject: [PATCH 046/493] Last commit before a big change in AICstop --- forLater/josh/sim.aicstop.R | 6 +-- selectiveInference/R/funs.groupfs.R | 74 ++++++++++++++------------- selectiveInference/R/funs.quadratic.R | 34 ++++++------ 3 files changed, 58 insertions(+), 56 deletions(-) diff --git a/forLater/josh/sim.aicstop.R b/forLater/josh/sim.aicstop.R index 2c3e517..3d07ce4 100644 --- a/forLater/josh/sim.aicstop.R +++ b/forLater/josh/sim.aicstop.R @@ -6,7 +6,7 @@ source("../../selectiveInference/R/funs.quadratic.R") source("../../selectiveInference/R/funs.common.R") set.seed(1) -niters <- 100 +niters <- 400 n <- 100 p <- 100 G <- 50 @@ -14,7 +14,7 @@ maxsteps <- 15 sparsity <- 5 snr <- 1 sigma <- 1 -rho <- .1 +rho <- 0 aicstop <- 1 instance <- function(n, p, G, sparsity, snr, rho, maxsteps, aicstop) { @@ -42,6 +42,6 @@ save(pvals, vars, stopped, file = paste0( "_p", p, "_sparsity", sparsity, "_snr", snr, - "_known.RData")) + "_F_rho0.RData")) print(time) diff --git a/selectiveInference/R/funs.groupfs.R b/selectiveInference/R/funs.groupfs.R index d12af1e..2a5471e 100644 --- a/selectiveInference/R/funs.groupfs.R +++ b/selectiveInference/R/funs.groupfs.R @@ -67,7 +67,7 @@ groupfs <- function(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE modelrank <- as.numeric(intercept) if (is.null(sigma)) { - aic.begin <- aic.last <- n*(log(2*pi) + log(mean(y.update^2)) + 1 + k * (is.null(sigma) + intercept)) + aic.begin <- aic.last <- n*(log(2*pi) + log(mean(y.update^2)) + 1 + k) * (is.null(sigma) + intercept) # This was a fix } else { aic.begin <- aic.last <- sum(y.update^2)/sigma^2 - n + k * intercept } @@ -145,7 +145,6 @@ groupfs <- function(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE terms[(step+1):maxsteps] <- NULL maxsteps <- step stopped <- TRUE - # add additional projections break } } @@ -293,7 +292,12 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { # Compute p-value for each active group for (j in 1:maxsteps) { i <- obj$action[j] - if (verbose) cat(paste0("Step ", j, "/", attr(obj, "maxsteps"), ": computing P-value for group ", i, "\n")) + if (verbose) { + string <- paste0("Step ", j, "/", attr(obj, "maxsteps"), ": computing P-value for group ", i) + if (!is.null(obj$cvobj)) string <- paste0(string, ", including constraints from cross-validation") + if (attr(obj, "stopped")) string <- paste0(string, ", including constraints from AICstop") + cat(paste(string, "\n")) + } if (type == "TC") { # Form projection onto active set minus i @@ -348,7 +352,7 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { } intervallist <- truncationRegion(obj, ydecomp, type) - + # Additional constraints from cross-validation? if (!is.null(obj$cvobj)) { intervallist <- c(intervallist, do.call(c, @@ -422,39 +426,39 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { } intervallist <- c(intervallist, - do.call(c, lapply(1:aicstop, function(s) { - lapply((s+1):(aicstop+1), function(sp) { - if (type == "TC") { - Ug <- ulist[[s]] - Uh <- ulist[[sp]] - peng <- penlist[[s]] - penh <- prod(unlist(penlist[s:sp])) - etag <- etalist[[s]] - etah <- etalist[[sp]] - Zg <- zlist[[s]] - Zh <- zlist[[sp]] - coeffs <- quadratic_coefficients(obj$sigma, Ug, Uh, peng, penh, etag, etah, Zg, Zh) - quadratic_roots(coeffs$A, coeffs$B, coeffs$C, tol = 1e-15) - } else { - - Ug <- ulist[[s]] - Uh <- ulist[[sp]] - peng <- penlist[[s]] - penh <- prod(unlist(penlist[s:sp])) - Vdg <- vdlist[[s]] - Vdh <- vdlist[[sp]] - V2g <- v2list[[s]] - V2h <- v2list[[sp]] - Zg <- zlist[[s]] - Zh <- zlist[[sp]] - coeffs <- TF_coefficients(R, Ug, Uh, peng, penh, Zg, Zh, Vdg, Vdh, V2g, V2h) - TF_roots(R, C, coeffs) - } - }) - }))) + lapply(1:aicstop, function(s) { + sp <- s+1 + if (type == "TC") { + Ug <- ulist[[s]] + Uh <- ulist[[sp]] + # Check this: known sigma has *additive* pen terms + peng <- penlist[[s]] + penh <- prod(unlist(penlist[s:sp])) + #################################### + etag <- etalist[[s]] + etah <- etalist[[sp]] + Zg <- zlist[[s]] + Zh <- zlist[[sp]] + coeffs <- quadratic_coefficients(obj$sigma, Ug, Uh, peng, penh, etag, etah, Zg, Zh) + quadratic_roots(coeffs$A, coeffs$B, coeffs$C, tol = 1e-15) + } else { + Ug <- ulist[[s]] + Uh <- ulist[[sp]] + peng <- 1 #penlist[[s]] + penh <- penlist[[sp]] + Vdg <- vdlist[[s]] + Vdh <- vdlist[[sp]] + V2g <- v2list[[s]] + V2h <- v2list[[sp]] + Zg <- zlist[[s]] + Zh <- zlist[[sp]] + coeffs <- TF_coefficients(R, Ug, Uh, peng, penh, Zg, Zh, Vdg, Vdh, V2g, V2h) + TF_roots(R, C, coeffs) + } + })) } - # Compute intersection: + # Compute intersection: region <- do.call(interval_union, intervallist) region <- interval_union(region, Intervals(c(-Inf,0))) E <- interval_complement(region, check_valid = FALSE) diff --git a/selectiveInference/R/funs.quadratic.R b/selectiveInference/R/funs.quadratic.R index 8d7a19f..5b59fcb 100644 --- a/selectiveInference/R/funs.quadratic.R +++ b/selectiveInference/R/funs.quadratic.R @@ -16,7 +16,7 @@ truncationRegion <- function(obj, ydecomp, type, tol = 1e-15) { Ug <- obj$maxprojs[[s]] peng <- obj$maxpens[[s]] if (s > 1) { - Zs <- obj$cumprojs[[s-1]] %*% Z # This was a fix! + Zs <- obj$cumprojs[[s-1]] %*% Z if (type == "TC") { etas <- obj$cumprojs[[s-1]] %*% eta } else { @@ -49,7 +49,7 @@ truncationRegion <- function(obj, ydecomp, type, tol = 1e-15) { coeffs <- quadratic_coefficients(obj$sigma, Ug, Uh, peng, penh, etas, etas, Zs, Zs) quadratic_roots(coeffs$A, coeffs$B, coeffs$C, tol) } else { - + # Debugging ## Q <- peng * (diag(rep(1,n)) - Ug %*% t(Ug)) - penh * (diag(rep(1,n)) - Uh %*% t(Uh)) ## g1 <- function(t) sqrt(C*t/(1+C*t)) @@ -57,7 +57,7 @@ truncationRegion <- function(obj, ydecomp, type, tol = 1e-15) { ## Y <- function(t) { ## Zs + R * (Vds*g1(t) + V2s*g2(t)) ## } - + coeffs <- TF_coefficients(R, Ug, Uh, peng, penh, Zs, Zs, Vds, Vds, V2s, V2s) roots <- TF_roots(R, C, coeffs) @@ -68,7 +68,7 @@ truncationRegion <- function(obj, ydecomp, type, tol = 1e-15) { ## t(Y(r)) %*% Q %*% Y(r), ## t(Y(r+0.000001)) %*% Q %*% Y(r+0.000001)) ## }))) - + return(roots) } }) @@ -103,7 +103,6 @@ quadratic_roots <- function(A, B, C, tol) { disc <- B^2 - 4*A*C b2a <- -B/(2*A) - if (disc > tol) { # Real roots pm <- sqrt(disc)/(2*A) @@ -160,7 +159,6 @@ quadratic_roots <- function(A, B, C, tol) { } } - # Helper functions for TF roots roots_to_checkpoints <- function(roots) { checkpoints <- unique(sort(c(0, roots))) @@ -174,22 +172,22 @@ roots_to_partition <- function(roots) { # Efficiently compute coefficients of one-dimensional TF slice function TF_coefficients <- function(R, Ug, Uh, peng, penh, Zg, Zh, Vdg, Vdh, V2g, V2h) { - UhZ <- t(Uh) %*% Zh - UgZ <- t(Ug) %*% Zg - UhVd <- t(Uh) %*% Vdh - UgVd <- t(Ug) %*% Vdg - UhV2 <- t(Uh) %*% V2h - UgV2 <- t(Ug) %*% V2g - VdZh <- sum(Vdh*Zh) - VdZg <- sum(Vdg*Zg) - V2Zh <- sum(V2h*Zh) - V2Zg <- sum(V2g*Zg) + UhZ <- t(Uh) %*% Zh + UgZ <- t(Ug) %*% Zg + UhVd <- t(Uh) %*% Vdh + UgVd <- t(Ug) %*% Vdg + UhV2 <- t(Uh) %*% V2h + UgV2 <- t(Ug) %*% V2g + VdZh <- sum(Vdh*Zh) + VdZg <- sum(Vdg*Zg) + V2Zh <- sum(V2h*Zh) + V2Zg <- sum(V2g*Zg) x0 <- penh * (sum(Zh^2) - sum(UhZ^2)) - peng * (sum(Zg^2) - sum(UgZ^2)) x1 <- 2*R*(penh * (VdZh - sum(UhZ*UhVd)) - peng * (VdZg - sum(UgZ*UgVd))) x2 <- 2*R*(penh * (V2Zh - sum(UhZ*UhV2)) - peng * (V2Zg - sum(UgZ*UgV2))) x12 <- 2*R^2*(penh * (sum(Vdh*V2h) - sum(UhVd*UhV2)) - peng * (sum(Vdg*V2g) - sum(UgVd*UgV2))) - x11 <- R^2*(penh * (sum(Vdh^2) - sum(UhVd^2)) - peng * (sum(Vdg^2) - sum(UgVd^2))) + x11 <- R^2*(penh * (sum(Vdh^2) - sum(UhVd^2)) - peng * (sum(Vdg^2) - sum(UgVd^2))) x22 <- R^2*(penh * (sum(V2h^2) - sum(UhV2^2)) - peng * (sum(V2g^2) - sum(UgV2^2))) return(list(x11=x11, x22=x22, x12=x12, x1=x1, x2=x2, x0=x0)) @@ -246,7 +244,7 @@ TF_roots <- function(R, C, coeffs, tol = 1e-8, tol2 = 1e-6) { } else { checkpoints <- roots_to_checkpoints(troots) } - + signs <- sign(I(checkpoints)) diffs <- c(0, diff(signs)) changeinds <- which(diffs != 0) From 524720c861bce8aece3ace0483780e4d6236be5d Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Mon, 9 Nov 2015 21:24:49 -0800 Subject: [PATCH 047/493] Added constraints for all AIC comparisons --- forLater/josh/sim.aicstop.R | 8 +- selectiveInference/R/funs.groupfs.R | 119 +++++++++++++++------------- 2 files changed, 68 insertions(+), 59 deletions(-) diff --git a/forLater/josh/sim.aicstop.R b/forLater/josh/sim.aicstop.R index 3d07ce4..9f16945 100644 --- a/forLater/josh/sim.aicstop.R +++ b/forLater/josh/sim.aicstop.R @@ -6,15 +6,15 @@ source("../../selectiveInference/R/funs.quadratic.R") source("../../selectiveInference/R/funs.common.R") set.seed(1) -niters <- 400 +niters <- 200 n <- 100 p <- 100 G <- 50 maxsteps <- 15 sparsity <- 5 -snr <- 1 +snr <- 2 sigma <- 1 -rho <- 0 +rho <- 0.1 aicstop <- 1 instance <- function(n, p, G, sparsity, snr, rho, maxsteps, aicstop) { @@ -42,6 +42,6 @@ save(pvals, vars, stopped, file = paste0( "_p", p, "_sparsity", sparsity, "_snr", snr, - "_F_rho0.RData")) + "_F_rhopt1.RData")) print(time) diff --git a/selectiveInference/R/funs.groupfs.R b/selectiveInference/R/funs.groupfs.R index 2a5471e..7cb8396 100644 --- a/selectiveInference/R/funs.groupfs.R +++ b/selectiveInference/R/funs.groupfs.R @@ -67,7 +67,7 @@ groupfs <- function(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE modelrank <- as.numeric(intercept) if (is.null(sigma)) { - aic.begin <- aic.last <- n*(log(2*pi) + log(mean(y.update^2)) + 1 + k) * (is.null(sigma) + intercept) # This was a fix + aic.begin <- aic.last <- n*(log(2*pi) + log(mean(y.update^2)) + 1 + k) * (is.null(sigma) + intercept) } else { aic.begin <- aic.last <- sum(y.update^2)/sigma^2 - n + k * intercept } @@ -289,6 +289,7 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { } } + # Compute p-value for each active group for (j in 1:maxsteps) { i <- obj$action[j] @@ -389,73 +390,81 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { })) } - # Additional constraints from AIC stopping? + # Additional constraints from AIC stopping if (attr(obj, "stopped")) { - + aicintervals <- vector("list", maxsteps-1) aicstop <- attr(obj, "aicstop") - ulist <- penlist <- zlist <- vector("list", aicstop+1) - + AICs <- obj$AIC + + # No stopping at 0 steps? + ## if (is.null(sigma)) { + ## aic.begin <- aic.last <- n*(log(2*pi) + log(mean(obj$y^2)) + 1 + k) * (1 + obj$intercept) + ## } else { + ## aic.begin <- aic.last <- sum(obj$y^2)/sigma^2 - n + k * obj$intercept + ## } + ## AICs <- c(aic.begin, obj$AIC) + + ulist <- obj$maxprojs + penlist <- obj$maxpens + zlist <- vector("list", aicstop+1) + zlist[[1]] <- Z if (type == "TC") { etalist <- vector("list", aicstop+1) + etalist[[1]] <- eta } else { vdlist <- v2list <- vector("list", aicstop+1) + vdlist[[1]] <- Vdelta + v2list[[1]] <- V2 } - - for (s in seq(aicstop+1)) { - stepind <- maxsteps - (aicstop+1) + s - if (stepind > 1) { - cproj <- obj$cumprojs[[stepind-1]] - if (type == "TC") { - etalist[[s]] <- cproj %*% eta - } else { - v2list[[s]] <- cproj %*% V2 - vdlist[[s]] <- cproj %*% Vdelta - } - zlist[[s]] <- cproj %*% Z + for (step in 2:maxsteps) { + cproj <- obj$cumprojs[[step-1]] + zlist[[step]] <- cproj %*% Z + if (type == "TC") { + etalist[[step]] <- cproj %*% eta } else { - if (type == "TC") { - etalist[[s]] <- eta - } else { - v2list[[s]] <- V2 - vdlist[[s]] <- Vdelta - } - zlist[[s]] <- Z + vdlist[[step]] <- cproj %*% Vdelta + v2list[[step]] <- cproj %*% V2 } - ulist[[s]] <- obj$maxprojs[[stepind]] - penlist[[s]] <- obj$maxpens[[stepind]] } - intervallist <- c(intervallist, - lapply(1:aicstop, function(s) { - sp <- s+1 - if (type == "TC") { - Ug <- ulist[[s]] - Uh <- ulist[[sp]] + for (step in 1:(maxsteps-1)) { + # Compare AIC at s-1 to AIC at s + # sp indexes step with larger AIC + if (AICs[step] >= AICs[step+1]) { + sp <- step + s <- step+1 + } else { + sp <- step+1 + s <- step + } + + if (type == "TC") { + Ug <- ulist[[s]] + Uh <- ulist[[sp]] # Check this: known sigma has *additive* pen terms - peng <- penlist[[s]] - penh <- prod(unlist(penlist[s:sp])) + peng <- 1 + penh <- penlist[sp] #################################### - etag <- etalist[[s]] - etah <- etalist[[sp]] - Zg <- zlist[[s]] - Zh <- zlist[[sp]] - coeffs <- quadratic_coefficients(obj$sigma, Ug, Uh, peng, penh, etag, etah, Zg, Zh) - quadratic_roots(coeffs$A, coeffs$B, coeffs$C, tol = 1e-15) - } else { - Ug <- ulist[[s]] - Uh <- ulist[[sp]] - peng <- 1 #penlist[[s]] - penh <- penlist[[sp]] - Vdg <- vdlist[[s]] - Vdh <- vdlist[[sp]] - V2g <- v2list[[s]] - V2h <- v2list[[sp]] - Zg <- zlist[[s]] - Zh <- zlist[[sp]] - coeffs <- TF_coefficients(R, Ug, Uh, peng, penh, Zg, Zh, Vdg, Vdh, V2g, V2h) - TF_roots(R, C, coeffs) - } - })) + coeffs <- quadratic_coefficients(obj$sigma, Ug, Uh, peng, penh, etag, etah, Zg, Zh) + intstep <- quadratic_roots(coeffs$A, coeffs$B, coeffs$C, tol = 1e-15) + } else { + Ug <- ulist[[s]] + Uh <- ulist[[sp]] + peng <- 1 #penlist[[s]] + penh <- penlist[[sp]] + Vdg <- vdlist[[s]] + Vdh <- vdlist[[sp]] + V2g <- v2list[[s]] + V2h <- v2list[[sp]] + Zg <- zlist[[s]] + Zh <- zlist[[sp]] + coeffs <- TF_coefficients(R, Ug, Uh, peng, penh, Zg, Zh, Vdg, Vdh, V2g, V2h) + intstep <- TF_roots(R, C, coeffs) + } + + aicintervals[[step]] <- intstep + } + intervallist <- c(intervallist, aicintervals) } # Compute intersection: From 4601bf85d7f88e4a16013e4174ca152dce1a09e6 Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Tue, 10 Nov 2015 12:05:49 -0800 Subject: [PATCH 048/493] Scoping problem with sigma in AIC simulation --- forLater/josh/sim.aicstop.R | 6 ++-- selectiveInference/R/funs.groupfs.R | 56 ++++++++++++++--------------- 2 files changed, 30 insertions(+), 32 deletions(-) diff --git a/forLater/josh/sim.aicstop.R b/forLater/josh/sim.aicstop.R index 9f16945..67d7720 100644 --- a/forLater/josh/sim.aicstop.R +++ b/forLater/josh/sim.aicstop.R @@ -13,18 +13,16 @@ G <- 50 maxsteps <- 15 sparsity <- 5 snr <- 2 -sigma <- 1 rho <- 0.1 aicstop <- 1 instance <- function(n, p, G, sparsity, snr, rho, maxsteps, aicstop) { - - simd <- randomGaussianFixedP(n, p, G, sparsity, snr, sigma, rho) + simd <- randomGaussianFixedP(n, p, G, sparsity, snr, sigma = 1, rho) x <- simd$x y <- simd$y index <- simd$index - fit <- groupfs(x, y, index, maxsteps, k = log(n), aicstop = aicstop) + fit <- groupfs(x, y, index, maxsteps, k = log(n), aicstop = aicstop, verbose=T) pvals <- groupfsInf(fit, verbose=T) return(list(variable = fit$action, pvals = pvals$pv, stopped = attr(fit, "stopped"))) } diff --git a/selectiveInference/R/funs.groupfs.R b/selectiveInference/R/funs.groupfs.R index 7cb8396..1fecb69 100644 --- a/selectiveInference/R/funs.groupfs.R +++ b/selectiveInference/R/funs.groupfs.R @@ -67,9 +67,10 @@ groupfs <- function(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE modelrank <- as.numeric(intercept) if (is.null(sigma)) { - aic.begin <- aic.last <- n*(log(2*pi) + log(mean(y.update^2)) + 1 + k) * (is.null(sigma) + intercept) + modelrank <- modelrank + 1 + aic.begin <- aic.last <- n*(log(2*pi) + log(mean(y.update^2)) + 1) + k * modelrank # fixed... again } else { - aic.begin <- aic.last <- sum(y.update^2)/sigma^2 - n + k * intercept + aic.begin <- aic.last <- sum(y.update^2)/sigma^2 - n + k * modelrank } if (verbose) print(paste0("Start: AIC=", round(aic.begin, 3)), quote = FALSE) @@ -392,43 +393,42 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { # Additional constraints from AIC stopping if (attr(obj, "stopped")) { - aicintervals <- vector("list", maxsteps-1) + aicintervals <- vector("list", maxsteps) aicstop <- attr(obj, "aicstop") - AICs <- obj$AIC - - # No stopping at 0 steps? - ## if (is.null(sigma)) { - ## aic.begin <- aic.last <- n*(log(2*pi) + log(mean(obj$y^2)) + 1 + k) * (1 + obj$intercept) - ## } else { - ## aic.begin <- aic.last <- sum(obj$y^2)/sigma^2 - n + k * obj$intercept - ## } - ## AICs <- c(aic.begin, obj$AIC) - - ulist <- obj$maxprojs - penlist <- obj$maxpens - zlist <- vector("list", aicstop+1) - zlist[[1]] <- Z if (type == "TC") { - etalist <- vector("list", aicstop+1) - etalist[[1]] <- eta + pen0 <- k * obj$intercept + aic.begin <- aic.last <- sum(obj$y^2)/sigma^2 - n + k * obj$intercept } else { - vdlist <- v2list <- vector("list", aicstop+1) - vdlist[[1]] <- Vdelta - v2list[[1]] <- V2 + pen0 <- exp(k * (1+obj$intercept)/n) + aic.begin <- aic.last <- n*(log(2*pi) + log(mean(obj$y^2)) + 1) + k * (1 + obj$intercept) + } + AICs <- c(aic.begin, obj$AIC) + + ulist <- c(list(matrix(0, n, 1)), obj$maxprojs) + penlist <- c(pen0, obj$maxpens) + zlist <- vector("list", maxsteps+1) + zlist[[1]] <- zlist[[2]] <- Z + if (type == "TC") { + etalist <- vector("list", maxsteps+1) + etalist[[1]] <- etalist[[2]] <- eta + } else { + vdlist <- v2list <- vector("list", maxsteps+1) + vdlist[[1]] <- vdlist[[2]] <- Vdelta + v2list[[1]] <- v2list[[2]] <- V2 } for (step in 2:maxsteps) { cproj <- obj$cumprojs[[step-1]] - zlist[[step]] <- cproj %*% Z + zlist[[step+1]] <- cproj %*% Z if (type == "TC") { - etalist[[step]] <- cproj %*% eta + etalist[[step+1]] <- cproj %*% eta } else { - vdlist[[step]] <- cproj %*% Vdelta - v2list[[step]] <- cproj %*% V2 + vdlist[[step+1]] <- cproj %*% Vdelta + v2list[[step+1]] <- cproj %*% V2 } } - for (step in 1:(maxsteps-1)) { - # Compare AIC at s-1 to AIC at s + for (step in 1:maxsteps) { + # Compare AIC at s+1 to AIC at s # sp indexes step with larger AIC if (AICs[step] >= AICs[step+1]) { sp <- step From 202acbcef75a3bd271113a4c0639d4376fc9fdd1 Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Tue, 10 Nov 2015 15:47:52 -0800 Subject: [PATCH 049/493] Still debugging F with AICstop --- forLater/josh/funs.sims.R | 2 +- forLater/josh/sim.aicstop.R | 11 +++++------ selectiveInference/R/funs.groupfs.R | 18 +++++++++++------- selectiveInference/R/funs.quadratic.R | 2 ++ 4 files changed, 19 insertions(+), 14 deletions(-) diff --git a/forLater/josh/funs.sims.R b/forLater/josh/funs.sims.R index f07fa55..53af73f 100644 --- a/forLater/josh/funs.sims.R +++ b/forLater/josh/funs.sims.R @@ -38,7 +38,7 @@ randomGaussianFixedP <- function(n, p, G = p, sparsity = 0, snr = 0, sigma = 1, if (sparsity > 0 && snr > 0) { for (j in 1:sparsity) { inds <- which(index == j) - beta[inds] <- sqrt(2*log(G)) * sample(c(-1,1), length(inds), replace=T) * snr/sqrt(n*length(inds)) + beta[inds] <- snr * sqrt(2*log(G)/(n*length(inds))) * sample(c(-1,1), length(inds), replace=T) } } y <- x %*% beta + sigma * rnorm(n) diff --git a/forLater/josh/sim.aicstop.R b/forLater/josh/sim.aicstop.R index 67d7720..0fd2d26 100644 --- a/forLater/josh/sim.aicstop.R +++ b/forLater/josh/sim.aicstop.R @@ -10,10 +10,10 @@ niters <- 200 n <- 100 p <- 100 G <- 50 -maxsteps <- 15 -sparsity <- 5 +maxsteps <- 10 +sparsity <- 3 snr <- 2 -rho <- 0.1 +rho <- 0 aicstop <- 1 instance <- function(n, p, G, sparsity, snr, rho, maxsteps, aicstop) { @@ -21,8 +21,7 @@ instance <- function(n, p, G, sparsity, snr, rho, maxsteps, aicstop) { x <- simd$x y <- simd$y index <- simd$index - - fit <- groupfs(x, y, index, maxsteps, k = log(n), aicstop = aicstop, verbose=T) + fit <- groupfs(x, y, index, maxsteps, k = log(n), aicstop = aicstop) pvals <- groupfsInf(fit, verbose=T) return(list(variable = fit$action, pvals = pvals$pv, stopped = attr(fit, "stopped"))) } @@ -40,6 +39,6 @@ save(pvals, vars, stopped, file = paste0( "_p", p, "_sparsity", sparsity, "_snr", snr, - "_F_rhopt1.RData")) + "_F_rho0.RData")) print(time) diff --git a/selectiveInference/R/funs.groupfs.R b/selectiveInference/R/funs.groupfs.R index 1fecb69..521ed57 100644 --- a/selectiveInference/R/funs.groupfs.R +++ b/selectiveInference/R/funs.groupfs.R @@ -278,6 +278,10 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { } else { if (is.null(obj$sigma)) { type <- "TF" + Pf <- svdu_thresh(obj$x[,which(obj$index %in% obj$action), drop = FALSE]) + dffull <- ncol(Pf) + df2 <- n - dffull - obj$intercept - 1 + Pfull <- Pf %*% t(Pf) ## if (n >= 2*p) { ## sigma <- sqrt(sum(lsfit(obj$x, obj$y, intercept = obj$intercept)$res^2)/(n-p-obj$intercept)) ## } else { @@ -290,7 +294,6 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { } } - # Compute p-value for each active group for (j in 1:maxsteps) { i <- obj$action[j] @@ -325,20 +328,19 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { } else { - Pfull <- svdu_thresh(obj$x[,which(obj$index %in% obj$action), drop = FALSE]) if (length(obj$action) > 1) { minus_i <- setdiff(obj$action, i) Psub <- svdu_thresh(obj$x[,which(obj$index %in% minus_i), drop = FALSE]) Z <- Psub %*% t(Psub) %*% obj$y - df1 <- ncol(Pfull) - ncol(Psub) + df1 <- dffull - ncol(Psub) } else { Z <- 0 - df1 <- ncol(Pfull) + df1 <- dffull + obj$intercept + 1 } - df2 <- n - ncol(Pfull) + C <- df1/df2 R1 <- obj$y - Z - R2 <- obj$y - Pfull %*% t(Pfull) %*% obj$y + R2 <- obj$y - Pfull %*% obj$y R1sq <- sum(R1^2) R2sq <- sum(R2^2) R <- sqrt(R1sq) @@ -500,6 +502,7 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { out$sigma <- sigma } else { out$TF <- Tstats + out$df2 <- df2 } out$df <- dfs out$support <- supports @@ -604,7 +607,7 @@ TF_surv <- function(TF, df1, df2, E) { value <- numer/denom # Force p-value to lie in the [0,1] interval # in case of numerical issues - value <- max(0, min(1, value)) + #value <- max(0, min(1, value)) value } @@ -623,6 +626,7 @@ TF_interval <- function(lower, upper, df1, df2) { } num_int_F <- function(a, b, df1, df2, nsamp = 10000) { + print("numerical!") grid <- seq(from=a, to=b, length.out=nsamp) integrand <- df(grid, df1, df2) return((b-a)*mean(integrand)) diff --git a/selectiveInference/R/funs.quadratic.R b/selectiveInference/R/funs.quadratic.R index 5b59fcb..0e8ebcf 100644 --- a/selectiveInference/R/funs.quadratic.R +++ b/selectiveInference/R/funs.quadratic.R @@ -100,6 +100,8 @@ quadratic_coefficients <- function(sigma, Ug, Uh, peng, penh, etag, etah, Zg, Zh } quadratic_roots <- function(A, B, C, tol) { + + print("CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC") disc <- B^2 - 4*A*C b2a <- -B/(2*A) From 60fd5efdfc8a6f6bc34d540a021c1b68e32a5d83 Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Thu, 12 Nov 2015 16:13:02 -0800 Subject: [PATCH 050/493] cproj index was off, still no cigar --- forLater/josh/sim.aicstop.R | 4 ++-- selectiveInference/R/funs.groupfs.R | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/forLater/josh/sim.aicstop.R b/forLater/josh/sim.aicstop.R index 0fd2d26..68934ac 100644 --- a/forLater/josh/sim.aicstop.R +++ b/forLater/josh/sim.aicstop.R @@ -13,7 +13,7 @@ G <- 50 maxsteps <- 10 sparsity <- 3 snr <- 2 -rho <- 0 +rho <- 0.1 aicstop <- 1 instance <- function(n, p, G, sparsity, snr, rho, maxsteps, aicstop) { @@ -39,6 +39,6 @@ save(pvals, vars, stopped, file = paste0( "_p", p, "_sparsity", sparsity, "_snr", snr, - "_F_rho0.RData")) + "_F_rhopt1.RData")) print(time) diff --git a/selectiveInference/R/funs.groupfs.R b/selectiveInference/R/funs.groupfs.R index 521ed57..c81645b 100644 --- a/selectiveInference/R/funs.groupfs.R +++ b/selectiveInference/R/funs.groupfs.R @@ -419,7 +419,7 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { v2list[[1]] <- v2list[[2]] <- V2 } for (step in 2:maxsteps) { - cproj <- obj$cumprojs[[step-1]] + cproj <- obj$cumprojs[[step]] zlist[[step+1]] <- cproj %*% Z if (type == "TC") { etalist[[step+1]] <- cproj %*% eta From 550baf4e3fe2eb43b1bbed5337ee855b2907b782 Mon Sep 17 00:00:00 2001 From: Ryan Tibshirani Date: Mon, 23 Nov 2015 21:47:11 -0500 Subject: [PATCH 051/493] Fixed very silly bug in fixedLassoInf, that pops up when you don't standardize X manually. --- selectiveInference/R/funs.fixed.R | 2 +- tests/test.fixed.R | 34 ++++++++++++++++++++++++++++--- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index d376090..b7f20fd 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -103,7 +103,7 @@ fixedLassoInf <- function(x, y, beta, lambda, intercept=TRUE, sigma=NULL, alpha= sign[j] = sign(sum(vj*y)) vj = sign[j] * vj a = poly.pval(y,G,u,vj,sigma,bits) - pv[j] = a$pv * mj # Unstandardize (mult by norm of vj) + pv[j] = a$pv vlo[j] = a$vlo * mj # Unstandardize (mult by norm of vj) vup[j] = a$vup * mj # Unstandardize (mult by norm of vj) vmat[j,] = vj * mj # Unstandardize (mult by norm of vj) diff --git a/tests/test.fixed.R b/tests/test.fixed.R index 624fb65..553fe35 100644 --- a/tests/test.fixed.R +++ b/tests/test.fixed.R @@ -1,10 +1,38 @@ -#library(selectiveInference) -library(selectiveInference,lib.loc="/Users/tibs/dropbox/git/R/mylib") +library(selectiveInference) +#library(selectiveInference,lib.loc="/Users/tibs/dropbox/git/R/mylib") #options(error=dump.frames) #attach("/Users/tibs/dropbox/PAPERS/lasso/lasso3/.RData") -c +##### +n=50 +p=10 +sigma=.7 +beta=c(3,2,0,0,rep(0,p-4)) +set.seed(43) +nsim = 100 +pvals <- matrix(NA, nrow=nsim, ncol=p) +x = matrix(rnorm(n*p),n,p) +x = scale(x,T,T)/sqrt(n-1) +mu = x%*%beta +for (i in 1:nsim) { +y=mu+sigma*rnorm(n) +#y=y-mean(y) +# first run glmnet +gfit=glmnet(x,y,intercept=F,standardize=F,thresh=1e-8) +lambda = 1 +#extract coef for a given lambda; Note the 1/n factor! +beta = coef(gfit, s=lambda/n, exact=TRUE)[-1] +# compute fixed lambda p-values and selection intervals +aa = fixedLassoInf(x,y,beta,lambda,intercept=F,sigma=sigma) +pvals[i, which(beta != 0)] <- aa$pv +} +nulls = which(!is.na(pvals[,1]) & !is.na(pvals[,2])) +np = pvals[nulls,-(1:2)] +mean(np[!is.na(np)] < 0.1) + +##### + a=lar(x,y) aa=larInf(a) From 96113963e891ead82a131fc42c344488fb7a1f39 Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Wed, 25 Nov 2015 12:10:38 -0800 Subject: [PATCH 052/493] Trying to fix aicstop --- forLater/josh/sim.aicstop.R | 3 +- selectiveInference/R/funs.groupfs.R | 43 ++++++++++++++++++++--------- 2 files changed, 32 insertions(+), 14 deletions(-) diff --git a/forLater/josh/sim.aicstop.R b/forLater/josh/sim.aicstop.R index 68934ac..e55ce92 100644 --- a/forLater/josh/sim.aicstop.R +++ b/forLater/josh/sim.aicstop.R @@ -20,8 +20,9 @@ instance <- function(n, p, G, sparsity, snr, rho, maxsteps, aicstop) { simd <- randomGaussianFixedP(n, p, G, sparsity, snr, sigma = 1, rho) x <- simd$x y <- simd$y + y <- y - mean(y) index <- simd$index - fit <- groupfs(x, y, index, maxsteps, k = log(n), aicstop = aicstop) + fit <- groupfs(x, y, index, maxsteps, intercept = F, k = log(n), aicstop = aicstop, verbose = T) pvals <- groupfsInf(fit, verbose=T) return(list(variable = fit$action, pvals = pvals$pv, stopped = attr(fit, "stopped"))) } diff --git a/selectiveInference/R/funs.groupfs.R b/selectiveInference/R/funs.groupfs.R index c81645b..b26f985 100644 --- a/selectiveInference/R/funs.groupfs.R +++ b/selectiveInference/R/funs.groupfs.R @@ -68,7 +68,7 @@ groupfs <- function(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE modelrank <- as.numeric(intercept) if (is.null(sigma)) { modelrank <- modelrank + 1 - aic.begin <- aic.last <- n*(log(2*pi) + log(mean(y.update^2)) + 1) + k * modelrank # fixed... again + aic.begin <- aic.last <- n*(log(2*pi) + log(mean(y.update^2))) + k * (n + modelrank) } else { aic.begin <- aic.last <- sum(y.update^2)/sigma^2 - n + k * modelrank } @@ -101,7 +101,7 @@ groupfs <- function(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE # Compute AIC if (is.null(sigma)) { - added$AIC <- n * log(added$maxterm/n) - k * added$df + n + n*log(2*pi) + k * modelrank + added$AIC <- n * log(added$maxterm/n) - k * added$df + n*log(2*pi) + k * (n + modelrank) } else { added$AIC <- sum(y.update^2)/sigma^2 - n + k * modelrank } @@ -238,8 +238,8 @@ add1.groupfs <- function(xr, yr, index, labels, inactive, k, sigma = NULL) { #' Computes p-values for each group of variables in a model fitted by \code{\link{groupfs}}. These p-values adjust for selection by truncating the usual \eqn{\chi^2} statistics to the regions implied by the model selection event. Details are provided in a forthcoming work. #' #' @param obj Object returned by \code{\link{groupfs}} function -#' @param sigma Estimate of error standard deviation. If NULL (default), this is estimated using the mean squared residual of the full least squares fit when n >= 2p, and the mean squared residual of the selected model when n < 2p. In the latter case, the user should use \code{\link{estimateSigma}} function for a more accurate estimate. -#' @param verbose Print out progress along the way? Default is FALSE. +#' @param sigma Estimate of error standard deviation. If NULL (default), p-values will be computed from a selective F test. +#' @param verbose Print out progress along the way? Default is TRUE. #' @return An object of class "groupfsInf" containing selective p-values for the fitted model \code{obj}. For comparison with \code{\link{fsInf}}, note that the option \code{type = "active"} is not available. #' #' \describe{ @@ -250,7 +250,7 @@ add1.groupfs <- function(xr, yr, index, labels, inactive, k, sigma = NULL) { #' \item{df}{Rank of group of variables when it was added to the model.} #' \item{support}{List of intervals defining the truncation region of the truncated chi.} #' } -groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { +groupfsInf <- function(obj, sigma = NULL, verbose = TRUE) { if (!is.null(obj$cvobj) && attr(obj, "stopped")) { stop("Cross-validation and early stopping cannot be used simultaneously.") @@ -402,7 +402,7 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { aic.begin <- aic.last <- sum(obj$y^2)/sigma^2 - n + k * obj$intercept } else { pen0 <- exp(k * (1+obj$intercept)/n) - aic.begin <- aic.last <- n*(log(2*pi) + log(mean(obj$y^2)) + 1) + k * (1 + obj$intercept) + aic.begin <- n*(log(2*pi) + log(mean(obj$y^2))) + k * (1 + n + obj$intercept) } AICs <- c(aic.begin, obj$AIC) @@ -418,7 +418,7 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { vdlist[[1]] <- vdlist[[2]] <- Vdelta v2list[[1]] <- v2list[[2]] <- V2 } - for (step in 2:maxsteps) { + for (step in 1:maxsteps) { cproj <- obj$cumprojs[[step]] zlist[[step+1]] <- cproj %*% Z if (type == "TC") { @@ -435,31 +435,48 @@ groupfsInf <- function(obj, sigma = NULL, verbose = FALSE) { if (AICs[step] >= AICs[step+1]) { sp <- step s <- step+1 + peng <- 1 + penh <- penlist[[s]] } else { sp <- step+1 s <- step + peng <- penlist[[sp]] + penh <- 1 } if (type == "TC") { Ug <- ulist[[s]] Uh <- ulist[[sp]] - # Check this: known sigma has *additive* pen terms - peng <- 1 - penh <- penlist[sp] - #################################### + # Fix this: known sigma has *additive* pen terms + #################################### coeffs <- quadratic_coefficients(obj$sigma, Ug, Uh, peng, penh, etag, etah, Zg, Zh) intstep <- quadratic_roots(coeffs$A, coeffs$B, coeffs$C, tol = 1e-15) } else { + # g indexes the lower AIC Ug <- ulist[[s]] Uh <- ulist[[sp]] - peng <- 1 #penlist[[s]] - penh <- penlist[[sp]] Vdg <- vdlist[[s]] Vdh <- vdlist[[sp]] V2g <- v2list[[s]] V2h <- v2list[[sp]] Zg <- zlist[[s]] Zh <- zlist[[sp]] + + g1 <- function(t) sqrt(C*t/(1+C*t)) + g2 <- function(t) 1/sqrt(1+C*t) + Yg <- Zg + R*(g1(TF)*Vdg + g2(TF)*V2g) + UYg <- t(Ug) %*% Yg + sse <- (sum(Yg^2) - sum(UYg^2)) + AICg <- n*log(sse/n) + n*log(2*pi) + k * (1 + n + 5) + Yh <- Zh + R*(g1(TF)*Vdh + g2(TF)*V2h) + UYh <- t(Uh) %*% Yh + sse <- (sum(Yh^2) - sum(UYh^2)) + AICh <- n*log(sse/n) + n*log(2*pi) + k * (1 + n + 6) + # This does reproduce the correct AIC values + # AIC(g) < AIC(h) + # <-> log(sseG) + (k/n) * ncol(Ug) < log(sseH) + + # Infeasible constraint if penh = 1, why? coeffs <- TF_coefficients(R, Ug, Uh, peng, penh, Zg, Zh, Vdg, Vdh, V2g, V2h) intstep <- TF_roots(R, C, coeffs) } From 787b6bb5e5eaf28233186b2ea93b934aa1ec4ed4 Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Wed, 25 Nov 2015 12:12:31 -0800 Subject: [PATCH 053/493] Simulation for fixed maxsteps --- forLater/josh/sim.groupfs.R | 42 +++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 forLater/josh/sim.groupfs.R diff --git a/forLater/josh/sim.groupfs.R b/forLater/josh/sim.groupfs.R new file mode 100644 index 0000000..b0e891f --- /dev/null +++ b/forLater/josh/sim.groupfs.R @@ -0,0 +1,42 @@ +library(intervals) +source("funs.sims.R") +source("selectiveInference/R/cv.R") +source("../../selectiveInference/R/funs.groupfs.R") +source("../../selectiveInference/R/funs.quadratic.R") +source("../../selectiveInference/R/funs.common.R") + +set.seed(1) +niters <- 200 +n <- 100 +p <- 400 +G <- 200 +maxsteps <- 5 +sparsity <- 3 +snr <- 2 +rho <- .1 + +instance <- function(n, p, G, sparsity, snr, rho, maxsteps) { + simd <- randomGaussianFixedP(n, p, G, sparsity, snr, sigma = 1, rho) + x <- simd$x + y <- simd$y + index <- simd$index + fit <- groupfs(x, y, index, maxsteps, k = log(n)) + pvals <- groupfsInf(fit, verbose=T) + return(list(variable = fit$action, pvals = pvals$pv)) +} + +time <- system.time({ + output <- replicate(niters, instance(n, p, G, sparsity, snr, rho, maxsteps)) +}) + +pvals <- do.call(c, list(output[2,])) +vars <- do.call(c, list(output[1,])) + +save(pvals, vars, file = paste0( + "results_n", n, + "_p", p, + "_sparsity", sparsity, + "_snr", snr, + "_F.RData")) + +print(time) From 99a3fc1f52ee0f0010243885417f160e1e5205b4 Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Wed, 25 Nov 2015 12:29:56 -0800 Subject: [PATCH 054/493] Setting up simulations for some final tests --- forLater/josh/sim.aicstop.R | 32 +++++++++++++++++---------- forLater/josh/sim.groupfs.R | 31 +++++++++++++++++--------- selectiveInference/R/funs.quadratic.R | 2 +- 3 files changed, 41 insertions(+), 24 deletions(-) diff --git a/forLater/josh/sim.aicstop.R b/forLater/josh/sim.aicstop.R index e55ce92..22f6665 100644 --- a/forLater/josh/sim.aicstop.R +++ b/forLater/josh/sim.aicstop.R @@ -1,28 +1,32 @@ library(intervals) source("funs.sims.R") -source("selectiveInference/R/cv.R") +#source("selectiveInference/R/cv.R") source("../../selectiveInference/R/funs.groupfs.R") source("../../selectiveInference/R/funs.quadratic.R") source("../../selectiveInference/R/funs.common.R") set.seed(1) -niters <- 200 -n <- 100 -p <- 100 -G <- 50 +known <- FALSE +niters <- 300 +n <- 50 +p <- 150 +G <- 75 maxsteps <- 10 -sparsity <- 3 +sparsity <- 4 snr <- 2 -rho <- 0.1 +rho <- 0 aicstop <- 1 instance <- function(n, p, G, sparsity, snr, rho, maxsteps, aicstop) { simd <- randomGaussianFixedP(n, p, G, sparsity, snr, sigma = 1, rho) x <- simd$x y <- simd$y - y <- y - mean(y) index <- simd$index - fit <- groupfs(x, y, index, maxsteps, intercept = F, k = log(n), aicstop = aicstop, verbose = T) + if (known) { + fit <- groupfs(x, y, index, maxsteps, sigma = 1, k = 2*log(G), aicstop = aicstop, verbose = T) + } else { + fit <- groupfs(x, y, index, maxsteps, k = 2*log(G), aicstop = aicstop, verbose = T) + } pvals <- groupfsInf(fit, verbose=T) return(list(variable = fit$action, pvals = pvals$pv, stopped = attr(fit, "stopped"))) } @@ -36,10 +40,14 @@ pvals <- do.call(c, list(output[2,])) vars <- do.call(c, list(output[1,])) save(pvals, vars, stopped, file = paste0( - "results_aic", aicstop, "_n", n, + "results_aic_n", n, "_p", p, + "_g", G, + "_rho", gsub(pattern = ".", replacement = "", x = rho, fixed = T), + "_maxsteps", maxsteps, "_sparsity", sparsity, - "_snr", snr, - "_F_rhopt1.RData")) + "_snr", round(snr), + "_known", known, + ".RData")) print(time) diff --git a/forLater/josh/sim.groupfs.R b/forLater/josh/sim.groupfs.R index b0e891f..9e60631 100644 --- a/forLater/josh/sim.groupfs.R +++ b/forLater/josh/sim.groupfs.R @@ -1,26 +1,31 @@ library(intervals) source("funs.sims.R") -source("selectiveInference/R/cv.R") +#source("selectiveInference/R/cv.R") source("../../selectiveInference/R/funs.groupfs.R") source("../../selectiveInference/R/funs.quadratic.R") source("../../selectiveInference/R/funs.common.R") set.seed(1) -niters <- 200 -n <- 100 -p <- 400 -G <- 200 -maxsteps <- 5 -sparsity <- 3 +known <- TRUE +niters <- 300 +n <- 50 +p <- 150 +G <- 75 +maxsteps <- 8 +sparsity <- 4 snr <- 2 -rho <- .1 +rho <- 0 instance <- function(n, p, G, sparsity, snr, rho, maxsteps) { simd <- randomGaussianFixedP(n, p, G, sparsity, snr, sigma = 1, rho) x <- simd$x y <- simd$y index <- simd$index - fit <- groupfs(x, y, index, maxsteps, k = log(n)) + if (known) { + fit <- groupfs(x, y, index, maxsteps, sigma = 1, k = log(n)) + } else { + fit <- groupfs(x, y, index, maxsteps, k = log(n)) + } pvals <- groupfsInf(fit, verbose=T) return(list(variable = fit$action, pvals = pvals$pv)) } @@ -35,8 +40,12 @@ vars <- do.call(c, list(output[1,])) save(pvals, vars, file = paste0( "results_n", n, "_p", p, + "_g", G, + "_rho", gsub(pattern = ".", replacement = "", x = rho, fixed = T), + "_maxsteps", maxsteps, "_sparsity", sparsity, - "_snr", snr, - "_F.RData")) + "_snr", round(snr), + "_known", known, + ".RData")) print(time) diff --git a/selectiveInference/R/funs.quadratic.R b/selectiveInference/R/funs.quadratic.R index 0e8ebcf..f813412 100644 --- a/selectiveInference/R/funs.quadratic.R +++ b/selectiveInference/R/funs.quadratic.R @@ -101,7 +101,7 @@ quadratic_coefficients <- function(sigma, Ug, Uh, peng, penh, etag, etah, Zg, Zh quadratic_roots <- function(A, B, C, tol) { - print("CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC") +# print("CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC") disc <- B^2 - 4*A*C b2a <- -B/(2*A) From 6a9eca8ac36f716f338055d70ebd278da24002c8 Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Wed, 25 Nov 2015 15:10:49 -0800 Subject: [PATCH 055/493] Still fixing aicstop --- selectiveInference/R/funs.groupfs.R | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/selectiveInference/R/funs.groupfs.R b/selectiveInference/R/funs.groupfs.R index b26f985..84055aa 100644 --- a/selectiveInference/R/funs.groupfs.R +++ b/selectiveInference/R/funs.groupfs.R @@ -418,14 +418,14 @@ groupfsInf <- function(obj, sigma = NULL, verbose = TRUE) { vdlist[[1]] <- vdlist[[2]] <- Vdelta v2list[[1]] <- v2list[[2]] <- V2 } - for (step in 1:maxsteps) { + for (step in 1:(maxsteps-1)) { cproj <- obj$cumprojs[[step]] - zlist[[step+1]] <- cproj %*% Z + zlist[[step+2]] <- cproj %*% Z if (type == "TC") { - etalist[[step+1]] <- cproj %*% eta + etalist[[step+2]] <- cproj %*% eta } else { - vdlist[[step+1]] <- cproj %*% Vdelta - v2list[[step+1]] <- cproj %*% V2 + vdlist[[step+2]] <- cproj %*% Vdelta + v2list[[step+2]] <- cproj %*% V2 } } @@ -440,8 +440,8 @@ groupfsInf <- function(obj, sigma = NULL, verbose = TRUE) { } else { sp <- step+1 s <- step - peng <- penlist[[sp]] - penh <- 1 + peng <- 1 + penh <- penlist[[sp]] } if (type == "TC") { @@ -467,11 +467,11 @@ groupfsInf <- function(obj, sigma = NULL, verbose = TRUE) { Yg <- Zg + R*(g1(TF)*Vdg + g2(TF)*V2g) UYg <- t(Ug) %*% Yg sse <- (sum(Yg^2) - sum(UYg^2)) - AICg <- n*log(sse/n) + n*log(2*pi) + k * (1 + n + 5) + AICg <- n*log(sse/n) + n*log(2*pi) + k * (2 + n + 6) Yh <- Zh + R*(g1(TF)*Vdh + g2(TF)*V2h) UYh <- t(Uh) %*% Yh sse <- (sum(Yh^2) - sum(UYh^2)) - AICh <- n*log(sse/n) + n*log(2*pi) + k * (1 + n + 6) + AICh <- n*log(sse/n) + n*log(2*pi) + k * (2 + n + 7) # This does reproduce the correct AIC values # AIC(g) < AIC(h) # <-> log(sseG) + (k/n) * ncol(Ug) < log(sseH) From 47420c564fe8e7ef1345542684ba8f4631174231 Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Wed, 25 Nov 2015 15:23:03 -0800 Subject: [PATCH 056/493] Fixed error related to models with only one variable --- forLater/josh/sim.aicstop.R | 2 +- selectiveInference/R/funs.groupfs.R | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/forLater/josh/sim.aicstop.R b/forLater/josh/sim.aicstop.R index 22f6665..f2aa653 100644 --- a/forLater/josh/sim.aicstop.R +++ b/forLater/josh/sim.aicstop.R @@ -7,7 +7,7 @@ source("../../selectiveInference/R/funs.common.R") set.seed(1) known <- FALSE -niters <- 300 +niters <- 200 n <- 50 p <- 150 G <- 75 diff --git a/selectiveInference/R/funs.groupfs.R b/selectiveInference/R/funs.groupfs.R index 84055aa..866d367 100644 --- a/selectiveInference/R/funs.groupfs.R +++ b/selectiveInference/R/funs.groupfs.R @@ -334,7 +334,7 @@ groupfsInf <- function(obj, sigma = NULL, verbose = TRUE) { Z <- Psub %*% t(Psub) %*% obj$y df1 <- dffull - ncol(Psub) } else { - Z <- 0 + Z <- rep(0, n) df1 <- dffull + obj$intercept + 1 } From b610d03f7f7780ca431402aa3cef4c8080cdfeac Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Wed, 25 Nov 2015 15:26:16 -0800 Subject: [PATCH 057/493] Fixed another error related to models with only one variable --- selectiveInference/R/funs.groupfs.R | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/selectiveInference/R/funs.groupfs.R b/selectiveInference/R/funs.groupfs.R index 866d367..96ceacb 100644 --- a/selectiveInference/R/funs.groupfs.R +++ b/selectiveInference/R/funs.groupfs.R @@ -418,14 +418,16 @@ groupfsInf <- function(obj, sigma = NULL, verbose = TRUE) { vdlist[[1]] <- vdlist[[2]] <- Vdelta v2list[[1]] <- v2list[[2]] <- V2 } - for (step in 1:(maxsteps-1)) { - cproj <- obj$cumprojs[[step]] - zlist[[step+2]] <- cproj %*% Z - if (type == "TC") { - etalist[[step+2]] <- cproj %*% eta - } else { - vdlist[[step+2]] <- cproj %*% Vdelta - v2list[[step+2]] <- cproj %*% V2 + if (maxsteps > 1) { + for (step in 1:(maxsteps-1)) { + cproj <- obj$cumprojs[[step]] + zlist[[step+2]] <- cproj %*% Z + if (type == "TC") { + etalist[[step+2]] <- cproj %*% eta + } else { + vdlist[[step+2]] <- cproj %*% Vdelta + v2list[[step+2]] <- cproj %*% V2 + } } } From fe44115408ae190d7665aeb27493abae758dc714 Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Wed, 25 Nov 2015 16:12:55 -0800 Subject: [PATCH 058/493] Working on AICstop for known sigma --- selectiveInference/R/funs.groupfs.R | 69 +++++++++++------------------ 1 file changed, 27 insertions(+), 42 deletions(-) diff --git a/selectiveInference/R/funs.groupfs.R b/selectiveInference/R/funs.groupfs.R index 96ceacb..8fc6bb7 100644 --- a/selectiveInference/R/funs.groupfs.R +++ b/selectiveInference/R/funs.groupfs.R @@ -433,53 +433,38 @@ groupfsInf <- function(obj, sigma = NULL, verbose = TRUE) { for (step in 1:maxsteps) { # Compare AIC at s+1 to AIC at s - # sp indexes step with larger AIC - if (AICs[step] >= AICs[step+1]) { - sp <- step - s <- step+1 - peng <- 1 - penh <- penlist[[s]] - } else { - sp <- step+1 - s <- step - peng <- 1 - penh <- penlist[[sp]] - } - + # roots() functions assume g indexes smaller AIC + # this is step+1 until the last step + peng <- penlist[[step+1]] + Ug <- ulist[[step+1]] + Uh <- ulist[[step]] + Zg <- zlist[[step+1]] + Zh <- zlist[[step]] + if (type == "TC") { - Ug <- ulist[[s]] - Uh <- ulist[[sp]] - # Fix this: known sigma has *additive* pen terms - #################################### + penh <- 0 + etag <- etalist[[s]] + etah <- etalist[[sp]] coeffs <- quadratic_coefficients(obj$sigma, Ug, Uh, peng, penh, etag, etah, Zg, Zh) + + if (AICs[step] < AICs[step+1]) { + coeffs <- lapply(coeffs, function(coeff) -coeff) + } + intstep <- quadratic_roots(coeffs$A, coeffs$B, coeffs$C, tol = 1e-15) + } else { - # g indexes the lower AIC - Ug <- ulist[[s]] - Uh <- ulist[[sp]] - Vdg <- vdlist[[s]] - Vdh <- vdlist[[sp]] - V2g <- v2list[[s]] - V2h <- v2list[[sp]] - Zg <- zlist[[s]] - Zh <- zlist[[sp]] - - g1 <- function(t) sqrt(C*t/(1+C*t)) - g2 <- function(t) 1/sqrt(1+C*t) - Yg <- Zg + R*(g1(TF)*Vdg + g2(TF)*V2g) - UYg <- t(Ug) %*% Yg - sse <- (sum(Yg^2) - sum(UYg^2)) - AICg <- n*log(sse/n) + n*log(2*pi) + k * (2 + n + 6) - Yh <- Zh + R*(g1(TF)*Vdh + g2(TF)*V2h) - UYh <- t(Uh) %*% Yh - sse <- (sum(Yh^2) - sum(UYh^2)) - AICh <- n*log(sse/n) + n*log(2*pi) + k * (2 + n + 7) - # This does reproduce the correct AIC values - # AIC(g) < AIC(h) - # <-> log(sseG) + (k/n) * ncol(Ug) < log(sseH) - - # Infeasible constraint if penh = 1, why? + penh <- 1 + Vdg <- vdlist[[step+1]] + Vdh <- vdlist[[step]] + V2g <- v2list[[step+1]] + V2h <- v2list[[step]] coeffs <- TF_coefficients(R, Ug, Uh, peng, penh, Zg, Zh, Vdg, Vdh, V2g, V2h) + + if (AICs[step] < AICs[step+1]) { + coeffs <- lapply(coeffs, function(coeff) -coeff) + } + intstep <- TF_roots(R, C, coeffs) } From 8ce41f1d25de5211bedef4093756ed27c306a20c Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Wed, 25 Nov 2015 16:16:24 -0800 Subject: [PATCH 059/493] Still fixing known sigma AICstop --- selectiveInference/R/funs.groupfs.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/selectiveInference/R/funs.groupfs.R b/selectiveInference/R/funs.groupfs.R index 8fc6bb7..004ba64 100644 --- a/selectiveInference/R/funs.groupfs.R +++ b/selectiveInference/R/funs.groupfs.R @@ -443,8 +443,8 @@ groupfsInf <- function(obj, sigma = NULL, verbose = TRUE) { if (type == "TC") { penh <- 0 - etag <- etalist[[s]] - etah <- etalist[[sp]] + etag <- etalist[[step+1]] + etah <- etalist[[step]] coeffs <- quadratic_coefficients(obj$sigma, Ug, Uh, peng, penh, etag, etah, Zg, Zh) if (AICs[step] < AICs[step+1]) { From 5ed581f4d41e7195154f57d09d039f618daf0fd5 Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Wed, 25 Nov 2015 16:40:51 -0800 Subject: [PATCH 060/493] Documentation update --- selectiveInference/man/factorDesign.Rd | 3 ++- selectiveInference/man/groupfs.Rd | 3 ++- selectiveInference/man/groupfsInf.Rd | 14 +++++--------- selectiveInference/man/predict.groupfs.Rd | 3 ++- selectiveInference/man/scaleGroups.Rd | 3 ++- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/selectiveInference/man/factorDesign.Rd b/selectiveInference/man/factorDesign.Rd index 3a42e2e..d5d2576 100644 --- a/selectiveInference/man/factorDesign.Rd +++ b/selectiveInference/man/factorDesign.Rd @@ -1,4 +1,5 @@ -% Generated by roxygen2 (4.0.1.99): do not edit by hand +% Generated by roxygen2 (4.1.1): do not edit by hand +% Please edit documentation in R/funs.groupfs.R \name{factorDesign} \alias{factorDesign} \title{Expand a data frame with factors to form a design matrix with the full binary encoding of each factor.} diff --git a/selectiveInference/man/groupfs.Rd b/selectiveInference/man/groupfs.Rd index 78cd32f..1ea9dcd 100644 --- a/selectiveInference/man/groupfs.Rd +++ b/selectiveInference/man/groupfs.Rd @@ -1,4 +1,5 @@ -% Generated by roxygen2 (4.0.1.99): do not edit by hand +% Generated by roxygen2 (4.1.1): do not edit by hand +% Please edit documentation in R/funs.groupfs.R \name{groupfs} \alias{groupfs} \title{Select a model with forward stepwise.} diff --git a/selectiveInference/man/groupfsInf.Rd b/selectiveInference/man/groupfsInf.Rd index 7c7190f..42fcbe3 100644 --- a/selectiveInference/man/groupfsInf.Rd +++ b/selectiveInference/man/groupfsInf.Rd @@ -1,21 +1,17 @@ -% Generated by roxygen2 (4.0.1.99): do not edit by hand +% Generated by roxygen2 (4.1.1): do not edit by hand +% Please edit documentation in R/funs.groupfs.R \name{groupfsInf} \alias{groupfsInf} \title{Compute selective p-values for a model fitted by \code{groupfs}.} \usage{ -groupfsInf(obj, sigma = NULL, type = c("all", "aic"), ntimes = 2, - verbose = FALSE) +groupfsInf(obj, sigma = NULL, verbose = TRUE) } \arguments{ \item{obj}{Object returned by \code{\link{groupfs}} function} -\item{sigma}{Estimate of error standard deviation. If NULL (default), this is estimated using the mean squared residual of the full least squares fit when n >= 2p, and the mean squared residual of the selected model when n < 2p. In the latter case, the user should use \code{\link{estimateSigma}} function for a more accurate estimate.} +\item{sigma}{Estimate of error standard deviation. If NULL (default), p-values will be computed from a selective F test.} -\item{type}{Type of conditional p-values to compute. With "all" (default), p-values are computed conditional on the final model with all variables up to \code{maxsteps}; with "aic" the number of steps is chosen after which the AIC criterion increases \code{ntimes} in a row, and then the same type of analysis as in "all" is carried out for the active variables at that number of steps.} - -\item{ntimes}{Number of steps for which AIC criterion has to increase before minimizing point is declared.} - -\item{verbose}{Print out progress along the way? Default is FALSE.} +\item{verbose}{Print out progress along the way? Default is TRUE.} } \value{ An object of class "groupfsInf" containing selective p-values for the fitted model \code{obj}. For comparison with \code{\link{fsInf}}, note that the option \code{type = "active"} is not available. diff --git a/selectiveInference/man/predict.groupfs.Rd b/selectiveInference/man/predict.groupfs.Rd index 4a4c149..14af211 100644 --- a/selectiveInference/man/predict.groupfs.Rd +++ b/selectiveInference/man/predict.groupfs.Rd @@ -1,4 +1,5 @@ -% Generated by roxygen2 (4.0.1.99): do not edit by hand +% Generated by roxygen2 (4.1.1): do not edit by hand +% Please edit documentation in R/funs.groupfs.R \name{predict.groupfs} \alias{predict.groupfs} \title{Prediction and coefficient functions for \code{\link{groupfs}}. diff --git a/selectiveInference/man/scaleGroups.Rd b/selectiveInference/man/scaleGroups.Rd index 1e7e1c4..e5a93fa 100644 --- a/selectiveInference/man/scaleGroups.Rd +++ b/selectiveInference/man/scaleGroups.Rd @@ -1,4 +1,5 @@ -% Generated by roxygen2 (4.0.1.99): do not edit by hand +% Generated by roxygen2 (4.1.1): do not edit by hand +% Please edit documentation in R/funs.groupfs.R \name{scaleGroups} \alias{scaleGroups} \title{Center and scale design matrix by groups} From f2c86a847ff712e7bc8a863a3d702d595f6be63b Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Wed, 25 Nov 2015 17:15:03 -0800 Subject: [PATCH 061/493] More documenting --- selectiveInference/R/funs.groupfs.R | 26 ++++++++-------------- selectiveInference/R/funs.quadratic.R | 32 --------------------------- selectiveInference/man/groupfs.Rd | 8 +++---- selectiveInference/man/groupfsInf.Rd | 8 +++---- 4 files changed, 17 insertions(+), 57 deletions(-) diff --git a/selectiveInference/R/funs.groupfs.R b/selectiveInference/R/funs.groupfs.R index 004ba64..00ee26a 100644 --- a/selectiveInference/R/funs.groupfs.R +++ b/selectiveInference/R/funs.groupfs.R @@ -4,11 +4,11 @@ #' #' @param x Matrix of predictors (n by p). #' @param y Vector of outcomes (length n). -#' @param index Group membership indicator of length p. +#' @param index Group membership indicator of length p. Check that \code{sort(unique(index)) = 1:G} where \code{G} is the number of distinct groups. #' @param maxsteps Maximum number of steps for forward stepwise. -#' @param sigma Estimate of error standard deviation for use in AIC criterion. This determines the relative scale between RSS and the degrees of freedom penalty. Default is NULL corresponding to unknown sigma. See \code{\link[stats]{extractAIC}} for details. -#' @param k Multiplier of model size penalty, the default is \code{k = 2} for AIC. Use \code{k = log(n)} for BIC, or \code{k = log(p)} for RIC. -#' @param intercept Should an intercept be included in the model? Default is TRUE. +#' @param sigma Estimate of error standard deviation for use in AIC criterion. This determines the relative scale between RSS and the degrees of freedom penalty. Default is NULL corresponding to unknown sigma. When NULL, \code{link{groupfsInf}} performs truncated F inference instead of truncated \eqn{\chi}. See \code{\link[stats]{extractAIC}} for details on the AIC criterion. +#' @param k Multiplier of model size penalty, the default is \code{k = 2} for AIC. Use \code{k = log(n)} for BIC, or \code{k = 2log(p)} for RIC (best for high dimensions, when \eqn{p > n}). If \eqn{G < p} then RIC may be too restrictive and it would be better to use \code{log(G) < k < 2log(p)}. +#' @param intercept Should an intercept be included in the model? Default is TRUE. Does not count as a step. #' @param center Should the columns of the design matrix be centered? Default is TRUE. #' @param normalize Should the design matrix be normalized? Default is TRUE. #' @param aicstop Early stopping if AIC increases. Default is 0 corresponding to no early stopping. Positive integer values specify the number of times the AIC is allowed to increase in a row, e.g. with \code{aicstop = 2} the algorithm will stop if the AIC criterion increases for 2 steps in a row. The default of \code{\link[stats]{step}} corresponds to \code{aicstop = 1}. @@ -235,10 +235,10 @@ add1.groupfs <- function(xr, yr, index, labels, inactive, k, sigma = NULL) { #' Compute selective p-values for a model fitted by \code{groupfs}. #' -#' Computes p-values for each group of variables in a model fitted by \code{\link{groupfs}}. These p-values adjust for selection by truncating the usual \eqn{\chi^2} statistics to the regions implied by the model selection event. Details are provided in a forthcoming work. +#' Computes p-values for each group of variables in a model fitted by \code{\link{groupfs}}. These p-values adjust for selection by truncating the usual \eqn{\chi^2} statistics to the regions implied by the model selection event. If the \code{sigma} to \code{\link{groupfs}} was NULL then groupfsInf uses truncated \eqn{F} statistics instead of truncated \eqn{\chi}. The \code{sigma} argument to groupfsInf allows users to override and use \eqn{\chi}, but this is not recommended unless \eqn{\sigma} can be estimated well (i.e. \eqn{n > p}). #' #' @param obj Object returned by \code{\link{groupfs}} function -#' @param sigma Estimate of error standard deviation. If NULL (default), p-values will be computed from a selective F test. +#' @param sigma Estimate of error standard deviation. Default is NULL and in this case groupfsInf uses the value of sigma specified to \code{\link{groupfs}}. #' @param verbose Print out progress along the way? Default is TRUE. #' @return An object of class "groupfsInf" containing selective p-values for the fitted model \code{obj}. For comparison with \code{\link{fsInf}}, note that the option \code{type = "active"} is not available. #' @@ -246,9 +246,9 @@ add1.groupfs <- function(xr, yr, index, labels, inactive, k, sigma = NULL) { #' \item{vars}{Labels of the active groups in the order they were included.} #' \item{pv}{Selective p-values computed from appropriate truncated distributions.} #' \item{sigma}{Estimate of error variance used in computing p-values.} -#' \item{TC}{Observed value of truncated chi.} +#' \item{TC or TF}{Observed value of truncated \eqn{\chi} or \eqn{F}.} #' \item{df}{Rank of group of variables when it was added to the model.} -#' \item{support}{List of intervals defining the truncation region of the truncated chi.} +#' \item{support}{List of intervals defining the truncation region of the corresponding statistic.} #' } groupfsInf <- function(obj, sigma = NULL, verbose = TRUE) { @@ -282,12 +282,6 @@ groupfsInf <- function(obj, sigma = NULL, verbose = TRUE) { dffull <- ncol(Pf) df2 <- n - dffull - obj$intercept - 1 Pfull <- Pf %*% t(Pf) - ## if (n >= 2*p) { - ## sigma <- sqrt(sum(lsfit(obj$x, obj$y, intercept = obj$intercept)$res^2)/(n-p-obj$intercept)) - ## } else { - ## sigma = sqrt(obj$log$RSS[length(obj$log$RSS)]/(n-Ep-obj$intercept)) - ## warning(paste(sprintf("p > n/2, and sigmahat = %0.3f used as an estimate of sigma;",sigma), "you may want to use the estimateSigma function")) - ## } } else { type <- "TC" sigma <- obj$sigma @@ -381,7 +375,6 @@ groupfsInf <- function(obj, sigma = NULL, verbose = TRUE) { zcvquad <- t(Z) %*% cvquad vdcvquad <- t(Vdelta) %*% cvquad v2cvquad <- t(V2) %*% cvquad - # (r*(vd*g1 + v2*g2) + z)^T cvquad (r*(vd*g1 + v2*g2) + z) x0 <- zcvquad %*% Z x1 <- 2*R*zcvquad %*% Vd x2 <- 2*R*zcvquad %*% V2 @@ -630,7 +623,6 @@ TF_interval <- function(lower, upper, df1, df2) { } num_int_F <- function(a, b, df1, df2, nsamp = 10000) { - print("numerical!") grid <- seq(from=a, to=b, length.out=nsamp) integrand <- df(grid, df1, df2) return((b-a)*mean(integrand)) @@ -767,7 +759,7 @@ predict.groupfs <- function(object, newx, ...) { if (missing(newx)) { newx = object$x } else { - newx <- scaleGroups(newx, object$index, attr(object, "center"), attr(object, "normalize")) + newx <- scaleGroups(newx, object$index, attr(object, "center"), attr(object, "normalize"))$x } return(newx[, index %in% object$action] %*% beta + ifelse(object$intercept, object$by, 0)) } diff --git a/selectiveInference/R/funs.quadratic.R b/selectiveInference/R/funs.quadratic.R index f813412..003adc6 100644 --- a/selectiveInference/R/funs.quadratic.R +++ b/selectiveInference/R/funs.quadratic.R @@ -49,26 +49,8 @@ truncationRegion <- function(obj, ydecomp, type, tol = 1e-15) { coeffs <- quadratic_coefficients(obj$sigma, Ug, Uh, peng, penh, etas, etas, Zs, Zs) quadratic_roots(coeffs$A, coeffs$B, coeffs$C, tol) } else { - - # Debugging - ## Q <- peng * (diag(rep(1,n)) - Ug %*% t(Ug)) - penh * (diag(rep(1,n)) - Uh %*% t(Uh)) - ## g1 <- function(t) sqrt(C*t/(1+C*t)) - ## g2 <- function(t) 1/sqrt(1+C*t) - ## Y <- function(t) { - ## Zs + R * (Vds*g1(t) + V2s*g2(t)) - ## } - coeffs <- TF_coefficients(R, Ug, Uh, peng, penh, Zs, Zs, Vds, Vds, V2s, V2s) roots <- TF_roots(R, C, coeffs) - - if (is.null(roots)) print(c(s,l)) - ## print(do.call(rbind, lapply(roots, function(r) { - ## c(r, - ## t(Y(r-0.000001)) %*% Q %*% Y(r-0.000001), - ## t(Y(r)) %*% Q %*% Y(r), - ## t(Y(r+0.000001)) %*% Q %*% Y(r+0.000001)) - ## }))) - return(roots) } }) @@ -100,8 +82,6 @@ quadratic_coefficients <- function(sigma, Ug, Uh, peng, penh, etag, etah, Zg, Zh } quadratic_roots <- function(A, B, C, tol) { - -# print("CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC") disc <- B^2 - 4*A*C b2a <- -B/(2*A) @@ -206,17 +186,6 @@ TF_roots <- function(R, C, coeffs, tol = 1e-8, tol2 = 1e-6) { x2 <- coeffs$x2 x0 <- coeffs$x0 -## # Handle some special cases -## if ((x11 == 0) && (max(abs(c(x22, x12, x1, x2))) < tol2)) { -## # print("Special case 1") -## return(Intervals(c(-Inf, 0))) -## } - -## if ((x22 == 0) && (max(abs(c(x2, x12))) < tol2)) { -## x2 <- 0 -## x12 <- 0 -## } - g1 <- function(t) sqrt(C*t/(1+C*t)) g2 <- function(t) 1/sqrt(1+C*t) I <- function(t) x11*g1(t)^2 + x12*g1(t)*g2(t) + x22*g2(t)^2 + x1*g1(t) + x2*g2(t) + x0 @@ -278,4 +247,3 @@ TF_roots <- function(R, C, coeffs, tol = 1e-8, tol2 = 1e-6) { if (I(0) < 0) stop("Infeasible constraint!") return(Intervals(c(-Inf,0))) } - diff --git a/selectiveInference/man/groupfs.Rd b/selectiveInference/man/groupfs.Rd index 1ea9dcd..a57c6dc 100644 --- a/selectiveInference/man/groupfs.Rd +++ b/selectiveInference/man/groupfs.Rd @@ -12,15 +12,15 @@ groupfs(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE, \item{y}{Vector of outcomes (length n).} -\item{index}{Group membership indicator of length p.} +\item{index}{Group membership indicator of length p. Check that \code{sort(unique(index)) = 1:G} where \code{G} is the number of distinct groups.} \item{maxsteps}{Maximum number of steps for forward stepwise.} -\item{sigma}{Estimate of error standard deviation for use in AIC criterion. This determines the relative scale between RSS and the degrees of freedom penalty. Default is NULL corresponding to unknown sigma. See \code{\link[stats]{extractAIC}} for details.} +\item{sigma}{Estimate of error standard deviation for use in AIC criterion. This determines the relative scale between RSS and the degrees of freedom penalty. Default is NULL corresponding to unknown sigma. When NULL, \code{link{groupfsInf}} performs truncated F inference instead of truncated \eqn{\chi}. See \code{\link[stats]{extractAIC}} for details on the AIC criterion.} -\item{k}{Multiplier of model size penalty, the default is \code{k = 2} for AIC. Use \code{k = log(n)} for BIC, or \code{k = log(p)} for RIC.} +\item{k}{Multiplier of model size penalty, the default is \code{k = 2} for AIC. Use \code{k = log(n)} for BIC, or \code{k = 2log(p)} for RIC (best for high dimensions, when \eqn{p > n}). If \eqn{G < p} then RIC may be too restrictive and it would be better to use \code{log(G) < k < 2log(p)}.} -\item{intercept}{Should an intercept be included in the model? Default is TRUE.} +\item{intercept}{Should an intercept be included in the model? Default is TRUE. Does not count as a step.} \item{center}{Should the columns of the design matrix be centered? Default is TRUE.} diff --git a/selectiveInference/man/groupfsInf.Rd b/selectiveInference/man/groupfsInf.Rd index 42fcbe3..74b9a5e 100644 --- a/selectiveInference/man/groupfsInf.Rd +++ b/selectiveInference/man/groupfsInf.Rd @@ -9,7 +9,7 @@ groupfsInf(obj, sigma = NULL, verbose = TRUE) \arguments{ \item{obj}{Object returned by \code{\link{groupfs}} function} -\item{sigma}{Estimate of error standard deviation. If NULL (default), p-values will be computed from a selective F test.} +\item{sigma}{Estimate of error standard deviation. Default is NULL and in this case groupfsInf uses the value of sigma specified to \code{\link{groupfs}}.} \item{verbose}{Print out progress along the way? Default is TRUE.} } @@ -20,12 +20,12 @@ An object of class "groupfsInf" containing selective p-values for the fitted mod \item{vars}{Labels of the active groups in the order they were included.} \item{pv}{Selective p-values computed from appropriate truncated distributions.} \item{sigma}{Estimate of error variance used in computing p-values.} - \item{TC}{Observed value of truncated chi.} + \item{TC or TF}{Observed value of truncated \eqn{\chi} or \eqn{F}.} \item{df}{Rank of group of variables when it was added to the model.} - \item{support}{List of intervals defining the truncation region of the truncated chi.} + \item{support}{List of intervals defining the truncation region of the corresponding statistic.} } } \description{ -Computes p-values for each group of variables in a model fitted by \code{\link{groupfs}}. These p-values adjust for selection by truncating the usual \eqn{\chi^2} statistics to the regions implied by the model selection event. Details are provided in a forthcoming work. +Computes p-values for each group of variables in a model fitted by \code{\link{groupfs}}. These p-values adjust for selection by truncating the usual \eqn{\chi^2} statistics to the regions implied by the model selection event. If the \code{sigma} to \code{\link{groupfs}} was NULL then groupfsInf uses truncated \eqn{F} statistics instead of truncated \eqn{\chi}. The \code{sigma} argument to groupfsInf allows users to override and use \eqn{\chi}, but this is not recommended unless \eqn{\sigma} can be estimated well (i.e. \eqn{n > p}). } From a8a5d758749fd61bcf5f945a18c65f727d08f3ab Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Wed, 25 Nov 2015 17:51:34 -0800 Subject: [PATCH 062/493] Documentation fix --- selectiveInference/R/funs.groupfs.R | 8 ++++---- selectiveInference/man/predict.groupfs.Rd | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/selectiveInference/R/funs.groupfs.R b/selectiveInference/R/funs.groupfs.R index 00ee26a..20ef265 100644 --- a/selectiveInference/R/funs.groupfs.R +++ b/selectiveInference/R/funs.groupfs.R @@ -376,10 +376,10 @@ groupfsInf <- function(obj, sigma = NULL, verbose = TRUE) { vdcvquad <- t(Vdelta) %*% cvquad v2cvquad <- t(V2) %*% cvquad x0 <- zcvquad %*% Z - x1 <- 2*R*zcvquad %*% Vd + x1 <- 2*R*zcvquad %*% Vdelta x2 <- 2*R*zcvquad %*% V2 x12 <- 2*R*vdcvquad %*% V2 - x11 <- R^2*vdcvquad %*% Vd + x11 <- R^2*vdcvquad %*% Vdelta x22 <- R^2*v2cvquad %*% V2 TF_roots(R, C, coeffs = list(x0=x0, x1=x1, x2=x2, x12=x12, x11=x11, x22=x22)) } @@ -754,14 +754,14 @@ coef.groupfs <- function(object, ...) { #' @param object Object returned by a call to \code{\link{groupfs}}. #' @param newx Matrix of x values at which the predictions are desired. If NULL, the x values from groupfs fitting are used. #' @return A vector of predictions or a vector of coefficients. -predict.groupfs <- function(object, newx, ...) { +predict.groupfs <- function(object, newx) { beta <- coef.groupfs(object) if (missing(newx)) { newx = object$x } else { newx <- scaleGroups(newx, object$index, attr(object, "center"), attr(object, "normalize"))$x } - return(newx[, index %in% object$action] %*% beta + ifelse(object$intercept, object$by, 0)) + return(newx[, object$index %in% object$action] %*% beta + ifelse(object$intercept, object$by, 0)) } print.groupfsInf <- function(x, ...) { diff --git a/selectiveInference/man/predict.groupfs.Rd b/selectiveInference/man/predict.groupfs.Rd index 14af211..4a382c7 100644 --- a/selectiveInference/man/predict.groupfs.Rd +++ b/selectiveInference/man/predict.groupfs.Rd @@ -6,7 +6,7 @@ Make predictions or extract coefficients from a groupfs forward stepwise object.} \usage{ -\method{predict}{groupfs}(object, newx, ...) +\method{predict}{groupfs}(object, newx) } \arguments{ \item{object}{Object returned by a call to \code{\link{groupfs}}.} From b47acd5ca04cbadb0950472a2f96b919df410a25 Mon Sep 17 00:00:00 2001 From: tibs Date: Wed, 25 Nov 2015 18:04:32 -0800 Subject: [PATCH 063/493] rob one change --- selectiveInference/DESCRIPTION | 2 +- selectiveInference/R/funs.fixed.R | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/selectiveInference/DESCRIPTION b/selectiveInference/DESCRIPTION index 0f352b6..ce95116 100644 --- a/selectiveInference/DESCRIPTION +++ b/selectiveInference/DESCRIPTION @@ -1,7 +1,7 @@ Package: selectiveInference Type: Package Title: Tools for Selective Inference -Version: 1.1.1 +Version: 1.1.2 Date: 2015-09-01 Author: Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index b7f20fd..ac00545 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -184,15 +184,15 @@ print.fixedLassoInf <- function(x, tailarea=TRUE, ...) { invisible() } -estimateLambda <- function(x, sigma, nsamp=1000){ - checkargs.xy(x,rep(0,nrow(x))) - if(nsamp < 10) stop("More Monte Carlo samples required for estimation") - if (length(sigma)!=1) stop("sigma should be a number > 0") - if (sigma<=0) stop("sigma should be a number > 0") +#estimateLambda <- function(x, sigma, nsamp=1000){ +# checkargs.xy(x,rep(0,nrow(x))) +# if(nsamp < 10) stop("More Monte Carlo samples required for estimation") +# if (length(sigma)!=1) stop("sigma should be a number > 0") + # if (sigma<=0) stop("sigma should be a number > 0") - n = nrow(x) - eps = sigma*matrix(rnorm(nsamp*n),n,nsamp) - lambda = 2*mean(apply(t(x)%*%eps,2,max)) - return(lambda) -} + # n = nrow(x) + # eps = sigma*matrix(rnorm(nsamp*n),n,nsamp) + # lambda = 2*mean(apply(t(x)%*%eps,2,max)) + # return(lambda) +#} From c353058303b97d29d14c23f1bb95efa2f256d617 Mon Sep 17 00:00:00 2001 From: Ryan Tibshirani Date: Thu, 26 Nov 2015 00:55:56 -0500 Subject: [PATCH 064/493] Just added Sen's example ... we still seem to get the proper coverage here even if the way the code is being used here is not exactly what we'd expect. --- tests/test.fixed.R | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/tests/test.fixed.R b/tests/test.fixed.R index 553fe35..79aa709 100644 --- a/tests/test.fixed.R +++ b/tests/test.fixed.R @@ -31,6 +31,30 @@ nulls = which(!is.na(pvals[,1]) & !is.na(pvals[,2])) np = pvals[nulls,-(1:2)] mean(np[!is.na(np)] < 0.1) +##### +library(selectiveInference) +library(MASS) +library(scalreg) + +S <- diag(10) +n <- 100 +p <- 10 +pval <- matrix(1, nrow = 100, ncol = p) +for(i in 1:100){ + cat(i) + X <- mvrnorm(n = n, mu = rep(0, p), Sigma = S) + Y <- X[, 1] + X[, 2] + rnorm(n) + sig.L <- scalreg(X, Y)$hsigma + + lam <- cv.glmnet(X, Y, standardize = FALSE, intercept = FALSE)$lambda.min + bl <- glmnet(X, Y, lambda = lam, standardize = FALSE, intercept = FALSE)$beta[, 1] + idx <- which(bl != 0) + pval[i, idx] <- fixedLassoInf(X, Y, beta = bl, lambda = lam * n, intercept = FALSE, sigma = sig.L, alpha = 0.05)$pv +} + +p <- pval[, -(1:2)] +mean(p[p < 1] < 0.05) + ##### a=lar(x,y) From e71a29df480b7a936a7f52fd4ea70d847bd394a2 Mon Sep 17 00:00:00 2001 From: tibs Date: Thu, 26 Nov 2015 07:57:01 -0800 Subject: [PATCH 065/493] rob test.fixed.R --- tests/test.fixed.R | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/tests/test.fixed.R b/tests/test.fixed.R index 553fe35..e1a581c 100644 --- a/tests/test.fixed.R +++ b/tests/test.fixed.R @@ -1,5 +1,5 @@ -library(selectiveInference) -#library(selectiveInference,lib.loc="/Users/tibs/dropbox/git/R/mylib") +#library(selectiveInference) +library(selectiveInference,lib.loc="/Users/tibs/dropbox/git/R/mylib") #options(error=dump.frames) #attach("/Users/tibs/dropbox/PAPERS/lasso/lasso3/.RData") @@ -315,3 +315,28 @@ sint = fixedLassoInf(X,y,coef,lam,sigma=sigma,alpha=alpha,type="partial") load("params_for_Rob.rdata") #variables: X, y, coef, lam, sigma, alpha sint = fixedLassoInf(X,y,coef,lam,sigma=sigma,alpha=alpha,type="partial") + + +#### bug from Sen at UW + +library(MASS) +library(scalreg) + +S <- diag(10) +n <- 100 +p <- 10 +pval <- matrix(1, nrow = 100, ncol = p) +for(i in 1:100){ + cat(i) + X <- mvrnorm(n = n, mu = rep(0, p), Sigma = S) + Y <- X[, 1] + X[, 2] + rnorm(n) + sig.L <- scalreg(X, Y)$hsigma + + lam <- cv.glmnet(X, Y, standardize = FALSE, intercept = FALSE)$lambda.min + bl <- glmnet(X, Y, lambda = lam, standardize = FALSE, intercept = FALSE)$beta[, 1] + idx <- which(bl != 0) + pval[i, idx] <- fixedLassoInf(X, Y, beta = bl, lambda = lam * n, intercept = FALSE, sigma = sig.L, alpha = 0.05)$pv +} + +p <- pval[, -(1:2)] +mean(p[p < 1] < 0.05) From 7993fb39593f26372f96d7a1afe8daa523afcdaf Mon Sep 17 00:00:00 2001 From: Ryan Tibshirani Date: Thu, 26 Nov 2015 11:28:10 -0500 Subject: [PATCH 066/493] Got rid of estimateLambda --- selectiveInference/NAMESPACE | 1 - 1 file changed, 1 deletion(-) diff --git a/selectiveInference/NAMESPACE b/selectiveInference/NAMESPACE index c6e2d09..b306d85 100644 --- a/selectiveInference/NAMESPACE +++ b/selectiveInference/NAMESPACE @@ -8,7 +8,6 @@ export(lar,fs, fixedLassoInf,print.fixedLassoInf, forwardStop, estimateSigma, - estimateLambda, manyMeans,print.manyMeans, groupfs,groupfsInf, scaleGroups,factorDesign From edb1277ffc33e50713f1fb92d7f5031adcf3bb0a Mon Sep 17 00:00:00 2001 From: tibs Date: Thu, 26 Nov 2015 12:09:59 -0800 Subject: [PATCH 067/493] rob --- selectiveInference/man/estimateSigma.Rd | 25 +++++++------ selectiveInference/man/factorDesign.Rd | 2 +- selectiveInference/man/fixedLassoInf.Rd | 37 ++++++++++---------- selectiveInference/man/forwardStop.Rd | 28 +++++++-------- selectiveInference/man/fs.Rd | 34 +++++++++--------- selectiveInference/man/fsInf.Rd | 30 ++++++++-------- selectiveInference/man/lar.Rd | 24 ++++++------- selectiveInference/man/larInf.Rd | 31 ++++++++-------- selectiveInference/man/manyMeans.Rd | 14 ++++---- selectiveInference/man/plot.fs.Rd | 25 +++++++------ selectiveInference/man/plot.lar.Rd | 25 +++++++------ selectiveInference/man/predict.fs.Rd | 26 +++++++------- selectiveInference/man/predict.lar.Rd | 25 +++++++------ selectiveInference/man/selectiveInference.Rd | 33 ++++++++--------- tests/test.fixed.R | 4 +-- 15 files changed, 182 insertions(+), 181 deletions(-) diff --git a/selectiveInference/man/estimateSigma.Rd b/selectiveInference/man/estimateSigma.Rd index 100f944..9397a08 100644 --- a/selectiveInference/man/estimateSigma.Rd +++ b/selectiveInference/man/estimateSigma.Rd @@ -42,20 +42,19 @@ A study of error variance estimation in lasso regression. arXiv:1311.5274. \author{Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid} \examples{ -#NOT RUN -#set.seed(43) -#n=50 -#p=10 -#sigma=.7 -#x=matrix(rnorm(n*p),n,p) -#x=scale(x,T,F) -#beta=c(3,2,0,0,rep(0,p-4)) -#y=x%*%beta+sigma*rnorm(n) -#y=y-mean(y) +set.seed(43) +n=50 +p=10 +sigma=.7 +x=matrix(rnorm(n*p),n,p) +x=scale(x,TRUE,FALSE) +beta=c(3,2,0,0,rep(0,p-4)) +y=x\%*\%beta+sigma*rnorm(n) +y=y-mean(y) -#out=estimateSigma(x,y) -#a=fs(x,y) -#out2=fsInf(a,sigma=out$sigmahat) +out=estimateSigma(x,y) +fit=fs(x,y) +out2=fsInf(fit,sigma=out$sigmahat) } diff --git a/selectiveInference/man/factorDesign.Rd b/selectiveInference/man/factorDesign.Rd index d5d2576..8e061db 100644 --- a/selectiveInference/man/factorDesign.Rd +++ b/selectiveInference/man/factorDesign.Rd @@ -23,7 +23,7 @@ When using \code{\link{groupfs}} with factor variables call this function first \dontrun{ fd = factorDesign(warpbreaks) y = rnorm(nrow(fd$x)) -fit = groupfs(fd$x, y, fd$index, maxsteps=2, intercept=F) +fit = groupfs(fd$x, y, fd$index, maxsteps=2, intercept=FALSE) pvals = groupfsInf(fit) } } diff --git a/selectiveInference/man/fixedLassoInf.Rd b/selectiveInference/man/fixedLassoInf.Rd index b250073..609136e 100644 --- a/selectiveInference/man/fixedLassoInf.Rd +++ b/selectiveInference/man/fixedLassoInf.Rd @@ -115,27 +115,28 @@ Exact post-selection inference, with application to the lasso. arXiv:1311.6238. \examples{ -#NOT RUN -#set.seed(43) -#n=50 -#p=10 -#sigma=.7 -#x=matrix(rnorm(n*p),n,p) -#x=scale(x,T,T)/sqrt(n-1) -#beta=c(3,2,0,0,rep(0,p-4)) -#y=x%*%beta+sigma*rnorm(n) -#y=y-mean(y) +#generate data +set.seed(43) +n=50 +p=10 +sigma=.7 +x=matrix(rnorm(n*p),n,p) +x=scale(x,TRUE,TRUE)/sqrt(n-1) +beta=c(3,2,0,0,rep(0,p-4)) +y=x\%*\%beta+sigma*rnorm(n) +y=y-mean(y) # first run glmnet -#gfit=glmnet(x,y,standardize=F) -#lambda = .1 +gfit=glmnet(x,y,standardize=FALSE) +lambda = .1 #extract coef for a given lambda; Note the 1/n factor! -#beta = coef(gfit, s=lambda/n, exact=TRUE)[-1] +beta = coef(gfit, s=lambda/n, exact=TRUE)[-1] # compute fixed lambda p-values and selection intervals -#aa=fixedLassoInf(x,y,beta,lambda,sigma=sigma) +out=fixedLassoInf(x,y,beta,lambda,sigma=sigma) # +#NOT RUN # as above, but use lar function instead to get initial lasso fit (should get same result) -# fit=lar(x,y,normalize=F) +# fit=lar(x,y,normalize=FALSE) # beta=coef(fit,s=lambda,mode="lambda") # fixedLassoInf(x,y,beta,lambda,sigma=sigma) @@ -144,15 +145,15 @@ Exact post-selection inference, with application to the lasso. arXiv:1311.6238. # states data example: predict life expectancy #x=state.x77[,-4] #y=state.x77[,4] -#x=scale(x,T,T) +#x=scale(x,TRUE,TRUE) #n=nrow(x) # estimate sigma from cross-validated lasso fit # cvf=cv.glmnet(x,y) -# sigmahat=estimateSigma(x,y,stand=F)$sigmahat +# sigmahat=estimateSigma(x,y,stand=FALSE)$sigmahat # # fit lasso # lambda=n*cvf$lambda.min -# gfit=glmnet(x,y,standardize=F) +# gfit=glmnet(x,y,standardize=FALSE) # bhat=coef(gfit, s=lambda/n, exact=TRUE)[-1] # # compute p-values and confidence intervals diff --git a/selectiveInference/man/forwardStop.Rd b/selectiveInference/man/forwardStop.Rd index 5ca36df..7863afe 100644 --- a/selectiveInference/man/forwardStop.Rd +++ b/selectiveInference/man/forwardStop.Rd @@ -34,20 +34,20 @@ To appear in Journal of the Royal Statistical Society: Series B. \author{Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid} \examples{ -#NOT RUN -#set.seed(433) -#n=50 -#p=10 -#sigma=.7 -#x=matrix(rnorm(n*p),n,p) - -#x=scale(x,T,T)/sqrt(n-1) -#beta=c(4,2,0,0,rep(0,p-4)) -#y=x%*%beta+sigma*rnorm(n) -#y=y-mean(y) +set.seed(433) +n=50 +p=10 +sigma=.7 +x=matrix(rnorm(n*p),n,p) +x=scale(x,TRUE,TRUE)/sqrt(n-1) +beta=c(4,2,0,0,rep(0,p-4)) +y=x\%*\%beta+sigma*rnorm(n) +y=y-mean(y) #first run forward stepwise -# fsfit=fs(x,y) + fsfit=fs(x,y) # -# aa=fsInf(fsfit) -# forwardStop(aa, alpha=.10) +# run inference function + out=fsInf(fsfit) +# estimate optimal stopping point + forwardStop(out$pv, alpha=.10) } diff --git a/selectiveInference/man/fs.Rd b/selectiveInference/man/fs.Rd index 434edc4..102aabd 100644 --- a/selectiveInference/man/fs.Rd +++ b/selectiveInference/man/fs.Rd @@ -68,33 +68,35 @@ to enter along the path} } \examples{ -#NOT RUN -#set.seed(43) -#n=50 -#p=10 -#sigma=.7 -#x=matrix(rnorm(n*p),n,p) -#x=scale(x,T,F) -#beta=c(3,2,0,0,rep(0,p-4)) -#y=x%*%beta+sigma*rnorm(n) -#y=y-mean(y) -#fsfit=fs(x,y) -# -#out=fsInf(x,y) +set.seed(43) +n=50 +p=10 +sigma=.7 +x=matrix(rnorm(n*p),n,p) +x=scale(x,TRUE,FALSE) +beta=c(3,2,0,0,rep(0,p-4)) +y=x\%*\%beta+sigma*rnorm(n) +y=y-mean(y) +# run forward stepwise +fsfit=fs(x,y) +# call inference function +out=fsInf(fsfit) # + +#NOT RUN # states data example: predict life expectancy #x=state.x77[,-4] #y=state.x77[,4] -#x=scale(x,T,T) +#x=scale(x,TRUE,TRUE) #n=nrow(x) # # estimate sigma from cross-validated lasso fit #cvf=cv.glmnet(x,y) -#sigmahat=estimateSigma(x,y,stand=F)$sigmahat +#sigmahat=estimateSigma(x,y,stand=FALSE)$sigmahat # # fit forwardStepwise -# fsfit=fs(x,y,normalize=F) +# fsfit=fs(x,y,normalize=FALSE) # # compute p-values and confidence intervals # fsInf(fsfit,sigma=sigmahat) diff --git a/selectiveInference/man/fsInf.Rd b/selectiveInference/man/fsInf.Rd index f8afc93..66fc758 100644 --- a/selectiveInference/man/fsInf.Rd +++ b/selectiveInference/man/fsInf.Rd @@ -109,27 +109,27 @@ model selection. arXiv:1405.3920. \seealso{\code{\link{fs}}} \examples{ -#NOT RUN -#set.seed(433) +set.seed(433) -#n=50 -#p=10 -#sigma=.7 -#x=matrix(rnorm(n*p),n,p) +n=50 +p=10 +sigma=.7 +x=matrix(rnorm(n*p),n,p) -#x=scale(x,T,T)/sqrt(n-1) -#beta=c(4,2,0,0,rep(0,p-4)) -#y=x%*%beta+sigma*rnorm(n) -#y=y-mean(y) +x=scale(x,TRUE,TRUE)/sqrt(n-1) +beta=c(4,2,0,0,rep(0,p-4)) +y=x\%*\%beta+sigma*rnorm(n) +y=y-mean(y) #first run forward stepwise -# fsfit=fs(x,y) + fsfit=fs(x,y) # # forward stepwise inference for each successive entry of a predictor; # # sigma estimated from mean squared residual # -# aa=fsInf(fsfit) + aa=fsInf(fsfit) +#NOT RUN # forward stepwise inference for fixed model of size 4, testing deletion of each predictor; # known value of sigma used # aa2=fsInf(fsfit,sigma=sigma,type="all",k=4) @@ -141,14 +141,14 @@ model selection. arXiv:1405.3920. # states data example: predict life expectancy #x=state.x77[,-4] #y=state.x77[,4] -#x=scale(x,T,T) +#x=scale(x,TRUE,TRUE) #n=nrow(x) # estimate sigma from cross-validated lasso fit #cvf=cv.glmnet(x,y) -#sigmahat=estimateSigma(x,y,stand=F)$sigmahat +#sigmahat=estimateSigma(x,y,stand=FALSE)$sigmahat # # run forward stepwise -#fsfit=fs(x,y,normalize=F) +#fsfit=fs(x,y,normalize=FALSE) # # compute p-values and confidence intervals # fsInf(fsfit,sigma=sigmahat) diff --git a/selectiveInference/man/lar.Rd b/selectiveInference/man/lar.Rd index 5bafbf9..70e53c5 100644 --- a/selectiveInference/man/lar.Rd +++ b/selectiveInference/man/lar.Rd @@ -76,17 +76,17 @@ Jerome Friedman (2002, 2009). Elements of Statistical Learning. } \examples{ -#NOT RUN -#set.seed(33) -#n=20 -#p=10 -#sigma=1 -#x=matrix(rnorm(n*p),n,p) + +set.seed(33) +n=20 +p=10 +sigma=1 +x=matrix(rnorm(n*p),n,p) #generate data -#beta=c(3,3,rep(0,p-2)) -#y=x%*%beta+sigma*rnorm(n) -#y=y-mean(y) -#run lar -#larfit=lar(x,y,verbose=TRUE) -#plot(larfit) +beta=c(3,3,rep(0,p-2)) +y=x\%*\%beta+sigma*rnorm(n) +y=y-mean(y) +#run lar and plot results +larfit=lar(x,y,verbose=TRUE) +plot(larfit) } diff --git a/selectiveInference/man/larInf.Rd b/selectiveInference/man/larInf.Rd index 86de5d2..7947ec5 100644 --- a/selectiveInference/man/larInf.Rd +++ b/selectiveInference/man/larInf.Rd @@ -114,34 +114,35 @@ Exact post-selection inference for sequential regression procedures. arXiv:1401. \examples{ -#NOT RUN -#set.seed(43) -#n=50 -#p=10 -#sigma=.7 -#x=matrix(rnorm(n*p),n,p) -#x=scale(x,T,T)/sqrt(n-1) -#beta=c(3,2,0,0,rep(0,p-4)) -#y=x%*%beta+sigma*rnorm(n) -#y=y-mean(y) +#generate data +set.seed(43) +n=50 +p=10 +sigma=.7 +x=matrix(rnorm(n*p),n,p) +x=scale(x,TRUE,TRUE)/sqrt(n-1) +beta=c(3,2,0,0,rep(0,p-4)) +y=x\%*\%beta+sigma*rnorm(n) +y=y-mean(y) #first run lar -# larfit=lar(x,y) + larfit=lar(x,y) # #lar inference for each successive entry of a predictor; sigma estimated # from mean squared residual from least squares fit -# aa=larInf(larfit) + out=larInf(larfit) # +#NOT RUN # states data example: predict life expectancy #x=state.x77[,-4] #y=state.x77[,4] -#x=scale(x,T,T) +#x=scale(x,TRUE,TRUE) #n=nrow(x) # estimate sigma from cross-validated lasso fit #cvf=cv.glmnet(x,y) -#sigmahat=estimateSigma(x,y,stand=F)$sigmahat +#sigmahat=estimateSigma(x,y,stand=FALSE)$sigmahat # # run LAR -#larfit=lar(x,y,normalize=F) +#larfit=lar(x,y,normalize=FALSE) # # compute p-values and confidence intervals # larInf(larfit,sigma=sigmahat) diff --git a/selectiveInference/man/manyMeans.Rd b/selectiveInference/man/manyMeans.Rd index db2d992..62a1400 100644 --- a/selectiveInference/man/manyMeans.Rd +++ b/selectiveInference/man/manyMeans.Rd @@ -52,11 +52,11 @@ arXiv:1405.3340. \examples{ -#NOT RUN -#set.seed(12345) -#n = 100 # sample size -#signal = 3 # signal size -#mu = c(rep(signal, floor (n/5)), rep(0, n-floor(n/5))) # 20% of elements get the signal; rest 0 -#y = mu + rnorm (n, 0, 1) -#mmObj = manyMeans(y, bh.q=0.1) + +set.seed(12345) +n = 100 # sample size +signal = 3 # signal size +mu = c(rep(signal, floor (n/5)), rep(0, n-floor(n/5))) # 20% of elements get the signal; rest 0 +y = mu + rnorm (n, 0, 1) +out = manyMeans(y, bh.q=0.1) } diff --git a/selectiveInference/man/plot.fs.Rd b/selectiveInference/man/plot.fs.Rd index 3c27ad1..e90da5d 100644 --- a/selectiveInference/man/plot.fs.Rd +++ b/selectiveInference/man/plot.fs.Rd @@ -28,18 +28,17 @@ Default is TRUE} \author{Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid} \examples{ -#NOT RUN -#set.seed(33) -#n=200 -#p=20 -#sigma=1 -#x=matrix(rnorm(n*p),n,p) -#x=scale(x,T,T)/sqrt(n-1) +set.seed(33) +n=200 +p=20 +sigma=1 +x=matrix(rnorm(n*p),n,p) +x=scale(x,TRUE,TRUE)/sqrt(n-1) #generate y -#beta=c(3,-2,rep(0,p-2)) -#beta=c(rep(3,10),rep(0,p-10)) -#y=x%*%beta+sigma*rnorm(n) -#y=y-mean(y) -#fsfit=fs(x,y) -#plot(fsfit) +beta=c(3,-2,rep(0,p-2)) +beta=c(rep(3,10),rep(0,p-10)) +y=x\%*\%beta+sigma*rnorm(n) +y=y-mean(y) +fsfit=fs(x,y) +plot(fsfit) } diff --git a/selectiveInference/man/plot.lar.Rd b/selectiveInference/man/plot.lar.Rd index ebf6c0b..668ce1c 100644 --- a/selectiveInference/man/plot.lar.Rd +++ b/selectiveInference/man/plot.lar.Rd @@ -32,18 +32,17 @@ Default is TRUE} \author{Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid} \examples{ -#NOT RUN -#set.seed(33) -#n=200 -#p=20 -#sigma=1 -#x=matrix(rnorm(n*p),n,p) -#x=scale(x,T,T)/sqrt(n-1) +set.seed(33) +n=200 +p=20 +sigma=1 +x=matrix(rnorm(n*p),n,p) +x=scale(x,TRUE,TRUE)/sqrt(n-1) #generate y -#beta=c(3,-2,rep(0,p-2)) -#beta=c(rep(3,10),rep(0,p-10)) -#y=x%*%beta+sigma*rnorm(n) -#y=y-mean(y) -#larfit=lar(x,y) -#plot(larfit) +beta=c(3,-2,rep(0,p-2)) +beta=c(rep(3,10),rep(0,p-10)) +y=x\%*\%beta+sigma*rnorm(n) +y=y-mean(y) +larfit=lar(x,y) +plot(larfit) } diff --git a/selectiveInference/man/predict.fs.Rd b/selectiveInference/man/predict.fs.Rd index 32f1a44..0562f6b 100644 --- a/selectiveInference/man/predict.fs.Rd +++ b/selectiveInference/man/predict.fs.Rd @@ -35,18 +35,18 @@ Either a vector/matrix of predictions, or a vector/matrix of coefficients. \author{Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid} \examples{ -#NOT RUN -#set.seed(33) -#n=200 -#p=20 -#sigma=1 -#x=matrix(rnorm(n*p),n,p) -#x=scale(x,T,T)/sqrt(n-1) +set.seed(33) +n=200 +p=20 +sigma=1 +x=matrix(rnorm(n*p),n,p) +x=scale(x,TRUE,TRUE)/sqrt(n-1) #generate y -#beta=c(3,-2,rep(0,p-2)) -#beta=c(rep(3,10),rep(0,p-10)) -#y=x%*%beta+sigma*rnorm(n) -#y=y-mean(y) -#obj=fs(x,y) -#fit=predict.fs(obj,x) +beta=c(3,-2,rep(0,p-2)) +beta=c(rep(3,10),rep(0,p-10)) +y=x\%*\%beta+sigma*rnorm(n) +y=y-mean(y) +# run forward stepwise and predict functions +obj=fs(x,y) +fit=predict.fs(obj,x) } diff --git a/selectiveInference/man/predict.lar.Rd b/selectiveInference/man/predict.lar.Rd index 340cd52..a9eebb5 100644 --- a/selectiveInference/man/predict.lar.Rd +++ b/selectiveInference/man/predict.lar.Rd @@ -38,18 +38,17 @@ Either a vector/matrix of predictions, or a vector/matrix of coefficients. \author{Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid} \examples{ -#NOT RUN -#set.seed(33) -#n=200 -#p=20 -#sigma=1 -#x=matrix(rnorm(n*p),n,p) -#x=scale(x,T,T)/sqrt(n-1) +set.seed(33) +n=200 +p=20 +sigma=1 +x=matrix(rnorm(n*p),n,p) +x=scale(x,TRUE,TRUE)/sqrt(n-1) #generate y -#beta=c(3,-2,rep(0,p-2)) -#beta=c(rep(3,10),rep(0,p-10)) -#y=x%*%beta+sigma*rnorm(n) -#y=y-mean(y) -#larfit=lar(x,y) -#fit=predict.lar(larfit,x,type="fit") +beta=c(3,-2,rep(0,p-2)) +beta=c(rep(3,10),rep(0,p-10)) +y=x\%*\%beta+sigma*rnorm(n) +y=y-mean(y) +larfit=lar(x,y) +fit=predict.lar(larfit,x,type="fit") } diff --git a/selectiveInference/man/selectiveInference.Rd b/selectiveInference/man/selectiveInference.Rd index 0b1ca4c..1043f01 100644 --- a/selectiveInference/man/selectiveInference.Rd +++ b/selectiveInference/man/selectiveInference.Rd @@ -70,28 +70,29 @@ arXiv:1405.3340. } \examples{ -#NOT RUN # forward stepwise: # #generate some data -#set.seed(43) -#n=50 -#p=10 -#sigma=.7 -#x=matrix(rnorm(n*p),n,p) -#x=scale(x,T,T)/sqrt(n-1) -#beta=c(4,2,0,0,rep(0,p-4)) -#y=x%*%beta+sigma*rnorm(n) -#y=y-mean(y) +set.seed(43) +n=50 +p=10 +sigma=.7 +x=matrix(rnorm(n*p),n,p) +x=scale(x,TRUE,TRUE)/sqrt(n-1) +beta=c(4,2,0,0,rep(0,p-4)) +y=x\%*\%beta+sigma*rnorm(n) +y=y-mean(y) # #first run forward stepwise -# fsfit=fs(x,y) + fsfit=fs(x,y) # # forward stepwise inference for each successive entry of a predictor; # sigma estimated from mean squared residual # -# aa=fsInf(fsfit) +out=fsInf(fsfit) + ## +#NOT RUN # lasso with fixed lambda # #set.seed(43) @@ -99,13 +100,13 @@ arXiv:1405.3340. #p=10 #sigma=.7 #x=matrix(rnorm(n*p),n,p) -#x=scale(x,T,T)/sqrt(n-1) +#x=scale(x,TRUE,TRUE)/sqrt(n-1) #beta=c(4,2,0,0,rep(0,p-4)) #y=x%*%beta+sigma*rnorm(n) #y=y-mean(y) # # first run glmnet -#gfit=glmnet(x,y,standardize=F) +#gfit=glmnet(x,y,standardize=FALSE) #lam = .1 #extract coef for a given lam; Note the 1/n factor in s! #bhat = coef(gfit, s=lam/n, exact=TRUE)[-1] @@ -119,7 +120,7 @@ arXiv:1405.3340. #p=10 #sigma=.7 #x=matrix(rnorm(n*p),n,p) -#x=scale(x,T,T)/sqrt(n-1) +#x=scale(x,TRUE,TRUE)/sqrt(n-1) #beta=c(3,2,0,0,rep(0,p-4)) #y=x%*%beta+sigma*rnorm(n) #y=y-mean(y) @@ -165,7 +166,7 @@ arXiv:1405.3340. #p=10 #sigma=.7 #x=matrix(rnorm(n*p),n,p) -#x=scale(x,T,F) +#x=scale(x,TRUE,FALSE) #beta=c(3,2,0,0,rep(0,p-4)) #y=x%*%beta+sigma*rnorm(n) #y=y-mean(y) diff --git a/tests/test.fixed.R b/tests/test.fixed.R index 8cf1e5f..5c55887 100644 --- a/tests/test.fixed.R +++ b/tests/test.fixed.R @@ -1,5 +1,5 @@ -#library(selectiveInference) -library(selectiveInference,lib.loc="/Users/tibs/dropbox/git/R/mylib") +library(selectiveInference) +#library(selectiveInference,lib.loc="/Users/tibs/dropbox/git/R/mylib") #options(error=dump.frames) #attach("/Users/tibs/dropbox/PAPERS/lasso/lasso3/.RData") From 62739d47c8f3fc8f5e3b0d63031fed2d5722ae18 Mon Sep 17 00:00:00 2001 From: Ryan Tibshirani Date: Fri, 27 Nov 2015 10:45:04 -0500 Subject: [PATCH 068/493] Small commit --- tests/test.fixed.R | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/tests/test.fixed.R b/tests/test.fixed.R index 8cf1e5f..63f76c0 100644 --- a/tests/test.fixed.R +++ b/tests/test.fixed.R @@ -1,5 +1,5 @@ -#library(selectiveInference) -library(selectiveInference,lib.loc="/Users/tibs/dropbox/git/R/mylib") +library(selectiveInference) +#library(selectiveInference),lib.loc="/Users/tibs/dropbox/git/R/mylib") #options(error=dump.frames) #attach("/Users/tibs/dropbox/PAPERS/lasso/lasso3/.RData") @@ -154,7 +154,6 @@ ch=function(bhat,tol.beta=1e-5,tol.kkt=0.1){ cat(c(max(abs(g[oo]))>tol.kkt,min(gg[!oo])< -1-tol.kkt,max(gg[!oo])>1 +tol.kkt),fill=T) } - # x=read.table("/Users/tibs/dropbox/PAPERS/FourOfUs/data64.txt") x=as.matrix(x) From 2b4799cdc3f3e84d92443bf4bbb6a9e37042d7c4 Mon Sep 17 00:00:00 2001 From: Ryan Tibshirani Date: Fri, 27 Nov 2015 11:57:59 -0500 Subject: [PATCH 069/493] Fixed a bug in LAR plotting function --- selectiveInference/R/funs.lar.R | 23 ++++++++++++----------- tests/test.lar.R | 4 ++-- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/selectiveInference/R/funs.lar.R b/selectiveInference/R/funs.lar.R index db4082e..b644699 100644 --- a/selectiveInference/R/funs.lar.R +++ b/selectiveInference/R/funs.lar.R @@ -632,29 +632,30 @@ plot.lar <- function(x, xvar=c("norm","step","lambda"), breaks=TRUE, xvar = match.arg(xvar) if (xvar=="norm") { - x = colSums(abs(beta)) + xx = colSums(abs(beta)) xlab = "L1 norm" } else if (xvar=="step") { - x = 1:k + xx = 1:k xlab = "Step" } else { - x = lambda + xx = lambda xlab = "Lambda" } if (omit.zeros) { - inds = matrix(FALSE,p,k) - for (i in 1:k) { - inds[i,] = beta[i,]!=0 | c(diff(beta[i,]!=0),F) | c(F,diff(beta[i,]!=0)) - } - beta[!inds] = NA + good.inds = matrix(FALSE,p,k) + good.inds[beta!=0] = TRUE + changes = t(apply(beta,1,diff))!=0 + good.inds[cbind(changes,rep(F,p))] = TRUE + good.inds[cbind(rep(F,p),changes)] = TRUE + beta[!good.inds] = NA } - plot(c(),c(),xlim=range(x,na.rm=T),ylim=range(beta,na.rm=T), + plot(c(),c(),xlim=range(xx,na.rm=T),ylim=range(beta,na.rm=T), xlab=xlab,ylab="Coefficients",main="LAR path",...) abline(h=0,lwd=2) - matplot(x,t(beta),type="l",lty=1,add=TRUE) - if (breaks) abline(v=x,lty=2) + matplot(xx,t(beta),type="l",lty=1,add=TRUE) + if (breaks) abline(v=xx,lty=2) if (var.labels) axis(4,at=beta[,k],labels=1:p,cex=0.8,adj=0) invisible() } diff --git a/tests/test.lar.R b/tests/test.lar.R index 6edaa45..be26428 100644 --- a/tests/test.lar.R +++ b/tests/test.lar.R @@ -1,5 +1,5 @@ -#library(selectiveInference) -library(selectiveInference,lib.loc="/Users/tibs/dropbox/git/R/mylib") +library(selectiveInference) +#library(selectiveInference,lib.loc="/Users/tibs/dropbox/git/R/mylib") library(lars) set.seed(0) From 5b8e300b00207972c2c3149f6a996729cfe564e8 Mon Sep 17 00:00:00 2001 From: tibs Date: Fri, 27 Nov 2015 16:49:34 -0800 Subject: [PATCH 070/493] rob --- tests/test.fixed.R | 366 +++++++++++++++++++++++++++++++++++++++++++++ tests/test.fs.R | 4 +- 2 files changed, 368 insertions(+), 2 deletions(-) create mode 100644 tests/test.fixed.R diff --git a/tests/test.fixed.R b/tests/test.fixed.R new file mode 100644 index 0000000..5c55887 --- /dev/null +++ b/tests/test.fixed.R @@ -0,0 +1,366 @@ +library(selectiveInference) +#library(selectiveInference,lib.loc="/Users/tibs/dropbox/git/R/mylib") + +#options(error=dump.frames) +#attach("/Users/tibs/dropbox/PAPERS/lasso/lasso3/.RData") + +##### +n=50 +p=10 +sigma=.7 +beta=c(3,2,0,0,rep(0,p-4)) +set.seed(43) +nsim = 100 +pvals <- matrix(NA, nrow=nsim, ncol=p) +x = matrix(rnorm(n*p),n,p) +x = scale(x,T,T)/sqrt(n-1) +mu = x%*%beta +for (i in 1:nsim) { +y=mu+sigma*rnorm(n) +#y=y-mean(y) +# first run glmnet +gfit=glmnet(x,y,intercept=F,standardize=F,thresh=1e-8) +lambda = 1 +#extract coef for a given lambda; Note the 1/n factor! +beta = coef(gfit, s=lambda/n, exact=TRUE)[-1] +# compute fixed lambda p-values and selection intervals +aa = fixedLassoInf(x,y,beta,lambda,intercept=F,sigma=sigma) +pvals[i, which(beta != 0)] <- aa$pv +} +nulls = which(!is.na(pvals[,1]) & !is.na(pvals[,2])) +np = pvals[nulls,-(1:2)] +mean(np[!is.na(np)] < 0.1) + +##### +library(selectiveInference) +library(MASS) +library(scalreg) + +S <- diag(10) +n <- 100 +p <- 10 +pval <- matrix(1, nrow = 100, ncol = p) +for(i in 1:100){ + cat(i) + X <- mvrnorm(n = n, mu = rep(0, p), Sigma = S) + Y <- X[, 1] + X[, 2] + rnorm(n) + sig.L <- scalreg(X, Y)$hsigma + + lam <- cv.glmnet(X, Y, standardize = FALSE, intercept = FALSE)$lambda.min + bl <- glmnet(X, Y, lambda = lam, standardize = FALSE, intercept = FALSE)$beta[, 1] + idx <- which(bl != 0) + pval[i, idx] <- fixedLassoInf(X, Y, beta = bl, lambda = lam * n, intercept = FALSE, sigma = sig.L, alpha = 0.05)$pv +} + +p <- pval[, -(1:2)] +mean(p[p < 1] < 0.05) + +##### + +a=lar(x,y) +aa=larInf(a) + +critf=function(b,lam,x,y){ + yhat=x%*%b + .5*sum( (y-yhat)^2) + lam*sum(abs(b)) + } + +##check coverage +set.seed(3) + +n=50 +p=10 +sigma=2 + +x=matrix(rnorm(n*p),n,p) +#x=scale(x,T,T)/sqrt(n-1) #try with and without standardization + +beta=c(5,4,3,2,1,rep(0,p-5)) + +nsim=100 +seeds=sample(1:9999,size=nsim) +pv=rep(NA,nsim) +ci=matrix(NA,nsim,2) +btrue=rep(NA,nsim) +for(ii in 1:nsim){ + cat(ii) + set.seed(seeds[ii]) + mu=x%*%beta + y=mu+sigma*rnorm(n) + y=y-mean(y) + gfit=glmnet(x,y,standardize=F,lambda.min.ratio=1e-9) + ilam=trunc(length(gfit$lam)/4) + lambda=gfit$lam[ilam]*n + bhat = predict(gfit, s=lambda/n,type="coef",exact=F)[-1] + + junk= fixedLassoInf(x,y,bhat,lambda,sigma=sigma) + pv[ii]=junk$pv[1] + # oo=junk$pred # for old package + oo=junk$var # for new package + btrue[ii]=lsfit(x[,oo],mu)$coef[2] + ci[ii,]=junk$ci[1,] +} + +sum(ci[,1]> btrue) +sum(ci[,2]< btrue) + + + + +## BIG example + library(selectiveInference,lib.loc="/Users/tibs/dropbox/git/R/mylib") + +options(error=dump.frames) +attach("/Users/tibs/dropbox/PAPERS/lasso/lasso3/.RData") +critf=function(b,lam,x,y){ + yhat=x%*%b + .5*sum( (y-yhat)^2) + lam*sum(abs(b)) + } +set.seed(4) +n=100 +p=500 +sigma=1 +x=matrix(rnorm(n*p),ncol=p) +x=scale(x,T,F) +beta=c(rep(2.5,10),rep(0,p-10)) +y=x%*%beta+sigma*rnorm(n) +y=y-mean(y) + + + +gfit=glmnet(x,y,standardize=F) +cvf=cv.glmnet(x,y) + +lambda=n*cvf$lambda.min +#lambda=10 + bhat = as.numeric(predict(gfit, s=lambda/n,type="coef",exact=T))[-1] + +bhat2=lasso2lam(x,y,lambda,int=F,stand=F)$coef +plot(bhat,bhat2) + +critf(bhat,lambda,x,y) +critf(bhat2,lambda,x,y) + junk= fixedLassoInf(x,y,bhat,lambda,sigma=sigma) +junk= fixedLassoInf(x,y,bhat,lambda,sigma=sigma,bits=200) + + # check of KKT +ch=function(bhat,tol.beta=1e-5,tol.kkt=0.1){ + xx=cbind(1,x) + bhatt=c(0,bhat) + g0=t(xx)%*%(y-xx%*%bhatt) + g=g0-lambda*sign(bhatt) + gg=g0/lambda + oo=abs(bhatt)>tol.beta + cat(c(max(abs(g[oo]))>tol.kkt,min(gg[!oo])< -1-tol.kkt,max(gg[!oo])>1 +tol.kkt),fill=T) +} + + +# +x=read.table("/Users/tibs/dropbox/PAPERS/FourOfUs/data64.txt") +x=as.matrix(x) +x=scale(x,T,F) +#x=scale(x,T,T) +n=length(y) +nams=scan("/Users/tibs/dropbox/PAPERS/FourOfUs/data64.names",what="") +y=scan("/Users/tibs/dropbox/PAPERS/FourOfUs/diab.y") +y=y-mean(y) + +cvf=cv.glmnet(x,y) +sigmahat=estimateSigma(x,y,stand=F)$si + +lambda=n*cvf$lambda.min + +lambda=estimateLambda(x,sigma=sigmahat)/2 + +gfit=glmnet(x,y,standardize=F) + +bhat=coef(gfit, s=lambda/n, exact=TRUE)[-1] +bhat2=lasso2lam(x,y,lambda,int=F,stand=F)$coef + +plot(bhat,bhat2) + +critf(bhat,lambda,x,y) +critf(bhat2,lambda,x,y) + + +fixedLassoInf(x,y,bhat,lambda,sigma=sigmahat) +## +set.seed(44) +n=50 +p=10 +sigma=.7 +x=matrix(rnorm(n*p),n,p) +x=scale(x,T,T)/sqrt(n-1) +beta=c(3,2,0,0,rep(0,p-4)) +y=x%*%beta+sigma*rnorm(n) +y=y-mean(y) +# first run glmnet +gfit=glmnet(x,y,standardize=F) +lambda = .1 +#extract coef for a given lambda; Note the 1/n factor! +beta = coef(gfit, s=lambda/n, exact=TRUE)[-1] + +# compute fixed lambda p-values and selection intervals +fixedLassoInf(x,y,beta,lambda,sigma=sigma) + +# as above, but use lar function to get initial lasso fit + fit=lar(x,y,normalize=F) +beta=coef(fit,s=lambda,mode="lambda") +fixedLassoInf(x,y,beta,lambda,sigma=sigma) + +### +x=state.x77[,-4] +y=state.x77[,4] +x=scale(x,T,T) +n=nrow(x) + + +sigmahat=estimateSigma(x,y,stand=F)$si + +lambda=65 + +gfit=glmnet(x,y,standardize=F, thresh=1e-9) + +bhat=coef(gfit, s=lambda/n, exact=TRUE)[-1] +#bhat2=lasso2lam(x,y,lambda,int=F,stand=F)$coef + +fixedLassoInf(x,y,bhat,lambda,sigma=sigmahat) + + +# lucas example +library(selectiveInference,lib.loc="/Users/tibs/dropbox/git/R/mylib") + +set.seed(44) + +p <- 300 +n <- 200 +s0 <- 2 +b <- 1 +b0 <- 0 +sigma <- .5 +alpha = 0.05 + +X = matrix(rnorm(n*p),n,p) +X = scale(X,center=T,scale=T) + +m = 1000 +eps = matrix(rnorm(m*n),n,m) +lam = 2*mean(apply(t(X)%*%eps,2,max)) + + +theta0 <- c(rep(b,s0),rep(0,p-s0)); +w <- sigma*rnorm(n); +y <- (b0+X%*%theta0+w); + + + +tic = proc.time() +gfit = glmnet(X,y,standardize=F) +coef = coef(gfit, s=lam/n, exact=T)[-1] +sint = fixedLassoInf(X,y,coef,lam,sigma=sigma,alpha=alpha) + +### lucas example with sims + +set.seed(44) + +p <- 300 +n <- 200 +s0 <- 2 +b <- 1 +b0 <- 0 +sigma <- .5 +alpha = 0.05 +#set.seed('1') + +#X <- rbinom(p*n,1,prob=0.15); +#dim(X) <- c(n,p); +#X <- X %*% diag(1+9*runif(p)) +X = matrix(rnorm(n*p),n,p) +#X = scale(X,center=T,scale=T) # original +#X = scale(X,center=T,scale=T)/sqrt(n-1) #CHANGED + +m = 1000 +eps = matrix(rnorm(m*n),n,m) + +lam = 2*mean(apply(t(X)%*%eps,2,max)) #original +theta0 <- c(rep(b,s0),rep(0,p-s0)) #original +#theta0 <- c(rep(b,s0),rep(0,p-s0))*sqrt(n-1) #CHANGED + mu=b0+X%*%theta0 +nsim=100 +int=matrix(NA,nsim,2) +btrue=rep(NA,nsim) +for(ii in 1:nsim){ + cat(ii) +w <- sigma*rnorm(n); + +y <- (mu+w); + +tic = proc.time() +gfit = glmnet(X,y,standardize=F) + nz=colSums(gfit$beta!=0) + # lam=gfit$lambda[nz>=2]/1.1 # CHANGED + # lam=lam[1]*n #CHANGED +coef = coef(gfit, s=lam/n, exact=T)[-1] +oo=which(coef!=0) +btrue[ii]=lsfit(X[,oo],mu)$coef[2] +sint = fixedLassoInf(X,y,coef,lam,sigma=sigma,alpha=alpha) +int[ii,]=sint$ci[1,] +} +## new bugs from lucas +library(selectiveInference,lib.loc="/Users/tibs/dropbox/git/R/mylib") + +set.seed(1) +p <- 500 +n <- 400 +s0 <- 10 +b <- 1.2 +b0 <- 0 +sigma <- 5 +alpha = 0.05 + +X = matrix(rnorm(n*p),n,p) +X = scale(X,center=T,scale=T) +theta0 <- c(rep(b,s0),rep(0,p-s0)) +w <- sigma*rnorm(n) +y <- b0 + X%*%theta0 + w + +# Pick lambda as in Negahban et al. (2012), as done in Lee et al. (2015) +m = 1000 +eps = sigma*matrix(rnorm(m*n),n,m) +lam = 2*mean(apply(abs(t(X)%*%eps),2,max)) + +gfit = glmnet(X,y,standardize=F) +coef = coef(gfit, s=lam/n, exact=T)[-1] +sint = fixedLassoInf(X,y,coef,lam,sigma=sigma,alpha=alpha,type="partial") +# Error in v %*% diag(d) : non-conformable arguments + +## lucas again + +load("params_for_Rob.rdata") #variables: X, y, coef, lam, sigma, alpha + +sint = fixedLassoInf(X,y,coef,lam,sigma=sigma,alpha=alpha,type="partial") + + +#### bug from Sen at UW + +library(MASS) +library(scalreg) + +S <- diag(10) +n <- 100 +p <- 10 +pval <- matrix(1, nrow = 100, ncol = p) +for(i in 1:100){ + cat(i) + X <- mvrnorm(n = n, mu = rep(0, p), Sigma = S) + Y <- X[, 1] + X[, 2] + rnorm(n) + sig.L <- scalreg(X, Y)$hsigma + + lam <- cv.glmnet(X, Y, standardize = FALSE, intercept = FALSE)$lambda.min + bl <- glmnet(X, Y, lambda = lam, standardize = FALSE, intercept = FALSE)$beta[, 1] + idx <- which(bl != 0) + pval[i, idx] <- fixedLassoInf(X, Y, beta = bl, lambda = lam * n, intercept = FALSE, sigma = sig.L, alpha = 0.05)$pv +} + +p <- pval[, -(1:2)] +mean(p[p < 1] < 0.05) diff --git a/tests/test.fs.R b/tests/test.fs.R index fbe50ce..f811676 100644 --- a/tests/test.fs.R +++ b/tests/test.fs.R @@ -1,5 +1,5 @@ -#library(selectiveInference) -library(selectiveInference,lib.loc="/Users/tibs/dropbox/git/R/mylib") +library(selectiveInference) +#library(selectiveInference,lib.loc="/Users/tibs/dropbox/git/R/mylib") library(lars) From ad70e47cf8f9db705909c5da959c6c51ac5033ca Mon Sep 17 00:00:00 2001 From: Ryan Tibshirani Date: Sat, 28 Nov 2015 00:05:34 -0500 Subject: [PATCH 071/493] Fixed a bug in FS plotting function --- selectiveInference/R/funs.fs.R | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/selectiveInference/R/funs.fs.R b/selectiveInference/R/funs.fs.R index 3a46b29..6edc2db 100644 --- a/selectiveInference/R/funs.fs.R +++ b/selectiveInference/R/funs.fs.R @@ -446,12 +446,13 @@ plot.fs <- function(x, breaks=TRUE, omit.zeros=TRUE, var.labels=TRUE, ...) { xx = 1:k xlab = "Step" - if (omit.zeros) { - inds = matrix(FALSE,p,k) - for (i in 1:k) { - inds[i,] = beta[i,]!=0 | c(diff(beta[i,]!=0),F) | c(F,diff(beta[i,]!=0)) - } - beta[!inds] = NA + if (omit.zeros) { + good.inds = matrix(FALSE,p,k) + good.inds[beta!=0] = TRUE + changes = t(apply(beta,1,diff))!=0 + good.inds[cbind(changes,rep(F,p))] = TRUE + good.inds[cbind(rep(F,p),changes)] = TRUE + beta[!good.inds] = NA } plot(c(),c(),xlim=range(xx,na.rm=T),ylim=range(beta,na.rm=T), From 7d2ca75d94824fe3e7c2250c284cfe415b93f34e Mon Sep 17 00:00:00 2001 From: Ryan Tibshirani Date: Sat, 28 Nov 2015 00:36:06 -0500 Subject: [PATCH 072/493] Fixed a bug in FS plotting function --- selectiveInference/R/funs.fs.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selectiveInference/R/funs.fs.R b/selectiveInference/R/funs.fs.R index 6edc2db..a46b53e 100644 --- a/selectiveInference/R/funs.fs.R +++ b/selectiveInference/R/funs.fs.R @@ -459,7 +459,7 @@ plot.fs <- function(x, breaks=TRUE, omit.zeros=TRUE, var.labels=TRUE, ...) { xlab=xlab,ylab="Coefficients",main="Forward stepwise path",...) abline(h=0,lwd=2) matplot(xx,t(beta),type="l",lty=1,add=TRUE) - if (breaks) abline(v=x,lty=2) + if (breaks) abline(v=xx,lty=2) if (var.labels) axis(4,at=beta[,k],labels=1:p,cex=0.8,adj=0) invisible() } From 9d95250fe316f6181f8b33e0c544ade6b79b7263 Mon Sep 17 00:00:00 2001 From: tibs Date: Fri, 27 Nov 2015 21:46:43 -0800 Subject: [PATCH 073/493] rob --- selectiveInference/R/funs.fs.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selectiveInference/R/funs.fs.R b/selectiveInference/R/funs.fs.R index 6edc2db..a46b53e 100644 --- a/selectiveInference/R/funs.fs.R +++ b/selectiveInference/R/funs.fs.R @@ -459,7 +459,7 @@ plot.fs <- function(x, breaks=TRUE, omit.zeros=TRUE, var.labels=TRUE, ...) { xlab=xlab,ylab="Coefficients",main="Forward stepwise path",...) abline(h=0,lwd=2) matplot(xx,t(beta),type="l",lty=1,add=TRUE) - if (breaks) abline(v=x,lty=2) + if (breaks) abline(v=xx,lty=2) if (var.labels) axis(4,at=beta[,k],labels=1:p,cex=0.8,adj=0) invisible() } From 605d6b6066da5a45e4cc7ab44643e6760347652c Mon Sep 17 00:00:00 2001 From: tibs Date: Fri, 27 Nov 2015 22:24:20 -0800 Subject: [PATCH 074/493] rob --- selectiveInference/man/fs.Rd | 1 - selectiveInference/man/lar.Rd | 1 - selectiveInference/man/larInf.Rd | 1 - selectiveInference/man/predict.fs.Rd | 2 +- selectiveInference/man/predict.lar.Rd | 3 +-- selectiveInference/man/selectiveInference.Rd | 4 ---- 6 files changed, 2 insertions(+), 10 deletions(-) diff --git a/selectiveInference/man/fs.Rd b/selectiveInference/man/fs.Rd index 102aabd..931d1be 100644 --- a/selectiveInference/man/fs.Rd +++ b/selectiveInference/man/fs.Rd @@ -77,7 +77,6 @@ x=matrix(rnorm(n*p),n,p) x=scale(x,TRUE,FALSE) beta=c(3,2,0,0,rep(0,p-4)) y=x\%*\%beta+sigma*rnorm(n) -y=y-mean(y) # run forward stepwise fsfit=fs(x,y) # call inference function diff --git a/selectiveInference/man/lar.Rd b/selectiveInference/man/lar.Rd index 70e53c5..1e9f26e 100644 --- a/selectiveInference/man/lar.Rd +++ b/selectiveInference/man/lar.Rd @@ -85,7 +85,6 @@ x=matrix(rnorm(n*p),n,p) #generate data beta=c(3,3,rep(0,p-2)) y=x\%*\%beta+sigma*rnorm(n) -y=y-mean(y) #run lar and plot results larfit=lar(x,y,verbose=TRUE) plot(larfit) diff --git a/selectiveInference/man/larInf.Rd b/selectiveInference/man/larInf.Rd index 7947ec5..e45900b 100644 --- a/selectiveInference/man/larInf.Rd +++ b/selectiveInference/man/larInf.Rd @@ -123,7 +123,6 @@ x=matrix(rnorm(n*p),n,p) x=scale(x,TRUE,TRUE)/sqrt(n-1) beta=c(3,2,0,0,rep(0,p-4)) y=x\%*\%beta+sigma*rnorm(n) -y=y-mean(y) #first run lar larfit=lar(x,y) # diff --git a/selectiveInference/man/predict.fs.Rd b/selectiveInference/man/predict.fs.Rd index 0562f6b..ca3a32a 100644 --- a/selectiveInference/man/predict.fs.Rd +++ b/selectiveInference/man/predict.fs.Rd @@ -48,5 +48,5 @@ y=x\%*\%beta+sigma*rnorm(n) y=y-mean(y) # run forward stepwise and predict functions obj=fs(x,y) -fit=predict.fs(obj,x) +fit=predict.fs(obj,x,s=3) } diff --git a/selectiveInference/man/predict.lar.Rd b/selectiveInference/man/predict.lar.Rd index a9eebb5..16aa795 100644 --- a/selectiveInference/man/predict.lar.Rd +++ b/selectiveInference/man/predict.lar.Rd @@ -48,7 +48,6 @@ x=scale(x,TRUE,TRUE)/sqrt(n-1) beta=c(3,-2,rep(0,p-2)) beta=c(rep(3,10),rep(0,p-10)) y=x\%*\%beta+sigma*rnorm(n) -y=y-mean(y) larfit=lar(x,y) -fit=predict.lar(larfit,x,type="fit") +fit=predict.lar(larfit,x,s=3.5,type="fit") } diff --git a/selectiveInference/man/selectiveInference.Rd b/selectiveInference/man/selectiveInference.Rd index 1043f01..0f29e32 100644 --- a/selectiveInference/man/selectiveInference.Rd +++ b/selectiveInference/man/selectiveInference.Rd @@ -81,7 +81,6 @@ x=matrix(rnorm(n*p),n,p) x=scale(x,TRUE,TRUE)/sqrt(n-1) beta=c(4,2,0,0,rep(0,p-4)) y=x\%*\%beta+sigma*rnorm(n) -y=y-mean(y) # #first run forward stepwise fsfit=fs(x,y) @@ -123,7 +122,6 @@ out=fsInf(fsfit) #x=scale(x,TRUE,TRUE)/sqrt(n-1) #beta=c(3,2,0,0,rep(0,p-4)) #y=x%*%beta+sigma*rnorm(n) -#y=y-mean(y) #first run lar # larfit=lar(x,y) # @@ -169,7 +167,6 @@ out=fsInf(fsfit) #x=scale(x,TRUE,FALSE) #beta=c(3,2,0,0,rep(0,p-4)) #y=x%*%beta+sigma*rnorm(n) -#y=y-mean(y) #out=estimateSigma(x,y) @@ -182,7 +179,6 @@ set.seed(43) #x=scale(x,T,F) #beta=c(3,2,0,0,rep(0,p-4)) #y=x%*%beta+sigma*rnorm(n) -#y=y-mean(y) # #estimate lambda using the known value of sigma #lamhat=estimateLambda(x,sigma=.7) From 4f97bc9cfc807a65bc8fd35d6c09afafc811a588 Mon Sep 17 00:00:00 2001 From: tibs Date: Sat, 28 Nov 2015 08:48:57 -0800 Subject: [PATCH 075/493] rob --- selectiveInference/man/selectiveInference.Rd | 1 - 1 file changed, 1 deletion(-) diff --git a/selectiveInference/man/selectiveInference.Rd b/selectiveInference/man/selectiveInference.Rd index 0f29e32..66423ca 100644 --- a/selectiveInference/man/selectiveInference.Rd +++ b/selectiveInference/man/selectiveInference.Rd @@ -102,7 +102,6 @@ out=fsInf(fsfit) #x=scale(x,TRUE,TRUE)/sqrt(n-1) #beta=c(4,2,0,0,rep(0,p-4)) #y=x%*%beta+sigma*rnorm(n) -#y=y-mean(y) # # first run glmnet #gfit=glmnet(x,y,standardize=FALSE) From e3f80945a97e37b34e6a3058a7bdc7d6b3e82858 Mon Sep 17 00:00:00 2001 From: Ryan Tibshirani Date: Sat, 28 Nov 2015 12:28:07 -0500 Subject: [PATCH 076/493] Cleaned up the fs, fsInf, and plot.fs examples in the man files --- selectiveInference/NAMESPACE | 6 ++-- selectiveInference/R/funs.lar.R | 2 +- selectiveInference/man/fs.Rd | 41 +++++++-------------- selectiveInference/man/fsInf.Rd | 59 ++++++++++--------------------- selectiveInference/man/plot.fs.Rd | 18 ++++------ 5 files changed, 42 insertions(+), 84 deletions(-) diff --git a/selectiveInference/NAMESPACE b/selectiveInference/NAMESPACE index b306d85..8dd9120 100644 --- a/selectiveInference/NAMESPACE +++ b/selectiveInference/NAMESPACE @@ -31,7 +31,7 @@ S3method("print", "groupfsInf") useDynLib("selectiveInference") import(glmnet) import(intervals) -importFrom("graphics", "abline", "axis", "matplot") -importFrom("stats", "dnorm", "lsfit", "pexp", "pnorm", "predict", - "qnorm", "rnorm", "sd", "uniroot", "dchisq", "model.matrix", "pchisq") +importFrom("graphics", abline, axis, matplot) +importFrom("stats", dnorm, lsfit, pexp, pnorm, predict, + qnorm, rnorm, sd, uniroot, dchisq, model.matrix, pchisq) diff --git a/selectiveInference/R/funs.lar.R b/selectiveInference/R/funs.lar.R index b644699..26669ca 100644 --- a/selectiveInference/R/funs.lar.R +++ b/selectiveInference/R/funs.lar.R @@ -652,7 +652,7 @@ plot.lar <- function(x, xvar=c("norm","step","lambda"), breaks=TRUE, } plot(c(),c(),xlim=range(xx,na.rm=T),ylim=range(beta,na.rm=T), - xlab=xlab,ylab="Coefficients",main="LAR path",...) + xlab=xlab,ylab="Coefficients",main="Least angle regression path",...) abline(h=0,lwd=2) matplot(xx,t(beta),type="l",lty=1,add=TRUE) if (breaks) abline(v=xx,lty=2) diff --git a/selectiveInference/man/fs.Rd b/selectiveInference/man/fs.Rd index 931d1be..c1e2a7f 100644 --- a/selectiveInference/man/fs.Rd +++ b/selectiveInference/man/fs.Rd @@ -68,37 +68,20 @@ to enter along the path} } \examples{ - -set.seed(43) -n=50 -p=10 -sigma=.7 -x=matrix(rnorm(n*p),n,p) -x=scale(x,TRUE,FALSE) -beta=c(3,2,0,0,rep(0,p-4)) -y=x\%*\%beta+sigma*rnorm(n) +set.seed(33) +n = 50 +p = 10 +sigma = 1 +x = matrix(rnorm(n*p),n,p) +beta = c(3,2,rep(0,p-2)) +y = x\%*\%beta + sigma*rnorm(n) # run forward stepwise -fsfit=fs(x,y) -# call inference function -out=fsInf(fsfit) -# +fsfit = fs(x,y) -#NOT RUN -# states data example: predict life expectancy -#x=state.x77[,-4] -#y=state.x77[,4] -#x=scale(x,TRUE,TRUE) -#n=nrow(x) -# -# estimate sigma from cross-validated lasso fit -#cvf=cv.glmnet(x,y) -#sigmahat=estimateSigma(x,y,stand=FALSE)$sigmahat -# -# fit forwardStepwise -# fsfit=fs(x,y,normalize=FALSE) -# -# compute p-values and confidence intervals -# fsInf(fsfit,sigma=sigmahat) +# compute sequential p-values and confidence intervals +# (sigma estimated from full model) +out = fsInf(fsfit) +out } diff --git a/selectiveInference/man/fsInf.Rd b/selectiveInference/man/fsInf.Rd index 66fc758..237f7e6 100644 --- a/selectiveInference/man/fsInf.Rd +++ b/selectiveInference/man/fsInf.Rd @@ -109,47 +109,26 @@ model selection. arXiv:1405.3920. \seealso{\code{\link{fs}}} \examples{ -set.seed(433) - -n=50 -p=10 -sigma=.7 -x=matrix(rnorm(n*p),n,p) +set.seed(33) +n = 50 +p = 10 +sigma = 1 +x = matrix(rnorm(n*p),n,p) +beta = c(3,2,rep(0,p-2)) +y = x\%*\%beta + sigma*rnorm(n) +# run forward stepwise +fsfit = fs(x,y) -x=scale(x,TRUE,TRUE)/sqrt(n-1) -beta=c(4,2,0,0,rep(0,p-4)) -y=x\%*\%beta+sigma*rnorm(n) -y=y-mean(y) -#first run forward stepwise - fsfit=fs(x,y) -# -# forward stepwise inference for each successive entry of a predictor; -# -# sigma estimated from mean squared residual -# - aa=fsInf(fsfit) +# compute sequential p-values and confidence intervals +# (sigma estimated from full model) +out.seq = fsInf(fsfit) +out.seq -#NOT RUN -# forward stepwise inference for fixed model of size 4, testing deletion of each predictor; -# known value of sigma used -# aa2=fsInf(fsfit,sigma=sigma,type="all",k=4) +# compute p-values and confidence intervals after AIC stopping +out.aic = fsInf(fsfit,type="aic") +out.aic -# forward stepwise inference for model chosen by AIC, testing deletion of each predictor; -# known value of sigma used -# aa3=fsInf(fsfit,sigma=sigma,type="aic") -# -# states data example: predict life expectancy -#x=state.x77[,-4] -#y=state.x77[,4] -#x=scale(x,TRUE,TRUE) -#n=nrow(x) -# estimate sigma from cross-validated lasso fit -#cvf=cv.glmnet(x,y) -#sigmahat=estimateSigma(x,y,stand=FALSE)$sigmahat -# -# run forward stepwise -#fsfit=fs(x,y,normalize=FALSE) -# -# compute p-values and confidence intervals -# fsInf(fsfit,sigma=sigmahat) +# compute p-values and confidence intervals after 5 fixed steps +out.fix = fsInf(fsfit,type="all",k=5) +out.fix } diff --git a/selectiveInference/man/plot.fs.Rd b/selectiveInference/man/plot.fs.Rd index e90da5d..b712cdc 100644 --- a/selectiveInference/man/plot.fs.Rd +++ b/selectiveInference/man/plot.fs.Rd @@ -29,16 +29,12 @@ Default is TRUE} \examples{ set.seed(33) -n=200 -p=20 -sigma=1 -x=matrix(rnorm(n*p),n,p) -x=scale(x,TRUE,TRUE)/sqrt(n-1) -#generate y -beta=c(3,-2,rep(0,p-2)) -beta=c(rep(3,10),rep(0,p-10)) -y=x\%*\%beta+sigma*rnorm(n) -y=y-mean(y) -fsfit=fs(x,y) +n = 200 +p = 20 +sigma = 1 +x = matrix(rnorm(n*p),n,p) +beta = c(rep(3,10),rep(0,p-10)) +y = x\%*\%beta + sigma*rnorm(n) +fsfit = fs(x,y) plot(fsfit) } From 3117fd7b950a51ba68c36d96eed6dbb03f52db01 Mon Sep 17 00:00:00 2001 From: tibs Date: Sat, 28 Nov 2015 17:32:33 -0800 Subject: [PATCH 077/493] rob --- selectiveInference/man/estimateSigma.Rd | 11 ++++++++--- selectiveInference/man/fixedLassoInf.Rd | 7 ++++--- selectiveInference/man/forwardStop.Rd | 3 ++- selectiveInference/man/lar.Rd | 3 ++- selectiveInference/man/larInf.Rd | 12 ++++++------ selectiveInference/man/plot.lar.Rd | 7 +++++-- selectiveInference/man/predict.fs.Rd | 7 ++++--- selectiveInference/man/predict.lar.Rd | 8 ++++++-- selectiveInference/man/selectiveInference.Rd | 8 +++----- 9 files changed, 40 insertions(+), 26 deletions(-) diff --git a/selectiveInference/man/estimateSigma.Rd b/selectiveInference/man/estimateSigma.Rd index 9397a08..ad7ee68 100644 --- a/selectiveInference/man/estimateSigma.Rd +++ b/selectiveInference/man/estimateSigma.Rd @@ -42,20 +42,25 @@ A study of error variance estimation in lasso regression. arXiv:1311.5274. \author{Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid} \examples{ +# generate data +# set.seed(43) n=50 p=10 sigma=.7 x=matrix(rnorm(n*p),n,p) -x=scale(x,TRUE,FALSE) beta=c(3,2,0,0,rep(0,p-4)) y=x\%*\%beta+sigma*rnorm(n) y=y-mean(y) - +# +# Estimate sigma out=estimateSigma(x,y) +# #run forwrad stepwise fit=fs(x,y) +# +# run inference functions out2=fsInf(fit,sigma=out$sigmahat) - +out2 } diff --git a/selectiveInference/man/fixedLassoInf.Rd b/selectiveInference/man/fixedLassoInf.Rd index 609136e..1ef078d 100644 --- a/selectiveInference/man/fixedLassoInf.Rd +++ b/selectiveInference/man/fixedLassoInf.Rd @@ -121,22 +121,23 @@ n=50 p=10 sigma=.7 x=matrix(rnorm(n*p),n,p) -x=scale(x,TRUE,TRUE)/sqrt(n-1) beta=c(3,2,0,0,rep(0,p-4)) y=x\%*\%beta+sigma*rnorm(n) y=y-mean(y) +# # first run glmnet -gfit=glmnet(x,y,standardize=FALSE) +gfit=glmnet(x,y) lambda = .1 #extract coef for a given lambda; Note the 1/n factor! beta = coef(gfit, s=lambda/n, exact=TRUE)[-1] # compute fixed lambda p-values and selection intervals out=fixedLassoInf(x,y,beta,lambda,sigma=sigma) +out # #NOT RUN # as above, but use lar function instead to get initial lasso fit (should get same result) -# fit=lar(x,y,normalize=FALSE) +# fit=lar(x,y) # beta=coef(fit,s=lambda,mode="lambda") # fixedLassoInf(x,y,beta,lambda,sigma=sigma) diff --git a/selectiveInference/man/forwardStop.Rd b/selectiveInference/man/forwardStop.Rd index 7863afe..e30e052 100644 --- a/selectiveInference/man/forwardStop.Rd +++ b/selectiveInference/man/forwardStop.Rd @@ -39,15 +39,16 @@ n=50 p=10 sigma=.7 x=matrix(rnorm(n*p),n,p) -x=scale(x,TRUE,TRUE)/sqrt(n-1) beta=c(4,2,0,0,rep(0,p-4)) y=x\%*\%beta+sigma*rnorm(n) y=y-mean(y) +# #first run forward stepwise fsfit=fs(x,y) # # run inference function out=fsInf(fsfit) +# # estimate optimal stopping point forwardStop(out$pv, alpha=.10) } diff --git a/selectiveInference/man/lar.Rd b/selectiveInference/man/lar.Rd index 1e9f26e..92e1c1e 100644 --- a/selectiveInference/man/lar.Rd +++ b/selectiveInference/man/lar.Rd @@ -77,14 +77,15 @@ Jerome Friedman (2002, 2009). Elements of Statistical Learning. \examples{ +#generate data set.seed(33) n=20 p=10 sigma=1 x=matrix(rnorm(n*p),n,p) -#generate data beta=c(3,3,rep(0,p-2)) y=x\%*\%beta+sigma*rnorm(n) +# #run lar and plot results larfit=lar(x,y,verbose=TRUE) plot(larfit) diff --git a/selectiveInference/man/larInf.Rd b/selectiveInference/man/larInf.Rd index e45900b..15e6c90 100644 --- a/selectiveInference/man/larInf.Rd +++ b/selectiveInference/man/larInf.Rd @@ -120,28 +120,28 @@ n=50 p=10 sigma=.7 x=matrix(rnorm(n*p),n,p) -x=scale(x,TRUE,TRUE)/sqrt(n-1) beta=c(3,2,0,0,rep(0,p-4)) y=x\%*\%beta+sigma*rnorm(n) #first run lar - larfit=lar(x,y) +larfit=lar(x,y) +larfit # #lar inference for each successive entry of a predictor; sigma estimated # from mean squared residual from least squares fit - out=larInf(larfit) +out=larInf(larfit) +out # #NOT RUN # states data example: predict life expectancy #x=state.x77[,-4] #y=state.x77[,4] -#x=scale(x,TRUE,TRUE) #n=nrow(x) # estimate sigma from cross-validated lasso fit #cvf=cv.glmnet(x,y) -#sigmahat=estimateSigma(x,y,stand=FALSE)$sigmahat +#sigmahat=estimateSigma(x,y)$sigmahat # # run LAR -#larfit=lar(x,y,normalize=FALSE) +#larfit=lar(x,y) # # compute p-values and confidence intervals # larInf(larfit,sigma=sigmahat) diff --git a/selectiveInference/man/plot.lar.Rd b/selectiveInference/man/plot.lar.Rd index 668ce1c..03e9193 100644 --- a/selectiveInference/man/plot.lar.Rd +++ b/selectiveInference/man/plot.lar.Rd @@ -32,17 +32,20 @@ Default is TRUE} \author{Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid} \examples{ +#generate data set.seed(33) n=200 p=20 sigma=1 x=matrix(rnorm(n*p),n,p) -x=scale(x,TRUE,TRUE)/sqrt(n-1) -#generate y beta=c(3,-2,rep(0,p-2)) beta=c(rep(3,10),rep(0,p-10)) y=x\%*\%beta+sigma*rnorm(n) y=y-mean(y) +# +#run lar larfit=lar(x,y) +# +#plot results plot(larfit) } diff --git a/selectiveInference/man/predict.fs.Rd b/selectiveInference/man/predict.fs.Rd index ca3a32a..f64e63b 100644 --- a/selectiveInference/man/predict.fs.Rd +++ b/selectiveInference/man/predict.fs.Rd @@ -35,18 +35,19 @@ Either a vector/matrix of predictions, or a vector/matrix of coefficients. \author{Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid} \examples{ +#generate data set.seed(33) n=200 p=20 sigma=1 x=matrix(rnorm(n*p),n,p) -x=scale(x,TRUE,TRUE)/sqrt(n-1) -#generate y -beta=c(3,-2,rep(0,p-2)) beta=c(rep(3,10),rep(0,p-10)) y=x\%*\%beta+sigma*rnorm(n) y=y-mean(y) +# # run forward stepwise and predict functions obj=fs(x,y) +obj fit=predict.fs(obj,x,s=3) +fit } diff --git a/selectiveInference/man/predict.lar.Rd b/selectiveInference/man/predict.lar.Rd index 16aa795..67331ed 100644 --- a/selectiveInference/man/predict.lar.Rd +++ b/selectiveInference/man/predict.lar.Rd @@ -38,16 +38,20 @@ Either a vector/matrix of predictions, or a vector/matrix of coefficients. \author{Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid} \examples{ +#generate data set.seed(33) n=200 p=20 sigma=1 x=matrix(rnorm(n*p),n,p) -x=scale(x,TRUE,TRUE)/sqrt(n-1) -#generate y + beta=c(3,-2,rep(0,p-2)) beta=c(rep(3,10),rep(0,p-10)) y=x\%*\%beta+sigma*rnorm(n) +#run lar larfit=lar(x,y) +# predict from lar fit fit=predict.lar(larfit,x,s=3.5,type="fit") +fit + } diff --git a/selectiveInference/man/selectiveInference.Rd b/selectiveInference/man/selectiveInference.Rd index 66423ca..2aca327 100644 --- a/selectiveInference/man/selectiveInference.Rd +++ b/selectiveInference/man/selectiveInference.Rd @@ -78,17 +78,17 @@ n=50 p=10 sigma=.7 x=matrix(rnorm(n*p),n,p) -x=scale(x,TRUE,TRUE)/sqrt(n-1) beta=c(4,2,0,0,rep(0,p-4)) y=x\%*\%beta+sigma*rnorm(n) # #first run forward stepwise - fsfit=fs(x,y) +fsfit=fs(x,y) # # forward stepwise inference for each successive entry of a predictor; # sigma estimated from mean squared residual # out=fsInf(fsfit) +out ## #NOT RUN @@ -99,7 +99,6 @@ out=fsInf(fsfit) #p=10 #sigma=.7 #x=matrix(rnorm(n*p),n,p) -#x=scale(x,TRUE,TRUE)/sqrt(n-1) #beta=c(4,2,0,0,rep(0,p-4)) #y=x%*%beta+sigma*rnorm(n) # @@ -118,11 +117,11 @@ out=fsInf(fsfit) #p=10 #sigma=.7 #x=matrix(rnorm(n*p),n,p) -#x=scale(x,TRUE,TRUE)/sqrt(n-1) #beta=c(3,2,0,0,rep(0,p-4)) #y=x%*%beta+sigma*rnorm(n) #first run lar # larfit=lar(x,y) +# larfit # #lar inference for each successive entry of a predictor; sigma estimated # from mean squared residual from least squares fit @@ -175,7 +174,6 @@ set.seed(43) #p=10 #sigma=.7 #x=matrix(rnorm(n*p),n,p) -#x=scale(x,T,F) #beta=c(3,2,0,0,rep(0,p-4)) #y=x%*%beta+sigma*rnorm(n) # From 179de960ad9337c036049c2835112a73ade8e344 Mon Sep 17 00:00:00 2001 From: Ryan Tibshirani Date: Sun, 29 Nov 2015 17:05:31 -0500 Subject: [PATCH 078/493] Just some edits to the documentation --- selectiveInference/R/funs.groupfs.R | 3 +- selectiveInference/man/estimateSigma.Rd | 44 ++--- selectiveInference/man/fixedLassoInf.Rd | 60 ++---- selectiveInference/man/forwardStop.Rd | 35 ++-- selectiveInference/man/fs.Rd | 14 +- selectiveInference/man/fsInf.Rd | 3 +- selectiveInference/man/lar.Rd | 31 +-- selectiveInference/man/larInf.Rd | 53 +++-- selectiveInference/man/manyMeans.Rd | 14 +- selectiveInference/man/plot.fs.Rd | 8 +- selectiveInference/man/plot.lar.Rd | 25 +-- selectiveInference/man/predict.fs.Rd | 22 +-- selectiveInference/man/predict.lar.Rd | 25 +-- selectiveInference/man/selectiveInference.Rd | 195 ++++++++----------- 14 files changed, 230 insertions(+), 302 deletions(-) diff --git a/selectiveInference/R/funs.groupfs.R b/selectiveInference/R/funs.groupfs.R index 20ef265..a5f46c8 100644 --- a/selectiveInference/R/funs.groupfs.R +++ b/selectiveInference/R/funs.groupfs.R @@ -19,7 +19,8 @@ #' index = sort(rep(1:20, 2)) #' y = rnorm(20) + 2 * x[,1] - x[,4] #' fit = groupfs(x, y, index, maxsteps = 5) -#' pvals = groupfsInf(fit) +#' out = groupfsInf(fit) +#' out #' @seealso \code{\link{groupfsInf}}, \code{\link{factorDesign}}. groupfs <- function(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE, center = TRUE, normalize = TRUE, aicstop = 0, verbose = FALSE) { diff --git a/selectiveInference/man/estimateSigma.Rd b/selectiveInference/man/estimateSigma.Rd index ad7ee68..c956121 100644 --- a/selectiveInference/man/estimateSigma.Rd +++ b/selectiveInference/man/estimateSigma.Rd @@ -26,41 +26,39 @@ This function estimates the standard deviation of the noise, in a linear regresi A lasso regression is fit, using cross-validation to estimate the tuning parameter lambda. With sample size n, yhat equal to the predicted values and df being the number of nonzero coefficients from the lasso fit, the estimate of sigma is \code{sqrt(sum((y-yhat)^2) / (n-df-1))}. -Important: if you are using glmnet to compute the lasso estimate, be sure to use the same values -for the intercept and standardized argument in glmnet and estimateSigma. Same applies to fs or lar, -where the argument for standardization is called "normalize" +Important: if you are using glmnet to compute the lasso estimate, be sure to use the settings +for the "intercept" and "standardize" arguments in glmnet and estimateSigma. Same applies to fs +or lar, where the argument for standardization is called "normalize". } \value{ \item{sigmahat}{The estimate of sigma} \item{df}{The degrees of freedom of lasso fit used} } \references{ -Stephen Reid, Jerome Friedman and Rob Tibshirani (2014). +Stephen Reid, Jerome Friedman, and Rob Tibshirani (2014). A study of error variance estimation in lasso regression. arXiv:1311.5274. } \author{Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid} \examples{ -# generate data -# -set.seed(43) -n=50 -p=10 -sigma=.7 -x=matrix(rnorm(n*p),n,p) -beta=c(3,2,0,0,rep(0,p-4)) -y=x\%*\%beta+sigma*rnorm(n) -y=y-mean(y) -# -# Estimate sigma -out=estimateSigma(x,y) -# #run forwrad stepwise -fit=fs(x,y) -# -# run inference functions -out2=fsInf(fit,sigma=out$sigmahat) -out2 +set.seed(33) +n = 50 +p = 10 +sigma = 1 +x = matrix(rnorm(n*p),n,p) +beta = c(3,2,rep(0,p-2)) +y = x\%*\%beta + sigma*rnorm(n) + +# run forward stepwise +fsfit = fs(x,y) + +# estimate sigma +sigmahat = estimateSigma(x,y)$sigmahat + +# run sequential inference with estimated sigma +out = fsInf(fsfit,sigma=sigmahat) +out } diff --git a/selectiveInference/man/fixedLassoInf.Rd b/selectiveInference/man/fixedLassoInf.Rd index 1ef078d..8c7afce 100644 --- a/selectiveInference/man/fixedLassoInf.Rd +++ b/selectiveInference/man/fixedLassoInf.Rd @@ -108,55 +108,37 @@ to alpha/2, and can be used for error-checking purposes. } \references{ -Jason Lee, Dennis Sun, Yuekai Sun, Jonathan Taylor (2013). +Jason Lee, Dennis Sun, Yuekai Sun, and Jonathan Taylor (2013). Exact post-selection inference, with application to the lasso. arXiv:1311.6238. } \author{Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid} \examples{ - -#generate data set.seed(43) -n=50 -p=10 -sigma=.7 -x=matrix(rnorm(n*p),n,p) -beta=c(3,2,0,0,rep(0,p-4)) -y=x\%*\%beta+sigma*rnorm(n) -y=y-mean(y) -# -# first run glmnet -gfit=glmnet(x,y) +n = 50 +p = 10 +sigma = 1 +x = matrix(rnorm(n*p),n,p) +beta = c(3,2,rep(0,p-2)) +y = x\%*\%beta + sigma*rnorm(n) + +# first run glmnet +gfit = glmnet(x,y) + +# extract coef for a given lambda; note the 1/n factor! +# (and we don't save the intercept term) lambda = .1 -#extract coef for a given lambda; Note the 1/n factor! beta = coef(gfit, s=lambda/n, exact=TRUE)[-1] # compute fixed lambda p-values and selection intervals -out=fixedLassoInf(x,y,beta,lambda,sigma=sigma) +out = fixedLassoInf(x,y,beta,lambda,sigma=sigma) out -# -#NOT RUN -# as above, but use lar function instead to get initial lasso fit (should get same result) -# fit=lar(x,y) -# beta=coef(fit,s=lambda,mode="lambda") -# fixedLassoInf(x,y,beta,lambda,sigma=sigma) - -## -# states data example: predict life expectancy -#x=state.x77[,-4] -#y=state.x77[,4] -#x=scale(x,TRUE,TRUE) -#n=nrow(x) -# estimate sigma from cross-validated lasso fit -# cvf=cv.glmnet(x,y) -# sigmahat=estimateSigma(x,y,stand=FALSE)$sigmahat -# -# fit lasso -# lambda=n*cvf$lambda.min -# gfit=glmnet(x,y,standardize=FALSE) -# bhat=coef(gfit, s=lambda/n, exact=TRUE)[-1] -# -# compute p-values and confidence intervals -# fixedLassoInf(x,y,bhat,lambda,sigma=sigmahat) +## NOT RUN +## as above, but use lar function instead to get initial +## lasso fit (should get same results) +# lfit = lar(x,y) +# beta = coef(lfit,s=lambda,mode="lambda") +# out2 = fixedLassoInf(x,y,beta,lambda,sigma=sigma) +# out2 } diff --git a/selectiveInference/man/forwardStop.Rd b/selectiveInference/man/forwardStop.Rd index e30e052..87eb7ab 100644 --- a/selectiveInference/man/forwardStop.Rd +++ b/selectiveInference/man/forwardStop.Rd @@ -27,28 +27,29 @@ Guarantees FDR control at the level alpha, for independent p-values. Step number for sequential stop. } \references{ -Max Grazier G'Sell, Stefan Wager, Alexandra Chouldechova, Rob Tibshirani (2014). +Max Grazier G'Sell, Stefan Wager, Alexandra Chouldechova, and Rob Tibshirani (2014). Sequential selection procedures and Fflse Discovery Rate Control. arXiv:1309.5352. To appear in Journal of the Royal Statistical Society: Series B. } \author{Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid} \examples{ -set.seed(433) -n=50 -p=10 -sigma=.7 -x=matrix(rnorm(n*p),n,p) -beta=c(4,2,0,0,rep(0,p-4)) -y=x\%*\%beta+sigma*rnorm(n) -y=y-mean(y) -# -#first run forward stepwise - fsfit=fs(x,y) -# -# run inference function - out=fsInf(fsfit) -# +set.seed(33) +n = 50 +p = 10 +sigma = 1 +x = matrix(rnorm(n*p),n,p) +beta = c(3,2,rep(0,p-2)) +y = x\%*\%beta + sigma*rnorm(n) + +# run forward stepwise +fsfit = fs(x,y) + +# compute sequential p-values and confidence intervals +# (sigma estimated from full model) +out = fsInf(fsfit) +out + # estimate optimal stopping point - forwardStop(out$pv, alpha=.10) +forwardStop(out$pv, alpha=.10) } diff --git a/selectiveInference/man/fs.Rd b/selectiveInference/man/fs.Rd index c1e2a7f..2a61c83 100644 --- a/selectiveInference/man/fs.Rd +++ b/selectiveInference/man/fs.Rd @@ -32,12 +32,14 @@ the interface for the \code{lar} function) \details{ This function implements forward stepwise regression, adding the predictor at each -step that maximizes the absolute correlation between the predictors-- orthogonalized wrt the current model-- and the residual. This entry +step that maximizes the absolute correlation between the predictors---once +orthogonalized with respect to the current model---and the residual. This entry criterion is standard, and is equivalent to choosing the variable that achieves the biggest drop in RSS at each step; it is used, e.g., by the \code{step} function -in R. Note that, for example, the \code{lars} package implements a stepwise option (with type="step"), but -uses a (mildly) different entry criterion, based on maximal absolute correlation between the original (non-orthogonalized) -predictors and the residual. +in R. Note that, for example, the \code{lars} package implements a stepwise option +(with type="step"), but uses a (mildly) different entry criterion, based on maximal +absolute correlation between the original (non-orthogonalized) predictors and the +residual. } \value{ \item{action}{Vector of predictors in order of entry} @@ -75,8 +77,10 @@ sigma = 1 x = matrix(rnorm(n*p),n,p) beta = c(3,2,rep(0,p-2)) y = x\%*\%beta + sigma*rnorm(n) -# run forward stepwise + +# run forward stepwise, plot results fsfit = fs(x,y) +plot(fsfit) # compute sequential p-values and confidence intervals # (sigma estimated from full model) diff --git a/selectiveInference/man/fsInf.Rd b/selectiveInference/man/fsInf.Rd index 237f7e6..b86584d 100644 --- a/selectiveInference/man/fsInf.Rd +++ b/selectiveInference/man/fsInf.Rd @@ -97,7 +97,7 @@ value chosen by the modified AIC scheme} } \references{ -Ryan Tibshirani, Jonathan Taylor, Richard Lockhart, Rob Tibshirani (2014). +Ryan Tibshirani, Jonathan Taylor, Richard Lockhart, and Rob Tibshirani (2014). Exact post-selection inference for sequential regression procedures. arXiv:1401.3889. Joshua Loftus and Jonathan Taylor (2014). A significance test for forward stepwise @@ -116,6 +116,7 @@ sigma = 1 x = matrix(rnorm(n*p),n,p) beta = c(3,2,rep(0,p-2)) y = x\%*\%beta + sigma*rnorm(n) + # run forward stepwise fsfit = fs(x,y) diff --git a/selectiveInference/man/lar.Rd b/selectiveInference/man/lar.Rd index 92e1c1e..590a663 100644 --- a/selectiveInference/man/lar.Rd +++ b/selectiveInference/man/lar.Rd @@ -62,10 +62,10 @@ to enter along the path} } \references{ -Brad Efron, Trevor Hastie, Iain Johnstone and Rob Tibshirani (2002). +Brad Efron, Trevor Hastie, Iain Johnstone, and Rob Tibshirani (2002). Least angle regression. Annals of Statistics (with discussion). -See also the descriptions in Trevor Hastie, Rob Tibshirani and +See also the descriptions in Trevor Hastie, Rob Tibshirani, and Jerome Friedman (2002, 2009). Elements of Statistical Learning. } @@ -76,17 +76,20 @@ Jerome Friedman (2002, 2009). Elements of Statistical Learning. } \examples{ +set.seed(43) +n = 50 +p = 10 +sigma = 1 +x = matrix(rnorm(n*p),n,p) +beta = c(3,2,rep(0,p-2)) +y = x\%*\%beta + sigma*rnorm(n) -#generate data -set.seed(33) -n=20 -p=10 -sigma=1 -x=matrix(rnorm(n*p),n,p) -beta=c(3,3,rep(0,p-2)) -y=x\%*\%beta+sigma*rnorm(n) -# -#run lar and plot results -larfit=lar(x,y,verbose=TRUE) -plot(larfit) +# run LAR, plot results +larfit = lar(x,y) +plot(larfit) + +# compute sequential p-values and confidence intervals +# (sigma estimated from full model) +out = larInf(larfit) +out } diff --git a/selectiveInference/man/larInf.Rd b/selectiveInference/man/larInf.Rd index 15e6c90..8e3b2d0 100644 --- a/selectiveInference/man/larInf.Rd +++ b/selectiveInference/man/larInf.Rd @@ -102,7 +102,7 @@ value chosen by the modified AIC scheme} } \references{ -Ryan Tibshirani, Jonathan Taylor, Richard Lockhart, Rob Tibshirani (2014). +Ryan Tibshirani, Jonathan Taylor, Richard Lockhart, and Rob Tibshirani (2014). Exact post-selection inference for sequential regression procedures. arXiv:1401.3889. } @@ -113,37 +113,28 @@ Exact post-selection inference for sequential regression procedures. arXiv:1401. } \examples{ - -#generate data set.seed(43) -n=50 -p=10 -sigma=.7 -x=matrix(rnorm(n*p),n,p) -beta=c(3,2,0,0,rep(0,p-4)) -y=x\%*\%beta+sigma*rnorm(n) -#first run lar -larfit=lar(x,y) -larfit -# -#lar inference for each successive entry of a predictor; sigma estimated -# from mean squared residual from least squares fit -out=larInf(larfit) -out -# -#NOT RUN -# states data example: predict life expectancy -#x=state.x77[,-4] -#y=state.x77[,4] -#n=nrow(x) -# estimate sigma from cross-validated lasso fit -#cvf=cv.glmnet(x,y) -#sigmahat=estimateSigma(x,y)$sigmahat -# +n = 50 +p = 10 +sigma = 1 +x = matrix(rnorm(n*p),n,p) +beta = c(3,2,rep(0,p-2)) +y = x\%*\%beta + sigma*rnorm(n) + # run LAR -#larfit=lar(x,y) -# -# compute p-values and confidence intervals -# larInf(larfit,sigma=sigmahat) +larfit = lar(x,y) + +# compute sequential p-values and confidence intervals +# (sigma estimated from full model) +out.seq = larInf(larfit) +out.seq + +# compute p-values and confidence intervals after AIC stopping +out.aic = larInf(larfit,type="aic") +out.aic + +# compute p-values and confidence intervals after 5 fixed steps +out.fix = larInf(larfit,type="all",k=5) +out.fix } diff --git a/selectiveInference/man/manyMeans.Rd b/selectiveInference/man/manyMeans.Rd index 62a1400..57fc429 100644 --- a/selectiveInference/man/manyMeans.Rd +++ b/selectiveInference/man/manyMeans.Rd @@ -43,7 +43,7 @@ were selected by the procedure (either BH(q) or top-K). Labelled "Selind" in out } \references{ -Stephen Reid, Jonathan Taylor, Rob Tibshirani (2014). +Stephen Reid, Jonathan Taylor, and Rob Tibshirani (2014). Post-selection point and interval estimation of signal sizes in Gaussian samples. arXiv:1405.3340. } @@ -51,12 +51,10 @@ arXiv:1405.3340. \author{Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid} \examples{ - - set.seed(12345) -n = 100 # sample size -signal = 3 # signal size -mu = c(rep(signal, floor (n/5)), rep(0, n-floor(n/5))) # 20% of elements get the signal; rest 0 -y = mu + rnorm (n, 0, 1) -out = manyMeans(y, bh.q=0.1) +n = 100 +mu = c(rep(3,floor(n/5)), rep(0,n-floor(n/5))) +y = mu + rnorm(n) +out = manyMeans(y, bh.q=0.1) +out } diff --git a/selectiveInference/man/plot.fs.Rd b/selectiveInference/man/plot.fs.Rd index b712cdc..4f77013 100644 --- a/selectiveInference/man/plot.fs.Rd +++ b/selectiveInference/man/plot.fs.Rd @@ -29,12 +29,14 @@ Default is TRUE} \examples{ set.seed(33) -n = 200 -p = 20 +n = 50 +p = 10 sigma = 1 x = matrix(rnorm(n*p),n,p) -beta = c(rep(3,10),rep(0,p-10)) +beta = c(3,2,rep(0,p-2)) y = x\%*\%beta + sigma*rnorm(n) + +# run forward stepwise, plot results fsfit = fs(x,y) plot(fsfit) } diff --git a/selectiveInference/man/plot.lar.Rd b/selectiveInference/man/plot.lar.Rd index 03e9193..baa1195 100644 --- a/selectiveInference/man/plot.lar.Rd +++ b/selectiveInference/man/plot.lar.Rd @@ -32,20 +32,15 @@ Default is TRUE} \author{Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid} \examples{ -#generate data -set.seed(33) -n=200 -p=20 -sigma=1 -x=matrix(rnorm(n*p),n,p) -beta=c(3,-2,rep(0,p-2)) -beta=c(rep(3,10),rep(0,p-10)) -y=x\%*\%beta+sigma*rnorm(n) -y=y-mean(y) -# -#run lar -larfit=lar(x,y) -# -#plot results +set.seed(43) +n = 50 +p = 10 +sigma = 1 +x = matrix(rnorm(n*p),n,p) +beta = c(3,2,rep(0,p-2)) +y = x\%*\%beta + sigma*rnorm(n) + +# run LAR, plot results +larfit = lar(x,y) plot(larfit) } diff --git a/selectiveInference/man/predict.fs.Rd b/selectiveInference/man/predict.fs.Rd index f64e63b..5e50482 100644 --- a/selectiveInference/man/predict.fs.Rd +++ b/selectiveInference/man/predict.fs.Rd @@ -35,19 +35,15 @@ Either a vector/matrix of predictions, or a vector/matrix of coefficients. \author{Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid} \examples{ -#generate data set.seed(33) -n=200 -p=20 -sigma=1 -x=matrix(rnorm(n*p),n,p) -beta=c(rep(3,10),rep(0,p-10)) -y=x\%*\%beta+sigma*rnorm(n) -y=y-mean(y) -# +n = 200 +p = 20 +sigma = 1 +x = matrix(rnorm(n*p),n,p) +beta = c(rep(3,10),rep(0,p-10)) +y = x\%*\%beta + sigma*rnorm(n) + # run forward stepwise and predict functions -obj=fs(x,y) -obj -fit=predict.fs(obj,x,s=3) -fit +obj = fs(x,y) +fit = predict(obj,x,s=3) } diff --git a/selectiveInference/man/predict.lar.Rd b/selectiveInference/man/predict.lar.Rd index 67331ed..c91bed3 100644 --- a/selectiveInference/man/predict.lar.Rd +++ b/selectiveInference/man/predict.lar.Rd @@ -38,20 +38,15 @@ Either a vector/matrix of predictions, or a vector/matrix of coefficients. \author{Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid} \examples{ -#generate data set.seed(33) -n=200 -p=20 -sigma=1 -x=matrix(rnorm(n*p),n,p) - -beta=c(3,-2,rep(0,p-2)) -beta=c(rep(3,10),rep(0,p-10)) -y=x\%*\%beta+sigma*rnorm(n) -#run lar -larfit=lar(x,y) -# predict from lar fit -fit=predict.lar(larfit,x,s=3.5,type="fit") -fit - +n = 200 +p = 20 +sigma = 1 +x = matrix(rnorm(n*p),n,p) +beta = c(rep(3,10),rep(0,p-10)) +y = x\%*\%beta + sigma*rnorm(n) + +# run lar and predict functions +obj = lar(x,y) +fit = predict(obj,x,s=3) } diff --git a/selectiveInference/man/selectiveInference.Rd b/selectiveInference/man/selectiveInference.Rd index 2aca327..7d2ca57 100644 --- a/selectiveInference/man/selectiveInference.Rd +++ b/selectiveInference/man/selectiveInference.Rd @@ -58,132 +58,93 @@ Maintainer: Rob Tibshirani } \references{ -Ryan Tibshirani, Jonathan Taylor, Richard Lockhart, Rob Tibshirani (2014). +Ryan Tibshirani, Jonathan Taylor, Richard Lockhart, and Rob Tibshirani (2014). Exact post-selection inference for sequential regression procedures. arXiv:1401.3889. -Jason Lee, Dennis Sun, Yuekai Sun, Jonathan Taylor (2013). +Jason Lee, Dennis Sun, Yuekai Sun, and Jonathan Taylor (2013). Exact post-selection inference, with application to the lasso. arXiv:1311.6238. -Stephen Reid, Jonathan Taylor, Rob Tibshirani (2014). +Stephen Reid, Jonathan Taylor, and Rob Tibshirani (2014). Post-selection point and interval estimation of signal sizes in Gaussian samples. arXiv:1405.3340. } \examples{ -# forward stepwise: -# -#generate some data -set.seed(43) -n=50 -p=10 -sigma=.7 -x=matrix(rnorm(n*p),n,p) -beta=c(4,2,0,0,rep(0,p-4)) -y=x\%*\%beta+sigma*rnorm(n) -# -#first run forward stepwise -fsfit=fs(x,y) -# -# forward stepwise inference for each successive entry of a predictor; -# sigma estimated from mean squared residual -# -out=fsInf(fsfit) -out - -## -#NOT RUN -# lasso with fixed lambda -# -#set.seed(43) -#n=50 -#p=10 -#sigma=.7 -#x=matrix(rnorm(n*p),n,p) -#beta=c(4,2,0,0,rep(0,p-4)) -#y=x%*%beta+sigma*rnorm(n) -# -# first run glmnet -#gfit=glmnet(x,y,standardize=FALSE) -#lam = .1 -#extract coef for a given lam; Note the 1/n factor in s! -#bhat = coef(gfit, s=lam/n, exact=TRUE)[-1] - -# compute fixed lambda p-values and selection intervals -#aa=fixedLassoInf(x,y,bhat,lam,sigma=sigma) -# -##least angle regression from mean squared residual -#set.seed(43) -#n=50 -#p=10 -#sigma=.7 -#x=matrix(rnorm(n*p),n,p) -#beta=c(3,2,0,0,rep(0,p-4)) -#y=x%*%beta+sigma*rnorm(n) -#first run lar -# larfit=lar(x,y) -# larfit -# -#lar inference for each successive entry of a predictor; sigma estimated -# from mean squared residual from least squares fit -# aa=larInf(larfit) - -## -##many normal means - -#set.seed(12345) -#n = 100 # sample size -#signal = 3 # signal size -#mu = c(rep(signal, floor (n/5)), rep(0, n-floor(n/5))) # 20% of elements get the signal; rest 0 -#y = mu + rnorm (n, 0, 1) -#mmObj = manyMeans(y, bh.q=0.1) -# -# -# Forward stepwise with grouped variables -#set.seed(1) -#n <- 40 -#p <- 20 -#index <- sort(rep(1:(p/2), 2)) -#steps <- 10 -#sparsity <- 5 -#snr <- 3 -# x <- matrix(rnorm(n*p), nrow=n) -# beta <- rep(0, p) -# beta[which(index %in% 1:sparsity)] <- snr -# y <- x %*% beta+rnorm(n) -#fit <- groupfs(x, y, index=1:p, maxsteps = steps) -#out<- groupfsInf(fit) - - - -##estimation of sigma for use in fsInf or larInf or fixedLassoInf -# -#set.seed(43) -#n=50 -#p=10 -#sigma=.7 -#x=matrix(rnorm(n*p),n,p) -#x=scale(x,TRUE,FALSE) -#beta=c(3,2,0,0,rep(0,p-4)) -#y=x%*%beta+sigma*rnorm(n) - -#out=estimateSigma(x,y) - -##estimation of lambda for use in fixedLassoInf -set.seed(43) -#n=50 -#p=10 -#sigma=.7 -#x=matrix(rnorm(n*p),n,p) -#beta=c(3,2,0,0,rep(0,p-4)) -#y=x%*%beta+sigma*rnorm(n) -# -#estimate lambda using the known value of sigma -#lamhat=estimateLambda(x,sigma=.7) -#first estimate sigma -#sigmahat=estimateSigma(x,y)$sigmahat -#lamhat=estimateLambda(x,sigma=sigmahat) -# - +set.seed(33) +n = 50 +p = 10 +sigma = 1 +x = matrix(rnorm(n*p),n,p) +beta = c(3,2,rep(0,p-2)) +y = x\%*\%beta + sigma*rnorm(n) + +# run forward stepwise +fsfit = fs(x,y) + +# compute sequential p-values and confidence intervals +# (sigma estimated from full model) +out.seq = fsInf(fsfit) +out.seq + +# compute p-values and confidence intervals after AIC stopping +out.aic = fsInf(fsfit,type="aic") +out.aic + +# compute p-values and confidence intervals after 5 fixed steps +out.fix = fsInf(fsfit,type="all",k=5) +out.fix + +## NOT RUN---lasso at fixed lambda +## first run glmnet +# gfit = glmnet(x,y) + +## extract coef for a given lambda; note the 1/n factor! +## (and we don't save the intercept term) +# lambda = .1 +# beta = coef(gfit, s=lambda/n, exact=TRUE)[-1] + +## compute fixed lambda p-values and selection intervals +# out = fixedLassoInf(x,y,beta,lambda,sigma=sigma) +# out + +## NOT RUN---many normal means +# set.seed(12345) +# n = 100 +# mu = c(rep(3,floor(n/5)), rep(0,n-floor(n/5))) +# y = mu + rnorm(n) +# out = manyMeans(y, bh.q=0.1) +# out + +## NOT RUN---forward stepwise with groups +# set.seed(1) +# n = 20 +# p = 40 +# x = matrix(rnorm(n*p), nrow=n) +# index = sort(rep(1:(p/2), 2)) +# y = rnorm(n) + 2 * x[,1] - x[,4] +# fit = groupfs(x, y, index, maxsteps = 5) +# out = groupfsInf(fit) +# out + +## NOT RUN---estimation of sigma for use in fsInf +## (or larInf or fixedLassoInf) +# set.seed(33) +# n = 50 +# p = 10 +# sigma = 1 +# x = matrix(rnorm(n*p),n,p) +# beta = c(3,2,rep(0,p-2)) +# y = x\%*\%beta + sigma*rnorm(n) + +## run forward stepwise +# fsfit = fs(x,y) + +## estimate sigma +# sigmahat = estimateSigma(x,y)$sigmahat + +## run sequential inference with estimated sigma +# out = fsInf(fit,sigma=sigmahat) +# out } \keyword{ package } From 9ef33d34879ab76437bb6194be1209bcafe9ce0a Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Mon, 30 Nov 2015 12:56:06 -0800 Subject: [PATCH 079/493] some renaming of variables for readability --- selectiveInference/R/funs.fs.R | 67 ++++++++++++++++++---------------- 1 file changed, 35 insertions(+), 32 deletions(-) diff --git a/selectiveInference/R/funs.fs.R b/selectiveInference/R/funs.fs.R index a46b53e..0a1b1f1 100644 --- a/selectiveInference/R/funs.fs.R +++ b/selectiveInference/R/funs.fs.R @@ -27,8 +27,8 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, ##### # Find the first variable to enter and its sign - xx = scale(x,center=F,scale=sqrt(colSums(x^2))) - uhat = t(xx)%*%y + working_x = scale(x,center=F,scale=sqrt(colSums(x^2))) + uhat = t(working_x)%*%y ihit = which.max(abs(uhat)) # Hitting coordinate s = Sign(uhat[ihit]) # Sign @@ -50,16 +50,17 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, # Gamma matrix! gbuf = max(2*p*3,2000) # Space for 3 steps, at least - gi = 0 + gi = 0 # index into rows of Gamma matrix + Gamma = matrix(0,gbuf,n) - Gamma[gi+Seq(1,p-1),] = t(s*xx[,ihit]+xx[,-ihit]); gi = gi+p-1 - Gamma[gi+Seq(1,p-1),] = t(s*xx[,ihit]-xx[,-ihit]); gi = gi+p-1 - Gamma[gi+1,] = t(s*xx[,ihit]); gi = gi+1 + Gamma[gi+Seq(1,p-1),] = t(s*working_x[,ihit]+working_x[,-ihit]); gi = gi+p-1 + Gamma[gi+Seq(1,p-1),] = t(s*working_x[,ihit]-working_x[,-ihit]); gi = gi+p-1 + Gamma[gi+1,] = t(s*working_x[,ihit]); gi = gi+1 - # nk - nk = numeric(buf) + # nconstraint + nconstraint = numeric(buf) vreg = matrix(0,buf,n) - nk[1] = gi + nconstraint[1] = gi vreg[1,] = s*x[,ihit] / sum(x[,ihit]^2) # Other things to keep track of, but not return @@ -92,41 +93,43 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, action = c(action,numeric(buf)) df = c(df,numeric(buf)) beta = cbind(beta,matrix(0,p,buf)) - nk = c(nk,numeric(buf)) + nconstraint = c(nconstraint,numeric(buf)) vreg = rbind(vreg,matrix(0,buf,n)) } # Key quantities for the next entry a = backsolve(R,t(Q1)%*%y) X2perp = X2 - X1 %*% backsolve(R,t(Q1)%*%X2) - xx = scale(X2perp,center=F,scale=sqrt(colSums(X2perp^2))) - aa = as.numeric(t(xx)%*%y) + working_x = scale(X2perp,center=F,scale=sqrt(colSums(X2perp^2))) + score = as.numeric(t(working_x)%*%y) # If the inactive set is empty, nothing will hit if (r==min(n-intercept,p)) break # Otherwise find the next hitting time else { - shits = Sign(aa) - hits = shits * aa - ihit = which.max(hits) - shit = shits[ihit] + sign_score = Sign(score) + abs_score = sign_score * score + ihit = which.max(abs_score) + shit = sign_score[ihit] } # Record the solution - action[k] = I[ihit] + # what is the difference between "action" and "A"? + + action[k] = I[ihit] df[k] = r beta[A,k] = a # Gamma matrix! if (gi + 2*p > nrow(Gamma)) Gamma = rbind(Gamma,matrix(0,2*p+gbuf,n)) - xx = t(shits*t(xx)) - Gamma[gi+Seq(1,p-r),] = t(xx); gi = gi+p-r - Gamma[gi+Seq(1,p-r-1),] = t(xx[,ihit]-xx[,-ihit]); gi = gi+p-r-1 - Gamma[gi+1,] = t(xx[,ihit]); gi = gi+1 + working_x = t(sign_score*t(working_x)) + Gamma[gi+Seq(1,p-r),] = t(working_x); gi = gi+p-r + Gamma[gi+Seq(1,p-r-1),] = t(working_x[,ihit]-working_x[,-ihit]); gi = gi+p-r-1 + Gamma[gi+1,] = t(working_x[,ihit]); gi = gi+1 - # nk, regression contrast - nk[k] = gi + # nconstraint, regression contrast + nconstraint[k] = gi vreg[k,] = shit*X2perp[,ihit] / sum(X2perp[,ihit]^2) # Update all of the variables @@ -156,7 +159,7 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, df = df[Seq(1,k-1),drop=FALSE] beta = beta[,Seq(1,k-1),drop=FALSE] Gamma = Gamma[Seq(1,gi),,drop=FALSE] - nk = nk[Seq(1,k-1)] + nconstraint = nconstraint[Seq(1,k-1)] vreg = vreg[Seq(1,k-1),,drop=FALSE] # If we reached the maximum number of steps @@ -191,7 +194,7 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, out = list(action=action,sign=s,df=df,beta=beta, completepath=completepath,bls=bls, - Gamma=Gamma,nk=nk,vreg=vreg,x=x,y=y,bx=bx,by=by,sx=sx, + Gamma=Gamma,nconstraint=nconstraint,vreg=vreg,x=x,y=y,bx=bx,by=by,sx=sx, intercept=intercept,normalize=normalize,call=this.call) class(out) = "fs" return(out) @@ -250,7 +253,7 @@ fsInf <- function(obj, sigma=NULL, alpha=0.1, k=NULL, type=c("active","all","aic p = ncol(x) n = nrow(x) G = obj$Gamma - nk = obj$nk + nconstraint = obj$nconstraint sx = obj$sx if (is.null(sigma)) { @@ -278,8 +281,8 @@ fsInf <- function(obj, sigma=NULL, alpha=0.1, k=NULL, type=c("active","all","aic for (j in 1:k) { if (verbose) cat(sprintf("Inference for variable %i ...\n",vars[j])) - Gj = G[1:nk[j],] - uj = rep(0,nk[j]) + Gj = G[1:nconstraint[j],] + uj = rep(0,nconstraint[j]) vj = vreg[j,] mj = sqrt(sum(vj^2)) vj = vj / mj # Standardize (divide by norm of vj) @@ -304,13 +307,13 @@ fsInf <- function(obj, sigma=NULL, alpha=0.1, k=NULL, type=c("active","all","aic out = aicStop(x,y,obj$action[1:k],obj$df[1:k],sigma,mult,ntimes) khat = out$khat m = out$stopped * ntimes - G = rbind(out$G,G[1:nk[khat+m],]) # Take ntimes more steps past khat - u = c(out$u,rep(0,nk[khat+m])) # (if we need to) + G = rbind(out$G,G[1:nconstraint[khat+m],]) # Take ntimes more steps past khat + u = c(out$u,rep(0,nconstraint[khat+m])) # (if we need to) kk = khat } else { - G = G[1:nk[k],] - u = rep(0,nk[k]) + G = G[1:nconstraint[k],] + u = rep(0,nconstraint[k]) kk = k } From c7f55d9e19c0af16cb41f4f3565083f5520c9f65 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Mon, 30 Nov 2015 13:14:50 -0800 Subject: [PATCH 080/493] more variable name changes --- selectiveInference/R/funs.fs.R | 92 +++++++++++++++++++--------------- 1 file changed, 51 insertions(+), 41 deletions(-) diff --git a/selectiveInference/R/funs.fs.R b/selectiveInference/R/funs.fs.R index 0a1b1f1..b7a76db 100644 --- a/selectiveInference/R/funs.fs.R +++ b/selectiveInference/R/funs.fs.R @@ -28,61 +28,68 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, ##### # Find the first variable to enter and its sign working_x = scale(x,center=F,scale=sqrt(colSums(x^2))) - uhat = t(working_x)%*%y - ihit = which.max(abs(uhat)) # Hitting coordinate - s = Sign(uhat[ihit]) # Sign + score = t(working_x)%*%y + i_hit = which.max(abs(score)) # Hitting coordinate + sign_hit = Sign(score[i_hit]) # Sign if (verbose) { - cat(sprintf("1. Adding variable %i, |A|=%i...",ihit,1)) + cat(sprintf("1. Adding variable %i, |A|=%i...",i_hit,1)) } # Now iteratively find the new FS estimates # Things to keep track of, and return at the end + # JT: I guess the "buf" just saves us from making huge + # matrices we don't need? + buf = min(maxsteps,500) action = numeric(buf) # Actions taken df = numeric(buf) # Degrees of freedom beta = matrix(0,p,buf) # FS estimates - action[1] = ihit + action[1] = i_hit df[1] = 0 beta[,1] = 0 # Gamma matrix! gbuf = max(2*p*3,2000) # Space for 3 steps, at least - gi = 0 # index into rows of Gamma matrix + gi = 0 # index into rows of Gamma matrix Gamma = matrix(0,gbuf,n) - Gamma[gi+Seq(1,p-1),] = t(s*working_x[,ihit]+working_x[,-ihit]); gi = gi+p-1 - Gamma[gi+Seq(1,p-1),] = t(s*working_x[,ihit]-working_x[,-ihit]); gi = gi+p-1 - Gamma[gi+1,] = t(s*working_x[,ihit]); gi = gi+1 + Gamma[gi+Seq(1,p-1),] = t(s*working_x[,i_hit]+working_x[,-i_hit]); gi = gi+p-1 + Gamma[gi+Seq(1,p-1),] = t(s*working_x[,i_hit]-working_x[,-i_hit]); gi = gi+p-1 + Gamma[gi+1,] = t(s*working_x[,i_hit]); gi = gi+1 # nconstraint nconstraint = numeric(buf) vreg = matrix(0,buf,n) nconstraint[1] = gi - vreg[1,] = s*x[,ihit] / sum(x[,ihit]^2) + vreg[1,] = s*x[,i_hit] / sum(x[,i_hit]^2) # Other things to keep track of, but not return r = 1 # Size of active set - A = ihit # Active set - I = Seq(1,p)[-ihit] # Inactive set - X1 = x[,ihit,drop=FALSE] # Matrix X[,A] - X2 = x[,-ihit,drop=FALSE] # Matrix X[,I] + A = i_hit # Active set -- JT: isn't this basically the same as action? + I = Seq(1,p)[-i_hit] # Inactive set + X_active = x[,i_hit,drop=FALSE] # Matrix X[,A] + X_inactive = x[,-i_hit,drop=FALSE] # Matrix X[,I] k = 2 # What step are we at? + # JT Why keep track of r and k instead of just saying k=r+1? + + # Compute a skinny QR decomposition of X_active + # JT: obs was used as variable name above -- this is something different, no? + # changed it to qr_X - # Compute a skinny QR decomposition of X1 - obj = qr(X1) - Q = qr.Q(obj,complete=TRUE) - Q1 = Q[,1,drop=FALSE]; - Q2 = Q[,-1,drop=FALSE] - R = qr.R(obj) + qr_X = qr(X_active) + Q = qr.Q(qr_X,complete=TRUE) + Q_active = Q[,1,drop=FALSE]; + Q_inactive = Q[,-1,drop=FALSE] + R = qr.R(qr_X) # Throughout the algorithm, we will maintain - # the decomposition X1 = Q1*R. Dimenisons: - # X1: n x r - # Q1: n x r - # Q2: n x (n-r) + # the decomposition X_active = Q_active*R. Dimensions: + # X_active: n x r + # Q_active: n x r + # Q_inactive: n x (n-r) # R: r x r while (k<=maxsteps) { @@ -98,9 +105,10 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, } # Key quantities for the next entry - a = backsolve(R,t(Q1)%*%y) - X2perp = X2 - X1 %*% backsolve(R,t(Q1)%*%X2) - working_x = scale(X2perp,center=F,scale=sqrt(colSums(X2perp^2))) + + a = backsolve(R,t(Q_active)%*%y) + X_inactive_resid = X_inactive - X_active %*% backsolve(R,t(Q_active)%*%X_inactive) + working_x = scale(X_inactive_resid,center=F,scale=sqrt(colSums(X_inactive_resid^2))) score = as.numeric(t(working_x)%*%y) # If the inactive set is empty, nothing will hit @@ -110,14 +118,14 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, else { sign_score = Sign(score) abs_score = sign_score * score - ihit = which.max(abs_score) - shit = sign_score[ihit] + i_hit = which.max(abs_score) + shit = sign_score[i_hit] } # Record the solution # what is the difference between "action" and "A"? - action[k] = I[ihit] + action[k] = I[i_hit] df[k] = r beta[A,k] = a @@ -125,26 +133,28 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, if (gi + 2*p > nrow(Gamma)) Gamma = rbind(Gamma,matrix(0,2*p+gbuf,n)) working_x = t(sign_score*t(working_x)) Gamma[gi+Seq(1,p-r),] = t(working_x); gi = gi+p-r - Gamma[gi+Seq(1,p-r-1),] = t(working_x[,ihit]-working_x[,-ihit]); gi = gi+p-r-1 - Gamma[gi+1,] = t(working_x[,ihit]); gi = gi+1 + Gamma[gi+Seq(1,p-r-1),] = t(working_x[,i_hit]-working_x[,-i_hit]); gi = gi+p-r-1 + Gamma[gi+1,] = t(working_x[,i_hit]); gi = gi+1 # nconstraint, regression contrast nconstraint[k] = gi - vreg[k,] = shit*X2perp[,ihit] / sum(X2perp[,ihit]^2) + vreg[k,] = shit*X_inactive_resid[,i_hit] / sum(X_inactive_resid[,i_hit]^2) # Update all of the variables r = r+1 - A = c(A,I[ihit]) - I = I[-ihit] + A = c(A,I[i_hit]) + I = I[-i_hit] s = c(s,shit) - X1 = cbind(X1,X2[,ihit]) - X2 = X2[,-ihit,drop=FALSE] + X_active = cbind(X_active,X_inactive[,i_hit]) + X_inactive = X_inactive[,-i_hit,drop=FALSE] # Update the QR decomposition - obj = updateQR(Q1,Q2,R,X1[,r]) - Q1 = obj$Q1 - Q2 = obj$Q2 - R = obj$R + updated_qr = updateQR(Q_active,Q_inactive,R,X_active[,r]) + Q_active = updated_qr$Q1 + + # JT: why do we store Q_inactive? Doesn't seem to be used. + Q_inactive = updated_qr$Q2 + R = updated_qr$R if (verbose) { cat(sprintf("\n%i. Adding variable %i, |A|=%i...",k,A[r],r)) From 0e699c5ecf105c10c1ca121d5d98d70259471d84 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Mon, 30 Nov 2015 13:24:30 -0800 Subject: [PATCH 081/493] one more name change; comment about vup, vlo --- selectiveInference/R/funs.fs.R | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/selectiveInference/R/funs.fs.R b/selectiveInference/R/funs.fs.R index b7a76db..b5b13f8 100644 --- a/selectiveInference/R/funs.fs.R +++ b/selectiveInference/R/funs.fs.R @@ -106,7 +106,6 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, # Key quantities for the next entry - a = backsolve(R,t(Q_active)%*%y) X_inactive_resid = X_inactive - X_active %*% backsolve(R,t(Q_active)%*%X_inactive) working_x = scale(X_inactive_resid,center=F,scale=sqrt(colSums(X_inactive_resid^2))) score = as.numeric(t(working_x)%*%y) @@ -127,7 +126,7 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, action[k] = I[i_hit] df[k] = r - beta[A,k] = a + beta[A,k] = backsolve(R,t(Q_active)%*%y) # Gamma matrix! if (gi + 2*p > nrow(Gamma)) Gamma = rbind(Gamma,matrix(0,2*p+gbuf,n)) @@ -360,6 +359,8 @@ fsInf <- function(obj, sigma=NULL, alpha=0.1, k=NULL, type=c("active","all","aic } } + # JT: why do we output vup, vlo? Are they used somewhere else? + out = list(type=type,k=k,khat=khat,pv=pv,ci=ci, tailarea=tailarea,vlo=vlo,vup=vup,vmat=vmat,y=y, vars=vars,sign=sign,sigma=sigma,alpha=alpha, From 6c30502efaca69823cc10ba1b80528e2ea18a735 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Mon, 30 Nov 2015 13:31:35 -0800 Subject: [PATCH 082/493] forgot to rename variable s --- selectiveInference/R/funs.fs.R | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/selectiveInference/R/funs.fs.R b/selectiveInference/R/funs.fs.R index b5b13f8..a6a9c3f 100644 --- a/selectiveInference/R/funs.fs.R +++ b/selectiveInference/R/funs.fs.R @@ -30,7 +30,8 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, working_x = scale(x,center=F,scale=sqrt(colSums(x^2))) score = t(working_x)%*%y i_hit = which.max(abs(score)) # Hitting coordinate - sign_hit = Sign(score[i_hit]) # Sign + sign_hit = Sign(score[i_hit]) # Sign + signs = sign_hit # later signs will be appended to `signs` if (verbose) { cat(sprintf("1. Adding variable %i, |A|=%i...",i_hit,1)) @@ -56,15 +57,15 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, gi = 0 # index into rows of Gamma matrix Gamma = matrix(0,gbuf,n) - Gamma[gi+Seq(1,p-1),] = t(s*working_x[,i_hit]+working_x[,-i_hit]); gi = gi+p-1 - Gamma[gi+Seq(1,p-1),] = t(s*working_x[,i_hit]-working_x[,-i_hit]); gi = gi+p-1 - Gamma[gi+1,] = t(s*working_x[,i_hit]); gi = gi+1 + Gamma[gi+Seq(1,p-1),] = t(sign_hit*working_x[,i_hit]+working_x[,-i_hit]); gi = gi+p-1 + Gamma[gi+Seq(1,p-1),] = t(sign_hit*working_x[,i_hit]-working_x[,-i_hit]); gi = gi+p-1 + Gamma[gi+1,] = t(sign_hit*working_x[,i_hit]); gi = gi+1 # nconstraint nconstraint = numeric(buf) vreg = matrix(0,buf,n) nconstraint[1] = gi - vreg[1,] = s*x[,i_hit] / sum(x[,i_hit]^2) + vreg[1,] = sign_hit*x[,i_hit] / sum(x[,i_hit]^2) # Other things to keep track of, but not return r = 1 # Size of active set @@ -118,7 +119,7 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, sign_score = Sign(score) abs_score = sign_score * score i_hit = which.max(abs_score) - shit = sign_score[i_hit] + sign_hit = sign_score[i_hit] } # Record the solution @@ -137,13 +138,13 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, # nconstraint, regression contrast nconstraint[k] = gi - vreg[k,] = shit*X_inactive_resid[,i_hit] / sum(X_inactive_resid[,i_hit]^2) + vreg[k,] = sign_hit*X_inactive_resid[,i_hit] / sum(X_inactive_resid[,i_hit]^2) # Update all of the variables r = r+1 A = c(A,I[i_hit]) I = I[-i_hit] - s = c(s,shit) + signs = c(signs,sign_hit) X_active = cbind(X_active,X_inactive[,i_hit]) X_inactive = X_inactive[,-i_hit,drop=FALSE] @@ -201,7 +202,7 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, # Assign column names colnames(beta) = as.character(Seq(1,k-1)) - out = list(action=action,sign=s,df=df,beta=beta, + out = list(action=action,sign=signs,df=df,beta=beta, completepath=completepath,bls=bls, Gamma=Gamma,nconstraint=nconstraint,vreg=vreg,x=x,y=y,bx=bx,by=by,sx=sx, intercept=intercept,normalize=normalize,call=this.call) From 034cfa7f2fcea0d0de075f3ce0f76b71cae3f7c1 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Mon, 30 Nov 2015 13:58:11 -0800 Subject: [PATCH 083/493] missed one reference to variable a --- selectiveInference/R/funs.fs.R | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/selectiveInference/R/funs.fs.R b/selectiveInference/R/funs.fs.R index a6a9c3f..c2b9806 100644 --- a/selectiveInference/R/funs.fs.R +++ b/selectiveInference/R/funs.fs.R @@ -125,9 +125,10 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, # Record the solution # what is the difference between "action" and "A"? + beta_cur = backsolve(R,t(Q_active)%*%y) action[k] = I[i_hit] df[k] = r - beta[A,k] = backsolve(R,t(Q_active)%*%y) + beta[A,k] = beta_cur # Gamma matrix! if (gi + 2*p > nrow(Gamma)) Gamma = rbind(Gamma,matrix(0,2*p+gbuf,n)) @@ -189,7 +190,7 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, # Record the least squares solution. Note that # we have already computed this bls = rep(0,p) - bls[A] = a + bls[A] = beta_cur } if (verbose) cat("\n") From 82ee21a76c1bc9af99e0d31c7722126b691c7dd5 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Mon, 30 Nov 2015 14:25:08 -0800 Subject: [PATCH 084/493] small fix to test.fs.R --- tests/test.fs.R | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/test.fs.R b/tests/test.fs.R index f811676..a078155 100644 --- a/tests/test.fs.R +++ b/tests/test.fs.R @@ -1,5 +1,4 @@ library(selectiveInference) -#library(selectiveInference,lib.loc="/Users/tibs/dropbox/git/R/mylib") library(lars) @@ -24,7 +23,7 @@ max(abs(obj$action-unlist(obj2$action))) # These don't always match ... what is the lars function doing? # Checks -max(abs(obj$action-unlist(obj2$action)) +max(abs(obj$action-unlist(obj2$action))) max(abs(coef(obj,s=4.5,mode="step")- lars::predict.lars(obj2,s=4.5,type="coef",mode="step")$coef)) max(abs(predict(obj,s=4.5,mode="step")- From 42b99323ad38fff1d9987a2a4a3cab9465241322 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Mon, 30 Nov 2015 14:46:37 -0800 Subject: [PATCH 085/493] BF: beta_cur must be computed before the possible break --- selectiveInference/R/funs.fs.R | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/selectiveInference/R/funs.fs.R b/selectiveInference/R/funs.fs.R index c2b9806..a8b4812 100644 --- a/selectiveInference/R/funs.fs.R +++ b/selectiveInference/R/funs.fs.R @@ -111,6 +111,10 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, working_x = scale(X_inactive_resid,center=F,scale=sqrt(colSums(X_inactive_resid^2))) score = as.numeric(t(working_x)%*%y) + beta_cur = backsolve(R,t(Q_active)%*%y) # must be computed before the break + # so we have it if we have + # completed the path + # If the inactive set is empty, nothing will hit if (r==min(n-intercept,p)) break @@ -125,7 +129,6 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, # Record the solution # what is the difference between "action" and "A"? - beta_cur = backsolve(R,t(Q_active)%*%y) action[k] = I[i_hit] df[k] = r beta[A,k] = beta_cur From 575f4a18dc2e0e1062e3a85a4a948bd6b4cbe2b3 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Mon, 30 Nov 2015 19:31:12 -0800 Subject: [PATCH 086/493] intersection upper / lower bounds match python code on X.csv, Y.csv --- selectiveInference/R/funs.fs.R | 110 +++++++++++++++++++++++++++++++-- 1 file changed, 104 insertions(+), 6 deletions(-) diff --git a/selectiveInference/R/funs.fs.R b/selectiveInference/R/funs.fs.R index a8b4812..39ff0c3 100644 --- a/selectiveInference/R/funs.fs.R +++ b/selectiveInference/R/funs.fs.R @@ -27,7 +27,8 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, ##### # Find the first variable to enter and its sign - working_x = scale(x,center=F,scale=sqrt(colSums(x^2))) + working_scale = sqrt(colSums(x^2)) + working_x = scale(x,center=F,scale=working_scale) score = t(working_x)%*%y i_hit = which.max(abs(score)) # Hitting coordinate sign_hit = Sign(score[i_hit]) # Sign @@ -48,10 +49,22 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, df = numeric(buf) # Degrees of freedom beta = matrix(0,p,buf) # FS estimates + offset_pos = matrix(Inf, p, buf) # upper bounds for selective maxZ + offset_neg = matrix(Inf, p, buf) # lower bounds for selective maxZ + action[1] = i_hit df[1] = 0 beta[,1] = 0 + ##### + # Variables needed to compute truncation limits for + # selective maxZ test + + realized_Z_max = c(sign_hit * score[i_hit]) + offset_pos[,1] = Inf + offset_neg[,1] = Inf + working_resid = y - x %*% beta[,1] + # Gamma matrix! gbuf = max(2*p*3,2000) # Space for 3 steps, at least gi = 0 # index into rows of Gamma matrix @@ -103,13 +116,18 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, beta = cbind(beta,matrix(0,p,buf)) nconstraint = c(nconstraint,numeric(buf)) vreg = rbind(vreg,matrix(0,buf,n)) + + offset_pos = cbind(offset_pos, matrix(0, p, buf)) + offset_neg = cbind(offset_neg, matrix(0, p, buf)) } # Key quantities for the next entry + prev_scale = working_scale[-i_hit] X_inactive_resid = X_inactive - X_active %*% backsolve(R,t(Q_active)%*%X_inactive) - working_x = scale(X_inactive_resid,center=F,scale=sqrt(colSums(X_inactive_resid^2))) - score = as.numeric(t(working_x)%*%y) + working_scale = sqrt(colSums(X_inactive_resid^2)) + working_x = scale(X_inactive_resid,center=F,scale=working_scale) + working_score = as.numeric(t(working_x)%*%y) beta_cur = backsolve(R,t(Q_active)%*%y) # must be computed before the break # so we have it if we have @@ -120,10 +138,18 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, # Otherwise find the next hitting time else { - sign_score = Sign(score) - abs_score = sign_score * score + sign_score = Sign(working_score) + abs_score = sign_score * working_score i_hit = which.max(abs_score) sign_hit = sign_score[i_hit] + # keep track of necessary quantities for selective maxZ + + offset_shift = t(X_inactive) %*% (y - working_resid) + realized_Z_scaled = realized_Z_max * prev_scale + offset_pos[I,k] = realized_Z_scaled + offset_shift + offset_neg[I,k] = realized_Z_scaled - offset_shift + + working_resid = y - X_active %*% beta_cur } # Record the solution @@ -152,6 +178,8 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, X_active = cbind(X_active,X_inactive[,i_hit]) X_inactive = X_inactive[,-i_hit,drop=FALSE] + realized_Z_max = sign_hit * working_score[i_hit] + # Update the QR decomposition updated_qr = updateQR(Q_active,Q_inactive,R,X_active[,r]) Q_active = updated_qr$Q1 @@ -176,6 +204,9 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, nconstraint = nconstraint[Seq(1,k-1)] vreg = vreg[Seq(1,k-1),,drop=FALSE] + offset_pos = offset_pos[,Seq(1,k-1),drop=FALSE] + offset_neg = offset_neg[,Seq(1,k-1),drop=FALSE] + # If we reached the maximum number of steps if (k>maxsteps) { if (verbose) { @@ -209,7 +240,8 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, out = list(action=action,sign=signs,df=df,beta=beta, completepath=completepath,bls=bls, Gamma=Gamma,nconstraint=nconstraint,vreg=vreg,x=x,y=y,bx=bx,by=by,sx=sx, - intercept=intercept,normalize=normalize,call=this.call) + intercept=intercept,normalize=normalize,call=this.call, + offset_pos=offset_pos,offset_neg=offset_neg) class(out) = "fs" return(out) } @@ -376,6 +408,72 @@ fsInf <- function(obj, sigma=NULL, alpha=0.1, k=NULL, type=c("active","all","aic ############################## +############################## + +# selected Zmax tests + +fsInf_Zmax <- function(obj, sigma=NULL, alpha=0.1, k=NULL, + gridrange=c(-100,100), bits=NULL, mult=2, ntimes=2, verbose=FALSE) { + + this.call = match.call() + + checkargs.misc(sigma=sigma,alpha=alpha,k=k, + gridrange=gridrange,mult=mult,ntimes=ntimes) + if (class(obj) != "fs") stop("obj must be an object of class fs") + if (!is.null(bits) && !requireNamespace("Rmpfr",quietly=TRUE)) { + warning("Package Rmpfr is not installed, reverting to standard precision") + bits = NULL + } + + k = min(k,length(obj$action)) # Round to last step + x = obj$x + y = obj$y + p = ncol(x) + n = nrow(x) + G = obj$Gamma + nconstraint = obj$nconstraint + sx = obj$sx + + if (is.null(sigma)) { + # TODO we should probably sample uniform + if (n >= 2*p) { + oo = obj$intercept + sigma = sqrt(sum(lsfit(x,y,intercept=oo)$res^2)/(n-p-oo)) + } + else { + sigma = sd(y) + warning(paste(sprintf("p > n/2, and sd(y) = %0.3f used as an estimate of sigma;",sigma), + "you may want to use the estimateSigma function")) + } + } + + khat = NULL + + vars = obj$action[1:k] + for (j in 1:k) { + + if (j > 1) { + active = vars[1:(j-1)] + inactive = (1:p)[-active] + } else { + inactive = 1:p + } + collapsed_pos = apply(obj$offset_pos[inactive,1:j,drop=FALSE], 1, min) + collapsed_neg = apply(obj$offset_neg[inactive,1:j,drop=FALSE], 1, min) + + # next, condition on solution up to now + } + + out = list(k=k,khat=khat,pv=pv,ci=ci, + tailarea=tailarea,vmat=vmat,y=y, + vars=vars,sign=sign,sigma=sigma,alpha=alpha, + call=this.call) + class(out) = "fsInf" + return(out) +} + +############################## + ############################## From b9c91bd474e377a2442eee3088f7d9e09c5f320d Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Mon, 30 Nov 2015 22:42:16 -0800 Subject: [PATCH 087/493] numerically agrees with python code up to the point truncated gaussians need to be drawn --- selectiveInference/NAMESPACE | 2 +- selectiveInference/R/funs.fs.R | 132 ++++++++++++++++++++++++++------- tests/test.fs.selected.R | 21 ++++++ 3 files changed, 128 insertions(+), 27 deletions(-) create mode 100644 tests/test.fs.selected.R diff --git a/selectiveInference/NAMESPACE b/selectiveInference/NAMESPACE index 8dd9120..180abf0 100644 --- a/selectiveInference/NAMESPACE +++ b/selectiveInference/NAMESPACE @@ -1,5 +1,5 @@ export(lar,fs, - larInf,fsInf, + larInf,fsInf,fsInf_maxZ, coef.lar,coef.fs, predict.lar,predict.fs, print.lar,print.fs, diff --git a/selectiveInference/R/funs.fs.R b/selectiveInference/R/funs.fs.R index 39ff0c3..119f5f4 100644 --- a/selectiveInference/R/funs.fs.R +++ b/selectiveInference/R/funs.fs.R @@ -49,8 +49,11 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, df = numeric(buf) # Degrees of freedom beta = matrix(0,p,buf) # FS estimates - offset_pos = matrix(Inf, p, buf) # upper bounds for selective maxZ - offset_neg = matrix(Inf, p, buf) # lower bounds for selective maxZ + # Buffered objects for selective maxZ test + + offset_pos_maxZ = matrix(Inf, p, buf) # upper bounds for selective maxZ + offset_neg_maxZ = matrix(Inf, p, buf) # lower bounds for selective maxZ + scale_maxZ = matrix(0, p, buf) # lower bounds for selective maxZ action[1] = i_hit df[1] = 0 @@ -60,20 +63,28 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, # Variables needed to compute truncation limits for # selective maxZ test - realized_Z_max = c(sign_hit * score[i_hit]) - offset_pos[,1] = Inf - offset_neg[,1] = Inf - working_resid = y - x %*% beta[,1] + realized_maxZ = c(sign_hit * score[i_hit]) + offset_pos_maxZ[,1] = Inf + offset_neg_maxZ[,1] = Inf + scale_maxZ[,1] = working_scale + working_resid_maxZ = y - x %*% beta[,1] # Gamma matrix! gbuf = max(2*p*3,2000) # Space for 3 steps, at least gi = 0 # index into rows of Gamma matrix + zi = 0 # index into rows of Gamma_maxZ matrix Gamma = matrix(0,gbuf,n) Gamma[gi+Seq(1,p-1),] = t(sign_hit*working_x[,i_hit]+working_x[,-i_hit]); gi = gi+p-1 Gamma[gi+Seq(1,p-1),] = t(sign_hit*working_x[,i_hit]-working_x[,-i_hit]); gi = gi+p-1 Gamma[gi+1,] = t(sign_hit*working_x[,i_hit]); gi = gi+1 + # Gamma_maxZ is the rbind + # of residualized X_{inactive \cup i_hit} + + Gamma_maxZ = matrix(0,gbuf,n) + Gamma_maxZ[zi+Seq(1,p),] = t(x); zi = zi+p + # nconstraint nconstraint = numeric(buf) vreg = matrix(0,buf,n) @@ -117,8 +128,9 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, nconstraint = c(nconstraint,numeric(buf)) vreg = rbind(vreg,matrix(0,buf,n)) - offset_pos = cbind(offset_pos, matrix(0, p, buf)) - offset_neg = cbind(offset_neg, matrix(0, p, buf)) + offset_pos_maxZ = cbind(offset_pos_maxZ, matrix(0, p, buf)) + offset_neg_maxZ = cbind(offset_neg_maxZ, matrix(0, p, buf)) + scale_maxZ = cbind(scale_maxZ, matrix(0, p, buf)) } # Key quantities for the next entry @@ -144,12 +156,13 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, sign_hit = sign_score[i_hit] # keep track of necessary quantities for selective maxZ - offset_shift = t(X_inactive) %*% (y - working_resid) - realized_Z_scaled = realized_Z_max * prev_scale - offset_pos[I,k] = realized_Z_scaled + offset_shift - offset_neg[I,k] = realized_Z_scaled - offset_shift + offset_shift = t(X_inactive) %*% (y - working_resid_maxZ) + realized_Z_scaled = realized_maxZ * prev_scale + offset_pos_maxZ[I,k] = realized_Z_scaled + offset_shift + offset_neg_maxZ[I,k] = realized_Z_scaled - offset_shift + scale_maxZ[I,k] = working_scale - working_resid = y - X_active %*% beta_cur + working_resid_maxZ = y - X_active %*% beta_cur } # Record the solution @@ -159,7 +172,16 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, df[k] = r beta[A,k] = beta_cur + # store the X_inactive_resid in Gamma_maxZ + + if (gi + p-r > nrow(Gamma_maxZ)) Gamma_maxZ = rbind(Gamma_maxZ,matrix(0,p-r,n)) + Gamma_maxZ[zi+Seq(1,p-r),] = t(X_inactive_resid); zi = zi+p-r + + # update maxZ variable + realized_maxZ = sign_hit * working_score[i_hit] + # Gamma matrix! + if (gi + 2*p > nrow(Gamma)) Gamma = rbind(Gamma,matrix(0,2*p+gbuf,n)) working_x = t(sign_score*t(working_x)) Gamma[gi+Seq(1,p-r),] = t(working_x); gi = gi+p-r @@ -178,8 +200,6 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, X_active = cbind(X_active,X_inactive[,i_hit]) X_inactive = X_inactive[,-i_hit,drop=FALSE] - realized_Z_max = sign_hit * working_score[i_hit] - # Update the QR decomposition updated_qr = updateQR(Q_active,Q_inactive,R,X_active[,r]) Q_active = updated_qr$Q1 @@ -204,8 +224,10 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, nconstraint = nconstraint[Seq(1,k-1)] vreg = vreg[Seq(1,k-1),,drop=FALSE] - offset_pos = offset_pos[,Seq(1,k-1),drop=FALSE] - offset_neg = offset_neg[,Seq(1,k-1),drop=FALSE] + offset_pos_maxZ = offset_pos_maxZ[,Seq(1,k-1),drop=FALSE] + offset_neg_maxZ = offset_neg_maxZ[,Seq(1,k-1),drop=FALSE] + scale_maxZ = offset_pos_maxZ[,Seq(1,k-1),drop=FALSE] + Gamma_maxZ = Gamma_maxZ[Seq(1,zi),,drop=FALSE] # If we reached the maximum number of steps if (k>maxsteps) { @@ -241,7 +263,8 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, completepath=completepath,bls=bls, Gamma=Gamma,nconstraint=nconstraint,vreg=vreg,x=x,y=y,bx=bx,by=by,sx=sx, intercept=intercept,normalize=normalize,call=this.call, - offset_pos=offset_pos,offset_neg=offset_neg) + offset_pos_maxZ=offset_pos_maxZ,offset_neg_maxZ=offset_neg_maxZ, + scale_maxZ=scale_maxZ,Gamma_maxZ=Gamma_maxZ) class(out) = "fs" return(out) } @@ -410,9 +433,9 @@ fsInf <- function(obj, sigma=NULL, alpha=0.1, k=NULL, type=c("active","all","aic ############################## -# selected Zmax tests +# selected maxZ tests -fsInf_Zmax <- function(obj, sigma=NULL, alpha=0.1, k=NULL, +fsInf_maxZ <- function(obj, sigma=NULL, alpha=0.1, k=NULL, gridrange=c(-100,100), bits=NULL, mult=2, ntimes=2, verbose=FALSE) { this.call = match.call() @@ -450,24 +473,81 @@ fsInf_Zmax <- function(obj, sigma=NULL, alpha=0.1, k=NULL, khat = NULL vars = obj$action[1:k] + zi = 0 for (j in 1:k) { + # the inactive set here does not + # include the variable at the j-th step + # so, at j==1, the inactive set is every variable + # at j==2, the inactive set is everything but the first one + if (j > 1) { active = vars[1:(j-1)] inactive = (1:p)[-active] } else { inactive = 1:p } - collapsed_pos = apply(obj$offset_pos[inactive,1:j,drop=FALSE], 1, min) - collapsed_neg = apply(obj$offset_neg[inactive,1:j,drop=FALSE], 1, min) + collapsed_pos = apply(obj$offset_pos_maxZ[inactive,1:j,drop=FALSE], 1, min) + collapsed_neg = apply(obj$offset_neg_maxZ[inactive,1:j,drop=FALSE], 1, min) + cur_scale = obj$scale_maxZ[,j][inactive] + cur_adjusted_X = obj$Gamma_maxZ[zi + Seq(1,p-j+1),]; zi = zi+p-j+1 + cur_X = obj$x[,inactive] # next, condition on solution up to now + + if (j > 1) { + cur_fitted = predict(obj, s=j) + cur_fitted = cur_fitted - mean(cur_fitted) + cur_offset = t(cur_X) %*% cur_fitted + } + else { + cur_fitted = 0 + cur_offset = 0 + } + + print('pos') + print(collapsed_pos) + print('neg') + print(collapsed_neg) + + print('fitted') + print(cur_fitted[1:10]) + collapsed_pos = collapsed_pos - cur_offset + collapsed_neg = collapsed_neg + cur_offset + + print("cur_offset") + print(cur_offset) + + print('pos_adj') + print(collapsed_pos) + print('neg_adj') + print(collapsed_neg) + + # now, we sample from Y_star, a centered Gaussian with covariance sigma^2 I + # subject to the constraint + # t(cur_adjusted_X) %*% Y_star < collapsed_pos + # -t(cur_adjusted_X) %*% Y_star < collapsed_neg + + # really, we want the covariance of Y_star to be \sigma^2 (I - cur_P) + # where P is projection on the j-1 previous variables + # but this doesn't matter as everything we do with the samples + # will be a function of (I - cur_P) Y_star and the constraints are + # expressible in terms of (I - cur_P) Y_star because + # we have adjusted X + + print('pos') + print(collapsed_pos) + print('neg') + print(collapsed_neg) + + # IMPORTANT: after sampling Y_star, we have to add back cur_fitted } - out = list(k=k,khat=khat,pv=pv,ci=ci, - tailarea=tailarea,vmat=vmat,y=y, - vars=vars,sign=sign,sigma=sigma,alpha=alpha, - call=this.call) + out = list(pos=collapsed_pos, neg=collapsed_neg) + #out = list(k=k,khat=khat,pv=pv,ci=ci, + # tailarea=tailarea,vmat=vmat,y=y, + # vars=vars,sign=sign,sigma=sigma,alpha=alpha, + # call=this.call) class(out) = "fsInf" return(out) } diff --git a/tests/test.fs.selected.R b/tests/test.fs.selected.R new file mode 100644 index 0000000..e5b2cf5 --- /dev/null +++ b/tests/test.fs.selected.R @@ -0,0 +1,21 @@ +library(selectiveInference) +library(lars) + +set.seed(32) + +n=50 +p=10 +sigma=1 + +x = as.matrix(read.table("X.csv", sep=',', header=FALSE)) +Y = as.numeric(read.table("Y.csv", sep=',', header=FALSE)[,1]) + +beta=c(5,4,3,2,1,rep(0,p-5)) +mu=x%*%beta + +y=mu+Y +fsfit=fs(x,y,norm=TRUE, intercept=TRUE) +out = fsInf_maxZ(fsfit,sigma=sigma) +print(out$pos) +print(-out$neg) + From 2b8206e1fc6e9788b10de3d307f9eff649a967b7 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Mon, 30 Nov 2015 22:54:15 -0800 Subject: [PATCH 088/493] removing debugging print statements --- selectiveInference/R/funs.fs.R | 61 ++++++++++++---------------------- tests/X.csv | 50 ++++++++++++++++++++++++++++ tests/Y.csv | 50 ++++++++++++++++++++++++++++ tests/test.fs.selected.R | 3 +- 4 files changed, 122 insertions(+), 42 deletions(-) create mode 100644 tests/X.csv create mode 100644 tests/Y.csv diff --git a/selectiveInference/R/funs.fs.R b/selectiveInference/R/funs.fs.R index 119f5f4..433e36e 100644 --- a/selectiveInference/R/funs.fs.R +++ b/selectiveInference/R/funs.fs.R @@ -80,7 +80,7 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, Gamma[gi+1,] = t(sign_hit*working_x[,i_hit]); gi = gi+1 # Gamma_maxZ is the rbind - # of residualized X_{inactive \cup i_hit} + # of residualized X_inactive's Gamma_maxZ = matrix(0,gbuf,n) Gamma_maxZ[zi+Seq(1,p),] = t(x); zi = zi+p @@ -435,18 +435,13 @@ fsInf <- function(obj, sigma=NULL, alpha=0.1, k=NULL, type=c("active","all","aic # selected maxZ tests -fsInf_maxZ <- function(obj, sigma=NULL, alpha=0.1, k=NULL, - gridrange=c(-100,100), bits=NULL, mult=2, ntimes=2, verbose=FALSE) { +fsInf_maxZ <- function(obj, sigma=NULL, alpha=0.1, verbose=FALSE, k=NULL) { this.call = match.call() - checkargs.misc(sigma=sigma,alpha=alpha,k=k, - gridrange=gridrange,mult=mult,ntimes=ntimes) + checkargs.misc(sigma=sigma,alpha=alpha,k=k) + if (class(obj) != "fs") stop("obj must be an object of class fs") - if (!is.null(bits) && !requireNamespace("Rmpfr",quietly=TRUE)) { - warning("Package Rmpfr is not installed, reverting to standard precision") - bits = NULL - } k = min(k,length(obj$action)) # Round to last step x = obj$x @@ -487,13 +482,18 @@ fsInf_maxZ <- function(obj, sigma=NULL, alpha=0.1, k=NULL, } else { inactive = 1:p } + collapsed_pos = apply(obj$offset_pos_maxZ[inactive,1:j,drop=FALSE], 1, min) collapsed_neg = apply(obj$offset_neg_maxZ[inactive,1:j,drop=FALSE], 1, min) cur_scale = obj$scale_maxZ[,j][inactive] + cur_adjusted_X = obj$Gamma_maxZ[zi + Seq(1,p-j+1),]; zi = zi+p-j+1 cur_X = obj$x[,inactive] - # next, condition on solution up to now + # now we condition on solution up to now + # this is equivalent to finding vector of + # fitted values up to now and appropriately + # adjusting the box limits if (j > 1) { cur_fitted = predict(obj, s=j) @@ -505,28 +505,13 @@ fsInf_maxZ <- function(obj, sigma=NULL, alpha=0.1, k=NULL, cur_offset = 0 } - print('pos') - print(collapsed_pos) - print('neg') - print(collapsed_neg) - - print('fitted') - print(cur_fitted[1:10]) - collapsed_pos = collapsed_pos - cur_offset - collapsed_neg = collapsed_neg + cur_offset - - print("cur_offset") - print(cur_offset) - - print('pos_adj') - print(collapsed_pos) - print('neg_adj') - print(collapsed_neg) + final_upper = collapsed_pos - cur_offset + final_lower = -(collapsed_neg + cur_offset) # now, we sample from Y_star, a centered Gaussian with covariance sigma^2 I # subject to the constraint - # t(cur_adjusted_X) %*% Y_star < collapsed_pos - # -t(cur_adjusted_X) %*% Y_star < collapsed_neg + # t(cur_adjusted_X) %*% Y_star < final_upper + # -t(cur_adjusted_X) %*% Y_star < -final_lower # really, we want the covariance of Y_star to be \sigma^2 (I - cur_P) # where P is projection on the j-1 previous variables @@ -535,20 +520,16 @@ fsInf_maxZ <- function(obj, sigma=NULL, alpha=0.1, k=NULL, # expressible in terms of (I - cur_P) Y_star because # we have adjusted X - print('pos') - print(collapsed_pos) - print('neg') - print(collapsed_neg) - # IMPORTANT: after sampling Y_star, we have to add back cur_fitted + + pv = c(pv, runif(1)) } - out = list(pos=collapsed_pos, neg=collapsed_neg) - #out = list(k=k,khat=khat,pv=pv,ci=ci, - # tailarea=tailarea,vmat=vmat,y=y, - # vars=vars,sign=sign,sigma=sigma,alpha=alpha, - # call=this.call) - class(out) = "fsInf" + khat = forwardStop(pv,alpha) + + out = list(pv=pv,khat=khat, + call=this.call) + class(out) = "fsInf_Zmax" return(out) } diff --git a/tests/X.csv b/tests/X.csv new file mode 100644 index 0000000..9e3bf14 --- /dev/null +++ b/tests/X.csv @@ -0,0 +1,50 @@ +-1.178998180891155656e-01,-1.431240072891293569e-01,-1.032612207595051818e-01,-3.032187959649952358e-01,3.623527555657671262e-02,7.140070893198336571e-03,1.994856139137879403e-01,-2.091539772440898642e-02,-1.016086254290284319e-01,4.225480470043030748e-03 +1.900091741547343949e-02,8.527956006600532352e-03,-2.360627728880385912e-01,-7.614938655092416860e-03,-1.549697289040389246e-02,2.249142191975829854e-04,9.680233904138081658e-02,-2.051414424020579219e-01,4.630024394840283053e-01,-2.965171494849212080e-02 +-3.699631581918050305e-02,-1.722594123029470847e-01,-2.811921500130166226e-03,-2.389563150481890941e-01,-1.075624889112302696e-01,-7.804616804476580127e-02,-3.706328230757107572e-02,-3.503804035374127185e-02,-2.647277697909438676e-01,-6.682759619509875959e-02 +-5.130177317722107305e-02,2.268018482998235275e-02,-4.179689023642386980e-02,-1.623091275446776893e-01,1.450083194821685240e-01,2.219597463120694947e-01,2.533842648572138742e-02,2.771331081546550557e-02,3.581273753830072765e-02,8.722251846321744939e-02 +-1.306936424111264927e-01,4.432794698567819186e-02,-9.941966213181395451e-02,-8.715861166850324970e-02,-2.303285613309095925e-01,3.078294089253613142e-01,3.344919445579297435e-03,1.196830919307750318e-01,-1.253076375038724988e-01,-1.148761269817597519e-01 +-2.250204095659052439e-01,1.113238116713928527e-01,-5.290002031147110484e-02,7.830761098391121611e-02,7.066607013335457488e-02,6.565522345102817181e-02,-6.308067898881258850e-02,2.025286101924284737e-02,-6.818604986842312365e-02,-1.070102801614746246e-01 +-2.882057940922741479e-02,1.799983072585507882e-01,1.130515074865423159e-01,9.460393874312598983e-02,-7.352923330349291076e-02,-2.755771198440996536e-02,-1.310648265859815260e-02,-2.475061797099528116e-01,2.427234406663877353e-01,2.583612973537190993e-01 +9.611602736254980239e-02,6.273551721516337776e-02,-4.324306198998925654e-02,-3.860336044312057818e-02,-8.403781067825444318e-02,9.562097685082457388e-02,1.492509493676312526e-01,-2.943327955367435744e-01,-2.877171607065032860e-02,4.951010186454657749e-03 +-3.465380375344423447e-01,2.176487162155849725e-02,-3.693161931323302866e-02,1.619662116578308719e-01,-2.564291959900348236e-03,-1.637987837220862553e-01,-3.342210830973137148e-02,-6.685343093833395756e-02,-8.554318254825124535e-02,1.613775288161613530e-01 +5.313251489880643774e-02,3.890058088332522257e-02,-4.613812296420412296e-02,-1.034537934089800326e-01,-9.631838877144843769e-02,-3.092370301090547474e-02,-1.419742935886602053e-01,2.380517554927013592e-03,7.079890010442424497e-02,-3.648327087249821354e-01 +5.102527195639846441e-02,-1.362508515419207089e-01,8.159140673817973088e-02,-1.244854531841070727e-01,-2.606170884965469323e-02,1.511382743326344924e-02,-2.255344304610490958e-01,6.236460909959602728e-02,-2.657951209176429019e-01,-1.594365214738231729e-02 +7.926342892815507746e-02,6.482707539961192478e-02,2.087256857963709078e-01,1.292814475123448825e-01,-1.796195585005122275e-01,1.525550407724216850e-01,5.475504271088289798e-02,2.868404636974628344e-02,1.264796115328103154e-01,-1.555090411723416069e-02 +1.181696244748224739e-01,1.999694578685428381e-01,1.807315761292420109e-01,1.229014824059724564e-01,4.895454174242171164e-02,-1.833503379863557770e-01,6.881950937845732197e-02,-7.141605983769011567e-02,-3.849053159713680498e-03,1.119597953540091562e-01 +-1.454915981077725406e-01,-2.266794840632963548e-01,-1.298952558056660489e-01,5.437551156666114299e-02,6.183066340902761832e-02,1.035937403404784546e-01,-2.570107980749361878e-02,-3.093760287832481026e-01,1.134096421692707829e-01,-9.223798086734372181e-02 +8.709274188337053080e-02,-9.556231597509272369e-02,2.118423200194279044e-01,-8.774546066090892563e-03,2.769267035538602317e-01,-9.815821608839980783e-02,1.709472261185437285e-03,-2.153557681348250430e-02,4.148111640994667226e-02,5.196811833848381107e-02 +1.880295620305566864e-02,-5.850999774080740262e-02,-5.301122779276247476e-02,3.537499672221694480e-02,2.852315743834457629e-02,-6.942851976899913624e-02,2.276894587717699092e-01,1.172152546047936506e-01,6.257413318528345057e-03,-1.682213921871343956e-02 +2.569990952013931906e-01,-1.736032991395405622e-01,1.511557448386198835e-02,2.441813032135399242e-01,-1.105916475419813361e-01,1.472489542271989138e-01,2.295846712275041168e-01,4.356843384762421750e-02,-5.142855348130226378e-02,-2.450933945023268251e-02 +-3.281672906942039586e-02,-1.258316028084845439e-01,-1.229551514195627165e-01,-1.497473216257483863e-01,1.213383871403065223e-01,5.912940006733528181e-02,-3.442255150142065068e-02,1.684351304854427023e-01,7.878512914823442015e-02,6.141853050739853360e-04 +2.985043940771188800e-02,2.697852036140859222e-01,7.513858261740154199e-02,1.691617277348242410e-01,-7.715021687363131375e-02,-1.590745317353356725e-01,5.564786782697213330e-02,-2.145953101463689283e-02,5.036342539549311381e-02,-2.798631226235559488e-01 +-1.206199609736929718e-01,5.952016584844534164e-02,-2.588323978913500273e-02,-3.610815652054708697e-02,-7.111461594831880451e-02,1.716009403396910049e-01,1.945097583365250696e-02,1.682441279803628120e-01,2.416197565576874359e-02,-8.446813595188230883e-02 +-8.788855601271274021e-02,2.870664460710737470e-02,-2.150701597306006463e-01,8.942026820589549230e-02,-6.406031432030431794e-02,-7.238901051636800754e-02,-2.847790921066896686e-01,-1.791769561572375546e-01,-8.985812560956656092e-02,-1.557232758585813948e-01 +1.122914496490508562e-01,-9.161001903716270434e-02,5.898245165418002783e-02,7.666824641318797928e-02,1.144428476261267896e-01,1.279510610165440210e-01,2.794793837130695249e-02,-1.769334059940223525e-01,1.395088287951896100e-01,1.531099359177416630e-01 +-1.756665362986270865e-02,2.243400472787894853e-02,-2.313766383513476965e-02,5.985349262422249433e-02,1.623952653335277718e-01,7.219739543308523189e-02,1.650650206991929048e-01,3.373066648957191438e-01,1.293144667091710442e-01,-1.198206084743443922e-01 +-1.591288826029353398e-01,1.441961795141566763e-02,2.691263563648352286e-01,-7.631601786004396648e-02,-2.035897032262034834e-01,1.839999945230586520e-01,-3.040797131486546595e-02,-2.072195591278232774e-01,-2.582099955618117823e-02,-4.968369036922733184e-02 +1.971222793011394997e-02,2.857593552133443071e-02,1.076526115126625743e-01,-1.169588063781885623e-01,-1.493986053584963822e-02,-9.939156163385284848e-02,5.728631166051838947e-02,1.318076226667439788e-01,-6.559944705762067729e-02,2.000054553822710746e-01 +1.442536217074669447e-01,1.860705352618353958e-01,2.376560497530317284e-01,-4.452755353807675426e-02,-1.479992243428359389e-01,-1.024421274656733688e-01,2.219827293941429441e-02,2.744560730041187280e-01,-1.749229054677335360e-01,2.486267968156883126e-02 +-1.173525007136980713e-01,-1.589063344657667964e-02,-4.855377240993334620e-02,-1.710166455399014795e-01,2.238197997257449501e-01,-3.902440146587572017e-02,-2.277246088212442343e-01,-2.225027033096296514e-01,-1.600856785452938746e-01,-3.513128354873073979e-03 +1.553053556117380551e-01,1.776336988981010168e-01,-5.584732869767267127e-03,4.337629217125157921e-02,1.343992700388582096e-01,2.241754083007339304e-01,-3.804363791330121480e-01,-2.248707918941276335e-02,9.449528681409452568e-02,2.019673102132814868e-01 +8.811133006768176457e-02,-2.495992576632576343e-01,-2.107789429909177337e-01,-7.656628888881508721e-02,-1.571965217975497819e-01,-3.994837344190730472e-02,1.798000461817380116e-02,-3.929477959092856493e-02,8.199998236736730228e-02,-1.771336014986007457e-01 +3.084293724362072164e-02,2.870830338863302744e-01,1.390985439227190867e-01,-1.761267638611300201e-01,-3.030878823823451168e-02,1.283420126059948152e-01,-7.032782881930829677e-02,3.028267745870127925e-01,2.763235193260478728e-01,1.297259596484676494e-02 +-2.980209117205826486e-01,-1.599628570960875684e-01,3.717563457838087004e-02,-1.715739500198807110e-01,1.156109940448075690e-01,2.861100896544049865e-01,-3.224456561914625097e-02,1.883841526758878449e-01,3.120995870006536277e-02,-1.666346081723748540e-01 +1.964845154373343616e-01,-3.262271620530284716e-02,7.539790456017420039e-02,-1.390837387106441114e-01,1.432200744039294031e-02,6.588671044290296541e-02,-7.918721856950346194e-02,4.179783781885562655e-02,-2.963364199479299327e-02,-1.282878362461941923e-01 +3.939736847129866049e-01,-1.330499698590044688e-01,1.620818289382975064e-01,1.086385707584531096e-01,-3.063136061977774771e-01,-7.367331881484205647e-02,2.938740010160398874e-01,-5.544842822282580047e-02,-1.217766056376768796e-01,2.308853011600819627e-01 +-8.747965097463808459e-02,-1.216303641899998678e-01,-2.000717572673424427e-02,-1.394174966077489641e-01,-7.675363917563379768e-02,-2.418816225068699255e-01,5.774342472104643936e-02,-6.667810796688183883e-02,-9.383247246491349669e-02,1.803148190365377324e-01 +2.154878276681011437e-02,7.274723003733224447e-02,8.493890250496327621e-02,2.317676008980297797e-01,1.202666302268647763e-01,-1.795717633338488883e-01,1.194104887456467895e-01,-2.409833230096719917e-02,4.209919073379941867e-02,1.805717730414188316e-01 +-7.417287534784343384e-02,3.280186400443500516e-01,-1.569651800380269802e-01,1.352031133976719091e-01,-6.623571067636253862e-02,1.821579193654246642e-01,-2.611616781264873843e-01,1.257537100225379623e-01,-1.544128139339268624e-01,-8.073570852093319913e-03 +-1.055845973894932038e-01,9.447582815065415363e-02,-1.280223934974548394e-01,-2.467957463871607027e-01,-1.981722006802176250e-01,-2.174114263242006573e-01,-5.258326868244974500e-02,8.632670058414107506e-02,1.278124112560487524e-01,-7.596235162571260413e-02 +-1.319143228822058644e-01,1.105849050743873824e-01,-1.261348865766407090e-01,8.221827529651301592e-02,-1.637828607024564287e-01,2.207216837530200787e-02,-1.572736510450976899e-01,-6.353661633164614519e-02,4.310413166262661022e-02,-8.635729489274258930e-02 +4.002677023935117401e-02,-1.246790995864136553e-01,1.009436985538858939e-01,-3.086445086254718112e-02,-3.105499027327088268e-02,-2.181299643306329195e-01,-1.991706313934264727e-01,1.032401876848659389e-01,-1.392292225465681099e-01,-2.573769322082897770e-01 +-2.365500867481928893e-01,-2.882697181199892489e-01,1.870462413268927579e-02,3.123314847933006955e-01,-1.785379221860150523e-01,-2.620626819754759973e-01,-1.335680157458384310e-01,6.717891508607608253e-02,-9.085066963483198754e-02,-6.554344870038303350e-02 +7.134202132377859273e-02,3.078481712498531628e-02,3.676960617998211722e-01,-4.372148762455418426e-03,1.825773262745455927e-01,-3.602444328216306696e-02,-1.305462273222839364e-01,6.325133697926907383e-02,2.284845903167492809e-02,1.813943850568317806e-01 +-2.036121292893071366e-02,-3.142619518413359431e-02,-7.057387951297722228e-02,-3.212426316839919055e-02,-1.333403450390204525e-01,-4.290173490181348193e-02,8.144726830020809771e-02,6.951860368824913650e-02,2.310857100535866626e-01,1.643640418057101538e-01 +-4.494358712990566967e-02,-8.381098939796007008e-02,5.585039387477649248e-02,9.349073094042398280e-02,-4.148446400739889961e-02,-2.271966867947378677e-01,1.164965341773331886e-01,-1.489054888468986371e-01,1.828198888111968318e-02,-1.253330759037772635e-02 +1.174485886256576572e-02,1.871862923440414939e-01,1.869800905400307023e-01,1.475135435476520041e-01,3.487327309591684577e-01,-8.075531082494548374e-02,-5.490566974763481239e-02,6.693169941538162915e-02,-6.657868205049911892e-02,-5.753564084435989351e-02 +3.540435546439159031e-01,9.799883325759614280e-03,-3.415790785183550060e-01,-1.596069478373152994e-01,1.046321772486082657e-01,8.214960553207252547e-02,3.174383744532797286e-02,3.673108366507741446e-02,-2.228283171016489095e-01,2.236729660172086798e-01 +7.908879265315697793e-02,1.056173691729681563e-01,-1.225984712485288508e-01,3.452599100424690731e-02,2.263175856748587678e-01,7.209894748504550033e-02,6.735185685735761707e-02,2.797405442112595522e-02,1.086462076787598763e-01,-9.525407972667455925e-02 +-1.047538936926625287e-02,-2.035197426425463807e-01,4.146899650406307702e-02,2.132037546098831671e-01,1.850498989115796356e-01,3.755941130259579652e-02,2.809178713198516308e-01,5.339383417911759688e-02,2.288817980479154746e-02,8.112997281404138450e-02 +2.844937002629225817e-02,-5.576917528583905624e-03,-1.424582369180357466e-01,-2.106624435129897388e-02,-5.564091055486999893e-02,-1.191495376277207918e-01,5.941614686177779971e-03,-1.434047109196132375e-01,-1.667172935642340648e-01,-6.724920468473376267e-02 +-2.651010312069623440e-02,-1.752677763399616284e-01,-1.808210581864507782e-01,-9.838386442528869458e-02,9.001532723491878496e-02,1.286355518885316795e-01,1.642453070463370246e-01,-3.123338511306213497e-02,-1.787111417596190521e-01,-3.559049574174898839e-02 +9.747590412046723551e-02,8.023771182677955083e-02,-4.335500350404396241e-02,2.468657521277872746e-01,1.317215783176759469e-01,-9.871658217557859050e-02,2.709271520186684948e-02,-6.092659889691063452e-02,1.531815724573990511e-01,2.589356068507616682e-01 diff --git a/tests/Y.csv b/tests/Y.csv new file mode 100644 index 0000000..468003d --- /dev/null +++ b/tests/Y.csv @@ -0,0 +1,50 @@ +5.981823865387593253e-01 +9.205037786951145717e-01 +2.471950462023575767e-01 +8.302149645795311450e-01 +3.481518894602156911e-01 +1.021133394037474273e+00 +7.737332812607098376e-01 +-1.072378967160714680e+00 +-2.435746837075756510e-01 +1.740226263339641199e-01 +8.402225800803131417e-01 +7.504940266953664674e-01 +-1.243144022380434421e+00 +1.501124988881830546e+00 +-2.891958991875613894e-01 +-3.132123608567724538e-01 +1.173545818815739494e+00 +5.085036448838163858e-01 +5.556170151317273431e-01 +-3.381951833174929312e-01 +-6.636571462865884508e-01 +-1.066616503782338743e+00 +-1.567776891895226454e-01 +-2.086621657630242765e+00 +-7.369246383379658427e-01 +-1.479829646839075641e-01 +9.141209849808230592e-01 +-4.535606299122550422e-01 +-1.439446509501642879e-01 +-1.298232476681334235e+00 +2.091428840290059821e+00 +5.383099610413618619e-01 +8.572788062341546445e-01 +-2.508913668580619039e-01 +3.275009893336582323e-01 +3.278337436330956978e-01 +-3.138873228756299261e-01 +6.287829585785361663e-01 +-6.461561991866940913e-01 +1.159738714281874084e-01 +1.347361280586111265e+00 +2.804011720873073044e-02 +1.431756971602339057e+00 +-1.370351105419743254e+00 +1.197179345676374851e+00 +9.454381529223232494e-01 +6.052977328571994553e-01 +8.951900192671614631e-01 +-1.503900798080590295e+00 +-1.866233032607558462e+00 diff --git a/tests/test.fs.selected.R b/tests/test.fs.selected.R index e5b2cf5..37c5512 100644 --- a/tests/test.fs.selected.R +++ b/tests/test.fs.selected.R @@ -16,6 +16,5 @@ mu=x%*%beta y=mu+Y fsfit=fs(x,y,norm=TRUE, intercept=TRUE) out = fsInf_maxZ(fsfit,sigma=sigma) -print(out$pos) -print(-out$neg) + From 23c8de4bab2af024d0a0c8de294d273a46a1b1e1 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Mon, 30 Nov 2015 23:02:53 -0800 Subject: [PATCH 089/493] adding a few more comments --- selectiveInference/R/funs.fs.R | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/selectiveInference/R/funs.fs.R b/selectiveInference/R/funs.fs.R index 433e36e..6139dd2 100644 --- a/selectiveInference/R/funs.fs.R +++ b/selectiveInference/R/funs.fs.R @@ -448,12 +448,9 @@ fsInf_maxZ <- function(obj, sigma=NULL, alpha=0.1, verbose=FALSE, k=NULL) { y = obj$y p = ncol(x) n = nrow(x) - G = obj$Gamma - nconstraint = obj$nconstraint - sx = obj$sx if (is.null(sigma)) { - # TODO we should probably sample uniform + # TODO we need a sampler on a unit sphere if (n >= 2*p) { oo = obj$intercept sigma = sqrt(sum(lsfit(x,y,intercept=oo)$res^2)/(n-p-oo)) @@ -487,7 +484,14 @@ fsInf_maxZ <- function(obj, sigma=NULL, alpha=0.1, verbose=FALSE, k=NULL) { collapsed_neg = apply(obj$offset_neg_maxZ[inactive,1:j,drop=FALSE], 1, min) cur_scale = obj$scale_maxZ[,j][inactive] + # the matrix cur_adjusted_X is used to compute + # the maxZ or maxT for the sampled variables + cur_adjusted_X = obj$Gamma_maxZ[zi + Seq(1,p-j+1),]; zi = zi+p-j+1 + + # cur_X is used to enforce conditioning on + # the ever_active sufficient_statistics + cur_X = obj$x[,inactive] # now we condition on solution up to now From 08f116e1f9487d79296bc304d6116690d4c73a4f Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Tue, 1 Dec 2015 00:53:58 -0800 Subject: [PATCH 090/493] for n>p implemneted selective Z -- not quite debugged yet --- selectiveInference/DESCRIPTION | 3 +- selectiveInference/R/funs.fs.R | 60 +++++++++++++++++++++++++++++----- 2 files changed, 53 insertions(+), 10 deletions(-) diff --git a/selectiveInference/DESCRIPTION b/selectiveInference/DESCRIPTION index ce95116..6e21e68 100644 --- a/selectiveInference/DESCRIPTION +++ b/selectiveInference/DESCRIPTION @@ -8,7 +8,8 @@ Author: Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Maintainer: Rob Tibshirani Depends: glmnet, - intervals + intervals, + tmvtnorm Suggests: Rmpfr Description: New tools for inference after selection, for use diff --git a/selectiveInference/R/funs.fs.R b/selectiveInference/R/funs.fs.R index 6139dd2..79201db 100644 --- a/selectiveInference/R/funs.fs.R +++ b/selectiveInference/R/funs.fs.R @@ -54,6 +54,7 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, offset_pos_maxZ = matrix(Inf, p, buf) # upper bounds for selective maxZ offset_neg_maxZ = matrix(Inf, p, buf) # lower bounds for selective maxZ scale_maxZ = matrix(0, p, buf) # lower bounds for selective maxZ + realized_maxZ = matrix(0, p, buf) # lower bounds for selective maxZ action[1] = i_hit df[1] = 0 @@ -63,7 +64,7 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, # Variables needed to compute truncation limits for # selective maxZ test - realized_maxZ = c(sign_hit * score[i_hit]) + realized_maxZ[1] = c(sign_hit * score[i_hit]) offset_pos_maxZ[,1] = Inf offset_neg_maxZ[,1] = Inf scale_maxZ[,1] = working_scale @@ -131,6 +132,7 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, offset_pos_maxZ = cbind(offset_pos_maxZ, matrix(0, p, buf)) offset_neg_maxZ = cbind(offset_neg_maxZ, matrix(0, p, buf)) scale_maxZ = cbind(scale_maxZ, matrix(0, p, buf)) + realized_maxZ = cbind(realized_maxZ, matrix(0, p, buf)) } # Key quantities for the next entry @@ -157,7 +159,7 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, # keep track of necessary quantities for selective maxZ offset_shift = t(X_inactive) %*% (y - working_resid_maxZ) - realized_Z_scaled = realized_maxZ * prev_scale + realized_Z_scaled = realized_maxZ[k-1] * prev_scale offset_pos_maxZ[I,k] = realized_Z_scaled + offset_shift offset_neg_maxZ[I,k] = realized_Z_scaled - offset_shift scale_maxZ[I,k] = working_scale @@ -178,7 +180,7 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, Gamma_maxZ[zi+Seq(1,p-r),] = t(X_inactive_resid); zi = zi+p-r # update maxZ variable - realized_maxZ = sign_hit * working_score[i_hit] + realized_maxZ[k] = sign_hit * working_score[i_hit] # Gamma matrix! @@ -264,7 +266,7 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, Gamma=Gamma,nconstraint=nconstraint,vreg=vreg,x=x,y=y,bx=bx,by=by,sx=sx, intercept=intercept,normalize=normalize,call=this.call, offset_pos_maxZ=offset_pos_maxZ,offset_neg_maxZ=offset_neg_maxZ, - scale_maxZ=scale_maxZ,Gamma_maxZ=Gamma_maxZ) + scale_maxZ=scale_maxZ,Gamma_maxZ=Gamma_maxZ,realized_maxZ=realized_maxZ) class(out) = "fs" return(out) } @@ -435,7 +437,8 @@ fsInf <- function(obj, sigma=NULL, alpha=0.1, k=NULL, type=c("active","all","aic # selected maxZ tests -fsInf_maxZ <- function(obj, sigma=NULL, alpha=0.1, verbose=FALSE, k=NULL) { +fsInf_maxZ <- function(obj, sigma=NULL, alpha=0.1, verbose=FALSE, k=NULL, + ndraw=8000, burnin=2000) { this.call = match.call() @@ -492,7 +495,7 @@ fsInf_maxZ <- function(obj, sigma=NULL, alpha=0.1, verbose=FALSE, k=NULL) { # cur_X is used to enforce conditioning on # the ever_active sufficient_statistics - cur_X = obj$x[,inactive] + cur_X = obj$x[,inactive,drop=FALSE] # now we condition on solution up to now # this is equivalent to finding vector of @@ -502,11 +505,11 @@ fsInf_maxZ <- function(obj, sigma=NULL, alpha=0.1, verbose=FALSE, k=NULL) { if (j > 1) { cur_fitted = predict(obj, s=j) cur_fitted = cur_fitted - mean(cur_fitted) - cur_offset = t(cur_X) %*% cur_fitted + cur_offset = as.numeric(t(cur_X) %*% cur_fitted) } else { cur_fitted = 0 - cur_offset = 0 + cur_offset = rep(0, length(inactive)) } final_upper = collapsed_pos - cur_offset @@ -526,7 +529,46 @@ fsInf_maxZ <- function(obj, sigma=NULL, alpha=0.1, verbose=FALSE, k=NULL) { # IMPORTANT: after sampling Y_star, we have to add back cur_fitted - pv = c(pv, runif(1)) + # if n > p, we actually just draw cur_adjusted_X %*% Y_star + # because this has a simple box constraint + # with a generically non-degenerate covariance + + + if (n > p) { + library(tmvtnorm) + + if (length(inactive) > 1) { + cov = (cur_adjusted_X %*% t(cur_adjusted_X)) + cov = cov * rep(sigma^2, nrow(cov), ncol(cov)) + } else { + cov = sigma^2 * sum(cur_adjusted_X^2) + } + + truncated_noise = rtmvnorm(n=ndraw, + mean=cur_offset, + sigma=cov, + lower=-collapsed_neg, + upper=collapsed_pos, + algorithm="gibbs", + burn.in.samples=burnin) + + if (length(inactive) > 1) { + sample_maxZ = apply(abs(1. / cur_scale * truncated_noise), 1, max) + } + else { + sample_maxZ = truncated_noise / cur_scale + } + } else { + # RUBBISH for now!!!! + sample_maxZ = abs(rnorm(ndraw)) + } + + observed_maxZ = obj$realized_maxZ[j] + + pval = sum(sample_maxZ > observed_maxZ) / ndraw + pval = 2 * min(pval, 1 - pval) + + pv = c(pv, pval) } khat = forwardStop(pv,alpha) From 197236a63415ef0e017ddaa0adcf096328b3f792 Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Tue, 1 Dec 2015 23:14:37 -0800 Subject: [PATCH 091/493] Setting up cv simulation --- forLater/josh/sim.cv.R | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/forLater/josh/sim.cv.R b/forLater/josh/sim.cv.R index b8d27cb..041cf8f 100644 --- a/forLater/josh/sim.cv.R +++ b/forLater/josh/sim.cv.R @@ -6,12 +6,12 @@ source("../../selectiveInference/R/funs.common.R") set.seed(1) niters <- 500 -n <- 50 -p <- 100 -maxsteps <- 10 -sparsity <- 5 -snr <- 1 -nfolds <- 5 +n <- 40 +p <- 80 +maxsteps <- 8 +sparsity <- 4 +snr <- 2 +nfolds <- 4 instance <- function(n, p, sparsity, snr, maxsteps, nfolds) { @@ -25,8 +25,10 @@ instance <- function(n, p, sparsity, snr, maxsteps, nfolds) { } fit <- cvfs(x, y, maxsteps=maxsteps, nfolds=nfolds) - pvals <- groupfsInf(fit, sigma = 1, verbose=T) - return(list(variable = fit$action, pvals = pvals$pv)) + fit2 <- groupfs(x, y, index = 1:p, maxsteps = attr(fit, "maxsteps")) + pvals <- groupfsInf(fit, verbose=T) + pv2 <- groupfsInf(fit2, verbose=T) + return(list(variable = fit$action, pvals = pvals$pv, var2 = fit2$action, pvals2 = pv2$pv)) } time <- system.time({ @@ -35,12 +37,14 @@ time <- system.time({ pvals <- do.call(c, list(output[2,])) vars <- do.call(c, list(output[1,])) +vars2 <- do.call(c, list(output[3,])) +pvals2 <- do.call(c, list(output[4,])) -save(pvals, vars, file = paste0( +save(pvals, vars, vars2, pvals2, file = paste0( "results_cv_n", n, "_p", p, "_sparsity", sparsity, "_snr", snr, - ".RData")) + "_comparison.RData")) print(time) From 16235ac8501bf9d2834b86543dc7e92a4918caa2 Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Wed, 2 Dec 2015 15:41:12 -0800 Subject: [PATCH 092/493] cv simulation known sigma --- forLater/josh/selectiveInference/R/cv.R | 6 +++--- forLater/josh/sim.aicstop.R | 5 ++--- forLater/josh/sim.cv.R | 16 ++++++++-------- 3 files changed, 13 insertions(+), 14 deletions(-) diff --git a/forLater/josh/selectiveInference/R/cv.R b/forLater/josh/selectiveInference/R/cv.R index 0a4661b..8714f2e 100644 --- a/forLater/josh/selectiveInference/R/cv.R +++ b/forLater/josh/selectiveInference/R/cv.R @@ -54,7 +54,7 @@ cvRSSquad <- function(x, folds, active.sets) { return(Q) } -cvfs <- function(x, y, index = 1:ncol(x), maxsteps, nfolds = 10) { +cvfs <- function(x, y, index = 1:ncol(x), maxsteps, sigma = NULL, nfolds = 10) { n <- nrow(x) if (maxsteps >= n*(1-1/nfolds)) { @@ -75,7 +75,7 @@ cvfs <- function(x, y, index = 1:ncol(x), maxsteps, nfolds = 10) { # Flatten list or something? for (f in 1:nfolds) { fold <- folds[[f]] - fit <- groupfs(X[-fold,], Y[-fold], index, maxsteps=maxsteps) + fit <- groupfs(X[-fold,], Y[-fold], index=index, maxsteps=maxsteps, sigma=sigma) fit$fold <- fold ## projections[[f]] <- lapply(fit$projections, function(step.projs) { ## lapply(step.projs, function(proj) { @@ -103,7 +103,7 @@ cvfs <- function(x, y, index = 1:ncol(x), maxsteps, nfolds = 10) { RSSquads <- lapply(RSSquads, function(quad) quad - quadstar) RSSquads[[sstar]] <- NULL # remove the all zeroes case - fit <- groupfs(X, Y, index, maxsteps=sstar) + fit <- groupfs(X, Y, index=index, maxsteps=sstar, sigma=sigma) fit$cvobj <- cvobj fit$cvquad <- RSSquads diff --git a/forLater/josh/sim.aicstop.R b/forLater/josh/sim.aicstop.R index f2aa653..409ab0f 100644 --- a/forLater/josh/sim.aicstop.R +++ b/forLater/josh/sim.aicstop.R @@ -1,19 +1,18 @@ library(intervals) source("funs.sims.R") -#source("selectiveInference/R/cv.R") source("../../selectiveInference/R/funs.groupfs.R") source("../../selectiveInference/R/funs.quadratic.R") source("../../selectiveInference/R/funs.common.R") set.seed(1) known <- FALSE -niters <- 200 +niters <- 500 n <- 50 p <- 150 G <- 75 maxsteps <- 10 sparsity <- 4 -snr <- 2 +snr <- 3 rho <- 0 aicstop <- 1 diff --git a/forLater/josh/sim.cv.R b/forLater/josh/sim.cv.R index 041cf8f..810d14b 100644 --- a/forLater/josh/sim.cv.R +++ b/forLater/josh/sim.cv.R @@ -5,13 +5,13 @@ source("../../selectiveInference/R/funs.quadratic.R") source("../../selectiveInference/R/funs.common.R") set.seed(1) -niters <- 500 -n <- 40 -p <- 80 -maxsteps <- 8 -sparsity <- 4 +niters <- 4 +n <- 50 +p <- 100 +maxsteps <- 10 +sparsity <- 5 snr <- 2 -nfolds <- 4 +nfolds <- 5 instance <- function(n, p, sparsity, snr, maxsteps, nfolds) { @@ -24,8 +24,8 @@ instance <- function(n, p, sparsity, snr, maxsteps, nfolds) { y <- y + x %*% beta } - fit <- cvfs(x, y, maxsteps=maxsteps, nfolds=nfolds) - fit2 <- groupfs(x, y, index = 1:p, maxsteps = attr(fit, "maxsteps")) + fit <- cvfs(x, y, maxsteps=maxsteps, sigma=1, nfolds=nfolds) + fit2 <- groupfs(x, y, index = 1:p, maxsteps = attr(fit, "maxsteps"), sigma = 1) pvals <- groupfsInf(fit, verbose=T) pv2 <- groupfsInf(fit2, verbose=T) return(list(variable = fit$action, pvals = pvals$pv, var2 = fit2$action, pvals2 = pv2$pv)) From 711bb22ebbccad1e3e3917179a7aff130a27d5e0 Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Fri, 4 Dec 2015 16:41:47 -0800 Subject: [PATCH 093/493] Adding more checkpoints for F roots --- selectiveInference/R/funs.quadratic.R | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/selectiveInference/R/funs.quadratic.R b/selectiveInference/R/funs.quadratic.R index 003adc6..236b39c 100644 --- a/selectiveInference/R/funs.quadratic.R +++ b/selectiveInference/R/funs.quadratic.R @@ -205,16 +205,23 @@ TF_roots <- function(R, C, coeffs, tol = 1e-8, tol2 = 1e-6) { roots <- unique(thetas[which(modinds & angleinds)]) troots <- tan(roots)^2/C - if (length(troots) == 0) { - # Polyroot didn't catch any roots - # ad-hoc check: - checkpoints <- c(0, tol, tol2, - seq(from = sqrt(tol2), to = 1, length.out = 50), - seq(from = 1.2, to=50, length.out = 20), - 100, 1000, 10000) - } else { - checkpoints <- roots_to_checkpoints(troots) - } + checkpoints <- c() + if (length(troots) > 0) checkpoints <- roots_to_checkpoints(troots) + checkpoints <- sort( + c(checkpoints, (0, tol, tol2, + seq(from = sqrt(tol2), to = 1, length.out = 50), + seq(from = 1.2, to=50, length.out = 20), + 100, 1000, 10000))) + ## if (length(troots) == 0) { + ## # Polyroot didn't catch any roots + ## # ad-hoc check: + ## checkpoints <- c(0, tol, tol2, + ## seq(from = sqrt(tol2), to = 1, length.out = 50), + ## seq(from = 1.2, to=50, length.out = 20), + ## 100, 1000, 10000) + ## } else { + ## checkpoints <- roots_to_checkpoints(troots) + ## } signs <- sign(I(checkpoints)) diffs <- c(0, diff(signs)) From e61a3fbc1f9508ba9d9a53e214b45b8d9f7f4afa Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Fri, 4 Dec 2015 16:44:51 -0800 Subject: [PATCH 094/493] Fixed syntax error --- forLater/josh/sim.cv.R | 6 +++--- selectiveInference/R/funs.quadratic.R | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/forLater/josh/sim.cv.R b/forLater/josh/sim.cv.R index 810d14b..dc64493 100644 --- a/forLater/josh/sim.cv.R +++ b/forLater/josh/sim.cv.R @@ -5,7 +5,7 @@ source("../../selectiveInference/R/funs.quadratic.R") source("../../selectiveInference/R/funs.common.R") set.seed(1) -niters <- 4 +niters <- 400 n <- 50 p <- 100 maxsteps <- 10 @@ -24,8 +24,8 @@ instance <- function(n, p, sparsity, snr, maxsteps, nfolds) { y <- y + x %*% beta } - fit <- cvfs(x, y, maxsteps=maxsteps, sigma=1, nfolds=nfolds) - fit2 <- groupfs(x, y, index = 1:p, maxsteps = attr(fit, "maxsteps"), sigma = 1) + fit <- cvfs(x, y, maxsteps=maxsteps, nfolds=nfolds) + fit2 <- groupfs(x, y, index = 1:p, maxsteps = attr(fit, "maxsteps")) pvals <- groupfsInf(fit, verbose=T) pv2 <- groupfsInf(fit2, verbose=T) return(list(variable = fit$action, pvals = pvals$pv, var2 = fit2$action, pvals2 = pv2$pv)) diff --git a/selectiveInference/R/funs.quadratic.R b/selectiveInference/R/funs.quadratic.R index 236b39c..23ff63f 100644 --- a/selectiveInference/R/funs.quadratic.R +++ b/selectiveInference/R/funs.quadratic.R @@ -208,10 +208,10 @@ TF_roots <- function(R, C, coeffs, tol = 1e-8, tol2 = 1e-6) { checkpoints <- c() if (length(troots) > 0) checkpoints <- roots_to_checkpoints(troots) checkpoints <- sort( - c(checkpoints, (0, tol, tol2, + c(checkpoints, 0, tol, tol2, seq(from = sqrt(tol2), to = 1, length.out = 50), seq(from = 1.2, to=50, length.out = 20), - 100, 1000, 10000))) + 100, 1000, 10000)) ## if (length(troots) == 0) { ## # Polyroot didn't catch any roots ## # ad-hoc check: From a34b4a4a33d459153ec2ba210a8caf595ba5d286 Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Mon, 7 Dec 2015 18:32:43 -0800 Subject: [PATCH 095/493] Fixing intercept, center, normalize for cvfs --- forLater/josh/selectiveInference/R/cv.R | 18 ++++++++++++++---- selectiveInference/R/funs.groupfs.R | 11 +++++------ 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/forLater/josh/selectiveInference/R/cv.R b/forLater/josh/selectiveInference/R/cv.R index 8714f2e..dfd6395 100644 --- a/forLater/josh/selectiveInference/R/cv.R +++ b/forLater/josh/selectiveInference/R/cv.R @@ -54,7 +54,7 @@ cvRSSquad <- function(x, folds, active.sets) { return(Q) } -cvfs <- function(x, y, index = 1:ncol(x), maxsteps, sigma = NULL, nfolds = 10) { +cvfs <- function(x, y, index = 1:ncol(x), maxsteps, sigma = NULL, intercept = TRUE, center = TRUE, normalize = TRUE, nfolds = 5) { n <- nrow(x) if (maxsteps >= n*(1-1/nfolds)) { @@ -69,13 +69,23 @@ cvfs <- function(x, y, index = 1:ncol(x), maxsteps, sigma = NULL, nfolds = 10) { active.sets <- list(1:nfolds) cvobj <- list(1:nfolds) cv_perm <- sample(1:n) - Y <- y[cv_perm] - mean(y) + Y <- y[cv_perm] X <- x[cv_perm, ] + # Initialize copies of data for loop + by <- mean(Y) + if (intercept) Y <- Y - by + + # Center and scale design matrix + xscaled <- scaleGroups(X, index, center, normalize) + xm <- xscaled$xm + xs <- xscaled$xs + X <- xscaled$x + # Flatten list or something? for (f in 1:nfolds) { fold <- folds[[f]] - fit <- groupfs(X[-fold,], Y[-fold], index=index, maxsteps=maxsteps, sigma=sigma) + fit <- groupfs(X[-fold,], Y[-fold], index=index, maxsteps=maxsteps, sigma=sigma, intercept=FALSE, center=FALSE, normalize=FALSE) fit$fold <- fold ## projections[[f]] <- lapply(fit$projections, function(step.projs) { ## lapply(step.projs, function(proj) { @@ -103,7 +113,7 @@ cvfs <- function(x, y, index = 1:ncol(x), maxsteps, sigma = NULL, nfolds = 10) { RSSquads <- lapply(RSSquads, function(quad) quad - quadstar) RSSquads[[sstar]] <- NULL # remove the all zeroes case - fit <- groupfs(X, Y, index=index, maxsteps=sstar, sigma=sigma) + fit <- groupfs(X, Y, index=index, maxsteps=sstar, sigma=sigma, intercept=intercept, center=center, normalize=normalize) fit$cvobj <- cvobj fit$cvquad <- RSSquads diff --git a/selectiveInference/R/funs.groupfs.R b/selectiveInference/R/funs.groupfs.R index a5f46c8..532cd02 100644 --- a/selectiveInference/R/funs.groupfs.R +++ b/selectiveInference/R/funs.groupfs.R @@ -49,10 +49,9 @@ groupfs <- function(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE y.update <- y if (intercept) y.update <- y - by y.last <- y.update - x.update <- x # Center and scale design matrix - xscaled <- scaleGroups(x.update, index, center, normalize) + xscaled <- scaleGroups(x, index, center, normalize) xm <- xscaled$xm xs <- xscaled$xs x.update <- xscaled$x @@ -434,7 +433,7 @@ groupfsInf <- function(obj, sigma = NULL, verbose = TRUE) { Uh <- ulist[[step]] Zg <- zlist[[step+1]] Zh <- zlist[[step]] - + if (type == "TC") { penh <- 0 etag <- etalist[[step+1]] @@ -444,9 +443,9 @@ groupfsInf <- function(obj, sigma = NULL, verbose = TRUE) { if (AICs[step] < AICs[step+1]) { coeffs <- lapply(coeffs, function(coeff) -coeff) } - + intstep <- quadratic_roots(coeffs$A, coeffs$B, coeffs$C, tol = 1e-15) - + } else { penh <- 1 Vdg <- vdlist[[step+1]] @@ -458,7 +457,7 @@ groupfsInf <- function(obj, sigma = NULL, verbose = TRUE) { if (AICs[step] < AICs[step+1]) { coeffs <- lapply(coeffs, function(coeff) -coeff) } - + intstep <- TF_roots(R, C, coeffs) } From f2715b47af25b60946f0368e215866bca3c9f155 Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Wed, 9 Dec 2015 11:52:56 -0800 Subject: [PATCH 096/493] Just running simulations --- forLater/josh/sim.cv.R | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/forLater/josh/sim.cv.R b/forLater/josh/sim.cv.R index dc64493..847a52f 100644 --- a/forLater/josh/sim.cv.R +++ b/forLater/josh/sim.cv.R @@ -5,12 +5,12 @@ source("../../selectiveInference/R/funs.quadratic.R") source("../../selectiveInference/R/funs.common.R") set.seed(1) -niters <- 400 -n <- 50 -p <- 100 +niters <- 500 +n <- 100 +p <- 200 maxsteps <- 10 sparsity <- 5 -snr <- 2 +snr <- 1 nfolds <- 5 instance <- function(n, p, sparsity, snr, maxsteps, nfolds) { @@ -24,11 +24,14 @@ instance <- function(n, p, sparsity, snr, maxsteps, nfolds) { y <- y + x %*% beta } - fit <- cvfs(x, y, maxsteps=maxsteps, nfolds=nfolds) - fit2 <- groupfs(x, y, index = 1:p, maxsteps = attr(fit, "maxsteps")) + fit <- cvfs(x, y, maxsteps=maxsteps, sigma=1, nfolds=nfolds) + fit2 <- groupfs(x, y, index = 1:p, maxsteps = attr(fit, "maxsteps"), sigma = 1) pvals <- groupfsInf(fit, verbose=T) pv2 <- groupfsInf(fit2, verbose=T) - return(list(variable = fit$action, pvals = pvals$pv, var2 = fit2$action, pvals2 = pv2$pv)) + Y <- y - mean(y) + cols <- which(1:p %in% fit$action) + pv3 <- summary(lm(Y~x[, cols]-1))$coefficients[,4] + return(list(variable = fit$action, pvals = pvals$pv, var2 = fit2$action, pvals2 = pv2$pv, pvals3 = pv3[order(fit$action)])) } time <- system.time({ @@ -39,12 +42,13 @@ pvals <- do.call(c, list(output[2,])) vars <- do.call(c, list(output[1,])) vars2 <- do.call(c, list(output[3,])) pvals2 <- do.call(c, list(output[4,])) +pvals3 <- do.call(c, list(output[5,])) -save(pvals, vars, vars2, pvals2, file = paste0( +save(pvals, vars, vars2, pvals2, pvals3, file = paste0( "results_cv_n", n, "_p", p, "_sparsity", sparsity, "_snr", snr, - "_comparison.RData")) + "_comparison_TC.RData")) print(time) From b9c4d0179b31af6c544033d361ae3fe88bb94297 Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Wed, 9 Dec 2015 15:01:00 -0800 Subject: [PATCH 097/493] Data splitting simulation --- forLater/josh/sim.datasplit.R | 64 +++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 forLater/josh/sim.datasplit.R diff --git a/forLater/josh/sim.datasplit.R b/forLater/josh/sim.datasplit.R new file mode 100644 index 0000000..9d59cd6 --- /dev/null +++ b/forLater/josh/sim.datasplit.R @@ -0,0 +1,64 @@ +library(intervals) +source("selectiveInference/R/cv.R") +source("../../selectiveInference/R/funs.groupfs.R") +source("../../selectiveInference/R/funs.quadratic.R") +source("../../selectiveInference/R/funs.common.R") + +set.seed(1) +niters <- 1000 +n <- 100 +p <- 50 +maxsteps <- 20 +sparsity <- 5 +snr <- 1 +train <- 1:(7*n/10) +test <- setdiff(1:n, train) +index <- 1:p + +instance <- function(n, p, sparsity, snr, maxsteps, nfolds) { + + x <- matrix(rnorm(n*p), nrow=n) + y <- rnorm(n) + + if (sparsity > 0) { + beta <- rep(0, p) + beta[1:sparsity] <- snr * sample(c(-1,1), sparsity, replace=T) + y <- y + x %*% beta + } + + ytr <- y[train] + xtr <- x[train, ] + yte <- y[test] + xte <- x[test, ] + + #log(length(train)) + trfit <- groupfs(xtr, ytr, index, maxsteps=maxsteps, aicstop=1, k = log(length(train))) + fit <- groupfs(x, y, index, maxsteps=maxsteps, aicstop=1, k = log(n)) + + trcols <- which(1:p %in% trfit$action) + tepv <- summary(lm(yte~xte[, trcols]-1))$coefficients[,4] + names(tepv) <- as.character(sort(trfit$action)) + pv <- groupfsInf(fit) + return(list(vars = fit$action, pvals = pv$pv, + splitvars = sort(trfit$action), splitpvals = tepv)) +} + +time <- system.time({ + output <- replicate(niters, instance(n, p, sparsity, snr, maxsteps, nfolds)) +}) + +vars <- do.call(c, list(output[1,])) +pvals <- do.call(c, list(output[2,])) +splitvars <- do.call(c, list(output[3,])) +splitpvals <- do.call(c, list(output[4,])) + + +save(vars, pvals, splitvars, splitpvals, file = paste0( + "results_datasplit_n", n, + "_p", p, + "_sparsity", sparsity, + "_snr", as.character(snr), + "_bic.RData")) + +print(time) + From 01b51b2c1d44dfafc9914a31b9c5547dd96d522a Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Wed, 9 Dec 2015 15:36:45 -0800 Subject: [PATCH 098/493] Fixing cv comparison simulation --- forLater/josh/sim.cv.R | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/forLater/josh/sim.cv.R b/forLater/josh/sim.cv.R index 847a52f..3260140 100644 --- a/forLater/josh/sim.cv.R +++ b/forLater/josh/sim.cv.R @@ -5,7 +5,7 @@ source("../../selectiveInference/R/funs.quadratic.R") source("../../selectiveInference/R/funs.common.R") set.seed(1) -niters <- 500 +niters <- 50 n <- 100 p <- 200 maxsteps <- 10 @@ -25,30 +25,36 @@ instance <- function(n, p, sparsity, snr, maxsteps, nfolds) { } fit <- cvfs(x, y, maxsteps=maxsteps, sigma=1, nfolds=nfolds) - fit2 <- groupfs(x, y, index = 1:p, maxsteps = attr(fit, "maxsteps"), sigma = 1) + vars <- fit$action + #fit2 <- groupfs(x, y, index = 1:p, maxsteps = attr(fit, "maxsteps"), sigma = 1) pvals <- groupfsInf(fit, verbose=T) - pv2 <- groupfsInf(fit2, verbose=T) + fit$cvobj <- NULL + nocvpv <- groupfsInf(fit, verbose=T) Y <- y - mean(y) - cols <- which(1:p %in% fit$action) - pv3 <- summary(lm(Y~x[, cols]-1))$coefficients[,4] - return(list(variable = fit$action, pvals = pvals$pv, var2 = fit2$action, pvals2 = pv2$pv, pvals3 = pv3[order(fit$action)])) + cols <- which(1:p %in% vars) + noselpv <- summary(lm(Y~x[, cols]-1))$coefficients[,4] + names(noselpv) <- as.character(sort(vars)) + return(list(vars = vars, pvals = pvals$pv, + nocvvars = vars, nocvpvals = nocvpv$pv, + noselvars = sort(vars), noselpvals = noselpv)) } time <- system.time({ output <- replicate(niters, instance(n, p, sparsity, snr, maxsteps, nfolds)) }) -pvals <- do.call(c, list(output[2,])) vars <- do.call(c, list(output[1,])) -vars2 <- do.call(c, list(output[3,])) -pvals2 <- do.call(c, list(output[4,])) -pvals3 <- do.call(c, list(output[5,])) +pvals <- do.call(c, list(output[2,])) +nocvvars <- do.call(c, list(output[3,])) +nocvpvals <- do.call(c, list(output[4,])) +noselvars <- do.call(c, list(output[5,])) +noselpvals <- do.call(c, list(output[6,])) -save(pvals, vars, vars2, pvals2, pvals3, file = paste0( +save(vars, pvals, nocvvars, nocvpvals, noselvars, noselpvals, file = paste0( "results_cv_n", n, "_p", p, "_sparsity", sparsity, "_snr", snr, - "_comparison_TC.RData")) + "_comparison.RData")) print(time) From dcbad8661fe316c304830e85b2009ba3cfefb684 Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Wed, 9 Dec 2015 16:34:17 -0800 Subject: [PATCH 099/493] Fixed typo in TF cv code --- forLater/josh/sim.cv.R | 20 ++++++++++++-------- selectiveInference/R/funs.groupfs.R | 2 +- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/forLater/josh/sim.cv.R b/forLater/josh/sim.cv.R index 3260140..6287d20 100644 --- a/forLater/josh/sim.cv.R +++ b/forLater/josh/sim.cv.R @@ -7,27 +7,31 @@ source("../../selectiveInference/R/funs.common.R") set.seed(1) niters <- 50 n <- 100 -p <- 200 +p <- 50 maxsteps <- 10 sparsity <- 5 -snr <- 1 +snr <- 2 +rho <- 0.1 nfolds <- 5 -instance <- function(n, p, sparsity, snr, maxsteps, nfolds) { +instance <- function(n, p, sparsity, snr, maxsteps, nfolds, rho) { x <- matrix(rnorm(n*p), nrow=n) + if (rho != 0) { + z <- matrix(rep(t(rnorm(n)), p), nrow = n) + x <- sqrt(1-rho)*x + sqrt(rho)*z + } y <- rnorm(n) if (sparsity > 0) { beta <- rep(0, p) - beta[1:sparsity] <- snr * sample(c(-1,1), sparsity, replace=T) + beta[1:sparsity] <- snr * sqrt(2*log(p)/n) * sample(c(-1,1), sparsity, replace=T) y <- y + x %*% beta } - fit <- cvfs(x, y, maxsteps=maxsteps, sigma=1, nfolds=nfolds) + fit <- cvfs(x, y, maxsteps=maxsteps, nfolds=nfolds) vars <- fit$action - #fit2 <- groupfs(x, y, index = 1:p, maxsteps = attr(fit, "maxsteps"), sigma = 1) - pvals <- groupfsInf(fit, verbose=T) + pvals <- groupfsInf(fit, sigma=1, verbose=T) fit$cvobj <- NULL nocvpv <- groupfsInf(fit, verbose=T) Y <- y - mean(y) @@ -40,7 +44,7 @@ instance <- function(n, p, sparsity, snr, maxsteps, nfolds) { } time <- system.time({ - output <- replicate(niters, instance(n, p, sparsity, snr, maxsteps, nfolds)) + output <- replicate(niters, instance(n, p, sparsity, snr, maxsteps, nfolds, rho)) }) vars <- do.call(c, list(output[1,])) diff --git a/selectiveInference/R/funs.groupfs.R b/selectiveInference/R/funs.groupfs.R index 532cd02..b2c0447 100644 --- a/selectiveInference/R/funs.groupfs.R +++ b/selectiveInference/R/funs.groupfs.R @@ -378,7 +378,7 @@ groupfsInf <- function(obj, sigma = NULL, verbose = TRUE) { x0 <- zcvquad %*% Z x1 <- 2*R*zcvquad %*% Vdelta x2 <- 2*R*zcvquad %*% V2 - x12 <- 2*R*vdcvquad %*% V2 + x12 <- 2*R^2*vdcvquad %*% V2 x11 <- R^2*vdcvquad %*% Vdelta x22 <- R^2*v2cvquad %*% V2 TF_roots(R, C, coeffs = list(x0=x0, x1=x1, x2=x2, x12=x12, x11=x11, x22=x22)) From aacba41a8c386d2e549879047770feaaed19d0bc Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Wed, 9 Dec 2015 17:14:54 -0800 Subject: [PATCH 100/493] Setting up simmulation --- forLater/josh/sim.cv.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/forLater/josh/sim.cv.R b/forLater/josh/sim.cv.R index 6287d20..807cde2 100644 --- a/forLater/josh/sim.cv.R +++ b/forLater/josh/sim.cv.R @@ -8,7 +8,7 @@ set.seed(1) niters <- 50 n <- 100 p <- 50 -maxsteps <- 10 +maxsteps <- 8 sparsity <- 5 snr <- 2 rho <- 0.1 @@ -31,7 +31,7 @@ instance <- function(n, p, sparsity, snr, maxsteps, nfolds, rho) { fit <- cvfs(x, y, maxsteps=maxsteps, nfolds=nfolds) vars <- fit$action - pvals <- groupfsInf(fit, sigma=1, verbose=T) + pvals <- groupfsInf(fit, verbose=T) fit$cvobj <- NULL nocvpv <- groupfsInf(fit, verbose=T) Y <- y - mean(y) From 3cc3318a868edb7892e465bb615aea8612d9f9ee Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Thu, 10 Dec 2015 06:14:31 -0800 Subject: [PATCH 101/493] Organizing simulations --- forLater/josh/sim.aicstop.R | 22 +++++++++------- forLater/josh/sim.cv.R | 23 +++++++++++----- forLater/josh/sim.datasplit.R | 49 +++++++++++++++++++++++------------ forLater/josh/sim.groupfs.R | 21 ++++++++------- 4 files changed, 72 insertions(+), 43 deletions(-) diff --git a/forLater/josh/sim.aicstop.R b/forLater/josh/sim.aicstop.R index 409ab0f..af150ec 100644 --- a/forLater/josh/sim.aicstop.R +++ b/forLater/josh/sim.aicstop.R @@ -38,15 +38,17 @@ stopped <- do.call(c, list(output[3,])) pvals <- do.call(c, list(output[2,])) vars <- do.call(c, list(output[1,])) -save(pvals, vars, stopped, file = paste0( - "results_aic_n", n, - "_p", p, - "_g", G, - "_rho", gsub(pattern = ".", replacement = "", x = rho, fixed = T), - "_maxsteps", maxsteps, - "_sparsity", sparsity, - "_snr", round(snr), - "_known", known, - ".RData")) +save(pvals, vars, stopped, + file = paste0( + "results/aic", + "_", ifelse(known, "TC", "TF"), + "_n", n, + "_p", p, + "_g", G, + "_rho", gsub(".", "pt", rho, fixed=T), + "_maxsteps", maxsteps, + "_sparsity", sparsity, + "_snr", round(snr), + ".RData")) print(time) diff --git a/forLater/josh/sim.cv.R b/forLater/josh/sim.cv.R index 807cde2..7d20e8c 100644 --- a/forLater/josh/sim.cv.R +++ b/forLater/josh/sim.cv.R @@ -6,6 +6,7 @@ source("../../selectiveInference/R/funs.common.R") set.seed(1) niters <- 50 +known <- FALSE n <- 100 p <- 50 maxsteps <- 8 @@ -29,7 +30,11 @@ instance <- function(n, p, sparsity, snr, maxsteps, nfolds, rho) { y <- y + x %*% beta } - fit <- cvfs(x, y, maxsteps=maxsteps, nfolds=nfolds) + if (known) { + fit <- cvfs(x, y, maxsteps=maxsteps, sigma = 1, nfolds=nfolds) + } else { + fit <- cvfs(x, y, maxsteps=maxsteps, nfolds=nfolds) + } vars <- fit$action pvals <- groupfsInf(fit, verbose=T) fit$cvobj <- NULL @@ -54,11 +59,15 @@ nocvpvals <- do.call(c, list(output[4,])) noselvars <- do.call(c, list(output[5,])) noselpvals <- do.call(c, list(output[6,])) -save(vars, pvals, nocvvars, nocvpvals, noselvars, noselpvals, file = paste0( - "results_cv_n", n, - "_p", p, - "_sparsity", sparsity, - "_snr", snr, - "_comparison.RData")) +save(vars, pvals, nocvvars, nocvpvals, noselvars, noselpvals, + file = paste0("results/cv", + "_", ifelse(known, "TC", "TF"), + "_n", n, + "_p", p, + "_rho", gsub(".", "pt", rho, fixed=T), + "_sparsity", sparsity, + "_maxsteps", maxsteps, + "_snr", snr, + ".RData")) print(time) diff --git a/forLater/josh/sim.datasplit.R b/forLater/josh/sim.datasplit.R index 9d59cd6..ef3de31 100644 --- a/forLater/josh/sim.datasplit.R +++ b/forLater/josh/sim.datasplit.R @@ -5,19 +5,26 @@ source("../../selectiveInference/R/funs.quadratic.R") source("../../selectiveInference/R/funs.common.R") set.seed(1) -niters <- 1000 +niters <- 500 +known <- FALSE n <- 100 -p <- 50 +p <- 200 maxsteps <- 20 sparsity <- 5 snr <- 1 -train <- 1:(7*n/10) +rho <- 0.1 +ratio <- 0.75 +train <- 1:(ratio*n) test <- setdiff(1:n, train) index <- 1:p -instance <- function(n, p, sparsity, snr, maxsteps, nfolds) { +instance <- function(n, p, sparsity, snr, maxsteps, rho) { x <- matrix(rnorm(n*p), nrow=n) + if (rho != 0) { + z <- matrix(rep(t(rnorm(n)), p), nrow = n) + x <- sqrt(1-rho)*x + sqrt(rho)*z + } y <- rnorm(n) if (sparsity > 0) { @@ -31,34 +38,44 @@ instance <- function(n, p, sparsity, snr, maxsteps, nfolds) { yte <- y[test] xte <- x[test, ] - #log(length(train)) - trfit <- groupfs(xtr, ytr, index, maxsteps=maxsteps, aicstop=1, k = log(length(train))) - fit <- groupfs(x, y, index, maxsteps=maxsteps, aicstop=1, k = log(n)) + if (known) { + trfit <- groupfs(xtr, ytr, index, maxsteps=maxsteps, sigma=1, aicstop=1, k = 2*log(p)) + fit <- groupfs(x, y, index, maxsteps=maxsteps, sigma=1, aicstop=1, k = 2*log(p)) + } else { + trfit <- groupfs(xtr, ytr, index, maxsteps=maxsteps, aicstop=1, k = log(length(train))) + fit <- groupfs(x, y, index, maxsteps=maxsteps, aicstop=1, k = log(n)) + } trcols <- which(1:p %in% trfit$action) tepv <- summary(lm(yte~xte[, trcols]-1))$coefficients[,4] names(tepv) <- as.character(sort(trfit$action)) pv <- groupfsInf(fit) + trpv <- groupfsInf(trfit) return(list(vars = fit$action, pvals = pv$pv, - splitvars = sort(trfit$action), splitpvals = tepv)) + splitvars = sort(trfit$action), splitpvals = tepv), + trpvals = trpv$pv) } time <- system.time({ - output <- replicate(niters, instance(n, p, sparsity, snr, maxsteps, nfolds)) + output <- replicate(niters, instance(n, p, sparsity, snr, maxsteps, rho)) }) vars <- do.call(c, list(output[1,])) pvals <- do.call(c, list(output[2,])) splitvars <- do.call(c, list(output[3,])) splitpvals <- do.call(c, list(output[4,])) +trpvals <- do.call(c, list(output[5,])) - -save(vars, pvals, splitvars, splitpvals, file = paste0( - "results_datasplit_n", n, - "_p", p, - "_sparsity", sparsity, - "_snr", as.character(snr), - "_bic.RData")) +save(vars, pvals, splitvars, splitpvals, trpvals, + file = paste0("results/datasplit", + "_", ifelse(known, "TC", "TF"), + "_n", n, + "_p", p, + "_rho", gsub(".", "pt", rho, fixed=T), + "_sparsity", sparsity, + "_ratio", gsub(".", "pt", round(ratio, 2), fixed=T), + "_snr", as.character(snr), + "_bic.RData")) print(time) diff --git a/forLater/josh/sim.groupfs.R b/forLater/josh/sim.groupfs.R index 9e60631..5f053e5 100644 --- a/forLater/josh/sim.groupfs.R +++ b/forLater/josh/sim.groupfs.R @@ -37,15 +37,16 @@ time <- system.time({ pvals <- do.call(c, list(output[2,])) vars <- do.call(c, list(output[1,])) -save(pvals, vars, file = paste0( - "results_n", n, - "_p", p, - "_g", G, - "_rho", gsub(pattern = ".", replacement = "", x = rho, fixed = T), - "_maxsteps", maxsteps, - "_sparsity", sparsity, - "_snr", round(snr), - "_known", known, - ".RData")) +save(pvals, vars, + file = paste0("results/", + ifelse(known, "TC", "TF"), + "_n", n, + "_p", p, + "_g", G, + "_rho", gsub(".", "pt", rho, fixed=T), + "_maxsteps", maxsteps, + "_sparsity", sparsity, + "_snr", round(snr), + ".RData")) print(time) From a4f89ea017da8074ffd296d0b511305e4bfe942a Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Thu, 10 Dec 2015 06:30:54 -0800 Subject: [PATCH 102/493] Data carving simulation --- forLater/josh/sim.carve.R | 81 +++++++++++++++++++++++++++++++++++ forLater/josh/sim.datasplit.R | 8 ++-- 2 files changed, 85 insertions(+), 4 deletions(-) create mode 100644 forLater/josh/sim.carve.R diff --git a/forLater/josh/sim.carve.R b/forLater/josh/sim.carve.R new file mode 100644 index 0000000..2881109 --- /dev/null +++ b/forLater/josh/sim.carve.R @@ -0,0 +1,81 @@ +library(intervals) +source("selectiveInference/R/cv.R") +source("../../selectiveInference/R/funs.groupfs.R") +source("../../selectiveInference/R/funs.quadratic.R") +source("../../selectiveInference/R/funs.common.R") + +set.seed(1) +niters <- 400 +known <- FALSE +n <- 100 +p <- 50 +maxsteps <- 20 +sparsity <- 10 +snr <- 1 +rho <- 0.1 +ratio <- 0.75 +train <- 1:(ratio*n) +test <- setdiff(1:n, train) +index <- 1:p + +instance <- function(n, p, sparsity, snr, maxsteps, rho) { + + x <- matrix(rnorm(n*p), nrow=n) + if (rho != 0) { + z <- matrix(rep(t(rnorm(n)), p), nrow = n) + x <- sqrt(1-rho)*x + sqrt(rho)*z + } + y <- rnorm(n) + + if (sparsity > 0) { + beta <- rep(0, p) + beta[1:sparsity] <- snr * sample(c(-1,1), sparsity, replace=T) + y <- y + x %*% beta + } + + ytr <- y[train] + xtr <- x[train, ] + yte <- y[test] + xte <- x[test, ] + + if (known) { + trfit <- cvfs(xtr, ytr, maxsteps=maxsteps, sigma = 1, nfolds=nfolds) + fit <- cvfs(x, y, maxsteps=maxsteps, sigma = 1, nfolds=nfolds) + } else { + trfit <- cvfs(xtr, ytr, maxsteps=maxsteps, nfolds=nfolds) + fit <- cvfs(x, y, maxsteps=maxsteps, nfolds=nfolds) + } + + trcols <- which(1:p %in% trfit$action) + tepv <- summary(lm(yte~xte[, trcols]-1))$coefficients[,4] + names(tepv) <- as.character(sort(trfit$action)) + pv <- groupfsInf(fit) + trpv <- groupfsInf(trfit) + return(list(vars = fit$action, pvals = pv$pv, + splitvars = sort(trfit$action), splitpvals = tepv, + trpvals = trpv$pv)) +} + +time <- system.time({ + output <- replicate(niters, instance(n, p, sparsity, snr, maxsteps, rho)) +}) + +vars <- do.call(c, list(output[1,])) +pvals <- do.call(c, list(output[2,])) +splitvars <- do.call(c, list(output[3,])) +splitpvals <- do.call(c, list(output[4,])) +trpvals <- do.call(c, list(output[5,])) + +save(vars, pvals, splitvars, splitpvals, trpvals, + file = paste0("results/carvecv", + "_", ifelse(known, "TC", "TF"), + "_n", n, + "_p", p, + "_rho", gsub(".", "pt", rho, fixed=T), + "_sparsity", sparsity, + "_ratio", gsub(".", "pt", round(ratio, 2), fixed=T), + "_snr", as.character(snr), + ".RData")) + +print(time) + diff --git a/forLater/josh/sim.datasplit.R b/forLater/josh/sim.datasplit.R index ef3de31..e732ce7 100644 --- a/forLater/josh/sim.datasplit.R +++ b/forLater/josh/sim.datasplit.R @@ -8,9 +8,9 @@ set.seed(1) niters <- 500 known <- FALSE n <- 100 -p <- 200 +p <- 100 maxsteps <- 20 -sparsity <- 5 +sparsity <- 10 snr <- 1 rho <- 0.1 ratio <- 0.75 @@ -52,8 +52,8 @@ instance <- function(n, p, sparsity, snr, maxsteps, rho) { pv <- groupfsInf(fit) trpv <- groupfsInf(trfit) return(list(vars = fit$action, pvals = pv$pv, - splitvars = sort(trfit$action), splitpvals = tepv), - trpvals = trpv$pv) + splitvars = sort(trfit$action), splitpvals = tepv, + trpvals = trpv$pv)) } time <- system.time({ From 859a6d4d43316eec012f3c55d87cd1abf9e679dc Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Fri, 11 Dec 2015 10:54:54 -0800 Subject: [PATCH 103/493] Need to tune simulations better --- forLater/josh/sim.carve.R | 1 + forLater/josh/sim.datasplit.R | 23 +++++++++++++++++------ 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/forLater/josh/sim.carve.R b/forLater/josh/sim.carve.R index 2881109..7d1ae59 100644 --- a/forLater/josh/sim.carve.R +++ b/forLater/josh/sim.carve.R @@ -17,6 +17,7 @@ ratio <- 0.75 train <- 1:(ratio*n) test <- setdiff(1:n, train) index <- 1:p +nfolds <- 5 instance <- function(n, p, sparsity, snr, maxsteps, rho) { diff --git a/forLater/josh/sim.datasplit.R b/forLater/josh/sim.datasplit.R index e732ce7..be077a1 100644 --- a/forLater/josh/sim.datasplit.R +++ b/forLater/josh/sim.datasplit.R @@ -5,17 +5,20 @@ source("../../selectiveInference/R/funs.quadratic.R") source("../../selectiveInference/R/funs.common.R") set.seed(1) -niters <- 500 +niters <- 400 known <- FALSE n <- 100 p <- 100 -maxsteps <- 20 -sparsity <- 10 +maxsteps <- 10 +sparsity <- 5 snr <- 1 rho <- 0.1 -ratio <- 0.75 +ratio <- 0.7 +ratio2 <- 0.85 train <- 1:(ratio*n) test <- setdiff(1:n, train) +train2 <- 1:(ratio2*n) +test <- setdiff(1:n, train2) index <- 1:p instance <- function(n, p, sparsity, snr, maxsteps, rho) { @@ -37,18 +40,26 @@ instance <- function(n, p, sparsity, snr, maxsteps, rho) { xtr <- x[train, ] yte <- y[test] xte <- x[test, ] + + ytr2 <- y[train2] + xtr2 <- x[train2, ] + yte2 <- y[test2] + xte2 <- x[test2, ] if (known) { trfit <- groupfs(xtr, ytr, index, maxsteps=maxsteps, sigma=1, aicstop=1, k = 2*log(p)) - fit <- groupfs(x, y, index, maxsteps=maxsteps, sigma=1, aicstop=1, k = 2*log(p)) + fit <- groupfs(xtr2, ytr2, index, maxsteps=maxsteps, sigma=1, aicstop=1, k = 2*log(p)) } else { trfit <- groupfs(xtr, ytr, index, maxsteps=maxsteps, aicstop=1, k = log(length(train))) - fit <- groupfs(x, y, index, maxsteps=maxsteps, aicstop=1, k = log(n)) + fit <- groupfs(xtr2, ytr2, index, maxsteps=maxsteps, aicstop=1, k = log(length(train2))) } trcols <- which(1:p %in% trfit$action) + tr2cols <- which(1:p %in% fit$action) tepv <- summary(lm(yte~xte[, trcols]-1))$coefficients[,4] + tepv2 <- summary(lm(yte2~xte2[, tr2cols]-1))$coefficients[,4] names(tepv) <- as.character(sort(trfit$action)) + names(tepv2) <- as.character(sort(trfit$action)) pv <- groupfsInf(fit) trpv <- groupfsInf(trfit) return(list(vars = fit$action, pvals = pv$pv, From f115ab2ae797700261f3c10c75252df890104627 Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Wed, 23 Dec 2015 16:37:33 -0800 Subject: [PATCH 104/493] Setting up new data splitting simulation --- forLater/josh/sim.splitcv.R | 77 +++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 forLater/josh/sim.splitcv.R diff --git a/forLater/josh/sim.splitcv.R b/forLater/josh/sim.splitcv.R new file mode 100644 index 0000000..cc5428e --- /dev/null +++ b/forLater/josh/sim.splitcv.R @@ -0,0 +1,77 @@ +library(intervals) +source("selectiveInference/R/cv.R") +source("../../selectiveInference/R/funs.groupfs.R") +source("../../selectiveInference/R/funs.quadratic.R") +source("../../selectiveInference/R/funs.common.R") + +set.seed(1) +niters <- 500 +known <- FALSE +n <- 100 +p <- 200 +maxsteps <- 20 +sparsity <- 5 +snr <- 1 +rho <- 0.1 +ratio <- 0.75 +train <- 1:(ratio*n) +test <- setdiff(1:n, train) +index <- 1:p + +instance <- function(n, p, sparsity, snr, maxsteps, rho) { + + x <- matrix(rnorm(n*p), nrow=n) + if (rho != 0) { + z <- matrix(rep(t(rnorm(n)), p), nrow = n) + x <- sqrt(1-rho)*x + sqrt(rho)*z + } + y <- rnorm(n) + + if (sparsity > 0) { + beta <- rep(0, p) + beta[1:sparsity] <- snr * sample(c(-1,1), sparsity, replace=T) + y <- y + x %*% beta + } + + ytr <- y[train] + xtr <- x[train, ] + yte <- y[test] + xte <- x[test, ] + + if (known) { + trfit <- groupfs(xtr, ytr, index, maxsteps=maxsteps, sigma=1, aicstop=1, k = 2*log(p)) + fit <- groupfs(x, y, index, maxsteps=maxsteps, sigma=1, aicstop=1, k = 2*log(p)) + } else { + trfit <- groupfs(xtr, ytr, index, maxsteps=maxsteps, aicstop=1, k = log(length(train))) + fit <- groupfs(x, y, index, maxsteps=maxsteps, aicstop=1, k = log(n)) + } + + trcols <- which(1:p %in% trfit$action) + tepv <- summary(lm(yte~xte[, trcols]-1))$coefficients[,4] + names(tepv) <- as.character(sort(trfit$action)) +# pv <- groupfsInf(fit) +# trpv <- groupfsInf(trfit) + return(list(vars = fit$action, splitvars = sort(trfit$action), splitpvals = tepv)) +} + +time <- system.time({ + output <- replicate(niters, instance(n, p, sparsity, snr, maxsteps, rho)) +}) + +vars <- do.call(c, list(output[1,])) +splitvars <- do.call(c, list(output[2,])) +splitpvals <- do.call(c, list(output[3,])) + +save(vars, pvals, splitvars, splitpvals, trpvals, + file = paste0("results/datasplit", + "_", ifelse(known, "TC", "TF"), + "_n", n, + "_p", p, + "_rho", gsub(".", "pt", rho, fixed=T), + "_sparsity", sparsity, + "_ratio", gsub(".", "pt", round(ratio, 2), fixed=T), + "_snr", as.character(snr), + "_bic.RData")) + +print(time) + From 00396d05fe7cb5464582fb7792d2bb06014648a9 Mon Sep 17 00:00:00 2001 From: tibshirani Date: Sat, 26 Dec 2015 11:46:22 -0500 Subject: [PATCH 105/493] rob --- selectiveInference/NAMESPACE | 1 + selectiveInference/R/funs.fs.R | 13 +++++++------ tests/test.fs.R | 14 ++++++++++++++ 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/selectiveInference/NAMESPACE b/selectiveInference/NAMESPACE index 8dd9120..5b65949 100644 --- a/selectiveInference/NAMESPACE +++ b/selectiveInference/NAMESPACE @@ -34,4 +34,5 @@ import(intervals) importFrom("graphics", abline, axis, matplot) importFrom("stats", dnorm, lsfit, pexp, pnorm, predict, qnorm, rnorm, sd, uniroot, dchisq, model.matrix, pchisq) +importFrom("stats", "coef", "df", "lm", "pf") diff --git a/selectiveInference/R/funs.fs.R b/selectiveInference/R/funs.fs.R index a6a9c3f..b5ee511 100644 --- a/selectiveInference/R/funs.fs.R +++ b/selectiveInference/R/funs.fs.R @@ -106,8 +106,8 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, } # Key quantities for the next entry - - X_inactive_resid = X_inactive - X_active %*% backsolve(R,t(Q_active)%*%X_inactive) + keepLs=backsolve(R,t(Q_active)%*%X_inactive) + X_inactive_resid = X_inactive - X_active %*% keepLs working_x = scale(X_inactive_resid,center=F,scale=sqrt(colSums(X_inactive_resid^2))) score = as.numeric(t(working_x)%*%y) @@ -189,7 +189,7 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, # Record the least squares solution. Note that # we have already computed this bls = rep(0,p) - bls[A] = a + if(length(keepLs)>0) bls[A] = keepLs } if (verbose) cat("\n") @@ -448,6 +448,7 @@ print.fsInf <- function(x, tailarea=TRUE, ...) { invisible() } + plot.fs <- function(x, breaks=TRUE, omit.zeros=TRUE, var.labels=TRUE, ...) { if (x$completepath) { k = length(x$action)+1 @@ -457,10 +458,10 @@ plot.fs <- function(x, breaks=TRUE, omit.zeros=TRUE, var.labels=TRUE, ...) { beta = x$beta } p = nrow(beta) - + xx = 1:k xlab = "Step" - + if (omit.zeros) { good.inds = matrix(FALSE,p,k) good.inds[beta!=0] = TRUE @@ -475,7 +476,7 @@ plot.fs <- function(x, breaks=TRUE, omit.zeros=TRUE, var.labels=TRUE, ...) { abline(h=0,lwd=2) matplot(xx,t(beta),type="l",lty=1,add=TRUE) if (breaks) abline(v=xx,lty=2) - if (var.labels) axis(4,at=beta[,k],labels=1:p,cex=0.8,adj=0) + if (var.labels) axis(4,at=beta[,k],labels=1:p,cex=0.8,adj=0) invisible() } diff --git a/tests/test.fs.R b/tests/test.fs.R index f811676..a3d1f91 100644 --- a/tests/test.fs.R +++ b/tests/test.fs.R @@ -171,3 +171,17 @@ out3 = fsInf(obj,sigma=sigma,k=k,type="all") out3 out4 = fsInf(obj,sigma=sigma,k=k,type="all",bits=200) +##plot + + + set.seed(33) + n = 50 + p = 10 + sigma = 1 + x = matrix(rnorm(n*p),n,p) + beta = c(3,2,rep(0,p-2)) + y = x%*%beta + sigma*rnorm(n) + + # run forward stepwise, plot results + fsfit = fs(x,y) + plot(fsfit) From b238822a88e45175188ef334fb1dc4424ff01a9e Mon Sep 17 00:00:00 2001 From: tibs Date: Fri, 1 Jan 2016 15:50:39 -0800 Subject: [PATCH 106/493] rob --- forLater/robnotes.pdf | Bin 0 -> 150705 bytes forLater/robnotes.tex | 287 +++++++++++++++++++++++++++++++++ selectiveInference/DESCRIPTION | 6 +- tests/test.fs.R | 18 ++- 4 files changed, 304 insertions(+), 7 deletions(-) create mode 100644 forLater/robnotes.pdf create mode 100644 forLater/robnotes.tex diff --git a/forLater/robnotes.pdf b/forLater/robnotes.pdf new file mode 100644 index 0000000000000000000000000000000000000000..b814a8966b6b046faee5289895535978310ff7ce GIT binary patch literal 150705 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 Ag8%>k literal 0 HcmV?d00001 diff --git a/forLater/robnotes.tex b/forLater/robnotes.tex new file mode 100644 index 0000000..dd6ff47 --- /dev/null +++ b/forLater/robnotes.tex @@ -0,0 +1,287 @@ +\documentclass{article} + +\usepackage[round]{natbib} +\usepackage{amsmath,amssymb,amsthm,bm,enumerate,mathrsfs,mathtools} +\usepackage{latexsym,color,verbatim,multirow} +\usepackage{graphicx} +\usepackage{caption} +\usepackage{subcaption} + + +\def\be {{\bf 1}} + + +\newcommand{\real}{\mathbb{R}} +\begin{document} +\title{Post-selection inference for generalized regression} +\author{Jonathan Taylor and Robert Tibshirani} + +\maketitle + +\begin{abstract} +\end{abstract} + + + + +\section{Introduction} + +\begin{itemize} +\item Data $(x_i, y_i), i=1,2,\ldots N$ with $x_i=(x_{i1},x_{i2},\ldots x_{ip})$. +Let $X= \{x_{ij}\}$ be the data matrix. + + +\item Generalized regression model with linear predictor $\eta=\beta_0+X\beta$ and log-likelihood +$\ell(\beta_0,\beta)$. Consider the objective function +\begin{eqnarray} +J(\beta_0,\beta)=-\ell(\beta_0,\beta) +\lambda\cdot \sum_1^p |\beta_j| +\label{eqn:obj}) +\end{eqnarray} +\item Let $\hat\beta_0, \hat\beta_1$ be the minimizers of $J(\beta_0, \beta)$. We wish to carry out post-selection inference +for any functional $\gamma^T\beta$. +\item Leading example: logistic regression. $\pi=E(Y|x)$; $\log \pi/(1-\pi)=\beta_0+X\beta$. +$\ell(\beta_0,\beta)=\sum [y_i \log(\pi_i)+(1-y_i)\log(1-\pi_i)]$. + +\item Background: Gaussian case. Selected model $M$ with sign vector $s$, +the KKT conditions state that $\{\hat M,\hat s \} = (M,s)$ if and only if there exists $\beta$ and $u$ satisfying +\begin{eqnarray} +X_M^(X_M^T\beta- y) +\lambda s)+\lambda s&=&0 \cr +X_{-M}^T(X_M^T \beta-y)+ \lambda s)+\lambda u&=&0 \cr +{\rm sign}(\beta)&=&s \cr +||u||_\infty &<& 1 +\end{eqnarray} +This allows us to write the set of response $y$ that yield the same $M$ and $s$ in the polyhedral form +\begin{equation} +\Bigl\{ \begin{pmatrix} A_0(M,s) \cr + A_1(M,s) + \end{pmatrix} + y < + \begin{pmatrix} b_0(M,s) \cr + b_1(M,s) + \end{pmatrix} + \Bigr\} + \end{equation} + + + + +\item A convenient strategy for minimizing (\ref{eqn:obj}) to express the usual +Newton-Raphson update as an iterative reweighted least squares (IRLS) step, and then +replace the weighted least squares step by a constrained weighted least squares +procedure. + +We define $u= \partial\ell/\partial\eta$, +$W=-\partial^2 l/\partial\eta\eta^T$ and $z=\eta+W^{-1}u$ +Then a one-term Taylor series expansion for $\ell(\beta)$ has the form +\begin{eqnarray} +(z-\eta)^T W(z-\eta) +\label{taylor} +\end{eqnarray} +Hence to minimize (\ref{eqn:obj}) we use the following + procedure: +\begin{enumerate} +\item Fix $s$ and initialize $\hat\beta=0$ +\item Compute $\eta, W$ and $z$ based on the current value of $\hat\beta$ +\item Minimize $(z-\beta_0-X\beta)^TW (z-\beta_0-X\beta)+\lambda\cdot\sum|\beta_j|$ +\item Repeat steps (2) and (3) until $\hat\beta_0, \hat\beta$ don't change. +\end{enumerate} + +\item KKT +$$ -X_M^T W(z- \beta_0-X_M^T\beta)+\lambda s=0$$ +\item +$$\hat\beta=(X_M^TW X_M)^{-1}(X_M^TW z-\lambda s) \;(active) $$ +$$-X_{-M}^T W (z-X_M\beta)+\lambda u =0, ||u||_\infty <1 \;(inactive) $$ +\begin{eqnarray} +u&=&X_{-M}^T W P_MW^{-1}(X_M^T)^+s+ \frac{1}{\lambda} X_{-M}^T W(I-P_M)z +\end{eqnarray} + +\item For active variables, +${\rm diag(s)}\beta>0$ implies +$D(X_M^TXW_M)^{-1}(X_m^TW z-\lambda s)>0$. +where $D={\rm diag(}s)$. + +Hence +$A_1=-D(X_M^TWX_M)^{-1}X_M^TW, b_1=-D(X_M^TWX_M)^{-1}\lambda s$ + +For inactive variables, +$A_0=\frac{1}{\lambda} +\begin{pmatrix} + X_{-M}^T W) \\ + -X_{-M}^T W + \end{pmatrix} + $, $b_0= \begin{pmatrix} + \be+X_{-M}^TWX_M\hat\beta/\lambda \\ + \be-X_{-M}^TWX_M\hat\beta/\lambda + \end{pmatrix} + $ + + Finally, let $A=\begin{pmatrix} A_1\\ A_0 \end{pmatrix} +, b=(b_1,b_0)$ + +\item Idea: take $z\sim N(\mu,W^{-1})$ and apply polyhedral lemma to region $A z \leq b$. +Potential problem: $A,b, z$ depend on $\hat\beta$; and region $A z \leq b$ does not correspond to set +\item Logistic regression: KKT +$$z=X\beta+\frac{y-\hat p}{\hat p(1-\hat p)}$$ +$$ -X_M^T W(z- X_M^T\beta)+\lambda s=0$$ +\item +$$\hat\beta=(X_M^TW X_M)^{-1}(X_M^TW z-\lambda s) \;(active) $$ +$$-X_{-M}^T W (z-X_M\beta)+\lambda u =0, ||u||_\infty <1 \;(inactive) $$ +\begin{eqnarray} +u&=&X_{-M}^T W P_MW^{-1}(X_M^T)^+s+ \frac{1}{\lambda} X_{-M}^T W(I-P_M)z +\end{eqnarray} + +\item For active variables, +${\rm diag(s)}\beta>0$ implies +$D(X_M^TXW_M)^{-1}(X_m^TW z-\lambda s)>0$. +where $D={\rm diag(}s)$. + +Hence +$A_1=-D(X_M^TWX_M)^{-1}X_M^TW, b_1=-D(X_M^TWX_M)^{-1}\lambda s$ + +For inactive variables, +$A_0=\frac{1}{\lambda} +\begin{pmatrix} + X_{-M}^T W) \\ + -X_{-M}^T W + \end{pmatrix} + $, $b_0= \begin{pmatrix} + \be+X_{-M}^TWX_M\hat\beta/\lambda \\ + \be-X_{-M}^TWX_M\hat\beta/\lambda + \end{pmatrix} + $ + + Finally, let $A=\begin{pmatrix} A_1\\ A_0 \end{pmatrix} +, b=(b_1,b_0)$ + +\item Idea: take $z\sim N(\mu,W^{-1})$ and apply polyhedral lemma to region $A z \leq b$ +\end{itemize} + + +\section{Jon's notes} +We are conditioning on the active set and signs. +Let $\hat{\beta}=\hat{\beta}_{\lambda}$ be the LASSO solution. We are going to +fix the model $M$ and signs $s_M$. So, it is a function of +$M, X_M^Ty, X_M, s_M$. +Also, let +$$ +\begin{aligned} +\hat{\pi} &= \pi(X\hat{\beta}_{\lambda}) \\ +W &= \text{diag}(\hat{\pi}(1-\hat{\pi})) +\end{aligned} +$$ +Let +$$ +z = X_M\hat{\beta} + \frac{y - \hat{\pi}}{\hat{\pi}(1 - \hat{\pi})} +$$ + +The KKT conditions can then be written as +$$ +X^T(y - \hat{\pi}) = +XW(z - X_M\hat{\beta}) = \lambda u +$$ +where $u \in \partial (\| \cdot \|_1)(\hat{\beta})$ so +$$ +u_M = s_M, \quad \|u_{-M}\|_{\infty} < 1. +$$ + +By construction, we have that +$$ +\bar{\beta}=(X_M^TWX_M)^{-1}(X_M^TWz) = \hat{\beta} + \lambda (X_M^TWX_M)^{-1} s_M. +$$ + +This is, up to some remainder, the unpenalized logistic regression estimator. +The remainder, after rescaling, goes to 0 in probability ($p$ fixed) before selection. So, under suitable assumptions about the selective likelihood ratio, +so Lemma 1 of randomized response paper applies, and you can +use this for inference about $\beta_M$. + +Let's look at the inactive block. By construction, +$$ +\begin{aligned} +X_{-M}^TW(z - X_M\hat{\beta}) &= X_{-M}^T(y - \hat{\pi}) \\ +& \approx X_{-M}^T(y - \pi) - X_{-M}^TWX_M(\hat{\beta} - \beta_M) \\ +&= X_{-M}^T(y - \pi) - X_{-M}^TWX_M(\bar{\beta} - \beta_M) + X_{-M}^TWX_M (X_M^TWX_M)^{-1}s_M\\ +\end{aligned} +$$ +with the remainder also going to 0 in probability after appropriate rescaling. + +So, while $z$ is not normally distributed, i.e. +the KKT conditions are +an affine function of $z$ and the affine functionals are such that, +they are asymptotically normally distributed. Further, the variances +from Rob's normal approximation work as plugins variance estimators +(Section 4.3 of http://arxiv.org/pdf/1507.06739v3.pdf) under the +{\bf selected model.} + +Since our variance calculations only hold under the selected model, we might be losing some power using +polyhedral lemma. + +\subsection{Selected is the same as full?} + +\newcommand{\E}{E} + +An asymptotic variance calculation under pairs model $(y_i,X_i) \overset{IID}{\sim} F$: +$$ +\text{Cov}_F \left(X_{-M}^T(y-\pi) - \E_F((X_{-M}^TWX_M))\E((X_M^TWX_M))^{-1}X_M^T(y-\pi)), +\E_F((X_M^TWX_M))^{-1}X_M^T(y-\pi)\right) = 0 +$$ +yields that the +randomness in the inactive block is (asymptotically) independent +of $\bar{\beta}$. This assumes +that the selected model is correct, or, more precisely that $\hat{\pi}$ is a +good estimate of $P_F(y=1|X)$ so that +$$ +\frac{1}{n} X^TWX \approx \text{Cov}_F((y-P_F(y=1|X)) \cdot X) +$$ +($X$ on the RHS should be thought of as a random vector). +This might not be true if link is misspecified or selected model is poor... + +I think then the inactive blocks are not needed. + +\section{Current favorite version} + +$$ +\hat{\beta} = \hat{\beta}_{\lambda} = \text{argmin}_{\beta} \ell(\beta) + \lambda \|\beta\|_1 +$$ + +$$ +M = \{j: \hat{\beta} \neq 0\}, s_M = \text{sign}(\hat{\beta}[M])$$ + +$$ +\begin{aligned} +\bar{\beta}_M &= \hat{\beta}[M] - \left(\nabla^2 \ell(\hat{\beta})[M,M]\right)^{-1} \nabla \ell(\hat{\beta})_M \\ +&= \hat{\beta}_M + \lambda \left(\nabla^2 \ell(\hat{\beta})[M,M]\right)^{-1} s_M \\ +&= \hat{\beta}_M + \lambda \ell_M(\hat{\beta}_M)^{-1} s_M +\end{aligned} +$$ +where $\ell_M: \mathbb{R}^M \rightarrow \mathbb{R}$ is the objective funtions +of the selected model and +$$ +\nabla \ell^2(\hat{\beta})[M,M] = \frac{\partial^2}{\partial \beta_i \partial \beta_j} \ell(\beta) \biggl|_{\hat{\beta}}, \qquad i,j \in M +$$ +is an $|M| \times |M|$ matrix. + +If $\ell$ is a negative log-likelihood, then under the selected model, +$$ +\bar{\beta}_M \approx N\left(\beta_M^*, \nabla^2 \ell_M(\hat{\beta}_M)^{-1}\right). +$$ +subject to affine constraints +$$ +\left\{\text{diag}(s_M)\left[\bar{\beta}_M - \nabla^2 \ell_M(\hat{\beta}_M)^{-1} s_M \right] \geq 0 \right\}. +$$ + +We apply polyhedral lemma to $\bar{\beta}_M$, with $M, s_M$ and $\nabla^2 \ell_M (\hat{\beta}_M)$ fixed. + +For logistic regression, these should match your active block KKT conditions exactly where +$$ +\bar{\beta}_M = (X_M^TWX_M)^{-1}X_M^TWz +$$ +with +$$ +z = X_M\hat{\beta}_M + \frac{y - \hat{\pi}}{\hat{\pi}(1-\hat{\pi})} += X_M\hat{\beta}_M + W^{-1}(y - \hat{\pi}). +$$ + + + +\end{document} + diff --git a/selectiveInference/DESCRIPTION b/selectiveInference/DESCRIPTION index ce95116..4fc8274 100644 --- a/selectiveInference/DESCRIPTION +++ b/selectiveInference/DESCRIPTION @@ -1,8 +1,8 @@ Package: selectiveInference Type: Package -Title: Tools for Selective Inference +Title: Tools for Post-Selection Inference Version: 1.1.2 -Date: 2015-09-01 +Date: 2015-12-17 Author: Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid Maintainer: Rob Tibshirani @@ -11,7 +11,7 @@ Depends: intervals Suggests: Rmpfr -Description: New tools for inference after selection, for use +Description: New tools for post-selection inference, for use with forward stepwise regression, least angle regression, the lasso, and the many means problem. License: GPL-2 diff --git a/tests/test.fs.R b/tests/test.fs.R index a3d1f91..b80e747 100644 --- a/tests/test.fs.R +++ b/tests/test.fs.R @@ -1,6 +1,9 @@ library(selectiveInference) #library(selectiveInference,lib.loc="/Users/tibs/dropbox/git/R/mylib") +options(error=dump.frames) + + library(lars) set.seed(0) @@ -113,8 +116,8 @@ x=matrix(rnorm(n*p),n,p) #x=scale(x,T,T)/sqrt(n-1) #try with and without standardization beta=c(5,4,3,2,1,rep(0,p-5)) - -nsim=100 +beta=rep(0,p) +nsim=500 seeds=sample(1:9999,size=nsim) pv=rep(NA,nsim) ci=matrix(NA,nsim,2) @@ -134,7 +137,10 @@ for(ii in 1:nsim){ btrue[ii]=lsfit(x[,oo],mu)$coef[2] ci[ii,]=junk$ci[1,] } - +plot((1:nsim)/nsim,sort(pv)) + abline(0,1) + + sum(ci[,1]> btrue) sum(ci[,2]< btrue) @@ -173,7 +179,11 @@ out3 ##plot - + library(selectiveInference) + +options(error=dump.frames) + + set.seed(33) n = 50 p = 10 From 98595c96fe1c0bf6989d670e5bda717771e9b056 Mon Sep 17 00:00:00 2001 From: tibs Date: Tue, 9 Feb 2016 09:10:39 -0800 Subject: [PATCH 107/493] doc changes --- forLater/robnotes.pdf | Bin 150705 -> 0 bytes forLater/robnotes.tex | 287 ------------------------ selectiveInference/DESCRIPTION | 4 +- selectiveInference/R/funs.fixed.R | 26 ++- selectiveInference/man/fixedLassoInf.Rd | 56 ++++- tests/test.fixed.R | 72 ++++++ 6 files changed, 139 insertions(+), 306 deletions(-) delete mode 100644 forLater/robnotes.pdf delete mode 100644 forLater/robnotes.tex diff --git a/forLater/robnotes.pdf b/forLater/robnotes.pdf deleted file mode 100644 index b814a8966b6b046faee5289895535978310ff7ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 150705 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 Ag8%>k diff --git a/forLater/robnotes.tex b/forLater/robnotes.tex deleted file mode 100644 index dd6ff47..0000000 --- a/forLater/robnotes.tex +++ /dev/null @@ -1,287 +0,0 @@ -\documentclass{article} - -\usepackage[round]{natbib} -\usepackage{amsmath,amssymb,amsthm,bm,enumerate,mathrsfs,mathtools} -\usepackage{latexsym,color,verbatim,multirow} -\usepackage{graphicx} -\usepackage{caption} -\usepackage{subcaption} - - -\def\be {{\bf 1}} - - -\newcommand{\real}{\mathbb{R}} -\begin{document} -\title{Post-selection inference for generalized regression} -\author{Jonathan Taylor and Robert Tibshirani} - -\maketitle - -\begin{abstract} -\end{abstract} - - - - -\section{Introduction} - -\begin{itemize} -\item Data $(x_i, y_i), i=1,2,\ldots N$ with $x_i=(x_{i1},x_{i2},\ldots x_{ip})$. -Let $X= \{x_{ij}\}$ be the data matrix. - - -\item Generalized regression model with linear predictor $\eta=\beta_0+X\beta$ and log-likelihood -$\ell(\beta_0,\beta)$. Consider the objective function -\begin{eqnarray} -J(\beta_0,\beta)=-\ell(\beta_0,\beta) +\lambda\cdot \sum_1^p |\beta_j| -\label{eqn:obj}) -\end{eqnarray} -\item Let $\hat\beta_0, \hat\beta_1$ be the minimizers of $J(\beta_0, \beta)$. We wish to carry out post-selection inference -for any functional $\gamma^T\beta$. -\item Leading example: logistic regression. $\pi=E(Y|x)$; $\log \pi/(1-\pi)=\beta_0+X\beta$. -$\ell(\beta_0,\beta)=\sum [y_i \log(\pi_i)+(1-y_i)\log(1-\pi_i)]$. - -\item Background: Gaussian case. Selected model $M$ with sign vector $s$, -the KKT conditions state that $\{\hat M,\hat s \} = (M,s)$ if and only if there exists $\beta$ and $u$ satisfying -\begin{eqnarray} -X_M^(X_M^T\beta- y) +\lambda s)+\lambda s&=&0 \cr -X_{-M}^T(X_M^T \beta-y)+ \lambda s)+\lambda u&=&0 \cr -{\rm sign}(\beta)&=&s \cr -||u||_\infty &<& 1 -\end{eqnarray} -This allows us to write the set of response $y$ that yield the same $M$ and $s$ in the polyhedral form -\begin{equation} -\Bigl\{ \begin{pmatrix} A_0(M,s) \cr - A_1(M,s) - \end{pmatrix} - y < - \begin{pmatrix} b_0(M,s) \cr - b_1(M,s) - \end{pmatrix} - \Bigr\} - \end{equation} - - - - -\item A convenient strategy for minimizing (\ref{eqn:obj}) to express the usual -Newton-Raphson update as an iterative reweighted least squares (IRLS) step, and then -replace the weighted least squares step by a constrained weighted least squares -procedure. - -We define $u= \partial\ell/\partial\eta$, -$W=-\partial^2 l/\partial\eta\eta^T$ and $z=\eta+W^{-1}u$ -Then a one-term Taylor series expansion for $\ell(\beta)$ has the form -\begin{eqnarray} -(z-\eta)^T W(z-\eta) -\label{taylor} -\end{eqnarray} -Hence to minimize (\ref{eqn:obj}) we use the following - procedure: -\begin{enumerate} -\item Fix $s$ and initialize $\hat\beta=0$ -\item Compute $\eta, W$ and $z$ based on the current value of $\hat\beta$ -\item Minimize $(z-\beta_0-X\beta)^TW (z-\beta_0-X\beta)+\lambda\cdot\sum|\beta_j|$ -\item Repeat steps (2) and (3) until $\hat\beta_0, \hat\beta$ don't change. -\end{enumerate} - -\item KKT -$$ -X_M^T W(z- \beta_0-X_M^T\beta)+\lambda s=0$$ -\item -$$\hat\beta=(X_M^TW X_M)^{-1}(X_M^TW z-\lambda s) \;(active) $$ -$$-X_{-M}^T W (z-X_M\beta)+\lambda u =0, ||u||_\infty <1 \;(inactive) $$ -\begin{eqnarray} -u&=&X_{-M}^T W P_MW^{-1}(X_M^T)^+s+ \frac{1}{\lambda} X_{-M}^T W(I-P_M)z -\end{eqnarray} - -\item For active variables, -${\rm diag(s)}\beta>0$ implies -$D(X_M^TXW_M)^{-1}(X_m^TW z-\lambda s)>0$. -where $D={\rm diag(}s)$. - -Hence -$A_1=-D(X_M^TWX_M)^{-1}X_M^TW, b_1=-D(X_M^TWX_M)^{-1}\lambda s$ - -For inactive variables, -$A_0=\frac{1}{\lambda} -\begin{pmatrix} - X_{-M}^T W) \\ - -X_{-M}^T W - \end{pmatrix} - $, $b_0= \begin{pmatrix} - \be+X_{-M}^TWX_M\hat\beta/\lambda \\ - \be-X_{-M}^TWX_M\hat\beta/\lambda - \end{pmatrix} - $ - - Finally, let $A=\begin{pmatrix} A_1\\ A_0 \end{pmatrix} -, b=(b_1,b_0)$ - -\item Idea: take $z\sim N(\mu,W^{-1})$ and apply polyhedral lemma to region $A z \leq b$. -Potential problem: $A,b, z$ depend on $\hat\beta$; and region $A z \leq b$ does not correspond to set -\item Logistic regression: KKT -$$z=X\beta+\frac{y-\hat p}{\hat p(1-\hat p)}$$ -$$ -X_M^T W(z- X_M^T\beta)+\lambda s=0$$ -\item -$$\hat\beta=(X_M^TW X_M)^{-1}(X_M^TW z-\lambda s) \;(active) $$ -$$-X_{-M}^T W (z-X_M\beta)+\lambda u =0, ||u||_\infty <1 \;(inactive) $$ -\begin{eqnarray} -u&=&X_{-M}^T W P_MW^{-1}(X_M^T)^+s+ \frac{1}{\lambda} X_{-M}^T W(I-P_M)z -\end{eqnarray} - -\item For active variables, -${\rm diag(s)}\beta>0$ implies -$D(X_M^TXW_M)^{-1}(X_m^TW z-\lambda s)>0$. -where $D={\rm diag(}s)$. - -Hence -$A_1=-D(X_M^TWX_M)^{-1}X_M^TW, b_1=-D(X_M^TWX_M)^{-1}\lambda s$ - -For inactive variables, -$A_0=\frac{1}{\lambda} -\begin{pmatrix} - X_{-M}^T W) \\ - -X_{-M}^T W - \end{pmatrix} - $, $b_0= \begin{pmatrix} - \be+X_{-M}^TWX_M\hat\beta/\lambda \\ - \be-X_{-M}^TWX_M\hat\beta/\lambda - \end{pmatrix} - $ - - Finally, let $A=\begin{pmatrix} A_1\\ A_0 \end{pmatrix} -, b=(b_1,b_0)$ - -\item Idea: take $z\sim N(\mu,W^{-1})$ and apply polyhedral lemma to region $A z \leq b$ -\end{itemize} - - -\section{Jon's notes} -We are conditioning on the active set and signs. -Let $\hat{\beta}=\hat{\beta}_{\lambda}$ be the LASSO solution. We are going to -fix the model $M$ and signs $s_M$. So, it is a function of -$M, X_M^Ty, X_M, s_M$. -Also, let -$$ -\begin{aligned} -\hat{\pi} &= \pi(X\hat{\beta}_{\lambda}) \\ -W &= \text{diag}(\hat{\pi}(1-\hat{\pi})) -\end{aligned} -$$ -Let -$$ -z = X_M\hat{\beta} + \frac{y - \hat{\pi}}{\hat{\pi}(1 - \hat{\pi})} -$$ - -The KKT conditions can then be written as -$$ -X^T(y - \hat{\pi}) = -XW(z - X_M\hat{\beta}) = \lambda u -$$ -where $u \in \partial (\| \cdot \|_1)(\hat{\beta})$ so -$$ -u_M = s_M, \quad \|u_{-M}\|_{\infty} < 1. -$$ - -By construction, we have that -$$ -\bar{\beta}=(X_M^TWX_M)^{-1}(X_M^TWz) = \hat{\beta} + \lambda (X_M^TWX_M)^{-1} s_M. -$$ - -This is, up to some remainder, the unpenalized logistic regression estimator. -The remainder, after rescaling, goes to 0 in probability ($p$ fixed) before selection. So, under suitable assumptions about the selective likelihood ratio, -so Lemma 1 of randomized response paper applies, and you can -use this for inference about $\beta_M$. - -Let's look at the inactive block. By construction, -$$ -\begin{aligned} -X_{-M}^TW(z - X_M\hat{\beta}) &= X_{-M}^T(y - \hat{\pi}) \\ -& \approx X_{-M}^T(y - \pi) - X_{-M}^TWX_M(\hat{\beta} - \beta_M) \\ -&= X_{-M}^T(y - \pi) - X_{-M}^TWX_M(\bar{\beta} - \beta_M) + X_{-M}^TWX_M (X_M^TWX_M)^{-1}s_M\\ -\end{aligned} -$$ -with the remainder also going to 0 in probability after appropriate rescaling. - -So, while $z$ is not normally distributed, i.e. -the KKT conditions are -an affine function of $z$ and the affine functionals are such that, -they are asymptotically normally distributed. Further, the variances -from Rob's normal approximation work as plugins variance estimators -(Section 4.3 of http://arxiv.org/pdf/1507.06739v3.pdf) under the -{\bf selected model.} - -Since our variance calculations only hold under the selected model, we might be losing some power using -polyhedral lemma. - -\subsection{Selected is the same as full?} - -\newcommand{\E}{E} - -An asymptotic variance calculation under pairs model $(y_i,X_i) \overset{IID}{\sim} F$: -$$ -\text{Cov}_F \left(X_{-M}^T(y-\pi) - \E_F((X_{-M}^TWX_M))\E((X_M^TWX_M))^{-1}X_M^T(y-\pi)), -\E_F((X_M^TWX_M))^{-1}X_M^T(y-\pi)\right) = 0 -$$ -yields that the -randomness in the inactive block is (asymptotically) independent -of $\bar{\beta}$. This assumes -that the selected model is correct, or, more precisely that $\hat{\pi}$ is a -good estimate of $P_F(y=1|X)$ so that -$$ -\frac{1}{n} X^TWX \approx \text{Cov}_F((y-P_F(y=1|X)) \cdot X) -$$ -($X$ on the RHS should be thought of as a random vector). -This might not be true if link is misspecified or selected model is poor... - -I think then the inactive blocks are not needed. - -\section{Current favorite version} - -$$ -\hat{\beta} = \hat{\beta}_{\lambda} = \text{argmin}_{\beta} \ell(\beta) + \lambda \|\beta\|_1 -$$ - -$$ -M = \{j: \hat{\beta} \neq 0\}, s_M = \text{sign}(\hat{\beta}[M])$$ - -$$ -\begin{aligned} -\bar{\beta}_M &= \hat{\beta}[M] - \left(\nabla^2 \ell(\hat{\beta})[M,M]\right)^{-1} \nabla \ell(\hat{\beta})_M \\ -&= \hat{\beta}_M + \lambda \left(\nabla^2 \ell(\hat{\beta})[M,M]\right)^{-1} s_M \\ -&= \hat{\beta}_M + \lambda \ell_M(\hat{\beta}_M)^{-1} s_M -\end{aligned} -$$ -where $\ell_M: \mathbb{R}^M \rightarrow \mathbb{R}$ is the objective funtions -of the selected model and -$$ -\nabla \ell^2(\hat{\beta})[M,M] = \frac{\partial^2}{\partial \beta_i \partial \beta_j} \ell(\beta) \biggl|_{\hat{\beta}}, \qquad i,j \in M -$$ -is an $|M| \times |M|$ matrix. - -If $\ell$ is a negative log-likelihood, then under the selected model, -$$ -\bar{\beta}_M \approx N\left(\beta_M^*, \nabla^2 \ell_M(\hat{\beta}_M)^{-1}\right). -$$ -subject to affine constraints -$$ -\left\{\text{diag}(s_M)\left[\bar{\beta}_M - \nabla^2 \ell_M(\hat{\beta}_M)^{-1} s_M \right] \geq 0 \right\}. -$$ - -We apply polyhedral lemma to $\bar{\beta}_M$, with $M, s_M$ and $\nabla^2 \ell_M (\hat{\beta}_M)$ fixed. - -For logistic regression, these should match your active block KKT conditions exactly where -$$ -\bar{\beta}_M = (X_M^TWX_M)^{-1}X_M^TWz -$$ -with -$$ -z = X_M\hat{\beta}_M + \frac{y - \hat{\pi}}{\hat{\pi}(1-\hat{\pi})} -= X_M\hat{\beta}_M + W^{-1}(y - \hat{\pi}). -$$ - - - -\end{document} - diff --git a/selectiveInference/DESCRIPTION b/selectiveInference/DESCRIPTION index 4fc8274..6bac8a0 100644 --- a/selectiveInference/DESCRIPTION +++ b/selectiveInference/DESCRIPTION @@ -1,8 +1,8 @@ Package: selectiveInference Type: Package Title: Tools for Post-Selection Inference -Version: 1.1.2 -Date: 2015-12-17 +Version: 1.1.3 +Date: 2016-02-8 Author: Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid Maintainer: Rob Tibshirani diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index ac00545..ada155b 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -122,9 +122,11 @@ fixedLassoInf <- function(x, y, beta, lambda, intercept=TRUE, sigma=NULL, alpha= return(out) } -############################## +############################# + -fixedLasso.poly <- function(x, y, beta, lambda, a) { +fixedLasso.poly= +function(x, y, beta, lambda, a) { xa = x[,a,drop=F] xac = x[,!a,drop=F] xai = pinv(crossprod(xa)) @@ -134,16 +136,22 @@ fixedLasso.poly <- function(x, y, beta, lambda, a) { if (length(za)==1) dz = matrix(za,1,1) P = diag(1,nrow(xa)) - xa %*% xap - G = -rbind(1/lambda * t(xac) %*% P, - -1/lambda * t(xac) %*% P, - -dz %*% xap) - u = -c(1 - t(xac) %*% t(xap) %*% za, - 1 + t(xac) %*% t(xap) %*% za, - -lambda * dz %*% xai %*% za) + #NOTE: inactive constraints not needed below! + + G = -rbind( + # 1/lambda * t(xac) %*% P, + # -1/lambda * t(xac) %*% P, + -dz %*% xap + ) + lambda2=lambda + if(length(lambda)>1) lambda2=lambda[a] + u = -c( + # 1 - t(xac) %*% t(xap) %*% za, + # 1 + t(xac) %*% t(xap) %*% za, + -lambda2 * dz %*% xai %*% za) return(list(G=G,u=u)) } - # Moore-Penrose pseudo inverse for symmetric matrices pinv <- function(A, tol=.Machine$double.eps) { diff --git a/selectiveInference/man/fixedLassoInf.Rd b/selectiveInference/man/fixedLassoInf.Rd index 8c7afce..ac1b9a0 100644 --- a/selectiveInference/man/fixedLassoInf.Rd +++ b/selectiveInference/man/fixedLassoInf.Rd @@ -15,7 +15,7 @@ fixedLassoInf(x, y, beta, lambda, intercept=TRUE, sigma=NULL, alpha=0.1, } \arguments{ \item{x}{ -Matrix of predictors (n by p) +Matrix of predictors (n by p); } \item{y}{ Vector of outcomes (length n) @@ -89,6 +89,14 @@ if the observed statistic is too close to either end of the truncation interval desired coverage cannot be computed, and default to +/- Inf. The output \code{tailarea} gives the achieved Gaussian tail areas for the reported intervals---these should be close to alpha/2, and can be used for error-checking purposes. + +Important!: Before running glmnet (or some other lasso-solver) x should be centered, that is x <- scale(X,TRUE,FALSE). +In addition, if standardization of the predictors is desired, x should be scaled as well: x <- scale(x,TRUE,TRUE). +Then when running glmnet, set standardize=F. See example below. + +The penalty.factor facility in glmmet-- allowing different penalties lambda for each predictor, +is not yet implemented in fixedLassoInf. However you can finesse this--- see the example below. One caveat- using this approach, a penalty factor of zero (forcing a predictor in) +is not allowed. } \value{ \item{type}{Type of coefficients tested (partial or full)} @@ -118,27 +126,59 @@ set.seed(43) n = 50 p = 10 sigma = 1 + x = matrix(rnorm(n*p),n,p) +x=scale(x,TRUE,TRUE) + beta = c(3,2,rep(0,p-2)) y = x\%*\%beta + sigma*rnorm(n) # first run glmnet -gfit = glmnet(x,y) +gfit = glmnet(x,y,standardize=FALSE) # extract coef for a given lambda; note the 1/n factor! # (and we don't save the intercept term) -lambda = .1 +lambda = .8 beta = coef(gfit, s=lambda/n, exact=TRUE)[-1] # compute fixed lambda p-values and selection intervals out = fixedLassoInf(x,y,beta,lambda,sigma=sigma) out -## NOT RUN + ## as above, but use lar function instead to get initial ## lasso fit (should get same results) -# lfit = lar(x,y) -# beta = coef(lfit,s=lambda,mode="lambda") -# out2 = fixedLassoInf(x,y,beta,lambda,sigma=sigma) -# out2 + lfit = lar(x,y,normalize=FALSE) + beta = coef(lfit,s=lambda,mode="lambda") + out2 = fixedLassoInf(x,y,beta,lambda,sigma=sigma) + out2 + +## mimic different penalty factors by first scaling x + set.seed(43) +n = 50 +p = 10 +sigma = 1 + +x = matrix(rnorm(n*p),n,p) +x=scale(x,TRUE,TRUE) + +beta = c(3,2,rep(0,p-2)) +y = x\%*\%beta + sigma*rnorm(n) +pf=c(rep(1,7),rep(.1,3)) #define penalty factors +pf=p*pf/sum(pf) # penalty factors should be rescaled so they sum to p +xs=scale(x,FALSE,pf) #scale cols of x by penalty factors +# first run glmnet +gfit = glmnet(xs,y,standardize=FALSE) + +# extract coef for a given lambda; note the 1/n factor! +# (and we don't save the intercept term) +lambda = .8 +beta = coef(gfit, s=lambda/n, exact=TRUE)[-1] + +# compute fixed lambda p-values and selection intervals +out = fixedLassoInf(xs,y,beta,lambda,sigma=sigma) + +#rescale conf points to undo the penalty factor +out$ci=t(scale(t(out$ci),FALSE,pf[out$vars])) +out } diff --git a/tests/test.fixed.R b/tests/test.fixed.R index 5c55887..e2c5931 100644 --- a/tests/test.fixed.R +++ b/tests/test.fixed.R @@ -208,6 +208,35 @@ fixedLassoInf(x,y,beta,lambda,sigma=sigma) beta=coef(fit,s=lambda,mode="lambda") fixedLassoInf(x,y,beta,lambda,sigma=sigma) +# now try penalty factors + set.seed(43) + n = 50 + p = 10 + sigma = 1 + + x = matrix(rnorm(n*p),n,p) + x=scale(x,T,T) + + beta = c(3,2,rep(0,p-2)) + y = x%*%beta + sigma*rnorm(n) + + pf=c(rep(1,7),rep(.1,p-7)) + pf=p*pf/sum(pf) # penalty factors should be rescaled so they sum to p + xs=scale(x,F,pf) #scale cols of x + # first run glmnet + gfit = glmnet(xs,y,standardize=F) + + # extract coef for a given lambda; note the 1/n factor! + # (and we don't save the intercept term) + lambda = .8 + beta = coef(gfit, s=lambda/n, exact=TRUE)[-1] + + # compute fixed lambda p-values and selection intervals + out = fixedLassoInf(xs,y,beta,lambda,sigma=sigma) + #rescale conf points to undo the penalty factor + out$ci=t(scale(t(out$ci),F,pf[out$vars])) + + ### x=state.x77[,-4] y=state.x77[,4] @@ -364,3 +393,46 @@ for(i in 1:100){ p <- pval[, -(1:2)] mean(p[p < 1] < 0.05) + + +#test from Chong + + +library(selectiveInference) + +library(glmnet);library(MASS);#library(grplasso);library(gvlma);library(grpreg) +library(penalized) +load("fooXY.RData") + +#d=read.csv("DesignMatrixX_and_y.csv");dim(d); head(d) + +#source("temp.R") +n=length(Y) +p=ncol(X) +#X=scale(X,T,F) +X=X+.01*matrix(rnorm(n*p),n,p) # I added noise to avoid collinearity +#X=scale(X,T,T)/sqrt(n-1) + +Y=Y-mean(Y) + +#X=as.matrix(d[,1:192]); ### design matrix, no intercept +#Y=d$y; ### Response variable Y. +fit = glmnet(x=X, y=Y, family="gaussian",alpha = 1, thresh = 1e-9, standardize=F) +set.seed(39) +lam= fit$lambda[30]; +#lam= fit$lambda[15]## Try getting coefficient at this lambda +beta = coef(fit, s=lam, exact=TRUE)[-1];length(beta);table(beta!=0) + + aa=penalized(Y~X,lambda1=lam*n,model="linear",standardize=F) + b=coef(aa,which="all")[-1] + +lam2=n*lam + +g=t(X)%*%(Y-X%*%beta)/lam2 + +g[beta!=0] + +g=t(X)%*%(Y-X%*%b)/lam2 +out = fixedLassoInf(X,Y,beta,lam*n) + + From f6dab3ef78586db01096900659a7768852a881ce Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Tue, 15 Mar 2016 13:34:41 -0700 Subject: [PATCH 108/493] C code for sampling truncated whitened Gaussian --- selectiveInference/src/truncnorm.c | 175 +++++++++++++++++++++++++++++ 1 file changed, 175 insertions(+) create mode 100644 selectiveInference/src/truncnorm.c diff --git a/selectiveInference/src/truncnorm.c b/selectiveInference/src/truncnorm.c new file mode 100644 index 0000000..b436b1f --- /dev/null +++ b/selectiveInference/src/truncnorm.c @@ -0,0 +1,175 @@ +#include +#include + +// Take a Gibbs hit and run step along a given direction + +// Assumes the covariance is identity + +void gibbs_step(double *state, /* state has law N(0,I) constrained to polyhedral set \{y:Ay \leq b\}*/ + double *direction, /* direction we will take Gibbs step */ + double *U, /* A %*% state - b */ + double *alpha, /* A %*% direction */ + int nconstraint, /* number of rows of A */ + int nstate) /* dimension of state */ +{ + + int istate; + double value = 0; + + /* Compute V=\eta^Ty */ + + for (istate = 0; istate < nstate; istate++) { + value += direction[istate] * state[istate]; + } + + /* Compute upper and lower bounds */ + + double lower_bound = -1e12; + double upper_bound = 1e12; + double bound_val = 0; + double tol=1.e-7; + int iconstraint; + + for (iconstraint = 0; iconstraint < nconstraint; iconstraint++) { + bound_val = -U[iconstraint] / alpha[iconstraint] + value; + + if ((alpha[iconstraint] > tol) && + (bound_val < upper_bound)) { + upper_bound = bound_val; + } + else if ((alpha[iconstraint] < -tol) && + (bound_val > lower_bound)) { + lower_bound = bound_val; + } + + } + + /* Ensure constraints are satisfied */ + if (lower_bound > value) { + lower_bound = value - tol; + } + else if (upper_bound < value) { + upper_bound = value + tol; + } + + /* Check to see if constraints are satisfied */ + + /* if (lower_bound > upper_bound) { + + }*/ + + /* Now, take a step */ + + double tnorm; /* the 1D gaussian variable */ + double cdfU, cdfL, unif; /* temp variables */ + + if (upper_bound < -10) { + + /* use Exp approximation */ + /* the approximation is that */ + /* Z | lower_bound < Z < upper_bound */ + /* is fabs(upper_bound) * (upper_bound - Z) = E approx Exp(1) */ + /* so Z = upper_bound - E / fabs(upper_bound) */ + /* and the truncation of the exponential is */ + /* E < fabs(upper_bound - lower_bound) * fabs(upper_bound) = D */ + + /* this has distribution function (1 - exp(-x)) / (1 - exp(-D)) */ + /* so to draw from this distribution */ + /* we set E = - log(1 - U * (1 - exp(-D))) where U is Unif(0,1) */ + /* and Z (= tnorm below) is as stated */ + + unif = runif(0., 1.) * (1 - exp(-fabs((lower_bound - upper_bound) * upper_bound))); + tnorm = (upper_bound + log(1 - unif) / fabs(upper_bound)); + } + else if (lower_bound > 10) { + + /* here Z = lower_bound + E / fabs(lower_bound) (though lower_bound is positive) */ + /* and D = fabs((upper_bound - lower_bound) * lower_bound) */ + + unif = runif(0., 1.) * (1 - exp(-fabs((upper_bound - lower_bound) * lower_bound))); + tnorm = (lower_bound - log(1 - unif) / lower_bound); + } + else if (lower_bound < 0) { + cdfL = pnorm(lower_bound, 0., 1., 1, 0); /* Ryan */ + cdfU = pnorm(upper_bound, 0., 1., 1, 0); /* Ryan */ + unif = runif(0., 1.) * (cdfU - cdfL) + cdfL; /* Ryan */ + if (unif < 0.5) { + tnorm = qnorm(unif, 0., 1., 1, 0); /* Ryan */ + } + else { + tnorm = -qnorm(1-unif, 0., 1., 1, 0); /* Ryan */ + } + } + else { + cdfL = pnorm(-lower_bound, 0., 1., 1, 0); /* Ryan */ + cdfU = pnorm(-upper_bound, 0., 1., 1, 0); /* Ryan */ + unif = runif(0., 1.) * (cdfL - cdfU) + cdfU; + if (unif < 0.5) { + tnorm = -qnorm(unif, 0., 1., 1, 0); /* Ryan */ + } + else { + tnorm = qnorm(1-unif, 0., 1., 1, 0); /* Ryan */ + } + } + + /* Now update the state and U */ + + double delta = tnorm - value; + + for (istate = 0; istate < nstate; istate++) { + state[istate] += delta * direction[istate]; + } + for (iconstraint = 0; iconstraint < nconstraint; iconstraint++) { + U[iconstraint] += U[iconstraint] + delta * alpha[iconstraint] ; + } + + /* End of gibbs_step */ + +} + +void sample_truncnorm_white(double *state, /* state has law N(0,I) constrained to polyhedral set \{y:Ay \leq b\}*/ + double *U, /* A %*% state - b */ + double *directions, /* possible steps for sampler to take */ + /* assumed to be stored as list of vectors of dimension nstate */ + double *alphas, /* The matrix A %*% directions */ + double *output, /* array in which to store samples */ + /* assumed will stored as list of vectors of dimension nstate */ + int nconstraint, /* number of rows of A */ + int ndirection, /* the possible number of directions to choose from */ + /* `directions` should have size nstate*ndirection */ + int nstate, /* dimension of state */ + int burnin, /* number of burnin steps */ + int ndraw) /* total number of samples to return */ +{ + + int iter_count; + int which_direction; + + double *direction, *alpha; + + for (iter_count = 0; iter_count < burnin + ndraw; iter_count++) { + + which_direction = (int) floor(runif(0., 1.) * ndirection); /* Ryan */ + direction = directions + nstate * which_direction; /* Ryan */ + alpha = alpha + nconstraint * which_direction; /* Ryan */ + + /* take a step, which implicitly updates `state` and `U` */ + + gibbs_step(state, + direction, + U, + alpha, + nconstraint, + nstate); + + /* Store result if after burnin */ + + int istate; + if (iter_count >= burnin) { + for (istate = 0; istate < nstate; istate++) { + *output = state[istate]; + output++; + } + } + } +} From 477750c259d5205b59bd249587f4c6557ba9cf04 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Wed, 16 Mar 2016 13:12:45 -0700 Subject: [PATCH 109/493] utility file for sampling from affine constraints --- selectiveInference/R/funs.constraints.R | 142 ++++++++++++++++++++++++ selectiveInference/R/funs.fs.R | 3 +- 2 files changed, 143 insertions(+), 2 deletions(-) create mode 100644 selectiveInference/R/funs.constraints.R diff --git a/selectiveInference/R/funs.constraints.R b/selectiveInference/R/funs.constraints.R new file mode 100644 index 0000000..6c16b50 --- /dev/null +++ b/selectiveInference/R/funs.constraints.R @@ -0,0 +1,142 @@ +# +# Some utilities for affine constraints +# + +# +# compute the square-root and inverse square-root of a non-negative +# definite matrix +# + +factor_covariance = function(S, rank=NA) { + if (!is.na(rank)) { + rank = nrow(S) + } + svd_X = svd(S, nu = rank, nv=rank) + sqrt_cov = t(sqrt(svd_X$d[1:rank]) * t(svd_X$u[,1:rank])) + sqrt_inv = t((1. / sqrt(svd_X$d[1:rank])) * t(svd_X$u[,1:rank])) + + return(list(sqrt_cov=sqrt_cov, sqrt_inv=sqrt_inv)) +} + +# +# from a constraint, return an equivalent +# constraint and a whitening and inverse +# whitening map +# + +# law is Z \sim N(mean, covariance) subject to constraints linear_part %*% Z \leq offset + +whiten_constraint = function(linear_part, offset, mean, covariance) { + + factor_cov = factor_covariance(covariance) + sqrt_cov = factor_cov$sqrt_cov + sqrt_inv = factor_cov$sqrt_inv + + new_A = A %*% sqrt_cov + new_b = offset - linear_part %*% mean + + # rescale rows to have length 1 + + scaling = sqrt(apply(new_A^2, sum, 1)) + new_A = new_A / scaling + new_b = new_b / scaling + + # TODO: check these functions will behave when Z is a matrix. + + inverse_map = function(Z) { + return(sqrt_cov %*% Z + mu) + } + + forward_map = function(W) { + return(sqrt_inv %*% (W - mu)) + } + + return(list(linear_part=new_A, + offset=new_b, + inverse_map=inverse_map, + forward_map=forward_map)) +} + +# +# sample from the law +# +# Z \sim N(mean, covariance) subject to constraints linear_part %*% Z \leq offset + +sample_from_constraints = function(linear_part, + offset, + covariance, + mean, + initial_point, # point must be feasible for constraints + ndraw=8000, + burnin=2000, + accept_reject_params=NA) #TODO: implement accept reject check +{ + + whitened_con = whiten_constraint(linear_part, + offset, + covariance, + mean) + white_initial = whitened_con$forward_map(initial_point) + +# # try 100 draws of accept reject +# # if we get more than 50 good draws, then just return a smaller sample +# # of size (burnin+ndraw)/5 + +# if accept_reject_params: +# use_hit_and_run = False +# num_trial, min_accept, num_draw = accept_reject_params + +# def _accept_reject(sample_size, linear_part, offset): +# Z_sample = np.random.standard_normal((100, linear_part.shape[1])) +# constraint_satisfied = (np.dot(Z_sample, linear_part.T) - +# offset[None,:]).max(1) < 0 +# return Z_sample[constraint_satisfied] + +# Z_sample = _accept_reject(100, +# white_con.linear_part, +# white_con.offset) + +# if Z_sample.shape[0] >= min_accept: +# while True: +# Z_sample = np.vstack([Z_sample, +# _accept_reject(num_draw / 5, +# white_con.linear_part, +# white_con.offset)]) +# if Z_sample.shape[0] > num_draw: +# break +# white_samples = Z_sample +# else: +# use_hit_and_run = True +# else: +# use_hit_and_run = True + + use_hit_and_run = TRUE + + if (use_hit_and_run) { + + white_linear = whitened_con$linear_part + white_offset = whitened_con$offset + + nstate = length(white_initial) + directions = rbind(diag(rep(1, ndim)), + matrix(rnorm(ndim^2), nstate, nstate)) + directions = apply(directions, function(x) { x/sqrt(sum(x^2)) }, 1) # normalize rows to have length 1 + alphas = white_linear %*% directions + U = white_linear %*% white_initial - white_offset + Z_sample = matrix(rep(NA, ndraw*ndim), ndraw, nstate) + + .C("sample_truncnorm_white", + white_initial, + U, + directions, + alphas, + output, + nrow(white_linear), + nstate, + burnin, + ndraw) + + Z = t(whitened_con$inverse_map(t(output))) + return(Z) +} + diff --git a/selectiveInference/R/funs.fs.R b/selectiveInference/R/funs.fs.R index 1dd0a7a..8c4fb54 100644 --- a/selectiveInference/R/funs.fs.R +++ b/selectiveInference/R/funs.fs.R @@ -533,7 +533,6 @@ fsInf_maxZ <- function(obj, sigma=NULL, alpha=0.1, verbose=FALSE, k=NULL, # because this has a simple box constraint # with a generically non-degenerate covariance - if (n > p) { library(tmvtnorm) @@ -550,7 +549,7 @@ fsInf_maxZ <- function(obj, sigma=NULL, alpha=0.1, verbose=FALSE, k=NULL, lower=-collapsed_neg, upper=collapsed_pos, algorithm="gibbs", - burn.in.samples=burnin) + burn.in.samples=burnin) if (length(inactive) > 1) { sample_maxZ = apply(abs(1. / cur_scale * truncated_noise), 1, max) From c53ff76de582fe05581ab6645aff6495585be3cc Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Wed, 16 Mar 2016 18:25:07 -0700 Subject: [PATCH 110/493] syntax error in constraints --- selectiveInference/R/funs.constraints.R | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/selectiveInference/R/funs.constraints.R b/selectiveInference/R/funs.constraints.R index 6c16b50..5f6e554 100644 --- a/selectiveInference/R/funs.constraints.R +++ b/selectiveInference/R/funs.constraints.R @@ -135,7 +135,8 @@ sample_from_constraints = function(linear_part, nstate, burnin, ndraw) - + + } Z = t(whitened_con$inverse_map(t(output))) return(Z) } From 607bccdeb4cb7e509a4d627c8efb6d6439e28037 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Wed, 16 Mar 2016 19:32:55 -0700 Subject: [PATCH 111/493] transposed matrices so pointer arithmetic correct in C code --- selectiveInference/R/funs.constraints.R | 10 +++++----- selectiveInference/src/truncnorm.c | 25 +++++++++++++------------ 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/selectiveInference/R/funs.constraints.R b/selectiveInference/R/funs.constraints.R index 5f6e554..52e4fa5 100644 --- a/selectiveInference/R/funs.constraints.R +++ b/selectiveInference/R/funs.constraints.R @@ -123,21 +123,21 @@ sample_from_constraints = function(linear_part, directions = apply(directions, function(x) { x/sqrt(sum(x^2)) }, 1) # normalize rows to have length 1 alphas = white_linear %*% directions U = white_linear %*% white_initial - white_offset - Z_sample = matrix(rep(NA, ndraw*ndim), ndraw, nstate) + Z_sample = matrix(rep(NA, ndraw*ndim), nstate, ndraw) .C("sample_truncnorm_white", white_initial, U, - directions, - alphas, - output, + t(directions), + t(alphas), + Z_sample, nrow(white_linear), nstate, burnin, ndraw) } - Z = t(whitened_con$inverse_map(t(output))) + Z = t(whitened_con$inverse_map(Z_sample)) return(Z) } diff --git a/selectiveInference/src/truncnorm.c b/selectiveInference/src/truncnorm.c index b436b1f..b7584c4 100644 --- a/selectiveInference/src/truncnorm.c +++ b/selectiveInference/src/truncnorm.c @@ -45,6 +45,7 @@ void gibbs_step(double *state, /* state has law N(0,I) constrained to polyhe } /* Ensure constraints are satisfied */ + if (lower_bound > value) { lower_bound = value - tol; } @@ -90,25 +91,25 @@ void gibbs_step(double *state, /* state has law N(0,I) constrained to polyhe tnorm = (lower_bound - log(1 - unif) / lower_bound); } else if (lower_bound < 0) { - cdfL = pnorm(lower_bound, 0., 1., 1, 0); /* Ryan */ - cdfU = pnorm(upper_bound, 0., 1., 1, 0); /* Ryan */ - unif = runif(0., 1.) * (cdfU - cdfL) + cdfL; /* Ryan */ + cdfL = pnorm(lower_bound, 0., 1., 1, 0); + cdfU = pnorm(upper_bound, 0., 1., 1, 0); + unif = runif(0., 1.) * (cdfU - cdfL) + cdfL; if (unif < 0.5) { - tnorm = qnorm(unif, 0., 1., 1, 0); /* Ryan */ + tnorm = qnorm(unif, 0., 1., 1, 0); } else { - tnorm = -qnorm(1-unif, 0., 1., 1, 0); /* Ryan */ + tnorm = -qnorm(1-unif, 0., 1., 1, 0); } } else { - cdfL = pnorm(-lower_bound, 0., 1., 1, 0); /* Ryan */ - cdfU = pnorm(-upper_bound, 0., 1., 1, 0); /* Ryan */ + cdfL = pnorm(-lower_bound, 0., 1., 1, 0); + cdfU = pnorm(-upper_bound, 0., 1., 1, 0); unif = runif(0., 1.) * (cdfL - cdfU) + cdfU; if (unif < 0.5) { - tnorm = -qnorm(unif, 0., 1., 1, 0); /* Ryan */ + tnorm = -qnorm(unif, 0., 1., 1, 0); } else { - tnorm = qnorm(1-unif, 0., 1., 1, 0); /* Ryan */ + tnorm = qnorm(1-unif, 0., 1., 1, 0); } } @@ -149,9 +150,9 @@ void sample_truncnorm_white(double *state, /* state has law N(0,I) constrai for (iter_count = 0; iter_count < burnin + ndraw; iter_count++) { - which_direction = (int) floor(runif(0., 1.) * ndirection); /* Ryan */ - direction = directions + nstate * which_direction; /* Ryan */ - alpha = alpha + nconstraint * which_direction; /* Ryan */ + which_direction = (int) floor(runif(0., 1.) * ndirection); + direction = ((double *) directions) + nstate * which_direction; + alpha = ((double *) alphas) + nconstraint * which_direction; /* take a step, which implicitly updates `state` and `U` */ From bacacb0ea783a899e96ed7f602a34d0effec3495 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Wed, 16 Mar 2016 21:34:37 -0700 Subject: [PATCH 112/493] sampler runs now -- needs a test to confirm results are OK --- selectiveInference/R/funs.constraints.R | 63 +++++++++++++++---------- selectiveInference/src/truncnorm.c | 36 +++++++++----- 2 files changed, 61 insertions(+), 38 deletions(-) diff --git a/selectiveInference/R/funs.constraints.R b/selectiveInference/R/funs.constraints.R index 52e4fa5..b65cdcc 100644 --- a/selectiveInference/R/funs.constraints.R +++ b/selectiveInference/R/funs.constraints.R @@ -8,10 +8,10 @@ # factor_covariance = function(S, rank=NA) { - if (!is.na(rank)) { + if (is.na(rank)) { rank = nrow(S) } - svd_X = svd(S, nu = rank, nv=rank) + svd_X = svd(S, nu=rank, nv=rank) sqrt_cov = t(sqrt(svd_X$d[1:rank]) * t(svd_X$u[,1:rank])) sqrt_inv = t((1. / sqrt(svd_X$d[1:rank])) * t(svd_X$u[,1:rank])) @@ -32,23 +32,23 @@ whiten_constraint = function(linear_part, offset, mean, covariance) { sqrt_cov = factor_cov$sqrt_cov sqrt_inv = factor_cov$sqrt_inv - new_A = A %*% sqrt_cov + new_A = linear_part %*% sqrt_cov new_b = offset - linear_part %*% mean # rescale rows to have length 1 - scaling = sqrt(apply(new_A^2, sum, 1)) + scaling = sqrt(apply(new_A^2, 1, sum)) new_A = new_A / scaling new_b = new_b / scaling # TODO: check these functions will behave when Z is a matrix. inverse_map = function(Z) { - return(sqrt_cov %*% Z + mu) + return(sqrt_cov %*% Z + mean) } forward_map = function(W) { - return(sqrt_inv %*% (W - mu)) + return(sqrt_inv %*% (W - mean)) } return(list(linear_part=new_A, @@ -64,8 +64,8 @@ whiten_constraint = function(linear_part, offset, mean, covariance) { sample_from_constraints = function(linear_part, offset, - covariance, mean, + covariance, initial_point, # point must be feasible for constraints ndraw=8000, burnin=2000, @@ -74,8 +74,8 @@ sample_from_constraints = function(linear_part, whitened_con = whiten_constraint(linear_part, offset, - covariance, - mean) + mean, + covariance) white_initial = whitened_con$forward_map(initial_point) # # try 100 draws of accept reject @@ -118,25 +118,36 @@ sample_from_constraints = function(linear_part, white_offset = whitened_con$offset nstate = length(white_initial) - directions = rbind(diag(rep(1, ndim)), - matrix(rnorm(ndim^2), nstate, nstate)) - directions = apply(directions, function(x) { x/sqrt(sum(x^2)) }, 1) # normalize rows to have length 1 - alphas = white_linear %*% directions + nconstraint = nrow(white_linear) + + directions = rbind(diag(rep(1, nstate)), + matrix(rnorm(nstate^2), nstate, nstate)) + + # normalize rows to have length 1 + + scaling = apply(directions, 1, function(x) { return(sqrt(sum(x^2))) }) + directions = directions / scaling + ndirection = nrow(directions) + + alphas = directions %*% t(white_linear) U = white_linear %*% white_initial - white_offset - Z_sample = matrix(rep(NA, ndraw*ndim), nstate, ndraw) - - .C("sample_truncnorm_white", - white_initial, - U, - t(directions), - t(alphas), - Z_sample, - nrow(white_linear), - nstate, - burnin, - ndraw) - + Z_sample = matrix(rep(0, nstate * ndraw), nstate, ndraw) + + result = .C("sample_truncnorm_white", + as.numeric(white_initial), + as.numeric(U), + as.numeric(t(directions)), + as.numeric(t(alphas)), + output=Z_sample, + as.integer(nconstraint), + as.integer(ndirection), + as.integer(nstate), + as.integer(burnin), + as.integer(ndraw), + package="selectiveInference") + Z_sample = result$output } + Z = t(whitened_con$inverse_map(Z_sample)) return(Z) } diff --git a/selectiveInference/src/truncnorm.c b/selectiveInference/src/truncnorm.c index b7584c4..cca61d9 100644 --- a/selectiveInference/src/truncnorm.c +++ b/selectiveInference/src/truncnorm.c @@ -31,6 +31,7 @@ void gibbs_step(double *state, /* state has law N(0,I) constrained to polyhe int iconstraint; for (iconstraint = 0; iconstraint < nconstraint; iconstraint++) { + bound_val = -U[iconstraint] / alpha[iconstraint] + value; if ((alpha[iconstraint] > tol) && @@ -121,7 +122,7 @@ void gibbs_step(double *state, /* state has law N(0,I) constrained to polyhe state[istate] += delta * direction[istate]; } for (iconstraint = 0; iconstraint < nconstraint; iconstraint++) { - U[iconstraint] += U[iconstraint] + delta * alpha[iconstraint] ; + U[iconstraint] += delta * alpha[iconstraint] ; } /* End of gibbs_step */ @@ -131,21 +132,30 @@ void gibbs_step(double *state, /* state has law N(0,I) constrained to polyhe void sample_truncnorm_white(double *state, /* state has law N(0,I) constrained to polyhedral set \{y:Ay \leq b\}*/ double *U, /* A %*% state - b */ double *directions, /* possible steps for sampler to take */ - /* assumed to be stored as list of vectors of dimension nstate */ + /* assumed to be stored as list of columns of dimension nstate */ + /* has shape (nstate, ndirection) */ double *alphas, /* The matrix A %*% directions */ + /* has shape (nconstraint, ndirection) */ double *output, /* array in which to store samples */ /* assumed will stored as list of vectors of dimension nstate */ - int nconstraint, /* number of rows of A */ - int ndirection, /* the possible number of directions to choose from */ + /* has shape (nstate, ndraw) */ + int *pnconstraint, /* number of rows of A */ + int *pndirection, /* the possible number of directions to choose from */ /* `directions` should have size nstate*ndirection */ - int nstate, /* dimension of state */ - int burnin, /* number of burnin steps */ - int ndraw) /* total number of samples to return */ + int *pnstate, /* dimension of state */ + int *pburnin, /* number of burnin steps */ + int *pndraw) /* total number of samples to return */ { int iter_count; int which_direction; + int nconstraint = *pnconstraint; + int ndirection = *pndirection; + int nstate = *pnstate; + int burnin = *pburnin; + int ndraw = *pndraw; + double *direction, *alpha; for (iter_count = 0; iter_count < burnin + ndraw; iter_count++) { @@ -156,10 +166,10 @@ void sample_truncnorm_white(double *state, /* state has law N(0,I) constrai /* take a step, which implicitly updates `state` and `U` */ - gibbs_step(state, - direction, - U, - alpha, + gibbs_step(state, + direction, + U, + alpha, nconstraint, nstate); @@ -169,8 +179,10 @@ void sample_truncnorm_white(double *state, /* state has law N(0,I) constrai if (iter_count >= burnin) { for (istate = 0; istate < nstate; istate++) { *output = state[istate]; - output++; + output++; } } } + } + From 0e45d9f4eb0faf56150b36e1d0eb65317b33a461 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Wed, 16 Mar 2016 21:43:52 -0700 Subject: [PATCH 113/493] fixed code so it calls new sampler -- should be ready to test... --- selectiveInference/R/funs.fs.R | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/selectiveInference/R/funs.fs.R b/selectiveInference/R/funs.fs.R index 8c4fb54..41d138c 100644 --- a/selectiveInference/R/funs.fs.R +++ b/selectiveInference/R/funs.fs.R @@ -558,8 +558,22 @@ fsInf_maxZ <- function(obj, sigma=NULL, alpha=0.1, verbose=FALSE, k=NULL, sample_maxZ = truncated_noise / cur_scale } } else { - # RUBBISH for now!!!! - sample_maxZ = abs(rnorm(ndraw)) + + linear_part = rbind(t(cur_adjusted_X), -t(cur_adjusted_X)) + offset = c(final_upper, -final_lower) + covariance = diag(rep(sigma^2, nrow(cor_adjusted_X))) + mean = rep(0, nrow(cur_adjusted_X)) + initial_point = y + truncated_y = sample_from_constraints(linear_part, + offset, + mean, + covariance, + initial_point, + burnin=burnin, + ndraw=ndraw) + + truncated_noise = truncated_y %*% cur_adjusted_X + sample_maxZ = apply(abs(1. / cur_scale * truncated_noise), 1, max) } observed_maxZ = obj$realized_maxZ[j] From 54e5bafb4ede56537bc98a8aeee282b4a9cb36b1 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Wed, 16 Mar 2016 22:02:04 -0700 Subject: [PATCH 114/493] print method for maxZ inference --- selectiveInference/R/funs.fs.R | 82 ++++++++++++---------------------- 1 file changed, 29 insertions(+), 53 deletions(-) diff --git a/selectiveInference/R/funs.fs.R b/selectiveInference/R/funs.fs.R index 41d138c..786bc45 100644 --- a/selectiveInference/R/funs.fs.R +++ b/selectiveInference/R/funs.fs.R @@ -437,8 +437,8 @@ fsInf <- function(obj, sigma=NULL, alpha=0.1, k=NULL, type=c("active","all","aic # selected maxZ tests -fsInf_maxZ <- function(obj, sigma=NULL, alpha=0.1, verbose=FALSE, k=NULL, - ndraw=8000, burnin=2000) { +fsInf_maxZ = function(obj, sigma=NULL, alpha=0.1, verbose=FALSE, k=NULL, + ndraw=8000, burnin=2000) { this.call = match.call() @@ -586,14 +586,22 @@ fsInf_maxZ <- function(obj, sigma=NULL, alpha=0.1, verbose=FALSE, k=NULL, khat = forwardStop(pv,alpha) - out = list(pv=pv,khat=khat, - call=this.call) + out = list(pv=pv, + k=k, + khat=khat, + sigma=sigma, + call=this.call, + vars=vars, + sign=sign, + alpha=alpha, + realized_maxZ=obj$realized_maxZ) class(out) = "fsInf_Zmax" return(out) } ############################## +Print methods ############################## @@ -610,66 +618,34 @@ print.fs <- function(x, ...) { invisible() } -print.fsInf <- function(x, tailarea=TRUE, ...) { +print.fsInf_Zmax <- function(obj) { + cat("\nCall:\n") - dput(x$call) + dput(obj$call) cat(sprintf("\nStandard deviation of noise (specified or estimated) sigma = %0.3f\n", - x$sigma)) - - if (x$type == "active") { - cat(sprintf("\nSequential testing results with alpha = %0.3f\n",x$alpha)) - tab = cbind(1:length(x$pv),x$vars, - round(x$sign*x$vmat%*%x$y,3), - round(x$sign*x$vmat%*%x$y/(x$sigma*sqrt(rowSums(x$vmat^2))),3), - round(x$pv,3),round(x$ci,3)) - colnames(tab) = c("Step", "Var", "Coef", "Z-score", "P-value", - "LowConfPt", "UpConfPt") - if (tailarea) { - tab = cbind(tab,round(x$tailarea,3)) - colnames(tab)[(ncol(tab)-1):ncol(tab)] = c("LowTailArea","UpTailArea") - } - rownames(tab) = rep("",nrow(tab)) - print(tab) + obj$sigma)) - cat(sprintf("\nEstimated stopping point from ForwardStop rule = %i\n",x$khat)) - } + cat(sprintf("\nSequential testing results with alpha = %0.3f\n",obj$alpha)) - else if (x$type == "all") { - cat(sprintf("\nTesting results at step = %i, with alpha = %0.3f\n",x$k,x$alpha)) - tab = cbind(x$vars, - round(x$sign*x$vmat%*%x$y,3), - round(x$sign*x$vmat%*%x$y/(x$sigma*sqrt(rowSums(x$vmat^2))),3), - round(x$pv,3),round(x$ci,3)) - colnames(tab) = c("Var", "Coef", "Z-score", "P-value", "LowConfPt", "UpConfPt") - if (tailarea) { - tab = cbind(tab,round(x$tailarea,3)) - colnames(tab)[(ncol(tab)-1):ncol(tab)] = c("LowTailArea","UpTailArea") - } - rownames(tab) = rep("",nrow(tab)) - print(tab) - } + tab = cbind(1:length(obj$pv),obj$vars, + round(obj$sign*obj$realized_maxZ, 3), + round(obj$pv,3)) + colnames(tab) = c("Step", "Var", "Coef", "Z-score", "P-value") + rownames(tab) = rep("",nrow(tab)) + print(tab) - else if (x$type == "aic") { - cat(sprintf("\nTesting results at step = %i, with alpha = %0.3f\n",x$khat,x$alpha)) - tab = cbind(x$vars, - round(x$sign*x$vmat%*%x$y,3), - round(x$sign*x$vmat%*%x$y/(x$sigma*sqrt(rowSums(x$vmat^2))),3), - round(x$pv,3),round(x$ci,3)) - colnames(tab) = c("Var", "Coef", "Z-score", "P-value", "LowConfPt", "UpConfPt") - if (tailarea) { - tab = cbind(tab,round(x$tailarea,3)) - colnames(tab)[(ncol(tab)-1):ncol(tab)] = c("LowTailArea","UpTailArea") - } - rownames(tab) = rep("",nrow(tab)) - print(tab) - - cat(sprintf("\nEstimated stopping point from AIC rule = %i\n",x$khat)) + cat(sprintf("\nEstimated stopping point from ForwardStop rule = %i\n",obj$khat)) } invisible() } +############################## + +Plot methods + +############################## plot.fs <- function(x, breaks=TRUE, omit.zeros=TRUE, var.labels=TRUE, ...) { if (x$completepath) { From 832b6c245075b71a7268d463c3af2a24b66e12ff Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Wed, 16 Mar 2016 23:13:59 -0700 Subject: [PATCH 115/493] maxZ now runs and prints output, see tests/test.fs_maxZ.R --- selectiveInference/NAMESPACE | 4 +- selectiveInference/R/funs.constraints.R | 68 +++++++----- selectiveInference/R/funs.fs.R | 132 ++++++++++++++++++------ tests/test.fs_maxZ.R | 23 +++++ 4 files changed, 165 insertions(+), 62 deletions(-) create mode 100644 tests/test.fs_maxZ.R diff --git a/selectiveInference/NAMESPACE b/selectiveInference/NAMESPACE index 64a0211..cc7e76f 100644 --- a/selectiveInference/NAMESPACE +++ b/selectiveInference/NAMESPACE @@ -10,7 +10,8 @@ export(lar,fs, estimateSigma, manyMeans,print.manyMeans, groupfs,groupfsInf, - scaleGroups,factorDesign + scaleGroups,factorDesign, + sample_from_constraints ) S3method("coef", "lar") @@ -23,6 +24,7 @@ S3method("predict", "fs") S3method("print", "fs") S3method("plot", "fs") S3method("print", "fsInf") +S3method("print", "fsInf_maxZ") S3method("print", "fixedLassoInf") S3method("print", "manyMeans") S3method("print", "groupfs") diff --git a/selectiveInference/R/funs.constraints.R b/selectiveInference/R/funs.constraints.R index b65cdcc..e2bc041 100644 --- a/selectiveInference/R/funs.constraints.R +++ b/selectiveInference/R/funs.constraints.R @@ -117,35 +117,47 @@ sample_from_constraints = function(linear_part, white_linear = whitened_con$linear_part white_offset = whitened_con$offset + # Inf cannot be used in C code + # In theory, these rows can be dropped + + rows_to_keep = white_offset < Inf + white_linear = white_linear[rows_to_keep,] + white_offset = white_offset[rows_to_keep,] + nstate = length(white_initial) - nconstraint = nrow(white_linear) - - directions = rbind(diag(rep(1, nstate)), - matrix(rnorm(nstate^2), nstate, nstate)) - - # normalize rows to have length 1 - - scaling = apply(directions, 1, function(x) { return(sqrt(sum(x^2))) }) - directions = directions / scaling - ndirection = nrow(directions) - - alphas = directions %*% t(white_linear) - U = white_linear %*% white_initial - white_offset - Z_sample = matrix(rep(0, nstate * ndraw), nstate, ndraw) - - result = .C("sample_truncnorm_white", - as.numeric(white_initial), - as.numeric(U), - as.numeric(t(directions)), - as.numeric(t(alphas)), - output=Z_sample, - as.integer(nconstraint), - as.integer(ndirection), - as.integer(nstate), - as.integer(burnin), - as.integer(ndraw), - package="selectiveInference") - Z_sample = result$output + if (sum(rows_to_keep) > 0) { + nconstraint = nrow(white_linear) + + directions = rbind(diag(rep(1, nstate)), + matrix(rnorm(nstate^2), nstate, nstate)) + + # normalize rows to have length 1 + + scaling = apply(directions, 1, function(x) { return(sqrt(sum(x^2))) }) + directions = directions / scaling + ndirection = nrow(directions) + + alphas = directions %*% t(white_linear) + U = white_linear %*% white_initial - white_offset + Z_sample = matrix(rep(0, nstate * ndraw), nstate, ndraw) + + result = .C("sample_truncnorm_white", + as.numeric(white_initial), + as.numeric(U), + as.numeric(t(directions)), + as.numeric(t(alphas)), + output=Z_sample, + as.integer(nconstraint), + as.integer(ndirection), + as.integer(nstate), + as.integer(burnin), + as.integer(ndraw), + package="selectiveInference") + Z_sample = result$output + } + else { + Z_sample = matrix(rnorm(nstate * ndraw), nstate, ndraw) + } } Z = t(whitened_con$inverse_map(Z_sample)) diff --git a/selectiveInference/R/funs.fs.R b/selectiveInference/R/funs.fs.R index 786bc45..dedc0d3 100644 --- a/selectiveInference/R/funs.fs.R +++ b/selectiveInference/R/funs.fs.R @@ -29,9 +29,9 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, # Find the first variable to enter and its sign working_scale = sqrt(colSums(x^2)) working_x = scale(x,center=F,scale=working_scale) - score = t(working_x)%*%y - i_hit = which.max(abs(score)) # Hitting coordinate - sign_hit = Sign(score[i_hit]) # Sign + working_score = t(working_x)%*%y + i_hit = which.max(abs(working_score)) # Hitting coordinate + sign_hit = Sign(working_score[i_hit]) # Sign signs = sign_hit # later signs will be appended to `signs` if (verbose) { @@ -54,7 +54,7 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, offset_pos_maxZ = matrix(Inf, p, buf) # upper bounds for selective maxZ offset_neg_maxZ = matrix(Inf, p, buf) # lower bounds for selective maxZ scale_maxZ = matrix(0, p, buf) # lower bounds for selective maxZ - realized_maxZ = matrix(0, p, buf) # lower bounds for selective maxZ + realized_maxZ = numeric(buf) # lower bounds for selective maxZ action[1] = i_hit df[1] = 0 @@ -64,7 +64,7 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, # Variables needed to compute truncation limits for # selective maxZ test - realized_maxZ[1] = c(sign_hit * score[i_hit]) + realized_maxZ[1] = c(sign_hit * working_score[i_hit]) offset_pos_maxZ[,1] = Inf offset_neg_maxZ[,1] = Inf scale_maxZ[,1] = working_scale @@ -132,15 +132,18 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, offset_pos_maxZ = cbind(offset_pos_maxZ, matrix(0, p, buf)) offset_neg_maxZ = cbind(offset_neg_maxZ, matrix(0, p, buf)) scale_maxZ = cbind(scale_maxZ, matrix(0, p, buf)) - realized_maxZ = cbind(realized_maxZ, matrix(0, p, buf)) + realized_maxZ = c(realized_maxZ, numeric(buf)) } # Key quantities for the next entry keepLs=backsolve(R,t(Q_active)%*%X_inactive) + + prev_scale = working_scale[-i_hit] # this variable used later for maxZ X_inactive_resid = X_inactive - X_active %*% keepLs - working_x = scale(X_inactive_resid,center=F,scale=sqrt(colSums(X_inactive_resid^2))) - score = as.numeric(t(working_x)%*%y) + working_scale = sqrt(colSums(X_inactive_resid^2)) # this variable used later for maxZ + working_x = scale(X_inactive_resid,center=F,scale=working_scale) + working_score = as.numeric(t(working_x)%*%y) beta_cur = backsolve(R,t(Q_active)%*%y) # must be computed before the break # so we have it if we have @@ -180,7 +183,7 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, # update maxZ variable realized_maxZ[k] = sign_hit * working_score[i_hit] - + # Gamma matrix! if (gi + 2*p > nrow(Gamma)) Gamma = rbind(Gamma,matrix(0,2*p+gbuf,n)) @@ -451,6 +454,7 @@ fsInf_maxZ = function(obj, sigma=NULL, alpha=0.1, verbose=FALSE, k=NULL, y = obj$y p = ncol(x) n = nrow(x) + pv = c() if (is.null(sigma)) { # TODO we need a sampler on a unit sphere @@ -487,10 +491,10 @@ fsInf_maxZ = function(obj, sigma=NULL, alpha=0.1, verbose=FALSE, k=NULL, collapsed_neg = apply(obj$offset_neg_maxZ[inactive,1:j,drop=FALSE], 1, min) cur_scale = obj$scale_maxZ[,j][inactive] - # the matrix cur_adjusted_X is used to compute + # the matrix cur_adjusted_Xt is used to compute (always as length(y) columns) # the maxZ or maxT for the sampled variables - - cur_adjusted_X = obj$Gamma_maxZ[zi + Seq(1,p-j+1),]; zi = zi+p-j+1 + # + cur_adjusted_Xt = obj$Gamma_maxZ[zi + Seq(1,p-j+1),]; zi = zi+p-j+1 # Xt for transpose # cur_X is used to enforce conditioning on # the ever_active sufficient_statistics @@ -517,8 +521,8 @@ fsInf_maxZ = function(obj, sigma=NULL, alpha=0.1, verbose=FALSE, k=NULL, # now, we sample from Y_star, a centered Gaussian with covariance sigma^2 I # subject to the constraint - # t(cur_adjusted_X) %*% Y_star < final_upper - # -t(cur_adjusted_X) %*% Y_star < -final_lower + # t(cur_adjusted_Xt) %*% Y_star < final_upper + # -t(cur_adjusted_Xt) %*% Y_star < -final_lower # really, we want the covariance of Y_star to be \sigma^2 (I - cur_P) # where P is projection on the j-1 previous variables @@ -529,7 +533,7 @@ fsInf_maxZ = function(obj, sigma=NULL, alpha=0.1, verbose=FALSE, k=NULL, # IMPORTANT: after sampling Y_star, we have to add back cur_fitted - # if n > p, we actually just draw cur_adjusted_X %*% Y_star + # if n > p, we actually just draw cur_adjusted_Xt %*% Y_star # because this has a simple box constraint # with a generically non-degenerate covariance @@ -537,10 +541,10 @@ fsInf_maxZ = function(obj, sigma=NULL, alpha=0.1, verbose=FALSE, k=NULL, library(tmvtnorm) if (length(inactive) > 1) { - cov = (cur_adjusted_X %*% t(cur_adjusted_X)) + cov = (cur_adjusted_Xt %*% t(cur_adjusted_Xt)) cov = cov * rep(sigma^2, nrow(cov), ncol(cov)) } else { - cov = sigma^2 * sum(cur_adjusted_X^2) + cov = sigma^2 * sum(cur_adjusted_Xt^2) } truncated_noise = rtmvnorm(n=ndraw, @@ -559,11 +563,12 @@ fsInf_maxZ = function(obj, sigma=NULL, alpha=0.1, verbose=FALSE, k=NULL, } } else { - linear_part = rbind(t(cur_adjusted_X), -t(cur_adjusted_X)) + linear_part = rbind(cur_adjusted_Xt, -cur_adjusted_Xt) offset = c(final_upper, -final_lower) - covariance = diag(rep(sigma^2, nrow(cor_adjusted_X))) - mean = rep(0, nrow(cur_adjusted_X)) + covariance = diag(rep(sigma^2, length(y))) + mean = rep(0, length(y)) initial_point = y + truncated_y = sample_from_constraints(linear_part, offset, mean, @@ -572,7 +577,7 @@ fsInf_maxZ = function(obj, sigma=NULL, alpha=0.1, verbose=FALSE, k=NULL, burnin=burnin, ndraw=ndraw) - truncated_noise = truncated_y %*% cur_adjusted_X + truncated_noise = truncated_y %*% t(cur_adjusted_Xt) sample_maxZ = apply(abs(1. / cur_scale * truncated_noise), 1, max) } @@ -592,17 +597,17 @@ fsInf_maxZ = function(obj, sigma=NULL, alpha=0.1, verbose=FALSE, k=NULL, sigma=sigma, call=this.call, vars=vars, - sign=sign, + sign=obj$sign, alpha=alpha, realized_maxZ=obj$realized_maxZ) - class(out) = "fsInf_Zmax" + class(out) = "fsInf_maxZ" return(out) } ############################## - -Print methods - +# +# Print methods +# ############################## print.fs <- function(x, ...) { @@ -618,7 +623,68 @@ print.fs <- function(x, ...) { invisible() } -print.fsInf_Zmax <- function(obj) { +print.fsInf <- function(x, tailarea=TRUE, ...) { + cat("\nCall:\n") + dput(x$call) + + cat(sprintf("\nStandard deviation of noise (specified or estimated) sigma = %0.3f\n", + x$sigma)) + + if (x$type == "active") { + cat(sprintf("\nSequential testing results with alpha = %0.3f\n",x$alpha)) + tab = cbind(1:length(x$pv),x$vars, + round(x$sign*x$vmat%*%x$y,3), + round(x$sign*x$vmat%*%x$y/(x$sigma*sqrt(rowSums(x$vmat^2))),3), + round(x$pv,3),round(x$ci,3)) + colnames(tab) = c("Step", "Var", "Coef", "Z-score", "P-value", + "LowConfPt", "UpConfPt") + if (tailarea) { + tab = cbind(tab,round(x$tailarea,3)) + colnames(tab)[(ncol(tab)-1):ncol(tab)] = c("LowTailArea","UpTailArea") + } + rownames(tab) = rep("",nrow(tab)) + print(tab) + + cat(sprintf("\nEstimated stopping point from ForwardStop rule = %i\n",x$khat)) + } + + else if (x$type == "all") { + cat(sprintf("\nTesting results at step = %i, with alpha = %0.3f\n",x$k,x$alpha)) + tab = cbind(x$vars, + round(x$sign*x$vmat%*%x$y,3), + round(x$sign*x$vmat%*%x$y/(x$sigma*sqrt(rowSums(x$vmat^2))),3), + round(x$pv,3),round(x$ci,3)) + colnames(tab) = c("Var", "Coef", "Z-score", "P-value", "LowConfPt", "UpConfPt") + if (tailarea) { + tab = cbind(tab,round(x$tailarea,3)) + colnames(tab)[(ncol(tab)-1):ncol(tab)] = c("LowTailArea","UpTailArea") + } + rownames(tab) = rep("",nrow(tab)) + print(tab) + } + + else if (x$type == "aic") { + cat(sprintf("\nTesting results at step = %i, with alpha = %0.3f\n",x$khat,x$alpha)) + tab = cbind(x$vars, + round(x$sign*x$vmat%*%x$y,3), + round(x$sign*x$vmat%*%x$y/(x$sigma*sqrt(rowSums(x$vmat^2))),3), + round(x$pv,3),round(x$ci,3)) + colnames(tab) = c("Var", "Coef", "Z-score", "P-value", "LowConfPt", "UpConfPt") + if (tailarea) { + tab = cbind(tab,round(x$tailarea,3)) + colnames(tab)[(ncol(tab)-1):ncol(tab)] = c("LowTailArea","UpTailArea") + } + rownames(tab) = rep("",nrow(tab)) + print(tab) + + cat(sprintf("\nEstimated stopping point from AIC rule = %i\n",x$khat)) + } + + invisible() +} + + +print.fsInf_maxZ <- function(obj) { cat("\nCall:\n") dput(obj$call) @@ -628,23 +694,23 @@ print.fsInf_Zmax <- function(obj) { cat(sprintf("\nSequential testing results with alpha = %0.3f\n",obj$alpha)) - tab = cbind(1:length(obj$pv),obj$vars, + tab = cbind(1:length(obj$pv), + obj$vars, round(obj$sign*obj$realized_maxZ, 3), round(obj$pv,3)) - colnames(tab) = c("Step", "Var", "Coef", "Z-score", "P-value") + colnames(tab) = c("Step", "Var", "Z-score", "P-value") rownames(tab) = rep("",nrow(tab)) print(tab) cat(sprintf("\nEstimated stopping point from ForwardStop rule = %i\n",obj$khat)) - } invisible() } ############################## - -Plot methods - +# +# Plot methods +# ############################## plot.fs <- function(x, breaks=TRUE, omit.zeros=TRUE, var.labels=TRUE, ...) { diff --git a/tests/test.fs_maxZ.R b/tests/test.fs_maxZ.R new file mode 100644 index 0000000..dc7e6e2 --- /dev/null +++ b/tests/test.fs_maxZ.R @@ -0,0 +1,23 @@ +library(selectiveInference) +options(error=dump.frames) + +set.seed(0) +n = 100 +p = 120 +s = 3 +size = 5 + +sigma = 1.5 +x = matrix(rnorm(n*p),n,p) +#x = scale(x,T,F)/sqrt(n-1) + +b = c(sample(c(-1,1),s,replace=T)*rep(size,s),rep(0,p-s)) +mu = x%*%b +y = mu + sigma*rnorm(n) + +obj = fs(x,y,verb=T,intercept=T,norm=T, maxsteps=20) + + +# Sequential inference +out = fsInf_maxZ(obj,sigma=sigma,k=20, ndraw=5000, burnin=1000) +print(out) From e48e922d8b0b9834119fad71b24f4e93a8abc2f8 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Wed, 16 Mar 2016 23:38:32 -0700 Subject: [PATCH 116/493] removing tmvtnorm dependency --- selectiveInference/R/funs.fs.R | 61 ++++++++++------------------------ 1 file changed, 18 insertions(+), 43 deletions(-) diff --git a/selectiveInference/R/funs.fs.R b/selectiveInference/R/funs.fs.R index dedc0d3..7b04012 100644 --- a/selectiveInference/R/funs.fs.R +++ b/selectiveInference/R/funs.fs.R @@ -533,53 +533,28 @@ fsInf_maxZ = function(obj, sigma=NULL, alpha=0.1, verbose=FALSE, k=NULL, # IMPORTANT: after sampling Y_star, we have to add back cur_fitted - # if n > p, we actually just draw cur_adjusted_Xt %*% Y_star + # if n > p, we could actually just draw cur_adjusted_Xt %*% Y_star # because this has a simple box constraint # with a generically non-degenerate covariance - if (n > p) { - library(tmvtnorm) - - if (length(inactive) > 1) { - cov = (cur_adjusted_Xt %*% t(cur_adjusted_Xt)) - cov = cov * rep(sigma^2, nrow(cov), ncol(cov)) - } else { - cov = sigma^2 * sum(cur_adjusted_Xt^2) - } - - truncated_noise = rtmvnorm(n=ndraw, - mean=cur_offset, - sigma=cov, - lower=-collapsed_neg, - upper=collapsed_pos, - algorithm="gibbs", - burn.in.samples=burnin) - - if (length(inactive) > 1) { - sample_maxZ = apply(abs(1. / cur_scale * truncated_noise), 1, max) - } - else { - sample_maxZ = truncated_noise / cur_scale - } - } else { + # but `tmvtnorm` seems to give poor results for its sampler - linear_part = rbind(cur_adjusted_Xt, -cur_adjusted_Xt) - offset = c(final_upper, -final_lower) - covariance = diag(rep(sigma^2, length(y))) - mean = rep(0, length(y)) - initial_point = y - - truncated_y = sample_from_constraints(linear_part, - offset, - mean, - covariance, - initial_point, - burnin=burnin, - ndraw=ndraw) - - truncated_noise = truncated_y %*% t(cur_adjusted_Xt) - sample_maxZ = apply(abs(1. / cur_scale * truncated_noise), 1, max) - } + linear_part = rbind(cur_adjusted_Xt, -cur_adjusted_Xt) + offset = c(final_upper, -final_lower) + covariance = diag(rep(sigma^2, length(y))) + mean = rep(0, length(y)) + initial_point = y + + truncated_y = sample_from_constraints(linear_part, + offset, + mean, + covariance, + initial_point, + burnin=burnin, + ndraw=ndraw) + + truncated_noise = truncated_y %*% t(cur_adjusted_Xt) + sample_maxZ = apply(abs(1. / cur_scale * truncated_noise), 1, max) observed_maxZ = obj$realized_maxZ[j] From ee560b57738840fcda72445337329144eb17e5cd Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Sat, 19 Mar 2016 08:13:19 -0700 Subject: [PATCH 117/493] BF: last step was failing because of how R treats numeric different than matrix --- selectiveInference/R/funs.fs.R | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/selectiveInference/R/funs.fs.R b/selectiveInference/R/funs.fs.R index 7b04012..a86f96d 100644 --- a/selectiveInference/R/funs.fs.R +++ b/selectiveInference/R/funs.fs.R @@ -553,9 +553,13 @@ fsInf_maxZ = function(obj, sigma=NULL, alpha=0.1, verbose=FALSE, k=NULL, burnin=burnin, ndraw=ndraw) - truncated_noise = truncated_y %*% t(cur_adjusted_Xt) - sample_maxZ = apply(abs(1. / cur_scale * truncated_noise), 1, max) - + if (j < p) { + truncated_noise = truncated_y %*% t(cur_adjusted_Xt) + sample_maxZ = apply(abs(1. / cur_scale * truncated_noise), 1, max) + } + else { + sample_maxZ = abs(truncated_y %*% cur_adjusted_Xt) + } observed_maxZ = obj$realized_maxZ[j] pval = sum(sample_maxZ > observed_maxZ) / ndraw From 338fac0e7f9745d355f483c896bd9a10dddc14d3 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Sat, 19 Mar 2016 10:50:07 -0700 Subject: [PATCH 118/493] using drop=FALSE instead of if statement --- selectiveInference/R/funs.fs.R | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/selectiveInference/R/funs.fs.R b/selectiveInference/R/funs.fs.R index a86f96d..1bb08b9 100644 --- a/selectiveInference/R/funs.fs.R +++ b/selectiveInference/R/funs.fs.R @@ -494,7 +494,7 @@ fsInf_maxZ = function(obj, sigma=NULL, alpha=0.1, verbose=FALSE, k=NULL, # the matrix cur_adjusted_Xt is used to compute (always as length(y) columns) # the maxZ or maxT for the sampled variables # - cur_adjusted_Xt = obj$Gamma_maxZ[zi + Seq(1,p-j+1),]; zi = zi+p-j+1 # Xt for transpose + cur_adjusted_Xt = obj$Gamma_maxZ[zi + Seq(1,p-j+1),,drop=FALSE]; zi = zi+p-j+1 # Xt for transpose # cur_X is used to enforce conditioning on # the ever_active sufficient_statistics @@ -537,8 +537,6 @@ fsInf_maxZ = function(obj, sigma=NULL, alpha=0.1, verbose=FALSE, k=NULL, # because this has a simple box constraint # with a generically non-degenerate covariance - # but `tmvtnorm` seems to give poor results for its sampler - linear_part = rbind(cur_adjusted_Xt, -cur_adjusted_Xt) offset = c(final_upper, -final_lower) covariance = diag(rep(sigma^2, length(y))) @@ -553,13 +551,9 @@ fsInf_maxZ = function(obj, sigma=NULL, alpha=0.1, verbose=FALSE, k=NULL, burnin=burnin, ndraw=ndraw) - if (j < p) { - truncated_noise = truncated_y %*% t(cur_adjusted_Xt) - sample_maxZ = apply(abs(1. / cur_scale * truncated_noise), 1, max) - } - else { - sample_maxZ = abs(truncated_y %*% cur_adjusted_Xt) - } + truncated_noise = truncated_y %*% t(cur_adjusted_Xt) + sample_maxZ = apply(abs(1. / cur_scale * truncated_noise), 1, max) + observed_maxZ = obj$realized_maxZ[j] pval = sum(sample_maxZ > observed_maxZ) / ndraw From 45406e6fbcd210cd7c7ce8e2d8f6539622499212 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Sat, 19 Mar 2016 19:54:34 -0700 Subject: [PATCH 119/493] BF: broadcasting error, also scale_maxZ was wrong variable after resizing --- selectiveInference/R/funs.fs.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/selectiveInference/R/funs.fs.R b/selectiveInference/R/funs.fs.R index 1bb08b9..7906be6 100644 --- a/selectiveInference/R/funs.fs.R +++ b/selectiveInference/R/funs.fs.R @@ -230,7 +230,7 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, offset_pos_maxZ = offset_pos_maxZ[,Seq(1,k-1),drop=FALSE] offset_neg_maxZ = offset_neg_maxZ[,Seq(1,k-1),drop=FALSE] - scale_maxZ = offset_pos_maxZ[,Seq(1,k-1),drop=FALSE] + scale_maxZ = scale_maxZ[,Seq(1,k-1),drop=FALSE] Gamma_maxZ = Gamma_maxZ[Seq(1,zi),,drop=FALSE] # If we reached the maximum number of steps @@ -552,7 +552,7 @@ fsInf_maxZ = function(obj, sigma=NULL, alpha=0.1, verbose=FALSE, k=NULL, ndraw=ndraw) truncated_noise = truncated_y %*% t(cur_adjusted_Xt) - sample_maxZ = apply(abs(1. / cur_scale * truncated_noise), 1, max) + sample_maxZ = apply(abs(t(truncated_noise) / cur_scale), 2, max) observed_maxZ = obj$realized_maxZ[j] From c6e959c5f8b7c22c35dd0148f3ecf192d9e346f2 Mon Sep 17 00:00:00 2001 From: tibs Date: Sat, 19 Mar 2016 23:30:56 -0700 Subject: [PATCH 120/493] rob added Rd file for fsInf_maxZ --- selectiveInference/R/funs.fs.R | 4 ++-- selectiveInference/R/funs.quadratic.R | 3 ++- tests/test.fs_maxZ.R | 30 +++++++++++++++++++++------ 3 files changed, 28 insertions(+), 9 deletions(-) diff --git a/selectiveInference/R/funs.fs.R b/selectiveInference/R/funs.fs.R index 7906be6..a4cc45f 100644 --- a/selectiveInference/R/funs.fs.R +++ b/selectiveInference/R/funs.fs.R @@ -568,11 +568,11 @@ fsInf_maxZ = function(obj, sigma=NULL, alpha=0.1, verbose=FALSE, k=NULL, k=k, khat=khat, sigma=sigma, - call=this.call, vars=vars, sign=obj$sign, alpha=alpha, - realized_maxZ=obj$realized_maxZ) + realized_maxZ=obj$realized_maxZ, + call=this.call) class(out) = "fsInf_maxZ" return(out) } diff --git a/selectiveInference/R/funs.quadratic.R b/selectiveInference/R/funs.quadratic.R index 23ff63f..799352b 100644 --- a/selectiveInference/R/funs.quadratic.R +++ b/selectiveInference/R/funs.quadratic.R @@ -1,4 +1,3 @@ - truncationRegion <- function(obj, ydecomp, type, tol = 1e-15) { n <- nrow(obj$x) @@ -177,6 +176,7 @@ TF_coefficients <- function(R, Ug, Uh, peng, penh, Zg, Zh, Vdg, Vdh, V2g, V2h) { # Numerically solve for roots of TF slice using # hybrid polyroot/uniroot approach + TF_roots <- function(R, C, coeffs, tol = 1e-8, tol2 = 1e-6) { x11 <- coeffs$x11 @@ -254,3 +254,4 @@ TF_roots <- function(R, C, coeffs, tol = 1e-8, tol2 = 1e-6) { if (I(0) < 0) stop("Infeasible constraint!") return(Intervals(c(-Inf,0))) } + diff --git a/tests/test.fs_maxZ.R b/tests/test.fs_maxZ.R index dc7e6e2..107948d 100644 --- a/tests/test.fs_maxZ.R +++ b/tests/test.fs_maxZ.R @@ -2,22 +2,40 @@ library(selectiveInference) options(error=dump.frames) set.seed(0) -n = 100 -p = 120 +n = 20 +p = 5 s = 3 size = 5 sigma = 1.5 x = matrix(rnorm(n*p),n,p) -#x = scale(x,T,F)/sqrt(n-1) + b = c(sample(c(-1,1),s,replace=T)*rep(size,s),rep(0,p-s)) +b=rep(0,p) mu = x%*%b +nsim=200 +pv=matrix(NA,nsim,p) +for(ii in 1:nsim){ + cat(ii) y = mu + sigma*rnorm(n) -obj = fs(x,y,verb=T,intercept=T,norm=T, maxsteps=20) +obj = fs(x,y,verb=T,intercept=T,norm=T, maxsteps=p) # Sequential inference -out = fsInf_maxZ(obj,sigma=sigma,k=20, ndraw=5000, burnin=1000) -print(out) +out = fsInf_maxZ(obj,sigma=sigma, ndraw=5000, burnin=1000) +pv[ii,]=out$pv +} + + + apply(pv,2,quantile) + [,1] [,2] [,3] [,4] [,5] +0% 0 0.0000 0.0000 0.0000 0.0000 +25% 0 0.0000 0.0055 0.1215 0.2123 +50% 0 0.0000 0.1826 0.4028 0.4824 +75% 0 0.0875 0.5638 0.7002 0.7517 +100% 0 0.9860 0.9916 0.9996 0.9984 + + +plot((1:nsim)/nsim,sort(pv[,4])) From 1470e608f6cdd7e052198e04e66d910ca52d3ccb Mon Sep 17 00:00:00 2001 From: tibs Date: Sun, 20 Mar 2016 12:39:42 -0700 Subject: [PATCH 121/493] rob --- selectiveInference/R/funs.fs.R | 6 +++--- tests/test.fs_maxZ.R | 15 +++++---------- 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/selectiveInference/R/funs.fs.R b/selectiveInference/R/funs.fs.R index a4cc45f..de3ebf5 100644 --- a/selectiveInference/R/funs.fs.R +++ b/selectiveInference/R/funs.fs.R @@ -440,8 +440,8 @@ fsInf <- function(obj, sigma=NULL, alpha=0.1, k=NULL, type=c("active","all","aic # selected maxZ tests -fsInf_maxZ = function(obj, sigma=NULL, alpha=0.1, verbose=FALSE, k=NULL, - ndraw=8000, burnin=2000) { +fsInf_maxZ = function(obj, sigma=NULL, alpha=0.1, k=NULL, + ndraw=8000, burnin=2000, verbose=FALSE) { this.call = match.call() @@ -474,7 +474,7 @@ fsInf_maxZ = function(obj, sigma=NULL, alpha=0.1, verbose=FALSE, k=NULL, vars = obj$action[1:k] zi = 0 for (j in 1:k) { - + if(verbose) cat(c("Step=",j),fill=T) # the inactive set here does not # include the variable at the j-th step # so, at j==1, the inactive set is every variable diff --git a/tests/test.fs_maxZ.R b/tests/test.fs_maxZ.R index 107948d..11e89aa 100644 --- a/tests/test.fs_maxZ.R +++ b/tests/test.fs_maxZ.R @@ -29,13 +29,8 @@ pv[ii,]=out$pv } - apply(pv,2,quantile) - [,1] [,2] [,3] [,4] [,5] -0% 0 0.0000 0.0000 0.0000 0.0000 -25% 0 0.0000 0.0055 0.1215 0.2123 -50% 0 0.0000 0.1826 0.4028 0.4824 -75% 0 0.0875 0.5638 0.7002 0.7517 -100% 0 0.9860 0.9916 0.9996 0.9984 - - -plot((1:nsim)/nsim,sort(pv[,4])) +par(mfrow=c(3,3)) +for(j in 1:p){ +plot((1:nsim)/nsim,sort(pv[,j])) +abline(0,1) +} From f9681b461b9ec6d1f3eb21b4929b564b510852f3 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Mon, 21 Mar 2016 11:01:55 -0700 Subject: [PATCH 122/493] sample a smaller dimensional gaussian when possible --- selectiveInference/R/funs.fs.R | 59 +++++++++++++++++++++++----------- 1 file changed, 41 insertions(+), 18 deletions(-) diff --git a/selectiveInference/R/funs.fs.R b/selectiveInference/R/funs.fs.R index de3ebf5..7e6f2fa 100644 --- a/selectiveInference/R/funs.fs.R +++ b/selectiveInference/R/funs.fs.R @@ -533,27 +533,50 @@ fsInf_maxZ = function(obj, sigma=NULL, alpha=0.1, k=NULL, # IMPORTANT: after sampling Y_star, we have to add back cur_fitted - # if n > p, we could actually just draw cur_adjusted_Xt %*% Y_star + # if n >= p, we could actually just draw cur_adjusted_Xt %*% Y_star # because this has a simple box constraint # with a generically non-degenerate covariance - linear_part = rbind(cur_adjusted_Xt, -cur_adjusted_Xt) - offset = c(final_upper, -final_lower) - covariance = diag(rep(sigma^2, length(y))) - mean = rep(0, length(y)) - initial_point = y - - truncated_y = sample_from_constraints(linear_part, - offset, - mean, - covariance, - initial_point, - burnin=burnin, - ndraw=ndraw) - - truncated_noise = truncated_y %*% t(cur_adjusted_Xt) - sample_maxZ = apply(abs(t(truncated_noise) / cur_scale), 2, max) - + if (nrow(cur_adjusted_Xt) > length(y)) { + linear_part = rbind(cur_adjusted_Xt, -cur_adjusted_Xt) + offset = c(final_upper, -final_lower) + covariance = diag(rep(sigma^2, length(y))) + mean = rep(0, length(y)) + initial_point = y + + truncated_y = sample_from_constraints(linear_part, + offset, + mean, + covariance, + initial_point, + burnin=burnin, + ndraw=ndraw) + + truncated_noise = truncated_y %*% t(cur_adjusted_Xt) + sample_maxZ = apply(abs(t(truncated_noise) / cur_scale), 2, max) + } else if (nrow(cur_adjusted_Xt) > 1) { # sample from a smaller dimensional gaussian + linear_part = rbind(diag(rep(1, nrow(cur_adjusted_Xt))), + diag(rep(-1, nrow(cur_adjusted_Xt)))) + covariance = sigma^2 * (cur_adjusted_Xt %*% t(cur_adjusted_Xt)) + offset = c(final_upper, -final_lower) + mean = rep(0, nrow(cur_adjusted_Xt)) + initial_point = cur_adjusted_Xt %*% y + + truncated_noise = sample_from_constraints(linear_part, + offset, + mean, + covariance, + initial_point, + burnin=burnin, + ndraw=ndraw) + sample_maxZ = apply(abs(t(truncated_noise) / cur_scale), 2, max) + + } else { # problem is just a univariate gaussian + # this should work as long as cdfL - cdfU is not tiny + cdfL = pnorm(final_lower) + cdfU = pnorm(final_upper) + sample_maxZ = qnorm(runif(ndraw) * (cdfU - cdfL) + cdfL) + } observed_maxZ = obj$realized_maxZ[j] pval = sum(sample_maxZ > observed_maxZ) / ndraw From fdb26b14ab27f1725585d6fea8e2340bd609680c Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Mon, 21 Mar 2016 11:48:29 -0700 Subject: [PATCH 123/493] BF in univariate sampler -- needed abs value --- selectiveInference/R/funs.fs.R | 37 +++++++++++++++++++++++----------- 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/selectiveInference/R/funs.fs.R b/selectiveInference/R/funs.fs.R index 7e6f2fa..6403106 100644 --- a/selectiveInference/R/funs.fs.R +++ b/selectiveInference/R/funs.fs.R @@ -512,7 +512,7 @@ fsInf_maxZ = function(obj, sigma=NULL, alpha=0.1, k=NULL, cur_offset = as.numeric(t(cur_X) %*% cur_fitted) } else { - cur_fitted = 0 + cur_fitted = rep(0, length(y)) cur_offset = rep(0, length(inactive)) } @@ -541,12 +541,12 @@ fsInf_maxZ = function(obj, sigma=NULL, alpha=0.1, k=NULL, linear_part = rbind(cur_adjusted_Xt, -cur_adjusted_Xt) offset = c(final_upper, -final_lower) covariance = diag(rep(sigma^2, length(y))) - mean = rep(0, length(y)) + mean_param = cur_fitted # rep(0, length(y)) initial_point = y truncated_y = sample_from_constraints(linear_part, offset, - mean, + mean_param, covariance, initial_point, burnin=burnin, @@ -559,29 +559,42 @@ fsInf_maxZ = function(obj, sigma=NULL, alpha=0.1, k=NULL, diag(rep(-1, nrow(cur_adjusted_Xt)))) covariance = sigma^2 * (cur_adjusted_Xt %*% t(cur_adjusted_Xt)) offset = c(final_upper, -final_lower) - mean = rep(0, nrow(cur_adjusted_Xt)) + mean_param = cur_adjusted_Xt %*% cur_fitted # rep(0, nrow(cur_adjusted_Xt)) initial_point = cur_adjusted_Xt %*% y truncated_noise = sample_from_constraints(linear_part, offset, - mean, + mean_param, covariance, initial_point, burnin=burnin, ndraw=ndraw) sample_maxZ = apply(abs(t(truncated_noise) / cur_scale), 2, max) - } else { # problem is just a univariate gaussian - # this should work as long as cdfL - cdfU is not tiny - cdfL = pnorm(final_lower) - cdfU = pnorm(final_upper) - sample_maxZ = qnorm(runif(ndraw) * (cdfU - cdfL) + cdfL) + } else { # just a univariated truncated Gaussian + # but we need the law of the absolute value of it + # we are sampling here, but could probably + # do this without sampling + mean_param = sum(as.numeric(cur_adjusted_Xt) * as.numeric(cur_fitted)) + scaling = sigma * sqrt(sum(cur_adjusted_Xt^2)) + L = (final_lower - mean_param) / scaling + U = (final_upper - mean_param) / scaling + if (L > 6) { # use Exp approximation + Z = rexp(ndraw) / L + L + } else if (U < -6) { + Z = rexp(ndraw) / U + U + } else { + Z = qnorm(runif(ndraw) * (pnorm(U) - pnorm(L)) + pnorm(L)) + } + print('delta P') + print(pnorm(U) - pnorm(L)) + sample_maxZ = abs(Z * scaling + mean_param) + } - observed_maxZ = obj$realized_maxZ[j] + observed_maxZ = obj$realized_maxZ[j] pval = sum(sample_maxZ > observed_maxZ) / ndraw pval = 2 * min(pval, 1 - pval) - pv = c(pv, pval) } From 2b22bbf965d631dad012daed0318295cf8e115d5 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Mon, 21 Mar 2016 12:11:04 -0700 Subject: [PATCH 124/493] moved logic for 1D constraint sampling to constraints file, renamed mean to mean_param --- selectiveInference/R/funs.constraints.R | 102 ++++++++++++++---------- selectiveInference/R/funs.fs.R | 44 ++++------ 2 files changed, 77 insertions(+), 69 deletions(-) diff --git a/selectiveInference/R/funs.constraints.R b/selectiveInference/R/funs.constraints.R index e2bc041..3bf6b77 100644 --- a/selectiveInference/R/funs.constraints.R +++ b/selectiveInference/R/funs.constraints.R @@ -24,16 +24,16 @@ factor_covariance = function(S, rank=NA) { # whitening map # -# law is Z \sim N(mean, covariance) subject to constraints linear_part %*% Z \leq offset +# law is Z \sim N(mean_param, covariance) subject to constraints linear_part %*% Z \leq offset -whiten_constraint = function(linear_part, offset, mean, covariance) { +whiten_constraint = function(linear_part, offset, mean_param, covariance) { factor_cov = factor_covariance(covariance) sqrt_cov = factor_cov$sqrt_cov sqrt_inv = factor_cov$sqrt_inv new_A = linear_part %*% sqrt_cov - new_b = offset - linear_part %*% mean + new_b = offset - linear_part %*% mean_param # rescale rows to have length 1 @@ -44,11 +44,13 @@ whiten_constraint = function(linear_part, offset, mean, covariance) { # TODO: check these functions will behave when Z is a matrix. inverse_map = function(Z) { - return(sqrt_cov %*% Z + mean) + # broadcasting here + # the columns of Z are same length as mean_param + return(sqrt_cov %*% Z + as.numeric(mean_param)) } forward_map = function(W) { - return(sqrt_inv %*% (W - mean)) + return(sqrt_inv %*% (W - mean_param)) } return(list(linear_part=new_A, @@ -60,11 +62,11 @@ whiten_constraint = function(linear_part, offset, mean, covariance) { # # sample from the law # -# Z \sim N(mean, covariance) subject to constraints linear_part %*% Z \leq offset +# Z \sim N(mean_param, covariance) subject to constraints linear_part %*% Z \leq offset sample_from_constraints = function(linear_part, offset, - mean, + mean_param, covariance, initial_point, # point must be feasible for constraints ndraw=8000, @@ -74,7 +76,7 @@ sample_from_constraints = function(linear_part, whitened_con = whiten_constraint(linear_part, offset, - mean, + mean_param, covariance) white_initial = whitened_con$forward_map(initial_point) @@ -121,42 +123,60 @@ sample_from_constraints = function(linear_part, # In theory, these rows can be dropped rows_to_keep = white_offset < Inf - white_linear = white_linear[rows_to_keep,] - white_offset = white_offset[rows_to_keep,] + white_linear = white_linear[rows_to_keep,,drop=FALSE] + white_offset = white_offset[rows_to_keep] nstate = length(white_initial) if (sum(rows_to_keep) > 0) { - nconstraint = nrow(white_linear) - - directions = rbind(diag(rep(1, nstate)), - matrix(rnorm(nstate^2), nstate, nstate)) - - # normalize rows to have length 1 - - scaling = apply(directions, 1, function(x) { return(sqrt(sum(x^2))) }) - directions = directions / scaling - ndirection = nrow(directions) - - alphas = directions %*% t(white_linear) - U = white_linear %*% white_initial - white_offset - Z_sample = matrix(rep(0, nstate * ndraw), nstate, ndraw) - - result = .C("sample_truncnorm_white", - as.numeric(white_initial), - as.numeric(U), - as.numeric(t(directions)), - as.numeric(t(alphas)), - output=Z_sample, - as.integer(nconstraint), - as.integer(ndirection), - as.integer(nstate), - as.integer(burnin), - as.integer(ndraw), - package="selectiveInference") - Z_sample = result$output - } - else { - Z_sample = matrix(rnorm(nstate * ndraw), nstate, ndraw) + if (ncol(white_linear) > 1) { + nconstraint = nrow(white_linear) + + directions = rbind(diag(rep(1, nstate)), + matrix(rnorm(nstate^2), nstate, nstate)) + + # normalize rows to have length 1 + + scaling = apply(directions, 1, function(x) { return(sqrt(sum(x^2))) }) + directions = directions / scaling + ndirection = nrow(directions) + + alphas = directions %*% t(white_linear) + U = white_linear %*% white_initial - white_offset + Z_sample = matrix(rep(0, nstate * ndraw), nstate, ndraw) + + result = .C("sample_truncnorm_white", + as.numeric(white_initial), + as.numeric(U), + as.numeric(t(directions)), + as.numeric(t(alphas)), + output=Z_sample, + as.integer(nconstraint), + as.integer(ndirection), + as.integer(nstate), + as.integer(burnin), + as.integer(ndraw), + package="selectiveInference") + Z_sample = result$output + } else { # the distribution is univariate + # we can just work out upper and lower limits + + white_linear = as.numeric(white_linear) + pos = (white_linear * white_offset) >= 0 + neg = (white_linear * white_offset) <= 0 + if (sum(pos) > 0) { + U = min((white_offset / white_linear)[pos]) + } else { + U = Inf + } + if (sum(neg) < 0) { + L = max((white_offset / white_linear)[neg]) + } else { + L = -Inf + } + Z_sample = matrix(qnorm((pnorm(U) - pnorm(L)) * runif(ndraw) + pnorm(L)), 1, ndraw) + } + } else { + Z_sample = matrix(rnorm(nstate * ndraw), nstate, ndraw) } } diff --git a/selectiveInference/R/funs.fs.R b/selectiveInference/R/funs.fs.R index 6403106..cb63da2 100644 --- a/selectiveInference/R/funs.fs.R +++ b/selectiveInference/R/funs.fs.R @@ -554,14 +554,21 @@ fsInf_maxZ = function(obj, sigma=NULL, alpha=0.1, k=NULL, truncated_noise = truncated_y %*% t(cur_adjusted_Xt) sample_maxZ = apply(abs(t(truncated_noise) / cur_scale), 2, max) - } else if (nrow(cur_adjusted_Xt) > 1) { # sample from a smaller dimensional gaussian - linear_part = rbind(diag(rep(1, nrow(cur_adjusted_Xt))), - diag(rep(-1, nrow(cur_adjusted_Xt)))) - covariance = sigma^2 * (cur_adjusted_Xt %*% t(cur_adjusted_Xt)) - offset = c(final_upper, -final_lower) - mean_param = cur_adjusted_Xt %*% cur_fitted # rep(0, nrow(cur_adjusted_Xt)) - initial_point = cur_adjusted_Xt %*% y - + } else { # sample from a smaller dimensional gaussian + if (nrow(cur_adjusted_Xt) > 1) { + linear_part = rbind(diag(rep(1, nrow(cur_adjusted_Xt))), + diag(rep(-1, nrow(cur_adjusted_Xt)))) + covariance = sigma^2 * (cur_adjusted_Xt %*% t(cur_adjusted_Xt)) + offset = c(final_upper, -final_lower) + mean_param = cur_adjusted_Xt %*% cur_fitted # rep(0, nrow(cur_adjusted_Xt)) + initial_point = cur_adjusted_Xt %*% y + } else { + mean_param = as.numeric(sum(as.numeric(cur_adjusted_Xt) * as.numeric(cur_fitted))) + covariance = matrix(sigma^2 * sum(cur_adjusted_Xt^2)) + linear_part = matrix(c(1,-1), 2, 1) + offset = c(final_upper, -final_lower) + initial_point = as.numeric(sum(as.numeric(cur_adjusted_Xt) * as.numeric(y))) + } truncated_noise = sample_from_constraints(linear_part, offset, mean_param, @@ -571,26 +578,7 @@ fsInf_maxZ = function(obj, sigma=NULL, alpha=0.1, k=NULL, ndraw=ndraw) sample_maxZ = apply(abs(t(truncated_noise) / cur_scale), 2, max) - } else { # just a univariated truncated Gaussian - # but we need the law of the absolute value of it - # we are sampling here, but could probably - # do this without sampling - mean_param = sum(as.numeric(cur_adjusted_Xt) * as.numeric(cur_fitted)) - scaling = sigma * sqrt(sum(cur_adjusted_Xt^2)) - L = (final_lower - mean_param) / scaling - U = (final_upper - mean_param) / scaling - if (L > 6) { # use Exp approximation - Z = rexp(ndraw) / L + L - } else if (U < -6) { - Z = rexp(ndraw) / U + U - } else { - Z = qnorm(runif(ndraw) * (pnorm(U) - pnorm(L)) + pnorm(L)) - } - print('delta P') - print(pnorm(U) - pnorm(L)) - sample_maxZ = abs(Z * scaling + mean_param) - - } + } observed_maxZ = obj$realized_maxZ[j] pval = sum(sample_maxZ > observed_maxZ) / ndraw From f8b1ba89ed8a2307e5749184b48d1174a29b3903 Mon Sep 17 00:00:00 2001 From: tibs Date: Fri, 25 Mar 2016 09:49:38 -0700 Subject: [PATCH 125/493] rob added binom and Cox families to fixedLassoInf --- selectiveInference/DESCRIPTION | 3 +- selectiveInference/NAMESPACE | 4 + selectiveInference/R/funs.fixed.R | 25 +++- selectiveInference/R/funs.fixedCox.R | 111 ++++++++++++++++++ selectiveInference/R/funs.fixedLogit.R | 145 ++++++++++++++++++++++++ selectiveInference/R/funs.inf.R | 53 +++++++++ selectiveInference/man/fixedLassoInf.Rd | 64 ++++++++++- tests/test.fixed.R | 98 ++++++++++++++-- 8 files changed, 485 insertions(+), 18 deletions(-) create mode 100644 selectiveInference/R/funs.fixedCox.R create mode 100644 selectiveInference/R/funs.fixedLogit.R diff --git a/selectiveInference/DESCRIPTION b/selectiveInference/DESCRIPTION index 9e283ec..af80d99 100644 --- a/selectiveInference/DESCRIPTION +++ b/selectiveInference/DESCRIPTION @@ -9,7 +9,8 @@ Maintainer: Rob Tibshirani Depends: glmnet, intervals, - tmvtnorm + tmvtnorm, + survival Suggests: Rmpfr Description: New tools for post-selection inference, for use diff --git a/selectiveInference/NAMESPACE b/selectiveInference/NAMESPACE index cc7e76f..4d28398 100644 --- a/selectiveInference/NAMESPACE +++ b/selectiveInference/NAMESPACE @@ -6,6 +6,8 @@ export(lar,fs, print.larInf,print.fsInf, plot.lar,plot.fs, fixedLassoInf,print.fixedLassoInf, + # fixedLogitLassoInf,print.fixedLogitLassoInf, + # fixedCoxLassoInf,print.fixedCoxLassoInf, forwardStop, estimateSigma, manyMeans,print.manyMeans, @@ -26,6 +28,8 @@ S3method("plot", "fs") S3method("print", "fsInf") S3method("print", "fsInf_maxZ") S3method("print", "fixedLassoInf") +S3method("print", "fixedLogitLassoInf") +S3method("print", "fixedCoxLassoInf") S3method("print", "manyMeans") S3method("print", "groupfs") S3method("print", "groupfsInf") diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index ada155b..8948a10 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -2,12 +2,32 @@ # for the solution of # min 1/2 || y - \beta_0 - X \beta ||_2^2 + \lambda || \beta ||_1 -fixedLassoInf <- function(x, y, beta, lambda, intercept=TRUE, sigma=NULL, alpha=0.1, +fixedLassoInf <- function(x, y, beta, lambda, family=c("gaussian","binomial","cox"),intercept=TRUE, status=NULL, +sigma=NULL, alpha=0.1, type=c("partial","full"), tol.beta=1e-5, tol.kkt=0.1, gridrange=c(-100,100), bits=NULL, verbose=FALSE) { - + + family = match.arg(family) this.call = match.call() type = match.arg(type) + + if(family=="binomial") { + if(type!="partial") stop("Only type= partial allowed with binomial family") + out=fixedLogitLassoInf(x,y,beta,lambda,alpha=alpha, type="partial", tol.beta=tol.beta, tol.kkt=tol.kkt, + gridrange=gridrange, bits=bits, verbose=verbose,this.call=this.call) + return(out) + } +else if(family=="cox") { + if(type!="partial") stop("Only type= partial allowed with Cox family") + out=fixedCoxLassoInf(x,y,status,beta,lambda,alpha=alpha, type="partial",tol.beta=tol.beta, + tol.kkt=tol.kkt, gridrange=gridrange, bits=bits, verbose=verbose,this.call=this.call) + return(out) + } + +else{ + + + checkargs.xy(x,y) if (missing(beta) || is.null(beta)) stop("Must supply the solution beta") if (missing(lambda) || is.null(lambda)) stop("Must supply the tuning parameter value lambda") @@ -121,6 +141,7 @@ fixedLassoInf <- function(x, y, beta, lambda, intercept=TRUE, sigma=NULL, alpha= class(out) = "fixedLassoInf" return(out) } +} ############################# diff --git a/selectiveInference/R/funs.fixedCox.R b/selectiveInference/R/funs.fixedCox.R new file mode 100644 index 0000000..82eeb61 --- /dev/null +++ b/selectiveInference/R/funs.fixedCox.R @@ -0,0 +1,111 @@ +fixedCoxLassoInf=function(x,y,status,beta,lambda,alpha=.1, type=c("partial"),tol.beta=1e-5, tol.kkt=0.1, + gridrange=c(-100,100), bits=NULL, verbose=FALSE,this.call=NULL){ + + + checkargs.xy(x,y) + if(is.null(status)) stop("Must supply `status' argument") +if( sum(status==0)+sum(status==1)!=length(y)) stop("status vector must have values 0 or 1") + if (missing(beta) || is.null(beta)) stop("Must supply the solution beta") + if (missing(lambda) || is.null(lambda)) stop("Must supply the tuning parameter value lambda") + checkargs.misc(beta=beta,lambda=lambda,alpha=alpha, + gridrange=gridrange,tol.beta=tol.beta,tol.kkt=tol.kkt) + if (!is.null(bits) && !requireNamespace("Rmpfr",quietly=TRUE)) { + warning("Package Rmpfr is not installed, reverting to standard precision") + bits = NULL + } + + n=nrow(x) + p=ncol(x) + nvar=sum(beta!=0) + pv=vlo=vup=sd=rep(NA, nvar) + ci=tailarea=matrix(NA,nvar,2) + + + m=beta!=0 +vars=which(m) +if(sum(m)>0){ + bhat=beta[beta!=0] #penalized coefs just for active variables +s2=sign(bhat) + + #check KKT + + aaa=coxph(Surv(y,status)~x[,m],init=bhat,iter.max=0) + res=residuals(aaa,type="score") +if(!is.matrix(res)) res=matrix(res,ncol=1) +scor=colSums(res) + g=(scor+lambda*s2)/(2*lambda) +# cat(c(g,lambda,tol.kkt),fill=T) + if (any(abs(g) > 1+tol.kkt) ) + warning(paste("Solution beta does not satisfy the KKT conditions", + "(to within specified tolerances)")) + + +MM=vcov(aaa) + + bbar=(bhat+lambda*MM%*%s2) + A1=-(mydiag(s2)) +b1= -(mydiag(s2)%*%MM)%*%s2*lambda + + temp=max(A1%*%bbar-b1) + + +# compute p-values + for(jj in 1:length(bbar)){ + vj=rep(0,length(bbar));vj[jj]=1 + + + junk=mypoly.pval.lee(bbar,A1,b1,vj,MM) + + pv[jj] = junk$pv + vlo[jj]=junk$vlo + vup[jj]=junk$vup + sd[jj]=junk$sd + + junk2=mypoly.int.lee(bbar,vj,vlo[jj],vup[jj],sd[jj],alpha) + ci[jj,]=junk2$int + tailarea[jj,] = junk2$tailarea + + } + fit0=coxph(Surv(y,status)~x[,m]) + coef0=fit0$coef + se0=sqrt(diag(fit0$var)) + zscore0=coef0/se0 + + out = list(lambda=lambda,pv=pv,ci=ci, + tailarea=tailarea,vlo=vlo,vup=vup,sd=sd, + vars=vars,alpha=alpha,coef0=coef0,zscore0=zscore0, + call=this.call) + class(out) = "fixedCoxLassoInf" +} +return(out) +} + + + +print.fixedCoxLassoInf <- function(x, tailarea=TRUE, ...) { + cat("\nCall:\n") + dput(x$call) + + cat(sprintf("\nStandard deviation of noise (specified or estimated) sigma = %0.3f\n", + x$sigma)) + + cat(sprintf("\nTesting results at lambda = %0.3f, with alpha = %0.3f\n",x$lambda,x$alpha)) + cat("",fill=T) + tab = cbind(x$vars, + round(x$coef0,3), + round(x$zscore0,3), + round(x$pv,3),round(x$ci,3)) + colnames(tab) = c("Var", "Coef", "Z-score", "P-value", "LowConfPt", "UpConfPt") + if (tailarea) { + tab = cbind(tab,round(x$tailarea,3)) + colnames(tab)[(ncol(tab)-1):ncol(tab)] = c("LowTailArea","UpTailArea") + } + rownames(tab) = rep("",nrow(tab)) + print(tab) + + cat(sprintf("\nNote: coefficients shown are %s regression coefficients\n", + ifelse(x$type=="partial","partial","full"))) + invisible() +} + + diff --git a/selectiveInference/R/funs.fixedLogit.R b/selectiveInference/R/funs.fixedLogit.R new file mode 100644 index 0000000..ea476b1 --- /dev/null +++ b/selectiveInference/R/funs.fixedLogit.R @@ -0,0 +1,145 @@ + +fixedLogitLassoInf=function(x,y,beta,lambda,alpha=.1, type=c("partial"), tol.beta=1e-5, tol.kkt=0.1, + gridrange=c(-100,100), bits=NULL, verbose=FALSE,this.call=NULL){ + + + type = match.arg(type) + checkargs.xy(x,y) + if (missing(beta) || is.null(beta)) stop("Must supply the solution beta") + if (missing(lambda) || is.null(lambda)) stop("Must supply the tuning parameter value lambda") + checkargs.misc(beta=beta,lambda=lambda,alpha=alpha, + gridrange=gridrange,tol.beta=tol.beta,tol.kkt=tol.kkt) + if (!is.null(bits) && !requireNamespace("Rmpfr",quietly=TRUE)) { + warning("Package Rmpfr is not installed, reverting to standard precision") + bits = NULL + } + + + n=length(y) + p=ncol(x) + # I assume that intcpt was used + if(length(beta)!=p+1) stop("beta must be of length ncol(x)+1, that is, it should include an intercept") + nvar=sum(beta[-1]!=0) + pv=vlo=vup=sd=rep(NA, nvar) + ci=tailarea=matrix(NA,nvar,2) + +#do we need to worry about standardization? + +# obj = standardize(x,y,TRUE,FALSE) + # x = obj$x + # y = obj$y + + m=beta[-1]!=0 #active set + + bhat=c(beta[1],beta[-1][beta[-1]!=0]) # intcpt plus active vars + s2=sign(bhat) + lam2m=diag(c(0,rep(lambda,sum(m)))) + + + xxm=cbind(1,x[,m]) + + etahat = xxm %*% bhat + prhat = as.vector(exp(etahat) / (1 + exp(etahat))) + ww=prhat*(1-prhat) + w=diag(ww) + +#check KKT + z=etahat+(y-prhat)/ww + g= t(x)%*%w%*%(z-etahat)/lambda + if (any(abs(g) > 1+tol.kkt) ) + warning(paste("Solution beta does not satisfy the KKT conditions", + "(to within specified tolerances)")) + + vars = which(abs(beta[-1]) > tol.beta / sqrt(colSums(x^2))) + if(length(vars)==0){ + cat("Empty model",fill=T) + return() + } + if (any(sign(g[vars]) != sign(beta[-1][vars]))) + warning(paste("Solution beta does not satisfy the KKT conditions", + "(to within specified tolerances). You might try rerunning", + "glmnet with a lower setting of the", + "'thresh' parameter, for a more accurate convergence.")) + + #constraints for active variables + MM=solve(t(xxm)%*%w%*%xxm) + + bbar=(bhat-lam2m%*%MM%*%s2) + + + A1=-(mydiag(s2))[-1,-1] + b1= ((mydiag(s2)%*%MM)%*%s2*lambda)[-1] + + tol.poly = 0.01 + if (max(A1 %*% bbar[-1] - b1) > tol.poly) + stop(paste("Polyhedral constraints not satisfied; you must recompute beta", + "more accurately. With glmnet, make sure to use exact=TRUE in coef(),", + "and check whether the specified value of lambda is too small", + "(beyond the grid of values visited by glmnet).", + "You might also try rerunning glmnet with a lower setting of the", + "'thresh' parameter, for a more accurate convergence.")) + + + + for(jj in 1:sum(m)){ + vj=c(rep(0,sum(m)));vj[jj]=1 +# compute p-values + junk=mypoly.pval.lee(bbar[-1],A1,b1,vj,MM[-1,-1]) + pv[jj] = junk$pv + + + vlo[jj]=junk$vlo + vup[jj]=junk$vup + sd[jj]=junk$sd + # junk2=mypoly.int.lee(bbar[-1], A1, b1,vj,MM[-1,-1],alpha=.1) + junk2=mypoly.int.lee(bbar[-1],vj,vlo[jj],vup[jj],sd[jj],alpha=.1) + + ci[jj,]=junk2$int + tailarea[jj,] = junk2$tailarea + } + + fit0=glm(y~x[,m],family="binomial") + sfit0=summary(fit0) + coef0=fit0$coef[-1] + se0=sqrt(diag(sfit0$cov.scaled)[-1]) + zscore0=coef0/se0 + + out = list(type=type,lambda=lambda,pv=pv,ci=ci, + tailarea=tailarea,vlo=vlo,vup=vup,sd=sd, + vars=vars,alpha=alpha,coef0=coef0,zscore0=zscore0, + call=this.call) + class(out) = "fixedLogitLassoInf" + return(out) + + } + + + +print.fixedLogitLassoInf <- function(x, tailarea=TRUE, ...) { + cat("\nCall:\n") + dput(x$call) + + cat(sprintf("\nStandard deviation of noise (specified or estimated) sigma = %0.3f\n", + x$sigma)) + + cat(sprintf("\nTesting results at lambda = %0.3f, with alpha = %0.3f\n",x$lambda,x$alpha)) + cat("",fill=T) + tab = cbind(x$vars, + round(x$coef0,3), + round(x$zscore0,3), + round(x$pv,3),round(x$ci,3)) + colnames(tab) = c("Var", "Coef", "Z-score", "P-value", "LowConfPt", "UpConfPt") + if (tailarea) { + tab = cbind(tab,round(x$tailarea,3)) + colnames(tab)[(ncol(tab)-1):ncol(tab)] = c("LowTailArea","UpTailArea") + } + rownames(tab) = rep("",nrow(tab)) + print(tab) + + cat(sprintf("\nNote: coefficients shown are %s regression coefficients\n", + ifelse(x$type=="partial","partial","full"))) + invisible() +} + + + diff --git a/selectiveInference/R/funs.inf.R b/selectiveInference/R/funs.inf.R index 6a48708..423b4c3 100644 --- a/selectiveInference/R/funs.inf.R +++ b/selectiveInference/R/funs.inf.R @@ -244,3 +244,56 @@ aicStop <- function(x, y, action, df, sigma, mult=2, ntimes=2) { return(list(khat=khat,G=G,u=u,aic=aic,stopped=(i0])) + sd=sqrt(vv) + pv = tnorm.surv(temp,0,sd,vlo,vup,bits) + return(list(pv=pv,vlo=vlo,vup=vup,sd=sd)) +} + + + +mypoly.int.lee= + function(y,eta,vlo,vup,sd, alpha, gridrange=c(-100,100),gridpts=100, griddepth=2, flip=FALSE, bits=NULL) { + # compute sel intervals from poly lemmma, full version from Lee et al for full matrix Sigma + + temp = sum(eta*y) + + xg = seq(gridrange[1]*sd,gridrange[2]*sd,length=gridpts) + fun = function(x) { tnorm.surv(temp,x,sd,vlo,vup,bits) } + + int = grid.search(xg,fun,alpha/2,1-alpha/2,gridpts,griddepth) + tailarea = c(fun(int[1]),1-fun(int[2])) + + if (flip) { + int = -int[2:1] + tailarea = tailarea[2:1] + } + + return(list(int=int,tailarea=tailarea)) +} + + + +mydiag=function(x){ + if(length(x)==1) out=x + if(length(x)>1) out=diag(x) + return(out) + } + diff --git a/selectiveInference/man/fixedLassoInf.Rd b/selectiveInference/man/fixedLassoInf.Rd index ac1b9a0..3c029f7 100644 --- a/selectiveInference/man/fixedLassoInf.Rd +++ b/selectiveInference/man/fixedLassoInf.Rd @@ -9,7 +9,8 @@ Compute p-values and confidence intervals for the lasso estimate, at a fixed value of the tuning parameter lambda } \usage{ -fixedLassoInf(x, y, beta, lambda, intercept=TRUE, sigma=NULL, alpha=0.1, +fixedLassoInf(x, y, beta, lambda, family = c("gaussian", "binomial", + "cox"),intercept=TRUE, sigma=NULL, alpha=0.1, type=c("partial","full"), tol.beta=1e-5, tol.kkt=0.1, gridrange=c(-100,100), bits=NULL, verbose=FALSE) } @@ -37,11 +38,16 @@ Estimated lasso coefficients (e.g., from glmnet). This is of length p \item{lambda}{ Value of lambda used to compute beta. See the above warning } + +\item{family}{Response type: "gaussian" (default), "binomial", or + "cox" (for censored survival data) } + \item{sigma}{ Estimate of error standard deviation. If NULL (default), this is estimated using the mean squared residual of the full least squares fit when n >= 2p, and using the standard deviation of y when n < 2p. In the latter case, the user -should use \code{\link{estimateSigma}} function for a more accurate estimate +should use \code{\link{estimateSigma}} function for a more accurate estimate. +Not used for family= "binomial", or "cox" } \item{alpha}{ Significance level for confidence intervals (target is miscoverage alpha/2 in each tail) @@ -181,4 +187,56 @@ out = fixedLassoInf(xs,y,beta,lambda,sigma=sigma) #rescale conf points to undo the penalty factor out$ci=t(scale(t(out$ci),FALSE,pf[out$vars])) out -} + +#logistic model +set.seed(43) + n = 50 + p = 10 + sigma = 1 + + x = matrix(rnorm(n*p),n,p) + x=scale(x,TRUE,TRUE) + + beta = c(3,2,rep(0,p-2)) + y = x%*%beta + sigma*rnorm(n) + y=1*(y>mean(y)) + # first run glmnet + gfit = glmnet(x,y,standardize=FALSE,family="binomial") + + # extract coef for a given lambda; note the 1/n factor! + # (and here we DO include the intercept term) + lambda = .8 + beta = coef(gfit, s=lambda/n, exact=TRUE) + + # compute fixed lambda p-values and selection intervals + out = fixedLassoInf(x,y,beta,lambda,family="binomial") + out + +#Cox model +set.seed(43) + n = 50 + p = 10 + sigma = 1 + + x = matrix(rnorm(n*p),n,p) + x=scale(x,TRUE,TRUE) + + beta = c(3,2,rep(0,p-2)) + tim = as.vector(x\%*\%beta + sigma*rnorm(n)) + tim= tim-min(tim)+1 +status=sample(c(0,1),size=n,replace=T) + # first run glmnet + + + gfit = glmnet(x,Surv(tim,status),standardize=FALSE,family="cox") + + # extract coef for a given lambda; note the 1/n factor! + + lambda = 1.5 + beta = as.numeric(coef(gfit, s=lambda/n, exact=TRUE)) + + # compute fixed lambda p-values and selection intervals + out = fixedLassoInf(x,tim,beta,lambda,status=status,family="cox") + out +} + \ No newline at end of file diff --git a/tests/test.fixed.R b/tests/test.fixed.R index e2c5931..f1ce6cf 100644 --- a/tests/test.fixed.R +++ b/tests/test.fixed.R @@ -1,21 +1,26 @@ library(selectiveInference) #library(selectiveInference,lib.loc="/Users/tibs/dropbox/git/R/mylib") +library(glmnet) +library(MASS) +library(scalreg) #options(error=dump.frames) #attach("/Users/tibs/dropbox/PAPERS/lasso/lasso3/.RData") ##### +#gaussian n=50 p=10 sigma=.7 beta=c(3,2,0,0,rep(0,p-4)) set.seed(43) -nsim = 100 +nsim = 200 pvals <- matrix(NA, nrow=nsim, ncol=p) x = matrix(rnorm(n*p),n,p) x = scale(x,T,T)/sqrt(n-1) mu = x%*%beta for (i in 1:nsim) { + cat(i) y=mu+sigma*rnorm(n) #y=y-mean(y) # first run glmnet @@ -30,11 +35,11 @@ pvals[i, which(beta != 0)] <- aa$pv nulls = which(!is.na(pvals[,1]) & !is.na(pvals[,2])) np = pvals[nulls,-(1:2)] mean(np[!is.na(np)] < 0.1) - +o=!is.na(np) +plot((1:sum(o))/sum(o),sort(np)) +abline(0,1) ##### -library(selectiveInference) -library(MASS) -library(scalreg) + S <- diag(10) n <- 100 @@ -55,7 +60,75 @@ for(i in 1:100){ p <- pval[, -(1:2)] mean(p[p < 1] < 0.05) -##### +##logistic + +n=50 +p=10 +beta=c(3,2,0,0,rep(0,p-4)) +beta=rep(0,p) +set.seed(3) +nsim = 200 +pvals=matrix(NA, nrow=nsim, ncol=p) +ci=array(NA,c(nsim,p,2)) +x = matrix(rnorm(n*p),n,p) +x = scale(x,T,T)/sqrt(n-1) +mu = x%*%beta +for (ii in 1:nsim) { + cat(ii) +y=mu+rnorm(n) +y=1*(y>mean(y)) +# first run glmnet +gfit=glmnet(x,y,standardize=F,thresh=1e-8,family="binomial") +lambda = .25 +#extract coef for a given lambda; Note the 1/n factor! +beta = as.numeric(coef(gfit, s=lambda/n, exact=TRUE)) +# compute fixed lambda p-values and selection intervals + aa = fixedLassoInf(x,y,beta,lambda,family="binomial") + pvals[ii, which(beta[-1] != 0)] <- aa$pv + ci[ii,which(beta[-1] != 0),]=aa$ci +} + +o=!is.na(pvals) +plot((1:sum(o))/sum(o),sort(pvals)) +abline(0,1) +o=ci[,1,1]>0 | ci[,1,2]<0 +mean(o,na.rm=T) + + +## cox + +n=50 +p=10 +#beta=c(6,6,0,0,rep(0,p-4)) +beta=rep(0,p) +set.seed(3) +nsim = 200 +pvals=matrix(NA, nrow=nsim, ncol=p) +ci=array(NA,c(nsim,p,2)) +x = matrix(rnorm(n*p),n,p) +x = scale(x,T,T)/sqrt(n-1) +mu = x%*%beta +for (ii in 1:nsim) { + cat(ii) +tim=as.vector(mu+rnorm(n))+10 +status=sample(c(0,1),size=n,replace=T) + lambda=0.2 + y=cbind(time=tim,status=status) + gfit=glmnet(x,y,family="cox",standardize=FALSE) + b=as.numeric(coef(gfit,s=lambda/n,exact=TRUE)) + + aa= fixedLassoInf(x,tim,b,lambda,status=status,family="cox") + +pvals[ii, which(b != 0)] <- aa$pv[1:sum(!is.na(aa$pv))] + ci[ii,which(b != 0),]=aa$ci +} + +o=!is.na(pvals) +plot((1:sum(o))/sum(o),sort(pvals)) +abline(0,1) + + +#####more Gaussian a=lar(x,y) aa=larInf(a) @@ -71,13 +144,14 @@ set.seed(3) n=50 p=10 sigma=2 +nsim=100 x=matrix(rnorm(n*p),n,p) #x=scale(x,T,T)/sqrt(n-1) #try with and without standardization beta=c(5,4,3,2,1,rep(0,p-5)) -nsim=100 + seeds=sample(1:9999,size=nsim) pv=rep(NA,nsim) ci=matrix(NA,nsim,2) @@ -94,12 +168,12 @@ for(ii in 1:nsim){ bhat = predict(gfit, s=lambda/n,type="coef",exact=F)[-1] junk= fixedLassoInf(x,y,bhat,lambda,sigma=sigma) - pv[ii]=junk$pv[1] - # oo=junk$pred # for old package - oo=junk$var # for new package - btrue[ii]=lsfit(x[,oo],mu)$coef[2] - ci[ii,]=junk$ci[1,] + pvals[ii, which(bhat != 0)] <- aa$pv[1:sum(!is.na(aa$pv))] + ci[ii,which(bhat != 0),]=aa$ci + } +o=!is.na(pvals) +plot((1:sum(o))/sum(o),sort(pvals)) sum(ci[,1]> btrue) sum(ci[,2]< btrue) From 450347222c8c1e501b870d8f49bc5d328a4a588b Mon Sep 17 00:00:00 2001 From: tibs Date: Fri, 25 Mar 2016 09:55:57 -0700 Subject: [PATCH 126/493] rob --- selectiveInference/man/fixedLassoInf.Rd | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/selectiveInference/man/fixedLassoInf.Rd b/selectiveInference/man/fixedLassoInf.Rd index 3c029f7..00b4c81 100644 --- a/selectiveInference/man/fixedLassoInf.Rd +++ b/selectiveInference/man/fixedLassoInf.Rd @@ -54,7 +54,7 @@ Significance level for confidence intervals (target is miscoverage alpha/2 in ea } \item{intercept}{ Was the lasso problem solved (e.g., by glmnet) with an intercept in the model? -Default is TRUE +Default is TRUE. Must be TRUE for "binomial" family. Not used for 'cox" family, where no intercept is assumed. } \item{type}{Contrast type for p-values and confidence intervals: default is "partial"---meaning that the contrasts tested are the partial population @@ -89,6 +89,7 @@ Print out progress along the way? Default is FALSE} \details{ This function computes selective p-values and confidence intervals for the lasso, given a fixed value of the tuning parameter lambda. +Three different response types are supported: gaussian, binomial and Cox. The confidence interval construction involves numerical search and can be fragile: if the observed statistic is too close to either end of the truncation interval (vlo and vup, see references), then one or possibly both endpoints of the interval of @@ -123,7 +124,11 @@ is not allowed. \references{ Jason Lee, Dennis Sun, Yuekai Sun, and Jonathan Taylor (2013). + Exact post-selection inference, with application to the lasso. arXiv:1311.6238. + Jonathan Taylor and Robert Tibshirani (2016) Post-selection inference for L1-penalized likelihood models. +arXiv:1602.07358 + } \author{Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid} From 4f67765c0d1a7c2de310b621acbfeecdd96c5c80 Mon Sep 17 00:00:00 2001 From: tibs Date: Fri, 25 Mar 2016 11:24:13 -0700 Subject: [PATCH 127/493] rob --- selectiveInference/man/fixedLassoInf.Rd | 2 +- selectiveInference/man/selectiveInference.Rd | 53 +++++++++++++++++++- 2 files changed, 52 insertions(+), 3 deletions(-) diff --git a/selectiveInference/man/fixedLassoInf.Rd b/selectiveInference/man/fixedLassoInf.Rd index 00b4c81..31e47b4 100644 --- a/selectiveInference/man/fixedLassoInf.Rd +++ b/selectiveInference/man/fixedLassoInf.Rd @@ -124,8 +124,8 @@ is not allowed. \references{ Jason Lee, Dennis Sun, Yuekai Sun, and Jonathan Taylor (2013). - Exact post-selection inference, with application to the lasso. arXiv:1311.6238. + Jonathan Taylor and Robert Tibshirani (2016) Post-selection inference for L1-penalized likelihood models. arXiv:1602.07358 diff --git a/selectiveInference/man/selectiveInference.Rd b/selectiveInference/man/selectiveInference.Rd index 7d2ca57..fde2219 100644 --- a/selectiveInference/man/selectiveInference.Rd +++ b/selectiveInference/man/selectiveInference.Rd @@ -20,7 +20,8 @@ This package provides tools for inference after selection, in forward stepwise regression, least angle regression, the lasso, and the many normal means problem. The functions compute p-values and selection intervals that properly account for the inherent selection carried out by the procedure. These have exact finite sample -type I error and coverage under Gaussian errors. +type I error and coverage under Gaussian errors. For the logistic and Cox familes (fixedLassoInf), + the coverage is asymptotically valid This R package was developed as part of the selective inference software project in Python and R: @@ -94,7 +95,7 @@ out.aic out.fix = fsInf(fsfit,type="all",k=5) out.fix -## NOT RUN---lasso at fixed lambda +## NOT RUN---lasso at fixed lambda- Gaussian family ## first run glmnet # gfit = glmnet(x,y) @@ -107,6 +108,54 @@ out.fix # out = fixedLassoInf(x,y,beta,lambda,sigma=sigma) # out + +#lasso at fixed lambda- logistic family +#set.seed(43) + # n = 50 + # p = 10 + # sigma = 1 + + # x = matrix(rnorm(n*p),n,p) + x=scale(x,TRUE,TRUE) + # +# beta = c(3,2,rep(0,p-2)) + # y = x%*%beta + sigma*rnorm(n) + # y=1*(y>mean(y)) + # first run glmnet + # gfit = glmnet(x,y,standardize=FALSE,family="binomial") + + # extract coef for a given lambda; note the 1/n factor! + # (and here we DO include the intercept term) + # lambda = .8 + # beta = coef(gfit, s=lambda/n, exact=TRUE) + + # # compute fixed lambda p-values and selection intervals + # out = fixedLassoInf(x,y,beta,lambda,family="binomial") + # out + +##lasso at fixed lambda- Cox family +#set.seed(43) +# n = 50 + # p = 10 + # sigma = 1 + + # x = matrix(rnorm(n*p),n,p) + # x=scale(x,TRUE,TRUE) + + # beta = c(3,2,rep(0,p-2)) + # tim = as.vector(x\%*\%beta + sigma*rnorm(n)) + # tim= tim-min(tim)+1 +#status=sample(c(0,1),size=n,replace=T) + # first run glmnet + # gfit = glmnet(x,Surv(tim,status),standardize=FALSE,family="cox") + # extract coef for a given lambda; note the 1/n factor! + + # lambda = 1.5 + # beta = as.numeric(coef(gfit, s=lambda/n, exact=TRUE)) + + # compute fixed lambda p-values and selection intervals + # out = fixedLassoInf(x,tim,beta,lambda,status=status,family="cox") + # out ## NOT RUN---many normal means # set.seed(12345) # n = 100 From 19f51a1efc5c8a52e74fd24cdd500bffa90a263d Mon Sep 17 00:00:00 2001 From: tibs Date: Fri, 25 Mar 2016 11:29:11 -0700 Subject: [PATCH 128/493] rob --- selectiveInference/man/selectiveInference.Rd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selectiveInference/man/selectiveInference.Rd b/selectiveInference/man/selectiveInference.Rd index fde2219..851ee91 100644 --- a/selectiveInference/man/selectiveInference.Rd +++ b/selectiveInference/man/selectiveInference.Rd @@ -7,7 +7,7 @@ Tools for selective inference \description{ Functions to perform post-selection inference for forward stepwise regression, least angle regression, the lasso and the -many normal means problem +many normal means problem. The lasso function also supports logistic regression and the Cox model. } \details{ \tabular{ll}{ From f6e65a44de1eeac9cae5c8fc6330947e5928c8d9 Mon Sep 17 00:00:00 2001 From: tibs Date: Fri, 25 Mar 2016 11:30:49 -0700 Subject: [PATCH 129/493] rob --- selectiveInference/man/selectiveInference.Rd | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/selectiveInference/man/selectiveInference.Rd b/selectiveInference/man/selectiveInference.Rd index 851ee91..6e038d4 100644 --- a/selectiveInference/man/selectiveInference.Rd +++ b/selectiveInference/man/selectiveInference.Rd @@ -68,6 +68,11 @@ Exact post-selection inference, with application to the lasso. arXiv:1311.6238. Stephen Reid, Jonathan Taylor, and Rob Tibshirani (2014). Post-selection point and interval estimation of signal sizes in Gaussian samples. arXiv:1405.3340. + + +Jonathan Taylor and Robert Tibshirani (2016) Post-selection inference for L1-penalized likelihood models. +arXiv:1602.07358 + } \examples{ From 4e3d614b45023c4447c57ff43b00baaca161a8da Mon Sep 17 00:00:00 2001 From: tibs Date: Sun, 27 Mar 2016 21:26:22 -0700 Subject: [PATCH 130/493] rob --- selectiveInference/man/fsInf_maxZ.Rd | 86 ++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 selectiveInference/man/fsInf_maxZ.Rd diff --git a/selectiveInference/man/fsInf_maxZ.Rd b/selectiveInference/man/fsInf_maxZ.Rd new file mode 100644 index 0000000..89aa886 --- /dev/null +++ b/selectiveInference/man/fsInf_maxZ.Rd @@ -0,0 +1,86 @@ +\name{fsInf_maxZ} +\alias{fsInf_maxZ} +\title{ +Selective inference for forward stepwise regression +} +\description{ +Computes maxZ selective p-values and confidence intervals for forward +stepwise regression +} +\usage{ + +fsInf_maxZ(obj, sigma=NULL, alpha=0.1, k=NULL, ndraw=8000, burnin=2000,verbose=FALSE) + +} + +\arguments{ + \item{obj}{ +Object returned by \code{\link{fs}} function +} +\item{sigma}{ +Estimate of error standard deviation. If NULL (default), this is estimated +using the mean squared residual of the full least squares fit when n >= 2p, and +using the standard deviation of y when n < 2p. In the latter case, the user +should use \code{\link{estimateSigma}} function for a more accurate estimate +} +\item{alpha}{ +Significance level for confidence intervals (target is miscoverage alpha/2 in each tail) +} +\item{k}{ +See "type" argument below. Default is NULL, in which case k is taken to be the +the number of steps computed in the forward stepwise path +} +\item{ndraw}{Number of Monte Carlo samples generated} +\item{burnin}{ +Number of samples discarded at the beginning of the chain +} +\item{verbose}{Print out progress along the way? Default is FALSE} +} + +\details{ +This function computes selective maxZ p-values +for forward stepwise regression. These p-values are independent the under null, +so that stopping via the forwardStop rule yields guaranteed FDR control +} + +\value{ +\item{pv}{P-values for each model in the sequence} +\item{k}{Value of k specified in call} +\item{khat}{When type is "active", this is an estimated stopping point +declared by \code{\link{forwardStop}}} +\item{sigma}{Value of error standard deviation (sigma) used} +\item{vars}{Variables in active set} +\item{sign}{Signs of active coefficients} +\item{alpha}{Desired coverage (alpha/2 in each tail)} +\item{realized_maxZ}{Value of maxZ statistic computed at each step} +\item{call}{The call to fsInf_maxZ} +} + +\references{ +Will Fithian, Jonathan Taylor, Ryan Tibshirani, and Rob Tibshirani (2015). +Selective sequential model selection. arXiv:1512.02565.. + + +} + +\author{Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid} + +\seealso{\code{\link{fs}}} + +\examples{ +set.seed(33) +n = 50 +p = 10 +sigma = 1 +x = matrix(rnorm(n*p),n,p) +beta = c(3,2,rep(0,p-2)) +y = x\%*\%beta + sigma*rnorm(n) + +# run forward stepwise +fsfit = fs(x,y) + +# compute sequential p-values a +# (sigma estimated from full model) +out.seq = fsInf_maxZ(fsfit) +out.seq +} From fa20cc9fd6d8521c01e5e1442d950f396d51ceab Mon Sep 17 00:00:00 2001 From: tibshirani Date: Mon, 28 Mar 2016 15:17:24 -0700 Subject: [PATCH 131/493] test of forking --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 1a50e5b..41b7a4e 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,8 @@ Maintainer: Rob Tibshirani New tools for inference after selection, for use with forward stepwise regression, least angle regression, the lasso, and the many means problem. The package is available on [CRAN](http://cran.r-project.org/web/packages/selectiveInference/). See [this paper](http://www.pnas.org/content/112/25/7629.full) for a high level introduction to selective inference. +test + Code is in the directory selectiveInference/R. * funs.common.R: Basic functions used by many other functions, such as standardization. * funs.fixed.R: Inference for LASSO at a fixed, deterministic value of lambda. From 2843f21d7bf241456c1ad3bb796100f0c38113e9 Mon Sep 17 00:00:00 2001 From: tibshirani Date: Mon, 28 Mar 2016 15:21:24 -0700 Subject: [PATCH 132/493] undoing test --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 41b7a4e..1a50e5b 100644 --- a/README.md +++ b/README.md @@ -5,8 +5,6 @@ Maintainer: Rob Tibshirani New tools for inference after selection, for use with forward stepwise regression, least angle regression, the lasso, and the many means problem. The package is available on [CRAN](http://cran.r-project.org/web/packages/selectiveInference/). See [this paper](http://www.pnas.org/content/112/25/7629.full) for a high level introduction to selective inference. -test - Code is in the directory selectiveInference/R. * funs.common.R: Basic functions used by many other functions, such as standardization. * funs.fixed.R: Inference for LASSO at a fixed, deterministic value of lambda. From 44a0627897f4f28a0542944c7d9c0503872b54d1 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Wed, 6 Apr 2016 17:11:24 -0700 Subject: [PATCH 133/493] BF: conditioning on too much in forward stepwise, c(mathematical bug rather than code bug); also added a comment about one-sided pvalues --- selectiveInference/R/funs.fs.R | 3 ++- selectiveInference/man/fixedLassoInf.Rd | 2 +- selectiveInference/man/fsInf.Rd | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/selectiveInference/R/funs.fs.R b/selectiveInference/R/funs.fs.R index cb63da2..b75923d 100644 --- a/selectiveInference/R/funs.fs.R +++ b/selectiveInference/R/funs.fs.R @@ -188,7 +188,8 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, if (gi + 2*p > nrow(Gamma)) Gamma = rbind(Gamma,matrix(0,2*p+gbuf,n)) working_x = t(sign_score*t(working_x)) - Gamma[gi+Seq(1,p-r),] = t(working_x); gi = gi+p-r + #Gamma[gi+Seq(1,p-r),] = t(working_x); gi = gi+p-r + Gamma[gi+Seq(1,p-r-1),] = t(working_x[,i_hit]+working_x[,-i_hit]); gi = gi+p-r-1 Gamma[gi+Seq(1,p-r-1),] = t(working_x[,i_hit]-working_x[,-i_hit]); gi = gi+p-r-1 Gamma[gi+1,] = t(working_x[,i_hit]); gi = gi+1 diff --git a/selectiveInference/man/fixedLassoInf.Rd b/selectiveInference/man/fixedLassoInf.Rd index 31e47b4..26b276f 100644 --- a/selectiveInference/man/fixedLassoInf.Rd +++ b/selectiveInference/man/fixedLassoInf.Rd @@ -108,7 +108,7 @@ is not allowed. \value{ \item{type}{Type of coefficients tested (partial or full)} \item{lambda}{Value of tuning parameter lambda used} -\item{pv}{P-values for active variables} +\item{pv}{One-sided P-values for active variables, uses the fact we have conditioned on the sign.} \item{ci}{Confidence intervals} \item{tailarea}{Realized tail areas (lower and upper) for each confidence interval} \item{vlo}{Lower truncation limits for statistics} diff --git a/selectiveInference/man/fsInf.Rd b/selectiveInference/man/fsInf.Rd index b86584d..613bc5a 100644 --- a/selectiveInference/man/fsInf.Rd +++ b/selectiveInference/man/fsInf.Rd @@ -82,7 +82,7 @@ to alpha/2, and can be used for error-checking purposes. \item{khat}{When type is "active", this is an estimated stopping point declared by \code{\link{forwardStop}}; when type is "aic", this is the value chosen by the modified AIC scheme} -\item{pv}{P-values for active variables} +\item{pv}{One sided P-values for active variables, uses the sign that a variable entered the model with.} \item{ci}{Confidence intervals} \item{tailarea}{Realized tail areas (lower and upper) for each confidence interval} \item{vlo}{Lower truncation limits for statistics} From f6e9a442d6d12326767c37dc4ebc51782c09d5f8 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Wed, 6 Apr 2016 23:23:06 -0700 Subject: [PATCH 134/493] removing tmvtnorm dependency in DESCRIPTION --- selectiveInference/DESCRIPTION | 1 - 1 file changed, 1 deletion(-) diff --git a/selectiveInference/DESCRIPTION b/selectiveInference/DESCRIPTION index af80d99..58232f1 100644 --- a/selectiveInference/DESCRIPTION +++ b/selectiveInference/DESCRIPTION @@ -9,7 +9,6 @@ Maintainer: Rob Tibshirani Depends: glmnet, intervals, - tmvtnorm, survival Suggests: Rmpfr From 235dfc988cd2ed964cdfa7fc8670a89cedefbea9 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 7 Apr 2016 00:41:57 -0700 Subject: [PATCH 135/493] a few questions about logit and cox, edited examples for logit and cox --- selectiveInference/R/funs.fixedCox.R | 6 ++++++ selectiveInference/R/funs.fixedLogit.R | 1 + selectiveInference/man/fixedLassoInf.Rd | 8 ++++---- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/selectiveInference/R/funs.fixedCox.R b/selectiveInference/R/funs.fixedCox.R index 82eeb61..f0419b8 100644 --- a/selectiveInference/R/funs.fixedCox.R +++ b/selectiveInference/R/funs.fixedCox.R @@ -50,6 +50,11 @@ b1= -(mydiag(s2)%*%MM)%*%s2*lambda # compute p-values + +# JT: are we sure the signs of these are correctly handled? +# two sided p-values numerically agree with python but +# the one sided p-values are a bit off + for(jj in 1:length(bbar)){ vj=rep(0,length(bbar));vj[jj]=1 @@ -66,6 +71,7 @@ b1= -(mydiag(s2)%*%MM)%*%s2*lambda tailarea[jj,] = junk2$tailarea } + # JT: these don't seem to be the real one-step estimators fit0=coxph(Surv(y,status)~x[,m]) coef0=fit0$coef se0=sqrt(diag(fit0$var)) diff --git a/selectiveInference/R/funs.fixedLogit.R b/selectiveInference/R/funs.fixedLogit.R index ea476b1..e1510ab 100644 --- a/selectiveInference/R/funs.fixedLogit.R +++ b/selectiveInference/R/funs.fixedLogit.R @@ -98,6 +98,7 @@ fixedLogitLassoInf=function(x,y,beta,lambda,alpha=.1, type=c("partial"), tol.bet tailarea[jj,] = junk2$tailarea } + # JT: these are not the one step estimators but they are close fit0=glm(y~x[,m],family="binomial") sfit0=summary(fit0) coef0=fit0$coef[-1] diff --git a/selectiveInference/man/fixedLassoInf.Rd b/selectiveInference/man/fixedLassoInf.Rd index 26b276f..ab8c71e 100644 --- a/selectiveInference/man/fixedLassoInf.Rd +++ b/selectiveInference/man/fixedLassoInf.Rd @@ -211,10 +211,10 @@ set.seed(43) # extract coef for a given lambda; note the 1/n factor! # (and here we DO include the intercept term) lambda = .8 - beta = coef(gfit, s=lambda/n, exact=TRUE) + beta_hat = coef(gfit, s=lambda/n, exact=TRUE) # compute fixed lambda p-values and selection intervals - out = fixedLassoInf(x,y,beta,lambda,family="binomial") + out = fixedLassoInf(x,y,beta_hat,lambda,family="binomial") out #Cox model @@ -238,10 +238,10 @@ status=sample(c(0,1),size=n,replace=T) # extract coef for a given lambda; note the 1/n factor! lambda = 1.5 - beta = as.numeric(coef(gfit, s=lambda/n, exact=TRUE)) + beta_hat = as.numeric(coef(gfit, s=lambda/n, exact=TRUE)) # compute fixed lambda p-values and selection intervals - out = fixedLassoInf(x,tim,beta,lambda,status=status,family="cox") + out = fixedLassoInf(x,tim,beta_hat,lambda,status=status,family="cox") out } \ No newline at end of file From 5bb52cd6d51ebfb23d94ce1c9d6a35b8c002a3e3 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 7 Apr 2016 00:42:52 -0700 Subject: [PATCH 136/493] another renaming of beta to beta_hat in examples --- selectiveInference/man/fixedLassoInf.Rd | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/selectiveInference/man/fixedLassoInf.Rd b/selectiveInference/man/fixedLassoInf.Rd index ab8c71e..43cf2c3 100644 --- a/selectiveInference/man/fixedLassoInf.Rd +++ b/selectiveInference/man/fixedLassoInf.Rd @@ -184,10 +184,10 @@ gfit = glmnet(xs,y,standardize=FALSE) # extract coef for a given lambda; note the 1/n factor! # (and we don't save the intercept term) lambda = .8 -beta = coef(gfit, s=lambda/n, exact=TRUE)[-1] +beta_hat = coef(gfit, s=lambda/n, exact=TRUE)[-1] # compute fixed lambda p-values and selection intervals -out = fixedLassoInf(xs,y,beta,lambda,sigma=sigma) +out = fixedLassoInf(xs,y,beta_hat,lambda,sigma=sigma) #rescale conf points to undo the penalty factor out$ci=t(scale(t(out$ci),FALSE,pf[out$vars])) From 3ad8c5f974cd4705cc0843bceaf027dd7bb146c5 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 7 Apr 2016 22:35:38 -0700 Subject: [PATCH 137/493] adding coef0 and sd to output for use in summary --- selectiveInference/R/funs.fixed.R | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 8948a10..4263c0b 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -126,7 +126,7 @@ else{ pv[j] = a$pv vlo[j] = a$vlo * mj # Unstandardize (mult by norm of vj) vup[j] = a$vup * mj # Unstandardize (mult by norm of vj) - vmat[j,] = vj * mj # Unstandardize (mult by norm of vj) + vmat[j,] = vj * mj * sign[j] # Unstandardize (mult by norm of vj) a = poly.int(y,G,u,vj,sigma,alpha,gridrange=gridrange, flip=(sign[j]==-1),bits=bits) @@ -137,6 +137,8 @@ else{ out = list(type=type,lambda=lambda,pv=pv,ci=ci, tailarea=tailarea,vlo=vlo,vup=vup,vmat=vmat,y=y, vars=vars,sign=sign,sigma=sigma,alpha=alpha, + sd=sigma*sqrt(rowSums(vmat^2)), + coef0=vmat%*%y, call=this.call) class(out) = "fixedLassoInf" return(out) @@ -197,8 +199,8 @@ print.fixedLassoInf <- function(x, tailarea=TRUE, ...) { cat(sprintf("\nTesting results at lambda = %0.3f, with alpha = %0.3f\n",x$lambda,x$alpha)) cat("",fill=T) tab = cbind(x$vars, - round(x$sign*x$vmat%*%x$y,3), - round(x$sign*x$vmat%*%x$y/(x$sigma*sqrt(rowSums(x$vmat^2))),3), + round(x$coef0,3), + round(x$coef0 / x$sd,3), round(x$pv,3),round(x$ci,3)) colnames(tab) = c("Var", "Coef", "Z-score", "P-value", "LowConfPt", "UpConfPt") if (tailarea) { From 89034879ed92a4729414e31b6cda20fa3c2f2dd4 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Fri, 8 Apr 2016 11:21:38 -0700 Subject: [PATCH 138/493] BF: fixed a bug in onestep estimator, reporting onestep estimator and its estimated covariance. everything except p-values match the python code now --- selectiveInference/R/funs.fixedLogit.R | 37 ++++++++++++++------------ 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/selectiveInference/R/funs.fixedLogit.R b/selectiveInference/R/funs.fixedLogit.R index e1510ab..08a2dc5 100644 --- a/selectiveInference/R/funs.fixedLogit.R +++ b/selectiveInference/R/funs.fixedLogit.R @@ -45,7 +45,7 @@ fixedLogitLassoInf=function(x,y,beta,lambda,alpha=.1, type=c("partial"), tol.bet #check KKT z=etahat+(y-prhat)/ww - g= t(x)%*%w%*%(z-etahat)/lambda + g= t(x)%*%w%*%(z-etahat)/lambda # negative gradient scaled by lambda if (any(abs(g) > 1+tol.kkt) ) warning(paste("Solution beta does not satisfy the KKT conditions", "(to within specified tolerances)")) @@ -63,15 +63,18 @@ fixedLogitLassoInf=function(x,y,beta,lambda,alpha=.1, type=c("partial"), tol.bet #constraints for active variables MM=solve(t(xxm)%*%w%*%xxm) - - bbar=(bhat-lam2m%*%MM%*%s2) - + gm = c(0,-g[vars]*lambda) # gradient at LASSO solution, first entry is 0 because intercept is unpenalized + # at exact LASSO solution it should be s2[-1] + dbeta = MM %*% gm + + # bbar=(bhat+lam2m%*%MM%*%s2) # JT: this is wrong, shouldn't use sign of intercept anywhere... + bbar = bhat - dbeta - A1=-(mydiag(s2))[-1,-1] - b1= ((mydiag(s2)%*%MM)%*%s2*lambda)[-1] - - tol.poly = 0.01 - if (max(A1 %*% bbar[-1] - b1) > tol.poly) + A1=-(mydiag(s2))[-1,] + b1= (s2 * dbeta)[-1] + + tol.poly = 0.01 + if (max((A1 %*% bbar)[-1] - b1) > tol.poly) stop(paste("Polyhedral constraints not satisfied; you must recompute beta", "more accurately. With glmnet, make sure to use exact=TRUE in coef(),", "and check whether the specified value of lambda is too small", @@ -82,17 +85,16 @@ fixedLogitLassoInf=function(x,y,beta,lambda,alpha=.1, type=c("partial"), tol.bet for(jj in 1:sum(m)){ - vj=c(rep(0,sum(m)));vj[jj]=1 -# compute p-values - junk=mypoly.pval.lee(bbar[-1],A1,b1,vj,MM[-1,-1]) + vj=c(rep(0,sum(m)+1));vj[jj+1]=1 + # compute p-values + junk=mypoly.pval.lee(bbar,A1,b1,vj,MM) pv[jj] = junk$pv - vlo[jj]=junk$vlo vup[jj]=junk$vup sd[jj]=junk$sd # junk2=mypoly.int.lee(bbar[-1], A1, b1,vj,MM[-1,-1],alpha=.1) - junk2=mypoly.int.lee(bbar[-1],vj,vlo[jj],vup[jj],sd[jj],alpha=.1) + junk2=mypoly.int.lee(bbar,vj,vlo[jj],vup[jj],sd[jj],alpha=.1) ci[jj,]=junk2$int tailarea[jj,] = junk2$tailarea @@ -101,14 +103,15 @@ fixedLogitLassoInf=function(x,y,beta,lambda,alpha=.1, type=c("partial"), tol.bet # JT: these are not the one step estimators but they are close fit0=glm(y~x[,m],family="binomial") sfit0=summary(fit0) - coef0=fit0$coef[-1] - se0=sqrt(diag(sfit0$cov.scaled)[-1]) + coef0=bbar[-1] #fit0$coef[-1] + se0=sqrt(diag(MM)[-1]) # sfit0$cov.scaled)[-1]) zscore0=coef0/se0 out = list(type=type,lambda=lambda,pv=pv,ci=ci, tailarea=tailarea,vlo=vlo,vup=vup,sd=sd, vars=vars,alpha=alpha,coef0=coef0,zscore0=zscore0, - call=this.call) + call=this.call, + info.matrix=MM) # info.matrix is output just for debugging purposes at the moment class(out) = "fixedLogitLassoInf" return(out) From c9d184b42f6f6477b69338c281906959c1060407 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Fri, 8 Apr 2016 22:08:02 -0700 Subject: [PATCH 139/493] need to use sign in poly pval for correct one-sided pvalues --- selectiveInference/R/funs.fixedCox.R | 2 +- selectiveInference/R/funs.fixedLogit.R | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/selectiveInference/R/funs.fixedCox.R b/selectiveInference/R/funs.fixedCox.R index f0419b8..c23b5a3 100644 --- a/selectiveInference/R/funs.fixedCox.R +++ b/selectiveInference/R/funs.fixedCox.R @@ -56,7 +56,7 @@ b1= -(mydiag(s2)%*%MM)%*%s2*lambda # the one sided p-values are a bit off for(jj in 1:length(bbar)){ - vj=rep(0,length(bbar));vj[jj]=1 + vj=rep(0,length(bbar));vj[jj]=s2[jj] junk=mypoly.pval.lee(bbar,A1,b1,vj,MM) diff --git a/selectiveInference/R/funs.fixedLogit.R b/selectiveInference/R/funs.fixedLogit.R index 08a2dc5..a16c41d 100644 --- a/selectiveInference/R/funs.fixedLogit.R +++ b/selectiveInference/R/funs.fixedLogit.R @@ -85,7 +85,7 @@ fixedLogitLassoInf=function(x,y,beta,lambda,alpha=.1, type=c("partial"), tol.bet for(jj in 1:sum(m)){ - vj=c(rep(0,sum(m)+1));vj[jj+1]=1 + vj=c(rep(0,sum(m)+1));vj[jj+1]=s2[jj+1] # compute p-values junk=mypoly.pval.lee(bbar,A1,b1,vj,MM) pv[jj] = junk$pv From 79a55636c7331a8c4be978984f614112bc419b41 Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Sat, 21 May 2016 15:43:52 -0700 Subject: [PATCH 140/493] old datasplit simulation --- forLater/josh/sim.datasplit.R | 41 ++++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 18 deletions(-) diff --git a/forLater/josh/sim.datasplit.R b/forLater/josh/sim.datasplit.R index be077a1..0e19335 100644 --- a/forLater/josh/sim.datasplit.R +++ b/forLater/josh/sim.datasplit.R @@ -4,30 +4,31 @@ source("../../selectiveInference/R/funs.groupfs.R") source("../../selectiveInference/R/funs.quadratic.R") source("../../selectiveInference/R/funs.common.R") -set.seed(1) -niters <- 400 +set.seed(19) +niters <- 500 known <- FALSE -n <- 100 +n <- 50 p <- 100 -maxsteps <- 10 +maxsteps <- 8 sparsity <- 5 -snr <- 1 +snr <- 2 rho <- 0.1 -ratio <- 0.7 -ratio2 <- 0.85 +ratio <- 0.6 +ratio2 <- 0.8 train <- 1:(ratio*n) test <- setdiff(1:n, train) train2 <- 1:(ratio2*n) -test <- setdiff(1:n, train2) +test2 <- setdiff(1:n, train2) index <- 1:p -instance <- function(n, p, sparsity, snr, maxsteps, rho) { - - x <- matrix(rnorm(n*p), nrow=n) +x <- matrix(rnorm(n*p), nrow=n) if (rho != 0) { z <- matrix(rep(t(rnorm(n)), p), nrow = n) x <- sqrt(1-rho)*x + sqrt(rho)*z } + +instance <- function(n, p, sparsity, snr, maxsteps, rho) { + y <- rnorm(n) if (sparsity > 0) { @@ -47,11 +48,11 @@ instance <- function(n, p, sparsity, snr, maxsteps, rho) { xte2 <- x[test2, ] if (known) { - trfit <- groupfs(xtr, ytr, index, maxsteps=maxsteps, sigma=1, aicstop=1, k = 2*log(p)) - fit <- groupfs(xtr2, ytr2, index, maxsteps=maxsteps, sigma=1, aicstop=1, k = 2*log(p)) + trfit <- groupfs(xtr, ytr, index, maxsteps=maxsteps, sigma=1, aicstop=1, k = log(length(train))) + fit <- groupfs(xtr2, ytr2, index, maxsteps=maxsteps, sigma=1, aicstop=1, k = log(length(train2))) } else { - trfit <- groupfs(xtr, ytr, index, maxsteps=maxsteps, aicstop=1, k = log(length(train))) - fit <- groupfs(xtr2, ytr2, index, maxsteps=maxsteps, aicstop=1, k = log(length(train2))) + trfit <- groupfs(xtr, ytr, index, maxsteps=maxsteps, aicstop=1, k = 2*log(p)) + fit <- groupfs(xtr2, ytr2, index, maxsteps=maxsteps, aicstop=1, k = 2*log(p)) } trcols <- which(1:p %in% trfit$action) @@ -59,11 +60,12 @@ instance <- function(n, p, sparsity, snr, maxsteps, rho) { tepv <- summary(lm(yte~xte[, trcols]-1))$coefficients[,4] tepv2 <- summary(lm(yte2~xte2[, tr2cols]-1))$coefficients[,4] names(tepv) <- as.character(sort(trfit$action)) - names(tepv2) <- as.character(sort(trfit$action)) + names(tepv2) <- as.character(sort(fit$action)) pv <- groupfsInf(fit) trpv <- groupfsInf(trfit) return(list(vars = fit$action, pvals = pv$pv, splitvars = sort(trfit$action), splitpvals = tepv, + splitvars2 = sort(fit$action), splitpvals2 = tepv2, trpvals = trpv$pv)) } @@ -75,9 +77,12 @@ vars <- do.call(c, list(output[1,])) pvals <- do.call(c, list(output[2,])) splitvars <- do.call(c, list(output[3,])) splitpvals <- do.call(c, list(output[4,])) -trpvals <- do.call(c, list(output[5,])) +splitvars2 <- do.call(c, list(output[5,])) +splitpvals2 <- do.call(c, list(output[6,])) +trpvals <- do.call(c, list(output[7,])) -save(vars, pvals, splitvars, splitpvals, trpvals, +save(vars, pvals, splitvars, splitpvals, + splitvars2, splitpvals2, trpvals, file = paste0("results/datasplit", "_", ifelse(known, "TC", "TF"), "_n", n, From ad2bdb1c199c298658d49d0210264c8e18fc3b94 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Wed, 8 Jun 2016 11:30:51 -0700 Subject: [PATCH 141/493] selectiveInference/R/funs.fixedCox.R --- selectiveInference/R/funs.fixedCox.R | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/selectiveInference/R/funs.fixedCox.R b/selectiveInference/R/funs.fixedCox.R index c23b5a3..17c2603 100644 --- a/selectiveInference/R/funs.fixedCox.R +++ b/selectiveInference/R/funs.fixedCox.R @@ -29,7 +29,9 @@ s2=sign(bhat) #check KKT - aaa=coxph(Surv(y,status)~x[,m],init=bhat,iter.max=0) + aaa=coxph(Surv(y,status)~x[,m],init=bhat,iter.max=0) # this gives the Cox model at exactly bhat + # so when we compute gradient and score + # we are evaluating at the LASSO solution res=residuals(aaa,type="score") if(!is.matrix(res)) res=matrix(res,ncol=1) scor=colSums(res) @@ -39,11 +41,11 @@ scor=colSums(res) warning(paste("Solution beta does not satisfy the KKT conditions", "(to within specified tolerances)")) - +# Hessian of partial likelihood at the LASSO solution MM=vcov(aaa) - bbar=(bhat+lambda*MM%*%s2) - A1=-(mydiag(s2)) +bbar=(bhat+lambda*MM%*%s2) +A1=-(mydiag(s2)) b1= -(mydiag(s2)%*%MM)%*%s2*lambda temp=max(A1%*%bbar-b1) From 1a777033bdac83eb7eb474853d693000460d5f0d Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Wed, 8 Jun 2016 11:31:41 -0700 Subject: [PATCH 142/493] added comments to Cox --- selectiveInference/R/funs.fixedCox.R | 1 + 1 file changed, 1 insertion(+) diff --git a/selectiveInference/R/funs.fixedCox.R b/selectiveInference/R/funs.fixedCox.R index 17c2603..43bd080 100644 --- a/selectiveInference/R/funs.fixedCox.R +++ b/selectiveInference/R/funs.fixedCox.R @@ -32,6 +32,7 @@ s2=sign(bhat) aaa=coxph(Surv(y,status)~x[,m],init=bhat,iter.max=0) # this gives the Cox model at exactly bhat # so when we compute gradient and score # we are evaluating at the LASSO solution + # naming of variables could be improved... res=residuals(aaa,type="score") if(!is.matrix(res)) res=matrix(res,ncol=1) scor=colSums(res) From 05347b62d9a688930a19e0187205f7fe86915df2 Mon Sep 17 00:00:00 2001 From: tibshirani Date: Wed, 8 Jun 2016 16:38:11 -0700 Subject: [PATCH 143/493] rob added logistic+cox features --- selectiveInference/NAMESPACE | 13 +- selectiveInference/R/funs.constraints.R | 186 --------------- selectiveInference/R/funs.fixedCox.R | 2 +- selectiveInference/R/funs.fixedLogit.R | 2 +- selectiveInference/R/funs.fs.R | 286 +----------------------- selectiveInference/man/fixedLassoInf.Rd | 11 +- selectiveInference/man/fsInf_maxZ.Rd | 86 ------- selectiveInference/src/symbols.rds | Bin 274 -> 367 bytes 8 files changed, 28 insertions(+), 558 deletions(-) delete mode 100644 selectiveInference/R/funs.constraints.R delete mode 100644 selectiveInference/man/fsInf_maxZ.Rd diff --git a/selectiveInference/NAMESPACE b/selectiveInference/NAMESPACE index 4d28398..4a764f9 100644 --- a/selectiveInference/NAMESPACE +++ b/selectiveInference/NAMESPACE @@ -1,19 +1,18 @@ export(lar,fs, - larInf,fsInf,fsInf_maxZ, + larInf,fsInf, coef.lar,coef.fs, predict.lar,predict.fs, print.lar,print.fs, print.larInf,print.fsInf, plot.lar,plot.fs, fixedLassoInf,print.fixedLassoInf, - # fixedLogitLassoInf,print.fixedLogitLassoInf, - # fixedCoxLassoInf,print.fixedCoxLassoInf, +# fixedLogitLassoInf,print.fixedLogitLassoInf, +# fixedCoxLassoInf,print.fixedCoxLassoInf, forwardStop, estimateSigma, manyMeans,print.manyMeans, groupfs,groupfsInf, - scaleGroups,factorDesign, - sample_from_constraints + scaleGroups,factorDesign ) S3method("coef", "lar") @@ -26,7 +25,6 @@ S3method("predict", "fs") S3method("print", "fs") S3method("plot", "fs") S3method("print", "fsInf") -S3method("print", "fsInf_maxZ") S3method("print", "fixedLassoInf") S3method("print", "fixedLogitLassoInf") S3method("print", "fixedCoxLassoInf") @@ -37,8 +35,9 @@ S3method("print", "groupfsInf") useDynLib("selectiveInference") import(glmnet) import(intervals) +import(survival) importFrom("graphics", abline, axis, matplot) -importFrom("stats", dnorm, lsfit, pexp, pnorm, predict, +importFrom("stats", dnorm, lsfit, pexp, pnorm, predict, qnorm, rnorm, sd, uniroot, dchisq, model.matrix, pchisq) importFrom("stats", "coef", "df", "lm", "pf") diff --git a/selectiveInference/R/funs.constraints.R b/selectiveInference/R/funs.constraints.R deleted file mode 100644 index 3bf6b77..0000000 --- a/selectiveInference/R/funs.constraints.R +++ /dev/null @@ -1,186 +0,0 @@ -# -# Some utilities for affine constraints -# - -# -# compute the square-root and inverse square-root of a non-negative -# definite matrix -# - -factor_covariance = function(S, rank=NA) { - if (is.na(rank)) { - rank = nrow(S) - } - svd_X = svd(S, nu=rank, nv=rank) - sqrt_cov = t(sqrt(svd_X$d[1:rank]) * t(svd_X$u[,1:rank])) - sqrt_inv = t((1. / sqrt(svd_X$d[1:rank])) * t(svd_X$u[,1:rank])) - - return(list(sqrt_cov=sqrt_cov, sqrt_inv=sqrt_inv)) -} - -# -# from a constraint, return an equivalent -# constraint and a whitening and inverse -# whitening map -# - -# law is Z \sim N(mean_param, covariance) subject to constraints linear_part %*% Z \leq offset - -whiten_constraint = function(linear_part, offset, mean_param, covariance) { - - factor_cov = factor_covariance(covariance) - sqrt_cov = factor_cov$sqrt_cov - sqrt_inv = factor_cov$sqrt_inv - - new_A = linear_part %*% sqrt_cov - new_b = offset - linear_part %*% mean_param - - # rescale rows to have length 1 - - scaling = sqrt(apply(new_A^2, 1, sum)) - new_A = new_A / scaling - new_b = new_b / scaling - - # TODO: check these functions will behave when Z is a matrix. - - inverse_map = function(Z) { - # broadcasting here - # the columns of Z are same length as mean_param - return(sqrt_cov %*% Z + as.numeric(mean_param)) - } - - forward_map = function(W) { - return(sqrt_inv %*% (W - mean_param)) - } - - return(list(linear_part=new_A, - offset=new_b, - inverse_map=inverse_map, - forward_map=forward_map)) -} - -# -# sample from the law -# -# Z \sim N(mean_param, covariance) subject to constraints linear_part %*% Z \leq offset - -sample_from_constraints = function(linear_part, - offset, - mean_param, - covariance, - initial_point, # point must be feasible for constraints - ndraw=8000, - burnin=2000, - accept_reject_params=NA) #TODO: implement accept reject check -{ - - whitened_con = whiten_constraint(linear_part, - offset, - mean_param, - covariance) - white_initial = whitened_con$forward_map(initial_point) - -# # try 100 draws of accept reject -# # if we get more than 50 good draws, then just return a smaller sample -# # of size (burnin+ndraw)/5 - -# if accept_reject_params: -# use_hit_and_run = False -# num_trial, min_accept, num_draw = accept_reject_params - -# def _accept_reject(sample_size, linear_part, offset): -# Z_sample = np.random.standard_normal((100, linear_part.shape[1])) -# constraint_satisfied = (np.dot(Z_sample, linear_part.T) - -# offset[None,:]).max(1) < 0 -# return Z_sample[constraint_satisfied] - -# Z_sample = _accept_reject(100, -# white_con.linear_part, -# white_con.offset) - -# if Z_sample.shape[0] >= min_accept: -# while True: -# Z_sample = np.vstack([Z_sample, -# _accept_reject(num_draw / 5, -# white_con.linear_part, -# white_con.offset)]) -# if Z_sample.shape[0] > num_draw: -# break -# white_samples = Z_sample -# else: -# use_hit_and_run = True -# else: -# use_hit_and_run = True - - use_hit_and_run = TRUE - - if (use_hit_and_run) { - - white_linear = whitened_con$linear_part - white_offset = whitened_con$offset - - # Inf cannot be used in C code - # In theory, these rows can be dropped - - rows_to_keep = white_offset < Inf - white_linear = white_linear[rows_to_keep,,drop=FALSE] - white_offset = white_offset[rows_to_keep] - - nstate = length(white_initial) - if (sum(rows_to_keep) > 0) { - if (ncol(white_linear) > 1) { - nconstraint = nrow(white_linear) - - directions = rbind(diag(rep(1, nstate)), - matrix(rnorm(nstate^2), nstate, nstate)) - - # normalize rows to have length 1 - - scaling = apply(directions, 1, function(x) { return(sqrt(sum(x^2))) }) - directions = directions / scaling - ndirection = nrow(directions) - - alphas = directions %*% t(white_linear) - U = white_linear %*% white_initial - white_offset - Z_sample = matrix(rep(0, nstate * ndraw), nstate, ndraw) - - result = .C("sample_truncnorm_white", - as.numeric(white_initial), - as.numeric(U), - as.numeric(t(directions)), - as.numeric(t(alphas)), - output=Z_sample, - as.integer(nconstraint), - as.integer(ndirection), - as.integer(nstate), - as.integer(burnin), - as.integer(ndraw), - package="selectiveInference") - Z_sample = result$output - } else { # the distribution is univariate - # we can just work out upper and lower limits - - white_linear = as.numeric(white_linear) - pos = (white_linear * white_offset) >= 0 - neg = (white_linear * white_offset) <= 0 - if (sum(pos) > 0) { - U = min((white_offset / white_linear)[pos]) - } else { - U = Inf - } - if (sum(neg) < 0) { - L = max((white_offset / white_linear)[neg]) - } else { - L = -Inf - } - Z_sample = matrix(qnorm((pnorm(U) - pnorm(L)) * runif(ndraw) + pnorm(L)), 1, ndraw) - } - } else { - Z_sample = matrix(rnorm(nstate * ndraw), nstate, ndraw) - } - } - - Z = t(whitened_con$inverse_map(Z_sample)) - return(Z) -} - diff --git a/selectiveInference/R/funs.fixedCox.R b/selectiveInference/R/funs.fixedCox.R index c23b5a3..d32a777 100644 --- a/selectiveInference/R/funs.fixedCox.R +++ b/selectiveInference/R/funs.fixedCox.R @@ -25,7 +25,7 @@ if( sum(status==0)+sum(status==1)!=length(y)) stop("status vector must have valu vars=which(m) if(sum(m)>0){ bhat=beta[beta!=0] #penalized coefs just for active variables -s2=sign(bhat) + s2=sign(bhat) #check KKT diff --git a/selectiveInference/R/funs.fixedLogit.R b/selectiveInference/R/funs.fixedLogit.R index a16c41d..fb4092d 100644 --- a/selectiveInference/R/funs.fixedLogit.R +++ b/selectiveInference/R/funs.fixedLogit.R @@ -74,7 +74,7 @@ fixedLogitLassoInf=function(x,y,beta,lambda,alpha=.1, type=c("partial"), tol.bet b1= (s2 * dbeta)[-1] tol.poly = 0.01 - if (max((A1 %*% bbar)[-1] - b1) > tol.poly) + if (max((A1 %*% bbar) - b1) > tol.poly) stop(paste("Polyhedral constraints not satisfied; you must recompute beta", "more accurately. With glmnet, make sure to use exact=TRUE in coef(),", "and check whether the specified value of lambda is too small", diff --git a/selectiveInference/R/funs.fs.R b/selectiveInference/R/funs.fs.R index b75923d..b5ee511 100644 --- a/selectiveInference/R/funs.fs.R +++ b/selectiveInference/R/funs.fs.R @@ -27,11 +27,10 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, ##### # Find the first variable to enter and its sign - working_scale = sqrt(colSums(x^2)) - working_x = scale(x,center=F,scale=working_scale) - working_score = t(working_x)%*%y - i_hit = which.max(abs(working_score)) # Hitting coordinate - sign_hit = Sign(working_score[i_hit]) # Sign + working_x = scale(x,center=F,scale=sqrt(colSums(x^2))) + score = t(working_x)%*%y + i_hit = which.max(abs(score)) # Hitting coordinate + sign_hit = Sign(score[i_hit]) # Sign signs = sign_hit # later signs will be appended to `signs` if (verbose) { @@ -49,43 +48,19 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, df = numeric(buf) # Degrees of freedom beta = matrix(0,p,buf) # FS estimates - # Buffered objects for selective maxZ test - - offset_pos_maxZ = matrix(Inf, p, buf) # upper bounds for selective maxZ - offset_neg_maxZ = matrix(Inf, p, buf) # lower bounds for selective maxZ - scale_maxZ = matrix(0, p, buf) # lower bounds for selective maxZ - realized_maxZ = numeric(buf) # lower bounds for selective maxZ - action[1] = i_hit df[1] = 0 beta[,1] = 0 - ##### - # Variables needed to compute truncation limits for - # selective maxZ test - - realized_maxZ[1] = c(sign_hit * working_score[i_hit]) - offset_pos_maxZ[,1] = Inf - offset_neg_maxZ[,1] = Inf - scale_maxZ[,1] = working_scale - working_resid_maxZ = y - x %*% beta[,1] - # Gamma matrix! gbuf = max(2*p*3,2000) # Space for 3 steps, at least gi = 0 # index into rows of Gamma matrix - zi = 0 # index into rows of Gamma_maxZ matrix Gamma = matrix(0,gbuf,n) Gamma[gi+Seq(1,p-1),] = t(sign_hit*working_x[,i_hit]+working_x[,-i_hit]); gi = gi+p-1 Gamma[gi+Seq(1,p-1),] = t(sign_hit*working_x[,i_hit]-working_x[,-i_hit]); gi = gi+p-1 Gamma[gi+1,] = t(sign_hit*working_x[,i_hit]); gi = gi+1 - # Gamma_maxZ is the rbind - # of residualized X_inactive's - - Gamma_maxZ = matrix(0,gbuf,n) - Gamma_maxZ[zi+Seq(1,p),] = t(x); zi = zi+p - # nconstraint nconstraint = numeric(buf) vreg = matrix(0,buf,n) @@ -128,45 +103,23 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, beta = cbind(beta,matrix(0,p,buf)) nconstraint = c(nconstraint,numeric(buf)) vreg = rbind(vreg,matrix(0,buf,n)) - - offset_pos_maxZ = cbind(offset_pos_maxZ, matrix(0, p, buf)) - offset_neg_maxZ = cbind(offset_neg_maxZ, matrix(0, p, buf)) - scale_maxZ = cbind(scale_maxZ, matrix(0, p, buf)) - realized_maxZ = c(realized_maxZ, numeric(buf)) } # Key quantities for the next entry - keepLs=backsolve(R,t(Q_active)%*%X_inactive) - - prev_scale = working_scale[-i_hit] # this variable used later for maxZ X_inactive_resid = X_inactive - X_active %*% keepLs - working_scale = sqrt(colSums(X_inactive_resid^2)) # this variable used later for maxZ - working_x = scale(X_inactive_resid,center=F,scale=working_scale) - working_score = as.numeric(t(working_x)%*%y) + working_x = scale(X_inactive_resid,center=F,scale=sqrt(colSums(X_inactive_resid^2))) + score = as.numeric(t(working_x)%*%y) - beta_cur = backsolve(R,t(Q_active)%*%y) # must be computed before the break - # so we have it if we have - # completed the path - # If the inactive set is empty, nothing will hit if (r==min(n-intercept,p)) break # Otherwise find the next hitting time else { - sign_score = Sign(working_score) - abs_score = sign_score * working_score + sign_score = Sign(score) + abs_score = sign_score * score i_hit = which.max(abs_score) sign_hit = sign_score[i_hit] - # keep track of necessary quantities for selective maxZ - - offset_shift = t(X_inactive) %*% (y - working_resid_maxZ) - realized_Z_scaled = realized_maxZ[k-1] * prev_scale - offset_pos_maxZ[I,k] = realized_Z_scaled + offset_shift - offset_neg_maxZ[I,k] = realized_Z_scaled - offset_shift - scale_maxZ[I,k] = working_scale - - working_resid_maxZ = y - X_active %*% beta_cur } # Record the solution @@ -174,22 +127,12 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, action[k] = I[i_hit] df[k] = r - beta[A,k] = beta_cur + beta[A,k] = backsolve(R,t(Q_active)%*%y) - # store the X_inactive_resid in Gamma_maxZ - - if (gi + p-r > nrow(Gamma_maxZ)) Gamma_maxZ = rbind(Gamma_maxZ,matrix(0,p-r,n)) - Gamma_maxZ[zi+Seq(1,p-r),] = t(X_inactive_resid); zi = zi+p-r - - # update maxZ variable - realized_maxZ[k] = sign_hit * working_score[i_hit] - # Gamma matrix! - if (gi + 2*p > nrow(Gamma)) Gamma = rbind(Gamma,matrix(0,2*p+gbuf,n)) working_x = t(sign_score*t(working_x)) - #Gamma[gi+Seq(1,p-r),] = t(working_x); gi = gi+p-r - Gamma[gi+Seq(1,p-r-1),] = t(working_x[,i_hit]+working_x[,-i_hit]); gi = gi+p-r-1 + Gamma[gi+Seq(1,p-r),] = t(working_x); gi = gi+p-r Gamma[gi+Seq(1,p-r-1),] = t(working_x[,i_hit]-working_x[,-i_hit]); gi = gi+p-r-1 Gamma[gi+1,] = t(working_x[,i_hit]); gi = gi+1 @@ -229,11 +172,6 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, nconstraint = nconstraint[Seq(1,k-1)] vreg = vreg[Seq(1,k-1),,drop=FALSE] - offset_pos_maxZ = offset_pos_maxZ[,Seq(1,k-1),drop=FALSE] - offset_neg_maxZ = offset_neg_maxZ[,Seq(1,k-1),drop=FALSE] - scale_maxZ = scale_maxZ[,Seq(1,k-1),drop=FALSE] - Gamma_maxZ = Gamma_maxZ[Seq(1,zi),,drop=FALSE] - # If we reached the maximum number of steps if (k>maxsteps) { if (verbose) { @@ -251,8 +189,7 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, # Record the least squares solution. Note that # we have already computed this bls = rep(0,p) - if(length(keepLs)>0) bls[A] = keepLs - + if(length(keepLs)>0) bls[A] = keepLs } if (verbose) cat("\n") @@ -268,9 +205,7 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, out = list(action=action,sign=signs,df=df,beta=beta, completepath=completepath,bls=bls, Gamma=Gamma,nconstraint=nconstraint,vreg=vreg,x=x,y=y,bx=bx,by=by,sx=sx, - intercept=intercept,normalize=normalize,call=this.call, - offset_pos_maxZ=offset_pos_maxZ,offset_neg_maxZ=offset_neg_maxZ, - scale_maxZ=scale_maxZ,Gamma_maxZ=Gamma_maxZ,realized_maxZ=realized_maxZ) + intercept=intercept,normalize=normalize,call=this.call) class(out) = "fs" return(out) } @@ -437,175 +372,7 @@ fsInf <- function(obj, sigma=NULL, alpha=0.1, k=NULL, type=c("active","all","aic ############################## -############################## - -# selected maxZ tests - -fsInf_maxZ = function(obj, sigma=NULL, alpha=0.1, k=NULL, - ndraw=8000, burnin=2000, verbose=FALSE) { - - this.call = match.call() - - checkargs.misc(sigma=sigma,alpha=alpha,k=k) - - if (class(obj) != "fs") stop("obj must be an object of class fs") - - k = min(k,length(obj$action)) # Round to last step - x = obj$x - y = obj$y - p = ncol(x) - n = nrow(x) - pv = c() - - if (is.null(sigma)) { - # TODO we need a sampler on a unit sphere - if (n >= 2*p) { - oo = obj$intercept - sigma = sqrt(sum(lsfit(x,y,intercept=oo)$res^2)/(n-p-oo)) - } - else { - sigma = sd(y) - warning(paste(sprintf("p > n/2, and sd(y) = %0.3f used as an estimate of sigma;",sigma), - "you may want to use the estimateSigma function")) - } - } - - khat = NULL - - vars = obj$action[1:k] - zi = 0 - for (j in 1:k) { - if(verbose) cat(c("Step=",j),fill=T) - # the inactive set here does not - # include the variable at the j-th step - # so, at j==1, the inactive set is every variable - # at j==2, the inactive set is everything but the first one - - if (j > 1) { - active = vars[1:(j-1)] - inactive = (1:p)[-active] - } else { - inactive = 1:p - } - - collapsed_pos = apply(obj$offset_pos_maxZ[inactive,1:j,drop=FALSE], 1, min) - collapsed_neg = apply(obj$offset_neg_maxZ[inactive,1:j,drop=FALSE], 1, min) - cur_scale = obj$scale_maxZ[,j][inactive] - - # the matrix cur_adjusted_Xt is used to compute (always as length(y) columns) - # the maxZ or maxT for the sampled variables - # - cur_adjusted_Xt = obj$Gamma_maxZ[zi + Seq(1,p-j+1),,drop=FALSE]; zi = zi+p-j+1 # Xt for transpose - - # cur_X is used to enforce conditioning on - # the ever_active sufficient_statistics - - cur_X = obj$x[,inactive,drop=FALSE] - - # now we condition on solution up to now - # this is equivalent to finding vector of - # fitted values up to now and appropriately - # adjusting the box limits - - if (j > 1) { - cur_fitted = predict(obj, s=j) - cur_fitted = cur_fitted - mean(cur_fitted) - cur_offset = as.numeric(t(cur_X) %*% cur_fitted) - } - else { - cur_fitted = rep(0, length(y)) - cur_offset = rep(0, length(inactive)) - } - - final_upper = collapsed_pos - cur_offset - final_lower = -(collapsed_neg + cur_offset) - - # now, we sample from Y_star, a centered Gaussian with covariance sigma^2 I - # subject to the constraint - # t(cur_adjusted_Xt) %*% Y_star < final_upper - # -t(cur_adjusted_Xt) %*% Y_star < -final_lower - - # really, we want the covariance of Y_star to be \sigma^2 (I - cur_P) - # where P is projection on the j-1 previous variables - # but this doesn't matter as everything we do with the samples - # will be a function of (I - cur_P) Y_star and the constraints are - # expressible in terms of (I - cur_P) Y_star because - # we have adjusted X - - # IMPORTANT: after sampling Y_star, we have to add back cur_fitted - - # if n >= p, we could actually just draw cur_adjusted_Xt %*% Y_star - # because this has a simple box constraint - # with a generically non-degenerate covariance - - if (nrow(cur_adjusted_Xt) > length(y)) { - linear_part = rbind(cur_adjusted_Xt, -cur_adjusted_Xt) - offset = c(final_upper, -final_lower) - covariance = diag(rep(sigma^2, length(y))) - mean_param = cur_fitted # rep(0, length(y)) - initial_point = y - - truncated_y = sample_from_constraints(linear_part, - offset, - mean_param, - covariance, - initial_point, - burnin=burnin, - ndraw=ndraw) - - truncated_noise = truncated_y %*% t(cur_adjusted_Xt) - sample_maxZ = apply(abs(t(truncated_noise) / cur_scale), 2, max) - } else { # sample from a smaller dimensional gaussian - if (nrow(cur_adjusted_Xt) > 1) { - linear_part = rbind(diag(rep(1, nrow(cur_adjusted_Xt))), - diag(rep(-1, nrow(cur_adjusted_Xt)))) - covariance = sigma^2 * (cur_adjusted_Xt %*% t(cur_adjusted_Xt)) - offset = c(final_upper, -final_lower) - mean_param = cur_adjusted_Xt %*% cur_fitted # rep(0, nrow(cur_adjusted_Xt)) - initial_point = cur_adjusted_Xt %*% y - } else { - mean_param = as.numeric(sum(as.numeric(cur_adjusted_Xt) * as.numeric(cur_fitted))) - covariance = matrix(sigma^2 * sum(cur_adjusted_Xt^2)) - linear_part = matrix(c(1,-1), 2, 1) - offset = c(final_upper, -final_lower) - initial_point = as.numeric(sum(as.numeric(cur_adjusted_Xt) * as.numeric(y))) - } - truncated_noise = sample_from_constraints(linear_part, - offset, - mean_param, - covariance, - initial_point, - burnin=burnin, - ndraw=ndraw) - sample_maxZ = apply(abs(t(truncated_noise) / cur_scale), 2, max) - - } - - observed_maxZ = obj$realized_maxZ[j] - pval = sum(sample_maxZ > observed_maxZ) / ndraw - pval = 2 * min(pval, 1 - pval) - pv = c(pv, pval) - } - - khat = forwardStop(pv,alpha) - - out = list(pv=pv, - k=k, - khat=khat, - sigma=sigma, - vars=vars, - sign=obj$sign, - alpha=alpha, - realized_maxZ=obj$realized_maxZ, - call=this.call) - class(out) = "fsInf_maxZ" - return(out) -} -############################## -# -# Print methods -# ############################## print.fs <- function(x, ...) { @@ -682,35 +449,6 @@ print.fsInf <- function(x, tailarea=TRUE, ...) { } -print.fsInf_maxZ <- function(obj) { - - cat("\nCall:\n") - dput(obj$call) - - cat(sprintf("\nStandard deviation of noise (specified or estimated) sigma = %0.3f\n", - obj$sigma)) - - cat(sprintf("\nSequential testing results with alpha = %0.3f\n",obj$alpha)) - - tab = cbind(1:length(obj$pv), - obj$vars, - round(obj$sign*obj$realized_maxZ, 3), - round(obj$pv,3)) - colnames(tab) = c("Step", "Var", "Z-score", "P-value") - rownames(tab) = rep("",nrow(tab)) - print(tab) - - cat(sprintf("\nEstimated stopping point from ForwardStop rule = %i\n",obj$khat)) - - invisible() -} - -############################## -# -# Plot methods -# -############################## - plot.fs <- function(x, breaks=TRUE, omit.zeros=TRUE, var.labels=TRUE, ...) { if (x$completepath) { k = length(x$action)+1 diff --git a/selectiveInference/man/fixedLassoInf.Rd b/selectiveInference/man/fixedLassoInf.Rd index 43cf2c3..c5a9912 100644 --- a/selectiveInference/man/fixedLassoInf.Rd +++ b/selectiveInference/man/fixedLassoInf.Rd @@ -10,7 +10,7 @@ fixed value of the tuning parameter lambda } \usage{ fixedLassoInf(x, y, beta, lambda, family = c("gaussian", "binomial", - "cox"),intercept=TRUE, sigma=NULL, alpha=0.1, + "cox"),intercept=TRUE, status=NULL, sigma=NULL, alpha=0.1, type=c("partial","full"), tol.beta=1e-5, tol.kkt=0.1, gridrange=c(-100,100), bits=NULL, verbose=FALSE) } @@ -56,6 +56,7 @@ Significance level for confidence intervals (target is miscoverage alpha/2 in ea Was the lasso problem solved (e.g., by glmnet) with an intercept in the model? Default is TRUE. Must be TRUE for "binomial" family. Not used for 'cox" family, where no intercept is assumed. } +\item{status}{Censoring status for Cox model; 1=failurem 0=censored} \item{type}{Contrast type for p-values and confidence intervals: default is "partial"---meaning that the contrasts tested are the partial population regression coefficients, within the active set of predictors; the alternative is @@ -104,6 +105,10 @@ Then when running glmnet, set standardize=F. See example below. The penalty.factor facility in glmmet-- allowing different penalties lambda for each predictor, is not yet implemented in fixedLassoInf. However you can finesse this--- see the example below. One caveat- using this approach, a penalty factor of zero (forcing a predictor in) is not allowed. + +Note that the coefficients and standard errors reported are unregularized. +Eg for the Gaussian, they are the usual least squares estimates and standard errors +for the model fit to the actice set from the lasso. } \value{ \item{type}{Type of coefficients tested (partial or full)} @@ -203,7 +208,7 @@ set.seed(43) x=scale(x,TRUE,TRUE) beta = c(3,2,rep(0,p-2)) - y = x%*%beta + sigma*rnorm(n) + y = x\%*\%beta + sigma*rnorm(n) y=1*(y>mean(y)) # first run glmnet gfit = glmnet(x,y,standardize=FALSE,family="binomial") @@ -229,7 +234,7 @@ set.seed(43) beta = c(3,2,rep(0,p-2)) tim = as.vector(x\%*\%beta + sigma*rnorm(n)) tim= tim-min(tim)+1 -status=sample(c(0,1),size=n,replace=T) +status=sample(c(0,1),size=n,replace=TRUE) # first run glmnet diff --git a/selectiveInference/man/fsInf_maxZ.Rd b/selectiveInference/man/fsInf_maxZ.Rd deleted file mode 100644 index 89aa886..0000000 --- a/selectiveInference/man/fsInf_maxZ.Rd +++ /dev/null @@ -1,86 +0,0 @@ -\name{fsInf_maxZ} -\alias{fsInf_maxZ} -\title{ -Selective inference for forward stepwise regression -} -\description{ -Computes maxZ selective p-values and confidence intervals for forward -stepwise regression -} -\usage{ - -fsInf_maxZ(obj, sigma=NULL, alpha=0.1, k=NULL, ndraw=8000, burnin=2000,verbose=FALSE) - -} - -\arguments{ - \item{obj}{ -Object returned by \code{\link{fs}} function -} -\item{sigma}{ -Estimate of error standard deviation. If NULL (default), this is estimated -using the mean squared residual of the full least squares fit when n >= 2p, and -using the standard deviation of y when n < 2p. In the latter case, the user -should use \code{\link{estimateSigma}} function for a more accurate estimate -} -\item{alpha}{ -Significance level for confidence intervals (target is miscoverage alpha/2 in each tail) -} -\item{k}{ -See "type" argument below. Default is NULL, in which case k is taken to be the -the number of steps computed in the forward stepwise path -} -\item{ndraw}{Number of Monte Carlo samples generated} -\item{burnin}{ -Number of samples discarded at the beginning of the chain -} -\item{verbose}{Print out progress along the way? Default is FALSE} -} - -\details{ -This function computes selective maxZ p-values -for forward stepwise regression. These p-values are independent the under null, -so that stopping via the forwardStop rule yields guaranteed FDR control -} - -\value{ -\item{pv}{P-values for each model in the sequence} -\item{k}{Value of k specified in call} -\item{khat}{When type is "active", this is an estimated stopping point -declared by \code{\link{forwardStop}}} -\item{sigma}{Value of error standard deviation (sigma) used} -\item{vars}{Variables in active set} -\item{sign}{Signs of active coefficients} -\item{alpha}{Desired coverage (alpha/2 in each tail)} -\item{realized_maxZ}{Value of maxZ statistic computed at each step} -\item{call}{The call to fsInf_maxZ} -} - -\references{ -Will Fithian, Jonathan Taylor, Ryan Tibshirani, and Rob Tibshirani (2015). -Selective sequential model selection. arXiv:1512.02565.. - - -} - -\author{Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid} - -\seealso{\code{\link{fs}}} - -\examples{ -set.seed(33) -n = 50 -p = 10 -sigma = 1 -x = matrix(rnorm(n*p),n,p) -beta = c(3,2,rep(0,p-2)) -y = x\%*\%beta + sigma*rnorm(n) - -# run forward stepwise -fsfit = fs(x,y) - -# compute sequential p-values a -# (sigma estimated from full model) -out.seq = fsInf_maxZ(fsfit) -out.seq -} diff --git a/selectiveInference/src/symbols.rds b/selectiveInference/src/symbols.rds index 144e5c09f09f8470d4c91b8e736738b6e74ca38f..ef45ca37aedfc57cb07c2d5066bf881bf4359eb6 100644 GIT binary patch literal 367 zcmV-#0g(P5iwFP!000001HF{rPJ=KM#=F9l%`92sg||L|5yt%U8fGTmHD#39NNJ^I zn?Ag=Fj^R>H%>2>{?5ng$06s-p2h$G2pl*7&?)h}ssWtpGXyRe>2ri05=0r^28RO8 zjBtvUJk7bP%Q1@iCX2Bmeotwxtmv9#(pob7LR3!ut`KyESyu?HWzILv6do!>dj?Y* z!@*+@7Jm=dU2y!sVsLBm&hK{;+v)mYi|@mRiDeksi*sx-n)Q7D2Y?GpFmuF|>0`2w zTXnjf7EiZim=USDjwSfeziHK5e{b1fSiK3u!!=F|`#{onvcFvA`qG9{$5>=MXY;o5 z+E%Kl=S4;nV}{69)O>=Hl=Hl<&UB)qNFu3-u+1r7)qH^@W+Ej>X}e|l4zziu$_)8M z8h?Pr_sZ`U<;-u6yz;@WwP&x{Gu$0yn$%1y_q{k_SpQXQmz)WC#m&m>F0`bL NJ^{S|DnAbe005&lw21%! literal 274 zcmV+t0qy=DiwFP!000001HF=6YlAQphL2yYEp!O|A49Dh?r)3@b{B%CCA2Zl*pKbU zj~$(fZ34X-yU_ETH}82(B<~9V@FDO#@Pi&#`0}vESPKYYj&)96HiQd$&aMSsYvGQR za^K2sY!{@Gr@EpYOC4nz+43W+m5CH|$GVoMwvgGv+7@yX*~-(ji-@R?RyQ+pXf8LT zd!6pRIq>?|a3eXfAxJBOS#I!=xz6X(U{z=g(_}O8nohY-ZbELfph%qMe+CHs;STB} zae-wyTvLGi{y3IphL)NNrjS>o?;D?Z@Q%NrH)!rY8_m&??hj@`@h|o}eD#4yr^grK YQc%2l=TeGBJ;;9Q2RKP<`Ah=<05C;^xBvhE From 322e7f0b0ae34acea38775e413e83f57b956f3a1 Mon Sep 17 00:00:00 2001 From: tibshirani Date: Wed, 8 Jun 2016 16:41:08 -0700 Subject: [PATCH 144/493] rob put all of maxZ stuff into a folder for later use --- forLater/estimateLambda.Rd | 70 +++ forLater/funs.fixed.R | 198 ++++++++ forLater/funs.fs.R | 744 +++++++++++++++++++++++++++++++ forLater/maxZ/forLater | 86 ++++ forLater/maxZ/funs.constraints.R | 186 ++++++++ 5 files changed, 1284 insertions(+) create mode 100644 forLater/estimateLambda.Rd create mode 100644 forLater/funs.fixed.R create mode 100644 forLater/funs.fs.R create mode 100644 forLater/maxZ/forLater create mode 100644 forLater/maxZ/funs.constraints.R diff --git a/forLater/estimateLambda.Rd b/forLater/estimateLambda.Rd new file mode 100644 index 0000000..9cb1cdb --- /dev/null +++ b/forLater/estimateLambda.Rd @@ -0,0 +1,70 @@ +\name{estimateLambda} +\alias{estimateLambda} +%- Also NEED an '\alias' for EACH other topic documented here. +\title{ +Estimates the lasso tuning parameter lambda. +} +\description{ +Estimates the lasso tuning parameter lambda, for use in the selectiveInference +package +} +\usage{ +estimateLambda(x, sigma, nsamp=1000) +} +\arguments{ + \item{x}{ +Matrix of predictors (n by p) +} + \item{sigma}{ +Estimate of error standard deviation +} +\item{nsamp}{Number of Monte carlo samples used for the estimation.} +} +\details{ +This function estimates the lasso tuning parameter lambda, using the estimate +2*E(||X^T eps||_infty) where eps ~ N(0,sigma^2), a vector of length n. +This estimate was proposed by Negahban et al (2012). +} +\value{ +\item{sigmahat}{The estimate of sigma} +\item{df}{The degrees of freedom of lasso fit used} +} +\references{ +Negahban, S. N., +Ravikumar, P., +Wainwright, M. J. +and Yu, B. +(2012). A unified +framework for high-dimensional analysis of +M-estimators with decomposable regularizers. +Statistical Science vol. 27, p 538-557. +} + +\author{Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid} + +\examples{ +#NOT RUN +#set.seed(43) +#n=50 +#p=10 +#sigma=.7 +#x=matrix(rnorm(n*p),n,p) +#x=scale(x,T,F) +#beta=c(3,2,0,0,rep(0,p-4)) +#y=x%*%beta+sigma*rnorm(n) +#y=y-mean(y) +# +#estimate lambda usingthe known value of sigma +#lamhat=estimateLambda(x,sigma=.7) +# +#first estimate sigma +#sigmahat=estimateSigma(x,y)$sigmahat +#lamhat=estimateLambda(x,sigma=sigmahat) + +#compare to estimate from cv + +#out=cv.glmnet(x,y) +#out$lambda.min*n #remember that value from glmnet must be + # multiplied by n, to make it comparable. +} + diff --git a/forLater/funs.fixed.R b/forLater/funs.fixed.R new file mode 100644 index 0000000..ac00545 --- /dev/null +++ b/forLater/funs.fixed.R @@ -0,0 +1,198 @@ +# Lasso inference function (for fixed lambda). Note: here we are providing inference +# for the solution of +# min 1/2 || y - \beta_0 - X \beta ||_2^2 + \lambda || \beta ||_1 + +fixedLassoInf <- function(x, y, beta, lambda, intercept=TRUE, sigma=NULL, alpha=0.1, + type=c("partial","full"), tol.beta=1e-5, tol.kkt=0.1, + gridrange=c(-100,100), bits=NULL, verbose=FALSE) { + + this.call = match.call() + type = match.arg(type) + checkargs.xy(x,y) + if (missing(beta) || is.null(beta)) stop("Must supply the solution beta") + if (missing(lambda) || is.null(lambda)) stop("Must supply the tuning parameter value lambda") + checkargs.misc(beta=beta,lambda=lambda,sigma=sigma,alpha=alpha, + gridrange=gridrange,tol.beta=tol.beta,tol.kkt=tol.kkt) + if (!is.null(bits) && !requireNamespace("Rmpfr",quietly=TRUE)) { + warning("Package Rmpfr is not installed, reverting to standard precision") + bits = NULL + } + + n = nrow(x) + p = ncol(x) + beta = as.numeric(beta) + if (length(beta) != p) stop("beta must have length equal to ncol(x)") + + # If glmnet was run with an intercept term, center x and y + if (intercept==TRUE) { + obj = standardize(x,y,TRUE,FALSE) + x = obj$x + y = obj$y + } + + # Check the KKT conditions + g = t(x)%*%(y-x%*%beta) / lambda + if (any(abs(g) > 1+tol.kkt * sqrt(sum(y^2)))) + warning(paste("Solution beta does not satisfy the KKT conditions", + "(to within specified tolerances)")) + + vars = which(abs(beta) > tol.beta / sqrt(colSums(x^2))) + if(length(vars)==0){ + cat("Empty model",fill=T) + return() + } + if (any(sign(g[vars]) != sign(beta[vars]))) + warning(paste("Solution beta does not satisfy the KKT conditions", + "(to within specified tolerances). You might try rerunning", + "glmnet with a lower setting of the", + "'thresh' parameter, for a more accurate convergence.")) + + # Get lasso polyhedral region, of form Gy >= u + out = fixedLasso.poly(x,y,beta,lambda,vars) + G = out$G + u = out$u + + # Check polyhedral region + tol.poly = 0.01 + if (min(G %*% y - u) < -tol.poly * sqrt(sum(y^2))) + stop(paste("Polyhedral constraints not satisfied; you must recompute beta", + "more accurately. With glmnet, make sure to use exact=TRUE in coef(),", + "and check whether the specified value of lambda is too small", + "(beyond the grid of values visited by glmnet).", + "You might also try rerunning glmnet with a lower setting of the", + "'thresh' parameter, for a more accurate convergence.")) + + # Estimate sigma + if (is.null(sigma)) { + if (n >= 2*p) { + oo = intercept + sigma = sqrt(sum(lsfit(x,y,intercept=oo)$res^2)/(n-p-oo)) + } + else { + sigma = sd(y) + warning(paste(sprintf("p > n/2, and sd(y) = %0.3f used as an estimate of sigma;",sigma), + "you may want to use the estimateSigma function")) + } + } + + k = length(vars) + pv = vlo = vup = numeric(k) + vmat = matrix(0,k,n) + ci = tailarea = matrix(0,k,2) + sign = numeric(k) + + if (type=="full" & p > n) + warning(paste("type='full' does not make sense when p > n;", + "switching to type='partial'")) + + if (type=="partial" || p > n) { + xa = x[,vars,drop=F] + M = pinv(crossprod(xa)) %*% t(xa) + } + else { + M = pinv(crossprod(x)) %*% t(x) + M = M[vars,,drop=F] + } + + for (j in 1:k) { + if (verbose) cat(sprintf("Inference for variable %i ...\n",vars[j])) + + vj = M[j,] + mj = sqrt(sum(vj^2)) + vj = vj / mj # Standardize (divide by norm of vj) + sign[j] = sign(sum(vj*y)) + vj = sign[j] * vj + a = poly.pval(y,G,u,vj,sigma,bits) + pv[j] = a$pv + vlo[j] = a$vlo * mj # Unstandardize (mult by norm of vj) + vup[j] = a$vup * mj # Unstandardize (mult by norm of vj) + vmat[j,] = vj * mj # Unstandardize (mult by norm of vj) + + a = poly.int(y,G,u,vj,sigma,alpha,gridrange=gridrange, + flip=(sign[j]==-1),bits=bits) + ci[j,] = a$int * mj # Unstandardize (mult by norm of vj) + tailarea[j,] = a$tailarea + } + + out = list(type=type,lambda=lambda,pv=pv,ci=ci, + tailarea=tailarea,vlo=vlo,vup=vup,vmat=vmat,y=y, + vars=vars,sign=sign,sigma=sigma,alpha=alpha, + call=this.call) + class(out) = "fixedLassoInf" + return(out) +} + +############################## + +fixedLasso.poly <- function(x, y, beta, lambda, a) { + xa = x[,a,drop=F] + xac = x[,!a,drop=F] + xai = pinv(crossprod(xa)) + xap = xai %*% t(xa) + za = sign(beta[a]) + if (length(za)>1) dz = diag(za) + if (length(za)==1) dz = matrix(za,1,1) + + P = diag(1,nrow(xa)) - xa %*% xap + G = -rbind(1/lambda * t(xac) %*% P, + -1/lambda * t(xac) %*% P, + -dz %*% xap) + u = -c(1 - t(xac) %*% t(xap) %*% za, + 1 + t(xac) %*% t(xap) %*% za, + -lambda * dz %*% xai %*% za) + + return(list(G=G,u=u)) +} + +# Moore-Penrose pseudo inverse for symmetric matrices + +pinv <- function(A, tol=.Machine$double.eps) { + e = eigen(A) + v = Re(e$vec) + d = Re(e$val) + d[d > tol] = 1/d[d > tol] + d[d < tol] = 0 + if (length(d)==1) return(v*d*v) + else return(v %*% diag(d) %*% t(v)) +} + +############################## + +print.fixedLassoInf <- function(x, tailarea=TRUE, ...) { + cat("\nCall:\n") + dput(x$call) + + cat(sprintf("\nStandard deviation of noise (specified or estimated) sigma = %0.3f\n", + x$sigma)) + + cat(sprintf("\nTesting results at lambda = %0.3f, with alpha = %0.3f\n",x$lambda,x$alpha)) + cat("",fill=T) + tab = cbind(x$vars, + round(x$sign*x$vmat%*%x$y,3), + round(x$sign*x$vmat%*%x$y/(x$sigma*sqrt(rowSums(x$vmat^2))),3), + round(x$pv,3),round(x$ci,3)) + colnames(tab) = c("Var", "Coef", "Z-score", "P-value", "LowConfPt", "UpConfPt") + if (tailarea) { + tab = cbind(tab,round(x$tailarea,3)) + colnames(tab)[(ncol(tab)-1):ncol(tab)] = c("LowTailArea","UpTailArea") + } + rownames(tab) = rep("",nrow(tab)) + print(tab) + + cat(sprintf("\nNote: coefficients shown are %s regression coefficients\n", + ifelse(x$type=="partial","partial","full"))) + invisible() +} + +#estimateLambda <- function(x, sigma, nsamp=1000){ +# checkargs.xy(x,rep(0,nrow(x))) +# if(nsamp < 10) stop("More Monte Carlo samples required for estimation") +# if (length(sigma)!=1) stop("sigma should be a number > 0") + # if (sigma<=0) stop("sigma should be a number > 0") + + # n = nrow(x) + # eps = sigma*matrix(rnorm(nsamp*n),n,nsamp) + # lambda = 2*mean(apply(t(x)%*%eps,2,max)) + # return(lambda) +#} + diff --git a/forLater/funs.fs.R b/forLater/funs.fs.R new file mode 100644 index 0000000..b75923d --- /dev/null +++ b/forLater/funs.fs.R @@ -0,0 +1,744 @@ +# We compute the forward stepwise regression (FS) path given +# a response vector y and predictor matrix x. We assume +# that x has columns in general position. + +fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, + verbose=FALSE) { + + this.call = match.call() + checkargs.xy(x=x,y=y) + + # Center and scale, etc. + obj = standardize(x,y,intercept,normalize) + x = obj$x + y = obj$y + bx = obj$bx + by = obj$by + sx = obj$sx + n = nrow(x) + p = ncol(x) + + ##### + # To keep consistent with the lar function, we parametrize + # so that the first step has all zero coefficients, + # Also, an interesting note: the effective "lambda" (maximal + # correlation with the residual) may increase with stepwise! + # So we don't keep track of it + + ##### + # Find the first variable to enter and its sign + working_scale = sqrt(colSums(x^2)) + working_x = scale(x,center=F,scale=working_scale) + working_score = t(working_x)%*%y + i_hit = which.max(abs(working_score)) # Hitting coordinate + sign_hit = Sign(working_score[i_hit]) # Sign + signs = sign_hit # later signs will be appended to `signs` + + if (verbose) { + cat(sprintf("1. Adding variable %i, |A|=%i...",i_hit,1)) + } + + # Now iteratively find the new FS estimates + + # Things to keep track of, and return at the end + # JT: I guess the "buf" just saves us from making huge + # matrices we don't need? + + buf = min(maxsteps,500) + action = numeric(buf) # Actions taken + df = numeric(buf) # Degrees of freedom + beta = matrix(0,p,buf) # FS estimates + + # Buffered objects for selective maxZ test + + offset_pos_maxZ = matrix(Inf, p, buf) # upper bounds for selective maxZ + offset_neg_maxZ = matrix(Inf, p, buf) # lower bounds for selective maxZ + scale_maxZ = matrix(0, p, buf) # lower bounds for selective maxZ + realized_maxZ = numeric(buf) # lower bounds for selective maxZ + + action[1] = i_hit + df[1] = 0 + beta[,1] = 0 + + ##### + # Variables needed to compute truncation limits for + # selective maxZ test + + realized_maxZ[1] = c(sign_hit * working_score[i_hit]) + offset_pos_maxZ[,1] = Inf + offset_neg_maxZ[,1] = Inf + scale_maxZ[,1] = working_scale + working_resid_maxZ = y - x %*% beta[,1] + + # Gamma matrix! + gbuf = max(2*p*3,2000) # Space for 3 steps, at least + gi = 0 # index into rows of Gamma matrix + zi = 0 # index into rows of Gamma_maxZ matrix + + Gamma = matrix(0,gbuf,n) + Gamma[gi+Seq(1,p-1),] = t(sign_hit*working_x[,i_hit]+working_x[,-i_hit]); gi = gi+p-1 + Gamma[gi+Seq(1,p-1),] = t(sign_hit*working_x[,i_hit]-working_x[,-i_hit]); gi = gi+p-1 + Gamma[gi+1,] = t(sign_hit*working_x[,i_hit]); gi = gi+1 + + # Gamma_maxZ is the rbind + # of residualized X_inactive's + + Gamma_maxZ = matrix(0,gbuf,n) + Gamma_maxZ[zi+Seq(1,p),] = t(x); zi = zi+p + + # nconstraint + nconstraint = numeric(buf) + vreg = matrix(0,buf,n) + nconstraint[1] = gi + vreg[1,] = sign_hit*x[,i_hit] / sum(x[,i_hit]^2) + + # Other things to keep track of, but not return + r = 1 # Size of active set + A = i_hit # Active set -- JT: isn't this basically the same as action? + I = Seq(1,p)[-i_hit] # Inactive set + X_active = x[,i_hit,drop=FALSE] # Matrix X[,A] + X_inactive = x[,-i_hit,drop=FALSE] # Matrix X[,I] + k = 2 # What step are we at? + # JT Why keep track of r and k instead of just saying k=r+1? + + # Compute a skinny QR decomposition of X_active + # JT: obs was used as variable name above -- this is something different, no? + # changed it to qr_X + + qr_X = qr(X_active) + Q = qr.Q(qr_X,complete=TRUE) + Q_active = Q[,1,drop=FALSE]; + Q_inactive = Q[,-1,drop=FALSE] + R = qr.R(qr_X) + + # Throughout the algorithm, we will maintain + # the decomposition X_active = Q_active*R. Dimensions: + # X_active: n x r + # Q_active: n x r + # Q_inactive: n x (n-r) + # R: r x r + + while (k<=maxsteps) { + ########## + # Check if we've reached the end of the buffer + if (k > length(action)) { + buf = length(action) + action = c(action,numeric(buf)) + df = c(df,numeric(buf)) + beta = cbind(beta,matrix(0,p,buf)) + nconstraint = c(nconstraint,numeric(buf)) + vreg = rbind(vreg,matrix(0,buf,n)) + + offset_pos_maxZ = cbind(offset_pos_maxZ, matrix(0, p, buf)) + offset_neg_maxZ = cbind(offset_neg_maxZ, matrix(0, p, buf)) + scale_maxZ = cbind(scale_maxZ, matrix(0, p, buf)) + realized_maxZ = c(realized_maxZ, numeric(buf)) + } + + # Key quantities for the next entry + + keepLs=backsolve(R,t(Q_active)%*%X_inactive) + + prev_scale = working_scale[-i_hit] # this variable used later for maxZ + X_inactive_resid = X_inactive - X_active %*% keepLs + working_scale = sqrt(colSums(X_inactive_resid^2)) # this variable used later for maxZ + working_x = scale(X_inactive_resid,center=F,scale=working_scale) + working_score = as.numeric(t(working_x)%*%y) + + beta_cur = backsolve(R,t(Q_active)%*%y) # must be computed before the break + # so we have it if we have + # completed the path + + # If the inactive set is empty, nothing will hit + if (r==min(n-intercept,p)) break + + # Otherwise find the next hitting time + else { + sign_score = Sign(working_score) + abs_score = sign_score * working_score + i_hit = which.max(abs_score) + sign_hit = sign_score[i_hit] + # keep track of necessary quantities for selective maxZ + + offset_shift = t(X_inactive) %*% (y - working_resid_maxZ) + realized_Z_scaled = realized_maxZ[k-1] * prev_scale + offset_pos_maxZ[I,k] = realized_Z_scaled + offset_shift + offset_neg_maxZ[I,k] = realized_Z_scaled - offset_shift + scale_maxZ[I,k] = working_scale + + working_resid_maxZ = y - X_active %*% beta_cur + } + + # Record the solution + # what is the difference between "action" and "A"? + + action[k] = I[i_hit] + df[k] = r + beta[A,k] = beta_cur + + # store the X_inactive_resid in Gamma_maxZ + + if (gi + p-r > nrow(Gamma_maxZ)) Gamma_maxZ = rbind(Gamma_maxZ,matrix(0,p-r,n)) + Gamma_maxZ[zi+Seq(1,p-r),] = t(X_inactive_resid); zi = zi+p-r + + # update maxZ variable + realized_maxZ[k] = sign_hit * working_score[i_hit] + + # Gamma matrix! + + if (gi + 2*p > nrow(Gamma)) Gamma = rbind(Gamma,matrix(0,2*p+gbuf,n)) + working_x = t(sign_score*t(working_x)) + #Gamma[gi+Seq(1,p-r),] = t(working_x); gi = gi+p-r + Gamma[gi+Seq(1,p-r-1),] = t(working_x[,i_hit]+working_x[,-i_hit]); gi = gi+p-r-1 + Gamma[gi+Seq(1,p-r-1),] = t(working_x[,i_hit]-working_x[,-i_hit]); gi = gi+p-r-1 + Gamma[gi+1,] = t(working_x[,i_hit]); gi = gi+1 + + # nconstraint, regression contrast + nconstraint[k] = gi + vreg[k,] = sign_hit*X_inactive_resid[,i_hit] / sum(X_inactive_resid[,i_hit]^2) + + # Update all of the variables + r = r+1 + A = c(A,I[i_hit]) + I = I[-i_hit] + signs = c(signs,sign_hit) + X_active = cbind(X_active,X_inactive[,i_hit]) + X_inactive = X_inactive[,-i_hit,drop=FALSE] + + # Update the QR decomposition + updated_qr = updateQR(Q_active,Q_inactive,R,X_active[,r]) + Q_active = updated_qr$Q1 + + # JT: why do we store Q_inactive? Doesn't seem to be used. + Q_inactive = updated_qr$Q2 + R = updated_qr$R + + if (verbose) { + cat(sprintf("\n%i. Adding variable %i, |A|=%i...",k,A[r],r)) + } + + # Step counter + k = k+1 + } + + # Trim + action = action[Seq(1,k-1)] + df = df[Seq(1,k-1),drop=FALSE] + beta = beta[,Seq(1,k-1),drop=FALSE] + Gamma = Gamma[Seq(1,gi),,drop=FALSE] + nconstraint = nconstraint[Seq(1,k-1)] + vreg = vreg[Seq(1,k-1),,drop=FALSE] + + offset_pos_maxZ = offset_pos_maxZ[,Seq(1,k-1),drop=FALSE] + offset_neg_maxZ = offset_neg_maxZ[,Seq(1,k-1),drop=FALSE] + scale_maxZ = scale_maxZ[,Seq(1,k-1),drop=FALSE] + Gamma_maxZ = Gamma_maxZ[Seq(1,zi),,drop=FALSE] + + # If we reached the maximum number of steps + if (k>maxsteps) { + if (verbose) { + cat(sprintf("\nReached the maximum number of steps (%i),",maxsteps)) + cat(" skipping the rest of the path.") + } + completepath = FALSE + bls = NULL + } + + # Otherwise, note that we completed the path + else { + completepath = TRUE + + # Record the least squares solution. Note that + # we have already computed this + bls = rep(0,p) + if(length(keepLs)>0) bls[A] = keepLs + + } + + if (verbose) cat("\n") + + # Adjust for the effect of centering and scaling + if (intercept) df = df+1 + if (normalize) beta = beta/sx + if (normalize && completepath) bls = bls/sx + + # Assign column names + colnames(beta) = as.character(Seq(1,k-1)) + + out = list(action=action,sign=signs,df=df,beta=beta, + completepath=completepath,bls=bls, + Gamma=Gamma,nconstraint=nconstraint,vreg=vreg,x=x,y=y,bx=bx,by=by,sx=sx, + intercept=intercept,normalize=normalize,call=this.call, + offset_pos_maxZ=offset_pos_maxZ,offset_neg_maxZ=offset_neg_maxZ, + scale_maxZ=scale_maxZ,Gamma_maxZ=Gamma_maxZ,realized_maxZ=realized_maxZ) + class(out) = "fs" + return(out) +} + +############################## + +# Coefficient function for fs + +coef.fs <- function(object, s, ...) { + if (object$completepath) { + k = length(object$action)+1 + beta = cbind(object$beta,object$bls) + } else { + k = length(object$action) + beta = object$beta + } + + if (min(s)<0 || max(s)>k) stop(sprintf("s must be between 0 and %i",k)) + knots = 1:k + dec = FALSE + return(coef.interpolate(beta,s,knots,dec)) +} + +# Prediction function for fs + +predict.fs <- function(object, newx, s, ...) { + beta = coef.fs(object,s) + if (missing(newx)) newx = scale(object$x,FALSE,1/object$sx) + else newx = scale(newx,object$bx,FALSE) + return(newx %*% beta + object$by) +} + +############################## + +# FS inference function + +fsInf <- function(obj, sigma=NULL, alpha=0.1, k=NULL, type=c("active","all","aic"), + gridrange=c(-100,100), bits=NULL, mult=2, ntimes=2, verbose=FALSE) { + + this.call = match.call() + type = match.arg(type) + checkargs.misc(sigma=sigma,alpha=alpha,k=k, + gridrange=gridrange,mult=mult,ntimes=ntimes) + if (class(obj) != "fs") stop("obj must be an object of class fs") + if (is.null(k) && type=="active") k = length(obj$action) + if (is.null(k) && type=="all") stop("k must be specified when type = all") + if (!is.null(bits) && !requireNamespace("Rmpfr",quietly=TRUE)) { + warning("Package Rmpfr is not installed, reverting to standard precision") + bits = NULL + } + + k = min(k,length(obj$action)) # Round to last step + x = obj$x + y = obj$y + p = ncol(x) + n = nrow(x) + G = obj$Gamma + nconstraint = obj$nconstraint + sx = obj$sx + + if (is.null(sigma)) { + if (n >= 2*p) { + oo = obj$intercept + sigma = sqrt(sum(lsfit(x,y,intercept=oo)$res^2)/(n-p-oo)) + } + else { + sigma = sd(y) + warning(paste(sprintf("p > n/2, and sd(y) = %0.3f used as an estimate of sigma;",sigma), + "you may want to use the estimateSigma function")) + } + } + + khat = NULL + + if (type == "active") { + pv = vlo = vup = numeric(k) + vmat = matrix(0,k,n) + ci = tailarea = matrix(0,k,2) + vreg = obj$vreg[1:k,,drop=FALSE] + sign = obj$sign[1:k] + vars = obj$action[1:k] + + for (j in 1:k) { + if (verbose) cat(sprintf("Inference for variable %i ...\n",vars[j])) + + Gj = G[1:nconstraint[j],] + uj = rep(0,nconstraint[j]) + vj = vreg[j,] + mj = sqrt(sum(vj^2)) + vj = vj / mj # Standardize (divide by norm of vj) + a = poly.pval(y,Gj,uj,vj,sigma,bits) + pv[j] = a$pv + sxj = sx[vars[j]] + vlo[j] = a$vlo * mj / sxj # Unstandardize (mult by norm of vj / sxj) + vup[j] = a$vup * mj / sxj # Unstandardize (mult by norm of vj / sxj) + vmat[j,] = vj * mj / sxj # Unstandardize (mult by norm of vj / sxj) + + a = poly.int(y,Gj,uj,vj,sigma,alpha,gridrange=gridrange, + flip=(sign[j]==-1),bits=bits) + ci[j,] = a$int * mj / sxj # Unstandardize (mult by norm of vj / sxj) + tailarea[j,] = a$tailarea + } + + khat = forwardStop(pv,alpha) + } + + else { + if (type == "aic") { + out = aicStop(x,y,obj$action[1:k],obj$df[1:k],sigma,mult,ntimes) + khat = out$khat + m = out$stopped * ntimes + G = rbind(out$G,G[1:nconstraint[khat+m],]) # Take ntimes more steps past khat + u = c(out$u,rep(0,nconstraint[khat+m])) # (if we need to) + kk = khat + } + else { + G = G[1:nconstraint[k],] + u = rep(0,nconstraint[k]) + kk = k + } + + pv = vlo = vup = numeric(kk) + vmat = matrix(0,kk,n) + ci = tailarea = matrix(0,kk,2) + sign = numeric(kk) + vars = obj$action[1:kk] + xa = x[,vars] + M = pinv(crossprod(xa)) %*% t(xa) + + for (j in 1:kk) { + if (verbose) cat(sprintf("Inference for variable %i ...\n",vars[j])) + + vj = M[j,] + mj = sqrt(sum(vj^2)) + vj = vj / mj # Standardize (divide by norm of vj) + sign[j] = sign(sum(vj*y)) + vj = sign[j] * vj + Gj = rbind(G,vj) + uj = c(u,0) + + a = poly.pval(y,Gj,uj,vj,sigma,bits) + pv[j] = a$pv + sxj = sx[vars[j]] + vlo[j] = a$vlo * mj / sxj # Unstandardize (mult by norm of vj / sxj) + vup[j] = a$vup * mj / sxj # Unstandardize (mult by norm of vj / sxj) + vmat[j,] = vj * mj / sxj # Unstandardize (mult by norm of vj / sxj) + + a = poly.int(y,Gj,uj,vj,sigma,alpha,gridrange=gridrange, + flip=(sign[j]==-1),bits=bits) + ci[j,] = a$int * mj / sxj # Unstandardize (mult by norm of vj / sxj) + tailarea[j,] = a$tailarea + } + } + + # JT: why do we output vup, vlo? Are they used somewhere else? + + out = list(type=type,k=k,khat=khat,pv=pv,ci=ci, + tailarea=tailarea,vlo=vlo,vup=vup,vmat=vmat,y=y, + vars=vars,sign=sign,sigma=sigma,alpha=alpha, + call=this.call) + class(out) = "fsInf" + return(out) +} + +############################## + +############################## + +# selected maxZ tests + +fsInf_maxZ = function(obj, sigma=NULL, alpha=0.1, k=NULL, + ndraw=8000, burnin=2000, verbose=FALSE) { + + this.call = match.call() + + checkargs.misc(sigma=sigma,alpha=alpha,k=k) + + if (class(obj) != "fs") stop("obj must be an object of class fs") + + k = min(k,length(obj$action)) # Round to last step + x = obj$x + y = obj$y + p = ncol(x) + n = nrow(x) + pv = c() + + if (is.null(sigma)) { + # TODO we need a sampler on a unit sphere + if (n >= 2*p) { + oo = obj$intercept + sigma = sqrt(sum(lsfit(x,y,intercept=oo)$res^2)/(n-p-oo)) + } + else { + sigma = sd(y) + warning(paste(sprintf("p > n/2, and sd(y) = %0.3f used as an estimate of sigma;",sigma), + "you may want to use the estimateSigma function")) + } + } + + khat = NULL + + vars = obj$action[1:k] + zi = 0 + for (j in 1:k) { + if(verbose) cat(c("Step=",j),fill=T) + # the inactive set here does not + # include the variable at the j-th step + # so, at j==1, the inactive set is every variable + # at j==2, the inactive set is everything but the first one + + if (j > 1) { + active = vars[1:(j-1)] + inactive = (1:p)[-active] + } else { + inactive = 1:p + } + + collapsed_pos = apply(obj$offset_pos_maxZ[inactive,1:j,drop=FALSE], 1, min) + collapsed_neg = apply(obj$offset_neg_maxZ[inactive,1:j,drop=FALSE], 1, min) + cur_scale = obj$scale_maxZ[,j][inactive] + + # the matrix cur_adjusted_Xt is used to compute (always as length(y) columns) + # the maxZ or maxT for the sampled variables + # + cur_adjusted_Xt = obj$Gamma_maxZ[zi + Seq(1,p-j+1),,drop=FALSE]; zi = zi+p-j+1 # Xt for transpose + + # cur_X is used to enforce conditioning on + # the ever_active sufficient_statistics + + cur_X = obj$x[,inactive,drop=FALSE] + + # now we condition on solution up to now + # this is equivalent to finding vector of + # fitted values up to now and appropriately + # adjusting the box limits + + if (j > 1) { + cur_fitted = predict(obj, s=j) + cur_fitted = cur_fitted - mean(cur_fitted) + cur_offset = as.numeric(t(cur_X) %*% cur_fitted) + } + else { + cur_fitted = rep(0, length(y)) + cur_offset = rep(0, length(inactive)) + } + + final_upper = collapsed_pos - cur_offset + final_lower = -(collapsed_neg + cur_offset) + + # now, we sample from Y_star, a centered Gaussian with covariance sigma^2 I + # subject to the constraint + # t(cur_adjusted_Xt) %*% Y_star < final_upper + # -t(cur_adjusted_Xt) %*% Y_star < -final_lower + + # really, we want the covariance of Y_star to be \sigma^2 (I - cur_P) + # where P is projection on the j-1 previous variables + # but this doesn't matter as everything we do with the samples + # will be a function of (I - cur_P) Y_star and the constraints are + # expressible in terms of (I - cur_P) Y_star because + # we have adjusted X + + # IMPORTANT: after sampling Y_star, we have to add back cur_fitted + + # if n >= p, we could actually just draw cur_adjusted_Xt %*% Y_star + # because this has a simple box constraint + # with a generically non-degenerate covariance + + if (nrow(cur_adjusted_Xt) > length(y)) { + linear_part = rbind(cur_adjusted_Xt, -cur_adjusted_Xt) + offset = c(final_upper, -final_lower) + covariance = diag(rep(sigma^2, length(y))) + mean_param = cur_fitted # rep(0, length(y)) + initial_point = y + + truncated_y = sample_from_constraints(linear_part, + offset, + mean_param, + covariance, + initial_point, + burnin=burnin, + ndraw=ndraw) + + truncated_noise = truncated_y %*% t(cur_adjusted_Xt) + sample_maxZ = apply(abs(t(truncated_noise) / cur_scale), 2, max) + } else { # sample from a smaller dimensional gaussian + if (nrow(cur_adjusted_Xt) > 1) { + linear_part = rbind(diag(rep(1, nrow(cur_adjusted_Xt))), + diag(rep(-1, nrow(cur_adjusted_Xt)))) + covariance = sigma^2 * (cur_adjusted_Xt %*% t(cur_adjusted_Xt)) + offset = c(final_upper, -final_lower) + mean_param = cur_adjusted_Xt %*% cur_fitted # rep(0, nrow(cur_adjusted_Xt)) + initial_point = cur_adjusted_Xt %*% y + } else { + mean_param = as.numeric(sum(as.numeric(cur_adjusted_Xt) * as.numeric(cur_fitted))) + covariance = matrix(sigma^2 * sum(cur_adjusted_Xt^2)) + linear_part = matrix(c(1,-1), 2, 1) + offset = c(final_upper, -final_lower) + initial_point = as.numeric(sum(as.numeric(cur_adjusted_Xt) * as.numeric(y))) + } + truncated_noise = sample_from_constraints(linear_part, + offset, + mean_param, + covariance, + initial_point, + burnin=burnin, + ndraw=ndraw) + sample_maxZ = apply(abs(t(truncated_noise) / cur_scale), 2, max) + + } + + observed_maxZ = obj$realized_maxZ[j] + pval = sum(sample_maxZ > observed_maxZ) / ndraw + pval = 2 * min(pval, 1 - pval) + pv = c(pv, pval) + } + + khat = forwardStop(pv,alpha) + + out = list(pv=pv, + k=k, + khat=khat, + sigma=sigma, + vars=vars, + sign=obj$sign, + alpha=alpha, + realized_maxZ=obj$realized_maxZ, + call=this.call) + class(out) = "fsInf_maxZ" + return(out) +} + +############################## +# +# Print methods +# +############################## + +print.fs <- function(x, ...) { + cat("\nCall:\n") + dput(x$call) + + cat("\nSequence of FS moves:\n") + nsteps = length(x$action) + tab = cbind(1:nsteps,x$action,x$sign) + colnames(tab) = c("Step","Var","Sign") + rownames(tab) = rep("",nrow(tab)) + print(tab) + invisible() +} + +print.fsInf <- function(x, tailarea=TRUE, ...) { + cat("\nCall:\n") + dput(x$call) + + cat(sprintf("\nStandard deviation of noise (specified or estimated) sigma = %0.3f\n", + x$sigma)) + + if (x$type == "active") { + cat(sprintf("\nSequential testing results with alpha = %0.3f\n",x$alpha)) + tab = cbind(1:length(x$pv),x$vars, + round(x$sign*x$vmat%*%x$y,3), + round(x$sign*x$vmat%*%x$y/(x$sigma*sqrt(rowSums(x$vmat^2))),3), + round(x$pv,3),round(x$ci,3)) + colnames(tab) = c("Step", "Var", "Coef", "Z-score", "P-value", + "LowConfPt", "UpConfPt") + if (tailarea) { + tab = cbind(tab,round(x$tailarea,3)) + colnames(tab)[(ncol(tab)-1):ncol(tab)] = c("LowTailArea","UpTailArea") + } + rownames(tab) = rep("",nrow(tab)) + print(tab) + + cat(sprintf("\nEstimated stopping point from ForwardStop rule = %i\n",x$khat)) + } + + else if (x$type == "all") { + cat(sprintf("\nTesting results at step = %i, with alpha = %0.3f\n",x$k,x$alpha)) + tab = cbind(x$vars, + round(x$sign*x$vmat%*%x$y,3), + round(x$sign*x$vmat%*%x$y/(x$sigma*sqrt(rowSums(x$vmat^2))),3), + round(x$pv,3),round(x$ci,3)) + colnames(tab) = c("Var", "Coef", "Z-score", "P-value", "LowConfPt", "UpConfPt") + if (tailarea) { + tab = cbind(tab,round(x$tailarea,3)) + colnames(tab)[(ncol(tab)-1):ncol(tab)] = c("LowTailArea","UpTailArea") + } + rownames(tab) = rep("",nrow(tab)) + print(tab) + } + + else if (x$type == "aic") { + cat(sprintf("\nTesting results at step = %i, with alpha = %0.3f\n",x$khat,x$alpha)) + tab = cbind(x$vars, + round(x$sign*x$vmat%*%x$y,3), + round(x$sign*x$vmat%*%x$y/(x$sigma*sqrt(rowSums(x$vmat^2))),3), + round(x$pv,3),round(x$ci,3)) + colnames(tab) = c("Var", "Coef", "Z-score", "P-value", "LowConfPt", "UpConfPt") + if (tailarea) { + tab = cbind(tab,round(x$tailarea,3)) + colnames(tab)[(ncol(tab)-1):ncol(tab)] = c("LowTailArea","UpTailArea") + } + rownames(tab) = rep("",nrow(tab)) + print(tab) + + cat(sprintf("\nEstimated stopping point from AIC rule = %i\n",x$khat)) + } + + invisible() +} + + +print.fsInf_maxZ <- function(obj) { + + cat("\nCall:\n") + dput(obj$call) + + cat(sprintf("\nStandard deviation of noise (specified or estimated) sigma = %0.3f\n", + obj$sigma)) + + cat(sprintf("\nSequential testing results with alpha = %0.3f\n",obj$alpha)) + + tab = cbind(1:length(obj$pv), + obj$vars, + round(obj$sign*obj$realized_maxZ, 3), + round(obj$pv,3)) + colnames(tab) = c("Step", "Var", "Z-score", "P-value") + rownames(tab) = rep("",nrow(tab)) + print(tab) + + cat(sprintf("\nEstimated stopping point from ForwardStop rule = %i\n",obj$khat)) + + invisible() +} + +############################## +# +# Plot methods +# +############################## + +plot.fs <- function(x, breaks=TRUE, omit.zeros=TRUE, var.labels=TRUE, ...) { + if (x$completepath) { + k = length(x$action)+1 + beta = cbind(x$beta,x$bls) + } else { + k = length(x$action) + beta = x$beta + } + p = nrow(beta) + + xx = 1:k + xlab = "Step" + + if (omit.zeros) { + good.inds = matrix(FALSE,p,k) + good.inds[beta!=0] = TRUE + changes = t(apply(beta,1,diff))!=0 + good.inds[cbind(changes,rep(F,p))] = TRUE + good.inds[cbind(rep(F,p),changes)] = TRUE + beta[!good.inds] = NA + } + + plot(c(),c(),xlim=range(xx,na.rm=T),ylim=range(beta,na.rm=T), + xlab=xlab,ylab="Coefficients",main="Forward stepwise path",...) + abline(h=0,lwd=2) + matplot(xx,t(beta),type="l",lty=1,add=TRUE) + if (breaks) abline(v=xx,lty=2) + if (var.labels) axis(4,at=beta[,k],labels=1:p,cex=0.8,adj=0) + invisible() +} + diff --git a/forLater/maxZ/forLater b/forLater/maxZ/forLater new file mode 100644 index 0000000..89aa886 --- /dev/null +++ b/forLater/maxZ/forLater @@ -0,0 +1,86 @@ +\name{fsInf_maxZ} +\alias{fsInf_maxZ} +\title{ +Selective inference for forward stepwise regression +} +\description{ +Computes maxZ selective p-values and confidence intervals for forward +stepwise regression +} +\usage{ + +fsInf_maxZ(obj, sigma=NULL, alpha=0.1, k=NULL, ndraw=8000, burnin=2000,verbose=FALSE) + +} + +\arguments{ + \item{obj}{ +Object returned by \code{\link{fs}} function +} +\item{sigma}{ +Estimate of error standard deviation. If NULL (default), this is estimated +using the mean squared residual of the full least squares fit when n >= 2p, and +using the standard deviation of y when n < 2p. In the latter case, the user +should use \code{\link{estimateSigma}} function for a more accurate estimate +} +\item{alpha}{ +Significance level for confidence intervals (target is miscoverage alpha/2 in each tail) +} +\item{k}{ +See "type" argument below. Default is NULL, in which case k is taken to be the +the number of steps computed in the forward stepwise path +} +\item{ndraw}{Number of Monte Carlo samples generated} +\item{burnin}{ +Number of samples discarded at the beginning of the chain +} +\item{verbose}{Print out progress along the way? Default is FALSE} +} + +\details{ +This function computes selective maxZ p-values +for forward stepwise regression. These p-values are independent the under null, +so that stopping via the forwardStop rule yields guaranteed FDR control +} + +\value{ +\item{pv}{P-values for each model in the sequence} +\item{k}{Value of k specified in call} +\item{khat}{When type is "active", this is an estimated stopping point +declared by \code{\link{forwardStop}}} +\item{sigma}{Value of error standard deviation (sigma) used} +\item{vars}{Variables in active set} +\item{sign}{Signs of active coefficients} +\item{alpha}{Desired coverage (alpha/2 in each tail)} +\item{realized_maxZ}{Value of maxZ statistic computed at each step} +\item{call}{The call to fsInf_maxZ} +} + +\references{ +Will Fithian, Jonathan Taylor, Ryan Tibshirani, and Rob Tibshirani (2015). +Selective sequential model selection. arXiv:1512.02565.. + + +} + +\author{Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid} + +\seealso{\code{\link{fs}}} + +\examples{ +set.seed(33) +n = 50 +p = 10 +sigma = 1 +x = matrix(rnorm(n*p),n,p) +beta = c(3,2,rep(0,p-2)) +y = x\%*\%beta + sigma*rnorm(n) + +# run forward stepwise +fsfit = fs(x,y) + +# compute sequential p-values a +# (sigma estimated from full model) +out.seq = fsInf_maxZ(fsfit) +out.seq +} diff --git a/forLater/maxZ/funs.constraints.R b/forLater/maxZ/funs.constraints.R new file mode 100644 index 0000000..3bf6b77 --- /dev/null +++ b/forLater/maxZ/funs.constraints.R @@ -0,0 +1,186 @@ +# +# Some utilities for affine constraints +# + +# +# compute the square-root and inverse square-root of a non-negative +# definite matrix +# + +factor_covariance = function(S, rank=NA) { + if (is.na(rank)) { + rank = nrow(S) + } + svd_X = svd(S, nu=rank, nv=rank) + sqrt_cov = t(sqrt(svd_X$d[1:rank]) * t(svd_X$u[,1:rank])) + sqrt_inv = t((1. / sqrt(svd_X$d[1:rank])) * t(svd_X$u[,1:rank])) + + return(list(sqrt_cov=sqrt_cov, sqrt_inv=sqrt_inv)) +} + +# +# from a constraint, return an equivalent +# constraint and a whitening and inverse +# whitening map +# + +# law is Z \sim N(mean_param, covariance) subject to constraints linear_part %*% Z \leq offset + +whiten_constraint = function(linear_part, offset, mean_param, covariance) { + + factor_cov = factor_covariance(covariance) + sqrt_cov = factor_cov$sqrt_cov + sqrt_inv = factor_cov$sqrt_inv + + new_A = linear_part %*% sqrt_cov + new_b = offset - linear_part %*% mean_param + + # rescale rows to have length 1 + + scaling = sqrt(apply(new_A^2, 1, sum)) + new_A = new_A / scaling + new_b = new_b / scaling + + # TODO: check these functions will behave when Z is a matrix. + + inverse_map = function(Z) { + # broadcasting here + # the columns of Z are same length as mean_param + return(sqrt_cov %*% Z + as.numeric(mean_param)) + } + + forward_map = function(W) { + return(sqrt_inv %*% (W - mean_param)) + } + + return(list(linear_part=new_A, + offset=new_b, + inverse_map=inverse_map, + forward_map=forward_map)) +} + +# +# sample from the law +# +# Z \sim N(mean_param, covariance) subject to constraints linear_part %*% Z \leq offset + +sample_from_constraints = function(linear_part, + offset, + mean_param, + covariance, + initial_point, # point must be feasible for constraints + ndraw=8000, + burnin=2000, + accept_reject_params=NA) #TODO: implement accept reject check +{ + + whitened_con = whiten_constraint(linear_part, + offset, + mean_param, + covariance) + white_initial = whitened_con$forward_map(initial_point) + +# # try 100 draws of accept reject +# # if we get more than 50 good draws, then just return a smaller sample +# # of size (burnin+ndraw)/5 + +# if accept_reject_params: +# use_hit_and_run = False +# num_trial, min_accept, num_draw = accept_reject_params + +# def _accept_reject(sample_size, linear_part, offset): +# Z_sample = np.random.standard_normal((100, linear_part.shape[1])) +# constraint_satisfied = (np.dot(Z_sample, linear_part.T) - +# offset[None,:]).max(1) < 0 +# return Z_sample[constraint_satisfied] + +# Z_sample = _accept_reject(100, +# white_con.linear_part, +# white_con.offset) + +# if Z_sample.shape[0] >= min_accept: +# while True: +# Z_sample = np.vstack([Z_sample, +# _accept_reject(num_draw / 5, +# white_con.linear_part, +# white_con.offset)]) +# if Z_sample.shape[0] > num_draw: +# break +# white_samples = Z_sample +# else: +# use_hit_and_run = True +# else: +# use_hit_and_run = True + + use_hit_and_run = TRUE + + if (use_hit_and_run) { + + white_linear = whitened_con$linear_part + white_offset = whitened_con$offset + + # Inf cannot be used in C code + # In theory, these rows can be dropped + + rows_to_keep = white_offset < Inf + white_linear = white_linear[rows_to_keep,,drop=FALSE] + white_offset = white_offset[rows_to_keep] + + nstate = length(white_initial) + if (sum(rows_to_keep) > 0) { + if (ncol(white_linear) > 1) { + nconstraint = nrow(white_linear) + + directions = rbind(diag(rep(1, nstate)), + matrix(rnorm(nstate^2), nstate, nstate)) + + # normalize rows to have length 1 + + scaling = apply(directions, 1, function(x) { return(sqrt(sum(x^2))) }) + directions = directions / scaling + ndirection = nrow(directions) + + alphas = directions %*% t(white_linear) + U = white_linear %*% white_initial - white_offset + Z_sample = matrix(rep(0, nstate * ndraw), nstate, ndraw) + + result = .C("sample_truncnorm_white", + as.numeric(white_initial), + as.numeric(U), + as.numeric(t(directions)), + as.numeric(t(alphas)), + output=Z_sample, + as.integer(nconstraint), + as.integer(ndirection), + as.integer(nstate), + as.integer(burnin), + as.integer(ndraw), + package="selectiveInference") + Z_sample = result$output + } else { # the distribution is univariate + # we can just work out upper and lower limits + + white_linear = as.numeric(white_linear) + pos = (white_linear * white_offset) >= 0 + neg = (white_linear * white_offset) <= 0 + if (sum(pos) > 0) { + U = min((white_offset / white_linear)[pos]) + } else { + U = Inf + } + if (sum(neg) < 0) { + L = max((white_offset / white_linear)[neg]) + } else { + L = -Inf + } + Z_sample = matrix(qnorm((pnorm(U) - pnorm(L)) * runif(ndraw) + pnorm(L)), 1, ndraw) + } + } else { + Z_sample = matrix(rnorm(nstate * ndraw), nstate, ndraw) + } + } + + Z = t(whitened_con$inverse_map(Z_sample)) + return(Z) +} + From 74e3c482077d159be98a45c41c664f1b1cd8c8f1 Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Thu, 21 Jul 2016 16:53:06 -0700 Subject: [PATCH 145/493] Simulation to compare saturated and selected models in fs --- forLater/josh/sim.selectedmodel.R | 60 +++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 forLater/josh/sim.selectedmodel.R diff --git a/forLater/josh/sim.selectedmodel.R b/forLater/josh/sim.selectedmodel.R new file mode 100644 index 0000000..c278e98 --- /dev/null +++ b/forLater/josh/sim.selectedmodel.R @@ -0,0 +1,60 @@ +library(selectiveInference) +library(intervals) +setwd("~/Dropbox/work/R-software/forLater/josh") +source("selectiveInference/R/cv.R") +source("../../selectiveInference/R/funs.groupfs.R") +source("../../selectiveInference/R/funs.quadratic.R") +source("../../selectiveInference/R/funs.common.R") +source("../../selectiveInference/R/funs.fs.R") +source("../../selectiveInference/R/funs.lar.R") +source("../../selectiveInference/R/funs.inf.R") +library(MASS) +pinv = ginv + +set.seed(19) +niters <- 500 +known <- TRUE +n <- 50 +p <- 100 +maxsteps <- 8 +sparsity <- 5 +snr <- 2 +index <- 1:p + +x <- matrix(rnorm(n*p), nrow=n) + +instance <- function(n, p, sparsity, snr, maxsteps) { + y <- rnorm(n) + if (sparsity > 0) { + beta <- rep(0, p) + beta[1:sparsity] <- snr * sample(c(-1,1), sparsity, replace=T) + y <- y + x %*% beta + } + y <- y - mean(y) + fit <- groupfs(x, y, index, maxsteps=maxsteps, sigma=1, intercept=F, center=F, normalize=F) + fitfs <- fs(x, y, maxsteps=maxsteps, intercept=F, normalize=F) + if (any(fit$action != fitfs$action)) stop("Model paths did not agree") + pvfs <- fsInf(fitfs, sigma=1, k = maxsteps, type = "all") + pv <- groupfsInf(fit) + return(list(vars = fit$action, pvals = pv$pv, selpvals = pvfs$pv)) +} + +time <- system.time({ + output <- replicate(niters, instance(n, p, sparsity, snr, maxsteps)) +}) + +vars <- do.call(c, list(output[1,])) +pvals <- do.call(c, list(output[2,])) +selpvals <- do.call(c, list(output[3,])) + +save(vars, pvals, selpvals, + file = paste0("results/selected", + "_", ifelse(known, "TC", "TF"), + "_n", n, + "_p", p, + "_sparsity", sparsity, + "_snr", as.character(snr), + ".RData")) + +print(time) + From cb3ef4ab90389fe482d6f3628dea5018eafe0f7d Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Thu, 21 Jul 2016 16:56:06 -0700 Subject: [PATCH 146/493] Moving some common functions --- selectiveInference/R/funs.common.R | 50 ++++++++++-- selectiveInference/R/funs.fixed.R | 57 ++++++------- selectiveInference/R/funs.lar.R | 123 +++++++++++------------------ 3 files changed, 115 insertions(+), 115 deletions(-) diff --git a/selectiveInference/R/funs.common.R b/selectiveInference/R/funs.common.R index 7a4b9aa..5945700 100644 --- a/selectiveInference/R/funs.common.R +++ b/selectiveInference/R/funs.common.R @@ -32,7 +32,7 @@ standardize <- function(x, y, intercept, normalize) { y = as.numeric(y) n = nrow(x) p = ncol(x) - + if (intercept) { bx = colMeans(x) by = mean(y) @@ -57,10 +57,10 @@ standardize <- function(x, y, intercept, normalize) { # Interpolation function to get coefficients coef.interpolate <- function(betas, s, knots, dec=TRUE) { - # Sort the s values + # Sort the s values o = order(s,dec=dec) s = s[o] - + k = length(s) mat = matrix(rep(knots,each=k),nrow=k) if (dec) b = s >= mat @@ -72,7 +72,7 @@ coef.interpolate <- function(betas, s, knots, dec=TRUE) { p = numeric(k) p[i] = 0 p[!i] = ((s-knots[blo])/(knots[bhi]-knots[blo]))[!i] - + beta = t((1-p)*t(betas[,blo,drop=FALSE]) + p*t(betas[,bhi,drop=FALSE])) colnames(beta) = as.character(round(s,3)) rownames(beta) = NULL @@ -100,7 +100,7 @@ checkargs.misc <- function(sigma=NULL, alpha=NULL, k=NULL, mult=NULL, ntimes=NULL, beta=NULL, lambda=NULL, tol.beta=NULL, tol.kkt=NULL, bh.q=NULL) { - + if (!is.null(sigma) && sigma <= 0) stop("sigma must be > 0") if (!is.null(lambda) && lambda < 0) stop("lambda must be >= 0") if (!is.null(alpha) && (alpha <= 0 || alpha >= 1)) stop("alpha must be between 0 and 1") @@ -144,3 +144,43 @@ estimateSigma <- function(x, y, intercept=TRUE, standardize=TRUE) { return(list(sigmahat=sigma, df=nz)) } +# Update the QR factorization, after a column has been +# added. Here Q1 is m x n, Q2 is m x k, and R is n x n. + +updateQR <- function(Q1,Q2,R,col) { + m = nrow(Q1) + n = ncol(Q1) + k = ncol(Q2) + + a = .C("update1", + Q2=as.double(Q2), + w=as.double(t(Q2)%*%col), + m=as.integer(m), + k=as.integer(k), + dup=FALSE, + package="selectiveInference") + + Q2 = matrix(a$Q2,nrow=m) + w = c(t(Q1)%*%col,a$w) + + # Re-structure: delete a column from Q2, add one to + # Q1, and expand R + Q1 = cbind(Q1,Q2[,1]) + Q2 = Q2[,-1,drop=FALSE] + R = rbind(R,rep(0,n)) + R = cbind(R,w[Seq(1,n+1)]) + + return(list(Q1=Q1,Q2=Q2,R=R)) +} + +# Moore-Penrose pseudo inverse for symmetric matrices + +pinv <- function(A, tol=.Machine$double.eps) { + e = eigen(A) + v = Re(e$vec) + d = Re(e$val) + d[d > tol] = 1/d[d > tol] + d[d < tol] = 0 + if (length(d)==1) return(v*d*v) + else return(v %*% diag(d) %*% t(v)) +} diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 4263c0b..e1b9230 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -6,11 +6,11 @@ fixedLassoInf <- function(x, y, beta, lambda, family=c("gaussian","binomial","co sigma=NULL, alpha=0.1, type=c("partial","full"), tol.beta=1e-5, tol.kkt=0.1, gridrange=c(-100,100), bits=NULL, verbose=FALSE) { - + family = match.arg(family) this.call = match.call() type = match.arg(type) - + if(family=="binomial") { if(type!="partial") stop("Only type= partial allowed with binomial family") out=fixedLogitLassoInf(x,y,beta,lambda,alpha=alpha, type="partial", tol.beta=tol.beta, tol.kkt=tol.kkt, @@ -20,24 +20,24 @@ sigma=NULL, alpha=0.1, else if(family=="cox") { if(type!="partial") stop("Only type= partial allowed with Cox family") out=fixedCoxLassoInf(x,y,status,beta,lambda,alpha=alpha, type="partial",tol.beta=tol.beta, - tol.kkt=tol.kkt, gridrange=gridrange, bits=bits, verbose=verbose,this.call=this.call) + tol.kkt=tol.kkt, gridrange=gridrange, bits=bits, verbose=verbose,this.call=this.call) return(out) } - + else{ - - + + checkargs.xy(x,y) if (missing(beta) || is.null(beta)) stop("Must supply the solution beta") - if (missing(lambda) || is.null(lambda)) stop("Must supply the tuning parameter value lambda") + if (missing(lambda) || is.null(lambda)) stop("Must supply the tuning parameter value lambda") checkargs.misc(beta=beta,lambda=lambda,sigma=sigma,alpha=alpha, gridrange=gridrange,tol.beta=tol.beta,tol.kkt=tol.kkt) if (!is.null(bits) && !requireNamespace("Rmpfr",quietly=TRUE)) { warning("Package Rmpfr is not installed, reverting to standard precision") bits = NULL } - + n = nrow(x) p = ncol(x) beta = as.numeric(beta) @@ -66,14 +66,14 @@ else{ "(to within specified tolerances). You might try rerunning", "glmnet with a lower setting of the", "'thresh' parameter, for a more accurate convergence.")) - + # Get lasso polyhedral region, of form Gy >= u out = fixedLasso.poly(x,y,beta,lambda,vars) G = out$G u = out$u # Check polyhedral region - tol.poly = 0.01 + tol.poly = 0.01 if (min(G %*% y - u) < -tol.poly * sqrt(sum(y^2))) stop(paste("Polyhedral constraints not satisfied; you must recompute beta", "more accurately. With glmnet, make sure to use exact=TRUE in coef(),", @@ -94,9 +94,9 @@ else{ "you may want to use the estimateSigma function")) } } - + k = length(vars) - pv = vlo = vup = numeric(k) + pv = vlo = vup = numeric(k) vmat = matrix(0,k,n) ci = tailarea = matrix(0,k,2) sign = numeric(k) @@ -104,7 +104,7 @@ else{ if (type=="full" & p > n) warning(paste("type='full' does not make sense when p > n;", "switching to type='partial'")) - + if (type=="partial" || p > n) { xa = x[,vars,drop=F] M = pinv(crossprod(xa)) %*% t(xa) @@ -113,17 +113,17 @@ else{ M = pinv(crossprod(x)) %*% t(x) M = M[vars,,drop=F] } - + for (j in 1:k) { if (verbose) cat(sprintf("Inference for variable %i ...\n",vars[j])) - + vj = M[j,] mj = sqrt(sum(vj^2)) vj = vj / mj # Standardize (divide by norm of vj) sign[j] = sign(sum(vj*y)) vj = sign[j] * vj a = poly.pval(y,G,u,vj,sigma,bits) - pv[j] = a$pv + pv[j] = a$pv vlo[j] = a$vlo * mj # Unstandardize (mult by norm of vj) vup[j] = a$vup * mj # Unstandardize (mult by norm of vj) vmat[j,] = vj * mj * sign[j] # Unstandardize (mult by norm of vj) @@ -133,12 +133,12 @@ else{ ci[j,] = a$int * mj # Unstandardize (mult by norm of vj) tailarea[j,] = a$tailarea } - + out = list(type=type,lambda=lambda,pv=pv,ci=ci, tailarea=tailarea,vlo=vlo,vup=vup,vmat=vmat,y=y, vars=vars,sign=sign,sigma=sigma,alpha=alpha, sd=sigma*sqrt(rowSums(vmat^2)), - coef0=vmat%*%y, + coef0=vmat%*%y, call=this.call) class(out) = "fixedLassoInf" return(out) @@ -160,7 +160,7 @@ function(x, y, beta, lambda, a) { P = diag(1,nrow(xa)) - xa %*% xap #NOTE: inactive constraints not needed below! - + G = -rbind( # 1/lambda * t(xac) %*% P, # -1/lambda * t(xac) %*% P, @@ -175,17 +175,6 @@ function(x, y, beta, lambda, a) { return(list(G=G,u=u)) } -# Moore-Penrose pseudo inverse for symmetric matrices - -pinv <- function(A, tol=.Machine$double.eps) { - e = eigen(A) - v = Re(e$vec) - d = Re(e$val) - d[d > tol] = 1/d[d > tol] - d[d < tol] = 0 - if (length(d)==1) return(v*d*v) - else return(v %*% diag(d) %*% t(v)) -} ############################## @@ -195,7 +184,7 @@ print.fixedLassoInf <- function(x, tailarea=TRUE, ...) { cat(sprintf("\nStandard deviation of noise (specified or estimated) sigma = %0.3f\n", x$sigma)) - + cat(sprintf("\nTesting results at lambda = %0.3f, with alpha = %0.3f\n",x$lambda,x$alpha)) cat("",fill=T) tab = cbind(x$vars, @@ -209,7 +198,7 @@ print.fixedLassoInf <- function(x, tailarea=TRUE, ...) { } rownames(tab) = rep("",nrow(tab)) print(tab) - + cat(sprintf("\nNote: coefficients shown are %s regression coefficients\n", ifelse(x$type=="partial","partial","full"))) invisible() @@ -220,10 +209,10 @@ print.fixedLassoInf <- function(x, tailarea=TRUE, ...) { # if(nsamp < 10) stop("More Monte Carlo samples required for estimation") # if (length(sigma)!=1) stop("sigma should be a number > 0") # if (sigma<=0) stop("sigma should be a number > 0") - + # n = nrow(x) # eps = sigma*matrix(rnorm(nsamp*n),n,nsamp) # lambda = 2*mean(apply(t(x)%*%eps,2,max)) # return(lambda) #} - + diff --git a/selectiveInference/R/funs.lar.R b/selectiveInference/R/funs.lar.R index 26669ca..f01ee3d 100644 --- a/selectiveInference/R/funs.lar.R +++ b/selectiveInference/R/funs.lar.R @@ -17,7 +17,7 @@ lar <- function(x, y, maxsteps=2000, minlam=0, intercept=TRUE, normalize=TRUE, this.call = match.call() checkargs.xy(x=x,y=y) - + # Center and scale, etc. obj = standardize(x,y,intercept,normalize) x = obj$x @@ -49,7 +49,7 @@ lar <- function(x, y, maxsteps=2000, minlam=0, intercept=TRUE, normalize=TRUE, action = numeric(buf) # Actions taken df = numeric(buf) # Degrees of freedom beta = matrix(0,p,buf) # LAR estimates - + lambda[1] = hit action[1] = ihit df[1] = 0 @@ -91,14 +91,14 @@ lar <- function(x, y, maxsteps=2000, minlam=0, intercept=TRUE, normalize=TRUE, Q1 = Q[,1,drop=FALSE]; Q2 = Q[,-1,drop=FALSE] R = qr.R(obj) - + # Throughout the algorithm, we will maintain # the decomposition X1 = Q1*R. Dimenisons: # X1: n x r # Q1: n x r # Q2: n x (n-r) # R: r x r - + while (k<=maxsteps && lambda[k-1]>=minlam) { ########## # Check if we've reached the end of the buffer @@ -118,7 +118,7 @@ lar <- function(x, y, maxsteps=2000, minlam=0, intercept=TRUE, normalize=TRUE, b = backsolve(R,backsolve(R,s,transpose=TRUE)) aa = as.numeric(t(X2) %*% (y - X1 %*% a)) bb = as.numeric(t(X2) %*% (X1 %*% b)) - + # If the inactive set is empty, nothing will hit if (r==min(n-intercept,p)) hit = 0 @@ -128,9 +128,9 @@ lar <- function(x, y, maxsteps=2000, minlam=0, intercept=TRUE, normalize=TRUE, hits = aa/(shits-bb) # Make sure none of the hitting times are larger - # than the current lambda + # than the current lambda hits[hits>lambda[k-1]] = 0 - + ihit = which.max(hits) hit = hits[ihit] shit = shits[ihit] @@ -138,13 +138,13 @@ lar <- function(x, y, maxsteps=2000, minlam=0, intercept=TRUE, normalize=TRUE, # Stop if the next critical point is negative if (hit<=0) break - + # Record the critical lambda and solution lambda[k] = hit action[k] = I[ihit] df[k] = r beta[A,k] = a-hit*b - + # Gamma matrix! if (gi + 2*p > nrow(Gamma)) Gamma = rbind(Gamma,matrix(0,2*p+gbuf,n)) X2perp = X2 - X1 %*% backsolve(R,t(Q1)%*%X2) @@ -162,7 +162,7 @@ lar <- function(x, y, maxsteps=2000, minlam=0, intercept=TRUE, normalize=TRUE, crit = (t(c[,-ihit])%*%y - ratio*sum(c[,ihit]*y))/(1-ratio) mp[k] = max(max(crit[ip]),0) } - + # Update all of the variables r = r+1 A = c(A,I[ihit]) @@ -176,12 +176,12 @@ lar <- function(x, y, maxsteps=2000, minlam=0, intercept=TRUE, normalize=TRUE, Q1 = obj$Q1 Q2 = obj$Q2 R = obj$R - + if (verbose) { cat(sprintf("\n%i. lambda=%.3f, adding variable %i, |A|=%i...", k,hit,A[r],r)) } - + # Step counter k = k+1 } @@ -195,7 +195,7 @@ lar <- function(x, y, maxsteps=2000, minlam=0, intercept=TRUE, normalize=TRUE, nk = nk[Seq(1,k-1)] mp = mp[Seq(1,k-1)] vreg = vreg[Seq(1,k-1),,drop=FALSE] - + # If we reached the maximum number of steps if (k>maxsteps) { if (verbose) { @@ -215,11 +215,11 @@ lar <- function(x, y, maxsteps=2000, minlam=0, intercept=TRUE, normalize=TRUE, completepath = FALSE bls = NULL } - + # Otherwise, note that we completed the path else { completepath = TRUE - + # Record the least squares solution. Note that # we have already computed this bls = rep(0,p) @@ -227,19 +227,19 @@ lar <- function(x, y, maxsteps=2000, minlam=0, intercept=TRUE, normalize=TRUE, } if (verbose) cat("\n") - + # Adjust for the effect of centering and scaling if (intercept) df = df+1 if (normalize) beta = beta/sx if (normalize && completepath) bls = bls/sx - + # Assign column names colnames(beta) = as.character(round(lambda,3)) out = list(lambda=lambda,action=action,sign=s,df=df,beta=beta, completepath=completepath,bls=bls, Gamma=Gamma,nk=nk,vreg=vreg,mp=mp,x=x,y=y,bx=bx,by=by,sx=sx, - intercept=intercept,normalize=normalize,call=this.call) + intercept=intercept,normalize=normalize,call=this.call) class(out) = "lar" return(out) } @@ -253,7 +253,7 @@ lar <- function(x, y, maxsteps=2000, minlam=0, intercept=TRUE, normalize=TRUE, downdateQR <- function(Q1,Q2,R,col) { m = nrow(Q1) n = ncol(Q1) - + a = .C("downdate1", Q1=as.double(Q1), R=as.double(R), @@ -275,35 +275,6 @@ downdateQR <- function(Q1,Q2,R,col) { return(list(Q1=Q1,Q2=Q2,R=R)) } -# Update the QR factorization, after a column has been -# added. Here Q1 is m x n, Q2 is m x k, and R is n x n. - -updateQR <- function(Q1,Q2,R,col) { - m = nrow(Q1) - n = ncol(Q1) - k = ncol(Q2) - - a = .C("update1", - Q2=as.double(Q2), - w=as.double(t(Q2)%*%col), - m=as.integer(m), - k=as.integer(k), - dup=FALSE, - package="selectiveInference") - - Q2 = matrix(a$Q2,nrow=m) - w = c(t(Q1)%*%col,a$w) - - # Re-structure: delete a column from Q2, add one to - # Q1, and expand R - Q1 = cbind(Q1,Q2[,1]) - Q2 = Q2[,-1,drop=FALSE] - R = rbind(R,rep(0,n)) - R = cbind(R,w[Seq(1,n+1)]) - - return(list(Q1=Q1,Q2=Q2,R=R)) -} - ############################## # Coefficient function for lar @@ -320,7 +291,7 @@ coef.lar <- function(object, s, mode=c("step","lambda"), ...) { lambda = object$lambda beta = object$beta } - + if (mode=="step") { if (min(s)<0 || max(s)>k) stop(sprintf("s must be between 0 and %i",k)) knots = 1:k @@ -330,7 +301,7 @@ coef.lar <- function(object, s, mode=c("step","lambda"), ...) { knots = lambda dec = TRUE } - + return(coef.interpolate(beta,s,knots,dec)) } @@ -350,9 +321,9 @@ predict.lasso <- predict.lar # Lar inference function -larInf <- function(obj, sigma=NULL, alpha=0.1, k=NULL, type=c("active","all","aic"), +larInf <- function(obj, sigma=NULL, alpha=0.1, k=NULL, type=c("active","all","aic"), gridrange=c(-100,100), bits=NULL, mult=2, ntimes=2, verbose=FALSE) { - + this.call = match.call() type = match.arg(type) checkargs.misc(sigma=sigma,alpha=alpha,k=k, @@ -364,7 +335,7 @@ larInf <- function(obj, sigma=NULL, alpha=0.1, k=NULL, type=c("active","all","ai warning("Package Rmpfr is not installed, reverting to standard precision") bits = NULL } - + k = min(k,length(obj$action)) # Round to last step x = obj$x y = obj$y @@ -385,11 +356,11 @@ larInf <- function(obj, sigma=NULL, alpha=0.1, k=NULL, type=c("active","all","ai "you may want to use the estimateSigma function")) } } - + pv.spacing = pv.modspac = pv.covtest = khat = NULL - + if (type == "active") { - pv = vlo = vup = numeric(k) + pv = vlo = vup = numeric(k) vmat = matrix(0,k,n) ci = tailarea = matrix(0,k,2) pv.spacing = pv.modspac = pv.covtest = numeric(k) @@ -399,7 +370,7 @@ larInf <- function(obj, sigma=NULL, alpha=0.1, k=NULL, type=c("active","all","ai for (j in 1:k) { if (verbose) cat(sprintf("Inference for variable %i ...\n",vars[j])) - + Gj = G[1:nk[j],] uj = rep(0,nk[j]) vj = vreg[j,] @@ -411,12 +382,12 @@ larInf <- function(obj, sigma=NULL, alpha=0.1, k=NULL, type=c("active","all","ai vlo[j] = a$vlo * mj / sxj # Unstandardize (mult by norm of vj / sxj) vup[j] = a$vup * mj / sxj # Unstandardize (mult by norm of vj) vmat[j,] = vj * mj / sxj # Unstandardize (mult by norm of vj / sxj) - + a = poly.int(y,Gj,uj,vj,sigma,alpha,gridrange=gridrange, flip=(sign[j]==-1),bits=bits) - ci[j,] = a$int * mj / sxj # Unstandardize (mult by norm of vj / sxj) + ci[j,] = a$int * mj / sxj # Unstandardize (mult by norm of vj / sxj) tailarea[j,] = a$tailarea - + pv.spacing[j] = spacing.pval(obj,sigma,j) pv.modspac[j] = modspac.pval(obj,sigma,j) pv.covtest[j] = covtest.pval(obj,sigma,j) @@ -424,7 +395,7 @@ larInf <- function(obj, sigma=NULL, alpha=0.1, k=NULL, type=c("active","all","ai khat = forwardStop(pv,alpha) } - + else { if (type == "aic") { out = aicStop(x,y,obj$action[1:k],obj$df[1:k],sigma,mult,ntimes) @@ -439,22 +410,22 @@ larInf <- function(obj, sigma=NULL, alpha=0.1, k=NULL, type=c("active","all","ai u = rep(0,nk[k]) kk = k } - - pv = vlo = vup = numeric(kk) + + pv = vlo = vup = numeric(kk) vmat = matrix(0,kk,n) ci = tailarea = matrix(0,kk,2) sign = numeric(kk) vars = obj$action[1:kk] xa = x[,vars] M = pinv(crossprod(xa)) %*% t(xa) - + for (j in 1:kk) { if (verbose) cat(sprintf("Inference for variable %i ...\n",vars[j])) - + vj = M[j,] mj = sqrt(sum(vj^2)) vj = vj / mj # Standardize (divide by norm of vj) - sign[j] = sign(sum(vj*y)) + sign[j] = sign(sum(vj*y)) vj = sign[j] * vj Gj = rbind(G,vj) uj = c(u,0) @@ -472,7 +443,7 @@ larInf <- function(obj, sigma=NULL, alpha=0.1, k=NULL, type=c("active","all","ai tailarea[j,] = a$tailarea } } - + out = list(type=type,k=k,khat=khat,pv=pv,ci=ci, tailarea=tailarea,vlo=vlo,vup=vup,vmat=vmat,y=y, pv.spacing=pv.spacing,pv.modspac=pv.modspac,pv.covtest=pv.covtest, @@ -488,10 +459,10 @@ spacing.pval <- function(obj, sigma, k) { v = obj$Gamma[obj$nk[k],] sd = sigma*sqrt(sum(v^2)) a = obj$mp[k] - + if (k==1) b = Inf else b = obj$lambda[k-1] - + return(tnorm.surv(obj$lambda[k],0,sd,a,b)) } @@ -505,7 +476,7 @@ modspac.pval <- function(obj, sigma, k) { warning(sprintf("Modified spacing p-values at step %i require %i steps of the lar path",k,k+1)) return(NA) } - + if (k==1) b = Inf else b = obj$lambda[k-1] @@ -543,7 +514,7 @@ covtest.pval <- function(obj, sigma, k) { print.lar <- function(x, ...) { cat("\nCall:\n") dput(x$call) - + cat("\nSequence of LAR moves:\n") nsteps = length(x$action) tab = cbind(1:nsteps,x$action,x$sign) @@ -566,7 +537,7 @@ print.larInf <- function(x, tailarea=TRUE, ...) { tab = cbind(1:length(x$pv),x$vars, round(x$sign*x$vmat%*%x$y,3), round(x$sign*x$vmat%*%x$y/(x$sigma*sqrt(rowSums(x$vmat^2))),3), - round(x$pv,3),round(x$ci,3),round(x$pv.spacing,3),round(x$pv.cov,3)) + round(x$pv,3),round(x$ci,3),round(x$pv.spacing,3),round(x$pv.cov,3)) colnames(tab) = c("Step", "Var", "Coef", "Z-score", "P-value", "LowConfPt", "UpConfPt", "Spacing", "CovTest") if (tailarea) { @@ -609,7 +580,7 @@ print.larInf <- function(x, tailarea=TRUE, ...) { } rownames(tab) = rep("",nrow(tab)) print(tab) - + cat(sprintf("\nEstimated stopping point from AIC rule = %i\n",x$khat)) } @@ -618,7 +589,7 @@ print.larInf <- function(x, tailarea=TRUE, ...) { plot.lar <- function(x, xvar=c("norm","step","lambda"), breaks=TRUE, omit.zeros=TRUE, var.labels=TRUE, ...) { - + if (x$completepath) { k = length(x$action)+1 lambda = c(x$lambda,0) @@ -629,7 +600,7 @@ plot.lar <- function(x, xvar=c("norm","step","lambda"), breaks=TRUE, beta = x$beta } p = nrow(beta) - + xvar = match.arg(xvar) if (xvar=="norm") { xx = colSums(abs(beta)) @@ -656,6 +627,6 @@ plot.lar <- function(x, xvar=c("norm","step","lambda"), breaks=TRUE, abline(h=0,lwd=2) matplot(xx,t(beta),type="l",lty=1,add=TRUE) if (breaks) abline(v=xx,lty=2) - if (var.labels) axis(4,at=beta[,k],labels=1:p,cex=0.8,adj=0) + if (var.labels) axis(4,at=beta[,k],labels=1:p,cex=0.8,adj=0) invisible() } From c6015aa32fd973d295760d9cfcfd4e4d78b1b9ab Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Thu, 27 Oct 2016 14:55:53 +0100 Subject: [PATCH 147/493] cvMakeFolds now has permutation built in --- forLater/josh/selectiveInference/R/cv.R | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/forLater/josh/selectiveInference/R/cv.R b/forLater/josh/selectiveInference/R/cv.R index dfd6395..fcc6e54 100644 --- a/forLater/josh/selectiveInference/R/cv.R +++ b/forLater/josh/selectiveInference/R/cv.R @@ -1,11 +1,18 @@ # ------------------------------------------------ # Cross-validation, preliminary -cvMakeFolds <- function(x, nfolds = 10) { - #inds <- sample(1:nrow(x), replace=FALSE) - inds <- 1:nrow(x) +cvMakeFolds <- function(x, nfolds = 5) { + inds <- sample(1:nrow(x), replace=FALSE) + #inds <- 1:nrow(x) foldsize <- floor(nrow(x)/nfolds) - lapply(1:nfolds, function(f) return(inds[1:foldsize+(f-1)*foldsize])) + folds <- lapply(1:nfolds, function(f) return(inds[1:foldsize+(f-1)*foldsize])) + if (nfolds*foldsize < nrow(x)) { + # remainder observations added to first several folds + for (i in 1:(nrow(x) - nfolds*foldsize)) { + folds[[i]] <- c(folds[[i]], inds[nfolds*foldsize + i]) + } + } + return(folds) } ############################################ @@ -87,6 +94,7 @@ cvfs <- function(x, y, index = 1:ncol(x), maxsteps, sigma = NULL, intercept = TR fold <- folds[[f]] fit <- groupfs(X[-fold,], Y[-fold], index=index, maxsteps=maxsteps, sigma=sigma, intercept=FALSE, center=FALSE, normalize=FALSE) fit$fold <- fold + # Why is this commented out? ## projections[[f]] <- lapply(fit$projections, function(step.projs) { ## lapply(step.projs, function(proj) { ## # Reduce from n by n matrix to svdu_thresh From c467ba2267a21457bd4bbf3cee61c1eba5ad5b25 Mon Sep 17 00:00:00 2001 From: Joshua Loftus Date: Thu, 27 Oct 2016 15:01:33 +0100 Subject: [PATCH 148/493] Beginning cvlar implementation --- forLater/josh/selectiveInference/R/cv.R | 45 +++++++++++++++++++ forLater/josh/sim.cvlar.R | 58 +++++++++++++++++++++++++ 2 files changed, 103 insertions(+) create mode 100644 forLater/josh/sim.cvlar.R diff --git a/forLater/josh/selectiveInference/R/cv.R b/forLater/josh/selectiveInference/R/cv.R index fcc6e54..046a462 100644 --- a/forLater/josh/selectiveInference/R/cv.R +++ b/forLater/josh/selectiveInference/R/cv.R @@ -130,3 +130,48 @@ cvfs <- function(x, y, index = 1:ncol(x), maxsteps, sigma = NULL, intercept = TR invisible(fit) } + +cvlar <- function(x, y) { # other args + folds <- cvMakeFolds(x) + models <- lapply(folds, function(fold) { + x.train <- X + y.train <- Y + x.train[fold,] <- 0 + y.train[fold] <- 0 + x.test <- X[fold,] + y.test <- Y[fold] + larpath.train <- lar(x.train, y.train, maxsteps = maxsteps, intercept = F, normalize = F) + return(lff) + }) + + active.sets <- lapply(models, function(model) model$action) + lambdas <- lapply(models, function(model) model$lambda) + lmin <- min(unlist(lambdas)) + +# Interpolate lambda grid or parametrize by steps? +# interpolation probably requires re-writing cvRSSquads for +# penalized fits in order to make sense + +# do steps for now just to have something that works? + + RSSquads <- list() + for (s in 1:maxsteps) { + initial.active <- lapply(active.sets, function(a) a[1:s]) + RSSquads[[s]] <- cvRSSquad(X, folds, initial.active) + } + + RSSs <- lapply(RSSquads, function(Q) t(Y) %*% Q %*% Y) + sstar <- which.min(RSSs) + quadstar <- RSSquads[sstar][[1]] + + RSSquads <- lapply(RSSquads, function(quad) quad - quadstar) + RSSquads[[sstar]] <- NULL # remove the all zeroes case + + fit <- lar(X, Y, maxsteps=sstar, intercept = F, normalize = F) + +# Very tall Gamma encoding all cv-model paths + Gamma <- do.call(rbind, lapply(models, function(model) return(model$Gamma))) + +# more to do here +} + diff --git a/forLater/josh/sim.cvlar.R b/forLater/josh/sim.cvlar.R new file mode 100644 index 0000000..9169cc3 --- /dev/null +++ b/forLater/josh/sim.cvlar.R @@ -0,0 +1,58 @@ +# Choices + +# RSS: least-squares or penalized beta? +# depends on final model. Go with least-squares for now + +# fixed vs lar? (lar, apparently) +# fixed probably slower, but advantage of same lambda grid? +# is same lambda grid necessary? -- doesn't lar algorithm give all possible models anyway? +# i.e. for non-knot lambda just find where it is in lar path, take corresponding model + +# groups? later + +# TODO + +# copy larInf or groupfsInf? +# larInf: add CV quadratic constraints* & break/fix p-value computation +# -------- *but can we even use the ydecomp we use for quadratic? +# groupfsInf: some ugly rewriting, no cumprojs etc, but straightforward +# -------- downside: need to implement larInf basically + +# larInf +# [ ] is.null(sigma) don't estimate it + +# plan: +# expand Gamma for [-fold] indices? +# stack all the Gammas? or iterate through them? +# work backward from poly.pval <- larInf + + +# big picture / long term +# what OOP kind of design would lend itself to easily implementing more cv things? + +# Gamma: something x n +# Gamma %*% y >= 0 + +# pass 0-padded x[-fold] and y[-fold] to lar? + +library(selectiveInference) +setwd("/Users/joftius/Dropbox/work/R-software/forLater/josh") +source("selectiveInference/R/cv.R") + +set.seed(1) +n <- 100 +p <- 50 +maxsteps <- 10 +sparsity <- 3 +snr <- 2 +rho <- 0.1 +nfolds <- 5 + +x <- matrix(rnorm(n*p), nrow=n) +y <- rnorm(n) +beta <- rep(0, p) +beta[1:sparsity] <- 2* sqrt(2*log(p)/n) * sample(c(-1,1), sparsity, replace=T) +y <- y + x %*% beta +my <- mean(y) +y <- y - my + From 66454bfd8fff1a85d9b67353a6ea6eb99835466f Mon Sep 17 00:00:00 2001 From: yuvalbenjamini Date: Tue, 27 Dec 2016 13:00:12 +0200 Subject: [PATCH 149/493] bug fixes in funs.constraint.R for matrix handling and univariate sampling, and some added documentation. Aligns version of funs.constraints.R with the restrictedNormal package. --- forLater/maxZ/funs.constraints.R | 170 +++++++++++++++++++------------ 1 file changed, 107 insertions(+), 63 deletions(-) diff --git a/forLater/maxZ/funs.constraints.R b/forLater/maxZ/funs.constraints.R index 3bf6b77..a04e34e 100644 --- a/forLater/maxZ/funs.constraints.R +++ b/forLater/maxZ/funs.constraints.R @@ -2,11 +2,16 @@ # Some utilities for affine constraints # -# +# # compute the square-root and inverse square-root of a non-negative # definite matrix # +#' Compute the square-root and inverse square-root of a non-negative definite matrix. +#' @param S matrix +#' @param rank rank of svd +#' +#' factor_covariance = function(S, rank=NA) { if (is.na(rank)) { rank = nrow(S) @@ -26,9 +31,16 @@ factor_covariance = function(S, rank=NA) { # law is Z \sim N(mean_param, covariance) subject to constraints linear_part %*% Z \leq offset +#' Transform non-iid problem into iid problem +#' @param linear_part matrix, linear part of constraints +#' @param offset vector, bias of constraints +#' @param mean_param vector of unconditional means +#' @param covariance vector of unconditional covariance +#' @return new \code{linear_part} and \code{offset} for 0-mean iid covariance problem, +#' and functions that map between the two problems. whiten_constraint = function(linear_part, offset, mean_param, covariance) { - factor_cov = factor_covariance(covariance) + factor_cov = factor_covariance(as.matrix(covariance)) sqrt_cov = factor_cov$sqrt_cov sqrt_inv = factor_cov$sqrt_inv @@ -41,7 +53,6 @@ whiten_constraint = function(linear_part, offset, mean_param, covariance) { new_A = new_A / scaling new_b = new_b / scaling - # TODO: check these functions will behave when Z is a matrix. inverse_map = function(Z) { # broadcasting here @@ -51,7 +62,7 @@ whiten_constraint = function(linear_part, offset, mean_param, covariance) { forward_map = function(W) { return(sqrt_inv %*% (W - mean_param)) - } + } return(list(linear_part=new_A, offset=new_b, @@ -59,65 +70,54 @@ whiten_constraint = function(linear_part, offset, mean_param, covariance) { forward_map=forward_map)) } -# -# sample from the law -# -# Z \sim N(mean_param, covariance) subject to constraints linear_part %*% Z \leq offset - -sample_from_constraints = function(linear_part, - offset, - mean_param, - covariance, - initial_point, # point must be feasible for constraints +#' Sample from multivariate normal distribution under affine restrictions +#' @description +#' \code{sample_from_constraints} returns a sample from the conditional +#' multivariate normal Z~ N(mean,covariance) s.t. A*Z <= B +#' +#' @param linear_part r x d matrix for r restrictions and d dimension of Z +#' @param offset r-dim vector of offsets +#' @param mean_param d-dim mean vector of the unconditional normal +#' @param covariance d x d covariance matrix of unconditional normal +#' @param initial_point d-dim vector that initializes the sampler (must meet restrictions) +#' @param ndraw size of sample +#' @param burnin samples to throw away before storing +#' @return Z ndraw x d matrix of samples +#' @export +#' @examples +#' +#' truncatedNorm = function(1000, c(0,0,0), identity(3), lower = -1, +#' upper = c(2,1,2), start.value = c(0,0,0)) +#' +#' constr = thresh2constraints(3, lower = c(1,1,1)) +#' +#' samp = sample_from_constraints(linear_part = constr$linear_part, +#' offset= constr$offset, +#' mean_param = c(0,0,0), +#' covariance = diag(3), +#' initial_point = c(1.5,1.5,1.5), +#' ndraw=100, +#' burnin=2000) +#' + +sample_from_constraints = function(linear_part, + offset, + mean_param, + covariance, + initial_point, ndraw=8000, - burnin=2000, - accept_reject_params=NA) #TODO: implement accept reject check + burnin=2000) { - whitened_con = whiten_constraint(linear_part, + whitened_con = whiten_constraint(linear_part, offset, - mean_param, + mean_param, covariance) - white_initial = whitened_con$forward_map(initial_point) - -# # try 100 draws of accept reject -# # if we get more than 50 good draws, then just return a smaller sample -# # of size (burnin+ndraw)/5 - -# if accept_reject_params: -# use_hit_and_run = False -# num_trial, min_accept, num_draw = accept_reject_params - -# def _accept_reject(sample_size, linear_part, offset): -# Z_sample = np.random.standard_normal((100, linear_part.shape[1])) -# constraint_satisfied = (np.dot(Z_sample, linear_part.T) - -# offset[None,:]).max(1) < 0 -# return Z_sample[constraint_satisfied] - -# Z_sample = _accept_reject(100, -# white_con.linear_part, -# white_con.offset) - -# if Z_sample.shape[0] >= min_accept: -# while True: -# Z_sample = np.vstack([Z_sample, -# _accept_reject(num_draw / 5, -# white_con.linear_part, -# white_con.offset)]) -# if Z_sample.shape[0] > num_draw: -# break -# white_samples = Z_sample -# else: -# use_hit_and_run = True -# else: -# use_hit_and_run = True - - use_hit_and_run = TRUE - - if (use_hit_and_run) { - - white_linear = whitened_con$linear_part - white_offset = whitened_con$offset + white_initial = whitened_con$forward_map(initial_point) + + + white_linear = whitened_con$linear_part + white_offset = whitened_con$offset # Inf cannot be used in C code # In theory, these rows can be dropped @@ -136,7 +136,7 @@ sample_from_constraints = function(linear_part, # normalize rows to have length 1 - scaling = apply(directions, 1, function(x) { return(sqrt(sum(x^2))) }) + scaling = apply(directions, 1, function(x) { return(sqrt(sum(x^2))) }) directions = directions / scaling ndirection = nrow(directions) @@ -177,10 +177,54 @@ sample_from_constraints = function(linear_part, } } else { Z_sample = matrix(rnorm(nstate * ndraw), nstate, ndraw) - } - } + } + + + Z = t(whitened_con$inverse_map(Z_sample)) + return(Z) +} - Z = t(whitened_con$inverse_map(Z_sample)) - return(Z) +#' Translate between coordinate thresholds and affine constraints +#' @description +#' \code{thresh2constraints} translates lower and upper constraints +#' on coordinates into linear and offset constraints (A*Z <= B). +#' lower and upper can have -Inf or Inf coordinates. +#' @param d dimension of vector +#' @param lower 1 or d-dim lower constraints +#' @param upper 1 or d-dim upper constraints +#' @export +thresh2constraints = function(d, lower = rep(-Inf, d), upper = rep(Inf,d)){ + stopifnot(is.element(length(lower),c(1,d))) + stopifnot(is.element(length(upper),c(1,d))) + + if (length(lower) == 1){ + lower = rep(lower, d) + } + if (length(upper) == 1){ + upper = rep(upper, d) + } + + + linear_part = matrix(ncol = d, nrow = 0) + offset = numeric(0) + lower_constraints = which(lower > -Inf) + for (l in lower_constraints){ + new_vec = rep(0,d) + new_vec[l] = -1 + linear_part = rbind(linear_part, new_vec) + offset = c(offset, -lower[l]) + } + upper_constraints = which(upper < Inf) + for (u in upper_constraints){ + new_vec = rep(0,d) + new_vec[u] = 1 + linear_part = rbind(linear_part, new_vec) + offset = c(offset, upper[u]) + } + + constraints = list(linear_part = linear_part, offset = offset) + return(constraints) } + + From 41145c70307e5b491984c883a6fa74dcc59fb617 Mon Sep 17 00:00:00 2001 From: tibs Date: Fri, 13 Jan 2017 11:42:03 -0800 Subject: [PATCH 150/493] rob --- selectiveInference/DESCRIPTION | 6 ++-- selectiveInference/NAMESPACE | 2 ++ selectiveInference/R/funs.fixed.R | 2 +- selectiveInference/R/funs.fixedLogit.R | 10 +++--- tests/test.fixed.R | 44 ++++++++++++++++++++++++++ 5 files changed, 56 insertions(+), 8 deletions(-) diff --git a/selectiveInference/DESCRIPTION b/selectiveInference/DESCRIPTION index 58232f1..5b317da 100644 --- a/selectiveInference/DESCRIPTION +++ b/selectiveInference/DESCRIPTION @@ -1,8 +1,8 @@ Package: selectiveInference Type: Package Title: Tools for Post-Selection Inference -Version: 1.1.3 -Date: 2016-02-8 +Version: 1.2.1 +Date: 2016-07-3 Author: Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid Maintainer: Rob Tibshirani @@ -14,5 +14,5 @@ Suggests: Rmpfr Description: New tools for post-selection inference, for use with forward stepwise regression, least angle regression, the - lasso, and the many means problem. + lasso, and the many means problem. The lasso function implements Gaussian, logistic and Cox survival models. License: GPL-2 diff --git a/selectiveInference/NAMESPACE b/selectiveInference/NAMESPACE index 4a764f9..1eba338 100644 --- a/selectiveInference/NAMESPACE +++ b/selectiveInference/NAMESPACE @@ -40,4 +40,6 @@ importFrom("graphics", abline, axis, matplot) importFrom("stats", dnorm, lsfit, pexp, pnorm, predict, qnorm, rnorm, sd, uniroot, dchisq, model.matrix, pchisq) importFrom("stats", "coef", "df", "lm", "pf") +importFrom("stats", "glm", "residuals", "vcov") + diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 4263c0b..9abd833 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -41,7 +41,7 @@ else{ n = nrow(x) p = ncol(x) beta = as.numeric(beta) - if (length(beta) != p) stop("beta must have length equal to ncol(x)") + if (length(beta) != p) stop("Since family='gaussian', beta must have length equal to ncol(x)") # If glmnet was run with an intercept term, center x and y if (intercept==TRUE) { diff --git a/selectiveInference/R/funs.fixedLogit.R b/selectiveInference/R/funs.fixedLogit.R index fb4092d..19c972d 100644 --- a/selectiveInference/R/funs.fixedLogit.R +++ b/selectiveInference/R/funs.fixedLogit.R @@ -18,7 +18,7 @@ fixedLogitLassoInf=function(x,y,beta,lambda,alpha=.1, type=c("partial"), tol.bet n=length(y) p=ncol(x) # I assume that intcpt was used - if(length(beta)!=p+1) stop("beta must be of length ncol(x)+1, that is, it should include an intercept") + if(length(beta)!=p+1) stop("Since family='binomial', beta must be of length ncol(x)+1, that is, it should include an intercept") nvar=sum(beta[-1]!=0) pv=vlo=vup=sd=rep(NA, nvar) ci=tailarea=matrix(NA,nvar,2) @@ -41,11 +41,12 @@ fixedLogitLassoInf=function(x,y,beta,lambda,alpha=.1, type=c("partial"), tol.bet etahat = xxm %*% bhat prhat = as.vector(exp(etahat) / (1 + exp(etahat))) ww=prhat*(1-prhat) - w=diag(ww) + # w=diag(ww) #check KKT z=etahat+(y-prhat)/ww - g= t(x)%*%w%*%(z-etahat)/lambda # negative gradient scaled by lambda + # g= t(x)%*%w%*%(z-etahat)/lambda # negative gradient scaled by lambda + gg=scale(t(x),FALSE,1/ww)%*%(z-etahat)/lambda # negative gradient scaled by lambda if (any(abs(g) > 1+tol.kkt) ) warning(paste("Solution beta does not satisfy the KKT conditions", "(to within specified tolerances)")) @@ -62,7 +63,8 @@ fixedLogitLassoInf=function(x,y,beta,lambda,alpha=.1, type=c("partial"), tol.bet "'thresh' parameter, for a more accurate convergence.")) #constraints for active variables - MM=solve(t(xxm)%*%w%*%xxm) + # MM=solve(t(xxm)%*%w%*%xxm) + MM=solve(scale(t(xxm),F,1/ww)%*%xxm) gm = c(0,-g[vars]*lambda) # gradient at LASSO solution, first entry is 0 because intercept is unpenalized # at exact LASSO solution it should be s2[-1] dbeta = MM %*% gm diff --git a/tests/test.fixed.R b/tests/test.fixed.R index f1ce6cf..9a09072 100644 --- a/tests/test.fixed.R +++ b/tests/test.fixed.R @@ -510,3 +510,47 @@ g=t(X)%*%(Y-X%*%b)/lam2 out = fixedLassoInf(X,Y,beta,lam*n) + + + +# + +#gaussian +n=50 +p=10 +sigma=.7 +beta=c(0,0,0,0,rep(0,p-4)) +set.seed(43) +nsim = 1000 +pvals <- matrix(NA, nrow=nsim, ncol=p) +x = matrix(rnorm(n*p),n,p) +x = scale(x,T,T)/sqrt(n-1) +mu = x%*%beta +for (i in 1:nsim) { + cat(i) +y=mu+sigma*rnorm(n) +#y=y-mean(y) +# first run glmnet + pf=c(rep(.001,4),rep(1,p-4)) + xs=scale(x,FALSE,pf) #scale cols of x by penalty factors + # first run glmnet + gfit = glmnet(xs,y,standardize=FALSE) + + + lambda = .8 + beta = coef(gfit, s=lambda/n, exact=TRUE)[-1] + + # compute fixed lambda p-values and selection intervals + aa = fixedLassoInf(xs,y,beta,lambda,sigma=sigma) + +pvals[i, which(beta != 0)] <- aa$pv +} +nulls = 1:nsim +np = pvals[nulls,-(1:4)] +mean(np[!is.na(np)] < 0.1) +o=!is.na(np) +plot((1:sum(o))/sum(o),sort(np)) +abline(0,1) +##### + + From 80db7958744f8ae746fbacc314223dd416fca763 Mon Sep 17 00:00:00 2001 From: tibs Date: Mon, 16 Jan 2017 09:26:23 -0800 Subject: [PATCH 151/493] rob bug from quanzao --- selectiveInference/DESCRIPTION | 2 +- selectiveInference/R/funs.fixed.R | 2 +- selectiveInference/R/funs.fixedLogit.R | 4 ++-- selectiveInference/src/symbols.rds | Bin 367 -> 367 bytes 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/selectiveInference/DESCRIPTION b/selectiveInference/DESCRIPTION index 5b317da..d697499 100644 --- a/selectiveInference/DESCRIPTION +++ b/selectiveInference/DESCRIPTION @@ -1,7 +1,7 @@ Package: selectiveInference Type: Package Title: Tools for Post-Selection Inference -Version: 1.2.1 +Version: 1.2.2 Date: 2016-07-3 Author: Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 4fc0f1a..b30d04c 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -158,7 +158,7 @@ function(x, y, beta, lambda, a) { if (length(za)>1) dz = diag(za) if (length(za)==1) dz = matrix(za,1,1) - P = diag(1,nrow(xa)) - xa %*% xap +# P = diag(1,nrow(xa)) - xa %*% xap #NOTE: inactive constraints not needed below! G = -rbind( diff --git a/selectiveInference/R/funs.fixedLogit.R b/selectiveInference/R/funs.fixedLogit.R index 19c972d..5b67354 100644 --- a/selectiveInference/R/funs.fixedLogit.R +++ b/selectiveInference/R/funs.fixedLogit.R @@ -45,8 +45,8 @@ fixedLogitLassoInf=function(x,y,beta,lambda,alpha=.1, type=c("partial"), tol.bet #check KKT z=etahat+(y-prhat)/ww - # g= t(x)%*%w%*%(z-etahat)/lambda # negative gradient scaled by lambda - gg=scale(t(x),FALSE,1/ww)%*%(z-etahat)/lambda # negative gradient scaled by lambda + # g= t(x)%*%w%*%(z-etahat)/lambda # negative gradient scaled by lambda + g=scale(t(x),FALSE,1/ww)%*%(z-etahat)/lambda # negative gradient scaled by lambda if (any(abs(g) > 1+tol.kkt) ) warning(paste("Solution beta does not satisfy the KKT conditions", "(to within specified tolerances)")) diff --git a/selectiveInference/src/symbols.rds b/selectiveInference/src/symbols.rds index ef45ca37aedfc57cb07c2d5066bf881bf4359eb6..06b0e85e927ffbb186121204a3be110d68965ede 100644 GIT binary patch literal 367 zcmV-#0g(P5iwFP!000001HF`8PlGTNhRes4%`92sg}43!BMkib8)hcnHDxQak_6JIPWlgp?6ULIF7c6t)_l2M@%=qRk*KdBZ0#Ng2zV>P#g%js+AFbJLu%b;B1>Aj(q=rLtRA?|{WKk$T84 z()a@`zE^&?C?~o(^2)7UXU|@{XM1H%>2>{?5ng$06s-p2h$G2pl*7&?)h}ssWtpGXyRe>2ri05=0r^28RO8 zjBtvUJk7bP%Q1@iCX2Bmeotwxtmv9#(pob7LR3!ut`KyESyu?HWzILv6do!>dj?Y* z!@*+@7Jm=dU2y!sVsLBm&hK{;+v)mYi|@mRiDeksi*sx-n)Q7D2Y?GpFmuF|>0`2w zTXnjf7EiZim=USDjwSfeziHK5e{b1fSiK3u!!=F|`#{onvcFvA`qG9{$5>=MXY;o5 z+E%Kl=S4;nV}{69)O>=Hl=Hl<&UB)qNFu3-u+1r7)qH^@W+Ej>X}e|l4zziu$_)8M z8h?Pr_sZ`U<;-u6yz;@WwP&x{Gu$0yn$%1y_q{k_SpQXQmz)WC#m&m>F0`bL NJ^{S|DnAbe005&lw21%! From 6c7885107e15efc9a2831def0f3da9ab8b24a7d0 Mon Sep 17 00:00:00 2001 From: Ryan Tibshirani Date: Tue, 7 Feb 2017 23:04:46 -0500 Subject: [PATCH 152/493] Committing so my changes aren't overwritten --- selectiveInference/R/funs.fs.R | 5 ++++- selectiveInference/R/funs.lar.R | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/selectiveInference/R/funs.fs.R b/selectiveInference/R/funs.fs.R index b5ee511..bd5c39a 100644 --- a/selectiveInference/R/funs.fs.R +++ b/selectiveInference/R/funs.fs.R @@ -234,7 +234,10 @@ coef.fs <- function(object, s, ...) { predict.fs <- function(object, newx, s, ...) { beta = coef.fs(object,s) if (missing(newx)) newx = scale(object$x,FALSE,1/object$sx) - else newx = scale(newx,object$bx,FALSE) + else { + newx = matrix(newx,ncol=ncol(object$x)) + newx = scale(newx,object$bx,FALSE) + } return(newx %*% beta + object$by) } diff --git a/selectiveInference/R/funs.lar.R b/selectiveInference/R/funs.lar.R index 26669ca..795bbc3 100644 --- a/selectiveInference/R/funs.lar.R +++ b/selectiveInference/R/funs.lar.R @@ -339,7 +339,10 @@ coef.lar <- function(object, s, mode=c("step","lambda"), ...) { predict.lar <- function(object, newx, s, mode=c("step","lambda"), ...) { beta = coef.lar(object,s,mode) if (missing(newx)) newx = scale(object$x,FALSE,1/object$sx) - else newx = scale(newx,object$bx,FALSE) + else { + newx = matrix(newx,ncol=ncol(object$x)) + newx = scale(newx,object$bx,FALSE) + } return(newx %*% beta + object$by) } From 427e89c0dcca1a9e09576127b71019fedaf4d3cb Mon Sep 17 00:00:00 2001 From: Ryan Tibshirani Date: Tue, 7 Feb 2017 23:08:11 -0500 Subject: [PATCH 153/493] Fixed a small bug in the coef functions for fs and lar: use of dec instead of decreasing in the call to coef.interpolate. --- selectiveInference/R/funs.common.R | 8 ++++---- selectiveInference/R/funs.fs.R | 4 ++-- selectiveInference/R/funs.lar.R | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/selectiveInference/R/funs.common.R b/selectiveInference/R/funs.common.R index 5945700..042e074 100644 --- a/selectiveInference/R/funs.common.R +++ b/selectiveInference/R/funs.common.R @@ -56,14 +56,14 @@ standardize <- function(x, y, intercept, normalize) { # Interpolation function to get coefficients -coef.interpolate <- function(betas, s, knots, dec=TRUE) { +coef.interpolate <- function(beta, s, knots, decreasing=TRUE) { # Sort the s values - o = order(s,dec=dec) + o = order(s,decreasing=decreasing) s = s[o] k = length(s) mat = matrix(rep(knots,each=k),nrow=k) - if (dec) b = s >= mat + if (decreasing) b = s >= mat else b = s <= mat blo = max.col(b,ties.method="first") bhi = pmax(blo-1,1) @@ -73,7 +73,7 @@ coef.interpolate <- function(betas, s, knots, dec=TRUE) { p[i] = 0 p[!i] = ((s-knots[blo])/(knots[bhi]-knots[blo]))[!i] - beta = t((1-p)*t(betas[,blo,drop=FALSE]) + p*t(betas[,bhi,drop=FALSE])) + beta = t((1-p)*t(beta[,blo,drop=FALSE]) + p*t(beta[,bhi,drop=FALSE])) colnames(beta) = as.character(round(s,3)) rownames(beta) = NULL diff --git a/selectiveInference/R/funs.fs.R b/selectiveInference/R/funs.fs.R index bd5c39a..7a1d784 100644 --- a/selectiveInference/R/funs.fs.R +++ b/selectiveInference/R/funs.fs.R @@ -225,8 +225,8 @@ coef.fs <- function(object, s, ...) { if (min(s)<0 || max(s)>k) stop(sprintf("s must be between 0 and %i",k)) knots = 1:k - dec = FALSE - return(coef.interpolate(beta,s,knots,dec)) + decreasing = FALSE + return(coef.interpolate(beta,s,knots,decreasing)) } # Prediction function for fs diff --git a/selectiveInference/R/funs.lar.R b/selectiveInference/R/funs.lar.R index 96df0c0..37d0ae3 100644 --- a/selectiveInference/R/funs.lar.R +++ b/selectiveInference/R/funs.lar.R @@ -295,14 +295,14 @@ coef.lar <- function(object, s, mode=c("step","lambda"), ...) { if (mode=="step") { if (min(s)<0 || max(s)>k) stop(sprintf("s must be between 0 and %i",k)) knots = 1:k - dec = FALSE + decreasing = FALSE } else { if (min(s)= %0.3f",min(lambda))) knots = lambda - dec = TRUE + decreasing = TRUE } - return(coef.interpolate(beta,s,knots,dec)) + return(coef.interpolate(beta,s,knots,decreasing)) } # Prediction function for lar From 4e50c4d8a77c617ded2613bf22843a91ec070d0b Mon Sep 17 00:00:00 2001 From: Ryan Tibshirani Date: Tue, 7 Feb 2017 23:40:55 -0500 Subject: [PATCH 154/493] Fixed a small bug in fs function. Seems have been introduced when this function was modified notationally. The least squares solution was not being returned properly; now it is. --- selectiveInference/DESCRIPTION | 8 +++++--- selectiveInference/R/funs.fs.R | 9 ++++----- selectiveInference/man/factorDesign.Rd | 4 ++-- selectiveInference/man/groupfs.Rd | 5 +++-- selectiveInference/man/groupfsInf.Rd | 2 +- selectiveInference/man/predict.groupfs.Rd | 7 +------ selectiveInference/man/scaleGroups.Rd | 2 +- 7 files changed, 17 insertions(+), 20 deletions(-) diff --git a/selectiveInference/DESCRIPTION b/selectiveInference/DESCRIPTION index d697499..d0740ec 100644 --- a/selectiveInference/DESCRIPTION +++ b/selectiveInference/DESCRIPTION @@ -12,7 +12,9 @@ Depends: survival Suggests: Rmpfr -Description: New tools for post-selection inference, for use - with forward stepwise regression, least angle regression, the - lasso, and the many means problem. The lasso function implements Gaussian, logistic and Cox survival models. +Description: New tools for post-selection inference, for use with forward + stepwise regression, least angle regression, the lasso, and the many means + problem. The lasso function implements Gaussian, logistic and Cox survival + models. License: GPL-2 +RoxygenNote: 5.0.1 diff --git a/selectiveInference/R/funs.fs.R b/selectiveInference/R/funs.fs.R index 7a1d784..62e6b7c 100644 --- a/selectiveInference/R/funs.fs.R +++ b/selectiveInference/R/funs.fs.R @@ -106,8 +106,8 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, } # Key quantities for the next entry - keepLs=backsolve(R,t(Q_active)%*%X_inactive) - X_inactive_resid = X_inactive - X_active %*% keepLs + keepLs = backsolve(R,t(Q_active)%*%y) + X_inactive_resid = X_inactive - X_active %*% backsolve(R,t(Q_active)%*%X_inactive) working_x = scale(X_inactive_resid,center=F,scale=sqrt(colSums(X_inactive_resid^2))) score = as.numeric(t(working_x)%*%y) @@ -127,7 +127,7 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, action[k] = I[i_hit] df[k] = r - beta[A,k] = backsolve(R,t(Q_active)%*%y) + beta[A,k] = keepLs # Gamma matrix! if (gi + 2*p > nrow(Gamma)) Gamma = rbind(Gamma,matrix(0,2*p+gbuf,n)) @@ -188,8 +188,7 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, # Record the least squares solution. Note that # we have already computed this - bls = rep(0,p) - if(length(keepLs)>0) bls[A] = keepLs + bls = rep(0,p); bls[A] = keepLs } if (verbose) cat("\n") diff --git a/selectiveInference/man/factorDesign.Rd b/selectiveInference/man/factorDesign.Rd index 8e061db..7b13ae0 100644 --- a/selectiveInference/man/factorDesign.Rd +++ b/selectiveInference/man/factorDesign.Rd @@ -1,4 +1,4 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand +% Generated by roxygen2: do not edit by hand % Please edit documentation in R/funs.groupfs.R \name{factorDesign} \alias{factorDesign} @@ -23,7 +23,7 @@ When using \code{\link{groupfs}} with factor variables call this function first \dontrun{ fd = factorDesign(warpbreaks) y = rnorm(nrow(fd$x)) -fit = groupfs(fd$x, y, fd$index, maxsteps=2, intercept=FALSE) +fit = groupfs(fd$x, y, fd$index, maxsteps=2, intercept=F) pvals = groupfsInf(fit) } } diff --git a/selectiveInference/man/groupfs.Rd b/selectiveInference/man/groupfs.Rd index a57c6dc..5c2171a 100644 --- a/selectiveInference/man/groupfs.Rd +++ b/selectiveInference/man/groupfs.Rd @@ -1,4 +1,4 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand +% Generated by roxygen2: do not edit by hand % Please edit documentation in R/funs.groupfs.R \name{groupfs} \alias{groupfs} @@ -41,7 +41,8 @@ x = matrix(rnorm(20*40), nrow=20) index = sort(rep(1:20, 2)) y = rnorm(20) + 2 * x[,1] - x[,4] fit = groupfs(x, y, index, maxsteps = 5) -pvals = groupfsInf(fit) +out = groupfsInf(fit) +out } \seealso{ \code{\link{groupfsInf}}, \code{\link{factorDesign}}. diff --git a/selectiveInference/man/groupfsInf.Rd b/selectiveInference/man/groupfsInf.Rd index 74b9a5e..16efcab 100644 --- a/selectiveInference/man/groupfsInf.Rd +++ b/selectiveInference/man/groupfsInf.Rd @@ -1,4 +1,4 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand +% Generated by roxygen2: do not edit by hand % Please edit documentation in R/funs.groupfs.R \name{groupfsInf} \alias{groupfsInf} diff --git a/selectiveInference/man/predict.groupfs.Rd b/selectiveInference/man/predict.groupfs.Rd index 4a382c7..4b8394b 100644 --- a/selectiveInference/man/predict.groupfs.Rd +++ b/selectiveInference/man/predict.groupfs.Rd @@ -1,4 +1,4 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand +% Generated by roxygen2: do not edit by hand % Please edit documentation in R/funs.groupfs.R \name{predict.groupfs} \alias{predict.groupfs} @@ -16,9 +16,4 @@ Make predictions or extract coefficients from a groupfs forward stepwise object. \value{ A vector of predictions or a vector of coefficients. } -\description{ -Prediction and coefficient functions for \code{\link{groupfs}}. - -Make predictions or extract coefficients from a groupfs forward stepwise object. -} diff --git a/selectiveInference/man/scaleGroups.Rd b/selectiveInference/man/scaleGroups.Rd index e5a93fa..4607890 100644 --- a/selectiveInference/man/scaleGroups.Rd +++ b/selectiveInference/man/scaleGroups.Rd @@ -1,4 +1,4 @@ -% Generated by roxygen2 (4.1.1): do not edit by hand +% Generated by roxygen2: do not edit by hand % Please edit documentation in R/funs.groupfs.R \name{scaleGroups} \alias{scaleGroups} From d54ba2e65d83b54d563f2fbcbd4b600c6dab7417 Mon Sep 17 00:00:00 2001 From: Ryan Tibshirani Date: Tue, 7 Feb 2017 23:49:08 -0500 Subject: [PATCH 155/493] Created a new folder for our package versions. --- selectiveInference/R/funs.fs.R | 3 ++- .../selectiveInference_1.0.1.tar.gz | Bin .../selectiveInference_1.0.2.tar.gz | Bin .../selectiveInference_1.0.tar.gz | Bin 4 files changed, 2 insertions(+), 1 deletion(-) rename selectiveInference_1.0.1.tar.gz => versions/selectiveInference_1.0.1.tar.gz (100%) rename selectiveInference_1.0.2.tar.gz => versions/selectiveInference_1.0.2.tar.gz (100%) rename selectiveInference_1.0.tar.gz => versions/selectiveInference_1.0.tar.gz (100%) diff --git a/selectiveInference/R/funs.fs.R b/selectiveInference/R/funs.fs.R index 62e6b7c..3f8a87c 100644 --- a/selectiveInference/R/funs.fs.R +++ b/selectiveInference/R/funs.fs.R @@ -188,7 +188,8 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, # Record the least squares solution. Note that # we have already computed this - bls = rep(0,p); bls[A] = keepLs + bls = rep(0,p) + bls[A] = keepLs } if (verbose) cat("\n") diff --git a/selectiveInference_1.0.1.tar.gz b/versions/selectiveInference_1.0.1.tar.gz similarity index 100% rename from selectiveInference_1.0.1.tar.gz rename to versions/selectiveInference_1.0.1.tar.gz diff --git a/selectiveInference_1.0.2.tar.gz b/versions/selectiveInference_1.0.2.tar.gz similarity index 100% rename from selectiveInference_1.0.2.tar.gz rename to versions/selectiveInference_1.0.2.tar.gz diff --git a/selectiveInference_1.0.tar.gz b/versions/selectiveInference_1.0.tar.gz similarity index 100% rename from selectiveInference_1.0.tar.gz rename to versions/selectiveInference_1.0.tar.gz From a8701c140b99c94fe2d8135937b9cecbbd424408 Mon Sep 17 00:00:00 2001 From: Nicolas Ballarini Date: Thu, 15 Jun 2017 10:01:59 +0200 Subject: [PATCH 156/493] bug in fixedLogitLassoInf alpha for fixedLassoInf with family="Binomial" was set to .1 --- selectiveInference/R/funs.fixedLogit.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selectiveInference/R/funs.fixedLogit.R b/selectiveInference/R/funs.fixedLogit.R index 5b67354..e99f281 100644 --- a/selectiveInference/R/funs.fixedLogit.R +++ b/selectiveInference/R/funs.fixedLogit.R @@ -96,7 +96,7 @@ fixedLogitLassoInf=function(x,y,beta,lambda,alpha=.1, type=c("partial"), tol.bet vup[jj]=junk$vup sd[jj]=junk$sd # junk2=mypoly.int.lee(bbar[-1], A1, b1,vj,MM[-1,-1],alpha=.1) - junk2=mypoly.int.lee(bbar,vj,vlo[jj],vup[jj],sd[jj],alpha=.1) + junk2=mypoly.int.lee(bbar,vj,vlo[jj],vup[jj],sd[jj],alpha=alpha) ci[jj,]=junk2$int tailarea[jj,] = junk2$tailarea From b38d76ebdec9fd38923d5152444433506b3ab3d0 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Sun, 23 Jul 2017 11:44:06 -0700 Subject: [PATCH 157/493] exporting the general pivot, renaming it TG.pvalue --- selectiveInference/NAMESPACE | 3 ++- selectiveInference/R/funs.fixedCox.R | 2 +- selectiveInference/R/funs.fixedLogit.R | 6 ++--- selectiveInference/R/funs.inf.R | 34 ++++++++++++++------------ 4 files changed, 24 insertions(+), 21 deletions(-) diff --git a/selectiveInference/NAMESPACE b/selectiveInference/NAMESPACE index 1eba338..f9ed697 100644 --- a/selectiveInference/NAMESPACE +++ b/selectiveInference/NAMESPACE @@ -12,7 +12,8 @@ export(lar,fs, estimateSigma, manyMeans,print.manyMeans, groupfs,groupfsInf, - scaleGroups,factorDesign + scaleGroups,factorDesign, + TG.pvalue ) S3method("coef", "lar") diff --git a/selectiveInference/R/funs.fixedCox.R b/selectiveInference/R/funs.fixedCox.R index ff778d9..c5918c4 100644 --- a/selectiveInference/R/funs.fixedCox.R +++ b/selectiveInference/R/funs.fixedCox.R @@ -62,7 +62,7 @@ b1= -(mydiag(s2)%*%MM)%*%s2*lambda vj=rep(0,length(bbar));vj[jj]=s2[jj] - junk=mypoly.pval.lee(bbar,A1,b1,vj,MM) + junk=TG.pvalue(bbar,A1,b1,vj,MM) pv[jj] = junk$pv vlo[jj]=junk$vlo diff --git a/selectiveInference/R/funs.fixedLogit.R b/selectiveInference/R/funs.fixedLogit.R index 5b67354..8cd8c34 100644 --- a/selectiveInference/R/funs.fixedLogit.R +++ b/selectiveInference/R/funs.fixedLogit.R @@ -89,14 +89,14 @@ fixedLogitLassoInf=function(x,y,beta,lambda,alpha=.1, type=c("partial"), tol.bet for(jj in 1:sum(m)){ vj=c(rep(0,sum(m)+1));vj[jj+1]=s2[jj+1] # compute p-values - junk=mypoly.pval.lee(bbar,A1,b1,vj,MM) + junk=TG.pvalue(bbar,A1,b1,vj,MM) pv[jj] = junk$pv vlo[jj]=junk$vlo vup[jj]=junk$vup sd[jj]=junk$sd - # junk2=mypoly.int.lee(bbar[-1], A1, b1,vj,MM[-1,-1],alpha=.1) - junk2=mypoly.int.lee(bbar,vj,vlo[jj],vup[jj],sd[jj],alpha=.1) + # junk2=TG.pvalue(bbar[-1], A1, b1,vj,MM[-1,-1],alpha=.1) + junk2=TG.pvalue(bbar,vj,vlo[jj],vup[jj],sd[jj],alpha=.1) ci[jj,]=junk2$int tailarea[jj,] = junk2$tailarea diff --git a/selectiveInference/R/funs.inf.R b/selectiveInference/R/funs.inf.R index 423b4c3..79cb6a5 100644 --- a/selectiveInference/R/funs.inf.R +++ b/selectiveInference/R/funs.inf.R @@ -247,24 +247,26 @@ aicStop <- function(x, y, action, df, sigma, mult=2, ntimes=2) { #these next two functions are used by the binomial and Cox options of fixedLassoInf -mypoly.pval.lee= -function(y, A, b, eta, Sigma, bits=NULL) { +TG.pvalue = function(Z, A, b, eta, Sigma, bits=NULL) { + # compute pvalues from poly lemma: full version from Lee et al for full matrix Sigma - nn=length(y) - eta=as.vector(eta) - temp = sum(eta*y) - vv=as.numeric(matrix(eta,nrow=1,ncol=nn)%*%Sigma%*%eta) - cc = Sigma%*%eta/vv - - z=(diag(nn)-matrix(cc,ncol=1)%*%eta)%*%y - rho=A%*%cc + n = length(Z) + eta = as.vector(eta) + b = as.vector(b) + target_estimate = sum(eta * Z) + var_estimate = as.numeric(matrix(eta, nrow=1, ncol=n) %*% Sigma %*% eta) + cross_cov = Sigma %*% eta - vec = (b- A %*% z)/rho - vlo = suppressWarnings(max(vec[rho<0])) - vup = suppressWarnings(min(vec[rho>0])) - sd=sqrt(vv) - pv = tnorm.surv(temp,0,sd,vlo,vup,bits) - return(list(pv=pv,vlo=vlo,vup=vup,sd=sd)) + resid = (diag(n) - matrix(cross_cov / var_estimate, ncol=1) %*% eta) %*% Z + rho = A %*% cross_cov / var_estimate + vec = (b - as.numeric(A %*% resid)) / rho + + vlo = suppressWarnings(max(vec[rho < 0])) + vup = suppressWarnings(min(vec[rho > 0])) + + sd = sqrt(var_estimate) + pv = tnorm.surv(target_estimate, 0 , sd, vlo, vup, bits) + return(list(pv=pv, vlo=vlo, vup=vup, sd=sd)) } From a86da851014a2ff0425d9687436e53d4947edcfc Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Sun, 23 Jul 2017 11:54:34 -0700 Subject: [PATCH 158/493] exporting interval function as well --- selectiveInference/NAMESPACE | 3 ++- selectiveInference/R/funs.fixedCox.R | 2 +- selectiveInference/R/funs.fixedLogit.R | 4 +-- selectiveInference/R/funs.inf.R | 34 +++++++++++++++++--------- 4 files changed, 27 insertions(+), 16 deletions(-) diff --git a/selectiveInference/NAMESPACE b/selectiveInference/NAMESPACE index f9ed697..7add9df 100644 --- a/selectiveInference/NAMESPACE +++ b/selectiveInference/NAMESPACE @@ -13,7 +13,8 @@ export(lar,fs, manyMeans,print.manyMeans, groupfs,groupfsInf, scaleGroups,factorDesign, - TG.pvalue + TG.pvalue, + TG.interval ) S3method("coef", "lar") diff --git a/selectiveInference/R/funs.fixedCox.R b/selectiveInference/R/funs.fixedCox.R index c5918c4..0069007 100644 --- a/selectiveInference/R/funs.fixedCox.R +++ b/selectiveInference/R/funs.fixedCox.R @@ -69,7 +69,7 @@ b1= -(mydiag(s2)%*%MM)%*%s2*lambda vup[jj]=junk$vup sd[jj]=junk$sd - junk2=mypoly.int.lee(bbar,vj,vlo[jj],vup[jj],sd[jj],alpha) + junk2=TG.interval(bbar, vj, vlo[jj], vup[jj], sd[jj], alpha) ci[jj,]=junk2$int tailarea[jj,] = junk2$tailarea diff --git a/selectiveInference/R/funs.fixedLogit.R b/selectiveInference/R/funs.fixedLogit.R index 8cd8c34..6e3c113 100644 --- a/selectiveInference/R/funs.fixedLogit.R +++ b/selectiveInference/R/funs.fixedLogit.R @@ -95,8 +95,8 @@ fixedLogitLassoInf=function(x,y,beta,lambda,alpha=.1, type=c("partial"), tol.bet vlo[jj]=junk$vlo vup[jj]=junk$vup sd[jj]=junk$sd - # junk2=TG.pvalue(bbar[-1], A1, b1,vj,MM[-1,-1],alpha=.1) - junk2=TG.pvalue(bbar,vj,vlo[jj],vup[jj],sd[jj],alpha=.1) + # junk2=TG.interval(bbar[-1], A1, b1,vj,MM[-1,-1],alpha=.1) + junk2=TG.interval(bbar,vj,vlo[jj],vup[jj],sd[jj],alpha=.1) ci[jj,]=junk2$int tailarea[jj,] = junk2$tailarea diff --git a/selectiveInference/R/funs.inf.R b/selectiveInference/R/funs.inf.R index 79cb6a5..ad64a3d 100644 --- a/selectiveInference/R/funs.inf.R +++ b/selectiveInference/R/funs.inf.R @@ -271,24 +271,34 @@ TG.pvalue = function(Z, A, b, eta, Sigma, bits=NULL) { -mypoly.int.lee= - function(y,eta,vlo,vup,sd, alpha, gridrange=c(-100,100),gridpts=100, griddepth=2, flip=FALSE, bits=NULL) { +TG.interval = function(Z, eta, vlo, vup, sd, alpha, + gridrange=c(-100,100), + gridpts=100, + griddepth=2, + flip=FALSE, + bits=NULL) { + # compute sel intervals from poly lemmma, full version from Lee et al for full matrix Sigma - temp = sum(eta*y) + target_estimate = sum(eta*Z) - xg = seq(gridrange[1]*sd,gridrange[2]*sd,length=gridpts) - fun = function(x) { tnorm.surv(temp,x,sd,vlo,vup,bits) } + param_grid = seq(gridrange[1]*sd, gridrange[2]*sd, length=gridpts) - int = grid.search(xg,fun,alpha/2,1-alpha/2,gridpts,griddepth) - tailarea = c(fun(int[1]),1-fun(int[2])) + pivot = function(param) { + tnorm.surv(target_estimate, param, sd, vlo, vup, bits) + } - if (flip) { - int = -int[2:1] - tailarea = tailarea[2:1] - } + interval = grid.search(param_grid, pivot, alpha/2, 1-alpha/2, gridpts, griddepth) + tailarea = c(pivot(interval[1]), 1- pivot(interval[2])) + + if (flip) { + interval = -interval[2:1] + tailarea = tailarea[2:1] + } - return(list(int=int,tailarea=tailarea)) + # int is not a good variable name, synonymous with integer... + return(list(int=interval, + tailarea=tailarea)) } From 33be053585011e5a9f7c213cb90d4897f1147b60 Mon Sep 17 00:00:00 2001 From: tibshirani Date: Sun, 23 Jul 2017 13:59:54 -0700 Subject: [PATCH 159/493] Update README.md --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index 1a50e5b..962151e 100644 --- a/README.md +++ b/README.md @@ -13,3 +13,11 @@ Code is in the directory selectiveInference/R. * funs.inf.R: Common functions for inference with fixed, fs, lar, and manymeans (but not group). * funs.lar.R: Inference for least angle regression. * funs.max.R: Some numerical approximations. Deprecated? + +## Installation +The latest release of the package can be installed through CRAN: + +```R +install.packages("selectiveInference") +``` +Code in repo is under development and may be unstable. From 4710b937ac39e44b99f15ae83c53f7416eb2a971 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Mon, 24 Jul 2017 11:05:56 -0700 Subject: [PATCH 160/493] added man pages for TG.pvalue, TG.interval --- selectiveInference/R/funs.inf.R | 10 +-- selectiveInference/man/TG.interval.Rd | 94 +++++++++++++++++++++++++++ selectiveInference/man/TG.pvalue.Rd | 78 ++++++++++++++++++++++ 3 files changed, 177 insertions(+), 5 deletions(-) create mode 100644 selectiveInference/man/TG.interval.Rd create mode 100644 selectiveInference/man/TG.pvalue.Rd diff --git a/selectiveInference/R/funs.inf.R b/selectiveInference/R/funs.inf.R index ad64a3d..1b454fa 100644 --- a/selectiveInference/R/funs.inf.R +++ b/selectiveInference/R/funs.inf.R @@ -247,17 +247,17 @@ aicStop <- function(x, y, action, df, sigma, mult=2, ntimes=2) { #these next two functions are used by the binomial and Cox options of fixedLassoInf -TG.pvalue = function(Z, A, b, eta, Sigma, bits=NULL) { +TG.pvalue = function(Z, A, b, eta, Sigma, null_value=0, bits=NULL) { # compute pvalues from poly lemma: full version from Lee et al for full matrix Sigma n = length(Z) - eta = as.vector(eta) + eta = matrix(eta, ncol=1, nrow=n) b = as.vector(b) target_estimate = sum(eta * Z) - var_estimate = as.numeric(matrix(eta, nrow=1, ncol=n) %*% Sigma %*% eta) + var_estimate = sum(matrix(eta, nrow=1, ncol=n) %*% (Sigma %*% eta)) cross_cov = Sigma %*% eta - resid = (diag(n) - matrix(cross_cov / var_estimate, ncol=1) %*% eta) %*% Z + resid = (diag(n) - matrix(cross_cov / var_estimate, ncol=1, nrow=n) %*% matrix(eta, nrow=1, ncol=n)) %*% Z rho = A %*% cross_cov / var_estimate vec = (b - as.numeric(A %*% resid)) / rho @@ -265,7 +265,7 @@ TG.pvalue = function(Z, A, b, eta, Sigma, bits=NULL) { vup = suppressWarnings(min(vec[rho > 0])) sd = sqrt(var_estimate) - pv = tnorm.surv(target_estimate, 0 , sd, vlo, vup, bits) + pv = tnorm.surv(target_estimate, null_value, sd, vlo, vup, bits) return(list(pv=pv, vlo=vlo, vup=vup, sd=sd)) } diff --git a/selectiveInference/man/TG.interval.Rd b/selectiveInference/man/TG.interval.Rd new file mode 100644 index 0000000..d542691 --- /dev/null +++ b/selectiveInference/man/TG.interval.Rd @@ -0,0 +1,94 @@ +\name{TG.interval} +\alias{TG.interval} + +\title{ +Truncated Gaussian confidence interval. +} +\description{ +Compute truncated Gaussian interval of Lee et al. (2016) with +arbitrary affine selection and covariance. +} +\usage{ +TG.interval(Z, eta, vlo, vup, sd, alpha, + gridrange=c(-100,100), + gridpts=100, + griddepth=2, + flip=FALSE, + bits=NULL) +} +\arguments{ +\item{Z}{ +Observed data (assumed to follow N(mu, Sigma) with sum(eta*mu)=null_value) +} +\item{eta}{ +Determines the target sum(eta*mu) and estimate sum(eta*Z). +} +\item{vlo}{ +Lower truncation limits for statistic. Can be computed with TG.pvalue. +} +\item{vup}{ +Upper truncation limits for statistic. Can be computed with TG.pvalue. +} +\item{sd}{ +Standard error of sum(eta*Z). +} +\item{alpha}{ +Significance level for confidence intervals (target is miscoverage alpha/2 in each tail) +} +\item{gridrange}{ +Grid range for constructing confidence intervals, on the standardized scale. +} +\item{gridpts}{ +??????? +} +\item{griddepth}{ +??????? +} +\item{flip}{ +??????? +} +\item{bits}{ +Number of bits to be used for p-value and confidence interval calculations. Default is +NULL, in which case standard floating point calculations are performed. When not NULL, +multiple precision floating point calculations are performed with the specified number +of bits, using the R package \code{Rmpfr} (if this package is not installed, then a +warning is thrown, and standard floating point calculations are pursued). +Note: standard double precision uses 53 bits +so, e.g., a choice of 200 bits uses about 4 times double precision. The confidence +interval computation is sometimes numerically challenging, and the extra precision can be +helpful (though computationally more costly). In particular, extra precision might be tried +if the values in the output columns of \code{tailarea} differ noticeably from alpha/2. +} +} + +\details{ +This function computes selective confidence intervals based on the polyhedral +lemma of Lee et al. (2016). +} + +\value{ +\item{int}{Selective confidence interval.} +\item{tailarea}{Realized tail areas (lower and upper) for each confidence interval.} +} + +\references{ +Jason Lee, Dennis Sun, Yuekai Sun, and Jonathan Taylor (2016). +Exact post-selection inference, with application to the lasso. Annals of Statistics, 44(3), 907-927. + +Jonathan Taylor and Robert Tibshirani (2017) Post-selection inference for math L1-penalized likelihood models. +Canadian Journal of Statistics, xx, 1-21. (Volume still not posted) + +} +\author{Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid} + +\examples{ + +A = diag(5) +b = rep(1, 5) +Z = rep(0, 5) +Sigma = diag(5) +eta = as.numeric(c(1, 1, 0, 0, 0)) +V = TG.pvalue(Z, A, b, Sigma, eta) +TG.interval(Z, eta, V$vlo, V$vup, V$sd, 0.05) +} + \ No newline at end of file diff --git a/selectiveInference/man/TG.pvalue.Rd b/selectiveInference/man/TG.pvalue.Rd new file mode 100644 index 0000000..5625d9d --- /dev/null +++ b/selectiveInference/man/TG.pvalue.Rd @@ -0,0 +1,78 @@ +\name{TG.pvalue} +\alias{TG.pvalue} + +\title{ +Truncated Gaussian p-value. +} +\description{ +Compute truncated Gaussian p-value of Lee et al. (2016) with +arbitrary affine selection and covariance. +} +\usage{ +TG.pvalue(Z, A, b, eta, Sigma, null_value=0, bits=NULL) +} +\arguments{ +\item{Z}{ +Observed data (assumed to follow N(mu, Sigma) with sum(eta*mu)=null_value) +} +\item{A}{ +Matrix specifiying affine inequalities AZ <= b +} +\item{b}{ +Offsets in the affine inequalities AZ <= b. +} +\item{eta}{ +Determines the target sum(eta*mu) and estimate sum(eta*Z). +} +\item{Sigma}{ +Covariance matrix of Z. +} +\item{null_value}{Hypothesized value of sum(eta*mu) under the null. +} +\item{bits}{ +Number of bits to be used for p-value and confidence interval calculations. Default is +NULL, in which case standard floating point calculations are performed. When not NULL, +multiple precision floating point calculations are performed with the specified number +of bits, using the R package \code{Rmpfr} (if this package is not installed, then a +warning is thrown, and standard floating point calculations are pursued). +Note: standard double precision uses 53 bits +so, e.g., a choice of 200 bits uses about 4 times double precision. The confidence +interval computation is sometimes numerically challenging, and the extra precision can be +helpful (though computationally more costly). In particular, extra precision might be tried +if the values in the output columns of \code{tailarea} differ noticeably from alpha/2. +} +} +\details{ +This function computes selective p-values based on the polyhedral +lemma of Lee et al. (2016). +} + +\value{ +\item{pv}{One-sided P-values for active variables, uses the fact we have conditioned on the sign.} +\item{vlo}{Lower truncation limits for statistic} +\item{vup}{Upper truncation limits for statistic} +\item{sd}{Standard error of sum(eta*Z)} +} + +\references{ +Jason Lee, Dennis Sun, Yuekai Sun, and Jonathan Taylor (2016). +Exact post-selection inference, with application to the lasso. Annals of Statistics, 44(3), 907-927. + +Jonathan Taylor and Robert Tibshirani (2017) Post-selection inference for math L1-penalized likelihood models. +Canadian Journal of Statistics, xx, 1-21. (Volume still not posted) + +} +\author{Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid} + +\examples{ + +A = diag(5) +b = rep(1, 5) +Z = rep(0, 5) +Sigma = diag(5) +eta = as.numeric(c(1, 1, 0, 0, 0)) +TG.pvalue(Z, A, b, Sigma, eta) +TG.pvalue(Z, A, b, Sigma, eta, null_value=1) + +} + \ No newline at end of file From 275ebff654ce7e1ee87296219548fefaab65caee Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Mon, 24 Jul 2017 11:10:56 -0700 Subject: [PATCH 161/493] trying to get matrix multiplies to work --- selectiveInference/R/funs.inf.R | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/selectiveInference/R/funs.inf.R b/selectiveInference/R/funs.inf.R index 1b454fa..0506c29 100644 --- a/selectiveInference/R/funs.inf.R +++ b/selectiveInference/R/funs.inf.R @@ -253,9 +253,9 @@ TG.pvalue = function(Z, A, b, eta, Sigma, null_value=0, bits=NULL) { n = length(Z) eta = matrix(eta, ncol=1, nrow=n) b = as.vector(b) - target_estimate = sum(eta * Z) - var_estimate = sum(matrix(eta, nrow=1, ncol=n) %*% (Sigma %*% eta)) - cross_cov = Sigma %*% eta + target_estimate = sum(as.numeric(eta) * as.numeric(Z)) + var_estimate = sum(matrix(eta, nrow=1, ncol=n) %*% (Sigma %*% matrix(eta, ncol=1, nrow=n))) + cross_cov = Sigma %*% matrix(eta, ncol=1, nrow=n) resid = (diag(n) - matrix(cross_cov / var_estimate, ncol=1, nrow=n) %*% matrix(eta, nrow=1, ncol=n)) %*% Z rho = A %*% cross_cov / var_estimate @@ -280,7 +280,7 @@ TG.interval = function(Z, eta, vlo, vup, sd, alpha, # compute sel intervals from poly lemmma, full version from Lee et al for full matrix Sigma - target_estimate = sum(eta*Z) + target_estimate = sum(as.numeric(eta) * as.numeric(Z)) param_grid = seq(gridrange[1]*sd, gridrange[2]*sd, length=gridpts) From 2a98745a4d06872f27f39f42fe7c07c91f2afd85 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Wed, 2 Aug 2017 10:33:52 -0700 Subject: [PATCH 162/493] created new TG.limits function so TG.pvalue and TG.interval have same signature --- selectiveInference/NAMESPACE | 1 + selectiveInference/R/funs.fixedCox.R | 4 +- selectiveInference/R/funs.fixedLogit.R | 5 +-- selectiveInference/R/funs.inf.R | 27 +++++++++--- selectiveInference/man/TG.interval.Rd | 24 +++++------ selectiveInference/man/TG.limits.Rd | 60 ++++++++++++++++++++++++++ selectiveInference/man/TG.pvalue.Rd | 2 +- 7 files changed, 97 insertions(+), 26 deletions(-) create mode 100644 selectiveInference/man/TG.limits.Rd diff --git a/selectiveInference/NAMESPACE b/selectiveInference/NAMESPACE index 7add9df..099fdc5 100644 --- a/selectiveInference/NAMESPACE +++ b/selectiveInference/NAMESPACE @@ -14,6 +14,7 @@ export(lar,fs, groupfs,groupfsInf, scaleGroups,factorDesign, TG.pvalue, + TG.limits, TG.interval ) diff --git a/selectiveInference/R/funs.fixedCox.R b/selectiveInference/R/funs.fixedCox.R index 0069007..cfe764e 100644 --- a/selectiveInference/R/funs.fixedCox.R +++ b/selectiveInference/R/funs.fixedCox.R @@ -62,14 +62,14 @@ b1= -(mydiag(s2)%*%MM)%*%s2*lambda vj=rep(0,length(bbar));vj[jj]=s2[jj] - junk=TG.pvalue(bbar,A1,b1,vj,MM) + junk=TG.pvalue(bbar, A1, b1, vj,MM) pv[jj] = junk$pv vlo[jj]=junk$vlo vup[jj]=junk$vup sd[jj]=junk$sd - junk2=TG.interval(bbar, vj, vlo[jj], vup[jj], sd[jj], alpha) + junk2=TG.interval(bbar, A1, b1, vj, MM, alpha) ci[jj,]=junk2$int tailarea[jj,] = junk2$tailarea diff --git a/selectiveInference/R/funs.fixedLogit.R b/selectiveInference/R/funs.fixedLogit.R index c4d00de..19936b0 100644 --- a/selectiveInference/R/funs.fixedLogit.R +++ b/selectiveInference/R/funs.fixedLogit.R @@ -89,15 +89,14 @@ fixedLogitLassoInf=function(x,y,beta,lambda,alpha=.1, type=c("partial"), tol.bet for(jj in 1:sum(m)){ vj=c(rep(0,sum(m)+1));vj[jj+1]=s2[jj+1] # compute p-values - junk=TG.pvalue(bbar,A1,b1,vj,MM) + junk=TG.pvalue(bbar, A1, b1, vj, MM) pv[jj] = junk$pv vlo[jj]=junk$vlo vup[jj]=junk$vup sd[jj]=junk$sd - # junk2=TG.interval(bbar[-1], A1, b1,vj,MM[-1,-1],alpha=.1) - junk2=TG.interval(bbar,vj,vlo[jj],vup[jj],sd[jj],alpha=.1) + junk2=TG.interval(bbar, A1, b1, vj, MM,alpha=alpha) ci[jj,]=junk2$int tailarea[jj,] = junk2$tailarea diff --git a/selectiveInference/R/funs.inf.R b/selectiveInference/R/funs.inf.R index 0506c29..c3412d8 100644 --- a/selectiveInference/R/funs.inf.R +++ b/selectiveInference/R/funs.inf.R @@ -247,13 +247,19 @@ aicStop <- function(x, y, action, df, sigma, mult=2, ntimes=2) { #these next two functions are used by the binomial and Cox options of fixedLassoInf -TG.pvalue = function(Z, A, b, eta, Sigma, null_value=0, bits=NULL) { +# Compute the truncation interval and SD of the corresponding Gaussian + +TG.limits = function(Z, A, b, eta, Sigma=NULL) { + + if (is.null(Sigma)) { + Sigma = diag(rep(1, n)) + } # compute pvalues from poly lemma: full version from Lee et al for full matrix Sigma + n = length(Z) eta = matrix(eta, ncol=1, nrow=n) b = as.vector(b) - target_estimate = sum(as.numeric(eta) * as.numeric(Z)) var_estimate = sum(matrix(eta, nrow=1, ncol=n) %*% (Sigma %*% matrix(eta, ncol=1, nrow=n))) cross_cov = Sigma %*% matrix(eta, ncol=1, nrow=n) @@ -265,13 +271,19 @@ TG.pvalue = function(Z, A, b, eta, Sigma, null_value=0, bits=NULL) { vup = suppressWarnings(min(vec[rho > 0])) sd = sqrt(var_estimate) - pv = tnorm.surv(target_estimate, null_value, sd, vlo, vup, bits) - return(list(pv=pv, vlo=vlo, vup=vup, sd=sd)) + return(list(vlo=vlo, vup=vup, sd=sd)) } +TG.pvalue = function(Z, A, b, eta, Sigma=NULL, null_value=0, bits=NULL) { + + limits.info = TG.limits(Z, A, b, eta, Sigma) + target_estimate = sum(as.numeric(eta) * as.numeric(Z)) + pv = tnorm.surv(target_estimate, null_value, limits.info$sd, limits.info$vlo, limits.info$vup, bits) + return(list(pv=pv, vlo=limits.info$vlo, vup=limits.info$vup, sd=limits.info$sd)) +} -TG.interval = function(Z, eta, vlo, vup, sd, alpha, +TG.interval = function(Z, A, b, eta, Sigma=NULL, alpha=0.1, gridrange=c(-100,100), gridpts=100, griddepth=2, @@ -280,12 +292,13 @@ TG.interval = function(Z, eta, vlo, vup, sd, alpha, # compute sel intervals from poly lemmma, full version from Lee et al for full matrix Sigma + limits.info = TG.limits(Z, A, b, eta, Sigma) target_estimate = sum(as.numeric(eta) * as.numeric(Z)) - param_grid = seq(gridrange[1]*sd, gridrange[2]*sd, length=gridpts) + param_grid = seq(gridrange[1] * limits.info$sd, gridrange[2] * limits.info$sd, length=gridpts) pivot = function(param) { - tnorm.surv(target_estimate, param, sd, vlo, vup, bits) + tnorm.surv(target_estimate, param, limits.info$sd, limits.info$vlo, limits.info$vup, bits) } interval = grid.search(param_grid, pivot, alpha/2, 1-alpha/2, gridpts, griddepth) diff --git a/selectiveInference/man/TG.interval.Rd b/selectiveInference/man/TG.interval.Rd index d542691..d9a0d6e 100644 --- a/selectiveInference/man/TG.interval.Rd +++ b/selectiveInference/man/TG.interval.Rd @@ -9,7 +9,7 @@ Compute truncated Gaussian interval of Lee et al. (2016) with arbitrary affine selection and covariance. } \usage{ -TG.interval(Z, eta, vlo, vup, sd, alpha, +TG.interval(Z, A, b, eta, Sigma=NULL, alpha=0.1, gridrange=c(-100,100), gridpts=100, griddepth=2, @@ -20,18 +20,18 @@ TG.interval(Z, eta, vlo, vup, sd, alpha, \item{Z}{ Observed data (assumed to follow N(mu, Sigma) with sum(eta*mu)=null_value) } +\item{A}{ +Matrix specifiying affine inequalities AZ <= b +} +\item{b}{ +Offsets in the affine inequalities AZ <= b. +} \item{eta}{ Determines the target sum(eta*mu) and estimate sum(eta*Z). } -\item{vlo}{ -Lower truncation limits for statistic. Can be computed with TG.pvalue. -} -\item{vup}{ -Upper truncation limits for statistic. Can be computed with TG.pvalue. -} -\item{sd}{ -Standard error of sum(eta*Z). -} +\item{Sigma}{ +Covariance matrix of Z. Defaults to identity. +} \item{alpha}{ Significance level for confidence intervals (target is miscoverage alpha/2 in each tail) } @@ -82,13 +82,11 @@ Canadian Journal of Statistics, xx, 1-21. (Volume still not posted) \author{Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid} \examples{ - A = diag(5) b = rep(1, 5) Z = rep(0, 5) Sigma = diag(5) eta = as.numeric(c(1, 1, 0, 0, 0)) -V = TG.pvalue(Z, A, b, Sigma, eta) -TG.interval(Z, eta, V$vlo, V$vup, V$sd, 0.05) +TG.interval(Z, A, b, Sigma, eta) } \ No newline at end of file diff --git a/selectiveInference/man/TG.limits.Rd b/selectiveInference/man/TG.limits.Rd new file mode 100644 index 0000000..8a71f27 --- /dev/null +++ b/selectiveInference/man/TG.limits.Rd @@ -0,0 +1,60 @@ +\name{TG.limits} +\alias{TG.limits} + +\title{ +Truncation limits and standard deviation. +} +\description{ +Compute truncated limits and SD for use in computing +p-values or confidence intervals of Lee et al. (2016). +} +\usage{ +TG.limits(Z, A, b, eta, Sigma) +} +\arguments{ +\item{Z}{ +Observed data (assumed to follow N(mu, Sigma) with sum(eta*mu)=null_value) +} +\item{A}{ +Matrix specifiying affine inequalities AZ <= b +} +\item{b}{ +Offsets in the affine inequalities AZ <= b. +} +\item{eta}{ +Determines the target sum(eta*mu) and estimate sum(eta*Z). +} +\item{Sigma}{ +Covariance matrix of Z. Defaults to identity. +} +} +\details{ +This function computes the limits of truncation and the implied +standard deviation in the polyhedral lemma of Lee et al. (2016). +} + +\value{ +\item{vlo}{Lower truncation limits for statistic} +\item{vup}{Upper truncation limits for statistic} +\item{sd}{Standard error of sum(eta*Z)} +} + +\references{ +Jason Lee, Dennis Sun, Yuekai Sun, and Jonathan Taylor (2016). +Exact post-selection inference, with application to the lasso. Annals of Statistics, 44(3), 907-927. + +Jonathan Taylor and Robert Tibshirani (2017) Post-selection inference for math L1-penalized likelihood models. +Canadian Journal of Statistics, xx, 1-21. (Volume still not posted) + +} +\author{Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid} + +\examples{ +A = diag(5) +b = rep(1, 5) +Z = rep(0, 5) +Sigma = diag(5) +eta = as.numeric(c(1, 1, 0, 0, 0)) +TG.limits(Z, A, b, Sigma, eta) +} + \ No newline at end of file diff --git a/selectiveInference/man/TG.pvalue.Rd b/selectiveInference/man/TG.pvalue.Rd index 5625d9d..a1ec9ce 100644 --- a/selectiveInference/man/TG.pvalue.Rd +++ b/selectiveInference/man/TG.pvalue.Rd @@ -25,7 +25,7 @@ Offsets in the affine inequalities AZ <= b. Determines the target sum(eta*mu) and estimate sum(eta*Z). } \item{Sigma}{ -Covariance matrix of Z. +Covariance matrix of Z. Defaults to identity. } \item{null_value}{Hypothesized value of sum(eta*mu) under the null. } From 9d417492db875115a772f05dfdf54401c5ce83c1 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Wed, 2 Aug 2017 17:27:55 -0700 Subject: [PATCH 163/493] BF: arguments wrong in example --- selectiveInference/man/TG.interval.Rd | 2 +- selectiveInference/man/TG.limits.Rd | 2 +- selectiveInference/man/TG.pvalue.Rd | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/selectiveInference/man/TG.interval.Rd b/selectiveInference/man/TG.interval.Rd index d9a0d6e..287f9d0 100644 --- a/selectiveInference/man/TG.interval.Rd +++ b/selectiveInference/man/TG.interval.Rd @@ -87,6 +87,6 @@ b = rep(1, 5) Z = rep(0, 5) Sigma = diag(5) eta = as.numeric(c(1, 1, 0, 0, 0)) -TG.interval(Z, A, b, Sigma, eta) +TG.interval(Z, A, b, eta, Sigma) } \ No newline at end of file diff --git a/selectiveInference/man/TG.limits.Rd b/selectiveInference/man/TG.limits.Rd index 8a71f27..dff98be 100644 --- a/selectiveInference/man/TG.limits.Rd +++ b/selectiveInference/man/TG.limits.Rd @@ -55,6 +55,6 @@ b = rep(1, 5) Z = rep(0, 5) Sigma = diag(5) eta = as.numeric(c(1, 1, 0, 0, 0)) -TG.limits(Z, A, b, Sigma, eta) +TG.limits(Z, A, b, eta, Sigma) } \ No newline at end of file diff --git a/selectiveInference/man/TG.pvalue.Rd b/selectiveInference/man/TG.pvalue.Rd index a1ec9ce..8dd86de 100644 --- a/selectiveInference/man/TG.pvalue.Rd +++ b/selectiveInference/man/TG.pvalue.Rd @@ -71,8 +71,8 @@ b = rep(1, 5) Z = rep(0, 5) Sigma = diag(5) eta = as.numeric(c(1, 1, 0, 0, 0)) -TG.pvalue(Z, A, b, Sigma, eta) -TG.pvalue(Z, A, b, Sigma, eta, null_value=1) +TG.pvalue(Z, A, b, eta, Sigma) +TG.pvalue(Z, A, b, eta, Sigma, null_value=1) } \ No newline at end of file From fd0070a51aba038b6f2fd8887caad8cc43b056ac Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Wed, 2 Aug 2017 23:18:35 -0700 Subject: [PATCH 164/493] using TG base for all poly calcs --- selectiveInference/R/funs.fixed.R | 11 +++-- selectiveInference/R/funs.fs.R | 22 ++++++--- selectiveInference/R/funs.inf.R | 79 ++++++++++--------------------- selectiveInference/R/funs.lar.R | 22 ++++++--- 4 files changed, 66 insertions(+), 68 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index b30d04c..ccf45e5 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -122,14 +122,19 @@ else{ vj = vj / mj # Standardize (divide by norm of vj) sign[j] = sign(sum(vj*y)) vj = sign[j] * vj - a = poly.pval(y,G,u,vj,sigma,bits) + + limits.info = TG.limits(y, -G, -u, vj, Sigma=diag(rep(sigma^2, n))) + a = TG.pvalue.base(limits.info, bits=bits) pv[j] = a$pv vlo[j] = a$vlo * mj # Unstandardize (mult by norm of vj) vup[j] = a$vup * mj # Unstandardize (mult by norm of vj) vmat[j,] = vj * mj * sign[j] # Unstandardize (mult by norm of vj) - a = poly.int(y,G,u,vj,sigma,alpha,gridrange=gridrange, - flip=(sign[j]==-1),bits=bits) + a = TG.interval.base(limits.info, + alpha=alpha, + gridrange=gridrange, + flip=(sign[j]==-1), + bits=bits) ci[j,] = a$int * mj # Unstandardize (mult by norm of vj) tailarea[j,] = a$tailarea } diff --git a/selectiveInference/R/funs.fs.R b/selectiveInference/R/funs.fs.R index 3f8a87c..fcd7c71 100644 --- a/selectiveInference/R/funs.fs.R +++ b/selectiveInference/R/funs.fs.R @@ -299,15 +299,21 @@ fsInf <- function(obj, sigma=NULL, alpha=0.1, k=NULL, type=c("active","all","aic vj = vreg[j,] mj = sqrt(sum(vj^2)) vj = vj / mj # Standardize (divide by norm of vj) - a = poly.pval(y,Gj,uj,vj,sigma,bits) + + limits.info = TG.limits(y, -Gj, -uj, vj, Sigma=diag(rep(sigma^2, n))) + a = TG.pvalue.base(limits.info, bits=bits) + pv[j] = a$pv sxj = sx[vars[j]] vlo[j] = a$vlo * mj / sxj # Unstandardize (mult by norm of vj / sxj) vup[j] = a$vup * mj / sxj # Unstandardize (mult by norm of vj / sxj) vmat[j,] = vj * mj / sxj # Unstandardize (mult by norm of vj / sxj) - a = poly.int(y,Gj,uj,vj,sigma,alpha,gridrange=gridrange, - flip=(sign[j]==-1),bits=bits) + a = TG.interval.base(limits.info, + alpha=alpha, + gridrange=gridrange, + flip=(sign[j]==-1), + bits=bits) ci[j,] = a$int * mj / sxj # Unstandardize (mult by norm of vj / sxj) tailarea[j,] = a$tailarea } @@ -349,15 +355,19 @@ fsInf <- function(obj, sigma=NULL, alpha=0.1, k=NULL, type=c("active","all","aic Gj = rbind(G,vj) uj = c(u,0) - a = poly.pval(y,Gj,uj,vj,sigma,bits) + limits.info = TG.limits(y, -Gj, -uj, vj, Sigma=diag(rep(sigma^2, n))) + a = TG.pvalue.base(limits.info, bits=bits) pv[j] = a$pv sxj = sx[vars[j]] vlo[j] = a$vlo * mj / sxj # Unstandardize (mult by norm of vj / sxj) vup[j] = a$vup * mj / sxj # Unstandardize (mult by norm of vj / sxj) vmat[j,] = vj * mj / sxj # Unstandardize (mult by norm of vj / sxj) - a = poly.int(y,Gj,uj,vj,sigma,alpha,gridrange=gridrange, - flip=(sign[j]==-1),bits=bits) + a = TG.interval.base(limits.info, + alpha=alpha, + gridrange=gridrange, + flip=(sign[j]==-1), + bits=bits) ci[j,] = a$int * mj / sxj # Unstandardize (mult by norm of vj / sxj) tailarea[j,] = a$tailarea } diff --git a/selectiveInference/R/funs.inf.R b/selectiveInference/R/funs.inf.R index c3412d8..0cec095 100644 --- a/selectiveInference/R/funs.inf.R +++ b/selectiveInference/R/funs.inf.R @@ -1,48 +1,3 @@ -# Main p-value function - -poly.pval <- function(y, G, u, v, sigma, bits=NULL) { - z = sum(v*y) - vv = sum(v^2) - sd = sigma*sqrt(vv) - - rho = G %*% v / vv - vec = (u - G %*% y + rho*z) / rho - vlo = suppressWarnings(max(vec[rho>0])) - vup = suppressWarnings(min(vec[rho<0])) - - pv = tnorm.surv(z,0,sd,vlo,vup,bits) - return(list(pv=pv,vlo=vlo,vup=vup)) -} - -# Main confidence interval function - -poly.int <- function(y, G, u, v, sigma, alpha, gridrange=c(-100,100), - gridpts=100, griddepth=2, flip=FALSE, bits=NULL) { - - z = sum(v*y) - vv = sum(v^2) - sd = sigma*sqrt(vv) - - rho = G %*% v / vv - vec = (u - G %*% y + rho*z) / rho - vlo = suppressWarnings(max(vec[rho>0])) - vup = suppressWarnings(min(vec[rho<0])) - - xg = seq(gridrange[1]*sd,gridrange[2]*sd,length=gridpts) - fun = function(x) { tnorm.surv(z,x,sd,vlo,vup,bits) } - - int = grid.search(xg,fun,alpha/2,1-alpha/2,gridpts,griddepth) - tailarea = c(fun(int[1]),1-fun(int[2])) - - if (flip) { - int = -int[2:1] - tailarea = tailarea[2:1] - } - - return(list(int=int,tailarea=tailarea)) -} - -############################## # Assuming that grid is in sorted order from smallest to largest, # and vals are monotonically increasing function values over the @@ -251,6 +206,8 @@ aicStop <- function(x, y, action, df, sigma, mult=2, ntimes=2) { TG.limits = function(Z, A, b, eta, Sigma=NULL) { + target_estimate = sum(as.numeric(eta) * as.numeric(Z)) + if (is.null(Sigma)) { Sigma = diag(rep(1, n)) } @@ -271,16 +228,14 @@ TG.limits = function(Z, A, b, eta, Sigma=NULL) { vup = suppressWarnings(min(vec[rho > 0])) sd = sqrt(var_estimate) - return(list(vlo=vlo, vup=vup, sd=sd)) + return(list(vlo=vlo, vup=vup, sd=sd, estimate=target_estimate)) } TG.pvalue = function(Z, A, b, eta, Sigma=NULL, null_value=0, bits=NULL) { limits.info = TG.limits(Z, A, b, eta, Sigma) - target_estimate = sum(as.numeric(eta) * as.numeric(Z)) - pv = tnorm.surv(target_estimate, null_value, limits.info$sd, limits.info$vlo, limits.info$vup, bits) - return(list(pv=pv, vlo=limits.info$vlo, vup=limits.info$vup, sd=limits.info$sd)) + return(TG.pvalue.base(limits.info, null_value=null_value, bits=bits)) } TG.interval = function(Z, A, b, eta, Sigma=NULL, alpha=0.1, @@ -290,15 +245,29 @@ TG.interval = function(Z, A, b, eta, Sigma=NULL, alpha=0.1, flip=FALSE, bits=NULL) { + limits.info = TG.limits(Z, A, b, eta, Sigma) + + return(TG.interval.base(limits.info, + alpha=alpha, + gridrange=gridrange, + griddepth=griddepth, + flip=flip, + bits=bits)) +} + +TG.interval.base = function(limits.info, alpha=0.1, + gridrange=c(-100,100), + gridpts=100, + griddepth=2, + flip=FALSE, + bits=NULL) { + # compute sel intervals from poly lemmma, full version from Lee et al for full matrix Sigma - limits.info = TG.limits(Z, A, b, eta, Sigma) - target_estimate = sum(as.numeric(eta) * as.numeric(Z)) - param_grid = seq(gridrange[1] * limits.info$sd, gridrange[2] * limits.info$sd, length=gridpts) pivot = function(param) { - tnorm.surv(target_estimate, param, limits.info$sd, limits.info$vlo, limits.info$vup, bits) + tnorm.surv(limits.info$estimate, param, limits.info$sd, limits.info$vlo, limits.info$vup, bits) } interval = grid.search(param_grid, pivot, alpha/2, 1-alpha/2, gridpts, griddepth) @@ -314,6 +283,10 @@ TG.interval = function(Z, A, b, eta, Sigma=NULL, alpha=0.1, tailarea=tailarea)) } +TG.pvalue.base = function(limits.info, null_value=0, bits=NULL) { + pv = tnorm.surv(limits.info$estimate, null_value, limits.info$sd, limits.info$vlo, limits.info$vup, bits) + return(list(pv=pv, vlo=limits.info$vlo, vup=limits.info$vup, sd=limits.info$sd)) +} mydiag=function(x){ diff --git a/selectiveInference/R/funs.lar.R b/selectiveInference/R/funs.lar.R index 37d0ae3..df6c62c 100644 --- a/selectiveInference/R/funs.lar.R +++ b/selectiveInference/R/funs.lar.R @@ -379,15 +379,20 @@ larInf <- function(obj, sigma=NULL, alpha=0.1, k=NULL, type=c("active","all","ai vj = vreg[j,] mj = sqrt(sum(vj^2)) vj = vj / mj # Standardize (divide by norm of vj) - a = poly.pval(y,Gj,uj,vj,sigma,bits) + + limits.info = TG.limits(y, -Gj, -uj, vj, Sigma=diag(rep(sigma^2, n))) + a = TG.pvalue.lowlevel(limits.info, bits=bits) pv[j] = a$pv sxj = sx[vars[j]] vlo[j] = a$vlo * mj / sxj # Unstandardize (mult by norm of vj / sxj) vup[j] = a$vup * mj / sxj # Unstandardize (mult by norm of vj) vmat[j,] = vj * mj / sxj # Unstandardize (mult by norm of vj / sxj) - a = poly.int(y,Gj,uj,vj,sigma,alpha,gridrange=gridrange, - flip=(sign[j]==-1),bits=bits) + a = TG.interval.lowlevel(limits.info, + alpha=alpha, + gridrange=gridrange, + flip=(sign[j]==-1), + bits=bits) ci[j,] = a$int * mj / sxj # Unstandardize (mult by norm of vj / sxj) tailarea[j,] = a$tailarea @@ -433,15 +438,20 @@ larInf <- function(obj, sigma=NULL, alpha=0.1, k=NULL, type=c("active","all","ai Gj = rbind(G,vj) uj = c(u,0) - a = poly.pval(y,Gj,uj,vj,sigma,bits) + limits.info = TG.limits(y, -Gj, -uj, vj, Sigma=diag(rep(sigma^2, n))) + a = TG.pvalue.lowlevel(limits.info, bits=bits) + pv[j] = a$pv sxj = sx[vars[j]] vlo[j] = a$vlo * mj / sxj # Unstandardize (mult by norm of vj / sxj) vup[j] = a$vup * mj / sxj # Unstandardize (mult by norm of vj / sxj) vmat[j,] = vj * mj / sxj # Unstandardize (mult by norm of vj / sxj) - a = poly.int(y,Gj,uj,vj,sigma,alpha,gridrange=gridrange, - flip=(sign[j]==-1),bits=bits) + a = TG.interval.lowlevel(limits.info, + alpha=alpha, + gridrange=gridrange, + flip=(sign[j]==-1), + bits=bits) ci[j,] = a$int * mj / sxj # Unstandardize (mult by norm of vj / sxj) tailarea[j,] = a$tailarea } From 5d5d794ef8fd4c8e4e0700ded6b6e1ff7b3beaf2 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Wed, 2 Aug 2017 23:37:41 -0700 Subject: [PATCH 165/493] BF: forgot to rename lowlevel to base --- selectiveInference/R/funs.lar.R | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/selectiveInference/R/funs.lar.R b/selectiveInference/R/funs.lar.R index df6c62c..eb31b4e 100644 --- a/selectiveInference/R/funs.lar.R +++ b/selectiveInference/R/funs.lar.R @@ -381,18 +381,18 @@ larInf <- function(obj, sigma=NULL, alpha=0.1, k=NULL, type=c("active","all","ai vj = vj / mj # Standardize (divide by norm of vj) limits.info = TG.limits(y, -Gj, -uj, vj, Sigma=diag(rep(sigma^2, n))) - a = TG.pvalue.lowlevel(limits.info, bits=bits) + a = TG.pvalue.base(limits.info, bits=bits) pv[j] = a$pv sxj = sx[vars[j]] vlo[j] = a$vlo * mj / sxj # Unstandardize (mult by norm of vj / sxj) vup[j] = a$vup * mj / sxj # Unstandardize (mult by norm of vj) vmat[j,] = vj * mj / sxj # Unstandardize (mult by norm of vj / sxj) - a = TG.interval.lowlevel(limits.info, - alpha=alpha, - gridrange=gridrange, - flip=(sign[j]==-1), - bits=bits) + a = TG.interval.base(limits.info, + alpha=alpha, + gridrange=gridrange, + flip=(sign[j]==-1), + bits=bits) ci[j,] = a$int * mj / sxj # Unstandardize (mult by norm of vj / sxj) tailarea[j,] = a$tailarea @@ -439,7 +439,7 @@ larInf <- function(obj, sigma=NULL, alpha=0.1, k=NULL, type=c("active","all","ai uj = c(u,0) limits.info = TG.limits(y, -Gj, -uj, vj, Sigma=diag(rep(sigma^2, n))) - a = TG.pvalue.lowlevel(limits.info, bits=bits) + a = TG.pvalue.base(limits.info, bits=bits) pv[j] = a$pv sxj = sx[vars[j]] @@ -447,11 +447,11 @@ larInf <- function(obj, sigma=NULL, alpha=0.1, k=NULL, type=c("active","all","ai vup[j] = a$vup * mj / sxj # Unstandardize (mult by norm of vj / sxj) vmat[j,] = vj * mj / sxj # Unstandardize (mult by norm of vj / sxj) - a = TG.interval.lowlevel(limits.info, - alpha=alpha, - gridrange=gridrange, - flip=(sign[j]==-1), - bits=bits) + a = TG.interval.base(limits.info, + alpha=alpha, + gridrange=gridrange, + flip=(sign[j]==-1), + bits=bits) ci[j,] = a$int * mj / sxj # Unstandardize (mult by norm of vj / sxj) tailarea[j,] = a$tailarea } From c8861e0a44e6edcfe06145ceb0b9355eb7d481d2 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 3 Aug 2017 11:23:08 -0700 Subject: [PATCH 166/493] added constraint description in docs, warning about constraint not being satisfied --- selectiveInference/R/funs.inf.R | 4 ++++ selectiveInference/man/TG.interval.Rd | 1 + selectiveInference/man/TG.limits.Rd | 1 + selectiveInference/man/TG.pvalue.Rd | 1 + 4 files changed, 7 insertions(+) diff --git a/selectiveInference/R/funs.inf.R b/selectiveInference/R/funs.inf.R index 0cec095..9d7e740 100644 --- a/selectiveInference/R/funs.inf.R +++ b/selectiveInference/R/funs.inf.R @@ -208,6 +208,10 @@ TG.limits = function(Z, A, b, eta, Sigma=NULL) { target_estimate = sum(as.numeric(eta) * as.numeric(Z)) + if (max(A %*% as.numeric(Z) - b) > 0) { + warning('Contsraint not satisfied. A %*% Z should be elementwise less than or equal to b') + } + if (is.null(Sigma)) { Sigma = diag(rep(1, n)) } diff --git a/selectiveInference/man/TG.interval.Rd b/selectiveInference/man/TG.interval.Rd index 287f9d0..c898d17 100644 --- a/selectiveInference/man/TG.interval.Rd +++ b/selectiveInference/man/TG.interval.Rd @@ -7,6 +7,7 @@ Truncated Gaussian confidence interval. \description{ Compute truncated Gaussian interval of Lee et al. (2016) with arbitrary affine selection and covariance. +Z should satisfy A %*% Z elementise less then or equal b. } \usage{ TG.interval(Z, A, b, eta, Sigma=NULL, alpha=0.1, diff --git a/selectiveInference/man/TG.limits.Rd b/selectiveInference/man/TG.limits.Rd index dff98be..cc005fc 100644 --- a/selectiveInference/man/TG.limits.Rd +++ b/selectiveInference/man/TG.limits.Rd @@ -7,6 +7,7 @@ Truncation limits and standard deviation. \description{ Compute truncated limits and SD for use in computing p-values or confidence intervals of Lee et al. (2016). +Z should satisfy A %*% Z elementise less then or equal b. } \usage{ TG.limits(Z, A, b, eta, Sigma) diff --git a/selectiveInference/man/TG.pvalue.Rd b/selectiveInference/man/TG.pvalue.Rd index 8dd86de..d6e54b3 100644 --- a/selectiveInference/man/TG.pvalue.Rd +++ b/selectiveInference/man/TG.pvalue.Rd @@ -7,6 +7,7 @@ Truncated Gaussian p-value. \description{ Compute truncated Gaussian p-value of Lee et al. (2016) with arbitrary affine selection and covariance. +Z should satisfy A %*% Z elementise less then or equal b. } \usage{ TG.pvalue(Z, A, b, eta, Sigma, null_value=0, bits=NULL) From 4a9f1cf3607f4e676789d4f4461b2ecc91e0b646 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 3 Aug 2017 11:24:34 -0700 Subject: [PATCH 167/493] typo --- selectiveInference/man/TG.interval.Rd | 2 +- selectiveInference/man/TG.limits.Rd | 2 +- selectiveInference/man/TG.pvalue.Rd | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/selectiveInference/man/TG.interval.Rd b/selectiveInference/man/TG.interval.Rd index c898d17..50d2b93 100644 --- a/selectiveInference/man/TG.interval.Rd +++ b/selectiveInference/man/TG.interval.Rd @@ -7,7 +7,7 @@ Truncated Gaussian confidence interval. \description{ Compute truncated Gaussian interval of Lee et al. (2016) with arbitrary affine selection and covariance. -Z should satisfy A %*% Z elementise less then or equal b. +Z should satisfy A %*% Z elementwise less then or equal b. } \usage{ TG.interval(Z, A, b, eta, Sigma=NULL, alpha=0.1, diff --git a/selectiveInference/man/TG.limits.Rd b/selectiveInference/man/TG.limits.Rd index cc005fc..e2df17e 100644 --- a/selectiveInference/man/TG.limits.Rd +++ b/selectiveInference/man/TG.limits.Rd @@ -7,7 +7,7 @@ Truncation limits and standard deviation. \description{ Compute truncated limits and SD for use in computing p-values or confidence intervals of Lee et al. (2016). -Z should satisfy A %*% Z elementise less then or equal b. +Z should satisfy A %*% Z elementwise less then or equal b. } \usage{ TG.limits(Z, A, b, eta, Sigma) diff --git a/selectiveInference/man/TG.pvalue.Rd b/selectiveInference/man/TG.pvalue.Rd index d6e54b3..716e5b3 100644 --- a/selectiveInference/man/TG.pvalue.Rd +++ b/selectiveInference/man/TG.pvalue.Rd @@ -7,7 +7,7 @@ Truncated Gaussian p-value. \description{ Compute truncated Gaussian p-value of Lee et al. (2016) with arbitrary affine selection and covariance. -Z should satisfy A %*% Z elementise less then or equal b. +Z should satisfy A %*% Z elementwise less then or equal b. } \usage{ TG.pvalue(Z, A, b, eta, Sigma, null_value=0, bits=NULL) From 222fc7c4aaf65739e98c94f034d3187850527784 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Fri, 4 Aug 2017 13:35:44 -0700 Subject: [PATCH 168/493] BF: correcting the conditioning for FS --- selectiveInference/R/funs.fs.R | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/selectiveInference/R/funs.fs.R b/selectiveInference/R/funs.fs.R index fcd7c71..db0968b 100644 --- a/selectiveInference/R/funs.fs.R +++ b/selectiveInference/R/funs.fs.R @@ -132,7 +132,8 @@ fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, # Gamma matrix! if (gi + 2*p > nrow(Gamma)) Gamma = rbind(Gamma,matrix(0,2*p+gbuf,n)) working_x = t(sign_score*t(working_x)) - Gamma[gi+Seq(1,p-r),] = t(working_x); gi = gi+p-r + + Gamma[gi+Seq(1,p-r-1),] = t(working_x[,i_hit]+working_x[,-i_hit]); gi = gi+p-r-1 Gamma[gi+Seq(1,p-r-1),] = t(working_x[,i_hit]-working_x[,-i_hit]); gi = gi+p-r-1 Gamma[gi+1,] = t(working_x[,i_hit]); gi = gi+1 From b5f4bfd7188f150ed7a20940df442701cc21f036 Mon Sep 17 00:00:00 2001 From: kevinbfry Date: Tue, 8 Aug 2017 01:19:13 -0700 Subject: [PATCH 169/493] Added debiased lasso for linear regression when type='full' and n < p --- selectiveInference/R/funs.fixed.R | 451 ++++++++++++++++++++-------- selectiveInference/R/linear.tests.R | 172 +++++++++++ 2 files changed, 500 insertions(+), 123 deletions(-) create mode 100644 selectiveInference/R/linear.tests.R diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index ccf45e5..3258b80 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -7,112 +7,170 @@ sigma=NULL, alpha=0.1, type=c("partial","full"), tol.beta=1e-5, tol.kkt=0.1, gridrange=c(-100,100), bits=NULL, verbose=FALSE) { - family = match.arg(family) + family = match.arg(family) this.call = match.call() type = match.arg(type) - + if(family=="binomial") { - if(type!="partial") stop("Only type= partial allowed with binomial family") - out=fixedLogitLassoInf(x,y,beta,lambda,alpha=alpha, type="partial", tol.beta=tol.beta, tol.kkt=tol.kkt, - gridrange=gridrange, bits=bits, verbose=verbose,this.call=this.call) - return(out) - } -else if(family=="cox") { - if(type!="partial") stop("Only type= partial allowed with Cox family") - out=fixedCoxLassoInf(x,y,status,beta,lambda,alpha=alpha, type="partial",tol.beta=tol.beta, - tol.kkt=tol.kkt, gridrange=gridrange, bits=bits, verbose=verbose,this.call=this.call) - return(out) - } - -else{ - - - - checkargs.xy(x,y) - if (missing(beta) || is.null(beta)) stop("Must supply the solution beta") - if (missing(lambda) || is.null(lambda)) stop("Must supply the tuning parameter value lambda") - checkargs.misc(beta=beta,lambda=lambda,sigma=sigma,alpha=alpha, - gridrange=gridrange,tol.beta=tol.beta,tol.kkt=tol.kkt) - if (!is.null(bits) && !requireNamespace("Rmpfr",quietly=TRUE)) { - warning("Package Rmpfr is not installed, reverting to standard precision") - bits = NULL + if(type!="partial") stop("Only type= partial allowed with binomial family") + out=fixedLogitLassoInf(x,y,beta,lambda,alpha=alpha, type="partial", tol.beta=tol.beta, tol.kkt=tol.kkt, + gridrange=gridrange, bits=bits, verbose=verbose,this.call=this.call) + return(out) } - - n = nrow(x) - p = ncol(x) - beta = as.numeric(beta) - if (length(beta) != p) stop("Since family='gaussian', beta must have length equal to ncol(x)") - - # If glmnet was run with an intercept term, center x and y - if (intercept==TRUE) { - obj = standardize(x,y,TRUE,FALSE) - x = obj$x - y = obj$y + else if(family=="cox") { + if(type!="partial") stop("Only type= partial allowed with Cox family") + out=fixedCoxLassoInf(x,y,status,beta,lambda,alpha=alpha, type="partial",tol.beta=tol.beta, + tol.kkt=tol.kkt, gridrange=gridrange, bits=bits, verbose=verbose,this.call=this.call) + return(out) } - - # Check the KKT conditions - g = t(x)%*%(y-x%*%beta) / lambda - if (any(abs(g) > 1+tol.kkt * sqrt(sum(y^2)))) - warning(paste("Solution beta does not satisfy the KKT conditions", - "(to within specified tolerances)")) - - vars = which(abs(beta) > tol.beta / sqrt(colSums(x^2))) - if(length(vars)==0){ + + else{ + + + + checkargs.xy(x,y) + if (missing(beta) || is.null(beta)) stop("Must supply the solution beta") + if (missing(lambda) || is.null(lambda)) stop("Must supply the tuning parameter value lambda") + + n = nrow(x) + p = ncol(x) + beta = as.numeric(beta) + if (type == "full") { + if (p > n) { + # need intercept (if there is one) for debiased lasso + hbeta = beta + if (intercept == T) { + if (length(beta) != p + 1) { + stop("Since type='full', p > n, and intercept=TRUE, beta must have length equal to ncol(x)+1") + } + # remove intercept if included + beta = beta[-1] + } else if (length(beta) != p) { + stop("Since family='gaussian', type='full' and intercept=FALSE, beta must have length equal to ncol(x)") + } + } + } else if (length(beta) != p) { + stop("Since family='gaussian' and type='partial', beta must have length equal to ncol(x)") + } + + checkargs.misc(beta=beta,lambda=lambda,sigma=sigma,alpha=alpha, + gridrange=gridrange,tol.beta=tol.beta,tol.kkt=tol.kkt) + if (!is.null(bits) && !requireNamespace("Rmpfr",quietly=TRUE)) { + warning("Package Rmpfr is not installed, reverting to standard precision") + bits = NULL + } + + # If glmnet was run with an intercept term, center x and y + if (intercept==TRUE) { + obj = standardize(x,y,TRUE,FALSE) + x = obj$x + y = obj$y + } + + # Check the KKT conditions + g = t(x)%*%(y-x%*%beta) / lambda + if (any(abs(g) > 1+tol.kkt * sqrt(sum(y^2)))) + warning(paste("Solution beta does not satisfy the KKT conditions", + "(to within specified tolerances)")) + + tol.coef = tol.beta * sqrt(n^2 / colSums(x^2)) + # print(tol.coef) + vars = which(abs(beta) > tol.coef) + # print(beta) + # print(vars) + if(length(vars)==0){ cat("Empty model",fill=T) return() - } - if (any(sign(g[vars]) != sign(beta[vars]))) - warning(paste("Solution beta does not satisfy the KKT conditions", - "(to within specified tolerances). You might try rerunning", - "glmnet with a lower setting of the", - "'thresh' parameter, for a more accurate convergence.")) - - # Get lasso polyhedral region, of form Gy >= u - out = fixedLasso.poly(x,y,beta,lambda,vars) - G = out$G - u = out$u - - # Check polyhedral region - tol.poly = 0.01 - if (min(G %*% y - u) < -tol.poly * sqrt(sum(y^2))) - stop(paste("Polyhedral constraints not satisfied; you must recompute beta", - "more accurately. With glmnet, make sure to use exact=TRUE in coef(),", - "and check whether the specified value of lambda is too small", - "(beyond the grid of values visited by glmnet).", - "You might also try rerunning glmnet with a lower setting of the", - "'thresh' parameter, for a more accurate convergence.")) - - # Estimate sigma - if (is.null(sigma)) { - if (n >= 2*p) { - oo = intercept - sigma = sqrt(sum(lsfit(x,y,intercept=oo)$res^2)/(n-p-oo)) } - else { - sigma = sd(y) - warning(paste(sprintf("p > n/2, and sd(y) = %0.3f used as an estimate of sigma;",sigma), - "you may want to use the estimateSigma function")) + if (any(sign(g[vars]) != sign(beta[vars]))) + warning(paste("Solution beta does not satisfy the KKT conditions", + "(to within specified tolerances). You might try rerunning", + "glmnet with a lower setting of the", + "'thresh' parameter, for a more accurate convergence.")) + + # Get lasso polyhedral region, of form Gy >= u + if (type == 'full' & p > n) out = fixedLasso.poly(x,y,beta,lambda,vars,inactive=TRUE) + else out = fixedLasso.poly(x,y,beta,lambda,vars) + G = out$G + u = out$u + + # Check polyhedral region + tol.poly = 0.01 + if (min(G %*% y - u) < -tol.poly * sqrt(sum(y^2))) + stop(paste("Polyhedral constraints not satisfied; you must recompute beta", + "more accurately. With glmnet, make sure to use exact=TRUE in coef(),", + "and check whether the specified value of lambda is too small", + "(beyond the grid of values visited by glmnet).", + "You might also try rerunning glmnet with a lower setting of the", + "'thresh' parameter, for a more accurate convergence.")) + + # Estimate sigma + if (is.null(sigma)) { + if (n >= 2*p) { + oo = intercept + sigma = sqrt(sum(lsfit(x,y,intercept=oo)$res^2)/(n-p-oo)) + } + else { + sigma = sd(y) + warning(paste(sprintf("p > n/2, and sd(y) = %0.3f used as an estimate of sigma;",sigma), + "you may want to use the estimateSigma function")) + } + } + + k = length(vars) + pv = vlo = vup = numeric(k) + vmat = matrix(0,k,n) + ci = tailarea = matrix(0,k,2) + sign = numeric(k) + + if (type=="full" & p > n) { + if (intercept == T) { + pp=p+1 + Xint <- cbind(rep(1,n),x) + # indices of selected predictors + S = c(1,vars + 1) + notS = which(abs(beta) <= tol.coef) + 1 + } else { + pp=p + Xint <- x + # indices of selected predictors + S = vars + notS = which(abs(beta) <= tol.coef) + } + + + XS = Xint[,S] + hbetaS = hbeta[S] + + # Reorder so that active set S is first + Xordered = Xint[,c(S,notS,recursive=T)] + + hsigma <- 1/n*(t(Xordered)%*%Xordered) + hsigmaS <- 1/n*(t(XS)%*%XS) # hsigma[S,S] + hsigmaSinv <- solve(hsigmaS) # pinv(hsigmaS) + + # Approximate inverse covariance matrix for when (n < p) from lasso_Inference.R + htheta <- InverseLinfty(hsigma, n, verbose=FALSE) + + FS = rbind(diag(length(S)),matrix(0,pp-length(S),length(S))) + ithetasigma = (diag(pp)-(htheta%*%hsigma)) + + M <- (((htheta%*%t(Xordered))+ithetasigma%*%FS%*%hsigmaSinv%*%t(XS))/n) + # vector which is offset for testing debiased beta's + null_value <- (((ithetasigma%*%FS%*%hsigmaSinv)%*%sign(hbetaS))*lambda/n) + if (intercept == T) { + M = M[-1,] # remove intercept row + null_value = null_value[-1] # remove intercept element + } + } else if (type=="partial" || p > n) { + xa = x[,vars,drop=F] + M = pinv(crossprod(xa)) %*% t(xa) + null_value = rep(0,k) + } else { + M = pinv(crossprod(x)) %*% t(x) + M = M[vars,,drop=F] + null_value = rep(0,k) } - } - - k = length(vars) - pv = vlo = vup = numeric(k) - vmat = matrix(0,k,n) - ci = tailarea = matrix(0,k,2) - sign = numeric(k) - - if (type=="full" & p > n) - warning(paste("type='full' does not make sense when p > n;", - "switching to type='partial'")) - - if (type=="partial" || p > n) { - xa = x[,vars,drop=F] - M = pinv(crossprod(xa)) %*% t(xa) - } - else { - M = pinv(crossprod(x)) %*% t(x) - M = M[vars,,drop=F] - } for (j in 1:k) { if (verbose) cat(sprintf("Inference for variable %i ...\n",vars[j])) @@ -124,7 +182,7 @@ else{ vj = sign[j] * vj limits.info = TG.limits(y, -G, -u, vj, Sigma=diag(rep(sigma^2, n))) - a = TG.pvalue.base(limits.info, bits=bits) + a = TG.pvalue.base(limits.info, null_value=null_value[j], bits=bits) pv[j] = a$pv vlo[j] = a$vlo * mj # Unstandardize (mult by norm of vj) vup[j] = a$vup * mj # Unstandardize (mult by norm of vj) @@ -135,7 +193,7 @@ else{ gridrange=gridrange, flip=(sign[j]==-1), bits=bits) - ci[j,] = a$int * mj # Unstandardize (mult by norm of vj) + ci[j,] = (a$int-null_value[j]) * mj # Unstandardize (mult by norm of vj) tailarea[j,] = a$tailarea } @@ -154,31 +212,178 @@ else{ fixedLasso.poly= -function(x, y, beta, lambda, a) { - xa = x[,a,drop=F] - xac = x[,!a,drop=F] - xai = pinv(crossprod(xa)) - xap = xai %*% t(xa) - za = sign(beta[a]) - if (length(za)>1) dz = diag(za) - if (length(za)==1) dz = matrix(za,1,1) - -# P = diag(1,nrow(xa)) - xa %*% xap - #NOTE: inactive constraints not needed below! - - G = -rbind( - # 1/lambda * t(xac) %*% P, - # -1/lambda * t(xac) %*% P, - -dz %*% xap + function(x, y, beta, lambda, a, inactive = FALSE) { + xa = x[,a,drop=F] + xac = x[,!a,drop=F] + xai = pinv(crossprod(xa)) + xap = xai %*% t(xa) + za = sign(beta[a]) + if (length(za)>1) dz = diag(za) + if (length(za)==1) dz = matrix(za,1,1) + + if (inactive) { + P = diag(1,nrow(xa)) - xa %*% xap + + G = -rbind( + 1/lambda * t(xac) %*% P, + -1/lambda * t(xac) %*% P, + -dz %*% xap ) - lambda2=lambda - if(length(lambda)>1) lambda2=lambda[a] - u = -c( - # 1 - t(xac) %*% t(xap) %*% za, - # 1 + t(xac) %*% t(xap) %*% za, - -lambda2 * dz %*% xai %*% za) - - return(list(G=G,u=u)) + lambda2=lambda + if(length(lambda)>1) lambda2=lambda[a] + u = -c( + 1 - t(xac) %*% t(xap) %*% za, + 1 + t(xac) %*% t(xap) %*% za, + -lambda2 * dz %*% xai %*% za) + } else { + G = -rbind( + # 1/lambda * t(xac) %*% P, + # -1/lambda * t(xac) %*% P, + -dz %*% xap + ) + lambda2=lambda + if(length(lambda)>1) lambda2=lambda[a] + u = -c( + # 1 - t(xac) %*% t(xap) %*% za, + # 1 + t(xac) %*% t(xap) %*% za, + -lambda2 * dz %*% xai %*% za) + } + + return(list(G=G,u=u)) + } + +############################## + +### Functions borrowed from lasso_inference.R + +## Approximates inverse covariance matrix theta +InverseLinfty <- function(sigma, n, resol=1.5, mu=NULL, maxiter=50, threshold=1e-2, verbose = TRUE) { + isgiven <- 1; + if (is.null(mu)){ + isgiven <- 0; + } + + p <- nrow(sigma); + M <- matrix(0, p, p); + xperc = 0; + xp = round(p/10); + for (i in 1:p) { + if ((i %% xp)==0){ + xperc = xperc+10; + if (verbose) { + print(paste(xperc,"% done",sep="")); } + } + if (isgiven==0){ + mu <- (1/sqrt(n)) * qnorm(1-(0.1/(p^2))); + } + mu.stop <- 0; + try.no <- 1; + incr <- 0; + while ((mu.stop != 1)&&(try.no<10)){ + last.beta <- beta + output <- InverseLinftyOneRow(sigma, i, mu, maxiter=maxiter, threshold=threshold) + beta <- output$optsol + iter <- output$iter + if (isgiven==1){ + mu.stop <- 1 + } + else{ + if (try.no==1){ + if (iter == (maxiter+1)){ + incr <- 1; + mu <- mu*resol; + } else { + incr <- 0; + mu <- mu/resol; + } + } + if (try.no > 1){ + if ((incr == 1)&&(iter == (maxiter+1))){ + mu <- mu*resol; + } + if ((incr == 1)&&(iter < (maxiter+1))){ + mu.stop <- 1; + } + if ((incr == 0)&&(iter < (maxiter+1))){ + mu <- mu/resol; + } + if ((incr == 0)&&(iter == (maxiter+1))){ + mu <- mu*resol; + beta <- last.beta; + mu.stop <- 1; + } + } + } + try.no <- try.no+1 + } + M[i,] <- beta; + } + return(M) +} + +InverseLinftyOneRow <- function ( sigma, i, mu, maxiter=50, threshold=1e-2 ) { + p <- nrow(sigma); + rho <- max(abs(sigma[i,-i])) / sigma[i,i]; + mu0 <- rho/(1+rho); + beta <- rep(0,p); + + if (mu >= mu0){ + beta[i] <- (1-mu0)/sigma[i,i]; + returnlist <- list("optsol" = beta, "iter" = 0); + return(returnlist); + } + + diff.norm2 <- 1; + last.norm2 <- 1; + iter <- 1; + iter.old <- 1; + beta[i] <- (1-mu0)/sigma[i,i]; + beta.old <- beta; + sigma.tilde <- sigma; + diag(sigma.tilde) <- 0; + vs <- -sigma.tilde%*%beta; + + while ((iter <= maxiter) && (diff.norm2 >= threshold*last.norm2)){ + + for (j in 1:p){ + oldval <- beta[j]; + v <- vs[j]; + if (j==i) + v <- v+1; + beta[j] <- SoftThreshold(v,mu)/sigma[j,j]; + if (oldval != beta[j]){ + vs <- vs + (oldval-beta[j])*sigma.tilde[,j]; + } + } + + iter <- iter + 1; + if (iter==2*iter.old){ + d <- beta - beta.old; + diff.norm2 <- sqrt(sum(d*d)); + last.norm2 <-sqrt(sum(beta*beta)); + iter.old <- iter; + beta.old <- beta; + if (iter>10) + vs <- -sigma.tilde%*%beta; + } + } + + returnlist <- list("optsol" = beta, "iter" = iter) + return(returnlist) +} + +SoftThreshold <- function( x, lambda ) { + # + # Standard soft thresholding + # + if (x>lambda){ + return (x-lambda);} + else { + if (x< (-lambda)){ + return (x+lambda);} + else { + return (0); } + } } ############################## diff --git a/selectiveInference/R/linear.tests.R b/selectiveInference/R/linear.tests.R new file mode 100644 index 0000000..a37f76f --- /dev/null +++ b/selectiveInference/R/linear.tests.R @@ -0,0 +1,172 @@ +robs.test <- function() { + n <- 100 + p <- 200 + + set.seed(11332) + + y <- matrix(rnorm(n),ncol=1) # rand N(0,1) response + X <- matrix(rnorm(p*n),ncol = p) # p rand N(0,1) predictors + + X=scale(X,T,T)/sqrt(n-1) + lambda=1 + sigma = estimateSigma(X,y)$sigmahat + + las <- glmnet(X,y,family="gaussian",alpha=1,standardize=F,intercept=T) + hbeta <- as.numeric(coef(las,x=X,y=y,s=lambda/n,exact=TRUE,intercept=T)) + + + return(fixedLassoInf(X,y,hbeta[-1],lambda,family="gaussian",type="partial",intercept=T,sigma=sigma)$pv) +} + + +## Tests partial inf for X and y randomly generated from N(0,1) +nullTest <- function(X,y,lambda,intercept,type=c("full","partial")) { + n=nrow(X) + X=scale(X,T,T)/sqrt(n-1) + + sigma = estimateSigma(X,y)$sigmahat + + las <- glmnet(X,y,family="gaussian",alpha=1,standardize=F,intercept=intercept) + hbeta <- as.numeric(coef(las,x=X,y=y,s=lambda/n,exact=TRUE,intercept=intercept)) + + if (type=="partial" || intercept==F) hbeta = hbeta[-1] + + return(fixedLassoInf(X,y,hbeta,lambda,family="gaussian",type=type,intercept=intercept,sigma=sigma)) +} + +## Test partial inf for X and y where 10 variables are y with random additive N(0,0.5) noise +corrTest <- function(X,y,lambda,intercept,type=c("full","partial")) { + n=nrow(X) + corr.X = rep(y,10) + matrix(rnorm(n*10,0,0.5),ncol = 10) + X = cbind(corr.X,X) + X=scale(X,T,T)/sqrt(n-1) + + las <- glmnet(X,y,family="gaussian",alpha=1,standardize=F,intercept=intercept) + hbeta <- as.numeric(coef(las,x=X,y=y,s=lambda/n,exact=TRUE,intercept=intercept)) + + sigma = estimateSigma(X,y)$sigmahat + + if (type=="partial" || intercept==F) hbeta = hbeta[-1] + + return(fixedLassoInf(X,y,hbeta,lambda,family="gaussian",type=type,intercept=intercept,sigma=sigma)) +} + +## QQ plot of p-values for all null data now that bug fix is implemented +partial.qq.test <- function() { + n <- 100 + p <- 200 + + lambda=1 + + null.int.pvs <- c() + corr.int.pvs <- c() + null.pvs <- c() + corr.pvs <- c() + for(i in 1:25) { + y <- matrix(rnorm(n),ncol=1) # rand N(0,1) response + X <- matrix(rnorm(p*n),ncol=p) # p rand N(0,1) predictors + + null <- nullTest(X,y,lambda,F,type="partial") + corr <- corrTest(X,y,lambda,F,type="partial") + null.pvs <- c(null.pvs,null$pv,recursive=T) + corr.pvs <- c(corr.pvs,corr$pv,recursive=T) + null.int <- nullTest(X,y,lambda,T,type="partial") + corr.int <- corrTest(X,y,lambda,T,type="partial") + null.int.pvs <- c(null.int.pvs,null.int$pv,recursive=T) + corr.int.pvs <- c(corr.int.pvs,corr.int$pv,recursive=T) + } + + qqplot(x=runif(length(null.pvs)),y=null.pvs,xlab="Expected",ylab="Observed",main="Partial Coef. Null X w/o Intercept") + abline(0,1) + qqplot(x=runif(length(corr.pvs)),y=corr.pvs,xlab="Expected",ylab="Observed",main="Partial Coef. 10 Corr. X w/o Intercept") + abline(0,1) + qqplot(x=runif(length(null.int.pvs)),y=null.int.pvs,xlab="Expected",ylab="Observed",main="Partial Coef. Null X w/ Intercept") + abline(0,1) + qqplot(x=runif(length(corr.int.pvs)),y=corr.int.pvs,xlab="Expected",ylab="Observed",main="Partial Coef. 10 Corr. X w/ Intercept") + abline(0,1) +} + +## QQ plot of p-values for all null data now that bug fix is implemented +pop.qq.test <- function() { + n <- 100 + p <- 200 + + lambda=1 + + null.int.pvs <- c() + corr.int.pvs <- c() + null.pvs <- c() + corr.pvs <- c() + for(i in 1:25) { + y <- matrix(rnorm(n),ncol=1) # rand N(0,1) response + X <- matrix(rnorm(p*n),ncol=p) # p rand N(0,1) predictors + + null <- nullTest(X,y,lambda,F,type="full") + corr <- corrTest(X,y,lambda,F,type="full") + null.pvs <- c(null.pvs,null$pv,recursive=T) + corr.pvs <- c(corr.pvs,corr$pv,recursive=T) + null.int <- nullTest(X,y,lambda,T,type="full") + corr.int <- corrTest(X,y,lambda,T,type="full") + null.int.pvs <- c(null.int.pvs,null.int$pv,recursive=T) + corr.int.pvs <- c(corr.int.pvs,corr.int$pv,recursive=T) + } + + qqplot(x=runif(length(null.pvs)),y=null.pvs,xlab="Expected",ylab="Observed",main="Pop Coef. Null X w/o Intercept") + abline(0,1) + qqplot(x=runif(length(corr.pvs)),y=corr.pvs,xlab="Expected",ylab="Observed",main="Pop Coef. 10 Corr. X w/o Intercept") + abline(0,1) + qqplot(x=runif(length(null.int.pvs)),y=null.int.pvs,xlab="Expected",ylab="Observed",main="Pop Coef. Null X w/ Intercept") + abline(0,1) + qqplot(x=runif(length(corr.int.pvs)),y=corr.int.pvs,xlab="Expected",ylab="Observed",main="Pop Coef. 10 Corr. X w/ Intercept") + abline(0,1) +} + + + + +## QQ plot of p-values for data with correlated x now that bug fix implemented +power.partial.pval.dist <- function(n,p,intercept=T,lambda=1) { + pvs <- c() + for(i in 1:10) { + a <- powerPartialTest(n,p,intercept,lambda) + ps <- a$pv + pvs <- c(pvs,ps,recursive=T) + } + qqplot(x=runif(length(pvs)),y=pvs,xlab="Expected",ylab="Observed",main="Partial Coef. 10 Corr. X") + abline(0,1) +} + + + + +## Tests pop inf for X and y randomly generated +nullPopTest <- function(n,p,intercept=T,lambda=1) { + y <- matrix(rnorm(n),ncol=1) # rand N(0,1) response + X <- matrix(rnorm(p*n),ncol = p) # p rand N(0,1) predictors + + # lambda <- 1 + X=scale(X,T,T)/sqrt(n-1) + + # lambda <- 1 + las <- glmnet(X,y,family="gaussian",alpha=1,standardize=F,intercept=intercept) + hbeta <- as.numeric(coef(las,x=X,y=y,s=lambda/n,exact=TRUE,intercept=intercept)) + + ### perform post selection inference + + sigma = estimateSigma(X,y)$sigmahat + + if (intercept) return(fixedLassoInf(X,y,hbeta,lambda,family="gaussian",type="full",intercept=intercept,sigma=sigma)) + else return(fixedLassoInf(X,y,hbeta[-1],lambda,family="gaussian",type="full",intercept=intercept,sigma=sigma)) +} + +## QQ plot of p-values for all null data now that bug fix is implemented +null.pop.pval.dist <- function(n,p,intercept=T,lambda=1) { + pvs <- c() + for(i in 1:10) { + a <- nullPopTest(n,p,intercept,lambda) + ps <- a$pv + pvs <- c(pvs,ps,recursive=T) + } + qqplot(x=runif(length(pvs)),y=pvs,xlab="Expected",ylab="Observed",main="Pop Coef. Null X") + abline(0,1) +} \ No newline at end of file From 344f4045a5a5b519ec035928280078ac619349c9 Mon Sep 17 00:00:00 2001 From: kevinbfry Date: Tue, 8 Aug 2017 13:47:25 -0700 Subject: [PATCH 170/493] now debias lasso only computes theta for the active set --- selectiveInference/R/funs.fixed.R | 20 +++++++++------- selectiveInference/R/linear.tests.R | 37 +---------------------------- 2 files changed, 13 insertions(+), 44 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 3258b80..ba959a7 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -148,12 +148,15 @@ sigma=NULL, alpha=0.1, hsigma <- 1/n*(t(Xordered)%*%Xordered) hsigmaS <- 1/n*(t(XS)%*%XS) # hsigma[S,S] hsigmaSinv <- solve(hsigmaS) # pinv(hsigmaS) - + # Approximate inverse covariance matrix for when (n < p) from lasso_Inference.R - htheta <- InverseLinfty(hsigma, n, verbose=FALSE) + htheta <- InverseLinfty(hsigma, n, length(S), verbose=FALSE) + # htheta <- InverseLinfty(hsigma, n, verbose=FALSE) FS = rbind(diag(length(S)),matrix(0,pp-length(S),length(S))) - ithetasigma = (diag(pp)-(htheta%*%hsigma)) + GS = cbind(diag(length(S)),matrix(0,length(S),pp-length(S))) + ithetasigma = (GS-(htheta%*%hsigma)) + # ithetasigma = (diag(pp) - (htheta%*%hsigma)) M <- (((htheta%*%t(Xordered))+ithetasigma%*%FS%*%hsigmaSinv%*%t(XS))/n) # vector which is offset for testing debiased beta's @@ -254,20 +257,21 @@ fixedLasso.poly= ############################## -### Functions borrowed from lasso_inference.R +### Functions borrowed and slightly modified from lasso_inference.R ## Approximates inverse covariance matrix theta -InverseLinfty <- function(sigma, n, resol=1.5, mu=NULL, maxiter=50, threshold=1e-2, verbose = TRUE) { - isgiven <- 1; +InverseLinfty <- function(sigma, n, e, resol=1.5, mu=NULL, maxiter=50, threshold=1e-2, verbose = TRUE) { + # InverseLinfty <- function(sigma, n, resol=1.5, mu=NULL, maxiter=50, threshold=1e-2, verbose = TRUE) { + isgiven <- 1; if (is.null(mu)){ isgiven <- 0; } p <- nrow(sigma); - M <- matrix(0, p, p); + M <- matrix(0, e, p); xperc = 0; xp = round(p/10); - for (i in 1:p) { + for (i in 1:e) { if ((i %% xp)==0){ xperc = xperc+10; if (verbose) { diff --git a/selectiveInference/R/linear.tests.R b/selectiveInference/R/linear.tests.R index a37f76f..bd65bad 100644 --- a/selectiveInference/R/linear.tests.R +++ b/selectiveInference/R/linear.tests.R @@ -15,7 +15,7 @@ robs.test <- function() { hbeta <- as.numeric(coef(las,x=X,y=y,s=lambda/n,exact=TRUE,intercept=T)) - return(fixedLassoInf(X,y,hbeta[-1],lambda,family="gaussian",type="partial",intercept=T,sigma=sigma)$pv) + return(fixedLassoInf(X,y,hbeta[-1],lambda,family="gaussian",type="partial",intercept=T,sigma=sigma)) } @@ -134,39 +134,4 @@ power.partial.pval.dist <- function(n,p,intercept=T,lambda=1) { } qqplot(x=runif(length(pvs)),y=pvs,xlab="Expected",ylab="Observed",main="Partial Coef. 10 Corr. X") abline(0,1) -} - - - - -## Tests pop inf for X and y randomly generated -nullPopTest <- function(n,p,intercept=T,lambda=1) { - y <- matrix(rnorm(n),ncol=1) # rand N(0,1) response - X <- matrix(rnorm(p*n),ncol = p) # p rand N(0,1) predictors - - # lambda <- 1 - X=scale(X,T,T)/sqrt(n-1) - - # lambda <- 1 - las <- glmnet(X,y,family="gaussian",alpha=1,standardize=F,intercept=intercept) - hbeta <- as.numeric(coef(las,x=X,y=y,s=lambda/n,exact=TRUE,intercept=intercept)) - - ### perform post selection inference - - sigma = estimateSigma(X,y)$sigmahat - - if (intercept) return(fixedLassoInf(X,y,hbeta,lambda,family="gaussian",type="full",intercept=intercept,sigma=sigma)) - else return(fixedLassoInf(X,y,hbeta[-1],lambda,family="gaussian",type="full",intercept=intercept,sigma=sigma)) -} - -## QQ plot of p-values for all null data now that bug fix is implemented -null.pop.pval.dist <- function(n,p,intercept=T,lambda=1) { - pvs <- c() - for(i in 1:10) { - a <- nullPopTest(n,p,intercept,lambda) - ps <- a$pv - pvs <- c(pvs,ps,recursive=T) - } - qqplot(x=runif(length(pvs)),y=pvs,xlab="Expected",ylab="Observed",main="Pop Coef. Null X") - abline(0,1) } \ No newline at end of file From 2e592f077fb84f64cbea218064ac0a672b16bab1 Mon Sep 17 00:00:00 2001 From: kevinbfry Date: Tue, 8 Aug 2017 14:37:51 -0700 Subject: [PATCH 171/493] added optional 'add.targets' parameter to fixedLassoInference to allow user to add variables as targets for inference, even if they are not selected by the lasso --- selectiveInference/R/funs.fixed.R | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index ba959a7..0c728c7 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -2,7 +2,7 @@ # for the solution of # min 1/2 || y - \beta_0 - X \beta ||_2^2 + \lambda || \beta ||_1 -fixedLassoInf <- function(x, y, beta, lambda, family=c("gaussian","binomial","cox"),intercept=TRUE, status=NULL, +fixedLassoInf <- function(x, y, beta, lambda, family=c("gaussian","binomial","cox"),intercept=TRUE, add.targets=NULL, status=NULL, sigma=NULL, alpha=0.1, type=c("partial","full"), tol.beta=1e-5, tol.kkt=0.1, gridrange=c(-100,100), bits=NULL, verbose=FALSE) { @@ -60,6 +60,12 @@ sigma=NULL, alpha=0.1, bits = NULL } + if (!is.null(add.targets) && (!is.vector(add.targets) + || !all(is.numeric(add.targets)) || !all(add.targets==floor(add.targets)) + || !all(add.targets >= 1 && add.targets <= p))) { + stop("'add.targets' must be a vector of integers between 1 and p") + } + # If glmnet was run with an intercept term, center x and y if (intercept==TRUE) { obj = standardize(x,y,TRUE,FALSE) @@ -117,12 +123,15 @@ sigma=NULL, alpha=0.1, } } + # add additional targets for inference if provided + if (!is.null(add.targets)) vars = sort(unique(c(vars,add.targets,recursive=T))) + k = length(vars) pv = vlo = vup = numeric(k) vmat = matrix(0,k,n) ci = tailarea = matrix(0,k,2) sign = numeric(k) - + if (type=="full" & p > n) { if (intercept == T) { pp=p+1 From fcaf1d5b01f6a56bffe3456e7b74c505577adc60 Mon Sep 17 00:00:00 2001 From: kevinbfry Date: Tue, 8 Aug 2017 14:53:48 -0700 Subject: [PATCH 172/493] fixed small bug with last commit --- selectiveInference/R/funs.fixed.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 0c728c7..7073e2e 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -138,15 +138,15 @@ sigma=NULL, alpha=0.1, Xint <- cbind(rep(1,n),x) # indices of selected predictors S = c(1,vars + 1) - notS = which(abs(beta) <= tol.coef) + 1 } else { pp=p Xint <- x # indices of selected predictors S = vars - notS = which(abs(beta) <= tol.coef) + # notS = which(abs(beta) <= tol.coef) } + notS = setdiff(1:pp,S) XS = Xint[,S] hbetaS = hbeta[S] From 57daf4f311ac21fa4e3fc4c81a775f112d322795 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Tue, 8 Aug 2017 16:35:12 -0700 Subject: [PATCH 173/493] travis script --- .travis.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..71ff221 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,11 @@ +language: r +cache: packages +sudo: false +r: + - oldrel + - release + - devel +warnings_are_errors: true +before_install: + - tlmgr install index # for texlive and vignette? + - cd selectiveInference From 73f5829aba52405aac7d95b627d02eaa3de43eac Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Tue, 8 Aug 2017 16:42:16 -0700 Subject: [PATCH 174/493] missing mpfr library? --- .travis.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.travis.yml b/.travis.yml index 71ff221..aa61233 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,6 +5,9 @@ r: - oldrel - release - devel +addons: + apt: + packages: libmpfr-dev warnings_are_errors: true before_install: - tlmgr install index # for texlive and vignette? From 3289471fc016ba4128ebaa48dcd7f0b98885916a Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Tue, 8 Aug 2017 16:54:44 -0700 Subject: [PATCH 175/493] fixing Rd file --- selectiveInference/man/predict.groupfs.Rd | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/selectiveInference/man/predict.groupfs.Rd b/selectiveInference/man/predict.groupfs.Rd index 4b8394b..492b74f 100644 --- a/selectiveInference/man/predict.groupfs.Rd +++ b/selectiveInference/man/predict.groupfs.Rd @@ -2,8 +2,8 @@ % Please edit documentation in R/funs.groupfs.R \name{predict.groupfs} \alias{predict.groupfs} -\title{Prediction and coefficient functions for \code{\link{groupfs}}. - +\title{Prediction and coefficient functions for \code{\link{groupfs}}.} +\description{ Make predictions or extract coefficients from a groupfs forward stepwise object.} \usage{ \method{predict}{groupfs}(object, newx) From 7e161740c4bb49096724a0ce36d65252be0b4407 Mon Sep 17 00:00:00 2001 From: kevinbfry Date: Tue, 8 Aug 2017 20:33:04 -0700 Subject: [PATCH 176/493] added .travis.yml file --- .travis.yml | 27 +++++++++++++++++++++++++ selectiveInference/man/fixedLassoInf.Rd | 3 ++- 2 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..f4ebe35 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,27 @@ +language: r + +cache: packages + +sudo: false + +r: + + - oldrel + + - release + + - devel + +addons: + + apt: + + packages: libmpfr-dev + +warnings_are_errors: true + +before_install: + + - tlmgr install index # for texlive and vignette? + + - cd selectiveInference diff --git a/selectiveInference/man/fixedLassoInf.Rd b/selectiveInference/man/fixedLassoInf.Rd index c5a9912..d675c3f 100644 --- a/selectiveInference/man/fixedLassoInf.Rd +++ b/selectiveInference/man/fixedLassoInf.Rd @@ -10,7 +10,7 @@ fixed value of the tuning parameter lambda } \usage{ fixedLassoInf(x, y, beta, lambda, family = c("gaussian", "binomial", - "cox"),intercept=TRUE, status=NULL, sigma=NULL, alpha=0.1, + "cox"),intercept=TRUE, add.targets=NULL, status=NULL, sigma=NULL, alpha=0.1, type=c("partial","full"), tol.beta=1e-5, tol.kkt=0.1, gridrange=c(-100,100), bits=NULL, verbose=FALSE) } @@ -56,6 +56,7 @@ Significance level for confidence intervals (target is miscoverage alpha/2 in ea Was the lasso problem solved (e.g., by glmnet) with an intercept in the model? Default is TRUE. Must be TRUE for "binomial" family. Not used for 'cox" family, where no intercept is assumed. } +\item{add.targets}{Optional vector of predictors to be included as targets of inference, regardless of whether or not they are selected by the lasso. Default is NULL.} \item{status}{Censoring status for Cox model; 1=failurem 0=censored} \item{type}{Contrast type for p-values and confidence intervals: default is "partial"---meaning that the contrasts tested are the partial population From 1535c7c1a3518ec7df2a6c51df65dd43f3e134b7 Mon Sep 17 00:00:00 2001 From: kevinbfry Date: Tue, 8 Aug 2017 20:54:56 -0700 Subject: [PATCH 177/493] testing travisci --- selectiveInference/R/linear.tests.R | 274 ++++++++++++++-------------- 1 file changed, 137 insertions(+), 137 deletions(-) diff --git a/selectiveInference/R/linear.tests.R b/selectiveInference/R/linear.tests.R index bd65bad..e113d0a 100644 --- a/selectiveInference/R/linear.tests.R +++ b/selectiveInference/R/linear.tests.R @@ -1,137 +1,137 @@ -robs.test <- function() { - n <- 100 - p <- 200 - - set.seed(11332) - - y <- matrix(rnorm(n),ncol=1) # rand N(0,1) response - X <- matrix(rnorm(p*n),ncol = p) # p rand N(0,1) predictors - - X=scale(X,T,T)/sqrt(n-1) - lambda=1 - sigma = estimateSigma(X,y)$sigmahat - - las <- glmnet(X,y,family="gaussian",alpha=1,standardize=F,intercept=T) - hbeta <- as.numeric(coef(las,x=X,y=y,s=lambda/n,exact=TRUE,intercept=T)) - - - return(fixedLassoInf(X,y,hbeta[-1],lambda,family="gaussian",type="partial",intercept=T,sigma=sigma)) -} - - -## Tests partial inf for X and y randomly generated from N(0,1) -nullTest <- function(X,y,lambda,intercept,type=c("full","partial")) { - n=nrow(X) - X=scale(X,T,T)/sqrt(n-1) - - sigma = estimateSigma(X,y)$sigmahat - - las <- glmnet(X,y,family="gaussian",alpha=1,standardize=F,intercept=intercept) - hbeta <- as.numeric(coef(las,x=X,y=y,s=lambda/n,exact=TRUE,intercept=intercept)) - - if (type=="partial" || intercept==F) hbeta = hbeta[-1] - - return(fixedLassoInf(X,y,hbeta,lambda,family="gaussian",type=type,intercept=intercept,sigma=sigma)) -} - -## Test partial inf for X and y where 10 variables are y with random additive N(0,0.5) noise -corrTest <- function(X,y,lambda,intercept,type=c("full","partial")) { - n=nrow(X) - corr.X = rep(y,10) + matrix(rnorm(n*10,0,0.5),ncol = 10) - X = cbind(corr.X,X) - X=scale(X,T,T)/sqrt(n-1) - - las <- glmnet(X,y,family="gaussian",alpha=1,standardize=F,intercept=intercept) - hbeta <- as.numeric(coef(las,x=X,y=y,s=lambda/n,exact=TRUE,intercept=intercept)) - - sigma = estimateSigma(X,y)$sigmahat - - if (type=="partial" || intercept==F) hbeta = hbeta[-1] - - return(fixedLassoInf(X,y,hbeta,lambda,family="gaussian",type=type,intercept=intercept,sigma=sigma)) -} - -## QQ plot of p-values for all null data now that bug fix is implemented -partial.qq.test <- function() { - n <- 100 - p <- 200 - - lambda=1 - - null.int.pvs <- c() - corr.int.pvs <- c() - null.pvs <- c() - corr.pvs <- c() - for(i in 1:25) { - y <- matrix(rnorm(n),ncol=1) # rand N(0,1) response - X <- matrix(rnorm(p*n),ncol=p) # p rand N(0,1) predictors - - null <- nullTest(X,y,lambda,F,type="partial") - corr <- corrTest(X,y,lambda,F,type="partial") - null.pvs <- c(null.pvs,null$pv,recursive=T) - corr.pvs <- c(corr.pvs,corr$pv,recursive=T) - null.int <- nullTest(X,y,lambda,T,type="partial") - corr.int <- corrTest(X,y,lambda,T,type="partial") - null.int.pvs <- c(null.int.pvs,null.int$pv,recursive=T) - corr.int.pvs <- c(corr.int.pvs,corr.int$pv,recursive=T) - } - - qqplot(x=runif(length(null.pvs)),y=null.pvs,xlab="Expected",ylab="Observed",main="Partial Coef. Null X w/o Intercept") - abline(0,1) - qqplot(x=runif(length(corr.pvs)),y=corr.pvs,xlab="Expected",ylab="Observed",main="Partial Coef. 10 Corr. X w/o Intercept") - abline(0,1) - qqplot(x=runif(length(null.int.pvs)),y=null.int.pvs,xlab="Expected",ylab="Observed",main="Partial Coef. Null X w/ Intercept") - abline(0,1) - qqplot(x=runif(length(corr.int.pvs)),y=corr.int.pvs,xlab="Expected",ylab="Observed",main="Partial Coef. 10 Corr. X w/ Intercept") - abline(0,1) -} - -## QQ plot of p-values for all null data now that bug fix is implemented -pop.qq.test <- function() { - n <- 100 - p <- 200 - - lambda=1 - - null.int.pvs <- c() - corr.int.pvs <- c() - null.pvs <- c() - corr.pvs <- c() - for(i in 1:25) { - y <- matrix(rnorm(n),ncol=1) # rand N(0,1) response - X <- matrix(rnorm(p*n),ncol=p) # p rand N(0,1) predictors - - null <- nullTest(X,y,lambda,F,type="full") - corr <- corrTest(X,y,lambda,F,type="full") - null.pvs <- c(null.pvs,null$pv,recursive=T) - corr.pvs <- c(corr.pvs,corr$pv,recursive=T) - null.int <- nullTest(X,y,lambda,T,type="full") - corr.int <- corrTest(X,y,lambda,T,type="full") - null.int.pvs <- c(null.int.pvs,null.int$pv,recursive=T) - corr.int.pvs <- c(corr.int.pvs,corr.int$pv,recursive=T) - } - - qqplot(x=runif(length(null.pvs)),y=null.pvs,xlab="Expected",ylab="Observed",main="Pop Coef. Null X w/o Intercept") - abline(0,1) - qqplot(x=runif(length(corr.pvs)),y=corr.pvs,xlab="Expected",ylab="Observed",main="Pop Coef. 10 Corr. X w/o Intercept") - abline(0,1) - qqplot(x=runif(length(null.int.pvs)),y=null.int.pvs,xlab="Expected",ylab="Observed",main="Pop Coef. Null X w/ Intercept") - abline(0,1) - qqplot(x=runif(length(corr.int.pvs)),y=corr.int.pvs,xlab="Expected",ylab="Observed",main="Pop Coef. 10 Corr. X w/ Intercept") - abline(0,1) -} - - - - -## QQ plot of p-values for data with correlated x now that bug fix implemented -power.partial.pval.dist <- function(n,p,intercept=T,lambda=1) { - pvs <- c() - for(i in 1:10) { - a <- powerPartialTest(n,p,intercept,lambda) - ps <- a$pv - pvs <- c(pvs,ps,recursive=T) - } - qqplot(x=runif(length(pvs)),y=pvs,xlab="Expected",ylab="Observed",main="Partial Coef. 10 Corr. X") - abline(0,1) -} \ No newline at end of file +# robs.test <- function() { +# n <- 100 +# p <- 200 +# +# set.seed(11332) +# +# y <- matrix(rnorm(n),ncol=1) # rand N(0,1) response +# X <- matrix(rnorm(p*n),ncol = p) # p rand N(0,1) predictors +# +# X=scale(X,T,T)/sqrt(n-1) +# lambda=1 +# sigma = estimateSigma(X,y)$sigmahat +# +# las <- glmnet(X,y,family="gaussian",alpha=1,standardize=F,intercept=T) +# hbeta <- as.numeric(coef(las,x=X,y=y,s=lambda/n,exact=TRUE,intercept=T)) +# +# +# return(fixedLassoInf(X,y,hbeta[-1],lambda,family="gaussian",type="partial",intercept=T,sigma=sigma)) +# } +# +# +# ## Tests partial inf for X and y randomly generated from N(0,1) +# nullTest <- function(X,y,lambda,intercept,type=c("full","partial")) { +# n=nrow(X) +# X=scale(X,T,T)/sqrt(n-1) +# +# sigma = estimateSigma(X,y)$sigmahat +# +# las <- glmnet(X,y,family="gaussian",alpha=1,standardize=F,intercept=intercept) +# hbeta <- as.numeric(coef(las,x=X,y=y,s=lambda/n,exact=TRUE,intercept=intercept)) +# +# if (type=="partial" || intercept==F) hbeta = hbeta[-1] +# +# return(fixedLassoInf(X,y,hbeta,lambda,family="gaussian",type=type,intercept=intercept,sigma=sigma)) +# } +# +# ## Test partial inf for X and y where 10 variables are y with random additive N(0,0.5) noise +# corrTest <- function(X,y,lambda,intercept,type=c("full","partial")) { +# n=nrow(X) +# corr.X = rep(y,10) + matrix(rnorm(n*10,0,0.5),ncol = 10) +# X = cbind(corr.X,X) +# X=scale(X,T,T)/sqrt(n-1) +# +# las <- glmnet(X,y,family="gaussian",alpha=1,standardize=F,intercept=intercept) +# hbeta <- as.numeric(coef(las,x=X,y=y,s=lambda/n,exact=TRUE,intercept=intercept)) +# +# sigma = estimateSigma(X,y)$sigmahat +# +# if (type=="partial" || intercept==F) hbeta = hbeta[-1] +# +# return(fixedLassoInf(X,y,hbeta,lambda,family="gaussian",type=type,intercept=intercept,sigma=sigma)) +# } +# +# ## QQ plot of p-values for all null data now that bug fix is implemented +# partial.qq.test <- function() { +# n <- 100 +# p <- 200 +# +# lambda=1 +# +# null.int.pvs <- c() +# corr.int.pvs <- c() +# null.pvs <- c() +# corr.pvs <- c() +# for(i in 1:25) { +# y <- matrix(rnorm(n),ncol=1) # rand N(0,1) response +# X <- matrix(rnorm(p*n),ncol=p) # p rand N(0,1) predictors +# +# null <- nullTest(X,y,lambda,F,type="partial") +# corr <- corrTest(X,y,lambda,F,type="partial") +# null.pvs <- c(null.pvs,null$pv,recursive=T) +# corr.pvs <- c(corr.pvs,corr$pv,recursive=T) +# null.int <- nullTest(X,y,lambda,T,type="partial") +# corr.int <- corrTest(X,y,lambda,T,type="partial") +# null.int.pvs <- c(null.int.pvs,null.int$pv,recursive=T) +# corr.int.pvs <- c(corr.int.pvs,corr.int$pv,recursive=T) +# } +# +# qqplot(x=runif(length(null.pvs)),y=null.pvs,xlab="Expected",ylab="Observed",main="Partial Coef. Null X w/o Intercept") +# abline(0,1) +# qqplot(x=runif(length(corr.pvs)),y=corr.pvs,xlab="Expected",ylab="Observed",main="Partial Coef. 10 Corr. X w/o Intercept") +# abline(0,1) +# qqplot(x=runif(length(null.int.pvs)),y=null.int.pvs,xlab="Expected",ylab="Observed",main="Partial Coef. Null X w/ Intercept") +# abline(0,1) +# qqplot(x=runif(length(corr.int.pvs)),y=corr.int.pvs,xlab="Expected",ylab="Observed",main="Partial Coef. 10 Corr. X w/ Intercept") +# abline(0,1) +# } +# +# ## QQ plot of p-values for all null data now that bug fix is implemented +# pop.qq.test <- function() { +# n <- 100 +# p <- 200 +# +# lambda=1 +# +# null.int.pvs <- c() +# corr.int.pvs <- c() +# null.pvs <- c() +# corr.pvs <- c() +# for(i in 1:25) { +# y <- matrix(rnorm(n),ncol=1) # rand N(0,1) response +# X <- matrix(rnorm(p*n),ncol=p) # p rand N(0,1) predictors +# +# null <- nullTest(X,y,lambda,F,type="full") +# corr <- corrTest(X,y,lambda,F,type="full") +# null.pvs <- c(null.pvs,null$pv,recursive=T) +# corr.pvs <- c(corr.pvs,corr$pv,recursive=T) +# null.int <- nullTest(X,y,lambda,T,type="full") +# corr.int <- corrTest(X,y,lambda,T,type="full") +# null.int.pvs <- c(null.int.pvs,null.int$pv,recursive=T) +# corr.int.pvs <- c(corr.int.pvs,corr.int$pv,recursive=T) +# } +# +# qqplot(x=runif(length(null.pvs)),y=null.pvs,xlab="Expected",ylab="Observed",main="Pop Coef. Null X w/o Intercept") +# abline(0,1) +# qqplot(x=runif(length(corr.pvs)),y=corr.pvs,xlab="Expected",ylab="Observed",main="Pop Coef. 10 Corr. X w/o Intercept") +# abline(0,1) +# qqplot(x=runif(length(null.int.pvs)),y=null.int.pvs,xlab="Expected",ylab="Observed",main="Pop Coef. Null X w/ Intercept") +# abline(0,1) +# qqplot(x=runif(length(corr.int.pvs)),y=corr.int.pvs,xlab="Expected",ylab="Observed",main="Pop Coef. 10 Corr. X w/ Intercept") +# abline(0,1) +# } +# +# +# +# +# ## QQ plot of p-values for data with correlated x now that bug fix implemented +# power.partial.pval.dist <- function(n,p,intercept=T,lambda=1) { +# pvs <- c() +# for(i in 1:10) { +# a <- powerPartialTest(n,p,intercept,lambda) +# ps <- a$pv +# pvs <- c(pvs,ps,recursive=T) +# } +# qqplot(x=runif(length(pvs)),y=pvs,xlab="Expected",ylab="Observed",main="Partial Coef. 10 Corr. X") +# abline(0,1) +# } \ No newline at end of file From 248ce54c01282d428a9c31b862280166e52c6eb9 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Tue, 15 Aug 2017 21:24:12 -0700 Subject: [PATCH 178/493] C code for one row of M --- selectiveInference/R/funs.fixed.R | 19 +++ selectiveInference/src/debiasing_matrix.c | 151 ++++++++++++++++++++++ 2 files changed, 170 insertions(+) create mode 100644 selectiveInference/src/debiasing_matrix.c diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 7073e2e..da701e5 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -334,6 +334,25 @@ InverseLinfty <- function(sigma, n, e, resol=1.5, mu=NULL, maxiter=50, threshold return(M) } +InverseLinftyOneRowC <- function ( sigma, i, mu, maxiter=50, threshold=1e-2 ) { + + p = nrow(sigma) + theta = rep(0, p) + + val = .C("find_one_row", + Sigma=as.double(sigma), + nrow=as.integer(p), + bound=as.double(mu), + theta=as.double(theta), + maxiter=as.integer(maxiter), + row=as.integer(i-1), + coord=as.integer(i-1), + dup=FALSE, + package="selectiveInference") + + return(val$theta) +} + InverseLinftyOneRow <- function ( sigma, i, mu, maxiter=50, threshold=1e-2 ) { p <- nrow(sigma); rho <- max(abs(sigma[i,-i])) / sigma[i,i]; diff --git a/selectiveInference/src/debiasing_matrix.c b/selectiveInference/src/debiasing_matrix.c new file mode 100644 index 0000000..0a626ea --- /dev/null +++ b/selectiveInference/src/debiasing_matrix.c @@ -0,0 +1,151 @@ +#include +#include // for fabs + +// Find an approximate row of \hat{Sigma}^{-1} + +// Problem (4) of ???? + +// Update one coordinate + +double update_one_coord(double *Sigma, /* A covariance matrix: X^TX/n */ + int nrow, /* How many rows in Sigma */ + double bound, /* feasibility parameter */ + double *theta, /* current value */ + int row, /* which row: 0-based */ + int coord) /* which coordinate to update: 0-based */ +{ + + double linear_term = 0; + double quadratic_term = 0; + double value = 0; + double *Sigma_ptr; + double *theta_ptr = theta; + int icol = 0; + + Sigma_ptr = ((double *) Sigma + nrow * coord); + + for (icol=0; icol < nrow; icol++) { + if (icol != coord) { + linear_term += (*Sigma_ptr) * (*theta_ptr); + } + else { + quadratic_term = (*Sigma_ptr); + } + Sigma_ptr += 1; + theta_ptr += 1; + } + + if (row == coord) { + linear_term += 1; + } + + // Now soft-threshold the coord entry of theta + + // Objective is t \mapsto q/2 * t^2 + l * t + bound |t| + // with q=quadratic_term and l=linear_term + + if (linear_term < -bound) { + value = - (-linear_term - bound) / quadratic_term; + } + else if (linear_term > bound) { + value = (linear_term - bound) / quadratic_term; + } + + theta_ptr = ((double *) theta + coord); + *theta_ptr = value; + return(value); + +} + +double objective(double *Sigma, /* A covariance matrix: X^TX/n */ + int nrow, /* how many rows in Sigma */ + int row, /* which row: 0-based */ + double bound, /* Lagrange multipler for \ell_1 */ + double *theta) /* current value */ +{ + int irow, icol; + double value = 0; + double *Sigma_ptr = Sigma; + double *theta_row_ptr, *theta_col_ptr; + + theta_row_ptr = theta; + theta_col_ptr = theta; + + for (irow=0; irow 3)) { + break; + } + old_value = new_value; + } + + *nrow_ptr = iter-1; +} + From 4d6719990d1f49059e8fd672f27f784e4e3f2fbe Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Tue, 15 Aug 2017 21:51:39 -0700 Subject: [PATCH 179/493] added a warning about feasibility -- but it didn't print in gist? --- selectiveInference/R/funs.fixed.R | 15 ++++++++++++--- selectiveInference/src/debiasing_matrix.c | 15 +++++++++++---- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index da701e5..1bf216e 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -334,13 +334,15 @@ InverseLinfty <- function(sigma, n, e, resol=1.5, mu=NULL, maxiter=50, threshold return(M) } -InverseLinftyOneRowC <- function ( sigma, i, mu, maxiter=50, threshold=1e-2 ) { +InverseLinftyOneRowC <- function (Sigma, i, mu, maxiter=50, threshold=1e-2 ) { - p = nrow(sigma) + p = nrow(Sigma) + basis_vector = rep(0, p) + basis_vector[i] = 1. theta = rep(0, p) val = .C("find_one_row", - Sigma=as.double(sigma), + Sigma=as.double(Sigma), nrow=as.integer(p), bound=as.double(mu), theta=as.double(theta), @@ -350,6 +352,13 @@ InverseLinftyOneRowC <- function ( sigma, i, mu, maxiter=50, threshold=1e-2 ) { dup=FALSE, package="selectiveInference") + # Check feasibility + + if (max(abs(Sigma %*% val$theta - basis_vector)) > 1.01 * mu) { + print("Solution for row of M does not seem to be feasible") + warning("Solution for row of M does not seem to be feasible") + } + return(val$theta) } diff --git a/selectiveInference/src/debiasing_matrix.c b/selectiveInference/src/debiasing_matrix.c index 0a626ea..6309df3 100644 --- a/selectiveInference/src/debiasing_matrix.c +++ b/selectiveInference/src/debiasing_matrix.c @@ -3,8 +3,12 @@ // Find an approximate row of \hat{Sigma}^{-1} -// Problem (4) of ???? +// Solves a dual version of problem (4) of https://arxiv.org/pdf/1306.3171.pdf +// Dual problem: \text{min}_{\theta} 1/2 \theta^T \Sigma \theta - e_i^T\theta + \mu \|\theta\|_1 + +// This is the "negative" of the problem as in https://gist.github.com/jonathan-taylor/07774d209173f8bc4e42aa37712339bf +// Therefore we don't have to negate the answer to get theta. // Update one coordinate double update_one_coord(double *Sigma, /* A covariance matrix: X^TX/n */ @@ -36,7 +40,7 @@ double update_one_coord(double *Sigma, /* A covariance matrix: X^TX/n */ } if (row == coord) { - linear_term += 1; + linear_term -= 1; } // Now soft-threshold the coord entry of theta @@ -44,11 +48,14 @@ double update_one_coord(double *Sigma, /* A covariance matrix: X^TX/n */ // Objective is t \mapsto q/2 * t^2 + l * t + bound |t| // with q=quadratic_term and l=linear_term + // With a negative linear term, solution should be + // positive + if (linear_term < -bound) { - value = - (-linear_term - bound) / quadratic_term; + value = (-linear_term - bound) / quadratic_term; } else if (linear_term > bound) { - value = (linear_term - bound) / quadratic_term; + value = -(linear_term - bound) / quadratic_term; } theta_ptr = ((double *) theta + coord); From e87d12dbcddd960e8d5856915818a251969deb49 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Tue, 15 Aug 2017 21:54:45 -0700 Subject: [PATCH 180/493] removed print statement --- selectiveInference/R/funs.fixed.R | 1 - 1 file changed, 1 deletion(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 1bf216e..53dc61f 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -355,7 +355,6 @@ InverseLinftyOneRowC <- function (Sigma, i, mu, maxiter=50, threshold=1e-2 ) { # Check feasibility if (max(abs(Sigma %*% val$theta - basis_vector)) > 1.01 * mu) { - print("Solution for row of M does not seem to be feasible") warning("Solution for row of M does not seem to be feasible") } From 210d0feff9932686e8210454138e577342520e21 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Tue, 15 Aug 2017 22:00:19 -0700 Subject: [PATCH 181/493] using C for each row --- selectiveInference/R/funs.fixed.R | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 53dc61f..b69dabb 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -159,7 +159,8 @@ sigma=NULL, alpha=0.1, hsigmaSinv <- solve(hsigmaS) # pinv(hsigmaS) # Approximate inverse covariance matrix for when (n < p) from lasso_Inference.R - htheta <- InverseLinfty(hsigma, n, length(S), verbose=FALSE) + useC = TRUE + htheta <- InverseLinfty(hsigma, n, length(S), verbose=FALSE, useC=useC) # htheta <- InverseLinfty(hsigma, n, verbose=FALSE) FS = rbind(diag(length(S)),matrix(0,pp-length(S),length(S))) @@ -269,7 +270,7 @@ fixedLasso.poly= ### Functions borrowed and slightly modified from lasso_inference.R ## Approximates inverse covariance matrix theta -InverseLinfty <- function(sigma, n, e, resol=1.5, mu=NULL, maxiter=50, threshold=1e-2, verbose = TRUE) { +InverseLinfty <- function(sigma, n, e, resol=1.5, mu=NULL, maxiter=50, threshold=1e-2, verbose = TRUE, useC = FALSE) { # InverseLinfty <- function(sigma, n, resol=1.5, mu=NULL, maxiter=50, threshold=1e-2, verbose = TRUE) { isgiven <- 1; if (is.null(mu)){ @@ -294,7 +295,11 @@ InverseLinfty <- function(sigma, n, e, resol=1.5, mu=NULL, maxiter=50, threshold incr <- 0; while ((mu.stop != 1)&&(try.no<10)){ last.beta <- beta - output <- InverseLinftyOneRow(sigma, i, mu, maxiter=maxiter, threshold=threshold) + if (useC == FALSE) { + output <- InverseLinftyOneRow(sigma, i, mu, maxiter=maxiter, threshold=threshold) + } else { + output <- InverseLinftyOneRowC(sigma, i, mu, maxiter=maxiter) + } beta <- output$optsol iter <- output$iter if (isgiven==1){ @@ -334,7 +339,7 @@ InverseLinfty <- function(sigma, n, e, resol=1.5, mu=NULL, maxiter=50, threshold return(M) } -InverseLinftyOneRowC <- function (Sigma, i, mu, maxiter=50, threshold=1e-2 ) { +InverseLinftyOneRowC <- function (Sigma, i, mu, maxiter=50) { p = nrow(Sigma) basis_vector = rep(0, p) From c7c41e417693578173e272e2653c46b3a3edaba1 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Wed, 16 Aug 2017 08:32:39 -0700 Subject: [PATCH 182/493] optimized the C code a bit -- still has debug statements --- selectiveInference/R/funs.fixed.R | 20 ++- selectiveInference/src/debiasing_matrix.c | 154 +++++++++++++++------- 2 files changed, 119 insertions(+), 55 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index b69dabb..584018f 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -348,10 +348,12 @@ InverseLinftyOneRowC <- function (Sigma, i, mu, maxiter=50) { val = .C("find_one_row", Sigma=as.double(Sigma), + Sigma_diag=as.double(diag(Sigma)), + Sigma_theta=as.double(rep(0, p)), nrow=as.integer(p), bound=as.double(mu), theta=as.double(theta), - maxiter=as.integer(maxiter), + maxiter=as.integer(50), row=as.integer(i-1), coord=as.integer(i-1), dup=FALSE, @@ -359,6 +361,12 @@ InverseLinftyOneRowC <- function (Sigma, i, mu, maxiter=50) { # Check feasibility + # DEBUG statements + #print(diag(Sigma)) + #print(0.5 * sum(val$theta * (Sigma %*% val$theta)) - val$theta[i] + mu * sum(abs(val$theta))) + #print(Sigma %*% val$theta - val$Sigma_theta) + #print(val$nrow) # number of iterations + if (max(abs(Sigma %*% val$theta - basis_vector)) > 1.01 * mu) { warning("Solution for row of M does not seem to be feasible") } @@ -372,11 +380,11 @@ InverseLinftyOneRow <- function ( sigma, i, mu, maxiter=50, threshold=1e-2 ) { mu0 <- rho/(1+rho); beta <- rep(0,p); - if (mu >= mu0){ - beta[i] <- (1-mu0)/sigma[i,i]; - returnlist <- list("optsol" = beta, "iter" = 0); - return(returnlist); - } + #if (mu >= mu0){ + # beta[i] <- (1-mu0)/sigma[i,i]; + # returnlist <- list("optsol" = beta, "iter" = 0); + # return(returnlist); + #} diff.norm2 <- 1; last.norm2 <- 1; diff --git a/selectiveInference/src/debiasing_matrix.c b/selectiveInference/src/debiasing_matrix.c index 6309df3..7dfeb1e 100644 --- a/selectiveInference/src/debiasing_matrix.c +++ b/selectiveInference/src/debiasing_matrix.c @@ -11,34 +11,72 @@ // Therefore we don't have to negate the answer to get theta. // Update one coordinate -double update_one_coord(double *Sigma, /* A covariance matrix: X^TX/n */ - int nrow, /* How many rows in Sigma */ - double bound, /* feasibility parameter */ - double *theta, /* current value */ - int row, /* which row: 0-based */ - int coord) /* which coordinate to update: 0-based */ +double objective(double *Sigma, /* A covariance matrix: X^TX/n */ + int nrow, /* how many rows in Sigma */ + int row, /* which row: 0-based */ + double bound, /* Lagrange multipler for \ell_1 */ + double *theta) /* current value */ { + int irow, icol; + double value = 0; + double *Sigma_ptr = Sigma; + double *theta_row_ptr, *theta_col_ptr; + theta_row_ptr = theta; + theta_col_ptr = theta; + + for (irow=0; irow 1.e-6 * (fabs(value) + fabs(old_value))) { // Update the linear term + + delta = value - old_value; + Sigma_ptr = ((double *) Sigma + coord * nrow); + Sigma_theta_ptr = ((double *) Sigma_theta); + + for (icol=0; icol before) { + fprintf(stderr, "not a descent step!!!!!!!!!!!!!!!!!!!!!\n"); + } - theta_row_ptr = theta; - theta_col_ptr = theta; - for (irow=0; irow 3)) { + if (((old_value - new_value) < tol * fabs(new_value)) && (iter > 5)) { break; } + + fprintf(stderr, "%f %f value\n", old_value, new_value); old_value = new_value; } From f6ae738bad048aca71a22c94ba4fe8cdb9b1f3d7 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Wed, 16 Aug 2017 08:50:20 -0700 Subject: [PATCH 183/493] removing debug statements, making objective computation faster --- selectiveInference/R/funs.fixed.R | 6 --- selectiveInference/src/debiasing_matrix.c | 46 +++++------------------ 2 files changed, 9 insertions(+), 43 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 584018f..aa8eac2 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -361,12 +361,6 @@ InverseLinftyOneRowC <- function (Sigma, i, mu, maxiter=50) { # Check feasibility - # DEBUG statements - #print(diag(Sigma)) - #print(0.5 * sum(val$theta * (Sigma %*% val$theta)) - val$theta[i] + mu * sum(abs(val$theta))) - #print(Sigma %*% val$theta - val$Sigma_theta) - #print(val$nrow) # number of iterations - if (max(abs(Sigma %*% val$theta - basis_vector)) > 1.01 * mu) { warning("Solution for row of M does not seem to be feasible") } diff --git a/selectiveInference/src/debiasing_matrix.c b/selectiveInference/src/debiasing_matrix.c index 7dfeb1e..0849f38 100644 --- a/selectiveInference/src/debiasing_matrix.c +++ b/selectiveInference/src/debiasing_matrix.c @@ -27,15 +27,16 @@ double objective(double *Sigma, /* A covariance matrix: X^TX/n */ for (irow=0; irow before) { - fprintf(stderr, "not a descent step!!!!!!!!!!!!!!!!!!!!!\n"); - } - + theta_ptr = ((double *) theta + coord); + *theta_ptr = value; } - Sigma_ptr = ((double *) Sigma + coord * nrow); - Sigma_theta_ptr = ((double *) Sigma_theta); - for (icol=0; icol 5)) { + if (((old_value - new_value) < tol * fabs(new_value)) && (iter > 0)) { break; } - fprintf(stderr, "%f %f value\n", old_value, new_value); old_value = new_value; } From 1a8e2ad351c08f7eab632d6f7184651d1640e89e Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Wed, 16 Aug 2017 09:23:01 -0700 Subject: [PATCH 184/493] slightly lower tolerance --- selectiveInference/src/debiasing_matrix.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selectiveInference/src/debiasing_matrix.c b/selectiveInference/src/debiasing_matrix.c index 0849f38..420ecb9 100644 --- a/selectiveInference/src/debiasing_matrix.c +++ b/selectiveInference/src/debiasing_matrix.c @@ -141,7 +141,7 @@ void find_one_row(double *Sigma, /* A covariance matrix: X^TX/n */ bound, theta); double new_value; - double tol=1.e-10; + double tol=1.e-6; for (iter=0; iter Date: Wed, 16 Aug 2017 10:16:24 -0700 Subject: [PATCH 185/493] using active sets --- selectiveInference/R/funs.fixed.R | 2 + selectiveInference/src/debiasing_matrix.c | 144 ++++++++++++++++++++-- 2 files changed, 133 insertions(+), 13 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index aa8eac2..a30fc0b 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -350,6 +350,8 @@ InverseLinftyOneRowC <- function (Sigma, i, mu, maxiter=50) { Sigma=as.double(Sigma), Sigma_diag=as.double(diag(Sigma)), Sigma_theta=as.double(rep(0, p)), + ever_active=as.integer(i), + nactive_ptr=as.integer(1), nrow=as.integer(p), bound=as.double(mu), theta=as.double(theta), diff --git a/selectiveInference/src/debiasing_matrix.c b/selectiveInference/src/debiasing_matrix.c index 420ecb9..e3ef415 100644 --- a/selectiveInference/src/debiasing_matrix.c +++ b/selectiveInference/src/debiasing_matrix.c @@ -12,6 +12,8 @@ // Update one coordinate double objective(double *Sigma, /* A covariance matrix: X^TX/n */ + int *ever_active, /* Ever active set */ + int *nactive_ptr, /* Size of ever active set */ int nrow, /* how many rows in Sigma */ int row, /* which row: 0-based */ double bound, /* Lagrange multipler for \ell_1 */ @@ -21,33 +23,106 @@ double objective(double *Sigma, /* A covariance matrix: X^TX/n */ double value = 0; double *Sigma_ptr = Sigma; double *theta_row_ptr, *theta_col_ptr; + int *active_row_ptr, *active_col_ptr; + int active_row, active_col; + int nactive = *nactive_ptr; theta_row_ptr = theta; theta_col_ptr = theta; + for (irow=0; irow 0) && (fabs(gradient + bound) > (1. + tol) * bound)) { + fail += 1; + } + else if ((*theta_ptr < 0) && (fabs(gradient - bound) > (1. + tol) * bound)) { + fail += 1; } } - if (irow == row) { - value -= (*theta_row_ptr); // the elementary basis vector term + else { + if (fabs(gradient) > (1. + tol) * bound) { + fail += 1; + } } - value = value + bound * fabs((*theta_row_ptr)); // the \ell_1 term - theta_row_ptr++; } - return(value); + return(fail == 0); } double update_one_coord(double *Sigma, /* A covariance matrix: X^TX/n */ double *Sigma_diag, /* Diagonal entries of Sigma */ double *Sigma_theta, /* Sigma times theta */ + int *ever_active, /* Ever active set */ + int *nactive_ptr, /* Size of ever active set */ int nrow, /* How many rows in Sigma */ double bound, /* feasibility parameter */ double *theta, /* current value */ @@ -67,6 +142,8 @@ double update_one_coord(double *Sigma, /* A covariance matrix: X^TX/n double *quadratic_ptr = ((double *) Sigma_diag + coord); double quadratic_term = *quadratic_ptr; + int *ever_active_ptr; + Sigma_theta_ptr = ((double *) Sigma_theta + coord); linear_term = *Sigma_theta_ptr; @@ -97,7 +174,17 @@ double update_one_coord(double *Sigma, /* A covariance matrix: X^TX/n value = -(linear_term - bound) / quadratic_term; } - if (fabs(old_value - value) > 1.e-6 * (fabs(value) + fabs(old_value))) { // Update the linear term + // Add to active set if necessary + + if ((value != 0) && (is_active(coord, ever_active, nactive_ptr) == 0)) { + ever_active_ptr = ((int *) ever_active + *nactive_ptr); + *ever_active_ptr = coord; + *nactive_ptr += 1; + } + + // Update the linear term + + if (fabs(old_value - value) > 1.e-6 * (fabs(value) + fabs(old_value))) { delta = value - old_value; Sigma_ptr = ((double *) Sigma + coord * nrow); @@ -121,6 +208,8 @@ double update_one_coord(double *Sigma, /* A covariance matrix: X^TX/n void find_one_row(double *Sigma, /* A covariance matrix: X^TX/n */ double *Sigma_diag, /* Diagonal entry of covariance matrix */ double *Sigma_theta, /* Sigma times theta */ + int *ever_active, /* Ever active set */ + int *nactive_ptr, /* Size of ever active set */ int *nrow_ptr, /* How many rows in Sigma */ double *bound_ptr, /* feasibility parameter */ double *theta, /* current value */ @@ -135,13 +224,17 @@ void find_one_row(double *Sigma, /* A covariance matrix: X^TX/n */ double bound = *bound_ptr; int nrow = *nrow_ptr; + fprintf(stderr, "starting now\n"); + double old_value = objective(Sigma, + ever_active, + nactive_ptr, nrow, row, bound, theta); double new_value; - double tol=1.e-6; + double tol=1.e-5; for (iter=0; iter 0)) { + fprintf(stderr, "ending in objective value check\n"); break; } From 096b0b8f9f92bb360f8d4f59bc9cbd6f5e4437c1 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Wed, 16 Aug 2017 17:02:26 -0700 Subject: [PATCH 186/493] begun the Rcpp extension --- selectiveInference/src/Makevars | 14 ++++++ selectiveInference/src/Rcpp-debias.cpp | 45 +++++++++++++++++++ .../src/{debiasing_matrix.c => debias.c} | 6 +-- selectiveInference/src/debias.h | 10 +++++ 4 files changed, 72 insertions(+), 3 deletions(-) create mode 100644 selectiveInference/src/Makevars create mode 100644 selectiveInference/src/Rcpp-debias.cpp rename selectiveInference/src/{debiasing_matrix.c => debias.c} (97%) create mode 100644 selectiveInference/src/debias.h diff --git a/selectiveInference/src/Makevars b/selectiveInference/src/Makevars new file mode 100644 index 0000000..191c774 --- /dev/null +++ b/selectiveInference/src/Makevars @@ -0,0 +1,14 @@ +PKG_CFLAGS=-DR_PACKAGE=1 -I. +PKG_CPPFLAGS=-DR_PACKAGE=1 -I. +PKG_LIBS=-L. -ldebias + +$(SHLIB): Rcpp-debias.o RcppExports.o + +Rcpp-debias.o: debias.ts +RcppExports.o: debias.ts + +debias.ts: + gcc -shared -fPIC selectiveInference/src/debiasing_matrix.c -o debias.so + +clean: + rm -f debias.so diff --git a/selectiveInference/src/Rcpp-debias.cpp b/selectiveInference/src/Rcpp-debias.cpp new file mode 100644 index 0000000..b154dcd --- /dev/null +++ b/selectiveInference/src/Rcpp-debias.cpp @@ -0,0 +1,45 @@ +#include // need to include the main Rcpp header file +#include // where find_one_row is defined + +// [[Rcpp::export]] +Rcpp::NumericVector find_one_row(Rcpp::NumericMatrix Sigma, + int row, // 0-based + double bound, + int maxiter) { + + int nrow = Sigma.nrow(); // number of features + int nactive = 1; + Rcpp::IntegerVector ever_active(1); + Rcpp::NumericVector Sigma_diag(nrow); + Rcpp::NumericVector Sigma_theta(nrow); + +} + Rcpp::NumericVector xUL, + int maxEval, double absErr, double tol, int vectorInterface, unsigned norm) { + + count = 0; /* Zero count */ + fun = f; + + Rcpp::NumericVector integral(fDim); + Rcpp::NumericVector errVals(fDim); + int retCode; + + // Rcpp::Rcout<<"Call Integrator" < Date: Wed, 16 Aug 2017 17:03:47 -0700 Subject: [PATCH 187/493] trying to save some copy time -- R doesn't seem to care about extra arguments to .C --- selectiveInference/R/funs.fixed.R | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index a30fc0b..73a0535 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -346,19 +346,22 @@ InverseLinftyOneRowC <- function (Sigma, i, mu, maxiter=50) { basis_vector[i] = 1. theta = rep(0, p) + Sigma_ = as.double(Sigma) + Sigma_diag_ = as.double(diag(Sigma)) + Sigma_theta_ = as.double(rep(0, p)) val = .C("find_one_row", - Sigma=as.double(Sigma), - Sigma_diag=as.double(diag(Sigma)), - Sigma_theta=as.double(rep(0, p)), - ever_active=as.integer(i), + Sigma=Sigma_, + Sigma_diag=Sigma_diag_, + Sigma_theta=Sigma_theta_, + ever_active=as.integer(i-1), nactive_ptr=as.integer(1), nrow=as.integer(p), bound=as.double(mu), theta=as.double(theta), maxiter=as.integer(50), row=as.integer(i-1), - coord=as.integer(i-1), - dup=FALSE, + DUP=FALSE, + NAOK=TRUE, package="selectiveInference") # Check feasibility From 5bf80181a3a407747c7ff44fafbc54928b3f7ac7 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Wed, 16 Aug 2017 17:44:22 -0700 Subject: [PATCH 188/493] don't lose this --- selectiveInference/src/Rcpp-debias.cpp | 64 +++++++++++++------------- selectiveInference/src/debias.c | 20 ++++---- selectiveInference/src/debias.h | 28 +++++++---- 3 files changed, 61 insertions(+), 51 deletions(-) diff --git a/selectiveInference/src/Rcpp-debias.cpp b/selectiveInference/src/Rcpp-debias.cpp index b154dcd..384c105 100644 --- a/selectiveInference/src/Rcpp-debias.cpp +++ b/selectiveInference/src/Rcpp-debias.cpp @@ -1,5 +1,5 @@ #include // need to include the main Rcpp header file -#include // where find_one_row is defined +#include // where find_one_row_void is defined // [[Rcpp::export]] Rcpp::NumericVector find_one_row(Rcpp::NumericMatrix Sigma, @@ -8,38 +8,40 @@ Rcpp::NumericVector find_one_row(Rcpp::NumericMatrix Sigma, int maxiter) { int nrow = Sigma.nrow(); // number of features - int nactive = 1; + + // Active set + + int irow; + Rcpp::IntegerVector nactive(1); // An array so we can easily modify it Rcpp::IntegerVector ever_active(1); + int *ever_active_p = ever_active.begin(); + *ever_active_p = row; + + // Extract the diagonal Rcpp::NumericVector Sigma_diag(nrow); - Rcpp::NumericVector Sigma_theta(nrow); + double *sigma_p = Sigma_diag.begin(); -} - Rcpp::NumericVector xUL, - int maxEval, double absErr, double tol, int vectorInterface, unsigned norm) { - - count = 0; /* Zero count */ - fun = f; - - Rcpp::NumericVector integral(fDim); - Rcpp::NumericVector errVals(fDim); - int retCode; - - // Rcpp::Rcout<<"Call Integrator" < Date: Wed, 16 Aug 2017 17:52:02 -0700 Subject: [PATCH 189/493] segfaulting on the test_big.R :( --- selectiveInference/DESCRIPTION | 2 ++ selectiveInference/NAMESPACE | 2 +- selectiveInference/R/funs.fixed.R | 51 ++++++++++++++++--------------- selectiveInference/src/Makevars | 16 +++------- 4 files changed, 35 insertions(+), 36 deletions(-) diff --git a/selectiveInference/DESCRIPTION b/selectiveInference/DESCRIPTION index d0740ec..d902622 100644 --- a/selectiveInference/DESCRIPTION +++ b/selectiveInference/DESCRIPTION @@ -18,3 +18,5 @@ Description: New tools for post-selection inference, for use with forward models. License: GPL-2 RoxygenNote: 5.0.1 +LinkingTo: Rcpp +Imports: Rcpp diff --git a/selectiveInference/NAMESPACE b/selectiveInference/NAMESPACE index 099fdc5..ab2a111 100644 --- a/selectiveInference/NAMESPACE +++ b/selectiveInference/NAMESPACE @@ -44,5 +44,5 @@ importFrom("stats", dnorm, lsfit, pexp, pnorm, predict, qnorm, rnorm, sd, uniroot, dchisq, model.matrix, pchisq) importFrom("stats", "coef", "df", "lm", "pf") importFrom("stats", "glm", "residuals", "vcov") - +importFrom("Rcpp", "sourceCpp") diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index a30fc0b..f4b5a26 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -341,34 +341,37 @@ InverseLinfty <- function(sigma, n, e, resol=1.5, mu=NULL, maxiter=50, threshold InverseLinftyOneRowC <- function (Sigma, i, mu, maxiter=50) { - p = nrow(Sigma) - basis_vector = rep(0, p) - basis_vector[i] = 1. - theta = rep(0, p) + theta = find_one_row(Sigma, i, mu, maxiter) + return(theta) +} +# p = nrow(Sigma) +# basis_vector = rep(0, p) +# basis_vector[i] = 1. +# theta = rep(0, p) - val = .C("find_one_row", - Sigma=as.double(Sigma), - Sigma_diag=as.double(diag(Sigma)), - Sigma_theta=as.double(rep(0, p)), - ever_active=as.integer(i), - nactive_ptr=as.integer(1), - nrow=as.integer(p), - bound=as.double(mu), - theta=as.double(theta), - maxiter=as.integer(50), - row=as.integer(i-1), - coord=as.integer(i-1), - dup=FALSE, - package="selectiveInference") +# val = .C("find_one_row", +# Sigma=as.double(Sigma), +# Sigma_diag=as.double(diag(Sigma)), +# Sigma_theta=as.double(rep(0, p)), +# ever_active=as.integer(i), +# nactive_ptr=as.integer(1), +# nrow=as.integer(p), +# bound=as.double(mu), +# theta=as.double(theta), +# maxiter=as.integer(50), +# row=as.integer(i-1), +# coord=as.integer(i-1), +# dup=FALSE, +# package="selectiveInference") - # Check feasibility +# # Check feasibility - if (max(abs(Sigma %*% val$theta - basis_vector)) > 1.01 * mu) { - warning("Solution for row of M does not seem to be feasible") - } +# if (max(abs(Sigma %*% val$theta - basis_vector)) > 1.01 * mu) { +# warning("Solution for row of M does not seem to be feasible") +# } - return(val$theta) -} +# return(val$theta) +# } InverseLinftyOneRow <- function ( sigma, i, mu, maxiter=50, threshold=1e-2 ) { p <- nrow(sigma); diff --git a/selectiveInference/src/Makevars b/selectiveInference/src/Makevars index 191c774..c68d0bd 100644 --- a/selectiveInference/src/Makevars +++ b/selectiveInference/src/Makevars @@ -1,14 +1,8 @@ -PKG_CFLAGS=-DR_PACKAGE=1 -I. -PKG_CPPFLAGS=-DR_PACKAGE=1 -I. -PKG_LIBS=-L. -ldebias +PKG_CFLAGS= -I. +PKG_CPPFLAGS= -I. +PKG_LIBS=-L. -$(SHLIB): Rcpp-debias.o RcppExports.o - -Rcpp-debias.o: debias.ts -RcppExports.o: debias.ts - -debias.ts: - gcc -shared -fPIC selectiveInference/src/debiasing_matrix.c -o debias.so +$(SHLIB): Rcpp-debias.o RcppExports.o debias.o clean: - rm -f debias.so + rm -f *o From 4caf22548fb079f0c42c256fe1b68d78f401e3d8 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Wed, 16 Aug 2017 18:24:14 -0700 Subject: [PATCH 190/493] changes to funs.fixed.R that will be overwritten --- selectiveInference/R/funs.fixed.R | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index a30fc0b..0bbc119 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -346,9 +346,12 @@ InverseLinftyOneRowC <- function (Sigma, i, mu, maxiter=50) { basis_vector[i] = 1. theta = rep(0, p) + Sigma_ = as.double(Sigma) + Sigma_diag_ = as.double(diag(Sigma)) + val = .C("find_one_row", - Sigma=as.double(Sigma), - Sigma_diag=as.double(diag(Sigma)), + Sigma=Sigma_, + Sigma_diag=Sigma_diag_, Sigma_theta=as.double(rep(0, p)), ever_active=as.integer(i), nactive_ptr=as.integer(1), From f53af23587372422cfcbe4e5d9105e2a384edbc6 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Wed, 16 Aug 2017 18:41:19 -0700 Subject: [PATCH 191/493] success -- about 2ms now -- python still faster (as timed through rpy2) :) --- README.md | 9 +++++++ selectiveInference/R/funs.fixed.R | 35 ++++++-------------------- selectiveInference/src/Rcpp-debias.cpp | 8 +++--- selectiveInference/src/debias.c | 13 +++------- selectiveInference/src/debias.h | 8 +++--- 5 files changed, 29 insertions(+), 44 deletions(-) diff --git a/README.md b/README.md index 962151e..cf855e1 100644 --- a/README.md +++ b/README.md @@ -21,3 +21,12 @@ The latest release of the package can be installed through CRAN: install.packages("selectiveInference") ``` Code in repo is under development and may be unstable. + +## For development + +You will have to run + +```R +library(Rcpp) +Rcpp::compileAttributes('selectiveInference') +``` \ No newline at end of file diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index f4b5a26..7314511 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -295,6 +295,7 @@ InverseLinfty <- function(sigma, n, e, resol=1.5, mu=NULL, maxiter=50, threshold incr <- 0; while ((mu.stop != 1)&&(try.no<10)){ last.beta <- beta + useC = TRUE if (useC == FALSE) { output <- InverseLinftyOneRow(sigma, i, mu, maxiter=maxiter, threshold=threshold) } else { @@ -341,37 +342,17 @@ InverseLinfty <- function(sigma, n, e, resol=1.5, mu=NULL, maxiter=50, threshold InverseLinftyOneRowC <- function (Sigma, i, mu, maxiter=50) { - theta = find_one_row(Sigma, i, mu, maxiter) - return(theta) -} -# p = nrow(Sigma) -# basis_vector = rep(0, p) -# basis_vector[i] = 1. -# theta = rep(0, p) + theta = find_one_row(Sigma, i-1, mu, maxiter) -# val = .C("find_one_row", -# Sigma=as.double(Sigma), -# Sigma_diag=as.double(diag(Sigma)), -# Sigma_theta=as.double(rep(0, p)), -# ever_active=as.integer(i), -# nactive_ptr=as.integer(1), -# nrow=as.integer(p), -# bound=as.double(mu), -# theta=as.double(theta), -# maxiter=as.integer(50), -# row=as.integer(i-1), -# coord=as.integer(i-1), -# dup=FALSE, -# package="selectiveInference") + # Check feasibility -# # Check feasibility + if (max(abs(Sigma %*% val$theta - basis_vector)) > 1.01 * mu) { + warning("Solution for row of M does not seem to be feasible") + } -# if (max(abs(Sigma %*% val$theta - basis_vector)) > 1.01 * mu) { -# warning("Solution for row of M does not seem to be feasible") -# } + return(theta) -# return(val$theta) -# } +} InverseLinftyOneRow <- function ( sigma, i, mu, maxiter=50, threshold=1e-2 ) { p <- nrow(sigma); diff --git a/selectiveInference/src/Rcpp-debias.cpp b/selectiveInference/src/Rcpp-debias.cpp index 384c105..d8cd729 100644 --- a/selectiveInference/src/Rcpp-debias.cpp +++ b/selectiveInference/src/Rcpp-debias.cpp @@ -37,11 +37,11 @@ Rcpp::NumericVector find_one_row(Rcpp::NumericMatrix Sigma, (double *) Sigma_theta.begin(), (int *) ever_active.begin(), (int *) nactive.begin(), - (int *) &nrow, - (double *) &bound, + nrow, + bound, (double *) theta.begin(), - (int *) &maxiter, - (int *) &row); + maxiter, + row); return theta; } diff --git a/selectiveInference/src/debias.c b/selectiveInference/src/debias.c index 7932b2e..f8ff6e3 100644 --- a/selectiveInference/src/debias.c +++ b/selectiveInference/src/debias.c @@ -210,19 +210,15 @@ void find_one_row_void(double *Sigma, /* A covariance matrix: X^TX/n */ double *Sigma_theta, /* Sigma times theta */ int *ever_active, /* Ever active set: 0-based */ int *nactive_ptr, /* Size of ever active set */ - int *nrow_ptr, /* How many rows in Sigma */ - double *bound_ptr, /* feasibility parameter */ + int nrow, /* How many rows in Sigma */ + double bound, /* feasibility parameter */ double *theta, /* current value */ - int *maxiter_ptr, /* how many iterations */ - int *row_ptr) /* which coordinate to update: 0-based */ + int maxiter, /* how many iterations */ + int row) /* which coordinate to update: 0-based */ { - int maxiter = *maxiter_ptr; int iter = 0; int icoord = 0; - int row = *row_ptr; - double bound = *bound_ptr; - int nrow = *nrow_ptr; fprintf(stderr, "starting now\n"); @@ -299,6 +295,5 @@ void find_one_row_void(double *Sigma, /* A covariance matrix: X^TX/n */ old_value = new_value; } - *nrow_ptr = iter-1; } diff --git a/selectiveInference/src/debias.h b/selectiveInference/src/debias.h index 28d2a88..107d931 100644 --- a/selectiveInference/src/debias.h +++ b/selectiveInference/src/debias.h @@ -8,11 +8,11 @@ void find_one_row_void(double *Sigma, /* A covariance matrix: X^TX/n */ double *Sigma_theta, /* Sigma times theta */ int *ever_active, /* Ever active set: 0-based */ int *nactive_ptr, /* Size of ever active set */ - int *nrow_ptr, /* How many rows in Sigma */ - double *bound_ptr, /* feasibility parameter */ + int nrow, /* How many rows in Sigma */ + double bound, /* feasibility parameter */ double *theta, /* current value */ - int *maxiter_ptr, /* how many iterations */ - int *row_ptr); /* which coordinate to update: 0-based */ + int maxiter, /* how many iterations */ + int row); /* which coordinate to update: 0-based */ #ifdef __cplusplus } /* extern "C" */ #endif /* __cplusplus */ From 7920c8c5fd8564e5410104ac993303ceddb1205b Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Wed, 16 Aug 2017 23:27:06 -0700 Subject: [PATCH 192/493] BF: column major, removing print statements --- selectiveInference/src/debias.c | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/selectiveInference/src/debias.c b/selectiveInference/src/debias.c index f8ff6e3..fd9be79 100644 --- a/selectiveInference/src/debias.c +++ b/selectiveInference/src/debias.c @@ -1,4 +1,3 @@ -#include #include // for fabs // Find an approximate row of \hat{Sigma}^{-1} @@ -41,10 +40,8 @@ double objective(double *Sigma, /* A covariance matrix: X^TX/n */ active_col_ptr = ((int *) ever_active + icol); active_col = *active_col_ptr; theta_col_ptr = ((double *) theta + active_col); - - fprintf(stderr, "%d %d \n", active_row, active_col); - Sigma_ptr = ((double *) Sigma + nrow * active_row + active_col); + Sigma_ptr = ((double *) Sigma + nrow * active_col + active_row); // Matrices are column-major order value += 0.5 * (*Sigma_ptr) * (*theta_row_ptr) * (*theta_col_ptr); } @@ -220,8 +217,6 @@ void find_one_row_void(double *Sigma, /* A covariance matrix: X^TX/n */ int iter = 0; int icoord = 0; - fprintf(stderr, "starting now\n"); - double old_value = objective(Sigma, ever_active, nactive_ptr, @@ -252,7 +247,6 @@ void find_one_row_void(double *Sigma, /* A covariance matrix: X^TX/n */ nrow, row, bound) == 1) { - fprintf(stderr, "ending in first KKT check\n"); break; } @@ -275,7 +269,6 @@ void find_one_row_void(double *Sigma, /* A covariance matrix: X^TX/n */ nrow, row, bound) == 1) { - fprintf(stderr, "ending in second KKT check\n"); break; } @@ -288,7 +281,6 @@ void find_one_row_void(double *Sigma, /* A covariance matrix: X^TX/n */ theta); if (((old_value - new_value) < tol * fabs(new_value)) && (iter > 0)) { - fprintf(stderr, "ending in objective value check\n"); break; } From 6756ab2935c0dd93ab4bde228db31e09066b14a6 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Wed, 16 Aug 2017 23:28:14 -0700 Subject: [PATCH 193/493] changing name of function, evaluation of feasibility in Rcpp --- Makefile | 4 ++++ README.md | 5 ++--- selectiveInference/R/funs.fixed.R | 8 +++++--- selectiveInference/src/Rcpp-debias.cpp | 25 ++++++++++++++++++++----- 4 files changed, 31 insertions(+), 11 deletions(-) create mode 100644 Makefile diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..dfe6002 --- /dev/null +++ b/Makefile @@ -0,0 +1,4 @@ +Rcpp: + rm selectiveInference/src/RcppExports.cpp + rm selectiveInference/R/RcppExports.R + Rscript -e "library(Rcpp); Rcpp::compileAttributes('selectiveInference')" \ No newline at end of file diff --git a/README.md b/README.md index cf855e1..0a60855 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,6 @@ Code in repo is under development and may be unstable. You will have to run -```R -library(Rcpp) -Rcpp::compileAttributes('selectiveInference') +``` +make Rcpp ``` \ No newline at end of file diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 7314511..f2b9838 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -342,11 +342,13 @@ InverseLinfty <- function(sigma, n, e, resol=1.5, mu=NULL, maxiter=50, threshold InverseLinftyOneRowC <- function (Sigma, i, mu, maxiter=50) { - theta = find_one_row(Sigma, i-1, mu, maxiter) + result = find_one_row_debiasingM(Sigma, i-1, mu, maxiter) # C function uses 0-based indexing + theta = result$theta + feasible_val = result$feasible_val - # Check feasibility + # Check feasibility - if (max(abs(Sigma %*% val$theta - basis_vector)) > 1.01 * mu) { + if (feasible_val > 1.01 * mu) { warning("Solution for row of M does not seem to be feasible") } diff --git a/selectiveInference/src/Rcpp-debias.cpp b/selectiveInference/src/Rcpp-debias.cpp index d8cd729..48f484f 100644 --- a/selectiveInference/src/Rcpp-debias.cpp +++ b/selectiveInference/src/Rcpp-debias.cpp @@ -2,10 +2,10 @@ #include // where find_one_row_void is defined // [[Rcpp::export]] -Rcpp::NumericVector find_one_row(Rcpp::NumericMatrix Sigma, - int row, // 0-based - double bound, - int maxiter) { +Rcpp::List find_one_row_debiasingM(Rcpp::NumericMatrix Sigma, + int row, // 0-based + double bound, + int maxiter) { int nrow = Sigma.nrow(); // number of features @@ -42,6 +42,21 @@ Rcpp::NumericVector find_one_row(Rcpp::NumericMatrix Sigma, (double *) theta.begin(), maxiter, row); + + // Check whether feasible + + double feasible_val = 0; + double val; + for (irow=0; irow feasible_val) { + feasible_val = fabs(val); + } + } - return theta; + return(Rcpp::List::create(Rcpp::Named("theta") = theta, + Rcpp::Named("feasible_val") = feasible_val)); } From 0e584354e49c2fb68039761a0d6b040c1e37c1b9 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Wed, 16 Aug 2017 23:37:00 -0700 Subject: [PATCH 194/493] RF: renamed C function, removing R solver for one row --- selectiveInference/R/funs.fixed.R | 82 ++------------------------ selectiveInference/src/Rcpp-debias.cpp | 25 ++++---- selectiveInference/src/debias.c | 22 +++---- selectiveInference/src/debias.h | 20 +++---- 4 files changed, 40 insertions(+), 109 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index f2b9838..d0bc861 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -159,8 +159,8 @@ sigma=NULL, alpha=0.1, hsigmaSinv <- solve(hsigmaS) # pinv(hsigmaS) # Approximate inverse covariance matrix for when (n < p) from lasso_Inference.R - useC = TRUE - htheta <- InverseLinfty(hsigma, n, length(S), verbose=FALSE, useC=useC) + + htheta <- InverseLinfty(hsigma, n, length(S), verbose=FALSE) # htheta <- InverseLinfty(hsigma, n, verbose=FALSE) FS = rbind(diag(length(S)),matrix(0,pp-length(S),length(S))) @@ -270,7 +270,7 @@ fixedLasso.poly= ### Functions borrowed and slightly modified from lasso_inference.R ## Approximates inverse covariance matrix theta -InverseLinfty <- function(sigma, n, e, resol=1.5, mu=NULL, maxiter=50, threshold=1e-2, verbose = TRUE, useC = FALSE) { +InverseLinfty <- function(sigma, n, e, resol=1.5, mu=NULL, maxiter=50, threshold=1e-2, verbose = TRUE) { # InverseLinfty <- function(sigma, n, resol=1.5, mu=NULL, maxiter=50, threshold=1e-2, verbose = TRUE) { isgiven <- 1; if (is.null(mu)){ @@ -295,12 +295,7 @@ InverseLinfty <- function(sigma, n, e, resol=1.5, mu=NULL, maxiter=50, threshold incr <- 0; while ((mu.stop != 1)&&(try.no<10)){ last.beta <- beta - useC = TRUE - if (useC == FALSE) { - output <- InverseLinftyOneRow(sigma, i, mu, maxiter=maxiter, threshold=threshold) - } else { - output <- InverseLinftyOneRowC(sigma, i, mu, maxiter=maxiter) - } + output <- InverseLinftyOneRow(sigma, i, mu, maxiter=maxiter) beta <- output$optsol iter <- output$iter if (isgiven==1){ @@ -340,7 +335,7 @@ InverseLinfty <- function(sigma, n, e, resol=1.5, mu=NULL, maxiter=50, threshold return(M) } -InverseLinftyOneRowC <- function (Sigma, i, mu, maxiter=50) { +InverseLinftyOneRow <- function (Sigma, i, mu, maxiter=50) { result = find_one_row_debiasingM(Sigma, i-1, mu, maxiter) # C function uses 0-based indexing theta = result$theta @@ -352,73 +347,8 @@ InverseLinftyOneRowC <- function (Sigma, i, mu, maxiter=50) { warning("Solution for row of M does not seem to be feasible") } - return(theta) - -} + return(result) -InverseLinftyOneRow <- function ( sigma, i, mu, maxiter=50, threshold=1e-2 ) { - p <- nrow(sigma); - rho <- max(abs(sigma[i,-i])) / sigma[i,i]; - mu0 <- rho/(1+rho); - beta <- rep(0,p); - - #if (mu >= mu0){ - # beta[i] <- (1-mu0)/sigma[i,i]; - # returnlist <- list("optsol" = beta, "iter" = 0); - # return(returnlist); - #} - - diff.norm2 <- 1; - last.norm2 <- 1; - iter <- 1; - iter.old <- 1; - beta[i] <- (1-mu0)/sigma[i,i]; - beta.old <- beta; - sigma.tilde <- sigma; - diag(sigma.tilde) <- 0; - vs <- -sigma.tilde%*%beta; - - while ((iter <= maxiter) && (diff.norm2 >= threshold*last.norm2)){ - - for (j in 1:p){ - oldval <- beta[j]; - v <- vs[j]; - if (j==i) - v <- v+1; - beta[j] <- SoftThreshold(v,mu)/sigma[j,j]; - if (oldval != beta[j]){ - vs <- vs + (oldval-beta[j])*sigma.tilde[,j]; - } - } - - iter <- iter + 1; - if (iter==2*iter.old){ - d <- beta - beta.old; - diff.norm2 <- sqrt(sum(d*d)); - last.norm2 <-sqrt(sum(beta*beta)); - iter.old <- iter; - beta.old <- beta; - if (iter>10) - vs <- -sigma.tilde%*%beta; - } - } - - returnlist <- list("optsol" = beta, "iter" = iter) - return(returnlist) -} - -SoftThreshold <- function( x, lambda ) { - # - # Standard soft thresholding - # - if (x>lambda){ - return (x-lambda);} - else { - if (x< (-lambda)){ - return (x+lambda);} - else { - return (0); } - } } ############################## diff --git a/selectiveInference/src/Rcpp-debias.cpp b/selectiveInference/src/Rcpp-debias.cpp index 48f484f..bb8b5cd 100644 --- a/selectiveInference/src/Rcpp-debias.cpp +++ b/selectiveInference/src/Rcpp-debias.cpp @@ -32,16 +32,16 @@ Rcpp::List find_one_row_debiasingM(Rcpp::NumericMatrix Sigma, // Now call our C function - find_one_row_void((double *) Sigma.begin(), - (double *) Sigma_diag.begin(), - (double *) Sigma_theta.begin(), - (int *) ever_active.begin(), - (int *) nactive.begin(), - nrow, - bound, - (double *) theta.begin(), - maxiter, - row); + int iter = find_one_row_((double *) Sigma.begin(), + (double *) Sigma_diag.begin(), + (double *) Sigma_theta.begin(), + (int *) ever_active.begin(), + (int *) nactive.begin(), + nrow, + bound, + (double *) theta.begin(), + maxiter, + row); // Check whether feasible @@ -57,6 +57,7 @@ Rcpp::List find_one_row_debiasingM(Rcpp::NumericMatrix Sigma, } } - return(Rcpp::List::create(Rcpp::Named("theta") = theta, - Rcpp::Named("feasible_val") = feasible_val)); + return(Rcpp::List::create(Rcpp::Named("optsol") = theta, + Rcpp::Named("feasible_val") = feasible_val, + Rcpp::Named("iter") = iter)); } diff --git a/selectiveInference/src/debias.c b/selectiveInference/src/debias.c index fd9be79..d2f671d 100644 --- a/selectiveInference/src/debias.c +++ b/selectiveInference/src/debias.c @@ -202,16 +202,16 @@ double update_one_coord(double *Sigma, /* A covariance matrix: X^TX/n } -void find_one_row_void(double *Sigma, /* A covariance matrix: X^TX/n */ - double *Sigma_diag, /* Diagonal entry of covariance matrix */ - double *Sigma_theta, /* Sigma times theta */ - int *ever_active, /* Ever active set: 0-based */ - int *nactive_ptr, /* Size of ever active set */ - int nrow, /* How many rows in Sigma */ - double bound, /* feasibility parameter */ - double *theta, /* current value */ - int maxiter, /* how many iterations */ - int row) /* which coordinate to update: 0-based */ +int find_one_row_(double *Sigma, /* A covariance matrix: X^TX/n */ + double *Sigma_diag, /* Diagonal entry of covariance matrix */ + double *Sigma_theta, /* Sigma times theta */ + int *ever_active, /* Ever active set: 0-based */ + int *nactive_ptr, /* Size of ever active set */ + int nrow, /* How many rows in Sigma */ + double bound, /* feasibility parameter */ + double *theta, /* current value */ + int maxiter, /* how many iterations */ + int row) /* which coordinate to update: 0-based */ { int iter = 0; @@ -286,6 +286,6 @@ void find_one_row_void(double *Sigma, /* A covariance matrix: X^TX/n */ old_value = new_value; } - + return(iter); } diff --git a/selectiveInference/src/debias.h b/selectiveInference/src/debias.h index 107d931..48f9753 100644 --- a/selectiveInference/src/debias.h +++ b/selectiveInference/src/debias.h @@ -3,16 +3,16 @@ extern "C" { #endif /* __cplusplus */ -void find_one_row_void(double *Sigma, /* A covariance matrix: X^TX/n */ - double *Sigma_diag, /* Diagonal entry of covariance matrix */ - double *Sigma_theta, /* Sigma times theta */ - int *ever_active, /* Ever active set: 0-based */ - int *nactive_ptr, /* Size of ever active set */ - int nrow, /* How many rows in Sigma */ - double bound, /* feasibility parameter */ - double *theta, /* current value */ - int maxiter, /* how many iterations */ - int row); /* which coordinate to update: 0-based */ +int find_one_row_(double *Sigma, /* A covariance matrix: X^TX/n */ + double *Sigma_diag, /* Diagonal entry of covariance matrix */ + double *Sigma_theta, /* Sigma times theta */ + int *ever_active, /* Ever active set: 0-based */ + int *nactive_ptr, /* Size of ever active set */ + int nrow, /* How many rows in Sigma */ + double bound, /* feasibility parameter */ + double *theta, /* current value */ + int maxiter, /* how many iterations */ + int row); /* which coordinate to update: 0-based */ #ifdef __cplusplus } /* extern "C" */ #endif /* __cplusplus */ From 06143059f7732e98bd30f18976775a7a5954ba9b Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Wed, 16 Aug 2017 23:40:55 -0700 Subject: [PATCH 195/493] need to make Rcpp exports --- .travis.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index aa61233..a3fdd1f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,8 +7,9 @@ r: - devel addons: apt: - packages: libmpfr-dev + packages: libmpfr-dev warnings_are_errors: true before_install: - tlmgr install index # for texlive and vignette? + - make Rcpp - cd selectiveInference From ca60bc90d631c8723c031b6d7f8a2c748816a82a Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Wed, 16 Aug 2017 23:44:51 -0700 Subject: [PATCH 196/493] ignore first two lines if status not OK? --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index dfe6002..5c55bb8 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ Rcpp: - rm selectiveInference/src/RcppExports.cpp - rm selectiveInference/R/RcppExports.R + - rm -f selectiveInference/src/RcppExports.cpp + - rm -f selectiveInference/R/RcppExports.R Rscript -e "library(Rcpp); Rcpp::compileAttributes('selectiveInference')" \ No newline at end of file From 60f6cdea4e355d70b305bd61062371dedc4b7e06 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Wed, 16 Aug 2017 23:50:24 -0700 Subject: [PATCH 197/493] install Rcpp earlier --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index a3fdd1f..21270e0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,5 +11,6 @@ addons: warnings_are_errors: true before_install: - tlmgr install index # for texlive and vignette? + - R -e 'install.packages("Rcpp", repos="http://cloud.r-project.org")' - make Rcpp - cd selectiveInference From c1aef63975841d882e0a68ec4e84382b0b4c7cd6 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 17 Aug 2017 00:26:42 -0700 Subject: [PATCH 198/493] using Rcpp for matrixcomps as well -- update1 and downdate1 -- examples now OK on Rcmd check --- selectiveInference/R/funs.common.R | 8 +---- selectiveInference/R/funs.lar.R | 9 +----- selectiveInference/src/Rcpp-matrixcomps.cpp | 34 ++++++++++++++++++++ selectiveInference/src/debias.h | 1 + selectiveInference/src/matrixcomps.c | 13 +++----- selectiveInference/src/matrixcomps.h | 12 +++++++ selectiveInference/src/symbols.rds | Bin 367 -> 0 bytes 7 files changed, 53 insertions(+), 24 deletions(-) create mode 100644 selectiveInference/src/Rcpp-matrixcomps.cpp create mode 100644 selectiveInference/src/matrixcomps.h delete mode 100644 selectiveInference/src/symbols.rds diff --git a/selectiveInference/R/funs.common.R b/selectiveInference/R/funs.common.R index 042e074..678d736 100644 --- a/selectiveInference/R/funs.common.R +++ b/selectiveInference/R/funs.common.R @@ -152,13 +152,7 @@ updateQR <- function(Q1,Q2,R,col) { n = ncol(Q1) k = ncol(Q2) - a = .C("update1", - Q2=as.double(Q2), - w=as.double(t(Q2)%*%col), - m=as.integer(m), - k=as.integer(k), - dup=FALSE, - package="selectiveInference") + a = update1_(as.matrix(Q2), t(Q2)%*%col, m, k) # Rcpp call Q2 = matrix(a$Q2,nrow=m) w = c(t(Q1)%*%col,a$w) diff --git a/selectiveInference/R/funs.lar.R b/selectiveInference/R/funs.lar.R index eb31b4e..a01b2d3 100644 --- a/selectiveInference/R/funs.lar.R +++ b/selectiveInference/R/funs.lar.R @@ -254,14 +254,7 @@ downdateQR <- function(Q1,Q2,R,col) { m = nrow(Q1) n = ncol(Q1) - a = .C("downdate1", - Q1=as.double(Q1), - R=as.double(R), - col=as.integer(col-1), - m=as.integer(m), - n=as.integer(n), - dup=FALSE, - package="selectiveInference") + a = downdate1_(as.matrix(Q1), R, col, m, n) # Rcpp call Q1 = matrix(a$Q1,nrow=m) R = matrix(a$R,nrow=n) diff --git a/selectiveInference/src/Rcpp-matrixcomps.cpp b/selectiveInference/src/Rcpp-matrixcomps.cpp new file mode 100644 index 0000000..045b4b7 --- /dev/null +++ b/selectiveInference/src/Rcpp-matrixcomps.cpp @@ -0,0 +1,34 @@ +#include // need to include the main Rcpp header file +#include // where update1, downdate1 are defined + +// [[Rcpp::export]] +Rcpp::List update1_(Rcpp::NumericMatrix Q2, + Rcpp::NumericVector w, + int m, + int k) { + + update1(Q2.begin(), + w.begin(), + m, + k); + + return(Rcpp::List::create(Rcpp::Named("Q2") = Q2, + Rcpp::Named("w") = w)); +} + +// [[Rcpp::export]] +Rcpp::List downdate1_(Rcpp::NumericMatrix Q1, + Rcpp::NumericMatrix R, + int j0, + int m, + int n) { + + downdate1(Q1.begin(), + R.begin(), + j0, + m, + n); + + return(Rcpp::List::create(Rcpp::Named("Q1") = Q1, + Rcpp::Named("R") = R)); +} diff --git a/selectiveInference/src/debias.h b/selectiveInference/src/debias.h index 48f9753..ed14cf5 100644 --- a/selectiveInference/src/debias.h +++ b/selectiveInference/src/debias.h @@ -13,6 +13,7 @@ int find_one_row_(double *Sigma, /* A covariance matrix: X^TX/n */ double *theta, /* current value */ int maxiter, /* how many iterations */ int row); /* which coordinate to update: 0-based */ + #ifdef __cplusplus } /* extern "C" */ #endif /* __cplusplus */ diff --git a/selectiveInference/src/matrixcomps.c b/selectiveInference/src/matrixcomps.c index 4a516a1..bec3506 100644 --- a/selectiveInference/src/matrixcomps.c +++ b/selectiveInference/src/matrixcomps.c @@ -53,11 +53,8 @@ void colrot(double *A, int j1, int j2, int m, int n, int i1, int i2, double c, d // where Q1 is m x n and R is n x n. The other part of // the Q matrix, Q2 m x (m-n), isn't needed so it isn't // passed for efficiency -void downdate1(double *Q1, double *R, int *j0p, int *mp, int *np) { - int j0,m,n,j; - j0 = *j0p; - m = *mp; - n = *np; +void downdate1(double *Q1, double *R, int j0, int m, int n) { + int j; double c,s; for (j=j0+1; j=1; j--) { diff --git a/selectiveInference/src/matrixcomps.h b/selectiveInference/src/matrixcomps.h new file mode 100644 index 0000000..8632e3e --- /dev/null +++ b/selectiveInference/src/matrixcomps.h @@ -0,0 +1,12 @@ +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ + +void update1(double *Q2, double *w, int m, int k); + +void downdate1(double *Q1, double *R, int j0, int m, int n); + +#ifdef __cplusplus +} /* extern "C" */ +#endif /* __cplusplus */ diff --git a/selectiveInference/src/symbols.rds b/selectiveInference/src/symbols.rds deleted file mode 100644 index 06b0e85e927ffbb186121204a3be110d68965ede..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 367 zcmV-#0g(P5iwFP!000001HF`8PlGTNhRes4%`92sg}43!BMkib8)hcnHDxQak_6JIPWlgp?6ULIF7c6t)_l2M@%=qRk*KdBZ0#Ng2zV>P#g%js+AFbJLu%b;B1>Aj(q=rLtRA?|{WKk$T84 z()a@`zE^&?C?~o(^2)7UXU|@{XM1 Date: Thu, 17 Aug 2017 12:20:11 -0700 Subject: [PATCH 199/493] using a warm start if available --- selectiveInference/R/funs.fixed.R | 28 ++++++++++++++++------ selectiveInference/src/Rcpp-debias.cpp | 33 ++++++++++---------------- selectiveInference/src/debias.h | 15 ++++++++---- 3 files changed, 45 insertions(+), 31 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index d0bc861..592d61d 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -293,10 +293,13 @@ InverseLinfty <- function(sigma, n, e, resol=1.5, mu=NULL, maxiter=50, threshold mu.stop <- 0; try.no <- 1; incr <- 0; + + output = NULL + while ((mu.stop != 1)&&(try.no<10)){ last.beta <- beta - output <- InverseLinftyOneRow(sigma, i, mu, maxiter=maxiter) - beta <- output$optsol + output <- InverseLinftyOneRow(sigma, i, mu, maxiter=maxiter, soln_result=output) # uses a warm start + beta <- output$soln iter <- output$iter if (isgiven==1){ mu.stop <- 1 @@ -335,15 +338,26 @@ InverseLinfty <- function(sigma, n, e, resol=1.5, mu=NULL, maxiter=50, threshold return(M) } -InverseLinftyOneRow <- function (Sigma, i, mu, maxiter=50) { +InverseLinftyOneRow <- function (Sigma, i, mu, maxiter=50, soln_result=NULL) { + + # If soln_result is not Null, it is used as a warm start. + # It should be a list + # with entries "soln" and "Sigma_soln" + + if (is.null(soln_result)) { + soln = rep(0, nrow(Sigma)) + Sigma_soln = rep(0, nrow(Sigma)) + } + else { + soln = soln_result$soln + Sigma_soln = soln_result$Sigma_soln + } - result = find_one_row_debiasingM(Sigma, i-1, mu, maxiter) # C function uses 0-based indexing - theta = result$theta - feasible_val = result$feasible_val + result = find_one_row_debiasingM(Sigma, i-1, mu, maxiter, soln, Sigma_soln) # C function uses 0-based indexing # Check feasibility - if (feasible_val > 1.01 * mu) { + if (!result$kkt_check) { warning("Solution for row of M does not seem to be feasible") } diff --git a/selectiveInference/src/Rcpp-debias.cpp b/selectiveInference/src/Rcpp-debias.cpp index bb8b5cd..b529c4a 100644 --- a/selectiveInference/src/Rcpp-debias.cpp +++ b/selectiveInference/src/Rcpp-debias.cpp @@ -5,7 +5,9 @@ Rcpp::List find_one_row_debiasingM(Rcpp::NumericMatrix Sigma, int row, // 0-based double bound, - int maxiter) { + int maxiter, + Rcpp::NumericVector theta, + Rcpp::NumericVector Sigma_theta) { int nrow = Sigma.nrow(); // number of features @@ -25,11 +27,6 @@ Rcpp::List find_one_row_debiasingM(Rcpp::NumericMatrix Sigma, sigma_p[irow] = Sigma(irow, irow); } - // The solution and its product with Sigma - - Rcpp::NumericVector theta(nrow); - Rcpp::NumericVector Sigma_theta(nrow); - // Now call our C function int iter = find_one_row_((double *) Sigma.begin(), @@ -45,19 +42,15 @@ Rcpp::List find_one_row_debiasingM(Rcpp::NumericMatrix Sigma, // Check whether feasible - double feasible_val = 0; - double val; - for (irow=0; irow feasible_val) { - feasible_val = fabs(val); - } - } + int kkt_check = check_KKT(theta.begin(), + Sigma_theta.begin(), + nrow, + row, + bound); + + return(Rcpp::List::create(Rcpp::Named("soln") = theta, + Rcpp::Named("Sigma_soln") = Sigma_theta, + Rcpp::Named("iter") = iter, + Rcpp::Named("kkt_check") = kkt_check)); - return(Rcpp::List::create(Rcpp::Named("optsol") = theta, - Rcpp::Named("feasible_val") = feasible_val, - Rcpp::Named("iter") = iter)); } diff --git a/selectiveInference/src/debias.h b/selectiveInference/src/debias.h index ed14cf5..958df0e 100644 --- a/selectiveInference/src/debias.h +++ b/selectiveInference/src/debias.h @@ -8,11 +8,18 @@ int find_one_row_(double *Sigma, /* A covariance matrix: X^TX/n */ double *Sigma_theta, /* Sigma times theta */ int *ever_active, /* Ever active set: 0-based */ int *nactive_ptr, /* Size of ever active set */ - int nrow, /* How many rows in Sigma */ - double bound, /* feasibility parameter */ + int nrow, /* How many rows in Sigma */ + double bound, /* feasibility parameter */ double *theta, /* current value */ - int maxiter, /* how many iterations */ - int row); /* which coordinate to update: 0-based */ + int maxiter, /* how many iterations */ + int row); /* which coordinate to update: 0-based */ + +int check_KKT(double *theta, /* current theta */ + double *Sigma_theta, /* Sigma times theta */ + int nrow, /* how many rows in Sigma */ + int row, /* which row: 0-based */ + double bound); /* Lagrange multipler for \ell_1 */ + #ifdef __cplusplus } /* extern "C" */ From a8805b8e0685773ca49f44832cff6a6d1db88906 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 17 Aug 2017 17:24:20 -0700 Subject: [PATCH 200/493] trying to find segfault --- selectiveInference/R/funs.fixed.R | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 592d61d..4724f08 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -298,6 +298,10 @@ InverseLinfty <- function(sigma, n, e, resol=1.5, mu=NULL, maxiter=50, threshold while ((mu.stop != 1)&&(try.no<10)){ last.beta <- beta + if (!is.null(output)) { + print(c('at least second try', try.no)) + } + print(output) output <- InverseLinftyOneRow(sigma, i, mu, maxiter=maxiter, soln_result=output) # uses a warm start beta <- output$soln iter <- output$iter From abf03513c56d897078132d8922b1d03c95ff43db Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Fri, 18 Aug 2017 08:14:31 -0700 Subject: [PATCH 201/493] BF: order of arguments to is_active, renamed the function as well --- selectiveInference/src/debias.c | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/selectiveInference/src/debias.c b/selectiveInference/src/debias.c index d2f671d..5701b4c 100644 --- a/selectiveInference/src/debias.c +++ b/selectiveInference/src/debias.c @@ -1,3 +1,4 @@ +#include #include // for fabs // Find an approximate row of \hat{Sigma}^{-1} @@ -41,6 +42,7 @@ double objective(double *Sigma, /* A covariance matrix: X^TX/n */ active_col = *active_col_ptr; theta_col_ptr = ((double *) theta + active_col); + fprintf(stderr, "%d %d %d\n", active_row, active_col, nactive); Sigma_ptr = ((double *) Sigma + nrow * active_col + active_row); // Matrices are column-major order value += 0.5 * (*Sigma_ptr) * (*theta_row_ptr) * (*theta_col_ptr); @@ -54,9 +56,11 @@ double objective(double *Sigma, /* A covariance matrix: X^TX/n */ return(value); } -int is_active(int coord, - int *nactive_ptr, - int *ever_active) { +// Check if active and add it to active list if necessary + +int update_ever_active(int coord, + int *ever_active, + int *nactive_ptr) { int iactive; int active_var; int nactive = *nactive_ptr; @@ -65,9 +69,17 @@ int is_active(int coord, for (iactive=0; iactive Date: Fri, 18 Aug 2017 08:24:49 -0700 Subject: [PATCH 202/493] removing debug statements --- selectiveInference/R/funs.fixed.R | 4 --- selectiveInference/src/debias.c | 50 ++++++++++++++++++------------- 2 files changed, 29 insertions(+), 25 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 4724f08..592d61d 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -298,10 +298,6 @@ InverseLinfty <- function(sigma, n, e, resol=1.5, mu=NULL, maxiter=50, threshold while ((mu.stop != 1)&&(try.no<10)){ last.beta <- beta - if (!is.null(output)) { - print(c('at least second try', try.no)) - } - print(output) output <- InverseLinftyOneRow(sigma, i, mu, maxiter=maxiter, soln_result=output) # uses a warm start beta <- output$soln iter <- output$iter diff --git a/selectiveInference/src/debias.c b/selectiveInference/src/debias.c index 5701b4c..08c46ff 100644 --- a/selectiveInference/src/debias.c +++ b/selectiveInference/src/debias.c @@ -1,4 +1,3 @@ -#include #include // for fabs // Find an approximate row of \hat{Sigma}^{-1} @@ -42,7 +41,6 @@ double objective(double *Sigma, /* A covariance matrix: X^TX/n */ active_col = *active_col_ptr; theta_col_ptr = ((double *) theta + active_col); - fprintf(stderr, "%d %d %d\n", active_row, active_col, nactive); Sigma_ptr = ((double *) Sigma + nrow * active_col + active_row); // Matrices are column-major order value += 0.5 * (*Sigma_ptr) * (*theta_row_ptr) * (*theta_col_ptr); @@ -70,11 +68,12 @@ int update_ever_active(int coord, active_var = (*ever_active_ptr); if (active_var == coord) { - fprintf(stderr, "%d %d before\n", *nactive_ptr); + // Add it to the active set and increment the + // number of active variables + ever_active_ptr = ((int *) ever_active + *nactive_ptr); *ever_active_ptr = coord; *nactive_ptr += 1; - fprintf(stderr, "%d %d after\n", *nactive_ptr, coord); return(1); } @@ -126,7 +125,6 @@ int check_KKT(double *theta, /* current theta */ return(fail == 0); } - double update_one_coord(double *Sigma, /* A covariance matrix: X^TX/n */ double *Sigma_diag, /* Diagonal entries of Sigma */ double *Sigma_theta, /* Sigma times theta */ @@ -136,7 +134,8 @@ double update_one_coord(double *Sigma, /* A covariance matrix: X^TX/n double bound, /* feasibility parameter */ double *theta, /* current value */ int row, /* which row: 0-based */ - int coord) /* which coordinate to update: 0-based */ + int coord, /* which coordinate to update: 0-based */ + int is_active) /* Is this part of ever_active */ { double delta; @@ -185,7 +184,9 @@ double update_one_coord(double *Sigma, /* A covariance matrix: X^TX/n // Add to active set if necessary - update_ever_active(coord, ever_active, nactive_ptr); + if (!is_active) { + update_ever_active(coord, ever_active, nactive_ptr); + } // Update the linear term @@ -224,6 +225,8 @@ int find_one_row_(double *Sigma, /* A covariance matrix: X^TX/n */ int iter = 0; int icoord = 0; + int iactive = 0; + int *active_ptr; double old_value = objective(Sigma, ever_active, @@ -237,19 +240,24 @@ int find_one_row_(double *Sigma, /* A covariance matrix: X^TX/n */ for (iter=0; iter Date: Fri, 18 Aug 2017 08:34:01 -0700 Subject: [PATCH 203/493] not using the C code --- selectiveInference/R/funs.fixed.R | 1 + 1 file changed, 1 insertion(+) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 0bbc119..3c99951 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -295,6 +295,7 @@ InverseLinfty <- function(sigma, n, e, resol=1.5, mu=NULL, maxiter=50, threshold incr <- 0; while ((mu.stop != 1)&&(try.no<10)){ last.beta <- beta + useC = FALSE if (useC == FALSE) { output <- InverseLinftyOneRow(sigma, i, mu, maxiter=maxiter, threshold=threshold) } else { From de103f7532e3c889efc9bb7391affce454de8c58 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Fri, 18 Aug 2017 08:36:20 -0700 Subject: [PATCH 204/493] removing useC --- selectiveInference/R/funs.fixed.R | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 3c99951..fe54457 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -159,8 +159,7 @@ sigma=NULL, alpha=0.1, hsigmaSinv <- solve(hsigmaS) # pinv(hsigmaS) # Approximate inverse covariance matrix for when (n < p) from lasso_Inference.R - useC = TRUE - htheta <- InverseLinfty(hsigma, n, length(S), verbose=FALSE, useC=useC) + htheta <- InverseLinfty(hsigma, n, length(S), verbose=FALSE) # htheta <- InverseLinfty(hsigma, n, verbose=FALSE) FS = rbind(diag(length(S)),matrix(0,pp-length(S),length(S))) @@ -270,7 +269,7 @@ fixedLasso.poly= ### Functions borrowed and slightly modified from lasso_inference.R ## Approximates inverse covariance matrix theta -InverseLinfty <- function(sigma, n, e, resol=1.5, mu=NULL, maxiter=50, threshold=1e-2, verbose = TRUE, useC = FALSE) { +InverseLinfty <- function(sigma, n, e, resol=1.5, mu=NULL, maxiter=50, threshold=1e-2, verbose = TRUE) { # InverseLinfty <- function(sigma, n, resol=1.5, mu=NULL, maxiter=50, threshold=1e-2, verbose = TRUE) { isgiven <- 1; if (is.null(mu)){ @@ -295,12 +294,7 @@ InverseLinfty <- function(sigma, n, e, resol=1.5, mu=NULL, maxiter=50, threshold incr <- 0; while ((mu.stop != 1)&&(try.no<10)){ last.beta <- beta - useC = FALSE - if (useC == FALSE) { - output <- InverseLinftyOneRow(sigma, i, mu, maxiter=maxiter, threshold=threshold) - } else { - output <- InverseLinftyOneRowC(sigma, i, mu, maxiter=maxiter) - } + output <- InverseLinftyOneRow(sigma, i, mu, maxiter=maxiter, threshold=threshold) beta <- output$optsol iter <- output$iter if (isgiven==1){ From d4875262900a90970daf16fe6e96368c6b1a50b0 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Fri, 18 Aug 2017 08:43:12 -0700 Subject: [PATCH 205/493] BF: percent signs in example --- selectiveInference/man/fixedLassoInf.Rd | 35 +++++++++++++++++++++---- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/selectiveInference/man/fixedLassoInf.Rd b/selectiveInference/man/fixedLassoInf.Rd index d675c3f..3633524 100644 --- a/selectiveInference/man/fixedLassoInf.Rd +++ b/selectiveInference/man/fixedLassoInf.Rd @@ -145,7 +145,7 @@ p = 10 sigma = 1 x = matrix(rnorm(n*p),n,p) -x=scale(x,TRUE,TRUE) +x = scale(x,TRUE,TRUE) beta = c(3,2,rep(0,p-2)) y = x\%*\%beta + sigma*rnorm(n) @@ -165,10 +165,10 @@ out ## as above, but use lar function instead to get initial ## lasso fit (should get same results) - lfit = lar(x,y,normalize=FALSE) - beta = coef(lfit,s=lambda,mode="lambda") - out2 = fixedLassoInf(x,y,beta,lambda,sigma=sigma) - out2 +lfit = lar(x,y,normalize=FALSE) +beta = coef(lfit,s=lambda,mode="lambda") +out2 = fixedLassoInf(x,y,beta,lambda,sigma=sigma) +out2 ## mimic different penalty factors by first scaling x set.seed(43) @@ -249,5 +249,30 @@ status=sample(c(0,1),size=n,replace=TRUE) # compute fixed lambda p-values and selection intervals out = fixedLassoInf(x,tim,beta_hat,lambda,status=status,family="cox") out + +# Debiased lasso or "full" + +n = 50 +p = 100 +sigma = 1 + +x = matrix(rnorm(n*p),n,p) +x = scale(x,TRUE,TRUE) + +beta = c(3,2,rep(0,p-2)) +y = x\%*\%beta + sigma*rnorm(n) + +# first run glmnet +gfit = glmnet(x, y, standardize=FALSE, intercept=FALSE) + +# extract coef for a given lambda; note the 1/n factor! +# (and we don't save the intercept term) +lambda = 2.8 +beta = coef(gfit, s=lambda/n, exact=TRUE)[-1] + +# compute fixed lambda p-values and selection intervals +out = fixedLassoInf(x, y, beta, lambda, sigma=sigma, type='full', intercept=FALSE) +out + } \ No newline at end of file From 7360386212cb047287211545c3eca4f8e8b477f4 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Fri, 18 Aug 2017 09:02:24 -0700 Subject: [PATCH 206/493] smaller changes in mu per step in line search --- selectiveInference/R/funs.fixed.R | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 592d61d..db5b915 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -270,8 +270,7 @@ fixedLasso.poly= ### Functions borrowed and slightly modified from lasso_inference.R ## Approximates inverse covariance matrix theta -InverseLinfty <- function(sigma, n, e, resol=1.5, mu=NULL, maxiter=50, threshold=1e-2, verbose = TRUE) { - # InverseLinfty <- function(sigma, n, resol=1.5, mu=NULL, maxiter=50, threshold=1e-2, verbose = TRUE) { +InverseLinfty <- function(sigma, n, e, resol=1.2, mu=NULL, maxiter=50, threshold=1e-2, verbose = TRUE) { isgiven <- 1; if (is.null(mu)){ isgiven <- 0; From a9a8bbbd4208086426a29ea3cd7dbaaacb807426 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Fri, 18 Aug 2017 09:40:54 -0700 Subject: [PATCH 207/493] renaming Sigma_theta to gradient, making sure we loop through active set --- selectiveInference/src/debias.c | 35 +++++++++++++++++---------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/selectiveInference/src/debias.c b/selectiveInference/src/debias.c index 08c46ff..5b1592e 100644 --- a/selectiveInference/src/debias.c +++ b/selectiveInference/src/debias.c @@ -65,6 +65,7 @@ int update_ever_active(int coord, int *ever_active_ptr = ever_active; for (iactive=0; iactive Date: Fri, 18 Aug 2017 09:50:51 -0700 Subject: [PATCH 208/493] more renaming --- selectiveInference/src/debias.c | 36 ++++++++++++++++----------------- selectiveInference/src/debias.h | 14 ++++++------- 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/selectiveInference/src/debias.c b/selectiveInference/src/debias.c index 5b1592e..e043934 100644 --- a/selectiveInference/src/debias.c +++ b/selectiveInference/src/debias.c @@ -11,7 +11,7 @@ // Update one coordinate double objective(double *Sigma, /* A covariance matrix: X^TX/n */ - int *ever_active, /* Ever active set: 0-based */ + int *ever_active_ptr, /* Ever active set: 0-based */ int *nactive_ptr, /* Size of ever active set */ int nrow, /* how many rows in Sigma */ int row, /* which row: 0-based */ @@ -31,13 +31,13 @@ double objective(double *Sigma, /* A covariance matrix: X^TX/n */ for (irow=0; irow Date: Fri, 18 Aug 2017 10:11:38 -0700 Subject: [PATCH 209/493] BF: forgot to rename in Rcpp file, passing active and ever_active from R --- selectiveInference/R/funs.fixed.R | 14 ++++++++++---- selectiveInference/src/Rcpp-debias.cpp | 23 ++++++++++++----------- 2 files changed, 22 insertions(+), 15 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index db5b915..460cd0b 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -341,18 +341,24 @@ InverseLinftyOneRow <- function (Sigma, i, mu, maxiter=50, soln_result=NULL) { # If soln_result is not Null, it is used as a warm start. # It should be a list - # with entries "soln" and "Sigma_soln" + # with entries "soln", "gradient", "ever_active", "nactive" if (is.null(soln_result)) { soln = rep(0, nrow(Sigma)) - Sigma_soln = rep(0, nrow(Sigma)) + gradient = rep(0, nrow(Sigma)) + ever_active = rep(0, nrow(Sigma)) + ever_active[1] = i-1 # 0-based + ever_active = as.integer(ever_active) + nactive = as.integer(1) } else { soln = soln_result$soln - Sigma_soln = soln_result$Sigma_soln + gradient = soln_result$gradient + ever_active = as.integer(soln_result$ever_active) + nactive = as.integer(soln_result$nactive) } - result = find_one_row_debiasingM(Sigma, i-1, mu, maxiter, soln, Sigma_soln) # C function uses 0-based indexing + result = find_one_row_debiasingM(Sigma, i-1, mu, maxiter, soln, gradient, ever_active, nactive) # C function uses 0-based indexing # Check feasibility diff --git a/selectiveInference/src/Rcpp-debias.cpp b/selectiveInference/src/Rcpp-debias.cpp index b529c4a..b6c80d2 100644 --- a/selectiveInference/src/Rcpp-debias.cpp +++ b/selectiveInference/src/Rcpp-debias.cpp @@ -7,31 +7,30 @@ Rcpp::List find_one_row_debiasingM(Rcpp::NumericMatrix Sigma, double bound, int maxiter, Rcpp::NumericVector theta, - Rcpp::NumericVector Sigma_theta) { + Rcpp::NumericVector gradient, + Rcpp::IntegerVector ever_active, + Rcpp::IntegerVector nactive + ) { int nrow = Sigma.nrow(); // number of features // Active set int irow; - Rcpp::IntegerVector nactive(1); // An array so we can easily modify it - Rcpp::IntegerVector ever_active(1); - int *ever_active_p = ever_active.begin(); - *ever_active_p = row; // Extract the diagonal Rcpp::NumericVector Sigma_diag(nrow); - double *sigma_p = Sigma_diag.begin(); + double *sigma_diag_p = Sigma_diag.begin(); for (irow=0; irow Date: Fri, 18 Aug 2017 10:46:39 -0700 Subject: [PATCH 210/493] more renaming --- selectiveInference/src/debias.c | 44 +++++++++++++++++++-------------- selectiveInference/src/debias.h | 18 +++++++------- 2 files changed, 34 insertions(+), 28 deletions(-) diff --git a/selectiveInference/src/debias.c b/selectiveInference/src/debias.c index e043934..1b841e0 100644 --- a/selectiveInference/src/debias.c +++ b/selectiveInference/src/debias.c @@ -10,7 +10,7 @@ // Therefore we don't have to negate the answer to get theta. // Update one coordinate -double objective(double *Sigma, /* A covariance matrix: X^TX/n */ +double objective(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ int *ever_active_ptr, /* Ever active set: 0-based */ int *nactive_ptr, /* Size of ever active set */ int nrow, /* how many rows in Sigma */ @@ -20,7 +20,7 @@ double objective(double *Sigma, /* A covariance matrix: X^TX/n */ { int irow, icol; double value = 0; - double *Sigma_ptr = Sigma; + double *Sigma_ptr_tmp = Sigma_ptr; double *theta_row_ptr, *theta_col_ptr; int *active_row_ptr, *active_col_ptr; int active_row, active_col; @@ -41,9 +41,9 @@ double objective(double *Sigma, /* A covariance matrix: X^TX/n */ active_col = *active_col_ptr; theta_col_ptr = ((double *) theta + active_col); - Sigma_ptr = ((double *) Sigma + nrow * active_col + active_row); // Matrices are column-major order + Sigma_ptr_tmp = ((double *) Sigma_ptr + nrow * active_col + active_row); // Matrices are column-major order - value += 0.5 * (*Sigma_ptr) * (*theta_row_ptr) * (*theta_col_ptr); + value += 0.5 * (*Sigma_ptr_tmp) * (*theta_row_ptr) * (*theta_col_ptr); } value = value + bound * fabs((*theta_row_ptr)); // the \ell_1 term } @@ -126,8 +126,8 @@ int check_KKT(double *theta, /* current theta */ return(fail == 0); } -double update_one_coord(double *Sigma, /* A covariance matrix: X^TX/n */ - double *Sigma_diag, /* Diagonal entries of Sigma */ +double update_one_coord(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ + double *Sigma_diag_ptr, /* Diagonal entries of Sigma */ double *gradient_ptr, /* Sigma times theta */ int *ever_active_ptr, /* Ever active set: 0-based */ int *nactive_ptr, /* Size of ever active set */ @@ -143,12 +143,12 @@ double update_one_coord(double *Sigma, /* A covariance matrix: X^TX/n double linear_term = 0; double value = 0; double old_value; - double *Sigma_ptr; + double *Sigma_ptr_tmp; double *gradient_ptr_tmp; double *theta_ptr; int icol = 0; - double *quadratic_ptr = ((double *) Sigma_diag + coord); + double *quadratic_ptr = ((double *) Sigma_diag_ptr + coord); double quadratic_term = *quadratic_ptr; // int *ever_active_ptr_tmp; @@ -194,13 +194,13 @@ double update_one_coord(double *Sigma, /* A covariance matrix: X^TX/n if (fabs(old_value - value) > 1.e-6 * (fabs(value) + fabs(old_value))) { delta = value - old_value; - Sigma_ptr = ((double *) Sigma + coord * nrow); + Sigma_ptr_tmp = ((double *) Sigma_ptr + coord * nrow); gradient_ptr_tmp = ((double *) gradient_ptr); for (icol=0; icol Date: Fri, 18 Aug 2017 11:28:31 -0700 Subject: [PATCH 211/493] trying to get arbitrary linfunc --- selectiveInference/R/funs.fixed.R | 12 +++- selectiveInference/src/Rcpp-debias.cpp | 2 + selectiveInference/src/debias.c | 87 +++++++++++++++----------- selectiveInference/src/debias.h | 3 +- 4 files changed, 65 insertions(+), 39 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 460cd0b..0b6c018 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -297,6 +297,7 @@ InverseLinfty <- function(sigma, n, e, resol=1.2, mu=NULL, maxiter=50, threshold while ((mu.stop != 1)&&(try.no<10)){ last.beta <- beta + #print(c("trying ", try.no)) output <- InverseLinftyOneRow(sigma, i, mu, maxiter=maxiter, soln_result=output) # uses a warm start beta <- output$soln iter <- output$iter @@ -358,7 +359,16 @@ InverseLinftyOneRow <- function (Sigma, i, mu, maxiter=50, soln_result=NULL) { nactive = as.integer(soln_result$nactive) } - result = find_one_row_debiasingM(Sigma, i-1, mu, maxiter, soln, gradient, ever_active, nactive) # C function uses 0-based indexing + linear_func = rep(0, p) + linear_func[i] = -1 + linear_func = as.numeric(linear_func) + + #print(c(soln, "soln")) + #print(c(gradient, "grad")) + #print(c(ever_active, "ever_active")) + #print(c(nactive, "nactive")) + #print(c(linear_func, "linear_func")) + result = find_one_row_debiasingM(Sigma, i-1, mu, maxiter, soln, linear_func, gradient, ever_active, nactive) # C function uses 0-based indexing # Check feasibility diff --git a/selectiveInference/src/Rcpp-debias.cpp b/selectiveInference/src/Rcpp-debias.cpp index b6c80d2..83dd09c 100644 --- a/selectiveInference/src/Rcpp-debias.cpp +++ b/selectiveInference/src/Rcpp-debias.cpp @@ -7,6 +7,7 @@ Rcpp::List find_one_row_debiasingM(Rcpp::NumericMatrix Sigma, double bound, int maxiter, Rcpp::NumericVector theta, + Rcpp::NumericVector linear_func, Rcpp::NumericVector gradient, Rcpp::IntegerVector ever_active, Rcpp::IntegerVector nactive @@ -29,6 +30,7 @@ Rcpp::List find_one_row_debiasingM(Rcpp::NumericMatrix Sigma, // Now call our C function int iter = find_one_row_((double *) Sigma.begin(), + (double *) linear_func.begin(), (double *) Sigma_diag.begin(), (double *) gradient.begin(), (int *) ever_active.begin(), diff --git a/selectiveInference/src/debias.c b/selectiveInference/src/debias.c index 1b841e0..0b34436 100644 --- a/selectiveInference/src/debias.c +++ b/selectiveInference/src/debias.c @@ -1,3 +1,4 @@ +#include #include // for fabs // Find an approximate row of \hat{Sigma}^{-1} @@ -11,16 +12,18 @@ // Update one coordinate double objective(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ + double *linear_func_ptr, /* Linear term in objective */ int *ever_active_ptr, /* Ever active set: 0-based */ - int *nactive_ptr, /* Size of ever active set */ - int nrow, /* how many rows in Sigma */ - int row, /* which row: 0-based */ - double bound, /* Lagrange multipler for \ell_1 */ - double *theta) /* current value */ + int *nactive_ptr, /* Size of ever active set */ + int nrow, /* how many rows in Sigma */ + int row, /* which row: 0-based */ + double bound, /* Lagrange multipler for \ell_1 */ + double *theta) /* current value */ { int irow, icol; double value = 0; double *Sigma_ptr_tmp = Sigma_ptr; + double *linear_func_ptr_tmp = linear_func_ptr; double *theta_row_ptr, *theta_col_ptr; int *active_row_ptr, *active_col_ptr; int active_row, active_col; @@ -45,12 +48,15 @@ double objective(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ value += 0.5 * (*Sigma_ptr_tmp) * (*theta_row_ptr) * (*theta_col_ptr); } - value = value + bound * fabs((*theta_row_ptr)); // the \ell_1 term - } + value += bound * fabs((*theta_row_ptr)); // the \ell_1 term + + // The linear term in the objective - theta_row_ptr = ((double *) theta + row); - value -= (*theta_row_ptr); // the elementary basis vector term + value += (*linear_func_ptr_tmp) * (*theta_row_ptr); + linear_func_ptr_tmp++; + } + return(value); } @@ -66,19 +72,22 @@ int update_ever_active(int coord, for (iactive=0; iactive Date: Fri, 18 Aug 2017 12:09:13 -0700 Subject: [PATCH 212/493] can solve arbitrary LASSO now --- selectiveInference/R/funs.fixed.R | 11 +++++---- selectiveInference/src/Rcpp-debias.cpp | 1 + selectiveInference/src/debias.c | 32 +++++++------------------- selectiveInference/src/debias.h | 6 ++--- 4 files changed, 18 insertions(+), 32 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 0b6c018..06c7a7d 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -346,28 +346,29 @@ InverseLinftyOneRow <- function (Sigma, i, mu, maxiter=50, soln_result=NULL) { if (is.null(soln_result)) { soln = rep(0, nrow(Sigma)) - gradient = rep(0, nrow(Sigma)) ever_active = rep(0, nrow(Sigma)) ever_active[1] = i-1 # 0-based ever_active = as.integer(ever_active) nactive = as.integer(1) + linear_func = rep(0, p) + linear_func[i] = -1 + linear_func = as.numeric(linear_func) + gradient = 1. * linear_func } else { soln = soln_result$soln gradient = soln_result$gradient ever_active = as.integer(soln_result$ever_active) nactive = as.integer(soln_result$nactive) + linear_func = soln_result$linear_func } - linear_func = rep(0, p) - linear_func[i] = -1 - linear_func = as.numeric(linear_func) - #print(c(soln, "soln")) #print(c(gradient, "grad")) #print(c(ever_active, "ever_active")) #print(c(nactive, "nactive")) #print(c(linear_func, "linear_func")) + result = find_one_row_debiasingM(Sigma, i-1, mu, maxiter, soln, linear_func, gradient, ever_active, nactive) # C function uses 0-based indexing # Check feasibility diff --git a/selectiveInference/src/Rcpp-debias.cpp b/selectiveInference/src/Rcpp-debias.cpp index 83dd09c..be02abd 100644 --- a/selectiveInference/src/Rcpp-debias.cpp +++ b/selectiveInference/src/Rcpp-debias.cpp @@ -51,6 +51,7 @@ Rcpp::List find_one_row_debiasingM(Rcpp::NumericMatrix Sigma, return(Rcpp::List::create(Rcpp::Named("soln") = theta, Rcpp::Named("gradient") = gradient, + Rcpp::Named("linear_func") = linear_func, Rcpp::Named("iter") = iter, Rcpp::Named("kkt_check") = kkt_check, Rcpp::Named("ever_active") = ever_active, diff --git a/selectiveInference/src/debias.c b/selectiveInference/src/debias.c index 0b34436..b0669f8 100644 --- a/selectiveInference/src/debias.c +++ b/selectiveInference/src/debias.c @@ -5,7 +5,8 @@ // Solves a dual version of problem (4) of https://arxiv.org/pdf/1306.3171.pdf -// Dual problem: \text{min}_{\theta} 1/2 \theta^T \Sigma \theta - e_i^T\theta + \mu \|\theta\|_1 +// Dual problem: \text{min}_{\theta} 1/2 \theta^T \Sigma \theta - l^T\theta + \mu \|\theta\|_1 +// where l is `linear_func` below // This is the "negative" of the problem as in https://gist.github.com/jonathan-taylor/07774d209173f8bc4e42aa37712339bf // Therefore we don't have to negate the answer to get theta. @@ -16,7 +17,6 @@ double objective(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ int *ever_active_ptr, /* Ever active set: 0-based */ int *nactive_ptr, /* Size of ever active set */ int nrow, /* how many rows in Sigma */ - int row, /* which row: 0-based */ double bound, /* Lagrange multipler for \ell_1 */ double *theta) /* current value */ { @@ -52,8 +52,8 @@ double objective(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ // The linear term in the objective + linear_func_ptr_tmp = ((double *) linear_func_ptr + active_row); value += (*linear_func_ptr_tmp) * (*theta_row_ptr); - linear_func_ptr_tmp++; } @@ -74,7 +74,6 @@ int update_ever_active(int coord, ever_active_ptr_tmp = ((int *) ever_active_ptr + iactive); active_var = *ever_active_ptr_tmp; if (active_var == coord) { - // fprintf(stderr, "blah %d %d %d\n", coord, active_var, *nactive_ptr); return(1); } } @@ -92,11 +91,10 @@ int update_ever_active(int coord, return(0); } -int check_KKT(double *theta, /* current theta */ +int check_KKT(double *theta, /* current theta */ double *gradient_ptr, /* Sigma times theta */ - int nrow, /* how many rows in Sigma */ - int row, /* which row: 0-based */ - double bound) /* Lagrange multipler for \ell_1 */ + int nrow, /* how many rows in Sigma */ + double bound) /* Lagrange multipler for \ell_1 */ { // First check inactive @@ -113,9 +111,6 @@ int check_KKT(double *theta, /* current theta */ // Compute this coordinate of the gradient gradient = *gradient_ptr_tmp; - if (row == irow) { - gradient -= 1; - } if (*theta_ptr != 0) { // these coordinates of gradients should be equal to -bound if ((*theta_ptr > 0) && (fabs(gradient + bound) > (1. + tol) * bound)) { @@ -144,7 +139,6 @@ double update_one_coord(double *Sigma_ptr, /* A covariance matrix: X^T int nrow, /* How many rows in Sigma */ double bound, /* feasibility parameter */ double *theta, /* current value */ - int row, /* which row: 0-based */ int coord, /* which coordinate to update: 0-based */ int is_active) /* Is this part of ever_active */ { @@ -161,8 +155,6 @@ double update_one_coord(double *Sigma_ptr, /* A covariance matrix: X^T double *quadratic_ptr = ((double *) Sigma_diag_ptr + coord); double quadratic_term = *quadratic_ptr; - // int *ever_active_ptr_tmp; - gradient_ptr_tmp = ((double *) gradient_ptr + coord); linear_term = *gradient_ptr_tmp; @@ -172,9 +164,8 @@ double update_one_coord(double *Sigma_ptr, /* A covariance matrix: X^T // The coord entry of gradient_ptr term has a diagonal term in it: // Sigma[coord, coord] * theta[coord] // This removes it. - linear_term -= quadratic_term * old_value; - linear_term += *((double *) linear_func_ptr + coord); + linear_term -= quadratic_term * old_value; // Now soft-threshold the coord entry of theta @@ -229,8 +220,7 @@ int find_one_row_(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ int nrow, /* How many rows in Sigma */ double bound, /* feasibility parameter */ double *theta, /* current value */ - int maxiter, /* how many iterations */ - int row) /* which coordinate to update: 0-based */ + int maxiter) { int iter = 0; @@ -243,7 +233,6 @@ int find_one_row_(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ ever_active_ptr, nactive_ptr, nrow, - row, bound, theta); double new_value; @@ -265,7 +254,6 @@ int find_one_row_(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ nrow, bound, theta, - row, *active_ptr, 1); active_ptr++; @@ -276,7 +264,6 @@ int find_one_row_(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ if (check_KKT(theta, gradient_ptr, nrow, - row, bound) == 1) { break; } @@ -294,7 +281,6 @@ int find_one_row_(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ nrow, bound, theta, - row, icoord, 0); } @@ -304,7 +290,6 @@ int find_one_row_(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ if (check_KKT(theta, gradient_ptr, nrow, - row, bound) == 1) { break; } @@ -314,7 +299,6 @@ int find_one_row_(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ ever_active_ptr, nactive_ptr, nrow, - row, bound, theta); diff --git a/selectiveInference/src/debias.h b/selectiveInference/src/debias.h index c20195c..bb9f6d6 100644 --- a/selectiveInference/src/debias.h +++ b/selectiveInference/src/debias.h @@ -12,13 +12,13 @@ int find_one_row_(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ int nrow, /* How many rows in Sigma */ double bound, /* feasibility parameter */ double *theta, /* current value */ - int maxiter, /* how many iterations */ - int row); /* which coordinate to update: 0-based */ + int maxiter) //, /* how many iterations */ +// int row); /* which coordinate to update: 0-based */ int check_KKT(double *theta, /* current theta */ double *gradient_ptr, /* Current gradient of quadratic loss */ int nrow, /* how many rows in Sigma */ - int row, /* which row: 0-based */ + // int row, /* which row: 0-based */ double bound); /* Lagrange multipler for \ell_1 */ From d248a8f88c2e4e7e12a94369ae02edc95838a3f8 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Fri, 18 Aug 2017 12:17:44 -0700 Subject: [PATCH 213/493] BF: updating active set --- selectiveInference/src/debias.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/selectiveInference/src/debias.c b/selectiveInference/src/debias.c index 1b841e0..107ae5d 100644 --- a/selectiveInference/src/debias.c +++ b/selectiveInference/src/debias.c @@ -69,17 +69,20 @@ int update_ever_active(int coord, active_var = (*ever_active_ptr_tmp); if (active_var == coord) { - // Add it to the active set and increment the - // number of active variables - - ever_active_ptr_tmp = ((int *) ever_active_ptr + *nactive_ptr); - *ever_active_ptr_tmp = coord; - *nactive_ptr += 1; - return(1); } } + // If we have not returned yet, this variable + // was not in ever_active + + // Add it to the active set and increment the + // number of active variables + + ever_active_ptr_tmp = ((int *) ever_active_ptr + *nactive_ptr); + *ever_active_ptr_tmp = coord; + *nactive_ptr += 1; + return(0); } From aa515c972c8e1f918d6572338eae25efc28af16f Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Fri, 18 Aug 2017 12:24:22 -0700 Subject: [PATCH 214/493] cosmetic change --- selectiveInference/src/debias.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/selectiveInference/src/debias.c b/selectiveInference/src/debias.c index 107ae5d..532dbef 100644 --- a/selectiveInference/src/debias.c +++ b/selectiveInference/src/debias.c @@ -68,7 +68,6 @@ int update_ever_active(int coord, ever_active_ptr_tmp = ((int *) ever_active_ptr + iactive); active_var = (*ever_active_ptr_tmp); if (active_var == coord) { - return(1); } } @@ -188,7 +187,7 @@ double update_one_coord(double *Sigma_ptr, /* A covariance matrix: X^T // Add to active set if necessary - if (!is_active) { + if (is_active == 0) { update_ever_active(coord, ever_active_ptr, nactive_ptr); } From 5d5e8f3c4a0d1c0ed70097d3480f778a208c36f9 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Fri, 18 Aug 2017 12:30:59 -0700 Subject: [PATCH 215/493] BF: fixing function signatures --- selectiveInference/src/debias.h | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/selectiveInference/src/debias.h b/selectiveInference/src/debias.h index bb9f6d6..730b1fb 100644 --- a/selectiveInference/src/debias.h +++ b/selectiveInference/src/debias.h @@ -12,13 +12,11 @@ int find_one_row_(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ int nrow, /* How many rows in Sigma */ double bound, /* feasibility parameter */ double *theta, /* current value */ - int maxiter) //, /* how many iterations */ -// int row); /* which coordinate to update: 0-based */ + int maxiter); int check_KKT(double *theta, /* current theta */ double *gradient_ptr, /* Current gradient of quadratic loss */ int nrow, /* how many rows in Sigma */ - // int row, /* which row: 0-based */ double bound); /* Lagrange multipler for \ell_1 */ From d1debcd5bcd7932fdff213b882d83a8b47c1a875 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Fri, 18 Aug 2017 12:31:30 -0700 Subject: [PATCH 216/493] BF: fixing function signatures --- selectiveInference/src/Rcpp-debias.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/selectiveInference/src/Rcpp-debias.cpp b/selectiveInference/src/Rcpp-debias.cpp index be02abd..db6e77e 100644 --- a/selectiveInference/src/Rcpp-debias.cpp +++ b/selectiveInference/src/Rcpp-debias.cpp @@ -38,15 +38,13 @@ Rcpp::List find_one_row_debiasingM(Rcpp::NumericMatrix Sigma, nrow, bound, (double *) theta.begin(), - maxiter, - row); + maxiter); // Check whether feasible int kkt_check = check_KKT(theta.begin(), gradient.begin(), nrow, - row, bound); return(Rcpp::List::create(Rcpp::Named("soln") = theta, From 15762af11f53be618e21c83af9db194db8f9a537 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Fri, 18 Aug 2017 16:12:02 -0700 Subject: [PATCH 217/493] BF: KKT wrong for active conditions, still have debug statements --- selectiveInference/R/funs.fixed.R | 8 +--- selectiveInference/src/Rcpp-debias.cpp | 1 - selectiveInference/src/debias.c | 52 ++++++++++++++++++-------- 3 files changed, 37 insertions(+), 24 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 06c7a7d..e6e0c5f 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -363,13 +363,7 @@ InverseLinftyOneRow <- function (Sigma, i, mu, maxiter=50, soln_result=NULL) { linear_func = soln_result$linear_func } - #print(c(soln, "soln")) - #print(c(gradient, "grad")) - #print(c(ever_active, "ever_active")) - #print(c(nactive, "nactive")) - #print(c(linear_func, "linear_func")) - - result = find_one_row_debiasingM(Sigma, i-1, mu, maxiter, soln, linear_func, gradient, ever_active, nactive) # C function uses 0-based indexing + result = find_one_row_debiasingM(Sigma, mu, maxiter, soln, linear_func, gradient, ever_active, nactive) # C function uses 0-based indexing # Check feasibility diff --git a/selectiveInference/src/Rcpp-debias.cpp b/selectiveInference/src/Rcpp-debias.cpp index db6e77e..1095c29 100644 --- a/selectiveInference/src/Rcpp-debias.cpp +++ b/selectiveInference/src/Rcpp-debias.cpp @@ -3,7 +3,6 @@ // [[Rcpp::export]] Rcpp::List find_one_row_debiasingM(Rcpp::NumericMatrix Sigma, - int row, // 0-based double bound, int maxiter, Rcpp::NumericVector theta, diff --git a/selectiveInference/src/debias.c b/selectiveInference/src/debias.c index b0669f8..6af42c4 100644 --- a/selectiveInference/src/debias.c +++ b/selectiveInference/src/debias.c @@ -100,34 +100,52 @@ int check_KKT(double *theta, /* current theta */ int irow; int fail = 0; - double tol = 1.e-4; - double *theta_ptr, *gradient_ptr_tmp; + double tol = 1.e-5; + double *theta_ptr = theta; + double *gradient_ptr_tmp = gradient_ptr; double gradient; for (irow=0; irow 0) && (fabs(gradient + bound) > (1. + tol) * bound)) { - fail += 1; + fprintf(stderr, "how does it look %d %f %f\n", irow, *theta_ptr, gradient); + + // Compute this coordinate of the gradient + + if (fabs(*theta_ptr) > tol) { // these coordinates of gradients should be equal to \pm bound + fprintf(stderr, "active %f %f\n", fabs(fabs(gradient) - bound), bound); + if (fabs(fabs(gradient) - bound) > tol * bound) { + fprintf(stderr, "here1 %d %f %f\n", irow, *theta_ptr, gradient); + return(0); + // fail += 1; } - else if ((*theta_ptr < 0) && (fabs(gradient - bound) > (1. + tol) * bound)) { - fail += 1; + else if ((*theta_ptr > 0) && (gradient > 0)) { + fprintf(stderr, "here2 %d %f %f\n", irow, *theta_ptr, gradient); + return(0); + // fail += 1; + } + else if ((*theta_ptr < 0) && (gradient < 0)) { + fprintf(stderr, "here3 %d %f %f\n", irow, *theta_ptr, gradient); + return(0); + // fail += 1; } } else { + fprintf(stderr, "before4 %d %f %f\n", irow, *theta_ptr, gradient); if (fabs(gradient) > (1. + tol) * bound) { - fail += 1; + fprintf(stderr, "here4 %d %f %f\n", irow, *theta_ptr, gradient); + return(0); + // fail += 1; } } + theta_ptr++; + gradient_ptr_tmp++; } + fprintf(stderr, "OK now\n"); return(fail == 0); + } double update_one_coord(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ @@ -236,7 +254,7 @@ int find_one_row_(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ bound, theta); double new_value; - double tol=1.e-5; + double tol=1.e-8; for (iter=0; iter 0)) { - break; - } +/* if (((old_value - new_value) < tol * fabs(new_value)) && (iter > 0)) { */ +/* break; */ +/* } */ old_value = new_value; } From 9872b45ae05b79358c17effeaf7b7b6cca395fe7 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Fri, 18 Aug 2017 16:19:21 -0700 Subject: [PATCH 218/493] removing debug statements --- selectiveInference/src/debias.c | 22 +++------------------- 1 file changed, 3 insertions(+), 19 deletions(-) diff --git a/selectiveInference/src/debias.c b/selectiveInference/src/debias.c index 6af42c4..c9809e3 100644 --- a/selectiveInference/src/debias.c +++ b/selectiveInference/src/debias.c @@ -1,4 +1,3 @@ -#include #include // for fabs // Find an approximate row of \hat{Sigma}^{-1} @@ -109,41 +108,28 @@ int check_KKT(double *theta, /* current theta */ gradient = *gradient_ptr_tmp; - fprintf(stderr, "how does it look %d %f %f\n", irow, *theta_ptr, gradient); - // Compute this coordinate of the gradient if (fabs(*theta_ptr) > tol) { // these coordinates of gradients should be equal to \pm bound - fprintf(stderr, "active %f %f\n", fabs(fabs(gradient) - bound), bound); if (fabs(fabs(gradient) - bound) > tol * bound) { - fprintf(stderr, "here1 %d %f %f\n", irow, *theta_ptr, gradient); return(0); - // fail += 1; } else if ((*theta_ptr > 0) && (gradient > 0)) { - fprintf(stderr, "here2 %d %f %f\n", irow, *theta_ptr, gradient); return(0); - // fail += 1; } else if ((*theta_ptr < 0) && (gradient < 0)) { - fprintf(stderr, "here3 %d %f %f\n", irow, *theta_ptr, gradient); return(0); - // fail += 1; } } else { - fprintf(stderr, "before4 %d %f %f\n", irow, *theta_ptr, gradient); if (fabs(gradient) > (1. + tol) * bound) { - fprintf(stderr, "here4 %d %f %f\n", irow, *theta_ptr, gradient); return(0); - // fail += 1; } } theta_ptr++; gradient_ptr_tmp++; } - fprintf(stderr, "OK now\n"); return(fail == 0); } @@ -283,7 +269,6 @@ int find_one_row_(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ gradient_ptr, nrow, bound) == 1) { - fprintf(stderr, "here5 \n"); break; } @@ -310,7 +295,6 @@ int find_one_row_(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ gradient_ptr, nrow, bound) == 1) { - fprintf(stderr, "here6 \n"); break; } @@ -322,9 +306,9 @@ int find_one_row_(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ bound, theta); -/* if (((old_value - new_value) < tol * fabs(new_value)) && (iter > 0)) { */ -/* break; */ -/* } */ + if (((old_value - new_value) < tol * fabs(new_value)) && (iter > 0)) { + break; + } old_value = new_value; } From be84df2690dc8a62f543693d80ff44dd2a751418 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Fri, 18 Aug 2017 16:23:09 -0700 Subject: [PATCH 219/493] BF: KKT condition was wrong --- selectiveInference/src/debias.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/selectiveInference/src/debias.c b/selectiveInference/src/debias.c index 532dbef..0d71e49 100644 --- a/selectiveInference/src/debias.c +++ b/selectiveInference/src/debias.c @@ -95,7 +95,7 @@ int check_KKT(double *theta, /* current theta */ int irow; int fail = 0; - double tol = 1.e-4; + double tol = 1.e-6; double *theta_ptr, *gradient_ptr_tmp; double gradient; @@ -111,10 +111,10 @@ int check_KKT(double *theta, /* current theta */ } if (*theta_ptr != 0) { // these coordinates of gradients should be equal to -bound - if ((*theta_ptr > 0) && (fabs(gradient + bound) > (1. + tol) * bound)) { + if ((*theta_ptr > 0) && (fabs(gradient + bound) > tol * bound)) { fail += 1; } - else if ((*theta_ptr < 0) && (fabs(gradient - bound) > (1. + tol) * bound)) { + else if ((*theta_ptr < 0) && (fabs(gradient - bound) > tol * bound)) { fail += 1; } } From 0de59af0c8f90410ae621d981b5458e3b38e1b99 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Fri, 18 Aug 2017 16:28:35 -0700 Subject: [PATCH 220/493] lenient tolerance --- selectiveInference/src/debias.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selectiveInference/src/debias.c b/selectiveInference/src/debias.c index c9809e3..52daea9 100644 --- a/selectiveInference/src/debias.c +++ b/selectiveInference/src/debias.c @@ -99,7 +99,7 @@ int check_KKT(double *theta, /* current theta */ int irow; int fail = 0; - double tol = 1.e-5; + double tol = 1.e-4; double *theta_ptr = theta; double *gradient_ptr_tmp = gradient_ptr; double gradient; From 190c0a0c1a491a265b203c258247b288e9bbaff7 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Fri, 18 Aug 2017 16:35:18 -0700 Subject: [PATCH 221/493] added a few targets to makefile --- Makefile | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 5c55bb8..91a89a4 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,14 @@ Rcpp: - rm -f selectiveInference/src/RcppExports.cpp - rm -f selectiveInference/R/RcppExports.R - Rscript -e "library(Rcpp); Rcpp::compileAttributes('selectiveInference')" \ No newline at end of file + Rscript -e "library(Rcpp); Rcpp::compileAttributes('selectiveInference')" + +install: Rcpp + R CMD install selectiveInference + +build: + R CMD build selectiveInference + +check: Rcpp build + R CMD build selectiveInference + R CMD check selectiveInference_1.2.2.tar.gz # fix this to be a script variable \ No newline at end of file From 2c4cf3a19487cdcfcc7ad9912894c3238d35130b Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Fri, 18 Aug 2017 16:43:41 -0700 Subject: [PATCH 222/493] not checking objective --- selectiveInference/src/debias.c | 71 +++++++++++++++------------------ 1 file changed, 33 insertions(+), 38 deletions(-) diff --git a/selectiveInference/src/debias.c b/selectiveInference/src/debias.c index 52daea9..92e2fb4 100644 --- a/selectiveInference/src/debias.c +++ b/selectiveInference/src/debias.c @@ -90,34 +90,32 @@ int update_ever_active(int coord, return(0); } -int check_KKT(double *theta, /* current theta */ +int check_KKT(double *theta, /* current theta */ double *gradient_ptr, /* Sigma times theta */ - int nrow, /* how many rows in Sigma */ - double bound) /* Lagrange multipler for \ell_1 */ + int nrow, /* how many rows in Sigma */ + double bound) /* Lagrange multipler for \ell_1 */ { // First check inactive int irow; int fail = 0; - double tol = 1.e-4; - double *theta_ptr = theta; - double *gradient_ptr_tmp = gradient_ptr; + double tol = 1.e-6; + double *theta_ptr, *gradient_ptr_tmp; double gradient; for (irow=0; irow tol) { // these coordinates of gradients should be equal to \pm bound - if (fabs(fabs(gradient) - bound) > tol * bound) { - return(0); - } - else if ((*theta_ptr > 0) && (gradient > 0)) { + gradient = *gradient_ptr_tmp; + + if (*theta_ptr != 0) { // these coordinates of gradients should be equal to -bound + if ((*theta_ptr > 0) && (fabs(gradient + bound) > tol * bound)) { return(0); } - else if ((*theta_ptr < 0) && (gradient < 0)) { + else if ((*theta_ptr < 0) && (fabs(gradient - bound) > tol * bound)) { return(0); } } @@ -126,12 +124,9 @@ int check_KKT(double *theta, /* current theta */ return(0); } } - theta_ptr++; - gradient_ptr_tmp++; } - return(fail == 0); - + return(1); } double update_one_coord(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ @@ -232,13 +227,13 @@ int find_one_row_(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ int iactive = 0; int *active_ptr; - double old_value = objective(Sigma_ptr, - linear_func_ptr, - ever_active_ptr, - nactive_ptr, - nrow, - bound, - theta); +/* double old_value = objective(Sigma_ptr, */ +/* linear_func_ptr, */ +/* ever_active_ptr, */ +/* nactive_ptr, */ +/* nrow, */ +/* bound, */ +/* theta); */ double new_value; double tol=1.e-8; @@ -298,19 +293,19 @@ int find_one_row_(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ break; } - new_value = objective(Sigma_ptr, - linear_func_ptr, - ever_active_ptr, - nactive_ptr, - nrow, - bound, - theta); - - if (((old_value - new_value) < tol * fabs(new_value)) && (iter > 0)) { - break; - } - - old_value = new_value; +/* new_value = objective(Sigma_ptr, */ +/* linear_func_ptr, */ +/* ever_active_ptr, */ +/* nactive_ptr, */ +/* nrow, */ +/* bound, */ +/* theta); */ + +/* if (((old_value - new_value) < tol * fabs(new_value)) && (iter > 0)) { */ +/* break; */ +/* } */ + +// old_value = new_value; } return(iter); } From 9ebcaabfce17a0cb7e4d48506b0695678ec495d8 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Fri, 18 Aug 2017 18:00:52 -0700 Subject: [PATCH 223/493] making Rcpp in Makevars now --- selectiveInference/src/Makevars | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/selectiveInference/src/Makevars b/selectiveInference/src/Makevars index c68d0bd..cde36c9 100644 --- a/selectiveInference/src/Makevars +++ b/selectiveInference/src/Makevars @@ -2,7 +2,10 @@ PKG_CFLAGS= -I. PKG_CPPFLAGS= -I. PKG_LIBS=-L. -$(SHLIB): Rcpp-debias.o RcppExports.o debias.o +$(SHLIB): Rcpp Rcpp-matrixcomps.o Rcpp-debias.o RcppExports.o debias.o clean: rm -f *o + +Rcpp: + Rscript -e "library(Rcpp); Rcpp::compileAttributes('..')" \ No newline at end of file From 735c4d6742b8782c7f1e8af328c0ab3bf3fca2e5 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Fri, 18 Aug 2017 18:01:44 -0700 Subject: [PATCH 224/493] trying without making Rcpp --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 21270e0..1120a44 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,5 +12,5 @@ warnings_are_errors: true before_install: - tlmgr install index # for texlive and vignette? - R -e 'install.packages("Rcpp", repos="http://cloud.r-project.org")' - - make Rcpp + #- make Rcpp - cd selectiveInference From 0865d09eebbbf1e2f8533f1badf09bb0ba04acd6 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Fri, 18 Aug 2017 18:26:02 -0700 Subject: [PATCH 225/493] making new quadratic_program C file --- selectiveInference/src/Rcpp-debias.cpp | 20 +- selectiveInference/src/debias.h | 21 +- selectiveInference/src/quadratic_program.c | 319 +++++++++++++++++++++ 3 files changed, 339 insertions(+), 21 deletions(-) create mode 100644 selectiveInference/src/quadratic_program.c diff --git a/selectiveInference/src/Rcpp-debias.cpp b/selectiveInference/src/Rcpp-debias.cpp index 1095c29..c1b5e91 100644 --- a/selectiveInference/src/Rcpp-debias.cpp +++ b/selectiveInference/src/Rcpp-debias.cpp @@ -28,16 +28,16 @@ Rcpp::List find_one_row_debiasingM(Rcpp::NumericMatrix Sigma, // Now call our C function - int iter = find_one_row_((double *) Sigma.begin(), - (double *) linear_func.begin(), - (double *) Sigma_diag.begin(), - (double *) gradient.begin(), - (int *) ever_active.begin(), - (int *) nactive.begin(), - nrow, - bound, - (double *) theta.begin(), - maxiter); + int iter = solve_qp((double *) Sigma.begin(), + (double *) linear_func.begin(), + (double *) Sigma_diag.begin(), + (double *) gradient.begin(), + (int *) ever_active.begin(), + (int *) nactive.begin(), + nrow, + bound, + (double *) theta.begin(), + maxiter); // Check whether feasible diff --git a/selectiveInference/src/debias.h b/selectiveInference/src/debias.h index 730b1fb..1284659 100644 --- a/selectiveInference/src/debias.h +++ b/selectiveInference/src/debias.h @@ -3,23 +3,22 @@ extern "C" { #endif /* __cplusplus */ -int find_one_row_(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ - double *linear_func_ptr, /* Linear term in objective */ - double *Sigma_diag_ptr, /* Diagonal entry of covariance matrix */ - double *gradient_ptr, /* Current gradient of quadratic loss */ - int *ever_active_ptr, /* Ever active set: 0-based */ - int *nactive_ptr, /* Size of ever active set */ - int nrow, /* How many rows in Sigma */ - double bound, /* feasibility parameter */ - double *theta, /* current value */ - int maxiter); +int solve_qp(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ + double *linear_func_ptr, /* Linear term in objective */ + double *Sigma_diag_ptr, /* Diagonal entry of covariance matrix */ + double *gradient_ptr, /* Current gradient of quadratic loss */ + int *ever_active_ptr, /* Ever active set: 0-based */ + int *nactive_ptr, /* Size of ever active set */ + int nrow, /* How many rows in Sigma */ + double bound, /* feasibility parameter */ + double *theta, /* current value */ + int maxiter); int check_KKT(double *theta, /* current theta */ double *gradient_ptr, /* Current gradient of quadratic loss */ int nrow, /* how many rows in Sigma */ double bound); /* Lagrange multipler for \ell_1 */ - #ifdef __cplusplus } /* extern "C" */ #endif /* __cplusplus */ diff --git a/selectiveInference/src/quadratic_program.c b/selectiveInference/src/quadratic_program.c new file mode 100644 index 0000000..cf4d650 --- /dev/null +++ b/selectiveInference/src/quadratic_program.c @@ -0,0 +1,319 @@ +#include // for fabs + +// Find an approximate row of \hat{Sigma}^{-1} + +// Solves a dual version of problem (4) of https://arxiv.org/pdf/1306.3171.pdf + +// Dual problem: \text{min}_{\theta} 1/2 \theta^T \Sigma \theta - l^T\theta + \mu \|\theta\|_1 +// where l is `linear_func` below + +// This is the "negative" of the problem as in https://gist.github.com/jonathan-taylor/07774d209173f8bc4e42aa37712339bf +// Therefore we don't have to negate the answer to get theta. +// Update one coordinate + +double objective_qp(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ + double *linear_func_ptr, /* Linear term in objective */ + int *ever_active_ptr, /* Ever active set: 0-based */ + int *nactive_ptr, /* Size of ever active set */ + int nrow, /* how many rows in Sigma */ + double bound, /* Lagrange multipler for \ell_1 */ + double *theta) /* current value */ +{ + int irow, icol; + double value = 0; + double *Sigma_ptr_tmp = Sigma_ptr; + double *linear_func_ptr_tmp = linear_func_ptr; + double *theta_row_ptr, *theta_col_ptr; + int *active_row_ptr, *active_col_ptr; + int active_row, active_col; + int nactive = *nactive_ptr; + + theta_row_ptr = theta; + theta_col_ptr = theta; + + for (irow=0; irow 0) && (fabs(gradient + bound) > tol * bound)) { + return(0); + } + else if ((*theta_ptr < 0) && (fabs(gradient - bound) > tol * bound)) { + return(0); + } + } + else { + if (fabs(gradient) > (1. + tol) * bound) { + return(0); + } + } + } + + return(1); +} + +double update_one_coord_qp(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ + double *linear_func_ptr, /* Linear term in objective */ + double *Sigma_diag_ptr, /* Diagonal entries of Sigma */ + double *gradient_ptr, /* Sigma times theta */ + int *ever_active_ptr, /* Ever active set: 0-based */ + int *nactive_ptr, /* Size of ever active set */ + int nrow, /* How many rows in Sigma */ + double bound, /* feasibility parameter */ + double *theta, /* current value */ + int coord, /* which coordinate to update: 0-based */ + int is_active) /* Is this part of ever_active */ +{ + + double delta; + double linear_term = 0; + double value = 0; + double old_value; + double *Sigma_ptr_tmp; + double *gradient_ptr_tmp; + double *theta_ptr; + int icol = 0; + + double *quadratic_ptr = ((double *) Sigma_diag_ptr + coord); + double quadratic_term = *quadratic_ptr; + + gradient_ptr_tmp = ((double *) gradient_ptr + coord); + linear_term = *gradient_ptr_tmp; + + theta_ptr = ((double *) theta + coord); + old_value = *theta_ptr; + + // The coord entry of gradient_ptr term has a diagonal term in it: + // Sigma[coord, coord] * theta[coord] + // This removes it. + + linear_term -= quadratic_term * old_value; + + // Now soft-threshold the coord entry of theta + + // Objective is t \mapsto q/2 * t^2 + l * t + bound |t| + // with q=quadratic_term and l=linear_term + + // With a negative linear term, solution should be + // positive + + if (linear_term < -bound) { + value = (-linear_term - bound) / quadratic_term; + } + else if (linear_term > bound) { + value = -(linear_term - bound) / quadratic_term; + } + + // Add to active set if necessary + + if (is_active == 0) { + update_ever_active_qp(coord, ever_active_ptr, nactive_ptr); + } + + // Update the linear term + + if (fabs(old_value - value) > 1.e-6 * (fabs(value) + fabs(old_value))) { + + delta = value - old_value; + Sigma_ptr_tmp = ((double *) Sigma_ptr + coord * nrow); + gradient_ptr_tmp = ((double *) gradient_ptr); + + for (icol=0; icol 0)) { + break; + } + old_value = new_value; + } + } + return(iter); +} + From bfad5057a3b91d80ae3477e74f66e59f24e8db3d Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Fri, 18 Aug 2017 18:27:05 -0700 Subject: [PATCH 226/493] need to make Rcpp for travis --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 1120a44..21270e0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,5 +12,5 @@ warnings_are_errors: true before_install: - tlmgr install index # for texlive and vignette? - R -e 'install.packages("Rcpp", repos="http://cloud.r-project.org")' - #- make Rcpp + - make Rcpp - cd selectiveInference From 1237c78d74ca87edec5b9e6496288618eca6d7d5 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Fri, 18 Aug 2017 22:29:06 -0700 Subject: [PATCH 227/493] both solvers working --- selectiveInference/R/funs.fixed.R | 11 ++-- selectiveInference/src/Rcpp-debias.cpp | 75 +++++++++++++++++++--- selectiveInference/src/debias.c | 62 ++++++++++-------- selectiveInference/src/debias.h | 18 ++++++ selectiveInference/src/quadratic_program.c | 9 +-- 5 files changed, 123 insertions(+), 52 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index df87b5e..de609e7 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -297,7 +297,7 @@ InverseLinfty <- function(sigma, n, e, resol=1.2, mu=NULL, maxiter=50, threshold while ((mu.stop != 1)&&(try.no<10)){ last.beta <- beta - print(c("#######################trying ", try.no)) + #print(c("#######################trying ", try.no)) output <- InverseLinftyOneRow(sigma, i, mu, maxiter=maxiter, soln_result=output) # uses a warm start beta <- output$soln iter <- output$iter @@ -365,11 +365,10 @@ InverseLinftyOneRow <- function (Sigma, i, mu, maxiter=50, soln_result=NULL) { linear_func = soln_result$linear_func } - result = solve_QP(Sigma, mu, maxiter, soln, linear_func, gradient, ever_active, nactive) # C function uses 0-based indexing - result2 = find_one_row_debiasingM(Sigma, i, mu, maxiter, soln, gradient, ever_active, nactive) # C function uses 0-based indexing - - print('close?') - print(c(sqrt(sum((result$soln-result2$soln)^2)/sum(result$soln^2)), sqrt(sum(result$soln^2)), result2$nactive)) + result = find_one_row_debiasingM(Sigma, i, mu, maxiter, 0 * soln, gradient, ever_active, nactive) # C function uses 0-based indexing + #result1 = solve_QP(Sigma, mu, maxiter, soln, linear_func, gradient, ever_active, nactive) + #print("close?") + #print(c(sqrt(sum((result1$soln-result$soln)^2)/sum(result$soln^2)), sum(result$soln^2))) # Check feasibility diff --git a/selectiveInference/src/Rcpp-debias.cpp b/selectiveInference/src/Rcpp-debias.cpp index c1b5e91..ce33854 100644 --- a/selectiveInference/src/Rcpp-debias.cpp +++ b/selectiveInference/src/Rcpp-debias.cpp @@ -2,15 +2,15 @@ #include // where find_one_row_void is defined // [[Rcpp::export]] -Rcpp::List find_one_row_debiasingM(Rcpp::NumericMatrix Sigma, - double bound, - int maxiter, - Rcpp::NumericVector theta, - Rcpp::NumericVector linear_func, - Rcpp::NumericVector gradient, - Rcpp::IntegerVector ever_active, - Rcpp::IntegerVector nactive - ) { +Rcpp::List solve_QP(Rcpp::NumericMatrix Sigma, + double bound, + int maxiter, + Rcpp::NumericVector theta, + Rcpp::NumericVector linear_func, + Rcpp::NumericVector gradient, + Rcpp::IntegerVector ever_active, + Rcpp::IntegerVector nactive + ) { int nrow = Sigma.nrow(); // number of features @@ -41,14 +41,69 @@ Rcpp::List find_one_row_debiasingM(Rcpp::NumericMatrix Sigma, // Check whether feasible + int kkt_check = check_KKT_qp(theta.begin(), + gradient.begin(), + nrow, + bound); + + return(Rcpp::List::create(Rcpp::Named("soln") = theta, + Rcpp::Named("gradient") = gradient, + Rcpp::Named("linear_func") = linear_func, + Rcpp::Named("iter") = iter, + Rcpp::Named("kkt_check") = kkt_check, + Rcpp::Named("ever_active") = ever_active, + Rcpp::Named("nactive") = nactive)); + +} + +// [[Rcpp::export]] +Rcpp::List find_one_row_debiasingM(Rcpp::NumericMatrix Sigma, + int row, // 0-based + double bound, + int maxiter, + Rcpp::NumericVector theta, + Rcpp::NumericVector gradient, + Rcpp::IntegerVector ever_active, + Rcpp::IntegerVector nactive + ) { + + int nrow = Sigma.nrow(); // number of features + + // Active set + + int irow; + + // Extract the diagonal + Rcpp::NumericVector Sigma_diag(nrow); + double *sigma_diag_p = Sigma_diag.begin(); + + for (irow=0; irow 0) && (fabs(gradient + bound) > tol * bound)) { - fail += 1; + return(0); } else if ((*theta_ptr < 0) && (fabs(gradient - bound) > tol * bound)) { - fail += 1; + return(0); } } else { if (fabs(gradient) > (1. + tol) * bound) { - fail += 1; + return(0); } } } - return(fail == 0); + return(1); } double update_one_coord(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ @@ -230,16 +229,21 @@ int find_one_row_(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ int icoord = 0; int iactive = 0; int *active_ptr; + double old_value, new_value, tol=1.e-5; + + int check_objective = 1; + + if (check_objective) { + + old_value = objective(Sigma_ptr, + ever_active_ptr, + nactive_ptr, + nrow, + row, + bound, + theta); + } - double old_value = objective(Sigma_ptr, - ever_active_ptr, - nactive_ptr, - nrow, - row, - bound, - theta); - double new_value; - double tol=1.e-5; for (iter=0; iter 0)) { + break; + } - if (((old_value - new_value) < tol * fabs(new_value)) && (iter > 0)) { - break; + old_value = new_value; } - - old_value = new_value; } return(iter); } diff --git a/selectiveInference/src/debias.h b/selectiveInference/src/debias.h index 1284659..5e9d621 100644 --- a/selectiveInference/src/debias.h +++ b/selectiveInference/src/debias.h @@ -14,11 +14,29 @@ int solve_qp(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ double *theta, /* current value */ int maxiter); +int check_KKT_qp(double *theta, /* current theta */ + double *gradient_ptr, /* Current gradient of quadratic loss */ + int nrow, /* how many rows in Sigma */ + double bound); /* Lagrange multipler for \ell_1 */ + +int find_one_row_(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ + double *Sigma_ptr_ptr, /* Diagonal entry of covariance matrix */ + double *gradient_ptr, /* Current gradient of quadratic loss */ + int *ever_active_ptr, /* Ever active set: 0-based */ + int *nactive_ptr, /* Size of ever active set */ + int nrow, /* How many rows in Sigma */ + double bound, /* feasibility parameter */ + double *theta, /* current value */ + int maxiter, /* how many iterations */ + int row); /* which coordinate to update: 0-based */ + int check_KKT(double *theta, /* current theta */ double *gradient_ptr, /* Current gradient of quadratic loss */ int nrow, /* how many rows in Sigma */ + int row, /* which row: 0-based */ double bound); /* Lagrange multipler for \ell_1 */ + #ifdef __cplusplus } /* extern "C" */ #endif /* __cplusplus */ diff --git a/selectiveInference/src/quadratic_program.c b/selectiveInference/src/quadratic_program.c index c923398..50d6514 100644 --- a/selectiveInference/src/quadratic_program.c +++ b/selectiveInference/src/quadratic_program.c @@ -1,5 +1,4 @@ #include // for fabs -#include // Find an approximate row of \hat{Sigma}^{-1} @@ -82,8 +81,6 @@ int update_ever_active_qp(int coord, // Add it to the active set and increment the // number of active variables - fprintf(stderr, "adding %d\n", coord); - ever_active_ptr_tmp = ((int *) ever_active_ptr + *nactive_ptr); *ever_active_ptr_tmp = coord; *nactive_ptr += 1; @@ -99,7 +96,6 @@ int check_KKT_qp(double *theta, /* current theta */ // First check inactive int irow; - int fail = 0; double tol = 1.e-6; double *theta_ptr, *gradient_ptr_tmp; double gradient; @@ -228,13 +224,11 @@ int solve_qp(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ int iactive = 0; int *active_ptr; - int check_objective = 0; + int check_objective = 1; double old_value, new_value; double tol=1.e-8; - fprintf(stderr, "%d nactive start\n", *nactive_ptr); - if (check_objective) { old_value = objective_qp(Sigma_ptr, @@ -250,7 +244,6 @@ int solve_qp(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ for (iter=0; iter Date: Sun, 20 Aug 2017 15:16:24 -0700 Subject: [PATCH 228/493] passing tol as argument; both solvers agree --- selectiveInference/R/funs.fixed.R | 18 ++++-- selectiveInference/src/Rcpp-debias.cpp | 22 ++++++-- selectiveInference/src/debias.c | 64 +++++++++++++--------- selectiveInference/src/debias.h | 18 ++++-- selectiveInference/src/quadratic_program.c | 21 ++++--- 5 files changed, 90 insertions(+), 53 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index de609e7..c8f5352 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -338,7 +338,7 @@ InverseLinfty <- function(sigma, n, e, resol=1.2, mu=NULL, maxiter=50, threshold return(M) } -InverseLinftyOneRow <- function (Sigma, i, mu, maxiter=50, soln_result=NULL) { +InverseLinftyOneRow <- function (Sigma, i, mu, maxiter=50, soln_result=NULL, kkt_tol=1.e-6, objective_tol=1.e-6) { # If soln_result is not Null, it is used as a warm start. # It should be a list @@ -365,10 +365,18 @@ InverseLinftyOneRow <- function (Sigma, i, mu, maxiter=50, soln_result=NULL) { linear_func = soln_result$linear_func } - result = find_one_row_debiasingM(Sigma, i, mu, maxiter, 0 * soln, gradient, ever_active, nactive) # C function uses 0-based indexing - #result1 = solve_QP(Sigma, mu, maxiter, soln, linear_func, gradient, ever_active, nactive) - #print("close?") - #print(c(sqrt(sum((result1$soln-result$soln)^2)/sum(result$soln^2)), sum(result$soln^2))) + soln1 = rep(0, p) + gradient1 = rep(0, p) + ever_active1 = rep(0, p) + ever_active1[1] = i-1 + nactive1 = as.integer(1) + result1 = find_one_row_debiasingM(Sigma, i-1, mu, maxiter, soln1, gradient1, ever_active1, nactive1, kkt_tol, objective_tol) # C function uses 0-based indexing + result = solve_QP(Sigma, mu, maxiter, soln, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol) + print("close?") + print(c(sqrt(sum((result1$soln-result$soln)^2)/sum(result$soln^2)), sum(result$soln^2))) + print(c(result1$iter, result$iter, sum(result1$soln^2))) + + #result = find_one_row_debiasingM(Sigma, i-1, mu, maxiter, soln, gradient, ever_active, nactive, kkt_tol, objective_tol) # C function uses 0-based indexing # Check feasibility diff --git a/selectiveInference/src/Rcpp-debias.cpp b/selectiveInference/src/Rcpp-debias.cpp index ce33854..a78ae81 100644 --- a/selectiveInference/src/Rcpp-debias.cpp +++ b/selectiveInference/src/Rcpp-debias.cpp @@ -9,7 +9,9 @@ Rcpp::List solve_QP(Rcpp::NumericMatrix Sigma, Rcpp::NumericVector linear_func, Rcpp::NumericVector gradient, Rcpp::IntegerVector ever_active, - Rcpp::IntegerVector nactive + Rcpp::IntegerVector nactive, + double kkt_tol, + double objective_tol ) { int nrow = Sigma.nrow(); // number of features @@ -37,14 +39,17 @@ Rcpp::List solve_QP(Rcpp::NumericMatrix Sigma, nrow, bound, (double *) theta.begin(), - maxiter); + maxiter, + kkt_tol, + objective_tol); // Check whether feasible int kkt_check = check_KKT_qp(theta.begin(), gradient.begin(), nrow, - bound); + bound, + kkt_tol); return(Rcpp::List::create(Rcpp::Named("soln") = theta, Rcpp::Named("gradient") = gradient, @@ -64,7 +69,9 @@ Rcpp::List find_one_row_debiasingM(Rcpp::NumericMatrix Sigma, Rcpp::NumericVector theta, Rcpp::NumericVector gradient, Rcpp::IntegerVector ever_active, - Rcpp::IntegerVector nactive + Rcpp::IntegerVector nactive, + double kkt_tol, + double objective_tol ) { int nrow = Sigma.nrow(); // number of features @@ -92,7 +99,9 @@ Rcpp::List find_one_row_debiasingM(Rcpp::NumericMatrix Sigma, bound, (double *) theta.begin(), maxiter, - row); + row, + kkt_tol, + objective_tol); // Check whether feasible @@ -100,7 +109,8 @@ Rcpp::List find_one_row_debiasingM(Rcpp::NumericMatrix Sigma, gradient.begin(), nrow, row, - bound); + bound, + kkt_tol); return(Rcpp::List::create(Rcpp::Named("soln") = theta, Rcpp::Named("gradient") = gradient, diff --git a/selectiveInference/src/debias.c b/selectiveInference/src/debias.c index e083ccc..4d36056 100644 --- a/selectiveInference/src/debias.c +++ b/selectiveInference/src/debias.c @@ -1,3 +1,4 @@ +#include #include // for fabs // Find an approximate row of \hat{Sigma}^{-1} @@ -67,6 +68,7 @@ int update_ever_active(int coord, for (iactive=0; iactive 0) && (fabs(gradient + bound) > tol * bound)) { @@ -122,6 +127,7 @@ int check_KKT(double *theta, /* current theta */ return(0); } } + } return(1); @@ -129,15 +135,15 @@ int check_KKT(double *theta, /* current theta */ double update_one_coord(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ double *Sigma_diag_ptr, /* Diagonal entries of Sigma */ - double *gradient_ptr, /* Sigma times theta */ + double *gradient_ptr, /* Sigma times theta */ int *ever_active_ptr, /* Ever active set: 0-based */ - int *nactive_ptr, /* Size of ever active set */ - int nrow, /* How many rows in Sigma */ - double bound, /* feasibility parameter */ - double *theta, /* current value */ - int row, /* which row: 0-based */ - int coord, /* which coordinate to update: 0-based */ - int is_active) /* Is this part of ever_active */ + int *nactive_ptr, /* Size of ever active set */ + int nrow, /* How many rows in Sigma */ + double bound, /* feasibility parameter */ + double *theta, /* current value */ + int row, /* which row: 0-based */ + int coord, /* which coordinate to update: 0-based */ + int is_active) /* Is this part of ever_active */ { double delta; @@ -215,21 +221,23 @@ double update_one_coord(double *Sigma_ptr, /* A covariance matrix: X^T int find_one_row_(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ double *Sigma_diag_ptr, /* Diagonal entry of covariance matrix */ - double *gradient_ptr, /* Sigma times theta */ + double *gradient_ptr, /* Sigma times theta */ int *ever_active_ptr, /* Ever active set: 0-based */ - int *nactive_ptr, /* Size of ever active set */ - int nrow, /* How many rows in Sigma */ - double bound, /* feasibility parameter */ - double *theta, /* current value */ - int maxiter, /* how many iterations */ - int row) /* which coordinate to update: 0-based */ + int *nactive_ptr, /* Size of ever active set */ + int nrow, /* How many rows in Sigma */ + double bound, /* feasibility parameter */ + double *theta, /* current value */ + int maxiter, /* how many iterations */ + int row, /* which coordinate to update: 0-based */ + double kkt_tol, /* precision for checking KKT conditions */ + double objective_tol) /* precision for checking relative decrease in objective value */ { int iter = 0; int icoord = 0; int iactive = 0; int *active_ptr; - double old_value, new_value, tol=1.e-5; + double old_value, new_value; int check_objective = 1; @@ -272,7 +280,8 @@ int find_one_row_(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ gradient_ptr, nrow, row, - bound) == 1) { + bound, + kkt_tol) == 1) { break; } @@ -299,7 +308,8 @@ int find_one_row_(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ gradient_ptr, nrow, row, - bound) == 1) { + bound, + kkt_tol) == 1) { break; } @@ -312,7 +322,7 @@ int find_one_row_(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ bound, theta); - if (((old_value - new_value) < tol * fabs(new_value)) && (iter > 0)) { + if (((old_value - new_value) < objective_tol * fabs(new_value)) && (iter > 0)) { break; } diff --git a/selectiveInference/src/debias.h b/selectiveInference/src/debias.h index 5e9d621..5510adf 100644 --- a/selectiveInference/src/debias.h +++ b/selectiveInference/src/debias.h @@ -12,15 +12,19 @@ int solve_qp(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ int nrow, /* How many rows in Sigma */ double bound, /* feasibility parameter */ double *theta, /* current value */ - int maxiter); + int maxiter, /* how many iterations */ + double kkt_tol, /* precision for checking KKT conditions */ + double objective_tol); /* precision for checking relative decrease in objective value */ + int check_KKT_qp(double *theta, /* current theta */ double *gradient_ptr, /* Current gradient of quadratic loss */ int nrow, /* how many rows in Sigma */ - double bound); /* Lagrange multipler for \ell_1 */ + double bound, /* Lagrange multipler for \ell_1 */ + double tol); /* precision for checking KKT conditions */ int find_one_row_(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ - double *Sigma_ptr_ptr, /* Diagonal entry of covariance matrix */ + double *Sigma_diag_ptr, /* Diagonal entry of covariance matrix */ double *gradient_ptr, /* Current gradient of quadratic loss */ int *ever_active_ptr, /* Ever active set: 0-based */ int *nactive_ptr, /* Size of ever active set */ @@ -28,14 +32,16 @@ int find_one_row_(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ double bound, /* feasibility parameter */ double *theta, /* current value */ int maxiter, /* how many iterations */ - int row); /* which coordinate to update: 0-based */ + int row, /* which coordinate to update: 0-based */ + double kkt_tol, /* precision for checking KKT conditions */ + double objective_tol); /* precision for checking relative decrease in objective value */ int check_KKT(double *theta, /* current theta */ double *gradient_ptr, /* Current gradient of quadratic loss */ int nrow, /* how many rows in Sigma */ int row, /* which row: 0-based */ - double bound); /* Lagrange multipler for \ell_1 */ - + double bound, /* Lagrange multipler for \ell_1 */ + double kkt_tol); /* precision for checking KKT conditions */ #ifdef __cplusplus } /* extern "C" */ diff --git a/selectiveInference/src/quadratic_program.c b/selectiveInference/src/quadratic_program.c index 50d6514..0cefac4 100644 --- a/selectiveInference/src/quadratic_program.c +++ b/selectiveInference/src/quadratic_program.c @@ -88,15 +88,15 @@ int update_ever_active_qp(int coord, return(0); } -int check_KKT_qp(double *theta, /* current theta */ +int check_KKT_qp(double *theta, /* current theta */ double *gradient_ptr, /* Sigma times theta */ - int nrow, /* how many rows in Sigma */ - double bound) /* Lagrange multipler for \ell_1 */ + int nrow, /* how many rows in Sigma */ + double bound, /* Lagrange multipler for \ell_1 */ + double tol) /* precision for checking KKT conditions */ { // First check inactive int irow; - double tol = 1.e-6; double *theta_ptr, *gradient_ptr_tmp; double gradient; @@ -216,7 +216,9 @@ int solve_qp(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ int nrow, /* How many rows in Sigma */ double bound, /* feasibility parameter */ double *theta, /* current value */ - int maxiter) + int maxiter, /* max number of iterations */ + double kkt_tol, /* precision for checking KKT conditions */ + double objective_tol) /* precision for checking relative decrease in objective value */ { int iter = 0; @@ -227,7 +229,6 @@ int solve_qp(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ int check_objective = 1; double old_value, new_value; - double tol=1.e-8; if (check_objective) { @@ -268,7 +269,8 @@ int solve_qp(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ if (check_KKT_qp(theta, gradient_ptr, nrow, - bound) == 1) { + bound, + kkt_tol) == 1) { break; } @@ -294,7 +296,8 @@ int solve_qp(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ if (check_KKT_qp(theta, gradient_ptr, nrow, - bound) == 1) { + bound, + kkt_tol) == 1) { break; } @@ -307,7 +310,7 @@ int solve_qp(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ bound, theta); - if (((old_value - new_value) < tol * fabs(new_value)) && (iter > 0)) { + if ((fabs(old_value - new_value) < objective_tol * fabs(new_value)) && (iter > 0)) { break; } old_value = new_value; From 8c956f84949acc42e65af548bd1c6b18ca31ddac Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Sun, 20 Aug 2017 15:46:37 -0700 Subject: [PATCH 229/493] making a choice for solver --- selectiveInference/R/funs.fixed.R | 38 +++++++++++++++---------------- selectiveInference/src/debias.c | 2 -- 2 files changed, 18 insertions(+), 22 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index c8f5352..2ddc3d5 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -26,8 +26,6 @@ sigma=NULL, alpha=0.1, else{ - - checkargs.xy(x,y) if (missing(beta) || is.null(beta)) stop("Must supply the solution beta") if (missing(lambda) || is.null(lambda)) stop("Must supply the tuning parameter value lambda") @@ -338,7 +336,8 @@ InverseLinfty <- function(sigma, n, e, resol=1.2, mu=NULL, maxiter=50, threshold return(M) } -InverseLinftyOneRow <- function (Sigma, i, mu, maxiter=50, soln_result=NULL, kkt_tol=1.e-6, objective_tol=1.e-6) { +InverseLinftyOneRow <- function (Sigma, i, mu, maxiter=50, soln_result=NULL, kkt_tol=1.e-6, objective_tol=1.e-6, + use_QP=TRUE) { # If soln_result is not Null, it is used as a warm start. # It should be a list @@ -352,31 +351,30 @@ InverseLinftyOneRow <- function (Sigma, i, mu, maxiter=50, soln_result=NULL, kkt ever_active[1] = i-1 # 0-based ever_active = as.integer(ever_active) nactive = as.integer(1) - linear_func = rep(0, p) - linear_func[i] = -1 - linear_func = as.numeric(linear_func) - gradient = 1. * linear_func + if (use_QP) { + linear_func = rep(0, p) + linear_func[i] = -1 + linear_func = as.numeric(linear_func) + gradient = 1. * linear_func + } else { + gradient = rep(0, p) + } } else { soln = soln_result$soln gradient = soln_result$gradient ever_active = as.integer(soln_result$ever_active) nactive = as.integer(soln_result$nactive) - linear_func = soln_result$linear_func + if (use_QP) { + linear_func = soln_result$linear_func + } } - soln1 = rep(0, p) - gradient1 = rep(0, p) - ever_active1 = rep(0, p) - ever_active1[1] = i-1 - nactive1 = as.integer(1) - result1 = find_one_row_debiasingM(Sigma, i-1, mu, maxiter, soln1, gradient1, ever_active1, nactive1, kkt_tol, objective_tol) # C function uses 0-based indexing - result = solve_QP(Sigma, mu, maxiter, soln, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol) - print("close?") - print(c(sqrt(sum((result1$soln-result$soln)^2)/sum(result$soln^2)), sum(result$soln^2))) - print(c(result1$iter, result$iter, sum(result1$soln^2))) - - #result = find_one_row_debiasingM(Sigma, i-1, mu, maxiter, soln, gradient, ever_active, nactive, kkt_tol, objective_tol) # C function uses 0-based indexing + if (use_QP) { + result = solve_QP(Sigma, mu, maxiter, soln, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol) + } else { + result = find_one_row_debiasingM(Sigma, i-1, mu, maxiter, soln, gradient, ever_active, nactive, kkt_tol, objective_tol) # C function uses 0-based indexing + } # Check feasibility diff --git a/selectiveInference/src/debias.c b/selectiveInference/src/debias.c index 4d36056..df9d0ea 100644 --- a/selectiveInference/src/debias.c +++ b/selectiveInference/src/debias.c @@ -1,4 +1,3 @@ -#include #include // for fabs // Find an approximate row of \hat{Sigma}^{-1} @@ -68,7 +67,6 @@ int update_ever_active(int coord, for (iactive=0; iactive Date: Sun, 20 Aug 2017 16:05:30 -0700 Subject: [PATCH 230/493] RF: ever_active is now 1-based indices to be more R like --- selectiveInference/R/funs.fixed.R | 4 +-- selectiveInference/src/debias.c | 42 +++++++++++----------- selectiveInference/src/quadratic_program.c | 18 +++++----- 3 files changed, 33 insertions(+), 31 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 2ddc3d5..ae9fdc6 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -348,7 +348,7 @@ InverseLinftyOneRow <- function (Sigma, i, mu, maxiter=50, soln_result=NULL, kkt if (is.null(soln_result)) { soln = rep(0, p) ever_active = rep(0, p) - ever_active[1] = i-1 # 0-based + ever_active[1] = i # 1-based ever_active = as.integer(ever_active) nactive = as.integer(1) if (use_QP) { @@ -373,7 +373,7 @@ InverseLinftyOneRow <- function (Sigma, i, mu, maxiter=50, soln_result=NULL, kkt if (use_QP) { result = solve_QP(Sigma, mu, maxiter, soln, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol) } else { - result = find_one_row_debiasingM(Sigma, i-1, mu, maxiter, soln, gradient, ever_active, nactive, kkt_tol, objective_tol) # C function uses 0-based indexing + result = find_one_row_debiasingM(Sigma, i, mu, maxiter, soln, gradient, ever_active, nactive, kkt_tol, objective_tol) # C function uses 1-based indexing for active set } # Check feasibility diff --git a/selectiveInference/src/debias.c b/selectiveInference/src/debias.c index df9d0ea..3e3efb5 100644 --- a/selectiveInference/src/debias.c +++ b/selectiveInference/src/debias.c @@ -11,12 +11,12 @@ // Update one coordinate double objective(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ - int *ever_active_ptr, /* Ever active set: 0-based */ - int *nactive_ptr, /* Size of ever active set */ - int nrow, /* how many rows in Sigma */ - int row, /* which row: 0-based */ - double bound, /* Lagrange multipler for \ell_1 */ - double *theta) /* current value */ + int *ever_active_ptr, /* Ever active set: 1-based */ + int *nactive_ptr, /* Size of ever active set */ + int nrow, /* how many rows in Sigma */ + int row, /* which row: 1-based */ + double bound, /* Lagrange multipler for \ell_1 */ + double *theta) /* current value */ { int irow, icol; double value = 0; @@ -32,13 +32,13 @@ double objective(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ for (irow=0; irow Date: Sun, 20 Aug 2017 16:39:12 -0700 Subject: [PATCH 231/493] added an argument to limit the number of times the linesearch runs --- selectiveInference/R/funs.fixed.R | 15 +++++++-------- selectiveInference/man/fixedLassoInf.Rd | 10 +++++++--- selectiveInference/src/Rcpp-debias.cpp | 3 +++ 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index ae9fdc6..0ca60a3 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -3,9 +3,9 @@ # min 1/2 || y - \beta_0 - X \beta ||_2^2 + \lambda || \beta ||_1 fixedLassoInf <- function(x, y, beta, lambda, family=c("gaussian","binomial","cox"),intercept=TRUE, add.targets=NULL, status=NULL, -sigma=NULL, alpha=0.1, - type=c("partial","full"), tol.beta=1e-5, tol.kkt=0.1, - gridrange=c(-100,100), bits=NULL, verbose=FALSE) { + sigma=NULL, alpha=0.1, + type=c("partial","full"), tol.beta=1e-5, tol.kkt=0.1, + gridrange=c(-100,100), bits=NULL, verbose=FALSE, linesearch.try=5) { family = match.arg(family) this.call = match.call() @@ -158,7 +158,7 @@ sigma=NULL, alpha=0.1, # Approximate inverse covariance matrix for when (n < p) from lasso_Inference.R - htheta <- InverseLinfty(hsigma, n, length(S), verbose=FALSE) + htheta <- InverseLinfty(hsigma, n, length(S), verbose=FALSE, max.try=linesearch.try) # htheta <- InverseLinfty(hsigma, n, verbose=FALSE) FS = rbind(diag(length(S)),matrix(0,pp-length(S),length(S))) @@ -268,7 +268,7 @@ fixedLasso.poly= ### Functions borrowed and slightly modified from lasso_inference.R ## Approximates inverse covariance matrix theta -InverseLinfty <- function(sigma, n, e, resol=1.2, mu=NULL, maxiter=50, threshold=1e-2, verbose = TRUE) { +InverseLinfty <- function(sigma, n, e, resol=1.2, mu=NULL, maxiter=50, threshold=1e-2, verbose = TRUE, max.try=10) { isgiven <- 1; if (is.null(mu)){ isgiven <- 0; @@ -293,13 +293,12 @@ InverseLinfty <- function(sigma, n, e, resol=1.2, mu=NULL, maxiter=50, threshold output = NULL - while ((mu.stop != 1)&&(try.no<10)){ + while ((mu.stop != 1) && (try.no // need to include the main Rcpp header file #include // where find_one_row_void is defined +// Below, the gradient should be equal to Sigma * theta + linear_func!! +// No check is done on this. + // [[Rcpp::export]] Rcpp::List solve_QP(Rcpp::NumericMatrix Sigma, double bound, From acbf82cf120bdfbf2c55c2ff3898425f44d234c6 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Sun, 20 Aug 2017 16:43:30 -0700 Subject: [PATCH 232/493] making it 10 tries as before --- selectiveInference/R/funs.fixed.R | 2 +- selectiveInference/man/fixedLassoInf.Rd | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 0ca60a3..b03fd4d 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -5,7 +5,7 @@ fixedLassoInf <- function(x, y, beta, lambda, family=c("gaussian","binomial","cox"),intercept=TRUE, add.targets=NULL, status=NULL, sigma=NULL, alpha=0.1, type=c("partial","full"), tol.beta=1e-5, tol.kkt=0.1, - gridrange=c(-100,100), bits=NULL, verbose=FALSE, linesearch.try=5) { + gridrange=c(-100,100), bits=NULL, verbose=FALSE, linesearch.try=10) { family = match.arg(family) this.call = match.call() diff --git a/selectiveInference/man/fixedLassoInf.Rd b/selectiveInference/man/fixedLassoInf.Rd index 2f8517d..bd740f8 100644 --- a/selectiveInference/man/fixedLassoInf.Rd +++ b/selectiveInference/man/fixedLassoInf.Rd @@ -12,7 +12,7 @@ fixed value of the tuning parameter lambda fixedLassoInf(x, y, beta, lambda, family = c("gaussian", "binomial", "cox"),intercept=TRUE, add.targets=NULL, status=NULL, sigma=NULL, alpha=0.1, type=c("partial","full"), tol.beta=1e-5, tol.kkt=0.1, - gridrange=c(-100,100), bits=NULL, verbose=FALSE, linesearch.try=5) + gridrange=c(-100,100), bits=NULL, verbose=FALSE, linesearch.try=10) } \arguments{ \item{x}{ From 7fa51202acc293c10b2b90da726212035a02b6f5 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Mon, 28 Aug 2017 21:40:52 -0700 Subject: [PATCH 233/493] NF: stop early if active set gets too big --- selectiveInference/R/funs.fixed.R | 29 ++++++++++++++++------ selectiveInference/src/Rcpp-debias.cpp | 22 +++++++++++----- selectiveInference/src/debias.c | 11 +++++++- selectiveInference/src/debias.h | 7 +++--- selectiveInference/src/quadratic_program.c | 11 +++++++- 5 files changed, 61 insertions(+), 19 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 455304a..082a1f6 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -271,7 +271,9 @@ fixedLasso.poly= ## Approximates inverse covariance matrix theta InverseLinfty <- function(sigma, n, e, resol=1.2, mu=NULL, maxiter=50, threshold=1e-2, verbose = TRUE, max.try=10) { - isgiven <- 1; + max_active = max(50, 2 * sqrt(n)) + + isgiven <- 1; if (is.null(mu)){ isgiven <- 0; } @@ -295,17 +297,19 @@ InverseLinfty <- function(sigma, n, e, resol=1.2, mu=NULL, maxiter=50, threshold output = NULL + last.beta = NULL + while ((mu.stop != 1) && (try.no= max_active); + return(Rcpp::List::create(Rcpp::Named("soln") = theta, Rcpp::Named("gradient") = gradient, Rcpp::Named("linear_func") = linear_func, Rcpp::Named("iter") = iter, Rcpp::Named("kkt_check") = kkt_check, Rcpp::Named("ever_active") = ever_active, - Rcpp::Named("nactive") = nactive)); + Rcpp::Named("nactive") = nactive, + Rcpp::Named("max_active_check") = max_active_check)); } @@ -74,7 +79,8 @@ Rcpp::List find_one_row_debiasingM(Rcpp::NumericMatrix Sigma, Rcpp::IntegerVector ever_active, Rcpp::IntegerVector nactive, double kkt_tol, - double objective_tol + double objective_tol, + int max_active ) { int nrow = Sigma.nrow(); // number of features @@ -104,7 +110,8 @@ Rcpp::List find_one_row_debiasingM(Rcpp::NumericMatrix Sigma, maxiter, row, kkt_tol, - objective_tol); + objective_tol, + max_active); // Check whether feasible @@ -115,11 +122,14 @@ Rcpp::List find_one_row_debiasingM(Rcpp::NumericMatrix Sigma, bound, kkt_tol); + int max_active_check = (*(nactive.begin()) >= max_active); + return(Rcpp::List::create(Rcpp::Named("soln") = theta, Rcpp::Named("gradient") = gradient, Rcpp::Named("iter") = iter, Rcpp::Named("kkt_check") = kkt_check, Rcpp::Named("ever_active") = ever_active, - Rcpp::Named("nactive") = nactive)); + Rcpp::Named("nactive") = nactive, + Rcpp::Named("max_active_check") = max_active_check)); } diff --git a/selectiveInference/src/debias.c b/selectiveInference/src/debias.c index 3e3efb5..2881d17 100644 --- a/selectiveInference/src/debias.c +++ b/selectiveInference/src/debias.c @@ -228,7 +228,8 @@ int find_one_row_(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ int maxiter, /* how many iterations */ int row, /* which coordinate to solve: 1-based */ double kkt_tol, /* precision for checking KKT conditions */ - double objective_tol) /* precision for checking relative decrease in objective value */ + double objective_tol, /* precision for checking relative decrease in objective value */ + int max_active) /* Upper limit for size of active set -- otherwise break */ { int iter = 0; @@ -311,6 +312,14 @@ int find_one_row_(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ break; } + // Check size of active set + + if (*nactive_ptr >= max_active) { + break; + } + + // Check relative decrease of objective + if (check_objective) { new_value = objective(Sigma_ptr, ever_active_ptr, diff --git a/selectiveInference/src/debias.h b/selectiveInference/src/debias.h index 5510adf..f76eb69 100644 --- a/selectiveInference/src/debias.h +++ b/selectiveInference/src/debias.h @@ -14,8 +14,8 @@ int solve_qp(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ double *theta, /* current value */ int maxiter, /* how many iterations */ double kkt_tol, /* precision for checking KKT conditions */ - double objective_tol); /* precision for checking relative decrease in objective value */ - + double objective_tol, /* precision for checking relative decrease in objective value */ + int max_active); /* Upper limit for size of active set -- otherwise break */ int check_KKT_qp(double *theta, /* current theta */ double *gradient_ptr, /* Current gradient of quadratic loss */ @@ -34,7 +34,8 @@ int find_one_row_(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ int maxiter, /* how many iterations */ int row, /* which coordinate to update: 0-based */ double kkt_tol, /* precision for checking KKT conditions */ - double objective_tol); /* precision for checking relative decrease in objective value */ + double objective_tol, /* precision for checking relative decrease in objective value */ + int max_active); /* Upper limit for size of active set -- otherwise break */ int check_KKT(double *theta, /* current theta */ double *gradient_ptr, /* Current gradient of quadratic loss */ diff --git a/selectiveInference/src/quadratic_program.c b/selectiveInference/src/quadratic_program.c index ba14d02..4afbd32 100644 --- a/selectiveInference/src/quadratic_program.c +++ b/selectiveInference/src/quadratic_program.c @@ -220,7 +220,8 @@ int solve_qp(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ double *theta, /* current value */ int maxiter, /* max number of iterations */ double kkt_tol, /* precision for checking KKT conditions */ - double objective_tol) /* precision for checking relative decrease in objective value */ + double objective_tol, /* precision for checking relative decrease in objective value */ + int max_active) /* Upper limit for size of active set -- otherwise break */ { int iter = 0; @@ -303,6 +304,14 @@ int solve_qp(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ break; } + // Check size of active set + + if (*nactive_ptr >= max_active) { + break; + } + + // Check relative decrease of objective + if (check_objective) { new_value = objective_qp(Sigma_ptr, linear_func_ptr, From 0c1f9ea5283d2d2d75b86eaf5f6258fdf19c7ce2 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Tue, 29 Aug 2017 17:55:44 -0700 Subject: [PATCH 234/493] renaming function, but all linesearch logic into a row-wise function --- selectiveInference/R/funs.fixed.R | 235 ++++++++++++++++-------------- 1 file changed, 129 insertions(+), 106 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 082a1f6..33f2cc3 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -158,10 +158,8 @@ fixedLassoInf <- function(x, y, beta, lambda, family=c("gaussian","binomial","co # Approximate inverse covariance matrix for when (n < p) from lasso_Inference.R - htheta <- InverseLinfty(hsigma, n, length(S), verbose=FALSE, max.try=linesearch.try) + htheta = debiasing_matrix(hsigma, n, 1:length(S), verbose=FALSE, max_try=linesearch.try, warn_kkt=TRUE) - # htheta <- InverseLinfty(hsigma, n, verbose=FALSE) - FS = rbind(diag(length(S)),matrix(0,pp-length(S),length(S))) GS = cbind(diag(length(S)),matrix(0,length(S),pp-length(S))) ithetasigma = (GS-(htheta%*%hsigma)) @@ -269,137 +267,162 @@ fixedLasso.poly= ### Functions borrowed and slightly modified from lasso_inference.R ## Approximates inverse covariance matrix theta -InverseLinfty <- function(sigma, n, e, resol=1.2, mu=NULL, maxiter=50, threshold=1e-2, verbose = TRUE, max.try=10) { - max_active = max(50, 2 * sqrt(n)) +debiasing_matrix = function(Sigma, + nsample, + rows, + verbose=FALSE, + mu=NULL, # starting value of mu + linesearch=TRUE, # do a linesearch? + resol=1.2, # multiplicative factor for linesearch + max_active=NULL, # how big can active set get? + max_try=10, # how many steps in linesearch? + warn_kkt=FALSE, # warn if KKT does not seem to be satisfied? + max_iter=100, # how many iterations for each optimization problem + kkt_tol=1.e-4, # tolerance for the KKT conditions + objective_tol=1.e-4 # tolerance for relative decrease in objective + ) { + + + if (is.null(max_active)) { + max_active = max(50, 0.3 * nsample) + } + + p = nrow(Sigma); + M = matrix(0, length(rows), p); - isgiven <- 1; - if (is.null(mu)){ - isgiven <- 0; + if (is.null(mu)) { + mu = (1/sqrt(nsample)) * qnorm(1-(0.1/(p^2))) } - - p <- nrow(sigma); - M <- matrix(0, e, p); + xperc = 0; xp = round(p/10); - for (i in 1:e) { - if ((i %% xp)==0){ + idx = 1; + for (row in rows) { + + if ((idx %% xp)==0){ xperc = xperc+10; if (verbose) { print(paste(xperc,"% done",sep="")); } } - if (isgiven==0){ - mu <- (1/sqrt(n)) * qnorm(1-(0.1/(p^2))); - } - mu.stop <- 0; - try.no <- 1; - incr <- 0; - output = NULL + output = debiasing_row(Sigma, + row, + mu, + linesearch=linesearch, + resol=resol, + max_active=max_active, + max_try=max_try, + warn_kkt=FALSE, + max_iter=max_iter, + kkt_tol=kkt_tol, + objective_tol=objective_tol) + + if (warn_kkt && (!output$kkt_check)) { + warning("Solution for row of M does not seem to be feasible") + } + + M[idx,] = output$soln; + idx = idx + 1; + } + return(M) +} - last.beta = NULL +debiasing_row = function (Sigma, + row, + mu, + linesearch=TRUE, # do a linesearch? + resol=1.2, # multiplicative factor for linesearch + max_active=NULL, # how big can active set get? + max_try=10, # how many steps in linesearch? + warn_kkt=FALSE, # warn if KKT does not seem to be satisfied? + max_iter=100, # how many iterations for each optimization problem + kkt_tol=1.e-4, # tolerance for the KKT conditions + objective_tol=1.e-4 # tolerance for relative decrease in objective + ) { - while ((mu.stop != 1) && (try.no 1){ - if ((incr == 1)&&(iter == (maxiter+1))){ - mu <- mu*resol; - } - if ((incr == 1)&&(iter < (maxiter+1))){ - mu.stop <- 1; - } - if ((incr == 0)&&(iter < (maxiter+1))){ - mu <- mu/resol; - } - if ((incr == 0) && (iter == (maxiter+1))){ - mu <- mu*resol; - beta <- last.beta; - mu.stop <- 1; - } - } - if (output$max_active_check) { - mu.stop <- 1; - beta <- last.beta; - } - } - try.no <- try.no+1 - last.beta <- beta - } - M[i,] <- beta; - } - return(M) -} + soln = rep(0, p) + ever_active = rep(0, p) + ever_active[1] = row # 1-based + ever_active = as.integer(ever_active) + nactive = as.integer(1) -InverseLinftyOneRow <- function (Sigma, i, mu, maxiter=50, soln_result=NULL, kkt_tol=1.e-6, objective_tol=1.e-6, - use_QP=TRUE, max_active=NULL) { + linear_func = rep(0, p) + linear_func[row] = -1 + linear_func = as.numeric(linear_func) + gradient = 1. * linear_func - # If soln_result is not Null, it is used as a warm start. - # It should be a list - # with entries "soln", "gradient", "ever_active", "nactive" + counter_idx = 1; + incr = 0; - p = nrow(Sigma) + last_output = NULL - if (is.null(max_active)) { - max_active = 50 # arbitrary? - } + while (counter_idx < max_try) { - if (is.null(soln_result)) { - soln = rep(0, p) - ever_active = rep(0, p) - ever_active[1] = i # 1-based - ever_active = as.integer(ever_active) - nactive = as.integer(1) - if (use_QP) { - linear_func = rep(0, p) - linear_func[i] = -1 - linear_func = as.numeric(linear_func) - gradient = 1. * linear_func - } else { - gradient = rep(0, p) - } - } - else { - soln = soln_result$soln - gradient = soln_result$gradient - ever_active = as.integer(soln_result$ever_active) - nactive = as.integer(soln_result$nactive) - if (use_QP) { - linear_func = soln_result$linear_func - } - } + result = solve_QP(Sigma, mu, max_iter, soln, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active) - if (use_QP) { - result = solve_QP(Sigma, mu, maxiter, soln, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active) - } else { - result = find_one_row_debiasingM(Sigma, i, mu, maxiter, soln, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active) # C function uses 1-based indexing for active set - } + iter = result$iter + + # Logic for whether we should continue the line search + + if (!linesearch) { + break + } + + if (counter_idx == 1){ + if (iter == (max_iter+1)){ + incr = 1; # was the original problem feasible? 1 if not + } else { + incr = 0; # original problem was feasible + } + } + + if (incr == 1) { # trying to find a feasible point + if ((iter < (max_iter+1)) && (counter_idx > 1)) { + break; # we've found a feasible point and solved the problem + } + mu = mu * resol; + } else { # trying to drop the bound parameter further + if ((iter == (max_iter + 1)) && (counter_idx > 1)) { + result = last_output; # problem seems infeasible because we didn't solve it + break; # so we revert to previously found solution + } + mu = mu / resol; + } + + # If the active set has grown to a certain size + # then we stop, presuming problem has become + # infeasible. + + # We revert to the previous solution + + if (result$max_active_check) { + result = last_output; + break; + } + + counter_idx = counter_idx + 1 + last_output = list(soln=result$soln, + kkt_check=result$kkt_check) + } # Check feasibility - if (!result$kkt_check) { + if (warn_kkt && (!result$kkt_check)) { warning("Solution for row of M does not seem to be feasible") } - return(result) + return(list(soln=result$soln, + kkt_check=result$kkt_check)) } From e2924290bc5a1a595fce93f1722f18d27f7dccc8 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Tue, 29 Aug 2017 17:57:10 -0700 Subject: [PATCH 235/493] camel case function name (ew... but consistent) --- selectiveInference/R/funs.fixed.R | 50 +++++++++++++++---------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 33f2cc3..3d28109 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -158,7 +158,7 @@ fixedLassoInf <- function(x, y, beta, lambda, family=c("gaussian","binomial","co # Approximate inverse covariance matrix for when (n < p) from lasso_Inference.R - htheta = debiasing_matrix(hsigma, n, 1:length(S), verbose=FALSE, max_try=linesearch.try, warn_kkt=TRUE) + htheta = debiasingMatrix(hsigma, n, 1:length(S), verbose=FALSE, max_try=linesearch.try, warn_kkt=TRUE) FS = rbind(diag(length(S)),matrix(0,pp-length(S),length(S))) GS = cbind(diag(length(S)),matrix(0,length(S),pp-length(S))) @@ -268,7 +268,7 @@ fixedLasso.poly= ## Approximates inverse covariance matrix theta -debiasing_matrix = function(Sigma, +debiasingMatrix = function(Sigma, nsample, rows, verbose=FALSE, @@ -306,17 +306,17 @@ debiasing_matrix = function(Sigma, print(paste(xperc,"% done",sep="")); } } - output = debiasing_row(Sigma, - row, - mu, - linesearch=linesearch, - resol=resol, - max_active=max_active, - max_try=max_try, - warn_kkt=FALSE, - max_iter=max_iter, - kkt_tol=kkt_tol, - objective_tol=objective_tol) + output = debiasingRow(Sigma, + row, + mu, + linesearch=linesearch, + resol=resol, + max_active=max_active, + max_try=max_try, + warn_kkt=FALSE, + max_iter=max_iter, + kkt_tol=kkt_tol, + objective_tol=objective_tol) if (warn_kkt && (!output$kkt_check)) { warning("Solution for row of M does not seem to be feasible") @@ -328,18 +328,18 @@ debiasing_matrix = function(Sigma, return(M) } -debiasing_row = function (Sigma, - row, - mu, - linesearch=TRUE, # do a linesearch? - resol=1.2, # multiplicative factor for linesearch - max_active=NULL, # how big can active set get? - max_try=10, # how many steps in linesearch? - warn_kkt=FALSE, # warn if KKT does not seem to be satisfied? - max_iter=100, # how many iterations for each optimization problem - kkt_tol=1.e-4, # tolerance for the KKT conditions - objective_tol=1.e-4 # tolerance for relative decrease in objective - ) { +debiasingRow = function (Sigma, + row, + mu, + linesearch=TRUE, # do a linesearch? + resol=1.2, # multiplicative factor for linesearch + max_active=NULL, # how big can active set get? + max_try=10, # how many steps in linesearch? + warn_kkt=FALSE, # warn if KKT does not seem to be satisfied? + max_iter=100, # how many iterations for each optimization problem + kkt_tol=1.e-4, # tolerance for the KKT conditions + objective_tol=1.e-4 # tolerance for relative decrease in objective + ) { p = nrow(Sigma) From ec07564ccba45c7959074ea905422e3c744b86d4 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Tue, 29 Aug 2017 23:52:54 -0700 Subject: [PATCH 236/493] new export debiasingMatrix --- selectiveInference/NAMESPACE | 5 +- selectiveInference/R/funs.fixed.R | 57 +++++++----- selectiveInference/man/debiasingMatrix.Rd | 106 ++++++++++++++++++++++ 3 files changed, 144 insertions(+), 24 deletions(-) create mode 100644 selectiveInference/man/debiasingMatrix.Rd diff --git a/selectiveInference/NAMESPACE b/selectiveInference/NAMESPACE index ab2a111..d72d56a 100644 --- a/selectiveInference/NAMESPACE +++ b/selectiveInference/NAMESPACE @@ -6,8 +6,6 @@ export(lar,fs, print.larInf,print.fsInf, plot.lar,plot.fs, fixedLassoInf,print.fixedLassoInf, -# fixedLogitLassoInf,print.fixedLogitLassoInf, -# fixedCoxLassoInf,print.fixedCoxLassoInf, forwardStop, estimateSigma, manyMeans,print.manyMeans, @@ -15,7 +13,8 @@ export(lar,fs, scaleGroups,factorDesign, TG.pvalue, TG.limits, - TG.interval + TG.interval, + debiasingMatrix ) S3method("coef", "lar") diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 3d28109..0fca05f 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -269,19 +269,19 @@ fixedLasso.poly= ## Approximates inverse covariance matrix theta debiasingMatrix = function(Sigma, - nsample, - rows, - verbose=FALSE, - mu=NULL, # starting value of mu - linesearch=TRUE, # do a linesearch? - resol=1.2, # multiplicative factor for linesearch - max_active=NULL, # how big can active set get? - max_try=10, # how many steps in linesearch? - warn_kkt=FALSE, # warn if KKT does not seem to be satisfied? - max_iter=100, # how many iterations for each optimization problem - kkt_tol=1.e-4, # tolerance for the KKT conditions - objective_tol=1.e-4 # tolerance for relative decrease in objective - ) { + nsample, + rows, + verbose=FALSE, + mu=NULL, # starting value of mu + linesearch=TRUE, # do a linesearch? + scaling_factor=1.5, # multiplicative factor for linesearch + max_active=NULL, # how big can active set get? + max_try=10, # how many steps in linesearch? + warn_kkt=FALSE, # warn if KKT does not seem to be satisfied? + max_iter=100, # how many iterations for each optimization problem + kkt_tol=1.e-4, # tolerance for the KKT conditions + objective_tol=1.e-8 # tolerance for relative decrease in objective + ) { if (is.null(max_active)) { @@ -310,7 +310,7 @@ debiasingMatrix = function(Sigma, row, mu, linesearch=linesearch, - resol=resol, + scaling_factor=scaling_factor, max_active=max_active, max_try=max_try, warn_kkt=FALSE, @@ -322,7 +322,12 @@ debiasingMatrix = function(Sigma, warning("Solution for row of M does not seem to be feasible") } - M[idx,] = output$soln; + if (!is.null(output$soln)) { + M[idx,] = output$soln; + } else { + stop(paste("Unable to approximate inverse row ", row)); + } + idx = idx + 1; } return(M) @@ -332,13 +337,13 @@ debiasingRow = function (Sigma, row, mu, linesearch=TRUE, # do a linesearch? - resol=1.2, # multiplicative factor for linesearch + scaling_factor=1.2, # multiplicative factor for linesearch max_active=NULL, # how big can active set get? max_try=10, # how many steps in linesearch? warn_kkt=FALSE, # warn if KKT does not seem to be satisfied? - max_iter=100, # how many iterations for each optimization problem + max_iter=100, # how many iterations for each optimization problem kkt_tol=1.e-4, # tolerance for the KKT conditions - objective_tol=1.e-4 # tolerance for relative decrease in objective + objective_tol=1.e-8 # tolerance for relative decrease in objective ) { p = nrow(Sigma) @@ -368,7 +373,17 @@ debiasingRow = function (Sigma, while (counter_idx < max_try) { - result = solve_QP(Sigma, mu, max_iter, soln, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active) + result = solve_QP(Sigma, + mu, + max_iter, + soln, + linear_func, + gradient, + ever_active, + nactive, + kkt_tol, + objective_tol, + max_active) iter = result$iter @@ -390,13 +405,13 @@ debiasingRow = function (Sigma, if ((iter < (max_iter+1)) && (counter_idx > 1)) { break; # we've found a feasible point and solved the problem } - mu = mu * resol; + mu = mu * scaling_factor; } else { # trying to drop the bound parameter further if ((iter == (max_iter + 1)) && (counter_idx > 1)) { result = last_output; # problem seems infeasible because we didn't solve it break; # so we revert to previously found solution } - mu = mu / resol; + mu = mu / scaling_factor; } # If the active set has grown to a certain size diff --git a/selectiveInference/man/debiasingMatrix.Rd b/selectiveInference/man/debiasingMatrix.Rd new file mode 100644 index 0000000..973c0b4 --- /dev/null +++ b/selectiveInference/man/debiasingMatrix.Rd @@ -0,0 +1,106 @@ +\name{debiasingMatrix} +\alias{debiasingMatrix} +\title{ +Find an approximate inverse of a non-negative definite matrix. +} +\description{ +Find some rows of an approximate inverse of a non-negative definite +symmetric matrix by solving optimization problem described +in Javanmard and Montanari (2013). +} +\usage{ +debiasingMatrix(Sigma, + nsample, + rows, + verbose=FALSE, + mu=NULL, + linesearch=TRUE, + scaling_factor=1.5, + max_active=NULL, + max_try=10, + warn_kkt=FALSE, + max_iter=100, + kkt_tol=1.e-4, + objective_tol=1.e-8) +} +\arguments{ +\item{Sigma}{ +A symmetric non-negative definite matrix, often a cross-covariance matrix. +} +\item{nsample}{ +Number of samples used in forming the cross-covariance matrix. +Used for default value of the bound parameter mu. +} +\item{rows}{ +Which rows of the approximate inverse to compute. +} +\item{verbose}{ +Print out progress as rows are being computed. +} +\item{mu}{ +Initial bound parameter for each row. Will be changed +if linesearch is TRUE. +} +\item{linesearch}{ +Run a line search to find as small as possible a bound parameter for each row? +} +\item{scaling_factor}{ +In the linesearch, the bound parameter is either multiplied or divided by this +factor at each step. +} +\item{max_active}{ +How large an active set to consider in solving the problem with coordinate descent. +Defaults to max(50, 0.3*nsample). +} +\item{max_try}{ +How many tries in the linesearch. +} +\item{warn_kkt}{ +Warn if the problem does not seem to be feasible after running the coordinate +descent algorithm. +} +\item{max_iter}{ +How many full iterations to run of the coordinate descent for each +value of the bound parameter. +} +\item{kkt_tol}{ +Tolerance value for assessing whether KKT conditions for solving the +dual problem and feasibility of the original problem. +} +\item{objective_tol}{ +Tolerance value for assessing convergence of the problem using relative +decrease of the objective. +} +} +\details{ +This function computes an approximate inverse +as described in Javanmard and Montanari (2013), specifically +display (4). The problem is solved by considering a dual +problem which has an objective similar to a LASSO problem and is solvable +by coordinate descent. For some values of mu the original +problem may not be feasible, in which case the dual problem has no solution. +An attempt to detect this is made by stopping when the active set grows quite +large, determined by max_active. +} + +\value{ +\item{M}{Rows of approximate inverse of Sigma.} +} + +\references{ +Adel Javanmard and Andrea Montanari (2013). +Confidence Intervals and Hypothesis Testing for High-Dimensional Regression. Arxiv: 1306.3171 +} +\author{Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid} + +\examples{ + +set.seed(10) +n = 50 +p = 100 +X = matrix(rnorm(n * p), n, p) +S = t(X) %*% X / n +M = debiasingMatrix(S, n, c(1,3,5)) + +} + \ No newline at end of file From 3c0ef8d50d185672c792c3be1fb307b48c394a1e Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Wed, 30 Aug 2017 00:00:16 -0700 Subject: [PATCH 237/493] minor edit --- selectiveInference/R/funs.fixed.R | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 0fca05f..083b3c6 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -264,9 +264,8 @@ fixedLasso.poly= ############################## -### Functions borrowed and slightly modified from lasso_inference.R - ## Approximates inverse covariance matrix theta +## using coordinate descent debiasingMatrix = function(Sigma, nsample, @@ -333,6 +332,8 @@ debiasingMatrix = function(Sigma, return(M) } +# Find one row of the debiasing matrix + debiasingRow = function (Sigma, row, mu, From d94d217a493e66620f84a04617a0150f94b5d038 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Wed, 30 Aug 2017 00:01:44 -0700 Subject: [PATCH 238/493] BF: latex percent --- selectiveInference/man/debiasingMatrix.Rd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selectiveInference/man/debiasingMatrix.Rd b/selectiveInference/man/debiasingMatrix.Rd index 973c0b4..28fc47b 100644 --- a/selectiveInference/man/debiasingMatrix.Rd +++ b/selectiveInference/man/debiasingMatrix.Rd @@ -99,7 +99,7 @@ set.seed(10) n = 50 p = 100 X = matrix(rnorm(n * p), n, p) -S = t(X) %*% X / n +S = t(X) \%*\% X / n M = debiasingMatrix(S, n, c(1,3,5)) } From 3e9d62dd4af0721f14b887697c6b4295e2887874 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Wed, 30 Aug 2017 00:05:23 -0700 Subject: [PATCH 239/493] a little more doc --- selectiveInference/man/debiasingMatrix.Rd | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/selectiveInference/man/debiasingMatrix.Rd b/selectiveInference/man/debiasingMatrix.Rd index 28fc47b..533a12c 100644 --- a/selectiveInference/man/debiasingMatrix.Rd +++ b/selectiveInference/man/debiasingMatrix.Rd @@ -6,7 +6,9 @@ Find an approximate inverse of a non-negative definite matrix. \description{ Find some rows of an approximate inverse of a non-negative definite symmetric matrix by solving optimization problem described -in Javanmard and Montanari (2013). +in Javanmard and Montanari (2013). Can be used for approximate +Newton step from some consistent estimator (such as the LASSO) +to find a debiased solution. } \usage{ debiasingMatrix(Sigma, From 3d8b2481a99831e24c65bee34fb6291486353531 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 31 Aug 2017 14:05:21 -0700 Subject: [PATCH 240/493] exporting function to construct polyhedral constraints of LASSO --- selectiveInference/NAMESPACE | 3 +- selectiveInference/R/funs.fixed.R | 64 +++++++++---------- selectiveInference/man/fixedLassoPoly.Rd | 80 ++++++++++++++++++++++++ 3 files changed, 111 insertions(+), 36 deletions(-) create mode 100644 selectiveInference/man/fixedLassoPoly.Rd diff --git a/selectiveInference/NAMESPACE b/selectiveInference/NAMESPACE index d72d56a..fe0237e 100644 --- a/selectiveInference/NAMESPACE +++ b/selectiveInference/NAMESPACE @@ -14,7 +14,8 @@ export(lar,fs, TG.pvalue, TG.limits, TG.interval, - debiasingMatrix + debiasingMatrix, + fixedLassoPoly ) S3method("coef", "lar") diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 083b3c6..c65731d 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -93,14 +93,14 @@ fixedLassoInf <- function(x, y, beta, lambda, family=c("gaussian","binomial","co "'thresh' parameter, for a more accurate convergence.")) # Get lasso polyhedral region, of form Gy >= u - if (type == 'full' & p > n) out = fixedLasso.poly(x,y,beta,lambda,vars,inactive=TRUE) - else out = fixedLasso.poly(x,y,beta,lambda,vars) - G = out$G - u = out$u + if (type == 'full' & p > n) out = fixedLassoPoly(x,y,lambda,beta,vars,inactive=TRUE) + else out = fixedLassoPoly(x,y,lambda,beta,vars) + A = out$A + b = out$b # Check polyhedral region tol.poly = 0.01 - if (min(G %*% y - u) < -tol.poly * sqrt(sum(y^2))) + if (max(A %*% y - b) > tol.poly * sqrt(sum(y^2))) stop(paste("Polyhedral constraints not satisfied; you must recompute beta", "more accurately. With glmnet, make sure to use exact=TRUE in coef(),", "and check whether the specified value of lambda is too small", @@ -191,7 +191,7 @@ fixedLassoInf <- function(x, y, beta, lambda, family=c("gaussian","binomial","co sign[j] = sign(sum(vj*y)) vj = sign[j] * vj - limits.info = TG.limits(y, -G, -u, vj, Sigma=diag(rep(sigma^2, n))) + limits.info = TG.limits(y, A, b, vj, Sigma=diag(rep(sigma^2, n))) a = TG.pvalue.base(limits.info, null_value=null_value[j], bits=bits) pv[j] = a$pv vlo[j] = a$vlo * mj # Unstandardize (mult by norm of vj) @@ -221,45 +221,39 @@ fixedLassoInf <- function(x, y, beta, lambda, family=c("gaussian","binomial","co ############################# -fixedLasso.poly= - function(x, y, beta, lambda, a, inactive = FALSE) { - xa = x[,a,drop=F] - xac = x[,!a,drop=F] - xai = pinv(crossprod(xa)) - xap = xai %*% t(xa) - za = sign(beta[a]) +fixedLassoPoly = + function(X, y, lambda, beta, active, inactive = FALSE) { + Xa = X[,active,drop=F] + Xac = X[,!active,drop=F] + Xai = pinv(crossprod(Xa)) + Xap = Xai %*% t(Xa) + + za = sign(beta[active]) if (length(za)>1) dz = diag(za) if (length(za)==1) dz = matrix(za,1,1) - if (inactive) { - P = diag(1,nrow(xa)) - xa %*% xap + if (inactive) { # should we include the inactive constraints? + R = diag(1,nrow(Xa)) - Xa %*% Xap # R is residual forming matrix of selected model - G = -rbind( - 1/lambda * t(xac) %*% P, - -1/lambda * t(xac) %*% P, - -dz %*% xap + A = rbind( + 1/lambda * t(Xac) %*% R, + -1/lambda * t(Xac) %*% R, + -dz %*% Xap ) lambda2=lambda - if(length(lambda)>1) lambda2=lambda[a] - u = -c( - 1 - t(xac) %*% t(xap) %*% za, - 1 + t(xac) %*% t(xap) %*% za, - -lambda2 * dz %*% xai %*% za) + if(length(lambda)>1) lambda2=lambda[active] + b = c( + 1 - t(Xac) %*% t(Xap) %*% za, + 1 + t(Xac) %*% t(Xap) %*% za, + -lambda2 * dz %*% Xai %*% za) } else { - G = -rbind( - # 1/lambda * t(xac) %*% P, - # -1/lambda * t(xac) %*% P, - -dz %*% xap - ) + A = -dz %*% Xap lambda2=lambda - if(length(lambda)>1) lambda2=lambda[a] - u = -c( - # 1 - t(xac) %*% t(xap) %*% za, - # 1 + t(xac) %*% t(xap) %*% za, - -lambda2 * dz %*% xai %*% za) + if(length(lambda)>1) lambda2=lambda[active] + b = -lambda2 * dz %*% Xai %*% za } - return(list(G=G,u=u)) + return(list(A=A, b=b)) } ############################## diff --git a/selectiveInference/man/fixedLassoPoly.Rd b/selectiveInference/man/fixedLassoPoly.Rd new file mode 100644 index 0000000..61b1f30 --- /dev/null +++ b/selectiveInference/man/fixedLassoPoly.Rd @@ -0,0 +1,80 @@ +\name{fixedLassoPoly} +\alias{fixedLassoPoly} + +\title{ +Compute polyhedral constraints for a LASSO problem with +a fixed value of lambda. +} +\description{ +Compute polyhedral representation of the selection region of Lee et al. (2016). +By construction, y should satisfy A %*% y elementwise less then or equal b. +} +\usage{ +fixedLassoPoly(X, y, lambda, beta, active, inactive = FALSE) +} +\arguments{ +\item{X}{ +Design matrix of LASSO problem. +} +\item{y}{ +Response of LASSO problem. +} +\item{lambda}{ +Value of regularization parameter. +} +\item{beta}{ +Solution of LASSO problem with regularization parameter set to lambda. +} +\item{active}{ +Active set of the LASSO problem as a boolean vector. Should correspond +to the non-zeros of beta. +} +\item{inactive}{ +Form the inactive constraints as well? +} +} +\details{ +This function computes +the polyhedral representation of the selection region of Lee et al. (2016). +} + +\value{ +\item{A}{Linear part of the affine inequalities.} +\item{b}{RHS offset the affine inequalities.} +} + +\references{ +Jason Lee, Dennis Sun, Yuekai Sun, and Jonathan Taylor (2016). +Exact post-selection inference, with application to the lasso. Annals of Statistics, 44(3), 907-927. + +Jonathan Taylor and Robert Tibshirani (2017) Post-selection inference for math L1-penalized likelihood models. +Canadian Journal of Statistics, xx, 1-21. (Volume still not posted) +} +\author{Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid} + +\examples{ + +set.seed(43) +n = 50 +p = 10 +sigma = 1 + +x = matrix(rnorm(n*p),n,p) +x = scale(x,TRUE,TRUE) + +beta = c(3,2,rep(0,p-2)) +y = x\%*\%beta + sigma*rnorm(n) + +# first run glmnet +gfit = glmnet(x,y,standardize=FALSE) + +# extract coef for a given lambda; note the 1/n factor! +# (and we don't save the intercept term) +lambda = .8 +beta = coef(gfit, s=lambda/n, exact=TRUE)[-1] +active = (beta != 0) + +fixedLassoPoly(x, y, lambda, beta, active) + +} + \ No newline at end of file From d935d943aa29682ffc7131147e8b7e69ccb6c28c Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 31 Aug 2017 15:26:04 -0700 Subject: [PATCH 241/493] removing unused C code --- selectiveInference/src/Rcpp-debias.cpp | 65 ---- selectiveInference/src/debias.c | 229 +++++++------- selectiveInference/src/debias.h | 21 -- selectiveInference/src/quadratic_program.c | 332 --------------------- 4 files changed, 110 insertions(+), 537 deletions(-) delete mode 100644 selectiveInference/src/quadratic_program.c diff --git a/selectiveInference/src/Rcpp-debias.cpp b/selectiveInference/src/Rcpp-debias.cpp index 47bbaca..6420e51 100644 --- a/selectiveInference/src/Rcpp-debias.cpp +++ b/selectiveInference/src/Rcpp-debias.cpp @@ -68,68 +68,3 @@ Rcpp::List solve_QP(Rcpp::NumericMatrix Sigma, Rcpp::Named("max_active_check") = max_active_check)); } - -// [[Rcpp::export]] -Rcpp::List find_one_row_debiasingM(Rcpp::NumericMatrix Sigma, - int row, // 0-based - double bound, - int maxiter, - Rcpp::NumericVector theta, - Rcpp::NumericVector gradient, - Rcpp::IntegerVector ever_active, - Rcpp::IntegerVector nactive, - double kkt_tol, - double objective_tol, - int max_active - ) { - - int nrow = Sigma.nrow(); // number of features - - // Active set - - int irow; - - // Extract the diagonal - Rcpp::NumericVector Sigma_diag(nrow); - double *sigma_diag_p = Sigma_diag.begin(); - - for (irow=0; irow= max_active); - - return(Rcpp::List::create(Rcpp::Named("soln") = theta, - Rcpp::Named("gradient") = gradient, - Rcpp::Named("iter") = iter, - Rcpp::Named("kkt_check") = kkt_check, - Rcpp::Named("ever_active") = ever_active, - Rcpp::Named("nactive") = nactive, - Rcpp::Named("max_active_check") = max_active_check)); - -} diff --git a/selectiveInference/src/debias.c b/selectiveInference/src/debias.c index 2881d17..4afbd32 100644 --- a/selectiveInference/src/debias.c +++ b/selectiveInference/src/debias.c @@ -4,23 +4,25 @@ // Solves a dual version of problem (4) of https://arxiv.org/pdf/1306.3171.pdf -// Dual problem: \text{min}_{\theta} 1/2 \theta^T \Sigma \theta - e_i^T\theta + \mu \|\theta\|_1 +// Dual problem: \text{min}_{\theta} 1/2 \theta^T \Sigma \theta - l^T\theta + \mu \|\theta\|_1 +// where l is `linear_func` below // This is the "negative" of the problem as in https://gist.github.com/jonathan-taylor/07774d209173f8bc4e42aa37712339bf // Therefore we don't have to negate the answer to get theta. // Update one coordinate -double objective(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ - int *ever_active_ptr, /* Ever active set: 1-based */ - int *nactive_ptr, /* Size of ever active set */ - int nrow, /* how many rows in Sigma */ - int row, /* which row: 1-based */ - double bound, /* Lagrange multipler for \ell_1 */ - double *theta) /* current value */ +double objective_qp(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ + double *linear_func_ptr, /* Linear term in objective */ + int *ever_active_ptr, /* Ever active set: 0-based */ + int *nactive_ptr, /* Size of ever active set */ + int nrow, /* how many rows in Sigma */ + double bound, /* Lagrange multipler for \ell_1 */ + double *theta) /* current value */ { int irow, icol; double value = 0; double *Sigma_ptr_tmp = Sigma_ptr; + double *linear_func_ptr_tmp = linear_func_ptr; double *theta_row_ptr, *theta_col_ptr; int *active_row_ptr, *active_col_ptr; int active_row, active_col; @@ -32,34 +34,36 @@ double objective(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ for (irow=0; irow 0) && (fabs(gradient + bound) > tol * bound)) { return(0); @@ -126,23 +123,22 @@ int check_KKT(double *theta, /* current theta */ return(0); } } - } return(1); } -double update_one_coord(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ - double *Sigma_diag_ptr, /* Diagonal entries of Sigma */ - double *gradient_ptr, /* Sigma times theta */ - int *ever_active_ptr, /* Ever active set: 0-based */ - int *nactive_ptr, /* Size of ever active set */ - int nrow, /* How many rows in Sigma */ - double bound, /* feasibility parameter */ - double *theta, /* current value */ - int row, /* which row: 1-based */ - int coord, /* which coordinate to update: 0-based */ - int is_active) /* Is this part of ever_active */ +double update_one_coord_qp(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ + double *linear_func_ptr, /* Linear term in objective */ + double *Sigma_diag_ptr, /* Diagonal entries of Sigma */ + double *gradient_ptr, /* Sigma times theta */ + int *ever_active_ptr, /* Ever active set: 1-based */ + int *nactive_ptr, /* Size of ever active set */ + int nrow, /* How many rows in Sigma */ + double bound, /* feasibility parameter */ + double *theta, /* current value */ + int coord, /* which coordinate to update: 0-based */ + int is_active) /* Is this coord in ever_active */ { double delta; @@ -169,10 +165,6 @@ double update_one_coord(double *Sigma_ptr, /* A covariance matrix: X^T linear_term -= quadratic_term * old_value; - if (row - 1 == coord) { // Row is 1-based - linear_term -= 1; - } - // Now soft-threshold the coord entry of theta // Objective is t \mapsto q/2 * t^2 + l * t + bound |t| @@ -191,7 +183,7 @@ double update_one_coord(double *Sigma_ptr, /* A covariance matrix: X^T // Add to active set if necessary if ((is_active == 0) && (value != 0)) { - update_ever_active(coord, ever_active_ptr, nactive_ptr); + update_ever_active_qp(coord, ever_active_ptr, nactive_ptr); } // Update the linear term @@ -217,38 +209,40 @@ double update_one_coord(double *Sigma_ptr, /* A covariance matrix: X^T } -int find_one_row_(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ - double *Sigma_diag_ptr, /* Diagonal entry of covariance matrix */ - double *gradient_ptr, /* Sigma times theta */ - int *ever_active_ptr, /* Ever active set: 1-based */ - int *nactive_ptr, /* Size of ever active set */ - int nrow, /* How many rows in Sigma */ - double bound, /* feasibility parameter */ - double *theta, /* current value */ - int maxiter, /* how many iterations */ - int row, /* which coordinate to solve: 1-based */ - double kkt_tol, /* precision for checking KKT conditions */ - double objective_tol, /* precision for checking relative decrease in objective value */ - int max_active) /* Upper limit for size of active set -- otherwise break */ +int solve_qp(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ + double *linear_func_ptr, /* Linear term in objective */ + double *Sigma_diag_ptr, /* Diagonal entry of covariance matrix */ + double *gradient_ptr, /* Sigma times theta */ + int *ever_active_ptr, /* Ever active set: 1-based */ + int *nactive_ptr, /* Size of ever active set */ + int nrow, /* How many rows in Sigma */ + double bound, /* feasibility parameter */ + double *theta, /* current value */ + int maxiter, /* max number of iterations */ + double kkt_tol, /* precision for checking KKT conditions */ + double objective_tol, /* precision for checking relative decrease in objective value */ + int max_active) /* Upper limit for size of active set -- otherwise break */ { int iter = 0; int icoord = 0; int iactive = 0; int *active_ptr; - double old_value, new_value; int check_objective = 1; + double old_value, new_value; + if (check_objective) { - old_value = objective(Sigma_ptr, - ever_active_ptr, - nactive_ptr, - nrow, - row, - bound, - theta); + old_value = objective_qp(Sigma_ptr, + linear_func_ptr, + ever_active_ptr, + nactive_ptr, + nrow, + bound, + theta); + } @@ -259,28 +253,27 @@ int find_one_row_(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ active_ptr = (int *) ever_active_ptr; for (iactive=0; iactive < *nactive_ptr; iactive++) { - update_one_coord(Sigma_ptr, - Sigma_diag_ptr, - gradient_ptr, - ever_active_ptr, - nactive_ptr, - nrow, - bound, - theta, - row, - *active_ptr-1, // Ever active set is 1-based - 1); + update_one_coord_qp(Sigma_ptr, + linear_func_ptr, + Sigma_diag_ptr, + gradient_ptr, + ever_active_ptr, + nactive_ptr, + nrow, + bound, + theta, + *active_ptr - 1, // Ever-active is 1-based + 1); active_ptr++; } // Check KKT - if (check_KKT(theta, - gradient_ptr, - nrow, - row, - bound, - kkt_tol) == 1) { + if (check_KKT_qp(theta, + gradient_ptr, + nrow, + bound, + kkt_tol) == 1) { break; } @@ -288,27 +281,26 @@ int find_one_row_(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ for (icoord=0; icoord 0)) { + new_value = objective_qp(Sigma_ptr, + linear_func_ptr, + ever_active_ptr, + nactive_ptr, + nrow, + bound, + theta); + + if ((fabs(old_value - new_value) < objective_tol * fabs(new_value)) && (iter > 0)) { break; } - old_value = new_value; } } diff --git a/selectiveInference/src/debias.h b/selectiveInference/src/debias.h index f76eb69..7cab5e3 100644 --- a/selectiveInference/src/debias.h +++ b/selectiveInference/src/debias.h @@ -23,27 +23,6 @@ int check_KKT_qp(double *theta, /* current theta */ double bound, /* Lagrange multipler for \ell_1 */ double tol); /* precision for checking KKT conditions */ -int find_one_row_(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ - double *Sigma_diag_ptr, /* Diagonal entry of covariance matrix */ - double *gradient_ptr, /* Current gradient of quadratic loss */ - int *ever_active_ptr, /* Ever active set: 0-based */ - int *nactive_ptr, /* Size of ever active set */ - int nrow, /* How many rows in Sigma */ - double bound, /* feasibility parameter */ - double *theta, /* current value */ - int maxiter, /* how many iterations */ - int row, /* which coordinate to update: 0-based */ - double kkt_tol, /* precision for checking KKT conditions */ - double objective_tol, /* precision for checking relative decrease in objective value */ - int max_active); /* Upper limit for size of active set -- otherwise break */ - -int check_KKT(double *theta, /* current theta */ - double *gradient_ptr, /* Current gradient of quadratic loss */ - int nrow, /* how many rows in Sigma */ - int row, /* which row: 0-based */ - double bound, /* Lagrange multipler for \ell_1 */ - double kkt_tol); /* precision for checking KKT conditions */ - #ifdef __cplusplus } /* extern "C" */ #endif /* __cplusplus */ diff --git a/selectiveInference/src/quadratic_program.c b/selectiveInference/src/quadratic_program.c deleted file mode 100644 index 4afbd32..0000000 --- a/selectiveInference/src/quadratic_program.c +++ /dev/null @@ -1,332 +0,0 @@ -#include // for fabs - -// Find an approximate row of \hat{Sigma}^{-1} - -// Solves a dual version of problem (4) of https://arxiv.org/pdf/1306.3171.pdf - -// Dual problem: \text{min}_{\theta} 1/2 \theta^T \Sigma \theta - l^T\theta + \mu \|\theta\|_1 -// where l is `linear_func` below - -// This is the "negative" of the problem as in https://gist.github.com/jonathan-taylor/07774d209173f8bc4e42aa37712339bf -// Therefore we don't have to negate the answer to get theta. -// Update one coordinate - -double objective_qp(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ - double *linear_func_ptr, /* Linear term in objective */ - int *ever_active_ptr, /* Ever active set: 0-based */ - int *nactive_ptr, /* Size of ever active set */ - int nrow, /* how many rows in Sigma */ - double bound, /* Lagrange multipler for \ell_1 */ - double *theta) /* current value */ -{ - int irow, icol; - double value = 0; - double *Sigma_ptr_tmp = Sigma_ptr; - double *linear_func_ptr_tmp = linear_func_ptr; - double *theta_row_ptr, *theta_col_ptr; - int *active_row_ptr, *active_col_ptr; - int active_row, active_col; - int nactive = *nactive_ptr; - - theta_row_ptr = theta; - theta_col_ptr = theta; - - for (irow=0; irow 0) && (fabs(gradient + bound) > tol * bound)) { - return(0); - } - else if ((*theta_ptr < 0) && (fabs(gradient - bound) > tol * bound)) { - return(0); - } - } - else { - if (fabs(gradient) > (1. + tol) * bound) { - return(0); - } - } - } - - return(1); -} - -double update_one_coord_qp(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ - double *linear_func_ptr, /* Linear term in objective */ - double *Sigma_diag_ptr, /* Diagonal entries of Sigma */ - double *gradient_ptr, /* Sigma times theta */ - int *ever_active_ptr, /* Ever active set: 1-based */ - int *nactive_ptr, /* Size of ever active set */ - int nrow, /* How many rows in Sigma */ - double bound, /* feasibility parameter */ - double *theta, /* current value */ - int coord, /* which coordinate to update: 0-based */ - int is_active) /* Is this coord in ever_active */ -{ - - double delta; - double linear_term = 0; - double value = 0; - double old_value; - double *Sigma_ptr_tmp; - double *gradient_ptr_tmp; - double *theta_ptr; - int icol = 0; - - double *quadratic_ptr = ((double *) Sigma_diag_ptr + coord); - double quadratic_term = *quadratic_ptr; - - gradient_ptr_tmp = ((double *) gradient_ptr + coord); - linear_term = *gradient_ptr_tmp; - - theta_ptr = ((double *) theta + coord); - old_value = *theta_ptr; - - // The coord entry of gradient_ptr term has a diagonal term in it: - // Sigma[coord, coord] * theta[coord] - // This removes it. - - linear_term -= quadratic_term * old_value; - - // Now soft-threshold the coord entry of theta - - // Objective is t \mapsto q/2 * t^2 + l * t + bound |t| - // with q=quadratic_term and l=linear_term - - // With a negative linear term, solution should be - // positive - - if (linear_term < -bound) { - value = (-linear_term - bound) / quadratic_term; - } - else if (linear_term > bound) { - value = -(linear_term - bound) / quadratic_term; - } - - // Add to active set if necessary - - if ((is_active == 0) && (value != 0)) { - update_ever_active_qp(coord, ever_active_ptr, nactive_ptr); - } - - // Update the linear term - - if (fabs(old_value - value) > 1.e-6 * (fabs(value) + fabs(old_value))) { - - delta = value - old_value; - Sigma_ptr_tmp = ((double *) Sigma_ptr + coord * nrow); - gradient_ptr_tmp = ((double *) gradient_ptr); - - for (icol=0; icol= max_active) { - break; - } - - // Check relative decrease of objective - - if (check_objective) { - new_value = objective_qp(Sigma_ptr, - linear_func_ptr, - ever_active_ptr, - nactive_ptr, - nrow, - bound, - theta); - - if ((fabs(old_value - new_value) < objective_tol * fabs(new_value)) && (iter > 0)) { - break; - } - old_value = new_value; - } - } - return(iter); -} - From 7004a0b894a36cc28c879cd100ce99ba3cba118d Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 31 Aug 2017 15:31:16 -0700 Subject: [PATCH 242/493] moving file back --- selectiveInference/src/Makevars | 2 +- selectiveInference/src/{debias.c => quadratic_program.c} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename selectiveInference/src/{debias.c => quadratic_program.c} (100%) diff --git a/selectiveInference/src/Makevars b/selectiveInference/src/Makevars index cde36c9..b77ed95 100644 --- a/selectiveInference/src/Makevars +++ b/selectiveInference/src/Makevars @@ -2,7 +2,7 @@ PKG_CFLAGS= -I. PKG_CPPFLAGS= -I. PKG_LIBS=-L. -$(SHLIB): Rcpp Rcpp-matrixcomps.o Rcpp-debias.o RcppExports.o debias.o +$(SHLIB): Rcpp Rcpp-matrixcomps.o Rcpp-debias.o RcppExports.o quadratic_program.o clean: rm -f *o diff --git a/selectiveInference/src/debias.c b/selectiveInference/src/quadratic_program.c similarity index 100% rename from selectiveInference/src/debias.c rename to selectiveInference/src/quadratic_program.c From 5e671a4652b5fbb1dcd0ebc1269b38d5a92a8f3b Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 31 Aug 2017 17:15:22 -0700 Subject: [PATCH 243/493] Rcpp exports --- selectiveInference/R/RcppExports.R | 15 +++++++ selectiveInference/src/RcppExports.cpp | 57 ++++++++++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 selectiveInference/R/RcppExports.R create mode 100644 selectiveInference/src/RcppExports.cpp diff --git a/selectiveInference/R/RcppExports.R b/selectiveInference/R/RcppExports.R new file mode 100644 index 0000000..e04c446 --- /dev/null +++ b/selectiveInference/R/RcppExports.R @@ -0,0 +1,15 @@ +# This file was generated by Rcpp::compileAttributes +# Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 + +solve_QP <- function(Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active) { + .Call('selectiveInference_solve_QP', PACKAGE = 'selectiveInference', Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active) +} + +update1_ <- function(Q2, w, m, k) { + .Call('selectiveInference_update1_', PACKAGE = 'selectiveInference', Q2, w, m, k) +} + +downdate1_ <- function(Q1, R, j0, m, n) { + .Call('selectiveInference_downdate1_', PACKAGE = 'selectiveInference', Q1, R, j0, m, n) +} + diff --git a/selectiveInference/src/RcppExports.cpp b/selectiveInference/src/RcppExports.cpp new file mode 100644 index 0000000..feefe32 --- /dev/null +++ b/selectiveInference/src/RcppExports.cpp @@ -0,0 +1,57 @@ +// This file was generated by Rcpp::compileAttributes +// Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 + +#include + +using namespace Rcpp; + +// solve_QP +Rcpp::List solve_QP(Rcpp::NumericMatrix Sigma, double bound, int maxiter, Rcpp::NumericVector theta, Rcpp::NumericVector linear_func, Rcpp::NumericVector gradient, Rcpp::IntegerVector ever_active, Rcpp::IntegerVector nactive, double kkt_tol, double objective_tol, int max_active); +RcppExport SEXP selectiveInference_solve_QP(SEXP SigmaSEXP, SEXP boundSEXP, SEXP maxiterSEXP, SEXP thetaSEXP, SEXP linear_funcSEXP, SEXP gradientSEXP, SEXP ever_activeSEXP, SEXP nactiveSEXP, SEXP kkt_tolSEXP, SEXP objective_tolSEXP, SEXP max_activeSEXP) { +BEGIN_RCPP + Rcpp::RObject __result; + Rcpp::RNGScope __rngScope; + Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type Sigma(SigmaSEXP); + Rcpp::traits::input_parameter< double >::type bound(boundSEXP); + Rcpp::traits::input_parameter< int >::type maxiter(maxiterSEXP); + Rcpp::traits::input_parameter< Rcpp::NumericVector >::type theta(thetaSEXP); + Rcpp::traits::input_parameter< Rcpp::NumericVector >::type linear_func(linear_funcSEXP); + Rcpp::traits::input_parameter< Rcpp::NumericVector >::type gradient(gradientSEXP); + Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type ever_active(ever_activeSEXP); + Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type nactive(nactiveSEXP); + Rcpp::traits::input_parameter< double >::type kkt_tol(kkt_tolSEXP); + Rcpp::traits::input_parameter< double >::type objective_tol(objective_tolSEXP); + Rcpp::traits::input_parameter< int >::type max_active(max_activeSEXP); + __result = Rcpp::wrap(solve_QP(Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active)); + return __result; +END_RCPP +} +// update1_ +Rcpp::List update1_(Rcpp::NumericMatrix Q2, Rcpp::NumericVector w, int m, int k); +RcppExport SEXP selectiveInference_update1_(SEXP Q2SEXP, SEXP wSEXP, SEXP mSEXP, SEXP kSEXP) { +BEGIN_RCPP + Rcpp::RObject __result; + Rcpp::RNGScope __rngScope; + Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type Q2(Q2SEXP); + Rcpp::traits::input_parameter< Rcpp::NumericVector >::type w(wSEXP); + Rcpp::traits::input_parameter< int >::type m(mSEXP); + Rcpp::traits::input_parameter< int >::type k(kSEXP); + __result = Rcpp::wrap(update1_(Q2, w, m, k)); + return __result; +END_RCPP +} +// downdate1_ +Rcpp::List downdate1_(Rcpp::NumericMatrix Q1, Rcpp::NumericMatrix R, int j0, int m, int n); +RcppExport SEXP selectiveInference_downdate1_(SEXP Q1SEXP, SEXP RSEXP, SEXP j0SEXP, SEXP mSEXP, SEXP nSEXP) { +BEGIN_RCPP + Rcpp::RObject __result; + Rcpp::RNGScope __rngScope; + Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type Q1(Q1SEXP); + Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type R(RSEXP); + Rcpp::traits::input_parameter< int >::type j0(j0SEXP); + Rcpp::traits::input_parameter< int >::type m(mSEXP); + Rcpp::traits::input_parameter< int >::type n(nSEXP); + __result = Rcpp::wrap(downdate1_(Q1, R, j0, m, n)); + return __result; +END_RCPP +} From f4f448ec06c44ea44cee27484c16c6c42aa24d96 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Mon, 11 Sep 2017 11:08:06 -0700 Subject: [PATCH 244/493] unexporting fixedLassoPoly --- .../man => forLater}/fixedLassoPoly.Rd | 1 + selectiveInference/NAMESPACE | 3 +- selectiveInference/R/RcppExports.R | 8 ++-- selectiveInference/src/RcppExports.cpp | 44 ++++++++++++------- 4 files changed, 34 insertions(+), 22 deletions(-) rename {selectiveInference/man => forLater}/fixedLassoPoly.Rd (97%) diff --git a/selectiveInference/man/fixedLassoPoly.Rd b/forLater/fixedLassoPoly.Rd similarity index 97% rename from selectiveInference/man/fixedLassoPoly.Rd rename to forLater/fixedLassoPoly.Rd index 61b1f30..88c5446 100644 --- a/selectiveInference/man/fixedLassoPoly.Rd +++ b/forLater/fixedLassoPoly.Rd @@ -75,6 +75,7 @@ beta = coef(gfit, s=lambda/n, exact=TRUE)[-1] active = (beta != 0) fixedLassoPoly(x, y, lambda, beta, active) +fixedLassoPoly(x, y, lambda, beta, active, inactive=TRUE) } \ No newline at end of file diff --git a/selectiveInference/NAMESPACE b/selectiveInference/NAMESPACE index fe0237e..d72d56a 100644 --- a/selectiveInference/NAMESPACE +++ b/selectiveInference/NAMESPACE @@ -14,8 +14,7 @@ export(lar,fs, TG.pvalue, TG.limits, TG.interval, - debiasingMatrix, - fixedLassoPoly + debiasingMatrix ) S3method("coef", "lar") diff --git a/selectiveInference/R/RcppExports.R b/selectiveInference/R/RcppExports.R index e04c446..622d1d2 100644 --- a/selectiveInference/R/RcppExports.R +++ b/selectiveInference/R/RcppExports.R @@ -1,15 +1,15 @@ -# This file was generated by Rcpp::compileAttributes +# Generated by using Rcpp::compileAttributes() -> do not edit by hand # Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 solve_QP <- function(Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active) { - .Call('selectiveInference_solve_QP', PACKAGE = 'selectiveInference', Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active) + .Call('_selectiveInference_solve_QP', PACKAGE = 'selectiveInference', Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active) } update1_ <- function(Q2, w, m, k) { - .Call('selectiveInference_update1_', PACKAGE = 'selectiveInference', Q2, w, m, k) + .Call('_selectiveInference_update1_', PACKAGE = 'selectiveInference', Q2, w, m, k) } downdate1_ <- function(Q1, R, j0, m, n) { - .Call('selectiveInference_downdate1_', PACKAGE = 'selectiveInference', Q1, R, j0, m, n) + .Call('_selectiveInference_downdate1_', PACKAGE = 'selectiveInference', Q1, R, j0, m, n) } diff --git a/selectiveInference/src/RcppExports.cpp b/selectiveInference/src/RcppExports.cpp index feefe32..461b0e5 100644 --- a/selectiveInference/src/RcppExports.cpp +++ b/selectiveInference/src/RcppExports.cpp @@ -1,4 +1,4 @@ -// This file was generated by Rcpp::compileAttributes +// Generated by using Rcpp::compileAttributes() -> do not edit by hand // Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 #include @@ -7,10 +7,10 @@ using namespace Rcpp; // solve_QP Rcpp::List solve_QP(Rcpp::NumericMatrix Sigma, double bound, int maxiter, Rcpp::NumericVector theta, Rcpp::NumericVector linear_func, Rcpp::NumericVector gradient, Rcpp::IntegerVector ever_active, Rcpp::IntegerVector nactive, double kkt_tol, double objective_tol, int max_active); -RcppExport SEXP selectiveInference_solve_QP(SEXP SigmaSEXP, SEXP boundSEXP, SEXP maxiterSEXP, SEXP thetaSEXP, SEXP linear_funcSEXP, SEXP gradientSEXP, SEXP ever_activeSEXP, SEXP nactiveSEXP, SEXP kkt_tolSEXP, SEXP objective_tolSEXP, SEXP max_activeSEXP) { +RcppExport SEXP _selectiveInference_solve_QP(SEXP SigmaSEXP, SEXP boundSEXP, SEXP maxiterSEXP, SEXP thetaSEXP, SEXP linear_funcSEXP, SEXP gradientSEXP, SEXP ever_activeSEXP, SEXP nactiveSEXP, SEXP kkt_tolSEXP, SEXP objective_tolSEXP, SEXP max_activeSEXP) { BEGIN_RCPP - Rcpp::RObject __result; - Rcpp::RNGScope __rngScope; + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type Sigma(SigmaSEXP); Rcpp::traits::input_parameter< double >::type bound(boundSEXP); Rcpp::traits::input_parameter< int >::type maxiter(maxiterSEXP); @@ -22,36 +22,48 @@ BEGIN_RCPP Rcpp::traits::input_parameter< double >::type kkt_tol(kkt_tolSEXP); Rcpp::traits::input_parameter< double >::type objective_tol(objective_tolSEXP); Rcpp::traits::input_parameter< int >::type max_active(max_activeSEXP); - __result = Rcpp::wrap(solve_QP(Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active)); - return __result; + rcpp_result_gen = Rcpp::wrap(solve_QP(Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active)); + return rcpp_result_gen; END_RCPP } // update1_ Rcpp::List update1_(Rcpp::NumericMatrix Q2, Rcpp::NumericVector w, int m, int k); -RcppExport SEXP selectiveInference_update1_(SEXP Q2SEXP, SEXP wSEXP, SEXP mSEXP, SEXP kSEXP) { +RcppExport SEXP _selectiveInference_update1_(SEXP Q2SEXP, SEXP wSEXP, SEXP mSEXP, SEXP kSEXP) { BEGIN_RCPP - Rcpp::RObject __result; - Rcpp::RNGScope __rngScope; + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type Q2(Q2SEXP); Rcpp::traits::input_parameter< Rcpp::NumericVector >::type w(wSEXP); Rcpp::traits::input_parameter< int >::type m(mSEXP); Rcpp::traits::input_parameter< int >::type k(kSEXP); - __result = Rcpp::wrap(update1_(Q2, w, m, k)); - return __result; + rcpp_result_gen = Rcpp::wrap(update1_(Q2, w, m, k)); + return rcpp_result_gen; END_RCPP } // downdate1_ Rcpp::List downdate1_(Rcpp::NumericMatrix Q1, Rcpp::NumericMatrix R, int j0, int m, int n); -RcppExport SEXP selectiveInference_downdate1_(SEXP Q1SEXP, SEXP RSEXP, SEXP j0SEXP, SEXP mSEXP, SEXP nSEXP) { +RcppExport SEXP _selectiveInference_downdate1_(SEXP Q1SEXP, SEXP RSEXP, SEXP j0SEXP, SEXP mSEXP, SEXP nSEXP) { BEGIN_RCPP - Rcpp::RObject __result; - Rcpp::RNGScope __rngScope; + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type Q1(Q1SEXP); Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type R(RSEXP); Rcpp::traits::input_parameter< int >::type j0(j0SEXP); Rcpp::traits::input_parameter< int >::type m(mSEXP); Rcpp::traits::input_parameter< int >::type n(nSEXP); - __result = Rcpp::wrap(downdate1_(Q1, R, j0, m, n)); - return __result; + rcpp_result_gen = Rcpp::wrap(downdate1_(Q1, R, j0, m, n)); + return rcpp_result_gen; END_RCPP } + +static const R_CallMethodDef CallEntries[] = { + {"_selectiveInference_solve_QP", (DL_FUNC) &_selectiveInference_solve_QP, 11}, + {"_selectiveInference_update1_", (DL_FUNC) &_selectiveInference_update1_, 4}, + {"_selectiveInference_downdate1_", (DL_FUNC) &_selectiveInference_downdate1_, 5}, + {NULL, NULL, 0} +}; + +RcppExport void R_init_selectiveInference(DllInfo *dll) { + R_registerRoutines(dll, NULL, CallEntries, NULL, NULL); + R_useDynamicSymbols(dll, FALSE); +} From f0010f3a1bdb1d06c361dd4b1be9c83aeb69151f Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Mon, 11 Sep 2017 11:16:57 -0700 Subject: [PATCH 245/493] changing signs in arguments to TG.limits --- selectiveInference/R/funs.fs.R | 12 ++++++------ selectiveInference/R/funs.lar.R | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/selectiveInference/R/funs.fs.R b/selectiveInference/R/funs.fs.R index db0968b..669cf14 100644 --- a/selectiveInference/R/funs.fs.R +++ b/selectiveInference/R/funs.fs.R @@ -295,13 +295,13 @@ fsInf <- function(obj, sigma=NULL, alpha=0.1, k=NULL, type=c("active","all","aic for (j in 1:k) { if (verbose) cat(sprintf("Inference for variable %i ...\n",vars[j])) - Gj = G[1:nconstraint[j],] - uj = rep(0,nconstraint[j]) + Aj = -G[1:nconstraint[j],] + bj = -rep(0,nconstraint[j]) vj = vreg[j,] mj = sqrt(sum(vj^2)) vj = vj / mj # Standardize (divide by norm of vj) - limits.info = TG.limits(y, -Gj, -uj, vj, Sigma=diag(rep(sigma^2, n))) + limits.info = TG.limits(y, Aj, bj, vj, Sigma=diag(rep(sigma^2, n))) a = TG.pvalue.base(limits.info, bits=bits) pv[j] = a$pv @@ -353,10 +353,10 @@ fsInf <- function(obj, sigma=NULL, alpha=0.1, k=NULL, type=c("active","all","aic vj = vj / mj # Standardize (divide by norm of vj) sign[j] = sign(sum(vj*y)) vj = sign[j] * vj - Gj = rbind(G,vj) - uj = c(u,0) + Aj = -rbind(G,vj) + bj = -c(u,0) - limits.info = TG.limits(y, -Gj, -uj, vj, Sigma=diag(rep(sigma^2, n))) + limits.info = TG.limits(y, Aj, bj, vj, Sigma=diag(rep(sigma^2, n))) a = TG.pvalue.base(limits.info, bits=bits) pv[j] = a$pv sxj = sx[vars[j]] diff --git a/selectiveInference/R/funs.lar.R b/selectiveInference/R/funs.lar.R index a01b2d3..0fad04f 100644 --- a/selectiveInference/R/funs.lar.R +++ b/selectiveInference/R/funs.lar.R @@ -367,13 +367,13 @@ larInf <- function(obj, sigma=NULL, alpha=0.1, k=NULL, type=c("active","all","ai for (j in 1:k) { if (verbose) cat(sprintf("Inference for variable %i ...\n",vars[j])) - Gj = G[1:nk[j],] - uj = rep(0,nk[j]) + Aj = -G[1:nk[j],] + bj = -rep(0,nk[j]) vj = vreg[j,] mj = sqrt(sum(vj^2)) vj = vj / mj # Standardize (divide by norm of vj) - limits.info = TG.limits(y, -Gj, -uj, vj, Sigma=diag(rep(sigma^2, n))) + limits.info = TG.limits(y, Aj, bj, vj, Sigma=diag(rep(sigma^2, n))) a = TG.pvalue.base(limits.info, bits=bits) pv[j] = a$pv sxj = sx[vars[j]] @@ -428,10 +428,10 @@ larInf <- function(obj, sigma=NULL, alpha=0.1, k=NULL, type=c("active","all","ai vj = vj / mj # Standardize (divide by norm of vj) sign[j] = sign(sum(vj*y)) vj = sign[j] * vj - Gj = rbind(G,vj) - uj = c(u,0) + Aj = -rbind(G,vj) + bj = -c(u,0) - limits.info = TG.limits(y, -Gj, -uj, vj, Sigma=diag(rep(sigma^2, n))) + limits.info = TG.limits(y, Aj, bj, vj, Sigma=diag(rep(sigma^2, n))) a = TG.pvalue.base(limits.info, bits=bits) pv[j] = a$pv From 7040ad440f72fc0784c118c00c9c705945c65001 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Fri, 22 Sep 2017 15:41:08 -0700 Subject: [PATCH 246/493] copy of CRAN version 1.2.3 in selectiveInference-currentCRAN --- selectiveInference-currentCRAN/DESCRIPTION | 18 + selectiveInference-currentCRAN/MD5 | 35 + selectiveInference-currentCRAN/NAMESPACE | 45 + .../R/funs.common.R | 186 ++++ selectiveInference-currentCRAN/R/funs.fixed.R | 218 +++++ .../R/funs.fixedCox.R | 120 +++ .../R/funs.fixedLogit.R | 151 ++++ selectiveInference-currentCRAN/R/funs.fs.R | 482 +++++++++++ .../R/funs.groupfs.R | 794 ++++++++++++++++++ selectiveInference-currentCRAN/R/funs.inf.R | 299 +++++++ selectiveInference-currentCRAN/R/funs.lar.R | 632 ++++++++++++++ .../R/funs.manymeans.R | 196 +++++ selectiveInference-currentCRAN/R/funs.max.R | 84 ++ .../R/funs.quadratic.R | 257 ++++++ .../man/estimateSigma.Rd | 64 ++ .../man/factorDesign.Rd | 30 + .../man/fixedLassoInf.Rd | 252 ++++++ .../man/forwardStop.Rd | 55 ++ selectiveInference-currentCRAN/man/fs.Rd | 95 +++ selectiveInference-currentCRAN/man/fsInf.Rd | 135 +++ selectiveInference-currentCRAN/man/groupfs.Rd | 49 ++ .../man/groupfsInf.Rd | 31 + selectiveInference-currentCRAN/man/lar.Rd | 95 +++ selectiveInference-currentCRAN/man/larInf.Rd | 140 +++ .../man/manyMeans.Rd | 60 ++ selectiveInference-currentCRAN/man/plot.fs.Rd | 42 + .../man/plot.lar.Rd | 46 + .../man/predict.fs.Rd | 49 ++ .../man/predict.groupfs.Rd | 24 + .../man/predict.lar.Rd | 52 ++ .../man/scaleGroups.Rd | 28 + .../man/selectiveInference-internal.Rd | 24 + .../man/selectiveInference.Rd | 205 +++++ .../src/matrixcomps.c | 266 ++++++ .../src/selinf_init.c | 24 + .../src/truncnorm.c | 188 +++++ 36 files changed, 5471 insertions(+) create mode 100644 selectiveInference-currentCRAN/DESCRIPTION create mode 100644 selectiveInference-currentCRAN/MD5 create mode 100644 selectiveInference-currentCRAN/NAMESPACE create mode 100644 selectiveInference-currentCRAN/R/funs.common.R create mode 100644 selectiveInference-currentCRAN/R/funs.fixed.R create mode 100644 selectiveInference-currentCRAN/R/funs.fixedCox.R create mode 100644 selectiveInference-currentCRAN/R/funs.fixedLogit.R create mode 100644 selectiveInference-currentCRAN/R/funs.fs.R create mode 100644 selectiveInference-currentCRAN/R/funs.groupfs.R create mode 100644 selectiveInference-currentCRAN/R/funs.inf.R create mode 100644 selectiveInference-currentCRAN/R/funs.lar.R create mode 100644 selectiveInference-currentCRAN/R/funs.manymeans.R create mode 100644 selectiveInference-currentCRAN/R/funs.max.R create mode 100644 selectiveInference-currentCRAN/R/funs.quadratic.R create mode 100644 selectiveInference-currentCRAN/man/estimateSigma.Rd create mode 100644 selectiveInference-currentCRAN/man/factorDesign.Rd create mode 100644 selectiveInference-currentCRAN/man/fixedLassoInf.Rd create mode 100644 selectiveInference-currentCRAN/man/forwardStop.Rd create mode 100644 selectiveInference-currentCRAN/man/fs.Rd create mode 100644 selectiveInference-currentCRAN/man/fsInf.Rd create mode 100644 selectiveInference-currentCRAN/man/groupfs.Rd create mode 100644 selectiveInference-currentCRAN/man/groupfsInf.Rd create mode 100644 selectiveInference-currentCRAN/man/lar.Rd create mode 100644 selectiveInference-currentCRAN/man/larInf.Rd create mode 100644 selectiveInference-currentCRAN/man/manyMeans.Rd create mode 100644 selectiveInference-currentCRAN/man/plot.fs.Rd create mode 100644 selectiveInference-currentCRAN/man/plot.lar.Rd create mode 100644 selectiveInference-currentCRAN/man/predict.fs.Rd create mode 100644 selectiveInference-currentCRAN/man/predict.groupfs.Rd create mode 100644 selectiveInference-currentCRAN/man/predict.lar.Rd create mode 100644 selectiveInference-currentCRAN/man/scaleGroups.Rd create mode 100644 selectiveInference-currentCRAN/man/selectiveInference-internal.Rd create mode 100644 selectiveInference-currentCRAN/man/selectiveInference.Rd create mode 100644 selectiveInference-currentCRAN/src/matrixcomps.c create mode 100644 selectiveInference-currentCRAN/src/selinf_init.c create mode 100644 selectiveInference-currentCRAN/src/truncnorm.c diff --git a/selectiveInference-currentCRAN/DESCRIPTION b/selectiveInference-currentCRAN/DESCRIPTION new file mode 100644 index 0000000..0eb38f7 --- /dev/null +++ b/selectiveInference-currentCRAN/DESCRIPTION @@ -0,0 +1,18 @@ +Package: selectiveInference +Type: Package +Title: Tools for Post-Selection Inference +Version: 1.2.3 +Date: 2017-09-18 +Author: Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, + Joshua Loftus, Stephen Reid +Maintainer: Rob Tibshirani +Depends: glmnet, intervals, survival +Suggests: Rmpfr +Description: New tools for post-selection inference, for use + with forward stepwise regression, least angle regression, the + lasso, and the many means problem. The lasso function implements Gaussian, logistic and Cox survival models. +License: GPL-2 +NeedsCompilation: yes +Packaged: 2017-09-19 23:49:11 UTC; tibs +Repository: CRAN +Date/Publication: 2017-09-20 03:14:10 UTC diff --git a/selectiveInference-currentCRAN/MD5 b/selectiveInference-currentCRAN/MD5 new file mode 100644 index 0000000..6675546 --- /dev/null +++ b/selectiveInference-currentCRAN/MD5 @@ -0,0 +1,35 @@ +89792835188231f03f117ab143c2fe46 *DESCRIPTION +5b8e448cf043849e190d2b71898eaad9 *NAMESPACE +9c5c032cb17908e6dea15a0b89d649a9 *R/funs.common.R +cf1d1199cf6cacb1d54fce08388d20cc *R/funs.fixed.R +faf5eed09c13d3e80270d82305f0b348 *R/funs.fixedCox.R +25e9f2957b4cbac8b11a283c69533f64 *R/funs.fixedLogit.R +c7af51c32236ef56a6ed0a525f52dce4 *R/funs.fs.R +fc41d0af77330bde0395f438c117c7d8 *R/funs.groupfs.R +632c61c8fc3da59cde6b337f7d4341a4 *R/funs.inf.R +dba7bfb08c9184569d97c14a0575c5a1 *R/funs.lar.R +ed45e9aa5e6383ff9888b35af9b30e9e *R/funs.manymeans.R +bd535e32d32e9cd0e723a5f9f00d9eef *R/funs.max.R +6daca48218e58720c1570784706c199a *R/funs.quadratic.R +d1db3866e82ad6e33baef9da4d994833 *man/estimateSigma.Rd +1747e0899ef985469ae560fb828755cb *man/factorDesign.Rd +1028942deac2fd45aaf2e49d94aa6dac *man/fixedLassoInf.Rd +60e2065f446f1d6dc11c77a5534580bc *man/forwardStop.Rd +2e6f87cd38e1f4b4cb60bfc8299dc1f4 *man/fs.Rd +1483067f07f71b2d996138877e4f48ef *man/fsInf.Rd +7d5ca8ce0ff81cf5f0e87cadffa29229 *man/groupfs.Rd +5ccec019c69b4832438b79830649e730 *man/groupfsInf.Rd +61bdaa3e5ac7bbe02d55f42530edf956 *man/lar.Rd +b25bc2d93c0b266dbec45d82a5d05004 *man/larInf.Rd +4da84515659e7a70fb7375dc2c791b4b *man/manyMeans.Rd +c7c96850986be5e1203cca414a410a32 *man/plot.fs.Rd +3dc4100747d7e72276a75c8e6beba37c *man/plot.lar.Rd +192e0031a10ace23df79a314cf90c648 *man/predict.fs.Rd +588230513bd05fd139c75d45f94a7cd6 *man/predict.groupfs.Rd +0b477548ac30e902eca27163a947e2ca *man/predict.lar.Rd +b275e61a2976d14595dc9dfea646675e *man/scaleGroups.Rd +0c21e5414145f4841c3897c995dad4c2 *man/selectiveInference-internal.Rd +b0bbe4ffe6e958215a85bb15fc43ab01 *man/selectiveInference.Rd +4313aa781953d7f1f6e75383e938e1c7 *src/matrixcomps.c +d7f4c478a9de5716b2da338ae6da2ea5 *src/selinf_init.c +11b2e6c34bc1ed181b407fc658a3b0af *src/truncnorm.c diff --git a/selectiveInference-currentCRAN/NAMESPACE b/selectiveInference-currentCRAN/NAMESPACE new file mode 100644 index 0000000..cf2f3b8 --- /dev/null +++ b/selectiveInference-currentCRAN/NAMESPACE @@ -0,0 +1,45 @@ +export(lar,fs, + larInf,fsInf, + coef.lar,coef.fs, + predict.lar,predict.fs, + print.lar,print.fs, + print.larInf,print.fsInf, + plot.lar,plot.fs, + fixedLassoInf,print.fixedLassoInf, +# fixedLogitLassoInf,print.fixedLogitLassoInf, +# fixedCoxLassoInf,print.fixedCoxLassoInf, + forwardStop, + estimateSigma, + manyMeans,print.manyMeans, + groupfs,groupfsInf, + scaleGroups,factorDesign + ) + +S3method("coef", "lar") +S3method("predict", "lar") +S3method("print", "lar") +S3method("plot", "lar") +S3method("print", "larInf") +S3method("coef", "fs") +S3method("predict", "fs") +S3method("print", "fs") +S3method("plot", "fs") +S3method("print", "fsInf") +S3method("print", "fixedLassoInf") +S3method("print", "fixedLogitLassoInf") +S3method("print", "fixedCoxLassoInf") +S3method("print", "manyMeans") +S3method("print", "groupfs") +S3method("print", "groupfsInf") + +useDynLib("selectiveInference",.registration=TRUE) +import(glmnet) +import(intervals) +import(survival) +importFrom("graphics", abline, axis, matplot) +importFrom("stats", dnorm, lsfit, pexp, pnorm, predict, + qnorm, rnorm, sd, uniroot, dchisq, model.matrix, pchisq) +importFrom("stats", "coef", "df", "lm", "pf") +importFrom("stats", "glm", "residuals", "vcov") + + diff --git a/selectiveInference-currentCRAN/R/funs.common.R b/selectiveInference-currentCRAN/R/funs.common.R new file mode 100644 index 0000000..5945700 --- /dev/null +++ b/selectiveInference-currentCRAN/R/funs.common.R @@ -0,0 +1,186 @@ +# Special linear time order function, works only when x +# is a scrambled vector of integers. + +Order <- function(x) { + n = length(x) + o = numeric(n) + o[x] = Seq(1,n) + return(o) +} + +# Returns a sequence of integers from a to b if a <= b, +# otherwise nothing. You have no idea how important this +# function is... + +Seq <- function(a, b, ...) { + if (a<=b) return(seq(a,b,...)) + else return(numeric(0)) +} + +# Returns the sign of x, with Sign(0)=1. + +Sign <- function(x) { + return(-1+2*(x>=0)) +} + +############################## + +# Centering and scaling convenience function + +standardize <- function(x, y, intercept, normalize) { + x = as.matrix(x) + y = as.numeric(y) + n = nrow(x) + p = ncol(x) + + if (intercept) { + bx = colMeans(x) + by = mean(y) + x = scale(x,bx,FALSE) + y = y-mean(y) + } else { + bx = rep(0,p) + by = 0 + } + if (normalize) { + sx = sqrt(colSums(x^2)) + x = scale(x,FALSE,sx) + } else { + sx = rep(1,p) + } + + return(list(x=x,y=y,bx=bx,by=by,sx=sx)) +} + +############################## + +# Interpolation function to get coefficients + +coef.interpolate <- function(betas, s, knots, dec=TRUE) { + # Sort the s values + o = order(s,dec=dec) + s = s[o] + + k = length(s) + mat = matrix(rep(knots,each=k),nrow=k) + if (dec) b = s >= mat + else b = s <= mat + blo = max.col(b,ties.method="first") + bhi = pmax(blo-1,1) + + i = bhi==blo + p = numeric(k) + p[i] = 0 + p[!i] = ((s-knots[blo])/(knots[bhi]-knots[blo]))[!i] + + beta = t((1-p)*t(betas[,blo,drop=FALSE]) + p*t(betas[,bhi,drop=FALSE])) + colnames(beta) = as.character(round(s,3)) + rownames(beta) = NULL + + # Return in original order + o = order(o) + return(beta[,o,drop=FALSE]) +} + +############################## + +checkargs.xy <- function(x, y) { + if (missing(x)) stop("x is missing") + if (is.null(x) || !is.matrix(x)) stop("x must be a matrix") + if (missing(y)) stop("y is missing") + if (is.null(y) || !is.numeric(y)) stop("y must be numeric") + if (ncol(x) == 0) stop("There must be at least one predictor [must have ncol(x) > 0]") + if (checkcols(x)) stop("x cannot have duplicate columns") + if (length(y) == 0) stop("There must be at least one data point [must have length(y) > 0]") + if (length(y)!=nrow(x)) stop("Dimensions don't match [length(y) != nrow(x)]") +} + +checkargs.misc <- function(sigma=NULL, alpha=NULL, k=NULL, + gridrange=NULL, gridpts=NULL, griddepth=NULL, + mult=NULL, ntimes=NULL, + beta=NULL, lambda=NULL, tol.beta=NULL, tol.kkt=NULL, + bh.q=NULL) { + + if (!is.null(sigma) && sigma <= 0) stop("sigma must be > 0") + if (!is.null(lambda) && lambda < 0) stop("lambda must be >= 0") + if (!is.null(alpha) && (alpha <= 0 || alpha >= 1)) stop("alpha must be between 0 and 1") + if (!is.null(k) && length(k) != 1) stop("k must be a single number") + if (!is.null(k) && (k < 1 || k != floor(k))) stop("k must be an integer >= 1") + if (!is.null(gridrange) && (length(gridrange) != 2 || gridrange[1] > gridrange[2])) + stop("gridrange must be an interval of the form c(a,b) with a <= b") + if (!is.null(gridpts) && (gridpts < 20 || gridpts != round(gridpts))) + stop("gridpts must be an integer >= 20") + if (!is.null(griddepth) && (griddepth > 10 || griddepth != round(griddepth))) + stop("griddepth must be an integer <= 10") + if (!is.null(mult) && mult < 0) stop("mult must be >= 0") + if (!is.null(ntimes) && (ntimes <= 0 || ntimes != round(ntimes))) + stop("ntimes must be an integer > 0") + if (!is.null(beta) && sum(beta!=0)==0) stop("Value of lambda too large, beta is zero") + if (!is.null(lambda) && length(lambda) != 1) stop("lambda must be a single number") + if (!is.null(lambda) && lambda < 0) stop("lambda must be >=0") + if (!is.null(tol.beta) && tol.beta <= 0) stop("tol.beta must be > 0") + if (!is.null(tol.kkt) && tol.kkt <= 0) stop("tol.kkt must be > 0") +} + +# Make sure that no two columms of A are the same +# (this works with probability one). + +checkcols <- function(A) { + b = rnorm(nrow(A)) + a = sort(t(A)%*%b) + if (any(diff(a)==0)) return(TRUE) + return(FALSE) +} + +estimateSigma <- function(x, y, intercept=TRUE, standardize=TRUE) { + checkargs.xy(x,rep(0,nrow(x))) + if(nrow(x)<10) stop("Number of observations must be at least 10 to run estimateSigma") + cvfit=cv.glmnet(x,y,intercept=intercept,standardize=standardize) + lamhat=cvfit$lambda.min + fit=glmnet(x,y,standardize=standardize) + yhat=predict(fit,x,s=lamhat) + nz=sum(predict(fit,s=lamhat, type="coef")!=0) + sigma=sqrt(sum((y-yhat)^2)/(length(y)-nz-1)) + return(list(sigmahat=sigma, df=nz)) +} + +# Update the QR factorization, after a column has been +# added. Here Q1 is m x n, Q2 is m x k, and R is n x n. + +updateQR <- function(Q1,Q2,R,col) { + m = nrow(Q1) + n = ncol(Q1) + k = ncol(Q2) + + a = .C("update1", + Q2=as.double(Q2), + w=as.double(t(Q2)%*%col), + m=as.integer(m), + k=as.integer(k), + dup=FALSE, + package="selectiveInference") + + Q2 = matrix(a$Q2,nrow=m) + w = c(t(Q1)%*%col,a$w) + + # Re-structure: delete a column from Q2, add one to + # Q1, and expand R + Q1 = cbind(Q1,Q2[,1]) + Q2 = Q2[,-1,drop=FALSE] + R = rbind(R,rep(0,n)) + R = cbind(R,w[Seq(1,n+1)]) + + return(list(Q1=Q1,Q2=Q2,R=R)) +} + +# Moore-Penrose pseudo inverse for symmetric matrices + +pinv <- function(A, tol=.Machine$double.eps) { + e = eigen(A) + v = Re(e$vec) + d = Re(e$val) + d[d > tol] = 1/d[d > tol] + d[d < tol] = 0 + if (length(d)==1) return(v*d*v) + else return(v %*% diag(d) %*% t(v)) +} diff --git a/selectiveInference-currentCRAN/R/funs.fixed.R b/selectiveInference-currentCRAN/R/funs.fixed.R new file mode 100644 index 0000000..b30d04c --- /dev/null +++ b/selectiveInference-currentCRAN/R/funs.fixed.R @@ -0,0 +1,218 @@ +# Lasso inference function (for fixed lambda). Note: here we are providing inference +# for the solution of +# min 1/2 || y - \beta_0 - X \beta ||_2^2 + \lambda || \beta ||_1 + +fixedLassoInf <- function(x, y, beta, lambda, family=c("gaussian","binomial","cox"),intercept=TRUE, status=NULL, +sigma=NULL, alpha=0.1, + type=c("partial","full"), tol.beta=1e-5, tol.kkt=0.1, + gridrange=c(-100,100), bits=NULL, verbose=FALSE) { + + family = match.arg(family) + this.call = match.call() + type = match.arg(type) + + if(family=="binomial") { + if(type!="partial") stop("Only type= partial allowed with binomial family") + out=fixedLogitLassoInf(x,y,beta,lambda,alpha=alpha, type="partial", tol.beta=tol.beta, tol.kkt=tol.kkt, + gridrange=gridrange, bits=bits, verbose=verbose,this.call=this.call) + return(out) + } +else if(family=="cox") { + if(type!="partial") stop("Only type= partial allowed with Cox family") + out=fixedCoxLassoInf(x,y,status,beta,lambda,alpha=alpha, type="partial",tol.beta=tol.beta, + tol.kkt=tol.kkt, gridrange=gridrange, bits=bits, verbose=verbose,this.call=this.call) + return(out) + } + +else{ + + + + checkargs.xy(x,y) + if (missing(beta) || is.null(beta)) stop("Must supply the solution beta") + if (missing(lambda) || is.null(lambda)) stop("Must supply the tuning parameter value lambda") + checkargs.misc(beta=beta,lambda=lambda,sigma=sigma,alpha=alpha, + gridrange=gridrange,tol.beta=tol.beta,tol.kkt=tol.kkt) + if (!is.null(bits) && !requireNamespace("Rmpfr",quietly=TRUE)) { + warning("Package Rmpfr is not installed, reverting to standard precision") + bits = NULL + } + + n = nrow(x) + p = ncol(x) + beta = as.numeric(beta) + if (length(beta) != p) stop("Since family='gaussian', beta must have length equal to ncol(x)") + + # If glmnet was run with an intercept term, center x and y + if (intercept==TRUE) { + obj = standardize(x,y,TRUE,FALSE) + x = obj$x + y = obj$y + } + + # Check the KKT conditions + g = t(x)%*%(y-x%*%beta) / lambda + if (any(abs(g) > 1+tol.kkt * sqrt(sum(y^2)))) + warning(paste("Solution beta does not satisfy the KKT conditions", + "(to within specified tolerances)")) + + vars = which(abs(beta) > tol.beta / sqrt(colSums(x^2))) + if(length(vars)==0){ + cat("Empty model",fill=T) + return() + } + if (any(sign(g[vars]) != sign(beta[vars]))) + warning(paste("Solution beta does not satisfy the KKT conditions", + "(to within specified tolerances). You might try rerunning", + "glmnet with a lower setting of the", + "'thresh' parameter, for a more accurate convergence.")) + + # Get lasso polyhedral region, of form Gy >= u + out = fixedLasso.poly(x,y,beta,lambda,vars) + G = out$G + u = out$u + + # Check polyhedral region + tol.poly = 0.01 + if (min(G %*% y - u) < -tol.poly * sqrt(sum(y^2))) + stop(paste("Polyhedral constraints not satisfied; you must recompute beta", + "more accurately. With glmnet, make sure to use exact=TRUE in coef(),", + "and check whether the specified value of lambda is too small", + "(beyond the grid of values visited by glmnet).", + "You might also try rerunning glmnet with a lower setting of the", + "'thresh' parameter, for a more accurate convergence.")) + + # Estimate sigma + if (is.null(sigma)) { + if (n >= 2*p) { + oo = intercept + sigma = sqrt(sum(lsfit(x,y,intercept=oo)$res^2)/(n-p-oo)) + } + else { + sigma = sd(y) + warning(paste(sprintf("p > n/2, and sd(y) = %0.3f used as an estimate of sigma;",sigma), + "you may want to use the estimateSigma function")) + } + } + + k = length(vars) + pv = vlo = vup = numeric(k) + vmat = matrix(0,k,n) + ci = tailarea = matrix(0,k,2) + sign = numeric(k) + + if (type=="full" & p > n) + warning(paste("type='full' does not make sense when p > n;", + "switching to type='partial'")) + + if (type=="partial" || p > n) { + xa = x[,vars,drop=F] + M = pinv(crossprod(xa)) %*% t(xa) + } + else { + M = pinv(crossprod(x)) %*% t(x) + M = M[vars,,drop=F] + } + + for (j in 1:k) { + if (verbose) cat(sprintf("Inference for variable %i ...\n",vars[j])) + + vj = M[j,] + mj = sqrt(sum(vj^2)) + vj = vj / mj # Standardize (divide by norm of vj) + sign[j] = sign(sum(vj*y)) + vj = sign[j] * vj + a = poly.pval(y,G,u,vj,sigma,bits) + pv[j] = a$pv + vlo[j] = a$vlo * mj # Unstandardize (mult by norm of vj) + vup[j] = a$vup * mj # Unstandardize (mult by norm of vj) + vmat[j,] = vj * mj * sign[j] # Unstandardize (mult by norm of vj) + + a = poly.int(y,G,u,vj,sigma,alpha,gridrange=gridrange, + flip=(sign[j]==-1),bits=bits) + ci[j,] = a$int * mj # Unstandardize (mult by norm of vj) + tailarea[j,] = a$tailarea + } + + out = list(type=type,lambda=lambda,pv=pv,ci=ci, + tailarea=tailarea,vlo=vlo,vup=vup,vmat=vmat,y=y, + vars=vars,sign=sign,sigma=sigma,alpha=alpha, + sd=sigma*sqrt(rowSums(vmat^2)), + coef0=vmat%*%y, + call=this.call) + class(out) = "fixedLassoInf" + return(out) +} +} + +############################# + + +fixedLasso.poly= +function(x, y, beta, lambda, a) { + xa = x[,a,drop=F] + xac = x[,!a,drop=F] + xai = pinv(crossprod(xa)) + xap = xai %*% t(xa) + za = sign(beta[a]) + if (length(za)>1) dz = diag(za) + if (length(za)==1) dz = matrix(za,1,1) + +# P = diag(1,nrow(xa)) - xa %*% xap + #NOTE: inactive constraints not needed below! + + G = -rbind( + # 1/lambda * t(xac) %*% P, + # -1/lambda * t(xac) %*% P, + -dz %*% xap + ) + lambda2=lambda + if(length(lambda)>1) lambda2=lambda[a] + u = -c( + # 1 - t(xac) %*% t(xap) %*% za, + # 1 + t(xac) %*% t(xap) %*% za, + -lambda2 * dz %*% xai %*% za) + + return(list(G=G,u=u)) +} + +############################## + +print.fixedLassoInf <- function(x, tailarea=TRUE, ...) { + cat("\nCall:\n") + dput(x$call) + + cat(sprintf("\nStandard deviation of noise (specified or estimated) sigma = %0.3f\n", + x$sigma)) + + cat(sprintf("\nTesting results at lambda = %0.3f, with alpha = %0.3f\n",x$lambda,x$alpha)) + cat("",fill=T) + tab = cbind(x$vars, + round(x$coef0,3), + round(x$coef0 / x$sd,3), + round(x$pv,3),round(x$ci,3)) + colnames(tab) = c("Var", "Coef", "Z-score", "P-value", "LowConfPt", "UpConfPt") + if (tailarea) { + tab = cbind(tab,round(x$tailarea,3)) + colnames(tab)[(ncol(tab)-1):ncol(tab)] = c("LowTailArea","UpTailArea") + } + rownames(tab) = rep("",nrow(tab)) + print(tab) + + cat(sprintf("\nNote: coefficients shown are %s regression coefficients\n", + ifelse(x$type=="partial","partial","full"))) + invisible() +} + +#estimateLambda <- function(x, sigma, nsamp=1000){ +# checkargs.xy(x,rep(0,nrow(x))) +# if(nsamp < 10) stop("More Monte Carlo samples required for estimation") +# if (length(sigma)!=1) stop("sigma should be a number > 0") + # if (sigma<=0) stop("sigma should be a number > 0") + + # n = nrow(x) + # eps = sigma*matrix(rnorm(nsamp*n),n,nsamp) + # lambda = 2*mean(apply(t(x)%*%eps,2,max)) + # return(lambda) +#} + diff --git a/selectiveInference-currentCRAN/R/funs.fixedCox.R b/selectiveInference-currentCRAN/R/funs.fixedCox.R new file mode 100644 index 0000000..ff778d9 --- /dev/null +++ b/selectiveInference-currentCRAN/R/funs.fixedCox.R @@ -0,0 +1,120 @@ +fixedCoxLassoInf=function(x,y,status,beta,lambda,alpha=.1, type=c("partial"),tol.beta=1e-5, tol.kkt=0.1, + gridrange=c(-100,100), bits=NULL, verbose=FALSE,this.call=NULL){ + + + checkargs.xy(x,y) + if(is.null(status)) stop("Must supply `status' argument") +if( sum(status==0)+sum(status==1)!=length(y)) stop("status vector must have values 0 or 1") + if (missing(beta) || is.null(beta)) stop("Must supply the solution beta") + if (missing(lambda) || is.null(lambda)) stop("Must supply the tuning parameter value lambda") + checkargs.misc(beta=beta,lambda=lambda,alpha=alpha, + gridrange=gridrange,tol.beta=tol.beta,tol.kkt=tol.kkt) + if (!is.null(bits) && !requireNamespace("Rmpfr",quietly=TRUE)) { + warning("Package Rmpfr is not installed, reverting to standard precision") + bits = NULL + } + + n=nrow(x) + p=ncol(x) + nvar=sum(beta!=0) + pv=vlo=vup=sd=rep(NA, nvar) + ci=tailarea=matrix(NA,nvar,2) + + + m=beta!=0 +vars=which(m) +if(sum(m)>0){ + bhat=beta[beta!=0] #penalized coefs just for active variables + s2=sign(bhat) + + #check KKT + + aaa=coxph(Surv(y,status)~x[,m],init=bhat,iter.max=0) # this gives the Cox model at exactly bhat + # so when we compute gradient and score + # we are evaluating at the LASSO solution + # naming of variables could be improved... + res=residuals(aaa,type="score") +if(!is.matrix(res)) res=matrix(res,ncol=1) +scor=colSums(res) + g=(scor+lambda*s2)/(2*lambda) +# cat(c(g,lambda,tol.kkt),fill=T) + if (any(abs(g) > 1+tol.kkt) ) + warning(paste("Solution beta does not satisfy the KKT conditions", + "(to within specified tolerances)")) + +# Hessian of partial likelihood at the LASSO solution +MM=vcov(aaa) + +bbar=(bhat+lambda*MM%*%s2) +A1=-(mydiag(s2)) +b1= -(mydiag(s2)%*%MM)%*%s2*lambda + + temp=max(A1%*%bbar-b1) + + +# compute p-values + +# JT: are we sure the signs of these are correctly handled? +# two sided p-values numerically agree with python but +# the one sided p-values are a bit off + + for(jj in 1:length(bbar)){ + vj=rep(0,length(bbar));vj[jj]=s2[jj] + + + junk=mypoly.pval.lee(bbar,A1,b1,vj,MM) + + pv[jj] = junk$pv + vlo[jj]=junk$vlo + vup[jj]=junk$vup + sd[jj]=junk$sd + + junk2=mypoly.int.lee(bbar,vj,vlo[jj],vup[jj],sd[jj],alpha) + ci[jj,]=junk2$int + tailarea[jj,] = junk2$tailarea + + } + # JT: these don't seem to be the real one-step estimators + fit0=coxph(Surv(y,status)~x[,m]) + coef0=fit0$coef + se0=sqrt(diag(fit0$var)) + zscore0=coef0/se0 + + out = list(lambda=lambda,pv=pv,ci=ci, + tailarea=tailarea,vlo=vlo,vup=vup,sd=sd, + vars=vars,alpha=alpha,coef0=coef0,zscore0=zscore0, + call=this.call) + class(out) = "fixedCoxLassoInf" +} +return(out) +} + + + +print.fixedCoxLassoInf <- function(x, tailarea=TRUE, ...) { + cat("\nCall:\n") + dput(x$call) + + cat(sprintf("\nStandard deviation of noise (specified or estimated) sigma = %0.3f\n", + x$sigma)) + + cat(sprintf("\nTesting results at lambda = %0.3f, with alpha = %0.3f\n",x$lambda,x$alpha)) + cat("",fill=T) + tab = cbind(x$vars, + round(x$coef0,3), + round(x$zscore0,3), + round(x$pv,3),round(x$ci,3)) + colnames(tab) = c("Var", "Coef", "Z-score", "P-value", "LowConfPt", "UpConfPt") + if (tailarea) { + tab = cbind(tab,round(x$tailarea,3)) + colnames(tab)[(ncol(tab)-1):ncol(tab)] = c("LowTailArea","UpTailArea") + } + rownames(tab) = rep("",nrow(tab)) + print(tab) + + cat(sprintf("\nNote: coefficients shown are %s regression coefficients\n", + ifelse(x$type=="partial","partial","full"))) + invisible() +} + + diff --git a/selectiveInference-currentCRAN/R/funs.fixedLogit.R b/selectiveInference-currentCRAN/R/funs.fixedLogit.R new file mode 100644 index 0000000..5b67354 --- /dev/null +++ b/selectiveInference-currentCRAN/R/funs.fixedLogit.R @@ -0,0 +1,151 @@ + +fixedLogitLassoInf=function(x,y,beta,lambda,alpha=.1, type=c("partial"), tol.beta=1e-5, tol.kkt=0.1, + gridrange=c(-100,100), bits=NULL, verbose=FALSE,this.call=NULL){ + + + type = match.arg(type) + checkargs.xy(x,y) + if (missing(beta) || is.null(beta)) stop("Must supply the solution beta") + if (missing(lambda) || is.null(lambda)) stop("Must supply the tuning parameter value lambda") + checkargs.misc(beta=beta,lambda=lambda,alpha=alpha, + gridrange=gridrange,tol.beta=tol.beta,tol.kkt=tol.kkt) + if (!is.null(bits) && !requireNamespace("Rmpfr",quietly=TRUE)) { + warning("Package Rmpfr is not installed, reverting to standard precision") + bits = NULL + } + + + n=length(y) + p=ncol(x) + # I assume that intcpt was used + if(length(beta)!=p+1) stop("Since family='binomial', beta must be of length ncol(x)+1, that is, it should include an intercept") + nvar=sum(beta[-1]!=0) + pv=vlo=vup=sd=rep(NA, nvar) + ci=tailarea=matrix(NA,nvar,2) + +#do we need to worry about standardization? + +# obj = standardize(x,y,TRUE,FALSE) + # x = obj$x + # y = obj$y + + m=beta[-1]!=0 #active set + + bhat=c(beta[1],beta[-1][beta[-1]!=0]) # intcpt plus active vars + s2=sign(bhat) + lam2m=diag(c(0,rep(lambda,sum(m)))) + + + xxm=cbind(1,x[,m]) + + etahat = xxm %*% bhat + prhat = as.vector(exp(etahat) / (1 + exp(etahat))) + ww=prhat*(1-prhat) + # w=diag(ww) + +#check KKT + z=etahat+(y-prhat)/ww + # g= t(x)%*%w%*%(z-etahat)/lambda # negative gradient scaled by lambda + g=scale(t(x),FALSE,1/ww)%*%(z-etahat)/lambda # negative gradient scaled by lambda + if (any(abs(g) > 1+tol.kkt) ) + warning(paste("Solution beta does not satisfy the KKT conditions", + "(to within specified tolerances)")) + + vars = which(abs(beta[-1]) > tol.beta / sqrt(colSums(x^2))) + if(length(vars)==0){ + cat("Empty model",fill=T) + return() + } + if (any(sign(g[vars]) != sign(beta[-1][vars]))) + warning(paste("Solution beta does not satisfy the KKT conditions", + "(to within specified tolerances). You might try rerunning", + "glmnet with a lower setting of the", + "'thresh' parameter, for a more accurate convergence.")) + + #constraints for active variables + # MM=solve(t(xxm)%*%w%*%xxm) + MM=solve(scale(t(xxm),F,1/ww)%*%xxm) + gm = c(0,-g[vars]*lambda) # gradient at LASSO solution, first entry is 0 because intercept is unpenalized + # at exact LASSO solution it should be s2[-1] + dbeta = MM %*% gm + + # bbar=(bhat+lam2m%*%MM%*%s2) # JT: this is wrong, shouldn't use sign of intercept anywhere... + bbar = bhat - dbeta + + A1=-(mydiag(s2))[-1,] + b1= (s2 * dbeta)[-1] + + tol.poly = 0.01 + if (max((A1 %*% bbar) - b1) > tol.poly) + stop(paste("Polyhedral constraints not satisfied; you must recompute beta", + "more accurately. With glmnet, make sure to use exact=TRUE in coef(),", + "and check whether the specified value of lambda is too small", + "(beyond the grid of values visited by glmnet).", + "You might also try rerunning glmnet with a lower setting of the", + "'thresh' parameter, for a more accurate convergence.")) + + + + for(jj in 1:sum(m)){ + vj=c(rep(0,sum(m)+1));vj[jj+1]=s2[jj+1] + # compute p-values + junk=mypoly.pval.lee(bbar,A1,b1,vj,MM) + pv[jj] = junk$pv + + vlo[jj]=junk$vlo + vup[jj]=junk$vup + sd[jj]=junk$sd + # junk2=mypoly.int.lee(bbar[-1], A1, b1,vj,MM[-1,-1],alpha=.1) + junk2=mypoly.int.lee(bbar,vj,vlo[jj],vup[jj],sd[jj],alpha=.1) + + ci[jj,]=junk2$int + tailarea[jj,] = junk2$tailarea + } + + # JT: these are not the one step estimators but they are close + fit0=glm(y~x[,m],family="binomial") + sfit0=summary(fit0) + coef0=bbar[-1] #fit0$coef[-1] + se0=sqrt(diag(MM)[-1]) # sfit0$cov.scaled)[-1]) + zscore0=coef0/se0 + + out = list(type=type,lambda=lambda,pv=pv,ci=ci, + tailarea=tailarea,vlo=vlo,vup=vup,sd=sd, + vars=vars,alpha=alpha,coef0=coef0,zscore0=zscore0, + call=this.call, + info.matrix=MM) # info.matrix is output just for debugging purposes at the moment + class(out) = "fixedLogitLassoInf" + return(out) + + } + + + +print.fixedLogitLassoInf <- function(x, tailarea=TRUE, ...) { + cat("\nCall:\n") + dput(x$call) + + cat(sprintf("\nStandard deviation of noise (specified or estimated) sigma = %0.3f\n", + x$sigma)) + + cat(sprintf("\nTesting results at lambda = %0.3f, with alpha = %0.3f\n",x$lambda,x$alpha)) + cat("",fill=T) + tab = cbind(x$vars, + round(x$coef0,3), + round(x$zscore0,3), + round(x$pv,3),round(x$ci,3)) + colnames(tab) = c("Var", "Coef", "Z-score", "P-value", "LowConfPt", "UpConfPt") + if (tailarea) { + tab = cbind(tab,round(x$tailarea,3)) + colnames(tab)[(ncol(tab)-1):ncol(tab)] = c("LowTailArea","UpTailArea") + } + rownames(tab) = rep("",nrow(tab)) + print(tab) + + cat(sprintf("\nNote: coefficients shown are %s regression coefficients\n", + ifelse(x$type=="partial","partial","full"))) + invisible() +} + + + diff --git a/selectiveInference-currentCRAN/R/funs.fs.R b/selectiveInference-currentCRAN/R/funs.fs.R new file mode 100644 index 0000000..b5ee511 --- /dev/null +++ b/selectiveInference-currentCRAN/R/funs.fs.R @@ -0,0 +1,482 @@ +# We compute the forward stepwise regression (FS) path given +# a response vector y and predictor matrix x. We assume +# that x has columns in general position. + +fs <- function(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, + verbose=FALSE) { + + this.call = match.call() + checkargs.xy(x=x,y=y) + + # Center and scale, etc. + obj = standardize(x,y,intercept,normalize) + x = obj$x + y = obj$y + bx = obj$bx + by = obj$by + sx = obj$sx + n = nrow(x) + p = ncol(x) + + ##### + # To keep consistent with the lar function, we parametrize + # so that the first step has all zero coefficients, + # Also, an interesting note: the effective "lambda" (maximal + # correlation with the residual) may increase with stepwise! + # So we don't keep track of it + + ##### + # Find the first variable to enter and its sign + working_x = scale(x,center=F,scale=sqrt(colSums(x^2))) + score = t(working_x)%*%y + i_hit = which.max(abs(score)) # Hitting coordinate + sign_hit = Sign(score[i_hit]) # Sign + signs = sign_hit # later signs will be appended to `signs` + + if (verbose) { + cat(sprintf("1. Adding variable %i, |A|=%i...",i_hit,1)) + } + + # Now iteratively find the new FS estimates + + # Things to keep track of, and return at the end + # JT: I guess the "buf" just saves us from making huge + # matrices we don't need? + + buf = min(maxsteps,500) + action = numeric(buf) # Actions taken + df = numeric(buf) # Degrees of freedom + beta = matrix(0,p,buf) # FS estimates + + action[1] = i_hit + df[1] = 0 + beta[,1] = 0 + + # Gamma matrix! + gbuf = max(2*p*3,2000) # Space for 3 steps, at least + gi = 0 # index into rows of Gamma matrix + + Gamma = matrix(0,gbuf,n) + Gamma[gi+Seq(1,p-1),] = t(sign_hit*working_x[,i_hit]+working_x[,-i_hit]); gi = gi+p-1 + Gamma[gi+Seq(1,p-1),] = t(sign_hit*working_x[,i_hit]-working_x[,-i_hit]); gi = gi+p-1 + Gamma[gi+1,] = t(sign_hit*working_x[,i_hit]); gi = gi+1 + + # nconstraint + nconstraint = numeric(buf) + vreg = matrix(0,buf,n) + nconstraint[1] = gi + vreg[1,] = sign_hit*x[,i_hit] / sum(x[,i_hit]^2) + + # Other things to keep track of, but not return + r = 1 # Size of active set + A = i_hit # Active set -- JT: isn't this basically the same as action? + I = Seq(1,p)[-i_hit] # Inactive set + X_active = x[,i_hit,drop=FALSE] # Matrix X[,A] + X_inactive = x[,-i_hit,drop=FALSE] # Matrix X[,I] + k = 2 # What step are we at? + # JT Why keep track of r and k instead of just saying k=r+1? + + # Compute a skinny QR decomposition of X_active + # JT: obs was used as variable name above -- this is something different, no? + # changed it to qr_X + + qr_X = qr(X_active) + Q = qr.Q(qr_X,complete=TRUE) + Q_active = Q[,1,drop=FALSE]; + Q_inactive = Q[,-1,drop=FALSE] + R = qr.R(qr_X) + + # Throughout the algorithm, we will maintain + # the decomposition X_active = Q_active*R. Dimensions: + # X_active: n x r + # Q_active: n x r + # Q_inactive: n x (n-r) + # R: r x r + + while (k<=maxsteps) { + ########## + # Check if we've reached the end of the buffer + if (k > length(action)) { + buf = length(action) + action = c(action,numeric(buf)) + df = c(df,numeric(buf)) + beta = cbind(beta,matrix(0,p,buf)) + nconstraint = c(nconstraint,numeric(buf)) + vreg = rbind(vreg,matrix(0,buf,n)) + } + + # Key quantities for the next entry + keepLs=backsolve(R,t(Q_active)%*%X_inactive) + X_inactive_resid = X_inactive - X_active %*% keepLs + working_x = scale(X_inactive_resid,center=F,scale=sqrt(colSums(X_inactive_resid^2))) + score = as.numeric(t(working_x)%*%y) + + # If the inactive set is empty, nothing will hit + if (r==min(n-intercept,p)) break + + # Otherwise find the next hitting time + else { + sign_score = Sign(score) + abs_score = sign_score * score + i_hit = which.max(abs_score) + sign_hit = sign_score[i_hit] + } + + # Record the solution + # what is the difference between "action" and "A"? + + action[k] = I[i_hit] + df[k] = r + beta[A,k] = backsolve(R,t(Q_active)%*%y) + + # Gamma matrix! + if (gi + 2*p > nrow(Gamma)) Gamma = rbind(Gamma,matrix(0,2*p+gbuf,n)) + working_x = t(sign_score*t(working_x)) + Gamma[gi+Seq(1,p-r),] = t(working_x); gi = gi+p-r + Gamma[gi+Seq(1,p-r-1),] = t(working_x[,i_hit]-working_x[,-i_hit]); gi = gi+p-r-1 + Gamma[gi+1,] = t(working_x[,i_hit]); gi = gi+1 + + # nconstraint, regression contrast + nconstraint[k] = gi + vreg[k,] = sign_hit*X_inactive_resid[,i_hit] / sum(X_inactive_resid[,i_hit]^2) + + # Update all of the variables + r = r+1 + A = c(A,I[i_hit]) + I = I[-i_hit] + signs = c(signs,sign_hit) + X_active = cbind(X_active,X_inactive[,i_hit]) + X_inactive = X_inactive[,-i_hit,drop=FALSE] + + # Update the QR decomposition + updated_qr = updateQR(Q_active,Q_inactive,R,X_active[,r]) + Q_active = updated_qr$Q1 + + # JT: why do we store Q_inactive? Doesn't seem to be used. + Q_inactive = updated_qr$Q2 + R = updated_qr$R + + if (verbose) { + cat(sprintf("\n%i. Adding variable %i, |A|=%i...",k,A[r],r)) + } + + # Step counter + k = k+1 + } + + # Trim + action = action[Seq(1,k-1)] + df = df[Seq(1,k-1),drop=FALSE] + beta = beta[,Seq(1,k-1),drop=FALSE] + Gamma = Gamma[Seq(1,gi),,drop=FALSE] + nconstraint = nconstraint[Seq(1,k-1)] + vreg = vreg[Seq(1,k-1),,drop=FALSE] + + # If we reached the maximum number of steps + if (k>maxsteps) { + if (verbose) { + cat(sprintf("\nReached the maximum number of steps (%i),",maxsteps)) + cat(" skipping the rest of the path.") + } + completepath = FALSE + bls = NULL + } + + # Otherwise, note that we completed the path + else { + completepath = TRUE + + # Record the least squares solution. Note that + # we have already computed this + bls = rep(0,p) + if(length(keepLs)>0) bls[A] = keepLs + } + + if (verbose) cat("\n") + + # Adjust for the effect of centering and scaling + if (intercept) df = df+1 + if (normalize) beta = beta/sx + if (normalize && completepath) bls = bls/sx + + # Assign column names + colnames(beta) = as.character(Seq(1,k-1)) + + out = list(action=action,sign=signs,df=df,beta=beta, + completepath=completepath,bls=bls, + Gamma=Gamma,nconstraint=nconstraint,vreg=vreg,x=x,y=y,bx=bx,by=by,sx=sx, + intercept=intercept,normalize=normalize,call=this.call) + class(out) = "fs" + return(out) +} + +############################## + +# Coefficient function for fs + +coef.fs <- function(object, s, ...) { + if (object$completepath) { + k = length(object$action)+1 + beta = cbind(object$beta,object$bls) + } else { + k = length(object$action) + beta = object$beta + } + + if (min(s)<0 || max(s)>k) stop(sprintf("s must be between 0 and %i",k)) + knots = 1:k + dec = FALSE + return(coef.interpolate(beta,s,knots,dec)) +} + +# Prediction function for fs + +predict.fs <- function(object, newx, s, ...) { + beta = coef.fs(object,s) + if (missing(newx)) newx = scale(object$x,FALSE,1/object$sx) + else newx = scale(newx,object$bx,FALSE) + return(newx %*% beta + object$by) +} + +############################## + +# FS inference function + +fsInf <- function(obj, sigma=NULL, alpha=0.1, k=NULL, type=c("active","all","aic"), + gridrange=c(-100,100), bits=NULL, mult=2, ntimes=2, verbose=FALSE) { + + this.call = match.call() + type = match.arg(type) + checkargs.misc(sigma=sigma,alpha=alpha,k=k, + gridrange=gridrange,mult=mult,ntimes=ntimes) + if (class(obj) != "fs") stop("obj must be an object of class fs") + if (is.null(k) && type=="active") k = length(obj$action) + if (is.null(k) && type=="all") stop("k must be specified when type = all") + if (!is.null(bits) && !requireNamespace("Rmpfr",quietly=TRUE)) { + warning("Package Rmpfr is not installed, reverting to standard precision") + bits = NULL + } + + k = min(k,length(obj$action)) # Round to last step + x = obj$x + y = obj$y + p = ncol(x) + n = nrow(x) + G = obj$Gamma + nconstraint = obj$nconstraint + sx = obj$sx + + if (is.null(sigma)) { + if (n >= 2*p) { + oo = obj$intercept + sigma = sqrt(sum(lsfit(x,y,intercept=oo)$res^2)/(n-p-oo)) + } + else { + sigma = sd(y) + warning(paste(sprintf("p > n/2, and sd(y) = %0.3f used as an estimate of sigma;",sigma), + "you may want to use the estimateSigma function")) + } + } + + khat = NULL + + if (type == "active") { + pv = vlo = vup = numeric(k) + vmat = matrix(0,k,n) + ci = tailarea = matrix(0,k,2) + vreg = obj$vreg[1:k,,drop=FALSE] + sign = obj$sign[1:k] + vars = obj$action[1:k] + + for (j in 1:k) { + if (verbose) cat(sprintf("Inference for variable %i ...\n",vars[j])) + + Gj = G[1:nconstraint[j],] + uj = rep(0,nconstraint[j]) + vj = vreg[j,] + mj = sqrt(sum(vj^2)) + vj = vj / mj # Standardize (divide by norm of vj) + a = poly.pval(y,Gj,uj,vj,sigma,bits) + pv[j] = a$pv + sxj = sx[vars[j]] + vlo[j] = a$vlo * mj / sxj # Unstandardize (mult by norm of vj / sxj) + vup[j] = a$vup * mj / sxj # Unstandardize (mult by norm of vj / sxj) + vmat[j,] = vj * mj / sxj # Unstandardize (mult by norm of vj / sxj) + + a = poly.int(y,Gj,uj,vj,sigma,alpha,gridrange=gridrange, + flip=(sign[j]==-1),bits=bits) + ci[j,] = a$int * mj / sxj # Unstandardize (mult by norm of vj / sxj) + tailarea[j,] = a$tailarea + } + + khat = forwardStop(pv,alpha) + } + + else { + if (type == "aic") { + out = aicStop(x,y,obj$action[1:k],obj$df[1:k],sigma,mult,ntimes) + khat = out$khat + m = out$stopped * ntimes + G = rbind(out$G,G[1:nconstraint[khat+m],]) # Take ntimes more steps past khat + u = c(out$u,rep(0,nconstraint[khat+m])) # (if we need to) + kk = khat + } + else { + G = G[1:nconstraint[k],] + u = rep(0,nconstraint[k]) + kk = k + } + + pv = vlo = vup = numeric(kk) + vmat = matrix(0,kk,n) + ci = tailarea = matrix(0,kk,2) + sign = numeric(kk) + vars = obj$action[1:kk] + xa = x[,vars] + M = pinv(crossprod(xa)) %*% t(xa) + + for (j in 1:kk) { + if (verbose) cat(sprintf("Inference for variable %i ...\n",vars[j])) + + vj = M[j,] + mj = sqrt(sum(vj^2)) + vj = vj / mj # Standardize (divide by norm of vj) + sign[j] = sign(sum(vj*y)) + vj = sign[j] * vj + Gj = rbind(G,vj) + uj = c(u,0) + + a = poly.pval(y,Gj,uj,vj,sigma,bits) + pv[j] = a$pv + sxj = sx[vars[j]] + vlo[j] = a$vlo * mj / sxj # Unstandardize (mult by norm of vj / sxj) + vup[j] = a$vup * mj / sxj # Unstandardize (mult by norm of vj / sxj) + vmat[j,] = vj * mj / sxj # Unstandardize (mult by norm of vj / sxj) + + a = poly.int(y,Gj,uj,vj,sigma,alpha,gridrange=gridrange, + flip=(sign[j]==-1),bits=bits) + ci[j,] = a$int * mj / sxj # Unstandardize (mult by norm of vj / sxj) + tailarea[j,] = a$tailarea + } + } + + # JT: why do we output vup, vlo? Are they used somewhere else? + + out = list(type=type,k=k,khat=khat,pv=pv,ci=ci, + tailarea=tailarea,vlo=vlo,vup=vup,vmat=vmat,y=y, + vars=vars,sign=sign,sigma=sigma,alpha=alpha, + call=this.call) + class(out) = "fsInf" + return(out) +} + +############################## + + +############################## + +print.fs <- function(x, ...) { + cat("\nCall:\n") + dput(x$call) + + cat("\nSequence of FS moves:\n") + nsteps = length(x$action) + tab = cbind(1:nsteps,x$action,x$sign) + colnames(tab) = c("Step","Var","Sign") + rownames(tab) = rep("",nrow(tab)) + print(tab) + invisible() +} + +print.fsInf <- function(x, tailarea=TRUE, ...) { + cat("\nCall:\n") + dput(x$call) + + cat(sprintf("\nStandard deviation of noise (specified or estimated) sigma = %0.3f\n", + x$sigma)) + + if (x$type == "active") { + cat(sprintf("\nSequential testing results with alpha = %0.3f\n",x$alpha)) + tab = cbind(1:length(x$pv),x$vars, + round(x$sign*x$vmat%*%x$y,3), + round(x$sign*x$vmat%*%x$y/(x$sigma*sqrt(rowSums(x$vmat^2))),3), + round(x$pv,3),round(x$ci,3)) + colnames(tab) = c("Step", "Var", "Coef", "Z-score", "P-value", + "LowConfPt", "UpConfPt") + if (tailarea) { + tab = cbind(tab,round(x$tailarea,3)) + colnames(tab)[(ncol(tab)-1):ncol(tab)] = c("LowTailArea","UpTailArea") + } + rownames(tab) = rep("",nrow(tab)) + print(tab) + + cat(sprintf("\nEstimated stopping point from ForwardStop rule = %i\n",x$khat)) + } + + else if (x$type == "all") { + cat(sprintf("\nTesting results at step = %i, with alpha = %0.3f\n",x$k,x$alpha)) + tab = cbind(x$vars, + round(x$sign*x$vmat%*%x$y,3), + round(x$sign*x$vmat%*%x$y/(x$sigma*sqrt(rowSums(x$vmat^2))),3), + round(x$pv,3),round(x$ci,3)) + colnames(tab) = c("Var", "Coef", "Z-score", "P-value", "LowConfPt", "UpConfPt") + if (tailarea) { + tab = cbind(tab,round(x$tailarea,3)) + colnames(tab)[(ncol(tab)-1):ncol(tab)] = c("LowTailArea","UpTailArea") + } + rownames(tab) = rep("",nrow(tab)) + print(tab) + } + + else if (x$type == "aic") { + cat(sprintf("\nTesting results at step = %i, with alpha = %0.3f\n",x$khat,x$alpha)) + tab = cbind(x$vars, + round(x$sign*x$vmat%*%x$y,3), + round(x$sign*x$vmat%*%x$y/(x$sigma*sqrt(rowSums(x$vmat^2))),3), + round(x$pv,3),round(x$ci,3)) + colnames(tab) = c("Var", "Coef", "Z-score", "P-value", "LowConfPt", "UpConfPt") + if (tailarea) { + tab = cbind(tab,round(x$tailarea,3)) + colnames(tab)[(ncol(tab)-1):ncol(tab)] = c("LowTailArea","UpTailArea") + } + rownames(tab) = rep("",nrow(tab)) + print(tab) + + cat(sprintf("\nEstimated stopping point from AIC rule = %i\n",x$khat)) + } + + invisible() +} + + +plot.fs <- function(x, breaks=TRUE, omit.zeros=TRUE, var.labels=TRUE, ...) { + if (x$completepath) { + k = length(x$action)+1 + beta = cbind(x$beta,x$bls) + } else { + k = length(x$action) + beta = x$beta + } + p = nrow(beta) + + xx = 1:k + xlab = "Step" + + if (omit.zeros) { + good.inds = matrix(FALSE,p,k) + good.inds[beta!=0] = TRUE + changes = t(apply(beta,1,diff))!=0 + good.inds[cbind(changes,rep(F,p))] = TRUE + good.inds[cbind(rep(F,p),changes)] = TRUE + beta[!good.inds] = NA + } + + plot(c(),c(),xlim=range(xx,na.rm=T),ylim=range(beta,na.rm=T), + xlab=xlab,ylab="Coefficients",main="Forward stepwise path",...) + abline(h=0,lwd=2) + matplot(xx,t(beta),type="l",lty=1,add=TRUE) + if (breaks) abline(v=xx,lty=2) + if (var.labels) axis(4,at=beta[,k],labels=1:p,cex=0.8,adj=0) + invisible() +} + diff --git a/selectiveInference-currentCRAN/R/funs.groupfs.R b/selectiveInference-currentCRAN/R/funs.groupfs.R new file mode 100644 index 0000000..b2c0447 --- /dev/null +++ b/selectiveInference-currentCRAN/R/funs.groupfs.R @@ -0,0 +1,794 @@ +#' Select a model with forward stepwise. +#' +#' This function implements forward selection of linear models almost identically to \code{\link[stats]{step}} with \code{direction = "forward"}. The reason this is a separate function from \code{\link{fs}} is that groups of variables (e.g. dummies encoding levels of a categorical variable) must be handled differently in the selective inference framework. +#' +#' @param x Matrix of predictors (n by p). +#' @param y Vector of outcomes (length n). +#' @param index Group membership indicator of length p. Check that \code{sort(unique(index)) = 1:G} where \code{G} is the number of distinct groups. +#' @param maxsteps Maximum number of steps for forward stepwise. +#' @param sigma Estimate of error standard deviation for use in AIC criterion. This determines the relative scale between RSS and the degrees of freedom penalty. Default is NULL corresponding to unknown sigma. When NULL, \code{link{groupfsInf}} performs truncated F inference instead of truncated \eqn{\chi}. See \code{\link[stats]{extractAIC}} for details on the AIC criterion. +#' @param k Multiplier of model size penalty, the default is \code{k = 2} for AIC. Use \code{k = log(n)} for BIC, or \code{k = 2log(p)} for RIC (best for high dimensions, when \eqn{p > n}). If \eqn{G < p} then RIC may be too restrictive and it would be better to use \code{log(G) < k < 2log(p)}. +#' @param intercept Should an intercept be included in the model? Default is TRUE. Does not count as a step. +#' @param center Should the columns of the design matrix be centered? Default is TRUE. +#' @param normalize Should the design matrix be normalized? Default is TRUE. +#' @param aicstop Early stopping if AIC increases. Default is 0 corresponding to no early stopping. Positive integer values specify the number of times the AIC is allowed to increase in a row, e.g. with \code{aicstop = 2} the algorithm will stop if the AIC criterion increases for 2 steps in a row. The default of \code{\link[stats]{step}} corresponds to \code{aicstop = 1}. +#' @param verbose Print out progress along the way? Default is FALSE. +#' @return An object of class "groupfs" containing information about the sequence of models in the forward stepwise algorithm. Call the function \code{\link{groupfsInf}} on this object to compute selective p-values. +#' @examples +#' x = matrix(rnorm(20*40), nrow=20) +#' index = sort(rep(1:20, 2)) +#' y = rnorm(20) + 2 * x[,1] - x[,4] +#' fit = groupfs(x, y, index, maxsteps = 5) +#' out = groupfsInf(fit) +#' out +#' @seealso \code{\link{groupfsInf}}, \code{\link{factorDesign}}. +groupfs <- function(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE, center = TRUE, normalize = TRUE, aicstop = 0, verbose = FALSE) { + + if (missing(index)) stop("Missing argument: index.") + p <- ncol(x) + n <- nrow(x) + + # Group labels + labels <- unique(index) + G <- length(labels) + inactive <- labels + active <- c() + + if (missing(maxsteps) || maxsteps >= min(n, G)) maxsteps <- min(n-1, G) + checkargs.xy(x=x, y=y) + checkargs.groupfs(x, index, maxsteps) + if (maxsteps > G) stop("maxsteps is larger than number of groups") + gsizes <- sort(rle(sort(index))$lengths, decreasing = TRUE) + if (sum(gsizes[1:maxsteps]) >= nrow(x)) { + maxsteps <- max(which(cumsum(gsizes) < nrow(x))) + warning(paste("If the largest groups are included the model will be saturated/overdetermined. To prevent this maxsteps has been changed to", maxsteps)) + } + + # Initialize copies of data for loop + by <- mean(y) + y.update <- y + if (intercept) y.update <- y - by + y.last <- y.update + + # Center and scale design matrix + xscaled <- scaleGroups(x, index, center, normalize) + xm <- xscaled$xm + xs <- xscaled$xs + x.update <- xscaled$x + + x.begin <- x.update + y.begin <- y.update + stopped <- FALSE + # Store all projections computed along the path + terms = projections = maxprojs = aicpens = maxpens = cumprojs = vector("list", maxsteps) + + # Store other information from each step + path.info <- data.frame(imax=integer(maxsteps), df=integer(maxsteps), AIC=numeric(maxsteps), RSS=numeric(maxsteps), RSSdrop=numeric(maxsteps), chisq=numeric(maxsteps)) + + modelrank <- as.numeric(intercept) + if (is.null(sigma)) { + modelrank <- modelrank + 1 + aic.begin <- aic.last <- n*(log(2*pi) + log(mean(y.update^2))) + k * (n + modelrank) + } else { + aic.begin <- aic.last <- sum(y.update^2)/sigma^2 - n + k * modelrank + } + if (verbose) print(paste0("Start: AIC=", round(aic.begin, 3)), quote = FALSE) + + # Begin main loop + for (step in 1:maxsteps) { + + added <- add1.groupfs(x.update, y.update, index, labels, inactive, k, sigma) + + # Group to be added + imax <- added$imax + inactive <- setdiff(inactive, imax) + active <- union(active, imax) + inactive.inds <- which(!index %in% active) + + # Rank of group + modelrank <- modelrank + added$df + + # Stop without adding if model has become saturated + if (modelrank >= n) { + stop("Saturated model. Abandon ship!") + } + + # Regress added group out of y and inactive x + P.imax <- added$maxproj %*% t(added$maxproj) + P.imax <- diag(rep(1, n)) - P.imax + y.update <- P.imax %*% y.update + x.update[, inactive.inds] <- P.imax %*% x.update[, inactive.inds] + + # Compute AIC + if (is.null(sigma)) { + added$AIC <- n * log(added$maxterm/n) - k * added$df + n*log(2*pi) + k * (n + modelrank) + } else { + added$AIC <- sum(y.update^2)/sigma^2 - n + k * modelrank + } + + projections[[step]] <- added$projections + maxprojs[[step]] <- added$maxproj + aicpens[[step]] <- added$aicpens + maxpens[[step]] <- added$maxpen + if (step == 1) cumprojs[[step]] <- P.imax + if (step > 1) cumprojs[[step]] <- P.imax %*% cumprojs[[step-1]] + terms[[step]] <- added$terms + + # Compute RSS for unadjusted chisq p-values + added$RSS <- sum(y.update^2) + scale.chisq <- 1 + + added$RSSdrop <- sum((y.last - y.update)^2) + added$chisq <- pchisq(added$RSSdrop/scale.chisq, lower.tail=FALSE, df = added$df) + y.last <- y.update + + # Projections are stored separately + step.info <- data.frame(added[-c(3:(length(added)-4))]) + path.info[step, ] <- step.info + + if (verbose) print(round(step.info, 3)) + + if (aicstop > 0 && step < maxsteps && step >= aicstop && aic.last < added$AIC) { + if (all(diff(c(aic.begin, path.info$AIC)[(step+1-aicstop):(step+1)]) > 0)) { + + if (is.null(sigma)) { + added$AIC <- n * log(added$maxterm/n) - k * added$df + n + n*log(2*pi) + k * modelrank + } else { + added$AIC <- sum(y.update^2)/sigma^2 - n + k * modelrank + } + + path.info <- path.info[1:step, ] + projections[(step+1):maxsteps] <- NULL + maxprojs[(step+1):maxsteps] <- NULL + aicpens[(step+1):maxsteps] <- NULL + maxpens[(step+1):maxsteps] <- NULL + cumprojs[(step+1):maxsteps] <- NULL + terms[(step+1):maxsteps] <- NULL + maxsteps <- step + stopped <- TRUE + break + } + } + aic.last <- added$AIC + } + + # Is there a better way of doing this? + # Use some projections already computed? + beta <- coef(lm(y.begin ~ x.begin[,index %in% path.info$imax]-1)) + names(beta) <- index[index %in% path.info$imax] + + # Create output object + value <- list(action = path.info$imax, L = path.info$L, AIC = path.info$AIC, projections = projections, maxprojs = maxprojs, aicpens = aicpens, maxpens = maxpens, cumprojs = cumprojs, log = path.info, index = index, y = y.begin, x = x.begin, coefficients = beta, bx = xm, by = by, sx = xs, sigma = sigma, intercept = intercept, call = match.call(), terms = terms) + + class(value) <- "groupfs" + attr(value, "center") <- center + attr(value, "normalize") <- normalize + attr(value, "labels") <- labels + attr(value, "maxsteps") <- maxsteps + attr(value, "sigma") <- sigma + attr(value, "k") <- k + attr(value, "aicstop") <- aicstop + attr(value, "stopped") <- stopped + if (is.null(attr(x, "varnames"))) { + attr(value, "varnames") <- colnames(x) + } else { + attr(value, "varnames") <- attr(x, "varnames") + } + return(value) +} + +#' Add one group to the model in \code{groupfs}. +#' +#' For internal use by \code{\link{groupfs}}. +#' +#' @param xr Design matrix at current step. +#' @param yr Response vector residual at current step. +#' @param index Group membership indicator of length p. +#' @param labels The unique elements of \code{index}. +#' @param inactive Labels of inactive groups. +#' @param k Multiplier of model size penalty, use \code{k = 2} for AIC, \code{k = log(n)} for BIC, or \code{k = log(p)} for RIC. +#' @param sigma Estimate of error standard deviation for use in AIC criterion. This determines the relative scale between RSS and the degrees of freedom penalty. See \code{\link{extractAIC}} for details. +#' @return Index \code{imax} of added group, value \code{L} of maximized negative AIC, lists of projection matrices defining quadratic model selection event. +add1.groupfs <- function(xr, yr, index, labels, inactive, k, sigma = NULL) { + + # Use characters to avoid issues where + # list() populates NULL lists in the positions + # of the active variables + ### Question for later: does this slow down lapply? + keys = as.character(inactive) + n <- nrow(xr) + + # Compute sums of squares to determine which group is added + # penalized by rank of group if k > 0 + projections = aicpens = terms = vector("list", length(keys)) + names(projections) = names(terms) = names(aicpens) = keys + for (key in keys) { + inds <- which(index == key) + xi <- xr[,inds] + ui <- svdu_thresh(xi) + dfi <- ncol(ui) + projections[[key]] <- ui + uy <- t(ui) %*% yr + if (is.null(sigma)) { + aicpens[[key]] <- exp(k*dfi/n) + terms[[key]] <- (sum(yr^2) - sum(uy^2)) * aicpens[[key]] + } else { + aicpens[[key]] <- sigma^2 * k * dfi + terms[[key]] <- (sum(yr^2) - sum(uy^2)) + aicpens[[key]] + } + } + + # Maximizer = group to be added + terms.optind <- which.min(terms) + imax <- inactive[terms.optind] + optkey <- which(keys == imax) + maxproj <- projections[[optkey]] + maxpen <- aicpens[[optkey]] + maxterm <- terms[[optkey]] + projections[[optkey]] <- NULL + aicpens[[optkey]] <- NULL + + return(list(imax=imax, df = ncol(maxproj), projections = projections, maxproj = maxproj, aicpens = aicpens, maxpen = maxpen, maxterm = maxterm, terms = terms)) +} + +# ----------------------------------------------------------- + +#' Compute selective p-values for a model fitted by \code{groupfs}. +#' +#' Computes p-values for each group of variables in a model fitted by \code{\link{groupfs}}. These p-values adjust for selection by truncating the usual \eqn{\chi^2} statistics to the regions implied by the model selection event. If the \code{sigma} to \code{\link{groupfs}} was NULL then groupfsInf uses truncated \eqn{F} statistics instead of truncated \eqn{\chi}. The \code{sigma} argument to groupfsInf allows users to override and use \eqn{\chi}, but this is not recommended unless \eqn{\sigma} can be estimated well (i.e. \eqn{n > p}). +#' +#' @param obj Object returned by \code{\link{groupfs}} function +#' @param sigma Estimate of error standard deviation. Default is NULL and in this case groupfsInf uses the value of sigma specified to \code{\link{groupfs}}. +#' @param verbose Print out progress along the way? Default is TRUE. +#' @return An object of class "groupfsInf" containing selective p-values for the fitted model \code{obj}. For comparison with \code{\link{fsInf}}, note that the option \code{type = "active"} is not available. +#' +#' \describe{ +#' \item{vars}{Labels of the active groups in the order they were included.} +#' \item{pv}{Selective p-values computed from appropriate truncated distributions.} +#' \item{sigma}{Estimate of error variance used in computing p-values.} +#' \item{TC or TF}{Observed value of truncated \eqn{\chi} or \eqn{F}.} +#' \item{df}{Rank of group of variables when it was added to the model.} +#' \item{support}{List of intervals defining the truncation region of the corresponding statistic.} +#' } +groupfsInf <- function(obj, sigma = NULL, verbose = TRUE) { + + if (!is.null(obj$cvobj) && attr(obj, "stopped")) { + stop("Cross-validation and early stopping cannot be used simultaneously.") + # This shouldn't happen in the first place! + # (it wouldn't anyway unless someone tries to trick it) + } + + n <- nrow(obj$x) + p <- ncol(obj$x) + maxsteps <- attr(obj, "maxsteps") + k <- attr(obj, "k") + index <- obj$index + x <- obj$x + y <- obj$y + Ep <- sum(index %in% obj$action) + + pvals = dfs = dfs2 = Tstats = numeric(maxsteps) + supports <- list() + + if (!is.null(sigma)) { + type <- "TC" + if (!is.null(obj$sigma)) { + cat(paste("Using specified value", sigma, "for sigma in place of the value", obj$sigma, "used by groupfs()\n")) + } + } else { + if (is.null(obj$sigma)) { + type <- "TF" + Pf <- svdu_thresh(obj$x[,which(obj$index %in% obj$action), drop = FALSE]) + dffull <- ncol(Pf) + df2 <- n - dffull - obj$intercept - 1 + Pfull <- Pf %*% t(Pf) + } else { + type <- "TC" + sigma <- obj$sigma + } + } + + # Compute p-value for each active group + for (j in 1:maxsteps) { + i <- obj$action[j] + if (verbose) { + string <- paste0("Step ", j, "/", attr(obj, "maxsteps"), ": computing P-value for group ", i) + if (!is.null(obj$cvobj)) string <- paste0(string, ", including constraints from cross-validation") + if (attr(obj, "stopped")) string <- paste0(string, ", including constraints from AICstop") + cat(paste(string, "\n")) + } + + if (type == "TC") { + # Form projection onto active set minus i + # and project x_i orthogonally + x_i <- obj$x[,which(obj$index == i), drop = FALSE] + if (length(obj$action) > 1) { + minus_i <- setdiff(obj$action, i) + x_minus_i <- svdu_thresh(obj$x[,which(obj$index %in% minus_i), drop = FALSE]) + x_i <- x_i - x_minus_i %*% t(x_minus_i) %*% x_i + } + + # Project y onto what remains of x_i + Ugtilde <- svdu_thresh(x_i) + R <- t(Ugtilde) %*% obj$y + TC <- sqrt(sum(R^2)) + eta <- Ugtilde %*% R / TC + Z <- obj$y - eta * TC + dfi <- ncol(Ugtilde) + Tstats[j] <- TC + dfs[j] <- dfi + + ydecomp <- list(Z=Z, eta=eta) + + } else { + + if (length(obj$action) > 1) { + minus_i <- setdiff(obj$action, i) + Psub <- svdu_thresh(obj$x[,which(obj$index %in% minus_i), drop = FALSE]) + Z <- Psub %*% t(Psub) %*% obj$y + df1 <- dffull - ncol(Psub) + } else { + Z <- rep(0, n) + df1 <- dffull + obj$intercept + 1 + } + + C <- df1/df2 + R1 <- obj$y - Z + R2 <- obj$y - Pfull %*% obj$y + R1sq <- sum(R1^2) + R2sq <- sum(R2^2) + R <- sqrt(R1sq) + delta <- R1-R2 + Vdelta <- delta/sqrt(sum(delta^2)) + V2 <- R2/sqrt(R2sq) + TF <- (R1sq-R2sq)/(C*R2sq) + Tstats[j] <- TF + dfs[j] <- df1 + + ydecomp <- list(R=R, Z=Z, Vd=Vdelta, V2=V2, C=C) + + } + + intervallist <- truncationRegion(obj, ydecomp, type) + + # Additional constraints from cross-validation? + if (!is.null(obj$cvobj)) { + intervallist <- c(intervallist, do.call(c, + lapply(obj$cvobj, function(cvf) { + if (type == "TC") { + ydecomp <- list(R=R[-cvf$fold], eta=eta[-cvf$fold], Z=Z[-cvf$fold]) + } else { + ydecomp <- list(R=R, Z=Z[-cvf$fold], Vd=Vdelta[-cvf$fold], V2=V2[-cvf$fold], C=C) # C correct? + } + truncationRegion(cvf, ydecomp, type) + }))) + intervallist <- c(intervallist, + lapply(obj$cvquad, function(cvquad) { + if (type == "TC") { + etacvquad <- t(eta) %*% cvquad + A <- etacvquad %*% eta + B <- 2 * etacvquad %*% Z + C <- t(Z) %*% cvquad %*% Z + quadratic_roots(A, B, C, tol = 1e-15) + } else { + + zcvquad <- t(Z) %*% cvquad + vdcvquad <- t(Vdelta) %*% cvquad + v2cvquad <- t(V2) %*% cvquad + x0 <- zcvquad %*% Z + x1 <- 2*R*zcvquad %*% Vdelta + x2 <- 2*R*zcvquad %*% V2 + x12 <- 2*R^2*vdcvquad %*% V2 + x11 <- R^2*vdcvquad %*% Vdelta + x22 <- R^2*v2cvquad %*% V2 + TF_roots(R, C, coeffs = list(x0=x0, x1=x1, x2=x2, x12=x12, x11=x11, x22=x22)) + } + })) + } + + # Additional constraints from AIC stopping + if (attr(obj, "stopped")) { + aicintervals <- vector("list", maxsteps) + aicstop <- attr(obj, "aicstop") + if (type == "TC") { + pen0 <- k * obj$intercept + aic.begin <- aic.last <- sum(obj$y^2)/sigma^2 - n + k * obj$intercept + } else { + pen0 <- exp(k * (1+obj$intercept)/n) + aic.begin <- n*(log(2*pi) + log(mean(obj$y^2))) + k * (1 + n + obj$intercept) + } + AICs <- c(aic.begin, obj$AIC) + + ulist <- c(list(matrix(0, n, 1)), obj$maxprojs) + penlist <- c(pen0, obj$maxpens) + zlist <- vector("list", maxsteps+1) + zlist[[1]] <- zlist[[2]] <- Z + if (type == "TC") { + etalist <- vector("list", maxsteps+1) + etalist[[1]] <- etalist[[2]] <- eta + } else { + vdlist <- v2list <- vector("list", maxsteps+1) + vdlist[[1]] <- vdlist[[2]] <- Vdelta + v2list[[1]] <- v2list[[2]] <- V2 + } + if (maxsteps > 1) { + for (step in 1:(maxsteps-1)) { + cproj <- obj$cumprojs[[step]] + zlist[[step+2]] <- cproj %*% Z + if (type == "TC") { + etalist[[step+2]] <- cproj %*% eta + } else { + vdlist[[step+2]] <- cproj %*% Vdelta + v2list[[step+2]] <- cproj %*% V2 + } + } + } + + for (step in 1:maxsteps) { + # Compare AIC at s+1 to AIC at s + # roots() functions assume g indexes smaller AIC + # this is step+1 until the last step + peng <- penlist[[step+1]] + Ug <- ulist[[step+1]] + Uh <- ulist[[step]] + Zg <- zlist[[step+1]] + Zh <- zlist[[step]] + + if (type == "TC") { + penh <- 0 + etag <- etalist[[step+1]] + etah <- etalist[[step]] + coeffs <- quadratic_coefficients(obj$sigma, Ug, Uh, peng, penh, etag, etah, Zg, Zh) + + if (AICs[step] < AICs[step+1]) { + coeffs <- lapply(coeffs, function(coeff) -coeff) + } + + intstep <- quadratic_roots(coeffs$A, coeffs$B, coeffs$C, tol = 1e-15) + + } else { + penh <- 1 + Vdg <- vdlist[[step+1]] + Vdh <- vdlist[[step]] + V2g <- v2list[[step+1]] + V2h <- v2list[[step]] + coeffs <- TF_coefficients(R, Ug, Uh, peng, penh, Zg, Zh, Vdg, Vdh, V2g, V2h) + + if (AICs[step] < AICs[step+1]) { + coeffs <- lapply(coeffs, function(coeff) -coeff) + } + + intstep <- TF_roots(R, C, coeffs) + } + + aicintervals[[step]] <- intstep + } + intervallist <- c(intervallist, aicintervals) + } + + # Compute intersection: + region <- do.call(interval_union, intervallist) + region <- interval_union(region, Intervals(c(-Inf,0))) + E <- interval_complement(region, check_valid = FALSE) + + if (length(E) == 0) { + stop(paste("Empty support at step", j)) + } + supports[[j]] <- E + + # E is now potentially a union of intervals + if (type == "TC") { + pvals[j] <- TC_surv(TC, sigma, dfi, E) + } else { + # write TF_surv function first + pvals[j] <- TF_surv(TF, df1, df2, E) + } + + } + + if (any(is.nan(pvals))) { + nanp <- which(is.nan(pvals)) + pvals[nanp] <- 0 + warning(paste0("P-value NaNs of the form 0/0 converted to 0 for group(s) ", paste(obj$action[nanp], collapse=","), ". This typically occurs for numerical reasons in the presence of a large signal-to-noise ratio.")) + } + + names(pvals) <- obj$action + out <- list(vars = obj$action, pv=pvals) + if (type == "TC") { + out$TC <- Tstats + out$sigma <- sigma + } else { + out$TF <- Tstats + out$df2 <- df2 + } + out$df <- dfs + out$support <- supports + class(out) <- "groupfsInf" + if (!is.null(attr(obj, "varnames"))) { + attr(out, "varnames") <- attr(obj, "varnames") + } + return(out) +} + +# ----------------------------------------------------------- + +TC_surv <- function(TC, sigma, df, E) { + if (length(E) == 0) { + stop("Empty TC support") + } + + # Sum truncated cdf over each part of E + denom <- do.call(sum, lapply(1:nrow(E), function(v) { + tchi_interval(E[v,1], E[v,2], sigma, df) + })) + + # Sum truncated cdf from observed value to max of + # truncation region + numer <- do.call(sum, lapply(1:nrow(E), function(v) { + lower <- E[v,1] + upper <- E[v,2] + if (upper > TC) { + # Observed value is left of this interval's right endpoint + if (lower < TC) { + # Observed value is in this interval + return(tchi_interval(TC, upper, sigma, df)) + } else { + # Observed value is not in this interval + return(tchi_interval(lower, upper, sigma, df)) + } + } else { + # Observed value is right of this entire interval + return(0) + } + })) + + # Survival function + value <- numer/denom + # Force p-value to lie in the [0,1] interval + # in case of numerical issues + value <- max(0, min(1, value)) + value +} + +tchi_interval <- function(lower, upper, sigma, df) { + a <- (lower/sigma)^2 + b <- (upper/sigma)^2 + if (b == Inf) { + integral <- pchisq(a, df, lower.tail = FALSE) + } else { + integral <- pchisq(b, df) - pchisq(a, df) + } + if ((integral < .Machine$double.eps) && (b < Inf)) { + integral <- num_int_chi(a, b, df) + } + return(integral) +} + +num_int_chi <- function(a, b, df, nsamp = 10000) { + grid <- seq(from=a, to=b, length.out=nsamp) + integrand <- dchisq(grid, df) + return((b-a)*mean(integrand)) +} + +TF_surv <- function(TF, df1, df2, E) { + if (length(E) == 0) { + stop("Empty TF support") + } + + # Sum truncated cdf over each part of E + denom <- do.call(sum, lapply(1:nrow(E), function(v) { + TF_interval(E[v,1], E[v,2], df1, df2) + })) + + # Sum truncated cdf from observed value to max of + # truncation region + numer <- do.call(sum, lapply(1:nrow(E), function(v) { + lower <- E[v,1] + upper <- E[v,2] + if (upper > TF) { + # Observed value is left of this interval's right endpoint + if (lower < TF) { + # Observed value is in this interval + return(TF_interval(TF, upper, df1, df2)) + } else { + # Observed value is not in this interval + return(TF_interval(lower, upper, df1, df2)) + } + } else { + # Observed value is right of this entire interval + return(0) + } + })) + + # Survival function + value <- numer/denom + # Force p-value to lie in the [0,1] interval + # in case of numerical issues + #value <- max(0, min(1, value)) + value +} + +TF_interval <- function(lower, upper, df1, df2) { + a <- lower + b <- upper + if (b == Inf) { + integral <- pf(a, df1, df2, lower.tail = FALSE) + } else { + integral <- pf(b, df1, df2) - pf(a, df1, df2) + } + if ((integral < .Machine$double.eps) && (b < Inf)) { + integral <- num_int_F(a, b, df1, df2) + } + return(integral) +} + +num_int_F <- function(a, b, df1, df2, nsamp = 10000) { + grid <- seq(from=a, to=b, length.out=nsamp) + integrand <- df(grid, df1, df2) + return((b-a)*mean(integrand)) +} + +#' Center and scale design matrix by groups +#' +#' For internal use by \code{\link{groupfs}}. +#' +#' @param x Design matrix. +#' @param index Group membership indicator of length p. +#' @param center Center groups, default is TRUE. +#' @param normalize Scale groups by Frobenius norm, default is TRUE. +#' @return +#' \describe{ +#' \item{x}{Optionally centered/scaled design matrix.} +#' \item{xm}{Means of groups in original design matrix.} +#' \item{xs}{Frobenius norms of groups in original design matrix.} +#' } +scaleGroups <- function(x, index, center = TRUE, normalize = TRUE) { + keys <- unique(index) + xm <- rep(0, ncol(x)) + xs <- rep(1, ncol(x)) + + for (j in keys) { + inds <- which(index == j) + if (center) { + xmj <- mean(x[, inds]) + xm[inds] <- xmj + x[, inds] <- x[, inds] - xmj + } + normsq <- sum(x[, inds]^2) + xsj <- sqrt(normsq) + xs[inds] <- xsj + if (xsj > 0) { + if (normalize) x[, inds] <- x[, inds] / xsj + } else { + stop(paste("Design matrix contains identically zero group of variables:", j)) + } + } + return(list(x=x, xm=xm, xs=xs)) +} + +#' Expand a data frame with factors to form a design matrix with the full binary encoding of each factor. +#' +#' When using \code{\link{groupfs}} with factor variables call this function first to create a design matrix. +#' +#' @param df Data frame containing some columns which are \code{factors}. +#' @return List containing +#' \describe{ +#' \item{x}{Design matrix, the first columns contain any numeric variables from the original date frame.} +#' \item{index}{Group membership indicator for expanded matrix.} +#' } +#' @examples +#' \dontrun{ +#' fd = factorDesign(warpbreaks) +#' y = rnorm(nrow(fd$x)) +#' fit = groupfs(fd$x, y, fd$index, maxsteps=2, intercept=F) +#' pvals = groupfsInf(fit) +#' } +factorDesign <- function(df) { + factor.inds <- sapply(df[1,], is.factor) + factor.labels <- which(factor.inds) + nfacs <- sum(factor.inds) + nlevs <- sapply(df[1,factor.inds], function(fac) nlevels(fac)) + totnlevs <- sum(nlevs) + num.num = indcounter = ncol(df) - nfacs + x <- matrix(nrow=nrow(df), ncol = totnlevs + num.num) + colnames(x) <- 1:ncol(x) + index <- integer(ncol(x)) + varnames <- character(ncol(df)) + if (num.num > 0) { + x[,1:num.num] <- df[, !factor.inds] + varnames[1:num.num] = colnames(x)[1:num.num] <- colnames(df)[1:num.num] + index[1:num.num] <- 1:num.num + indcounter <- indcounter + num.num - 1 + } + for (j in 1:nfacs) { + submat <- model.matrix(~ df[, factor.labels[j]] - 1) + indcounter <- indcounter+1 + submatinds <- indcounter:(indcounter+nlevs[j]-1) + indcounter <- indcounter + nlevs[j] - 1 + colnames(x)[submatinds] <- paste0(colnames(df)[num.num + j], ":", 1:nlevs[j]) + varnames[num.num + j] <- colnames(df)[num.num + j] + x[,submatinds] <- submat + index[submatinds] <- num.num + j + } + attr(x, "varnames") <- varnames + return(list(x = x, index = index)) +} + +svdu_thresh <- function(x) { + svdx <- svd(x) + inds <- svdx$d > svdx$d[1] * sqrt(.Machine$double.eps) + return(svdx$u[, inds, drop = FALSE]) +} + +flatten <- function(L) { + if (is.list(L[[1]])) return(unlist(L, recursive=FALSE)) + return(L) +} + +print.groupfs <- function(x, ...) { + cat("\nSequence of added groups:\n") + nsteps = length(x$action) + action <- x$action + vnames <- attr(x, "varnames") + if (length(vnames) > 0) action <- vnames[action] + tab = data.frame(Group = action, Rank = x$log$df, RSS = round(x$log$RSS, 3), AIC = round(x$log$AIC, 3)) + rownames(tab) = 1:nsteps + print(tab) + cat("\nUse groupfsInf() to compute P-values\n") + invisible() +} + + +coef.groupfs <- function(object, ...) { + return(object$coefficients) +} + +#' @name predict.groupfs +#' @aliases predict.groupfs +#' @aliases coef.groupfs +#' +#' @title Prediction and coefficient functions for \code{\link{groupfs}}. +#' +#' Make predictions or extract coefficients from a groupfs forward stepwise object. +#' +#' @param object Object returned by a call to \code{\link{groupfs}}. +#' @param newx Matrix of x values at which the predictions are desired. If NULL, the x values from groupfs fitting are used. +#' @return A vector of predictions or a vector of coefficients. +predict.groupfs <- function(object, newx) { + beta <- coef.groupfs(object) + if (missing(newx)) { + newx = object$x + } else { + newx <- scaleGroups(newx, object$index, attr(object, "center"), attr(object, "normalize"))$x + } + return(newx[, object$index %in% object$action] %*% beta + ifelse(object$intercept, object$by, 0)) +} + +print.groupfsInf <- function(x, ...) { + if (!is.null(x$sigma)) { + isTF <- FALSE + Tstat <- x$TC + cat(sprintf("\nStandard deviation of noise (specified or estimated) sigma = %0.3f\n", x$sigma)) + } else { + isTF <- TRUE + Tstat <- x$TF + } + action <- x$vars + vnames <- attr(x, "varnames") + if (length(vnames) > 0) action <- vnames[action] + tab = data.frame(Group = action, Pvalue = round(x$pv, 3), + TC = round(Tstat, 3), + df = x$df, Size = round(unlist(lapply(lapply(x$support, size), sum)), 3), + Ints = unlist(lapply(x$support, nrow)), Min =round(unlist(lapply(x$support, min)), 3), + Max = round(unlist(lapply(x$support, max)), 3)) + rownames(tab) = 1:length(x$vars) + if (isTF) names(tab)[3] <- "TF" + print(tab) + cat("\nInts is the number of intervals in the truncated chi selection region and Size is the sum of their lengths. Min and Max are the lowest and highest endpoints of the truncation region. No confidence intervals are reported by groupfsInf.\n") + invisible() +} + +checkargs.groupfs <- function(x, index, maxsteps) { + if (length(index) != ncol(x)) stop("Length of index does not match number of columns of x") + if ((round(maxsteps) != maxsteps) || (maxsteps <= 0)) stop("maxsteps must be an integer > 0") +} diff --git a/selectiveInference-currentCRAN/R/funs.inf.R b/selectiveInference-currentCRAN/R/funs.inf.R new file mode 100644 index 0000000..423b4c3 --- /dev/null +++ b/selectiveInference-currentCRAN/R/funs.inf.R @@ -0,0 +1,299 @@ +# Main p-value function + +poly.pval <- function(y, G, u, v, sigma, bits=NULL) { + z = sum(v*y) + vv = sum(v^2) + sd = sigma*sqrt(vv) + + rho = G %*% v / vv + vec = (u - G %*% y + rho*z) / rho + vlo = suppressWarnings(max(vec[rho>0])) + vup = suppressWarnings(min(vec[rho<0])) + + pv = tnorm.surv(z,0,sd,vlo,vup,bits) + return(list(pv=pv,vlo=vlo,vup=vup)) +} + +# Main confidence interval function + +poly.int <- function(y, G, u, v, sigma, alpha, gridrange=c(-100,100), + gridpts=100, griddepth=2, flip=FALSE, bits=NULL) { + + z = sum(v*y) + vv = sum(v^2) + sd = sigma*sqrt(vv) + + rho = G %*% v / vv + vec = (u - G %*% y + rho*z) / rho + vlo = suppressWarnings(max(vec[rho>0])) + vup = suppressWarnings(min(vec[rho<0])) + + xg = seq(gridrange[1]*sd,gridrange[2]*sd,length=gridpts) + fun = function(x) { tnorm.surv(z,x,sd,vlo,vup,bits) } + + int = grid.search(xg,fun,alpha/2,1-alpha/2,gridpts,griddepth) + tailarea = c(fun(int[1]),1-fun(int[2])) + + if (flip) { + int = -int[2:1] + tailarea = tailarea[2:1] + } + + return(list(int=int,tailarea=tailarea)) +} + +############################## + +# Assuming that grid is in sorted order from smallest to largest, +# and vals are monotonically increasing function values over the +# grid, returns the grid end points such that the corresponding +# vals are approximately equal to {val1, val2} + +grid.search <- function(grid, fun, val1, val2, gridpts=100, griddepth=2) { + n = length(grid) + vals = fun(grid) + + ii = which(vals >= val1) + jj = which(vals <= val2) + if (length(ii)==0) return(c(grid[n],Inf)) # All vals < val1 + if (length(jj)==0) return(c(-Inf,grid[1])) # All vals > val2 + # RJT: the above logic is correct ... but for simplicity, instead, + # we could just return c(-Inf,Inf) + + i1 = min(ii); i2 = max(jj) + if (i1==1) lo = -Inf + else lo = grid.bsearch(grid[i1-1],grid[i1],fun,val1,gridpts, + griddepth-1,below=TRUE) + if (i2==n) hi = Inf + else hi = grid.bsearch(grid[i2],grid[i2+1],fun,val2,gridpts, + griddepth-1,below=FALSE) + return(c(lo,hi)) +} + +# Repeated bin search to find the point x in the interval [left, right] +# that satisfies f(x) approx equal to val. If below=TRUE, then we seek +# x such that the above holds and f(x) <= val; else we seek f(x) >= val. + +grid.bsearch <- function(left, right, fun, val, gridpts=100, griddepth=1, below=TRUE) { + n = gridpts + depth = 1 + + while (depth <= griddepth) { + grid = seq(left,right,length=n) + vals = fun(grid) + + if (below) { + ii = which(vals >= val) + if (length(ii)==0) return(grid[n]) # All vals < val (shouldn't happen) + if ((i0=min(ii))==1) return(grid[1]) # All vals > val (shouldn't happen) + left = grid[i0-1] + right = grid[i0] + } + + else { + ii = which(vals <= val) + if (length(ii)==0) return(grid[1]) # All vals > val (shouldn't happen) + if ((i0=max(ii))==n) return(grid[n]) # All vals < val (shouldn't happen) + left = grid[i0] + right = grid[i0+1] + } + + depth = depth+1 + } + + return(ifelse(below, left, right)) +} + +# Returns Prob(Z>z | Z in [a,b]), where mean can be a vector + +tnorm.surv <- function(z, mean, sd, a, b, bits=NULL) { + z = max(min(z,b),a) + + # Check silly boundary cases + p = numeric(length(mean)) + p[mean==-Inf] = 0 + p[mean==Inf] = 1 + + # Try the multi precision floating point calculation first + o = is.finite(mean) + mm = mean[o] + pp = mpfr.tnorm.surv(z,mm,sd,a,b,bits) + + # If there are any NAs, then settle for an approximation + oo = is.na(pp) + if (any(oo)) pp[oo] = bryc.tnorm.surv(z,mm[oo],sd,a,b) + + p[o] = pp + return(p) +} + +# Returns Prob(Z>z | Z in [a,b]), where mean cane be a vector, using +# multi precision floating point calculations thanks to the Rmpfr package + +mpfr.tnorm.surv <- function(z, mean=0, sd=1, a, b, bits=NULL) { + # If bits is not NULL, then we are supposed to be using Rmpf + # (note that this was fail if Rmpfr is not installed; but + # by the time this function is being executed, this should + # have been properly checked at a higher level; and if Rmpfr + # is not installed, bits would have been previously set to NULL) + if (!is.null(bits)) { + z = Rmpfr::mpfr((z-mean)/sd, precBits=bits) + a = Rmpfr::mpfr((a-mean)/sd, precBits=bits) + b = Rmpfr::mpfr((b-mean)/sd, precBits=bits) + return(as.numeric((Rmpfr::pnorm(b)-Rmpfr::pnorm(z))/ + (Rmpfr::pnorm(b)-Rmpfr::pnorm(a)))) + } + + # Else, just use standard floating point calculations + z = (z-mean)/sd + a = (a-mean)/sd + b = (b-mean)/sd + return((pnorm(b)-pnorm(z))/(pnorm(b)-pnorm(a))) +} + +# Returns Prob(Z>z | Z in [a,b]), where mean can be a vector, based on +# A UNIFORM APPROXIMATION TO THE RIGHT NORMAL TAIL INTEGRAL, W Bryc +# Applied Mathematics and Computation +# Volume 127, Issues 23, 15 April 2002, Pages 365--374 +# https://math.uc.edu/~brycw/preprint/z-tail/z-tail.pdf + +bryc.tnorm.surv <- function(z, mean=0, sd=1, a, b) { + z = (z-mean)/sd + a = (a-mean)/sd + b = (b-mean)/sd + n = length(mean) + + term1 = exp(z*z) + o = a > -Inf + term1[o] = ff(a[o])*exp(-(a[o]^2-z[o]^2)/2) + term2 = rep(0,n) + oo = b < Inf + term2[oo] = ff(b[oo])*exp(-(b[oo]^2-z[oo]^2)/2) + p = (ff(z)-term2)/(term1-term2) + + # Sometimes the approximation can give wacky p-values, + # outside of [0,1] .. + #p[p<0 | p>1] = NA + p = pmin(1,pmax(0,p)) + return(p) +} + +ff <- function(z) { + return((z^2+5.575192695*z+12.7743632)/ + (z^3*sqrt(2*pi)+14.38718147*z*z+31.53531977*z+2*12.77436324)) +} + +# Return Prob(Z>z | Z in [a,b]), where mean can be a vector, based on +# Riemann approximation tricks, by Max G'Sell + +gsell.tnorm.surv <- function(z, mean=0, sd=1, a, b) { + return(max.approx.frac(a/sd,b/sd,z/sd,mean/sd)) +} + + +############################## + +forwardStop <- function(pv, alpha=.10){ + if (alpha<0 || alpha>1) stop("alpha must be in [0,1]") + if (min(pv,na.rm=T)<0 || max(pv,na.rm=T)>1) stop("pvalues must be in [0,1]") + val=-(1/(1:length(pv)))*cumsum(log(1-pv)) + oo = which(val <= alpha) + if (length(oo)==0) out=0 + else out = oo[length(oo)] + return(out) +} + +############################## + +aicStop <- function(x, y, action, df, sigma, mult=2, ntimes=2) { + n = length(y) + k = length(action) + aic = numeric(k) + G = matrix(0,nrow=0,ncol=n) + u = numeric(0) + count = 0 + + for (i in 1:k) { + A = action[1:i] + aic[i] = sum(lsfit(x[,A],y,intercept=F)$res^2) + mult*sigma^2*df[i] + + j = action[i] + if (i==1) xtil = x[,j] + else xtil = lsfit(x[,action[1:(i-1)]],x[,j],intercept=F)$res + s = sign(sum(xtil*y)) + + if (i==1 || aic[i] <= aic[i-1]) { + G = rbind(G,s*xtil/sqrt(sum(xtil^2))) + u = c(u,sqrt(mult)*sigma) + count = 0 + } + + else { + G = rbind(G,-s*xtil/sqrt(sum(xtil^2))) + u = c(u,-sqrt(mult)*sigma) + count = count+1 + if (count == ntimes) break + } + } + + if (i < k) { + khat = i - ntimes + aic = aic[1:i] + } + else khat = k + + return(list(khat=khat,G=G,u=u,aic=aic,stopped=(i0])) + sd=sqrt(vv) + pv = tnorm.surv(temp,0,sd,vlo,vup,bits) + return(list(pv=pv,vlo=vlo,vup=vup,sd=sd)) +} + + + +mypoly.int.lee= + function(y,eta,vlo,vup,sd, alpha, gridrange=c(-100,100),gridpts=100, griddepth=2, flip=FALSE, bits=NULL) { + # compute sel intervals from poly lemmma, full version from Lee et al for full matrix Sigma + + temp = sum(eta*y) + + xg = seq(gridrange[1]*sd,gridrange[2]*sd,length=gridpts) + fun = function(x) { tnorm.surv(temp,x,sd,vlo,vup,bits) } + + int = grid.search(xg,fun,alpha/2,1-alpha/2,gridpts,griddepth) + tailarea = c(fun(int[1]),1-fun(int[2])) + + if (flip) { + int = -int[2:1] + tailarea = tailarea[2:1] + } + + return(list(int=int,tailarea=tailarea)) +} + + + +mydiag=function(x){ + if(length(x)==1) out=x + if(length(x)>1) out=diag(x) + return(out) + } + diff --git a/selectiveInference-currentCRAN/R/funs.lar.R b/selectiveInference-currentCRAN/R/funs.lar.R new file mode 100644 index 0000000..f01ee3d --- /dev/null +++ b/selectiveInference-currentCRAN/R/funs.lar.R @@ -0,0 +1,632 @@ +# We compute the least angle regression (LAR) path given +# a response vector y and predictor matrix x. We assume +# that x has columns in general position. + +# NOTE: the df estimates at each lambda_k can be thought of as the df +# for all solutions corresponding to lambda in (lambda_k,lambda_{k-1}), +# the open interval to the *right* of the current lambda_k. + +# NOTE: x having columns in general position implies that the +# centered x satisfies a modified version of the general position +# condition, where we replace k < min(n,p) by k < min(n-1,p) in +# the definition. This is still sufficient to imply the uniqueness +# of the lasso solution, on the centered x + +lar <- function(x, y, maxsteps=2000, minlam=0, intercept=TRUE, normalize=TRUE, + verbose=FALSE) { + + this.call = match.call() + checkargs.xy(x=x,y=y) + + # Center and scale, etc. + obj = standardize(x,y,intercept,normalize) + x = obj$x + y = obj$y + bx = obj$bx + by = obj$by + sx = obj$sx + n = nrow(x) + p = ncol(x) + + ##### + # Find the first variable to enter and its sign + uhat = t(x)%*%y + ihit = which.max(abs(uhat)) # Hitting coordinate + hit = abs(uhat[ihit]) # Critical lambda + s = Sign(uhat[ihit]) # Sign + + if (verbose) { + cat(sprintf("1. lambda=%.3f, adding variable %i, |A|=%i...", + hit,ihit,1)) + } + + # Now iteratively find the new LAR estimate, and + # the next critical lambda + + # Things to keep track of, and return at the end + buf = min(maxsteps,500) + lambda = numeric(buf) # Critical lambdas + action = numeric(buf) # Actions taken + df = numeric(buf) # Degrees of freedom + beta = matrix(0,p,buf) # LAR estimates + + lambda[1] = hit + action[1] = ihit + df[1] = 0 + beta[,1] = 0 + + # Gamma matrix! + gbuf = max(2*p*3,2000) # Space for 3 steps, at least + gi = 0 + Gamma = matrix(0,gbuf,n) + Gamma[gi+Seq(1,p-1),] = t(s*x[,ihit]+x[,-ihit]); gi = gi+p-1 + Gamma[gi+Seq(1,p-1),] = t(s*x[,ihit]-x[,-ihit]); gi = gi+p-1 + Gamma[gi+1,] = t(s*x[,ihit]); gi = gi+1 + + # nk, regression contrast, M plus + nk = mp = numeric(buf) + vreg = matrix(0,buf,n) + + nk[1] = gi + vreg[1,] = s*x[,ihit] / sum(x[,ihit]^2) + if (p > 1) { + c = t(as.numeric(Sign(t(x)%*%y)) * t(x)) + ratio = t(c[,-ihit])%*%c[,ihit]/sum(c[,ihit]^2) + ip = 1-ratio > 0 + crit = (t(c[,-ihit])%*%y - ratio*sum(c[,ihit]*y))/(1-ratio) + mp[1] = max(max(crit[ip]),0) + } + + # Other things to keep track of, but not return + r = 1 # Size of active set + A = ihit # Active set + I = Seq(1,p)[-ihit] # Inactive set + X1 = x[,ihit,drop=FALSE] # Matrix X[,A] + X2 = x[,-ihit,drop=FALSE] # Matrix X[,I] + k = 2 # What step are we at? + + # Compute a skinny QR decomposition of X1 + obj = qr(X1) + Q = qr.Q(obj,complete=TRUE) + Q1 = Q[,1,drop=FALSE]; + Q2 = Q[,-1,drop=FALSE] + R = qr.R(obj) + + # Throughout the algorithm, we will maintain + # the decomposition X1 = Q1*R. Dimenisons: + # X1: n x r + # Q1: n x r + # Q2: n x (n-r) + # R: r x r + + while (k<=maxsteps && lambda[k-1]>=minlam) { + ########## + # Check if we've reached the end of the buffer + if (k > length(lambda)) { + buf = length(lambda) + lambda = c(lambda,numeric(buf)) + action = c(action,numeric(buf)) + df = c(df,numeric(buf)) + beta = cbind(beta,matrix(0,p,buf)) + nk = c(nk,numeric(buf)) + mp = c(mp,numeric(buf)) + vreg = rbind(vreg,matrix(0,buf,n)) + } + + # Key quantities for the hitting times + a = backsolve(R,t(Q1)%*%y) + b = backsolve(R,backsolve(R,s,transpose=TRUE)) + aa = as.numeric(t(X2) %*% (y - X1 %*% a)) + bb = as.numeric(t(X2) %*% (X1 %*% b)) + + # If the inactive set is empty, nothing will hit + if (r==min(n-intercept,p)) hit = 0 + + # Otherwise find the next hitting time + else { + shits = Sign(aa) + hits = aa/(shits-bb) + + # Make sure none of the hitting times are larger + # than the current lambda + hits[hits>lambda[k-1]] = 0 + + ihit = which.max(hits) + hit = hits[ihit] + shit = shits[ihit] + } + + # Stop if the next critical point is negative + if (hit<=0) break + + # Record the critical lambda and solution + lambda[k] = hit + action[k] = I[ihit] + df[k] = r + beta[A,k] = a-hit*b + + # Gamma matrix! + if (gi + 2*p > nrow(Gamma)) Gamma = rbind(Gamma,matrix(0,2*p+gbuf,n)) + X2perp = X2 - X1 %*% backsolve(R,t(Q1)%*%X2) + c = t(t(X2perp)/(shits-bb)) + Gamma[gi+Seq(1,p-r),] = shits*t(X2perp); gi = gi+p-r + Gamma[gi+Seq(1,p-r-1),] = t(c[,ihit]-c[,-ihit]); gi = gi+p-r-1 + Gamma[gi+1,] = t(c[,ihit]); gi = gi+1 + + # nk, regression contrast, M plus + nk[k] = gi + vreg[k,] = shit*X2perp[,ihit] / sum(X2perp[,ihit]^2) + if (ncol(c) > 1) { + ratio = t(c[,-ihit])%*%c[,ihit]/sum(c[,ihit]^2) + ip = 1-ratio > 0 + crit = (t(c[,-ihit])%*%y - ratio*sum(c[,ihit]*y))/(1-ratio) + mp[k] = max(max(crit[ip]),0) + } + + # Update all of the variables + r = r+1 + A = c(A,I[ihit]) + I = I[-ihit] + s = c(s,shit) + X1 = cbind(X1,X2[,ihit]) + X2 = X2[,-ihit,drop=FALSE] + + # Update the QR decomposition + obj = updateQR(Q1,Q2,R,X1[,r]) + Q1 = obj$Q1 + Q2 = obj$Q2 + R = obj$R + + if (verbose) { + cat(sprintf("\n%i. lambda=%.3f, adding variable %i, |A|=%i...", + k,hit,A[r],r)) + } + + # Step counter + k = k+1 + } + + # Trim + lambda = lambda[Seq(1,k-1)] + action = action[Seq(1,k-1)] + df = df[Seq(1,k-1),drop=FALSE] + beta = beta[,Seq(1,k-1),drop=FALSE] + Gamma = Gamma[Seq(1,gi),,drop=FALSE] + nk = nk[Seq(1,k-1)] + mp = mp[Seq(1,k-1)] + vreg = vreg[Seq(1,k-1),,drop=FALSE] + + # If we reached the maximum number of steps + if (k>maxsteps) { + if (verbose) { + cat(sprintf("\nReached the maximum number of steps (%i),",maxsteps)) + cat(" skipping the rest of the path.") + } + completepath = FALSE + bls = NULL + } + + # If we reached the minimum lambda + else if (lambda[k-1]k) stop(sprintf("s must be between 0 and %i",k)) + knots = 1:k + dec = FALSE + } else { + if (min(s)= %0.3f",min(lambda))) + knots = lambda + dec = TRUE + } + + return(coef.interpolate(beta,s,knots,dec)) +} + +# Prediction function for lar + +predict.lar <- function(object, newx, s, mode=c("step","lambda"), ...) { + beta = coef.lar(object,s,mode) + if (missing(newx)) newx = scale(object$x,FALSE,1/object$sx) + else newx = scale(newx,object$bx,FALSE) + return(newx %*% beta + object$by) +} + +coef.lasso <- coef.lar +predict.lasso <- predict.lar + +############################## + +# Lar inference function + +larInf <- function(obj, sigma=NULL, alpha=0.1, k=NULL, type=c("active","all","aic"), + gridrange=c(-100,100), bits=NULL, mult=2, ntimes=2, verbose=FALSE) { + + this.call = match.call() + type = match.arg(type) + checkargs.misc(sigma=sigma,alpha=alpha,k=k, + gridrange=gridrange,mult=mult,ntimes=ntimes) + if (class(obj) != "lar") stop("obj must be an object of class lar") + if (is.null(k) && type=="active") k = length(obj$action) + if (is.null(k) && type=="all") stop("k must be specified when type = all") + if (!is.null(bits) && !requireNamespace("Rmpfr",quietly=TRUE)) { + warning("Package Rmpfr is not installed, reverting to standard precision") + bits = NULL + } + + k = min(k,length(obj$action)) # Round to last step + x = obj$x + y = obj$y + p = ncol(x) + n = nrow(x) + G = obj$Gamma + nk = obj$nk + sx = obj$sx + + if (is.null(sigma)) { + if (n >= 2*p) { + oo = obj$intercept + sigma = sqrt(sum(lsfit(x,y,intercept=oo)$res^2)/(n-p-oo)) + } + else { + sigma = sd(y) + warning(paste(sprintf("p > n/2, and sd(y) = %0.3f used as an estimate of sigma;",sigma), + "you may want to use the estimateSigma function")) + } + } + + pv.spacing = pv.modspac = pv.covtest = khat = NULL + + if (type == "active") { + pv = vlo = vup = numeric(k) + vmat = matrix(0,k,n) + ci = tailarea = matrix(0,k,2) + pv.spacing = pv.modspac = pv.covtest = numeric(k) + vreg = obj$vreg[1:k,,drop=FALSE] + sign = obj$sign[1:k] + vars = obj$action[1:k] + + for (j in 1:k) { + if (verbose) cat(sprintf("Inference for variable %i ...\n",vars[j])) + + Gj = G[1:nk[j],] + uj = rep(0,nk[j]) + vj = vreg[j,] + mj = sqrt(sum(vj^2)) + vj = vj / mj # Standardize (divide by norm of vj) + a = poly.pval(y,Gj,uj,vj,sigma,bits) + pv[j] = a$pv + sxj = sx[vars[j]] + vlo[j] = a$vlo * mj / sxj # Unstandardize (mult by norm of vj / sxj) + vup[j] = a$vup * mj / sxj # Unstandardize (mult by norm of vj) + vmat[j,] = vj * mj / sxj # Unstandardize (mult by norm of vj / sxj) + + a = poly.int(y,Gj,uj,vj,sigma,alpha,gridrange=gridrange, + flip=(sign[j]==-1),bits=bits) + ci[j,] = a$int * mj / sxj # Unstandardize (mult by norm of vj / sxj) + tailarea[j,] = a$tailarea + + pv.spacing[j] = spacing.pval(obj,sigma,j) + pv.modspac[j] = modspac.pval(obj,sigma,j) + pv.covtest[j] = covtest.pval(obj,sigma,j) + } + + khat = forwardStop(pv,alpha) + } + + else { + if (type == "aic") { + out = aicStop(x,y,obj$action[1:k],obj$df[1:k],sigma,mult,ntimes) + khat = out$khat + m = out$stopped * ntimes + G = rbind(out$G,G[1:nk[khat+m],]) # Take ntimes more steps past khat + u = c(out$u,rep(0,nk[khat+m])) # (if we need to) + kk = khat + } + else { + G = G[1:nk[k],] + u = rep(0,nk[k]) + kk = k + } + + pv = vlo = vup = numeric(kk) + vmat = matrix(0,kk,n) + ci = tailarea = matrix(0,kk,2) + sign = numeric(kk) + vars = obj$action[1:kk] + xa = x[,vars] + M = pinv(crossprod(xa)) %*% t(xa) + + for (j in 1:kk) { + if (verbose) cat(sprintf("Inference for variable %i ...\n",vars[j])) + + vj = M[j,] + mj = sqrt(sum(vj^2)) + vj = vj / mj # Standardize (divide by norm of vj) + sign[j] = sign(sum(vj*y)) + vj = sign[j] * vj + Gj = rbind(G,vj) + uj = c(u,0) + + a = poly.pval(y,Gj,uj,vj,sigma,bits) + pv[j] = a$pv + sxj = sx[vars[j]] + vlo[j] = a$vlo * mj / sxj # Unstandardize (mult by norm of vj / sxj) + vup[j] = a$vup * mj / sxj # Unstandardize (mult by norm of vj / sxj) + vmat[j,] = vj * mj / sxj # Unstandardize (mult by norm of vj / sxj) + + a = poly.int(y,Gj,uj,vj,sigma,alpha,gridrange=gridrange, + flip=(sign[j]==-1),bits=bits) + ci[j,] = a$int * mj / sxj # Unstandardize (mult by norm of vj / sxj) + tailarea[j,] = a$tailarea + } + } + + out = list(type=type,k=k,khat=khat,pv=pv,ci=ci, + tailarea=tailarea,vlo=vlo,vup=vup,vmat=vmat,y=y, + pv.spacing=pv.spacing,pv.modspac=pv.modspac,pv.covtest=pv.covtest, + vars=vars,sign=sign,sigma=sigma,alpha=alpha, + call=this.call) + class(out) = "larInf" + return(out) +} + +############################## + +spacing.pval <- function(obj, sigma, k) { + v = obj$Gamma[obj$nk[k],] + sd = sigma*sqrt(sum(v^2)) + a = obj$mp[k] + + if (k==1) b = Inf + else b = obj$lambda[k-1] + + return(tnorm.surv(obj$lambda[k],0,sd,a,b)) +} + +modspac.pval <- function(obj, sigma, k) { + v = obj$Gamma[obj$nk[k],] + sd = sigma*sqrt(sum(v^2)) + + if (k < length(obj$action)) a = obj$lambda[k+1] + else if (obj$completepath) a = 0 + else { + warning(sprintf("Modified spacing p-values at step %i require %i steps of the lar path",k,k+1)) + return(NA) + } + + if (k==1) b = Inf + else b = obj$lambda[k-1] + + return(tnorm.surv(obj$lambda[k],0,sd,a,b)) +} + +covtest.pval <- function(obj, sigma, k) { + A = which(obj$beta[,k]!=0) + sA = sign(obj$beta[A,k]) + lam1 = obj$lambda[k] + j = obj$action[k] + + if (k < length(obj$action)) { + lam2 = obj$lambda[k+1] + sj = sign(obj$beta[j,k+1]) + } else if (obj$completepath) { + lam2 = 0 + sj = sign(obj$bls[j]) + } else { + warning(sprintf("Cov test p-values at step %i require %i steps of the lar path",k,k+1)) + return(NA) + } + + x = obj$x + if (length(A)==0) term1 = 0 + else term1 = x[,A,drop=F] %*% solve(crossprod(x[,A,drop=F]),sA) + term2 = x[,c(A,j),drop=F] %*% solve(crossprod(x[,c(A,j),drop=F]),c(sA,sj)) + c = sum((term2 - term1)^2) + t = c * lam1 * (lam1-lam2) / sigma^2 + return(1-pexp(t)) +} + +############################## + +print.lar <- function(x, ...) { + cat("\nCall:\n") + dput(x$call) + + cat("\nSequence of LAR moves:\n") + nsteps = length(x$action) + tab = cbind(1:nsteps,x$action,x$sign) + colnames(tab) = c("Step","Var","Sign") + rownames(tab) = rep("",nrow(tab)) + print(tab) + invisible() +} + +print.larInf <- function(x, tailarea=TRUE, ...) { + cat("\nCall:\n") + dput(x$call) + + cat(sprintf("\nStandard deviation of noise (specified or estimated) sigma = %0.3f\n", + x$sigma)) + + if (x$type == "active") { + cat(sprintf("\nSequential testing results with alpha = %0.3f\n",x$alpha)) + cat("",fill=T) + tab = cbind(1:length(x$pv),x$vars, + round(x$sign*x$vmat%*%x$y,3), + round(x$sign*x$vmat%*%x$y/(x$sigma*sqrt(rowSums(x$vmat^2))),3), + round(x$pv,3),round(x$ci,3),round(x$pv.spacing,3),round(x$pv.cov,3)) + colnames(tab) = c("Step", "Var", "Coef", "Z-score", "P-value", + "LowConfPt", "UpConfPt", "Spacing", "CovTest") + if (tailarea) { + tab = cbind(tab,round(x$tailarea,3)) + colnames(tab)[(ncol(tab)-1):ncol(tab)] = c("LowTailArea","UpTailArea") + } + rownames(tab) = rep("",nrow(tab)) + print(tab) + + cat(sprintf("\nEstimated stopping point from ForwardStop rule = %i\n",x$khat)) + } + + else if (x$type == "all") { + cat(sprintf("\nTesting results at step = %i, with alpha = %0.3f\n",x$k,x$alpha)) + cat("",fill=T) + tab = cbind(x$vars, + round(x$sign*x$vmat%*%x$y,3), + round(x$sign*x$vmat%*%x$y/(x$sigma*sqrt(rowSums(x$vmat^2))),3), + round(x$pv,3),round(x$ci,3)) + colnames(tab) = c("Var", "Coef", "Z-score", "P-value", "LowConfPt", "UpConfPt") + if (tailarea) { + tab = cbind(tab,round(x$tailarea,3)) + colnames(tab)[(ncol(tab)-1):ncol(tab)] = c("LowTailArea","UpTailArea") + } + rownames(tab) = rep("",nrow(tab)) + print(tab) + } + + else if (x$type == "aic") { + cat(sprintf("\nTesting results at step = %i, with alpha = %0.3f\n",x$khat,x$alpha)) + cat("",fill=T) + tab = cbind(x$vars, + round(x$sign*x$vmat%*%x$y,3), + round(x$sign*x$vmat%*%x$y/(x$sigma*sqrt(rowSums(x$vmat^2))),3), + round(x$pv,3),round(x$ci,3)) + colnames(tab) = c("Var", "Coef", "Z-score", "P-value", "LowConfPt", "UpConfPt") + if (tailarea) { + tab = cbind(tab,round(x$tailarea,3)) + colnames(tab)[(ncol(tab)-1):ncol(tab)] = c("LowTailArea","UpTailArea") + } + rownames(tab) = rep("",nrow(tab)) + print(tab) + + cat(sprintf("\nEstimated stopping point from AIC rule = %i\n",x$khat)) + } + + invisible() +} + +plot.lar <- function(x, xvar=c("norm","step","lambda"), breaks=TRUE, + omit.zeros=TRUE, var.labels=TRUE, ...) { + + if (x$completepath) { + k = length(x$action)+1 + lambda = c(x$lambda,0) + beta = cbind(x$beta,x$bls) + } else { + k = length(x$action) + lambda = x$lambda + beta = x$beta + } + p = nrow(beta) + + xvar = match.arg(xvar) + if (xvar=="norm") { + xx = colSums(abs(beta)) + xlab = "L1 norm" + } else if (xvar=="step") { + xx = 1:k + xlab = "Step" + } else { + xx = lambda + xlab = "Lambda" + } + + if (omit.zeros) { + good.inds = matrix(FALSE,p,k) + good.inds[beta!=0] = TRUE + changes = t(apply(beta,1,diff))!=0 + good.inds[cbind(changes,rep(F,p))] = TRUE + good.inds[cbind(rep(F,p),changes)] = TRUE + beta[!good.inds] = NA + } + + plot(c(),c(),xlim=range(xx,na.rm=T),ylim=range(beta,na.rm=T), + xlab=xlab,ylab="Coefficients",main="Least angle regression path",...) + abline(h=0,lwd=2) + matplot(xx,t(beta),type="l",lty=1,add=TRUE) + if (breaks) abline(v=xx,lty=2) + if (var.labels) axis(4,at=beta[,k],labels=1:p,cex=0.8,adj=0) + invisible() +} diff --git a/selectiveInference-currentCRAN/R/funs.manymeans.R b/selectiveInference-currentCRAN/R/funs.manymeans.R new file mode 100644 index 0000000..998e58d --- /dev/null +++ b/selectiveInference-currentCRAN/R/funs.manymeans.R @@ -0,0 +1,196 @@ +### functions for computing the many means estimates- Stephen Reid +### returns +### i) selected indices +### ii) selection adjusted point estimates +### iii) selection adjusted interval estimates +### iv) selection adjusted p-value of hypothesis testing whether underlying signal is 0 + +######################### +##### MAIN FUNCTION ##### +######################### + +#### user-facing function for computing +#### selected set +#### point and interval estimates +#### p-values +#### input: +#### - y = Vector of observations +#### - alpha = Significance level used in CI construction +#### - bh.q = q parameter for BH(q) procedure (default: NULL) +#### - k = Number of largest elements to consider (default: NULL) +#### - sigma = Estimate of standard deviation of one of the components +#### output: +#### * A list (of class "mm") with the following components : +#### - mu.hat = Vector of length length(y) containing the estimated signal size. If a sample element is not selected, then its signal size estimate is 0 +#### - selected.set = Indices into the vector y of the sample elements that were selected by our procedure (either BH(q) or top-K) +#### - CIs = Matrix with two columns and number of rows equal to number of elements in selected.set. Provides the post-selection CI bounds for the estimated signal sizes of selected elements. CIs given is rows in the same order as encountered in selected.set +#### - p.vals = Vector of p-values for the test of nullity of the signals of the selected sample elemetns. P-values given in the same order as selected.set + +manyMeans <- function(y, alpha=0.1, bh.q=NULL, k=NULL, sigma=1, verbose=FALSE) { + this.call = match.call() + if (missing(y) || is.null(y)) stop("y must be specified") + if (!is.numeric(y)) stop("y must be numeric") + if (alpha <= 0 || alpha >= 1) stop("alpha must be between 0 and 1") + if (is.null(bh.q) && is.null(k)) stop("You must either bh.q or k; they cannot both be NULL") + if (!is.null(bh.q) && (bh.q <= 0 || bh.q >= 1)) stop("bh.q must be between 0 and 1") + if (!is.null(k) && (k < 1 || k > length(y) || k != round(k))) stop("k must be an integer between 1 and length(y)") + if (sigma <= 0) stop("sigma must be > 0") + + n = length(y) + if (!is.null(bh.q)) { # use BH selection procedure + + if (verbose && !is.null(k)) cat("(Both bh.q and k have been specified; k is being ignored)\n") + k = NULL + ci=NULL + ### find the selected set and threshold + p.vals = 2*pnorm (abs(y)/sigma, 0, 1, lower.tail=FALSE) + order.p.vals = order(p.vals) + sorted.p.vals = p.vals[order.p.vals] + + options (warn=-1) # ignore warning if max is over empty set + last.reject = max(which (sorted.p.vals <= bh.q*(1:n)/n)) + options (warn=0) # reinstitute warnings + + if (last.reject == -Inf){ # none rejected + if (verbose) cat("No sample elements selected.\n") + out = list(mu.hat=rep(0,n), selected.set=NULL, pv=NULL, ci=NULL, method="BH(q)", + bh.q=bh.q, k=NULL, threshold=NULL, sigma=sigma, call=this.call) + class(out) = "manyMeans" + return(out) + } + + selected.set = order.p.vals[1:n <= last.reject] + threshold = sigma*qnorm (last.reject/2/n, lower.tail=FALSE) + } + + else{ # use top-k selection procedure + + ### find the selected set and threshold + if (k == n) { # make no changes - return MLE + z.alpha = qnorm (alpha/2, lower.tail=FALSE) + cis = cbind(y - z.alpha*sigma, y + z.alpha*sigma) + p.vals = 2*pnorm (abs(y), 0, sigma, lower.tail=FALSE) + + out = list(mu.hat=y, selected.set=1:n, pv=p.vals, ci=ci, method="top-K", + bh.q=NULL, k=k, threshold=NULL, sigma=sigma, call=this.call) + class(out) = "manyMeans" + return(out) + } + + order.abs.y = order (-abs(y)) + sorted.abs.y = y[order.abs.y] + + selected.set = order.abs.y[1:k] + threshold = abs(sorted.abs.y[k+1]) + } + + ### estimate their underlying signal sizes + mu.hat = sapply (selected.set, function(s){ + uniroot(f=function(mu){tn.mean(mu, -threshold, threshold, sigma=sigma) - y[s]}, lower=-10000*sigma, upper=10000*sigma)$root + }) + + ### and CIs + right.ci = sapply (selected.set, function(s){ + uniroot (f=function(mu){tn.cdf (y[s], mu, -threshold, threshold, sigma=sigma) - (alpha/2)}, lower=-10000*sigma, upper=10000*sigma)$root + }) + left.ci = sapply (selected.set, function(s){ + uniroot (f=function(mu){tn.cdf (y[s], mu, -threshold, threshold, sigma=sigma) - (1-alpha/2)}, lower=-10000*sigma, upper=10000*sigma)$root + }) + + ### and p-values + p.vals = sapply (selected.set, function(s){tn.cdf (y[s], 0, -threshold, threshold, sigma=sigma)}) + p.vals = 2*pmin(p.vals, 1-p.vals) + + ### arrange + order.selected.set = order (selected.set) + selected.set = selected.set[order.selected.set] + mu.hat = mu.hat[order.selected.set] + left.ci = left.ci[order.selected.set] + right.ci = right.ci[order.selected.set] + p.vals = p.vals[order.selected.set] + + mu.hat.final = rep(0, n) + mu.hat.final[selected.set] = mu.hat + + out = list(mu.hat=mu.hat.final, selected.set=selected.set, pv=p.vals, ci=cbind(left.ci,right.ci), + method=ifelse(is.null(bh.q), "top-K", "BH(q)"), sigma=sigma, bh.q=bh.q, k=k, threshold=threshold, + call=this.call) + class(out) = "manyMeans" + return(out) +} + +#### prints a pretty data frame summarising the information of an object of the mm class +#### columns for index, signal size estimate, left and right CI bounds and p values +#### only for those sample elements selected by the selection procedure associated with the mmObj +print.manyMeans <- function(x, ...){ + cat("\nCall:\n") + dput(x$call) + + cat(sprintf("\nStandard deviation of noise sigma = %0.3f\n\n", + x$sigma)) + + tab = cbind(x$selected.set,x$mu.hat[x$selected.set],x$pv,x$ci) + tab = round(tab,3) + colnames(tab) = c("SelInd","MuHat","P-value","LowConfPt","UpConfPt") + rownames(tab) = rep("",nrow(tab)) + print(tab) +} + +############################### +##### AUXILIARY FUNCTIONS ##### +############################### + +#### function returning the cumulative distribution function value +#### of a truncated Gaussian RV, truncated to interval (-Inf, a) \union (b, Inf) +#### with underlying Gaussian having mean parameter mu and standard deviation sigma +#### at value y +tn.cdf = function(y, mu, a, b, sigma=1){ + ## denominator + d_right = pnorm (b, mu, sigma, lower.tail=FALSE, log.p=TRUE) + d_left = pnorm (a, mu, sigma, lower.tail=TRUE, log.p=TRUE) + d_max = max(d_right, d_left) + d_log = d_max + log(exp(d_left - d_max) + exp(d_right - d_max)) + + + # numerator + if (y > a & y < b){ + n_log = d_left + return (exp(n_log-d_log)) + }else{ + if (y > b){ + # b and y + n_y_tilde = pnorm (y, mu, sigma, lower.tail=FALSE, log.p=TRUE) + n_b_tilde = pnorm (b, mu, sigma, lower.tail=FALSE, log.p=TRUE) + n_yb = n_b_tilde + log(1 - exp(n_y_tilde-n_b_tilde)) + + # a + n_a = d_left + + # combine + return(exp(n_yb-d_log) + exp(n_a-d_log)) + }else{ + n_log = pnorm (y, mu, sigma, lower.tail=TRUE, log.p=TRUE) + return (exp(n_log-d_log)) + } + } +} + +##### function for computing the mean of an N(mu, 1) RV +##### truncated to be on the interval (-Inf, a) \union (b, Inf) +tn.mean = function(mu, a, b, sigma=1){ + # denominator + d_left = pnorm (a, mu, sigma, lower.tail=TRUE, log.p=TRUE) + d_right = pnorm (b, mu, sigma, lower.tail=FALSE, log.p=TRUE) + d_max = max(d_left, d_right) + d_log = d_max + log(exp(d_left - d_max) + exp(d_right - d_max)) + + # numerator + n_left = dnorm (b, mu, sigma, log=TRUE) + n_right = dnorm (a, mu, sigma, log=TRUE) + + if (n_left > n_right){ + mu + exp(n_left + log(1 - exp(n_right-n_left)) - d_log) + }else{ + mu - exp(n_right + log(1 - exp(n_left-n_right)) - d_log) + } +} diff --git a/selectiveInference-currentCRAN/R/funs.max.R b/selectiveInference-currentCRAN/R/funs.max.R new file mode 100644 index 0000000..97f34af --- /dev/null +++ b/selectiveInference-currentCRAN/R/funs.max.R @@ -0,0 +1,84 @@ +#Mills lower bound on the integral of a standard normal over an interval +#Need to use something else near zero, where mills is bad. +mills.lb = function(a,b){ + t=5#threshold for switching to approximation + if(b=t){ + return(a*exp(-a^2/2)/(1+a^2)-exp(-b^2/2)/b) + } + if(b <= -t){ + return(mills.lb(-b,-a)) + } + #Note, like in the rest of this program, I'm not dividing by sqrt(2*pi), so we need to rescale here + sqrt(2*pi)*pnorm(min(b,t))-sqrt(2*pi)*pnorm(max(a,-t))+mills.lb(a,-t)+mills.lb(t,b) +} + + +#Truncate the interval. We chop off the ends near infinity, being careful +#so that the chopped tail is guaranteed to be close enough to its mills approximation +#a,b are the left and right endpoints, z is the mid point +#delta is the multiplicative error limit of the truncation on the final fraction (roughly) +truncate.interval = function(a,b,z,delta=1e-16){ + #Initialize some stuff + L.extra = 0#Extra probability to be added for the truncation on the left + R.extra = 0#Extra probability to be added for the truncation on the right + a.new = a#truncated interval bounds + b.new = b#truncated interval bounds + + #We need bounds on the integrals + RL.lb = mills.lb(a,b) + R.lb = mills.lb(z,b) + + #Now we bound the error we can tolerate in the tail approximations + eps.R = min(delta*R.lb,delta*RL.lb/2) + eps.L = delta*RL.lb/2 + + #For now, only truncate infinite end points + #Might want to change this one day, if we have trouble with super wide but finite intervals + if (b==Inf){ + f = function(x){x^2+log(1+x^2)+log(eps.R)}#encodes error of mills approximation + b.new = uniroot(f,c(1.1,1000))$root + b.new = max(b.new,z+1)#Don't truncate past z + R.extra = exp(-b.new^2/2)/b.new + } + if (a==-Inf){ + f = function(x){x^2+log(1+x^2)+log(eps.L)}#encodes error of mills approximation + a.new = -uniroot(f,c(1.1,1000))$root + a.new = min(a.new,z-1)#Don't truncate past z + L.extra = exp(-a.new^2/2)/a.new + } + + list(a=a.new,b=b.new,L.extra=L.extra,R.extra=R.extra,z=z) +} + + +#Approximates integral_a^b e^{-x^2/2+offset^2/2} dx +# offset is used to make ratios slightly more stable +# defaults to offset=0 +# Note that I've left out 1/sqrt(2*pi), you can add it in if you like +approx.int = function(a,b,n=1000,offset=0){ + delta = (b-a)/n #Step size, may want to vary in the future + x = seq(from=a,to=b,by=delta) + y = -x^2/2 + offset^2/2 # On the log scale + m = diff(y)/diff(x) # Line segment slopes + de = diff(exp(y)) # Difference on original scale + sum(de/m) #Sum of integrals of line segments (closed form) +} + +#Uses approx.int to evaluate int_x^b phi(z)dz / int_a^b phi(z)dz +#Right now offsets everything for a little more stability +#Uses truncation to handle infinite endpoints +max.approx.frac = function(a,b,x,mu=0,n=1000){ + returns = numeric(length(mu)) + for(i in 1:length(returns)){ + truncation = truncate.interval(a-mu[i],b-mu[i],x-mu[i]) + #Our offset will use the smaller of a and b in absolute value + offset = min(abs(truncation$a),abs(truncation$b)) + #The truncation also shifts by the mean, so we don't need to do it again for the end points + #but we do need to use the center z returned by truncation, rather than x, to match + left = approx.int(truncation$a,truncation$z,n,offset)+truncation$L.extra + right = approx.int(truncation$z,truncation$b,n,offset)+truncation$R.extra + returns[i] = right/(left+right) + } + returns +} diff --git a/selectiveInference-currentCRAN/R/funs.quadratic.R b/selectiveInference-currentCRAN/R/funs.quadratic.R new file mode 100644 index 0000000..799352b --- /dev/null +++ b/selectiveInference-currentCRAN/R/funs.quadratic.R @@ -0,0 +1,257 @@ +truncationRegion <- function(obj, ydecomp, type, tol = 1e-15) { + + n <- nrow(obj$x) + Z <- ydecomp$Z + if (type == "TC") { + eta <- ydecomp$eta + } else { + Vd <- ydecomp$Vd + V2 <- ydecomp$V2 + C <- ydecomp$C + R <- ydecomp$R + } + L <- lapply(1:length(obj$action), function(s) { + + Ug <- obj$maxprojs[[s]] + peng <- obj$maxpens[[s]] + if (s > 1) { + Zs <- obj$cumprojs[[s-1]] %*% Z + if (type == "TC") { + etas <- obj$cumprojs[[s-1]] %*% eta + } else { + Vds <- obj$cumprojs[[s-1]] %*% Vd + V2s <- obj$cumprojs[[s-1]] %*% V2 + } + } else { + Zs <- Z + if (type == "TC") { + etas <- eta + } else { + Vds <- Vd + V2s <- V2 + } + } + + num.projs <- length(obj$projections[[s]]) + if (num.projs == 0) { + return(list(Intervals(c(-Inf,0)))) + } else { + lapply(1:num.projs, function(l) { + + Uh <- obj$projections[[s]][[l]] + penh <- obj$aicpens[[s]][[l]] + # The quadratic form corresponding to + # (t*U + Z)^T %*% Q %*% (t*U + Z) \geq 0 + # we find the roots in t, if there are any + # and return the interval of potential t + if (type == "TC") { + coeffs <- quadratic_coefficients(obj$sigma, Ug, Uh, peng, penh, etas, etas, Zs, Zs) + quadratic_roots(coeffs$A, coeffs$B, coeffs$C, tol) + } else { + coeffs <- TF_coefficients(R, Ug, Uh, peng, penh, Zs, Zs, Vds, Vds, V2s, V2s) + roots <- TF_roots(R, C, coeffs) + return(roots) + } + }) + } + # LL is a list of intervals + }) + # L is now a list of lists of intervals + return(unlist(L, recursive = FALSE, use.names = FALSE)) +} + +quadratic_coefficients <- function(sigma, Ug, Uh, peng, penh, etag, etah, Zg, Zh) { + # g indexes minimizer, h the comparison + Uheta <- t(Uh) %*% etah + Ugeta <- t(Ug) %*% etag + UhZ <- t(Uh) %*% Zh + UgZ <- t(Ug) %*% Zg + etaZh <- t(etah) %*% Zh + etaZg <- t(etag) %*% Zg + if (is.null(sigma)) { + A <- penh * (sum(etah^2) - sum(Uheta^2)) - peng * (sum(etag^2) - sum(Ugeta^2)) + B <- 2 * penh * (etaZh - t(Uheta) %*% UhZ) - 2 * peng * (etaZg - t(Ugeta) %*% UgZ) + C <- penh * (sum(Zh^2) - sum(UhZ^2)) - peng * (sum(Zg^2) - sum(UgZ^2)) + } else { + A <- (sum(etah^2) - sum(Uheta^2)) - (sum(etag^2) - sum(Ugeta^2)) + B <- 2 * (etaZh - t(Uheta) %*% UhZ) - 2 * (etaZg - t(Ugeta) %*% UgZ) + C <- (sum(Zh^2) - sum(UhZ^2) + penh) - (sum(Zg^2) - sum(UgZ^2) + peng) + } + return(list(A = A, B = B, C = C)) +} + +quadratic_roots <- function(A, B, C, tol) { + disc <- B^2 - 4*A*C + b2a <- -B/(2*A) + + if (disc > tol) { + # Real roots + pm <- sqrt(disc)/(2*A) + endpoints <- sort(c(b2a - pm, b2a + pm)) + + } else { + # No real roots + if (A > -tol) { + # Quadratic form always positive + return(Intervals(c(-Inf,0))) + } else { + # Quadratic form always negative + stop("Empty TC support is infeasible") + } + } + + if (A > tol) { + # Parabola opens upward + if (min(endpoints) > 0) { + # Both roots positive, union of intervals + return(Intervals(rbind(c(-Inf,0), endpoints))) + } else { + # At least one negative root + return(Intervals(c(-Inf, max(0, endpoints[2])))) + } + } else { + if (A < -tol) { + # Parabola opens downward + if (endpoints[2] < 0) { + # Positive quadratic form only when t negative + stop("Negative TC support is infeasible") + } else { + # Part which is positive + if (endpoints[1] > 0) { + return(Intervals(rbind(c(-Inf, endpoints[1]), c(endpoints[2], Inf)))) + } else { + return(Intervals(c(endpoints[2], Inf))) + } + } + } else { + # a is too close to 0, quadratic is actually linear + if (abs(B) > tol) { + if (B > 0) { + return(Intervals(c(-Inf, max(0, -C/B)))) + } else { + if (-C/B < 0) stop("Infeasible linear equation") + return(Intervals(rbind(c(-Inf, 0), c(-C/B, Inf)))) + } + } else { + warning("Ill-conditioned quadratic") + return(Intervals(c(-Inf,0))) + } + } + } +} + +# Helper functions for TF roots +roots_to_checkpoints <- function(roots) { + checkpoints <- unique(sort(c(0, roots))) + return(c(0, (checkpoints + c(checkpoints[-1], 200 + checkpoints[length(checkpoints)]))/2)) +} +roots_to_partition <- function(roots) { + checkpoints <- unique(sort(c(0, roots))) + return(list(endpoints = c(checkpoints, Inf), midpoints = (checkpoints + c(checkpoints[-1], 200 + checkpoints[length(checkpoints)]))/2)) +} + +# Efficiently compute coefficients of one-dimensional TF slice function +TF_coefficients <- function(R, Ug, Uh, peng, penh, Zg, Zh, Vdg, Vdh, V2g, V2h) { + + UhZ <- t(Uh) %*% Zh + UgZ <- t(Ug) %*% Zg + UhVd <- t(Uh) %*% Vdh + UgVd <- t(Ug) %*% Vdg + UhV2 <- t(Uh) %*% V2h + UgV2 <- t(Ug) %*% V2g + VdZh <- sum(Vdh*Zh) + VdZg <- sum(Vdg*Zg) + V2Zh <- sum(V2h*Zh) + V2Zg <- sum(V2g*Zg) + + x0 <- penh * (sum(Zh^2) - sum(UhZ^2)) - peng * (sum(Zg^2) - sum(UgZ^2)) + x1 <- 2*R*(penh * (VdZh - sum(UhZ*UhVd)) - peng * (VdZg - sum(UgZ*UgVd))) + x2 <- 2*R*(penh * (V2Zh - sum(UhZ*UhV2)) - peng * (V2Zg - sum(UgZ*UgV2))) + x12 <- 2*R^2*(penh * (sum(Vdh*V2h) - sum(UhVd*UhV2)) - peng * (sum(Vdg*V2g) - sum(UgVd*UgV2))) + x11 <- R^2*(penh * (sum(Vdh^2) - sum(UhVd^2)) - peng * (sum(Vdg^2) - sum(UgVd^2))) + x22 <- R^2*(penh * (sum(V2h^2) - sum(UhV2^2)) - peng * (sum(V2g^2) - sum(UgV2^2))) + + return(list(x11=x11, x22=x22, x12=x12, x1=x1, x2=x2, x0=x0)) +} + +# Numerically solve for roots of TF slice using +# hybrid polyroot/uniroot approach + +TF_roots <- function(R, C, coeffs, tol = 1e-8, tol2 = 1e-6) { + + x11 <- coeffs$x11 + x22 <- coeffs$x22 + x12 <- coeffs$x12 + x1 <- coeffs$x1 + x2 <- coeffs$x2 + x0 <- coeffs$x0 + + g1 <- function(t) sqrt(C*t/(1+C*t)) + g2 <- function(t) 1/sqrt(1+C*t) + I <- function(t) x11*g1(t)^2 + x12*g1(t)*g2(t) + x22*g2(t)^2 + x1*g1(t) + x2*g2(t) + x0 + + z4 <- complex(real = -x11 + x22, imaginary = -x12)/4 + z3 <- complex(real = x2, imaginary = -x1)/2 + z2 <- complex(real = x11/2+x22/2+x0) + z1 <- Conj(z3) + z0 <- Conj(z4) + + zcoefs <- c(z0, z1, z2, z3, z4) + croots <- polyroot(zcoefs) + thetas <- Arg(croots) + # Can't specify polyroot precision :( + modinds <- Mod(croots) <= 1 + tol2 & Mod(croots) >= 1 - tol2 + angleinds <- thetas >=0 & thetas <= pi/2 + roots <- unique(thetas[which(modinds & angleinds)]) + troots <- tan(roots)^2/C + + checkpoints <- c() + if (length(troots) > 0) checkpoints <- roots_to_checkpoints(troots) + checkpoints <- sort( + c(checkpoints, 0, tol, tol2, + seq(from = sqrt(tol2), to = 1, length.out = 50), + seq(from = 1.2, to=50, length.out = 20), + 100, 1000, 10000)) + ## if (length(troots) == 0) { + ## # Polyroot didn't catch any roots + ## # ad-hoc check: + ## checkpoints <- c(0, tol, tol2, + ## seq(from = sqrt(tol2), to = 1, length.out = 50), + ## seq(from = 1.2, to=50, length.out = 20), + ## 100, 1000, 10000) + ## } else { + ## checkpoints <- roots_to_checkpoints(troots) + ## } + + signs <- sign(I(checkpoints)) + diffs <- c(0, diff(signs)) + changeinds <- which(diffs != 0) + + if (length(changeinds) > 0) { + + roots <- unlist(lapply(changeinds, function(ind) { + uniroot(I, lower = checkpoints[ind-1], upper = checkpoints[ind], tol = tol)$root + })) + + partition <- roots_to_partition(roots) + negative <- which(I(partition$midpoints) < 0) + + intervals <- matrix(NA, ncol=2) + for (i in 1:length(negative)) { + ind <- negative[i] + if ((i > 1) && (ind == negative[i-1] + 1)) { + # There was not a sign change at end of previous interval + intervals[nrow(intervals), 2] <- partition$endpoints[ind+1] + } else { + intervals <- rbind(intervals, c(partition$endpoints[ind], partition$endpoints[ind+1])) + } + } + + return(Intervals(intervals[-1,])) + } + + # Apparently no roots, always positive + if (I(0) < 0) stop("Infeasible constraint!") + return(Intervals(c(-Inf,0))) +} + diff --git a/selectiveInference-currentCRAN/man/estimateSigma.Rd b/selectiveInference-currentCRAN/man/estimateSigma.Rd new file mode 100644 index 0000000..c956121 --- /dev/null +++ b/selectiveInference-currentCRAN/man/estimateSigma.Rd @@ -0,0 +1,64 @@ +\name{estimateSigma} +\alias{estimateSigma} +%- Also NEED an '\alias' for EACH other topic documented here. +\title{ +Estimate the noise standard deviation in regression +} +\description{ +Estimates the standard deviation of the noise, for use in the selectiveInference +package +} +\usage{ +estimateSigma(x, y, intercept=TRUE, standardize=TRUE) +} +\arguments{ + \item{x}{ +Matrix of predictors (n by p) +} + \item{y}{ +Vector of outcomes (length n) +} +\item{intercept}{Should glmnet be run with an intercept? Default is TRUE} +\item{standardize}{Should glmnet be run with standardized predictors? Default is TRUE} +} +\details{ +This function estimates the standard deviation of the noise, in a linear regresion setting. +A lasso regression is fit, using cross-validation to estimate the tuning parameter lambda. +With sample size n, yhat equal to the predicted values and df being the number of nonzero +coefficients from the lasso fit, the estimate of sigma is \code{sqrt(sum((y-yhat)^2) / (n-df-1))}. +Important: if you are using glmnet to compute the lasso estimate, be sure to use the settings +for the "intercept" and "standardize" arguments in glmnet and estimateSigma. Same applies to fs +or lar, where the argument for standardization is called "normalize". +} +\value{ +\item{sigmahat}{The estimate of sigma} +\item{df}{The degrees of freedom of lasso fit used} +} +\references{ +Stephen Reid, Jerome Friedman, and Rob Tibshirani (2014). +A study of error variance estimation in lasso regression. arXiv:1311.5274. +} + +\author{Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid} + +\examples{ +set.seed(33) +n = 50 +p = 10 +sigma = 1 +x = matrix(rnorm(n*p),n,p) +beta = c(3,2,rep(0,p-2)) +y = x\%*\%beta + sigma*rnorm(n) + +# run forward stepwise +fsfit = fs(x,y) + +# estimate sigma +sigmahat = estimateSigma(x,y)$sigmahat + +# run sequential inference with estimated sigma +out = fsInf(fsfit,sigma=sigmahat) +out +} + + diff --git a/selectiveInference-currentCRAN/man/factorDesign.Rd b/selectiveInference-currentCRAN/man/factorDesign.Rd new file mode 100644 index 0000000..8e061db --- /dev/null +++ b/selectiveInference-currentCRAN/man/factorDesign.Rd @@ -0,0 +1,30 @@ +% Generated by roxygen2 (4.1.1): do not edit by hand +% Please edit documentation in R/funs.groupfs.R +\name{factorDesign} +\alias{factorDesign} +\title{Expand a data frame with factors to form a design matrix with the full binary encoding of each factor.} +\usage{ +factorDesign(df) +} +\arguments{ +\item{df}{Data frame containing some columns which are \code{factors}.} +} +\value{ +List containing +\describe{ + \item{x}{Design matrix, the first columns contain any numeric variables from the original date frame.} + \item{index}{Group membership indicator for expanded matrix.} +} +} +\description{ +When using \code{\link{groupfs}} with factor variables call this function first to create a design matrix. +} +\examples{ +\dontrun{ +fd = factorDesign(warpbreaks) +y = rnorm(nrow(fd$x)) +fit = groupfs(fd$x, y, fd$index, maxsteps=2, intercept=FALSE) +pvals = groupfsInf(fit) +} +} + diff --git a/selectiveInference-currentCRAN/man/fixedLassoInf.Rd b/selectiveInference-currentCRAN/man/fixedLassoInf.Rd new file mode 100644 index 0000000..6795ec1 --- /dev/null +++ b/selectiveInference-currentCRAN/man/fixedLassoInf.Rd @@ -0,0 +1,252 @@ +\name{fixedLassoInf} +\alias{fixedLassoInf} + +\title{ +Inference for the lasso, with a fixed lambda +} +\description{ +Compute p-values and confidence intervals for the lasso estimate, at a +fixed value of the tuning parameter lambda +} +\usage{ +fixedLassoInf(x, y, beta, lambda, family = c("gaussian", "binomial", + "cox"),intercept=TRUE, status=NULL, sigma=NULL, alpha=0.1, + type=c("partial","full"), tol.beta=1e-5, tol.kkt=0.1, + gridrange=c(-100,100), bits=NULL, verbose=FALSE) +} +\arguments{ + \item{x}{ +Matrix of predictors (n by p); +} + \item{y}{ +Vector of outcomes (length n) +} + \item{beta}{ +Estimated lasso coefficients (e.g., from glmnet). This is of length p +(so the intercept is not included as the first component). + + Be careful! This function uses the "standard" lasso objective + \deqn{ + 1/2 \|y - x \beta\|_2^2 + \lambda \|\beta\|_1. + } + In contrast, glmnet multiplies the first term by a factor of 1/n. + So after running glmnet, to extract the beta corresponding to a value lambda, + you need to use \code{beta = coef(obj, s=lambda/n)[-1]}, + where obj is the object returned by glmnet (and [-1] removes the intercept, + which glmnet always puts in the first component) +} + \item{lambda}{ +Value of lambda used to compute beta. See the above warning +} + +\item{family}{Response type: "gaussian" (default), "binomial", or + "cox" (for censored survival data) } + +\item{sigma}{ +Estimate of error standard deviation. If NULL (default), this is estimated +using the mean squared residual of the full least squares fit when n >= 2p, and +using the standard deviation of y when n < 2p. In the latter case, the user +should use \code{\link{estimateSigma}} function for a more accurate estimate. +Not used for family= "binomial", or "cox" +} +\item{alpha}{ +Significance level for confidence intervals (target is miscoverage alpha/2 in each tail) +} +\item{intercept}{ +Was the lasso problem solved (e.g., by glmnet) with an intercept in the model? +Default is TRUE. Must be TRUE for "binomial" family. Not used for 'cox" family, where no intercept is assumed. +} +\item{status}{Censoring status for Cox model; 1=failurem 0=censored} +\item{type}{Contrast type for p-values and confidence intervals: default is +"partial"---meaning that the contrasts tested are the partial population +regression coefficients, within the active set of predictors; the alternative is +"full"---meaning that the full population regression coefficients are tested. +The latter does not make sense when p > n.} +\item{tol.beta}{ +Tolerance for determining if a coefficient is zero +} +\item{tol.kkt}{ +Tolerance for determining if an entry of the subgradient is zero +} +\item{gridrange}{ +Grid range for constructing confidence intervals, on the standardized scale +} +\item{bits}{ +Number of bits to be used for p-value and confidence interval calculations. Default is +NULL, in which case standard floating point calculations are performed. When not NULL, +multiple precision floating point calculations are performed with the specified number +of bits, using the R package \code{Rmpfr} (if this package is not installed, then a +warning is thrown, and standard floating point calculations are pursued). +Note: standard double precision uses 53 bits +so, e.g., a choice of 200 bits uses about 4 times double precision. The confidence +interval computation is sometimes numerically challenging, and the extra precision can be +helpful (though computationally more costly). In particular, extra precision might be tried +if the values in the output columns of \code{tailarea} differ noticeably from alpha/2. +} +\item{verbose}{ +Print out progress along the way? Default is FALSE} +} + +\details{ +This function computes selective p-values and confidence intervals for the lasso, +given a fixed value of the tuning parameter lambda. +Three different response types are supported: gaussian, binomial and Cox. +The confidence interval construction involves numerical search and can be fragile: +if the observed statistic is too close to either end of the truncation interval +(vlo and vup, see references), then one or possibly both endpoints of the interval of +desired coverage cannot be computed, and default to +/- Inf. The output \code{tailarea} +gives the achieved Gaussian tail areas for the reported intervals---these should be close +to alpha/2, and can be used for error-checking purposes. + +Important!: Before running glmnet (or some other lasso-solver) x should be centered, that is x <- scale(X,TRUE,FALSE). +In addition, if standardization of the predictors is desired, x should be scaled as well: x <- scale(x,TRUE,TRUE). +Then when running glmnet, set standardize=F. See example below. + +The penalty.factor facility in glmmet-- allowing different penalties lambda for each predictor, +is not yet implemented in fixedLassoInf. However you can finesse this--- see the example below. One caveat- using this approach, a penalty factor of zero (forcing a predictor in) +is not allowed. + +Note that the coefficients and standard errors reported are unregularized. +Eg for the Gaussian, they are the usual least squares estimates and standard errors +for the model fit to the actice set from the lasso. +} +\value{ +\item{type}{Type of coefficients tested (partial or full)} +\item{lambda}{Value of tuning parameter lambda used} +\item{pv}{One-sided P-values for active variables, uses the fact we have conditioned on the sign.} +\item{ci}{Confidence intervals} +\item{tailarea}{Realized tail areas (lower and upper) for each confidence interval} +\item{vlo}{Lower truncation limits for statistics} +\item{vup}{Upper truncation limits for statistics} +\item{vmat}{Linear contrasts that define the observed statistics} +\item{y}{Vector of outcomes} +\item{vars}{Variables in active set} +\item{sign}{Signs of active coefficients} +\item{alpha}{Desired coverage (alpha/2 in each tail)} +\item{sigma}{Value of error standard deviation (sigma) used} +\item{call}{The call to lassoInf} +} + +\references{ +Jason Lee, Dennis Sun, Yuekai Sun, and Jonathan Taylor (2013). +Exact post-selection inference, with application to the lasso. arXiv:1311.6238. + + Jonathan Taylor and Robert Tibshirani (2016) Post-selection inference for L1-penalized likelihood models. +arXiv:1602.07358 + +} +\author{Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid} + +\examples{ +set.seed(43) +n = 50 +p = 10 +sigma = 1 + +x = matrix(rnorm(n*p),n,p) +x=scale(x,TRUE,TRUE) + +beta = c(3,2,rep(0,p-2)) +y = x\%*\%beta + sigma*rnorm(n) + +# first run glmnet +gfit = glmnet(x,y,standardize=FALSE) + +# extract coef for a given lambda; note the 1/n factor! +# (and we don't save the intercept term) +lambda = .8 +beta = coef(gfit, s=lambda/n, exact=TRUE,x=x,y=y)[-1] + +# compute fixed lambda p-values and selection intervals +out = fixedLassoInf(x,y,beta,lambda,sigma=sigma) +out + + +## as above, but use lar function instead to get initial +## lasso fit (should get same results) + lfit = lar(x,y,normalize=FALSE) + beta = coef(lfit,s=lambda,mode="lambda",x=x,y=y) + out2 = fixedLassoInf(x,y,beta,lambda,sigma=sigma) + out2 + +## mimic different penalty factors by first scaling x + set.seed(43) +n = 50 +p = 10 +sigma = 1 + +x = matrix(rnorm(n*p),n,p) +x=scale(x,TRUE,TRUE) + +beta = c(3,2,rep(0,p-2)) +y = x\%*\%beta + sigma*rnorm(n) +pf=c(rep(1,7),rep(.1,3)) #define penalty factors +pf=p*pf/sum(pf) # penalty factors should be rescaled so they sum to p +xs=scale(x,FALSE,pf) #scale cols of x by penalty factors +# first run glmnet +gfit = glmnet(xs,y,standardize=FALSE) + +# extract coef for a given lambda; note the 1/n factor! +# (and we don't save the intercept term) +lambda = .8 +beta_hat = coef(gfit, s=lambda/n, exact=TRUE,x=x,y=y)[-1] + +# compute fixed lambda p-values and selection intervals +out = fixedLassoInf(xs,y,beta_hat,lambda,sigma=sigma) + +#rescale conf points to undo the penalty factor +out$ci=t(scale(t(out$ci),FALSE,pf[out$vars])) +out + +#logistic model +set.seed(43) + n = 50 + p = 10 + sigma = 1 + + x = matrix(rnorm(n*p),n,p) + x=scale(x,TRUE,TRUE) + + beta = c(3,2,rep(0,p-2)) + y = x\%*\%beta + sigma*rnorm(n) + y=1*(y>mean(y)) + # first run glmnet + gfit = glmnet(x,y,standardize=FALSE,family="binomial") + + # extract coef for a given lambda; note the 1/n factor! + # (and here we DO include the intercept term) + lambda = .8 + beta_hat = coef(gfit, s=lambda/n, exact=TRUE,x=x,y=y) + + # compute fixed lambda p-values and selection intervals + out = fixedLassoInf(x,y,beta_hat,lambda,family="binomial") + out + +#Cox model +set.seed(43) + n = 50 + p = 10 + sigma = 1 + + x = matrix(rnorm(n*p),n,p) + x=scale(x,TRUE,TRUE) + + beta = c(3,2,rep(0,p-2)) + tim = as.vector(x\%*\%beta + sigma*rnorm(n)) + tim= tim-min(tim)+1 +status=sample(c(0,1),size=n,replace=TRUE) + # first run glmnet + + + gfit = glmnet(x,Surv(tim,status),standardize=FALSE,family="cox") + + # extract coef for a given lambda; note the 1/n factor! + + lambda = 1.5 + beta_hat = as.numeric(coef(gfit, s=lambda/n, exact=TRUE,x=x,y=Surv(tim,status))) + + # compute fixed lambda p-values and selection intervals + out = fixedLassoInf(x,tim,beta_hat,lambda,status=status,family="cox") + out +} + \ No newline at end of file diff --git a/selectiveInference-currentCRAN/man/forwardStop.Rd b/selectiveInference-currentCRAN/man/forwardStop.Rd new file mode 100644 index 0000000..87eb7ab --- /dev/null +++ b/selectiveInference-currentCRAN/man/forwardStop.Rd @@ -0,0 +1,55 @@ +\name{forwardStop} +\alias{forwardStop} +%- Also NEED an '\alias' for EACH other topic documented here. +\title{ +ForwardStop rule for sequential p-values +} +\description{ +Computes the ForwardStop sequential stopping rule of G'Sell et al (2014) +} +\usage{ +forwardStop(pv, alpha=0.1) +} +%- maybe also 'usage' for other objects documented here. +\arguments{ + \item{pv}{ +Vector of **sequential** p-values, for example from fsInf or larInf +} + \item{alpha}{ +Desired type FDR level (between 0 and 1) +} +} +\details{ +Computes the ForwardStop sequential stopping rule of G'Sell et al (2014). +Guarantees FDR control at the level alpha, for independent p-values. +} +\value{ +Step number for sequential stop. +} +\references{ +Max Grazier G'Sell, Stefan Wager, Alexandra Chouldechova, and Rob Tibshirani (2014). +Sequential selection procedures and Fflse Discovery Rate Control. arXiv:1309.5352. +To appear in Journal of the Royal Statistical Society: Series B. +} +\author{Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid} + +\examples{ +set.seed(33) +n = 50 +p = 10 +sigma = 1 +x = matrix(rnorm(n*p),n,p) +beta = c(3,2,rep(0,p-2)) +y = x\%*\%beta + sigma*rnorm(n) + +# run forward stepwise +fsfit = fs(x,y) + +# compute sequential p-values and confidence intervals +# (sigma estimated from full model) +out = fsInf(fsfit) +out + +# estimate optimal stopping point +forwardStop(out$pv, alpha=.10) +} diff --git a/selectiveInference-currentCRAN/man/fs.Rd b/selectiveInference-currentCRAN/man/fs.Rd new file mode 100644 index 0000000..2a61c83 --- /dev/null +++ b/selectiveInference-currentCRAN/man/fs.Rd @@ -0,0 +1,95 @@ +\name{fs} +\alias{fs} +%- Also NEED an '\alias' for EACH other topic documented here. +\title{ +Forward stepwise regression +} +\description{ +This function implements forward stepwise regression, for use in the +selectiveInference package +} +\usage{ +fs(x, y, maxsteps=2000, intercept=TRUE, normalize=TRUE, verbose=FALSE) +} +\arguments{ + \item{x}{ +Matrix of predictors (n by p) +} + \item{y}{ +Vector of outcomes (length n) +} + \item{maxsteps}{ +Maximum number of steps to take +} +\item{intercept}{Should an intercept be included on the model? Default is TRUE} +\item{normalize}{Should the predictors be normalized? Default is TRUE. (Note: +this argument has no real effect on model selection since forward stepwise is +scale invariant already; however, it is included for completeness, and to match +the interface for the \code{lar} function) +} +\item{verbose}{Print out progress along the way? Default is FALSE} +} + +\details{ +This function implements forward stepwise regression, adding the predictor at each +step that maximizes the absolute correlation between the predictors---once +orthogonalized with respect to the current model---and the residual. This entry +criterion is standard, and is equivalent to choosing the variable that achieves +the biggest drop in RSS at each step; it is used, e.g., by the \code{step} function +in R. Note that, for example, the \code{lars} package implements a stepwise option +(with type="step"), but uses a (mildly) different entry criterion, based on maximal +absolute correlation between the original (non-orthogonalized) predictors and the +residual. +} +\value{ +\item{action}{Vector of predictors in order of entry} +\item{sign}{Signs of coefficients of predictors, upon entry} +\item{df}{Degrees of freedom of each active model} +\item{beta}{Matrix of regression coefficients for each model along the path, +one column per model} +\item{completepath}{Was the complete stepwise path computed?} +\item{bls}{If completepath is TRUE, the full least squares coefficients} +\item{Gamma}{Matrix that captures the polyhedral selection at each step} +\item{nk}{Number of polyhedral constraints at each step in path} +\item{vreg}{Matrix of linear contrasts that gives coefficients of variables +to enter along the path} +\item{x}{Matrix of predictors used} +\item{y}{Vector of outcomes used} +\item{bx}{Vector of column means of original x} +\item{by}{Mean of original y} +\item{sx}{Norm of each column of original x} +\item{intercept}{Was an intercept included?} +\item{normalize}{Were the predictors normalized?} +\item{call}{The call to fs} +} + +\author{Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid} + +\seealso{ + \code{\link{fsInf}}, \code{\link{predict.fs}},\code{\link{coef.fs}}, \code{\link{plot.fs}} +} + +\examples{ +set.seed(33) +n = 50 +p = 10 +sigma = 1 +x = matrix(rnorm(n*p),n,p) +beta = c(3,2,rep(0,p-2)) +y = x\%*\%beta + sigma*rnorm(n) + +# run forward stepwise, plot results +fsfit = fs(x,y) +plot(fsfit) + +# compute sequential p-values and confidence intervals +# (sigma estimated from full model) +out = fsInf(fsfit) +out +} + + +% Add one or more standard keywords, see file 'KEYWORDS' in the +% R documentation directory. +\keyword{ ~kwd1 } +\keyword{ ~kwd2 }% __ONLY ONE__ keyword per line diff --git a/selectiveInference-currentCRAN/man/fsInf.Rd b/selectiveInference-currentCRAN/man/fsInf.Rd new file mode 100644 index 0000000..613bc5a --- /dev/null +++ b/selectiveInference-currentCRAN/man/fsInf.Rd @@ -0,0 +1,135 @@ +\name{fsInf} +\alias{fsInf} +\title{ +Selective inference for forward stepwise regression +} +\description{ +Computes p-values and confidence intervals for forward +stepwise regression +} +\usage{ +fsInf(obj, sigma=NULL, alpha=0.1, k=NULL, type=c("active","all","aic"), + gridrange=c(-100,100), bits=NULL, mult=2, ntimes=2, verbose=FALSE) +} +\arguments{ + \item{obj}{ +Object returned by \code{\link{fs}} function +} +\item{sigma}{ +Estimate of error standard deviation. If NULL (default), this is estimated +using the mean squared residual of the full least squares fit when n >= 2p, and +using the standard deviation of y when n < 2p. In the latter case, the user +should use \code{\link{estimateSigma}} function for a more accurate estimate +} +\item{alpha}{ +Significance level for confidence intervals (target is miscoverage alpha/2 in each tail) +} +\item{k}{ +See "type" argument below. Default is NULL, in which case k is taken to be the +the number of steps computed in the forward stepwise path +} +\item{type}{ +Type of analysis desired: with "active" (default), p-values and confidence intervals are +computed for each predictor as it is entered into the active step, all the way through +k steps; with "all", p-values and confidence intervals are computed for all variables in +the active model after k steps; with "aic", the number of steps k is first estimated using +a modified AIC criterion, and then the same type of analysis as in "all" is carried out for +this particular value of k. + +Note that the AIC scheme is defined to choose a number of steps k after which the AIC criterion +increases \code{ntimes} in a row, where \code{ntimes} can be specified by the user (see below). +Under this definition, the AIC selection event is characterizable as a polyhedral set, and hence +the extra conditioning can be taken into account exactly. Also note that an analogous BIC scheme +can be specified through the \code{mult} argument (see below) +} +\item{gridrange}{ +Grid range for constructing confidence intervals, on the standardized scale +} +\item{bits}{ +Number of bits to be used for p-value and confidence interval calculations. Default is +NULL, in which case standard floating point calculations are performed. When not NULL, +multiple precision floating point calculations are performed with the specified number +of bits, using the R package \code{Rmpfr} (if this package is not installed, then a +warning is thrown, and standard floating point calculations are pursued). +Note: standard double precision uses 53 bits +so, e.g., a choice of 200 bits uses about 4 times double precision. The confidence +interval computation is sometimes numerically challenging, and the extra precision can be +helpful (though computationally more costly). In particular, extra precision might be tried +if the values in the output columns of \code{tailarea} differ noticeably from alpha/2. +} +\item{mult}{Multiplier for the AIC-style penalty. Hence a value of 2 (default) +gives AIC, whereas a value of log(n) would give BIC} +\item{ntimes}{Number of steps for which AIC-style criterion has to increase before +minimizing point is declared} +\item{verbose}{Print out progress along the way? Default is FALSE} +} + +\details{ +This function computes selective p-values and confidence intervals (selection intervals) +for forward stepwise regression. The default is to report the results for +each predictor after its entry into the model. See the "type" argument for other options. +The confidence interval construction involves numerical search and can be fragile: +if the observed statistic is too close to either end of the truncation interval +(vlo and vup, see references), then one or possibly both endpoints of the interval of +desired coverage cannot be computed, and default to +/- Inf. The output \code{tailarea} +gives the achieved Gaussian tail areas for the reported intervals---these should be close +to alpha/2, and can be used for error-checking purposes. +} + +\value{ +\item{type}{Type of analysis (active, all, or aic)} +\item{k}{Value of k specified in call} +\item{khat}{When type is "active", this is an estimated stopping point +declared by \code{\link{forwardStop}}; when type is "aic", this is the +value chosen by the modified AIC scheme} +\item{pv}{One sided P-values for active variables, uses the sign that a variable entered the model with.} +\item{ci}{Confidence intervals} +\item{tailarea}{Realized tail areas (lower and upper) for each confidence interval} +\item{vlo}{Lower truncation limits for statistics} +\item{vup}{Upper truncation limits for statistics} +\item{vmat}{Linear contrasts that define the observed statistics} +\item{y}{Vector of outcomes} +\item{vars}{Variables in active set} +\item{sign}{Signs of active coefficients} +\item{alpha}{Desired coverage (alpha/2 in each tail)} +\item{sigma}{Value of error standard deviation (sigma) used} +\item{call}{The call to fsInf} +} + +\references{ +Ryan Tibshirani, Jonathan Taylor, Richard Lockhart, and Rob Tibshirani (2014). +Exact post-selection inference for sequential regression procedures. arXiv:1401.3889. + +Joshua Loftus and Jonathan Taylor (2014). A significance test for forward stepwise +model selection. arXiv:1405.3920. +} + +\author{Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid} + +\seealso{\code{\link{fs}}} + +\examples{ +set.seed(33) +n = 50 +p = 10 +sigma = 1 +x = matrix(rnorm(n*p),n,p) +beta = c(3,2,rep(0,p-2)) +y = x\%*\%beta + sigma*rnorm(n) + +# run forward stepwise +fsfit = fs(x,y) + +# compute sequential p-values and confidence intervals +# (sigma estimated from full model) +out.seq = fsInf(fsfit) +out.seq + +# compute p-values and confidence intervals after AIC stopping +out.aic = fsInf(fsfit,type="aic") +out.aic + +# compute p-values and confidence intervals after 5 fixed steps +out.fix = fsInf(fsfit,type="all",k=5) +out.fix +} diff --git a/selectiveInference-currentCRAN/man/groupfs.Rd b/selectiveInference-currentCRAN/man/groupfs.Rd new file mode 100644 index 0000000..a57c6dc --- /dev/null +++ b/selectiveInference-currentCRAN/man/groupfs.Rd @@ -0,0 +1,49 @@ +% Generated by roxygen2 (4.1.1): do not edit by hand +% Please edit documentation in R/funs.groupfs.R +\name{groupfs} +\alias{groupfs} +\title{Select a model with forward stepwise.} +\usage{ +groupfs(x, y, index, maxsteps, sigma = NULL, k = 2, intercept = TRUE, + center = TRUE, normalize = TRUE, aicstop = 0, verbose = FALSE) +} +\arguments{ +\item{x}{Matrix of predictors (n by p).} + +\item{y}{Vector of outcomes (length n).} + +\item{index}{Group membership indicator of length p. Check that \code{sort(unique(index)) = 1:G} where \code{G} is the number of distinct groups.} + +\item{maxsteps}{Maximum number of steps for forward stepwise.} + +\item{sigma}{Estimate of error standard deviation for use in AIC criterion. This determines the relative scale between RSS and the degrees of freedom penalty. Default is NULL corresponding to unknown sigma. When NULL, \code{link{groupfsInf}} performs truncated F inference instead of truncated \eqn{\chi}. See \code{\link[stats]{extractAIC}} for details on the AIC criterion.} + +\item{k}{Multiplier of model size penalty, the default is \code{k = 2} for AIC. Use \code{k = log(n)} for BIC, or \code{k = 2log(p)} for RIC (best for high dimensions, when \eqn{p > n}). If \eqn{G < p} then RIC may be too restrictive and it would be better to use \code{log(G) < k < 2log(p)}.} + +\item{intercept}{Should an intercept be included in the model? Default is TRUE. Does not count as a step.} + +\item{center}{Should the columns of the design matrix be centered? Default is TRUE.} + +\item{normalize}{Should the design matrix be normalized? Default is TRUE.} + +\item{aicstop}{Early stopping if AIC increases. Default is 0 corresponding to no early stopping. Positive integer values specify the number of times the AIC is allowed to increase in a row, e.g. with \code{aicstop = 2} the algorithm will stop if the AIC criterion increases for 2 steps in a row. The default of \code{\link[stats]{step}} corresponds to \code{aicstop = 1}.} + +\item{verbose}{Print out progress along the way? Default is FALSE.} +} +\value{ +An object of class "groupfs" containing information about the sequence of models in the forward stepwise algorithm. Call the function \code{\link{groupfsInf}} on this object to compute selective p-values. +} +\description{ +This function implements forward selection of linear models almost identically to \code{\link[stats]{step}} with \code{direction = "forward"}. The reason this is a separate function from \code{\link{fs}} is that groups of variables (e.g. dummies encoding levels of a categorical variable) must be handled differently in the selective inference framework. +} +\examples{ +x = matrix(rnorm(20*40), nrow=20) +index = sort(rep(1:20, 2)) +y = rnorm(20) + 2 * x[,1] - x[,4] +fit = groupfs(x, y, index, maxsteps = 5) +pvals = groupfsInf(fit) +} +\seealso{ +\code{\link{groupfsInf}}, \code{\link{factorDesign}}. +} + diff --git a/selectiveInference-currentCRAN/man/groupfsInf.Rd b/selectiveInference-currentCRAN/man/groupfsInf.Rd new file mode 100644 index 0000000..74b9a5e --- /dev/null +++ b/selectiveInference-currentCRAN/man/groupfsInf.Rd @@ -0,0 +1,31 @@ +% Generated by roxygen2 (4.1.1): do not edit by hand +% Please edit documentation in R/funs.groupfs.R +\name{groupfsInf} +\alias{groupfsInf} +\title{Compute selective p-values for a model fitted by \code{groupfs}.} +\usage{ +groupfsInf(obj, sigma = NULL, verbose = TRUE) +} +\arguments{ +\item{obj}{Object returned by \code{\link{groupfs}} function} + +\item{sigma}{Estimate of error standard deviation. Default is NULL and in this case groupfsInf uses the value of sigma specified to \code{\link{groupfs}}.} + +\item{verbose}{Print out progress along the way? Default is TRUE.} +} +\value{ +An object of class "groupfsInf" containing selective p-values for the fitted model \code{obj}. For comparison with \code{\link{fsInf}}, note that the option \code{type = "active"} is not available. + +\describe{ + \item{vars}{Labels of the active groups in the order they were included.} + \item{pv}{Selective p-values computed from appropriate truncated distributions.} + \item{sigma}{Estimate of error variance used in computing p-values.} + \item{TC or TF}{Observed value of truncated \eqn{\chi} or \eqn{F}.} + \item{df}{Rank of group of variables when it was added to the model.} + \item{support}{List of intervals defining the truncation region of the corresponding statistic.} +} +} +\description{ +Computes p-values for each group of variables in a model fitted by \code{\link{groupfs}}. These p-values adjust for selection by truncating the usual \eqn{\chi^2} statistics to the regions implied by the model selection event. If the \code{sigma} to \code{\link{groupfs}} was NULL then groupfsInf uses truncated \eqn{F} statistics instead of truncated \eqn{\chi}. The \code{sigma} argument to groupfsInf allows users to override and use \eqn{\chi}, but this is not recommended unless \eqn{\sigma} can be estimated well (i.e. \eqn{n > p}). +} + diff --git a/selectiveInference-currentCRAN/man/lar.Rd b/selectiveInference-currentCRAN/man/lar.Rd new file mode 100644 index 0000000..590a663 --- /dev/null +++ b/selectiveInference-currentCRAN/man/lar.Rd @@ -0,0 +1,95 @@ +\name{lar} +\alias{lar} +\title{ +Least angle regression +} +\description{ +This function implements least angle regression, for use in the +selectiveInference package +} +\usage{ +lar(x, y, maxsteps=2000, minlam=0, intercept=TRUE, normalize=TRUE, + verbose=FALSE) +} + +\arguments{ + \item{x}{ +Matrix of predictors (n by p) +} + \item{y}{ +Vector of outcomes (length n) +} + \item{maxsteps}{ +Maximum number of steps to take +} +\item{minlam}{ +Minimum value of lambda to consider +} +\item{intercept}{Should an intercept be included on the model? Default is TRUE} +\item{normalize}{Should the predictors be normalized? Default is TRUE} +\item{verbose}{Print out progress along the way? Default is FALSE} +} + +\details{ +The least angle regression algorithm is described in detail by Efron et al. (2002). +This function should match (in terms of its output) that from the \code{lars} package, +but returns additional information (namely, the polyhedral constraints) needed for the +selective inference calculations. +} + +\value{ +\item{lambda}{Values of lambda (knots) visited along the path} +\item{action}{Vector of predictors in order of entry} +\item{sign}{Signs of coefficients of predictors, upon entry} +\item{df}{Degrees of freedom of each active model} +\item{beta}{Matrix of regression coefficients for each model along the path, +one model per column} +\item{completepath}{Was the complete stepwise path computed?} +\item{bls}{If completepath is TRUE, the full least squares coefficients} +\item{Gamma}{Matrix that captures the polyhedral selection at each step} +\item{nk}{Number of polyhedral constraints at each step in path} +\item{vreg}{Matrix of linear contrasts that gives coefficients of variables +to enter along the path} +\item{mp}{Value of M+ (for internal use with the spacing test)} +\item{x}{Matrix of predictors used} +\item{y}{Vector of outcomes used} +\item{bx}{Vector of column means of original x} +\item{by}{Mean of original y} +\item{sx}{Norm of each column of original x} +\item{intercept}{Was an intercept included?} +\item{normalize}{Were the predictors normalized?} +\item{call}{The call to lar} +} + +\references{ +Brad Efron, Trevor Hastie, Iain Johnstone, and Rob Tibshirani (2002). +Least angle regression. Annals of Statistics (with discussion). + +See also the descriptions in Trevor Hastie, Rob Tibshirani, and +Jerome Friedman (2002, 2009). Elements of Statistical Learning. +} + +\author{Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Max G'Sell, Joshua Loftus, Stephen Reid} + +\seealso{ + \code{\link{larInf}}, \code{\link{predict.lar}}, \code{\link{coef.lar}}, \code{\link{plot.lar}} +} + +\examples{ +set.seed(43) +n = 50 +p = 10 +sigma = 1 +x = matrix(rnorm(n*p),n,p) +beta = c(3,2,rep(0,p-2)) +y = x\%*\%beta + sigma*rnorm(n) + +# run LAR, plot results +larfit = lar(x,y) +plot(larfit) + +# compute sequential p-values and confidence intervals +# (sigma estimated from full model) +out = larInf(larfit) +out +} diff --git a/selectiveInference-currentCRAN/man/larInf.Rd b/selectiveInference-currentCRAN/man/larInf.Rd new file mode 100644 index 0000000..8e3b2d0 --- /dev/null +++ b/selectiveInference-currentCRAN/man/larInf.Rd @@ -0,0 +1,140 @@ +\name{larInf} +\alias{larInf} +\title{ +Selective inference for least angle regression +} +\description{ +Computes p-values and confidence intervals for least +angle regression +} +\usage{ +larInf(obj, sigma=NULL, alpha=0.1, k=NULL, type=c("active","all","aic"), + gridrange=c(-100,100), bits=NULL, mult=2, ntimes=2, verbose=FALSE) +} +\arguments{ + \item{obj}{ +Object returned by \code{lar} function (not the \code{lars} function!) +} +\item{sigma}{ +Estimate of error standard deviation. If NULL (default), this is estimated +using the mean squared residual of the full least squares fit when n >= 2p, and +using the standard deviation of y when n < 2p. In the latter case, the user +should use \code{\link{estimateSigma}} function for a more accurate estimate +} +\item{alpha}{ +Significance level for confidence intervals (target is miscoverage alpha/2 in each tail) +} +\item{k}{ +See "type" argument below. Default is NULL, in which case k is taken to be the +the number of steps computed in the least angle regression path +} +\item{type}{ +Type of analysis desired: with "active" (default), p-values and confidence intervals are +computed for each predictor as it is entered into the active step, all the way through +k steps; with "all", p-values and confidence intervals are computed for all variables in +the active model after k steps; with "aic", the number of steps k is first estimated using +a modified AIC criterion, and then the same type of analysis as in "all" is carried out for +this particular value of k. + +Note that the AIC scheme is defined to choose a number of steps k after which the AIC criterion +increases \code{ntimes} in a row, where \code{ntimes} can be specified by the user (see below). +Under this definition, the AIC selection event is characterizable as a polyhedral set, and hence +the extra conditioning can be taken into account exactly. Also note that an analogous BIC scheme +can be specified through the \code{mult} argument (see below) +} +\item{gridrange}{ +Grid range for constructing confidence intervals, on the standardized scale +} +\item{bits}{ +Number of bits to be used for p-value and confidence interval calculations. Default is +NULL, in which case standard floating point calculations are performed. When not NULL, +multiple precision floating point calculations are performed with the specified number +of bits, using the R package \code{Rmpfr} (if this package is not installed, then a +warning is thrown, and standard floating point calculations are pursued). +Note: standard double precision uses 53 bits +so, e.g., a choice of 200 bits uses about 4 times double precision. The confidence +interval computation is sometimes numerically challenging, and the extra precision can be +helpful (though computationally more costly). In particular, extra precision might be tried +if the values in the output columns of \code{tailarea} differ noticeably from alpha/2. +} +\item{mult}{Multiplier for the AIC-style penalty. Hence a value of 2 (default) +gives AIC, whereas a value of log(n) would give BIC} +\item{ntimes}{Number of steps for which AIC-style criterion has to increase before +minimizing point is declared} +\item{verbose}{Print out progress along the way? Default is FALSE} +} + +\details{ +This function computes selective p-values and confidence intervals (selection intervals) +for least angle regression. The default is to report the results for +each predictor after its entry into the model. See the "type" argument for other options. +The confidence interval construction involves numerical search and can be fragile: +if the observed statistic is too close to either end of the truncation interval +(vlo and vup, see references), then one or possibly both endpoints of the interval of +desired coverage cannot be computed, and default to +/- Inf. The output \code{tailarea} +gives the achieved Gaussian tail areas for the reported intervals---these should be close +to alpha/2, and can be used for error-checking purposes. +} + +\value{ + +\item{type}{Type of analysis (active, all, or aic)} +\item{k}{Value of k specified in call} +\item{khat}{When type is "active", this is an estimated stopping point +declared by \code{\link{forwardStop}}; when type is "aic", this is the +value chosen by the modified AIC scheme} +\item{pv}{P-values for active variables} +\item{ci}{Confidence intervals} +\item{tailarea}{Realized tail areas (lower and upper) for each confidence interval} +\item{vlo}{Lower truncation limits for statistics} +\item{vup}{Upper truncation limits for statistics} +\item{vmat}{Linear contrasts that define the observed statistics} +\item{y}{Vector of outcomes} +\item{pv.spacing}{P-values from the spacing test (here M+ is used)} +\item{pv.modspac}{P-values from the modified form of the spacing test +(here M+ is replaced by the next knot)} +\item{pv.covtest}{P-values from covariance test} +\item{vars}{Variables in active set} +\item{sign}{Signs of active coefficients} +\item{alpha}{Desired coverage (alpha/2 in each tail)} +\item{sigma}{Value of error standard deviation (sigma) used} +\item{call}{The call to larInf} +} + +\references{ +Ryan Tibshirani, Jonathan Taylor, Richard Lockhart, and Rob Tibshirani (2014). +Exact post-selection inference for sequential regression procedures. arXiv:1401.3889. +} + +\author{Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid} + +\seealso{ + \code{\link{lar}} +} + +\examples{ +set.seed(43) +n = 50 +p = 10 +sigma = 1 +x = matrix(rnorm(n*p),n,p) +beta = c(3,2,rep(0,p-2)) +y = x\%*\%beta + sigma*rnorm(n) + +# run LAR +larfit = lar(x,y) + +# compute sequential p-values and confidence intervals +# (sigma estimated from full model) +out.seq = larInf(larfit) +out.seq + +# compute p-values and confidence intervals after AIC stopping +out.aic = larInf(larfit,type="aic") +out.aic + +# compute p-values and confidence intervals after 5 fixed steps +out.fix = larInf(larfit,type="all",k=5) +out.fix +} + diff --git a/selectiveInference-currentCRAN/man/manyMeans.Rd b/selectiveInference-currentCRAN/man/manyMeans.Rd new file mode 100644 index 0000000..57fc429 --- /dev/null +++ b/selectiveInference-currentCRAN/man/manyMeans.Rd @@ -0,0 +1,60 @@ +\name{manyMeans} +\alias{manyMeans} +\title{ +Selective inference for many normal means +} +\description{ +Computes p-values and confidence intervals for the largest k +among many normal means +} +\usage{ +manyMeans(y, alpha=0.1, bh.q=NULL, k=NULL, sigma=1, verbose=FALSE) +} + +\arguments{ + \item{y}{Vector of outcomes (length n)} +\item{alpha}{ +Significance level for confidence intervals (target is miscoverage alpha/2 in each tail) +} +\item{bh.q}{q parameter for BH(q) procedure} +\item{k}{Number of means to consider} +\item{sigma}{Estimate of error standard deviation} +\item{verbose}{Print out progress along the way? Default is FALSE} +} +\details{ +This function compute p-values and confidence intervals for the largest k +among many normal means. One can specify a fixed number of means k to consider, +or choose the number to consider via the BH rule. +} + +\value{ +\item{mu.hat}{ Vector of length n containing the estimated signal sizes. +If a sample element is not selected, then its signal size estimate is 0} +\item{selected.set}{Indices of the vector y of the sample elements that +were selected by the procedure (either BH(q) or top-K). Labelled "Selind" in output table.} +\item{pv}{P-values for selected signals} +\item{ci}{Confidence intervals} +\item{method}{Method used to choose number of means} +\item{sigma}{Value of error standard deviation (sigma) used} +\item{bh.q}{BH q-value used} +\item{k}{Desired number of means} +\item{threshold}{Computed cutoff} +\item{call}{The call to manyMeans} +} + +\references{ +Stephen Reid, Jonathan Taylor, and Rob Tibshirani (2014). +Post-selection point and interval estimation of signal sizes in Gaussian samples. +arXiv:1405.3340. +} + +\author{Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid} + +\examples{ +set.seed(12345) +n = 100 +mu = c(rep(3,floor(n/5)), rep(0,n-floor(n/5))) +y = mu + rnorm(n) +out = manyMeans(y, bh.q=0.1) +out +} diff --git a/selectiveInference-currentCRAN/man/plot.fs.Rd b/selectiveInference-currentCRAN/man/plot.fs.Rd new file mode 100644 index 0000000..4f77013 --- /dev/null +++ b/selectiveInference-currentCRAN/man/plot.fs.Rd @@ -0,0 +1,42 @@ +\name{plot.fs} +\alias{plot.fs} + +\title{ +Plot function for forward stepwise regression +} +\description{ +Plot coefficient profiles along the forward stepwise path +} + +\usage{ +\method{plot}{fs} (x, breaks=TRUE, omit.zeros=TRUE, var.labels=TRUE, ...) +} + +\arguments{ +\item{x}{ +Object returned by a call to \code{fs} function +} +\item{breaks}{Should vertical lines be drawn at each break point in the piecewise +linear coefficient paths? Default is TRUE} +\item{omit.zeros}{Should segments of the coefficients paths that are equal to +zero be omitted (to avoid clutter in the figure)? Default is TRUE} +\item{var.labels}{Should paths be labelled with corresponding variable numbers? +Default is TRUE} +\item{...}{Additional arguments for plotting} +} + +\author{Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid} + +\examples{ +set.seed(33) +n = 50 +p = 10 +sigma = 1 +x = matrix(rnorm(n*p),n,p) +beta = c(3,2,rep(0,p-2)) +y = x\%*\%beta + sigma*rnorm(n) + +# run forward stepwise, plot results +fsfit = fs(x,y) +plot(fsfit) +} diff --git a/selectiveInference-currentCRAN/man/plot.lar.Rd b/selectiveInference-currentCRAN/man/plot.lar.Rd new file mode 100644 index 0000000..baa1195 --- /dev/null +++ b/selectiveInference-currentCRAN/man/plot.lar.Rd @@ -0,0 +1,46 @@ +\name{plot.lar} +\alias{plot.lar} + +\title{ +Plot function for least angle regression +} +\description{ +Plot coefficient profiles along the LAR path +} + +\usage{ +\method{plot}{lar}(x, xvar=c("norm","step","lambda"), breaks=TRUE, + omit.zeros=TRUE, var.labels=TRUE, ...) +} + +\arguments{ +\item{x}{ +Object returned by a call to \code{lar} function +(not the \code{lars} function!) +} +\item{xvar}{Either "norm" or "step" or "lambda", determining what is plotted +on the x-axis} +\item{breaks}{Should vertical lines be drawn at each break point in the piecewise +linear coefficient paths? Default is TRUE} +\item{omit.zeros}{Should segments of the coefficients paths that are equal to +zero be omitted (to avoid clutter in the figure)? Default is TRUE} +\item{var.labels}{Should paths be labelled with corresponding variable numbers? +Default is TRUE} +\item{...}{Additional arguments for plotting} +} + +\author{Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid} + +\examples{ +set.seed(43) +n = 50 +p = 10 +sigma = 1 +x = matrix(rnorm(n*p),n,p) +beta = c(3,2,rep(0,p-2)) +y = x\%*\%beta + sigma*rnorm(n) + +# run LAR, plot results +larfit = lar(x,y) +plot(larfit) +} diff --git a/selectiveInference-currentCRAN/man/predict.fs.Rd b/selectiveInference-currentCRAN/man/predict.fs.Rd new file mode 100644 index 0000000..5e50482 --- /dev/null +++ b/selectiveInference-currentCRAN/man/predict.fs.Rd @@ -0,0 +1,49 @@ +\name{predict.fs} +\alias{predict.fs} +\alias{coef.fs} + +\title{ +Prediction and coefficient functions for forward stepwise +regression +} +\description{ +Make predictions or extract coefficients from a forward stepwise object +} +\usage{ +\method{predict}{fs}(object, newx, s, ...) +\method{coef}{fs}(object, s, ...) +} + +\arguments{ +\item{object}{ +Object returned by a call to \code{fs} function +} +\item{newx}{ +Matrix of x values at which the predictions are desired. If NULL, +the x values from forward stepwise fitting are used +} +\item{s}{ +Step number(s) at which predictions or coefficients are desired +} +\item{\dots}{Additional arguments} +} + +\value{ +Either a vector/matrix of predictions, or a vector/matrix of coefficients. +} + +\author{Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid} + +\examples{ +set.seed(33) +n = 200 +p = 20 +sigma = 1 +x = matrix(rnorm(n*p),n,p) +beta = c(rep(3,10),rep(0,p-10)) +y = x\%*\%beta + sigma*rnorm(n) + +# run forward stepwise and predict functions +obj = fs(x,y) +fit = predict(obj,x,s=3) +} diff --git a/selectiveInference-currentCRAN/man/predict.groupfs.Rd b/selectiveInference-currentCRAN/man/predict.groupfs.Rd new file mode 100644 index 0000000..4a382c7 --- /dev/null +++ b/selectiveInference-currentCRAN/man/predict.groupfs.Rd @@ -0,0 +1,24 @@ +% Generated by roxygen2 (4.1.1): do not edit by hand +% Please edit documentation in R/funs.groupfs.R +\name{predict.groupfs} +\alias{predict.groupfs} +\title{Prediction and coefficient functions for \code{\link{groupfs}}. + +Make predictions or extract coefficients from a groupfs forward stepwise object.} +\usage{ +\method{predict}{groupfs}(object, newx) +} +\arguments{ +\item{object}{Object returned by a call to \code{\link{groupfs}}.} + +\item{newx}{Matrix of x values at which the predictions are desired. If NULL, the x values from groupfs fitting are used.} +} +\value{ +A vector of predictions or a vector of coefficients. +} +\description{ +Prediction and coefficient functions for \code{\link{groupfs}}. + +Make predictions or extract coefficients from a groupfs forward stepwise object. +} + diff --git a/selectiveInference-currentCRAN/man/predict.lar.Rd b/selectiveInference-currentCRAN/man/predict.lar.Rd new file mode 100644 index 0000000..c91bed3 --- /dev/null +++ b/selectiveInference-currentCRAN/man/predict.lar.Rd @@ -0,0 +1,52 @@ +\name{predict.lar} +\alias{predict.lar} +\alias{coef.lar} + +\title{ +Prediction and coefficient functions for least angle regression +} +\description{ +Make predictions or extract coefficients from a least angle regression object +} +\usage{ +\method{predict}{lar}(object, newx, s, mode=c("step","lambda"), ...) +\method{coef}{lar}(object, s, mode=c("step","lambda"), ...) +} + +\arguments{ +\item{object}{ +Object returned by a call to \code{lar} function +(not the \code{lars} function!) +} +\item{newx}{ +Matrix of x values at which the predictions are desired. If NULL, +the x values from least angle regression fitting are used +} +\item{s}{ +Step number(s) or lambda value(s) at which predictions or coefficients +are desired +} +\item{mode}{Either "step" or "lambda", determining the role of s (above)} + +\item{\dots}{Additional arguments} +} + +\value{ +Either a vector/matrix of predictions, or a vector/matrix of coefficients. +} + +\author{Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid} + +\examples{ +set.seed(33) +n = 200 +p = 20 +sigma = 1 +x = matrix(rnorm(n*p),n,p) +beta = c(rep(3,10),rep(0,p-10)) +y = x\%*\%beta + sigma*rnorm(n) + +# run lar and predict functions +obj = lar(x,y) +fit = predict(obj,x,s=3) +} diff --git a/selectiveInference-currentCRAN/man/scaleGroups.Rd b/selectiveInference-currentCRAN/man/scaleGroups.Rd new file mode 100644 index 0000000..e5a93fa --- /dev/null +++ b/selectiveInference-currentCRAN/man/scaleGroups.Rd @@ -0,0 +1,28 @@ +% Generated by roxygen2 (4.1.1): do not edit by hand +% Please edit documentation in R/funs.groupfs.R +\name{scaleGroups} +\alias{scaleGroups} +\title{Center and scale design matrix by groups} +\usage{ +scaleGroups(x, index, center = TRUE, normalize = TRUE) +} +\arguments{ +\item{x}{Design matrix.} + +\item{index}{Group membership indicator of length p.} + +\item{center}{Center groups, default is TRUE.} + +\item{normalize}{Scale groups by Frobenius norm, default is TRUE.} +} +\value{ +\describe{ + \item{x}{Optionally centered/scaled design matrix.} + \item{xm}{Means of groups in original design matrix.} + \item{xs}{Frobenius norms of groups in original design matrix.} +} +} +\description{ +For internal use by \code{\link{groupfs}}. +} + diff --git a/selectiveInference-currentCRAN/man/selectiveInference-internal.Rd b/selectiveInference-currentCRAN/man/selectiveInference-internal.Rd new file mode 100644 index 0000000..4808173 --- /dev/null +++ b/selectiveInference-currentCRAN/man/selectiveInference-internal.Rd @@ -0,0 +1,24 @@ +\name{selectiveInference-internal} +\title{Internal PMA functions} +\alias{print.fixedLassoInf} + \alias{print.fs} +\alias{print.fsInf} +\alias{print.larInf} +\alias{print.lar} + \alias{print.manyMeans} + + + +\description{Internal selectiveInference functions} +\usage{ +\method{print}{fs}(x, ...) +\method{print}{fsInf}(x, tailarea = TRUE, ...) +\method{print}{lar}(x,...) +\method{print}{larInf}(x, tailarea = TRUE, ...) +\method{print}{fixedLassoInf}(x, tailarea = TRUE, ...) +\method{print}{manyMeans}(x,...) + +} +\author{Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid} +\keyword{internal} + diff --git a/selectiveInference-currentCRAN/man/selectiveInference.Rd b/selectiveInference-currentCRAN/man/selectiveInference.Rd new file mode 100644 index 0000000..6e038d4 --- /dev/null +++ b/selectiveInference-currentCRAN/man/selectiveInference.Rd @@ -0,0 +1,205 @@ +\name{selectiveInference} +\alias{selectiveInference} +\docType{package} +\title{ +Tools for selective inference +} +\description{ +Functions to perform post-selection inference for forward +stepwise regression, least angle regression, the lasso and the +many normal means problem. The lasso function also supports logistic regression and the Cox model. +} +\details{ +\tabular{ll}{ +Package: \tab selectiveInference\cr +Type: \tab Package\cr +License: \tab GPL-2\cr +} + +This package provides tools for inference after selection, in forward stepwise +regression, least angle regression, the lasso, and the many normal means problem. +The functions compute p-values and selection intervals that properly account for +the inherent selection carried out by the procedure. These have exact finite sample +type I error and coverage under Gaussian errors. For the logistic and Cox familes (fixedLassoInf), + the coverage is asymptotically valid + +This R package was developed as part of the selective inference software project +in Python and R: + +\url{https://github.com/selective-inference} + +Some of the R code in this work is a modification of Python code from this +repository. Here is the current selective inference software team: + +Yuval Benjamini, +Leonard Blier, +Will Fithian, +Jason Lee, +Joshua Loftus, +Joshua Loftus, Stephen Reid, +Dennis Sun, +Yuekai Sun, +Jonathan Taylor, +Xiaoying Tian, +Ryan Tibshirani, +Rob Tibshirani + +The main functions included in the package are: +\code{\link{fs}}, +\code{\link{fsInf}}, +\code{\link{lar}}, +\code{\link{larInf}}, +\code{\link{fixedLassoInf}}, +\code{\link{manyMeans}} +} + +\author{Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid + +Maintainer: Rob Tibshirani +} + +\references{ +Ryan Tibshirani, Jonathan Taylor, Richard Lockhart, and Rob Tibshirani (2014). +Exact post-selection inference for sequential regression procedures. arXiv:1401.3889. + +Jason Lee, Dennis Sun, Yuekai Sun, and Jonathan Taylor (2013). +Exact post-selection inference, with application to the lasso. arXiv:1311.6238. + +Stephen Reid, Jonathan Taylor, and Rob Tibshirani (2014). +Post-selection point and interval estimation of signal sizes in Gaussian samples. +arXiv:1405.3340. + + +Jonathan Taylor and Robert Tibshirani (2016) Post-selection inference for L1-penalized likelihood models. +arXiv:1602.07358 + +} + +\examples{ +set.seed(33) +n = 50 +p = 10 +sigma = 1 +x = matrix(rnorm(n*p),n,p) +beta = c(3,2,rep(0,p-2)) +y = x\%*\%beta + sigma*rnorm(n) + +# run forward stepwise +fsfit = fs(x,y) + +# compute sequential p-values and confidence intervals +# (sigma estimated from full model) +out.seq = fsInf(fsfit) +out.seq + +# compute p-values and confidence intervals after AIC stopping +out.aic = fsInf(fsfit,type="aic") +out.aic + +# compute p-values and confidence intervals after 5 fixed steps +out.fix = fsInf(fsfit,type="all",k=5) +out.fix + +## NOT RUN---lasso at fixed lambda- Gaussian family +## first run glmnet +# gfit = glmnet(x,y) + +## extract coef for a given lambda; note the 1/n factor! +## (and we don't save the intercept term) +# lambda = .1 +# beta = coef(gfit, s=lambda/n, exact=TRUE)[-1] + +## compute fixed lambda p-values and selection intervals +# out = fixedLassoInf(x,y,beta,lambda,sigma=sigma) +# out + + +#lasso at fixed lambda- logistic family +#set.seed(43) + # n = 50 + # p = 10 + # sigma = 1 + + # x = matrix(rnorm(n*p),n,p) + x=scale(x,TRUE,TRUE) + # +# beta = c(3,2,rep(0,p-2)) + # y = x%*%beta + sigma*rnorm(n) + # y=1*(y>mean(y)) + # first run glmnet + # gfit = glmnet(x,y,standardize=FALSE,family="binomial") + + # extract coef for a given lambda; note the 1/n factor! + # (and here we DO include the intercept term) + # lambda = .8 + # beta = coef(gfit, s=lambda/n, exact=TRUE) + + # # compute fixed lambda p-values and selection intervals + # out = fixedLassoInf(x,y,beta,lambda,family="binomial") + # out + +##lasso at fixed lambda- Cox family +#set.seed(43) +# n = 50 + # p = 10 + # sigma = 1 + + # x = matrix(rnorm(n*p),n,p) + # x=scale(x,TRUE,TRUE) + + # beta = c(3,2,rep(0,p-2)) + # tim = as.vector(x\%*\%beta + sigma*rnorm(n)) + # tim= tim-min(tim)+1 +#status=sample(c(0,1),size=n,replace=T) + # first run glmnet + # gfit = glmnet(x,Surv(tim,status),standardize=FALSE,family="cox") + # extract coef for a given lambda; note the 1/n factor! + + # lambda = 1.5 + # beta = as.numeric(coef(gfit, s=lambda/n, exact=TRUE)) + + # compute fixed lambda p-values and selection intervals + # out = fixedLassoInf(x,tim,beta,lambda,status=status,family="cox") + # out +## NOT RUN---many normal means +# set.seed(12345) +# n = 100 +# mu = c(rep(3,floor(n/5)), rep(0,n-floor(n/5))) +# y = mu + rnorm(n) +# out = manyMeans(y, bh.q=0.1) +# out + +## NOT RUN---forward stepwise with groups +# set.seed(1) +# n = 20 +# p = 40 +# x = matrix(rnorm(n*p), nrow=n) +# index = sort(rep(1:(p/2), 2)) +# y = rnorm(n) + 2 * x[,1] - x[,4] +# fit = groupfs(x, y, index, maxsteps = 5) +# out = groupfsInf(fit) +# out + +## NOT RUN---estimation of sigma for use in fsInf +## (or larInf or fixedLassoInf) +# set.seed(33) +# n = 50 +# p = 10 +# sigma = 1 +# x = matrix(rnorm(n*p),n,p) +# beta = c(3,2,rep(0,p-2)) +# y = x\%*\%beta + sigma*rnorm(n) + +## run forward stepwise +# fsfit = fs(x,y) + +## estimate sigma +# sigmahat = estimateSigma(x,y)$sigmahat + +## run sequential inference with estimated sigma +# out = fsInf(fit,sigma=sigmahat) +# out +} +\keyword{ package } + + diff --git a/selectiveInference-currentCRAN/src/matrixcomps.c b/selectiveInference-currentCRAN/src/matrixcomps.c new file mode 100644 index 0000000..4a516a1 --- /dev/null +++ b/selectiveInference-currentCRAN/src/matrixcomps.c @@ -0,0 +1,266 @@ +#include +#include + +// Matrices are stored as vectors, in column-major order + +// Givens rotation of a and b, stored in c and s +void givens(double a, double b, double *c, double *s) { + if (b==0) { + *c = 1; + *s = 0; + } + else { + if (fabs(b)>fabs(a)) { + double t = -a/b; + *s = 1/sqrt(1+t*t); + *c = (*s)*t; + } + else { + double t = -b/a; + *c = 1/sqrt(1+t*t); + *s = (*c)*t; + } + } +} + +// Givens rotation applied to rows i1 and i2 of the m x n +// matrix A, on the subset of columns j1 through j2 +void rowrot(double *A, int i1, int i2, int m, int n, int j1, int j2, double c, double s) { + int j; + double t1,t2; + for (j=j1; j<=j2; j++) { + t1 = A[i1+j*m]; + t2 = A[i2+j*m]; + A[i1+j*m] = c*t1-s*t2; + A[i2+j*m] = s*t1+c*t2; + } +} + +// Givens rotation applied to columns j1 and j2 of the m x n +// matrix A, on the subset of rows i1 through i2 +void colrot(double *A, int j1, int j2, int m, int n, int i1, int i2, double c, double s) { + int i; + double t1,t2; + for (i=i1; i<=i2; i++) { + t1 = A[i+j1*m]; + t2 = A[i+j2*m]; + A[i+j1*m] = c*t1-s*t2; + A[i+j2*m] = s*t1+c*t2; + } +} + +// Downdate the QR factorization after deleting column j0, +// where Q1 is m x n and R is n x n. The other part of +// the Q matrix, Q2 m x (m-n), isn't needed so it isn't +// passed for efficiency +void downdate1(double *Q1, double *R, int *j0p, int *mp, int *np) { + int j0,m,n,j; + j0 = *j0p; + m = *mp; + n = *np; + + double c,s; + for (j=j0+1; j=1; j--) { + // Compute the appropriate c and s + givens(w[j-1],w[j],&c,&s); + + // Pre-multiply w + rowrot(w,j-1,j,k,1,0,0,c,s); + + // Post-multiply Q2 + colrot(Q2,j-1,j,m,k,0,m-1,c,s); + } +} + +// Downdate the QR factorization after deleting the first row, +// where Q is m x m and R is m x n +void downdate2(double *Q, double *R, int *mp, int *np) { + int m,n,i; + m = *mp; + n = *np; + + double c,s; + for (i=m-1; i>=1; i--) { + // Compute the appropriate c and s + givens(Q[(i-1)*m],Q[i*m],&c,&s); + + // Post-mutiply Q + colrot(Q,i-1,i,m,m,0,m-1,c,s); + + // Pre-multiply R + if (i<=n) rowrot(R,i-1,i,m,n,i-1,n-1,c,s); + } +} + +// Update the QR factorization after adding the last row, +// where Q is m x m and R is m x n. For efficiency, Q is not +// passed, and only the first row of R is passed. Not counting +// its first row, the first q columns of R are zero +void update2(double *y, double *D, double *r, int *mp, int *np, int *qp) { + int m,n,q,j; + m = *mp; + n = *np; + q = *qp; + + double c,s; + for (j=0; j=0; i--) { + for (j=i; j=0; i--) { + for (j=i; j=0; i--) { + // Compute the appropriate c and s + givens(R[i+(i+q+1)*m2],R[i+(i+q)*m2],&c,&s); + + // Post-multiply R + colrot(R,i+q+1,i+q,m2,n,0,i,c,s); + + // Post-multiply D + colrot(A,i+q+1,i+q,m1,n,0,m1-1,c,s); + + // Pre-multiply y + rowrot(y,i+q+1,i+q,n,1,0,0,c,s); + } +} + +// Make the R factor upper triangular, by Givens rotating +// its columns and rows, appropriately. Here A is m1 x n, +// Q is m2 x m2, and R is m2 x n with rank(R) = n-q-1. The +// first q columns of R are zero. The kth row of R is the +// last row with a zero element on the diagonal +void maketri4(double *y, double *A, double *Q, double *R, int *m1p, int *m2p, int *np, int *qp, int *kp) { + int m1,m2,n,q,k,i,j; + m1 = *m1p; + m2 = *m2p; + n = *np; + q = *qp; + k = *kp; + + double c,s; + + // First rotate the columns + for (i=k-1; i>=0; i--) { + // Compute the appropriate c and s + givens(R[i+(i+q+1)*m2],R[i+(i+q)*m2],&c,&s); + + // Post-multiply R + colrot(R,i+q+1,i+q,m2,n,0,i,c,s); + + // Post-multiply D + colrot(A,i+q+1,i+q,m1,n,0,m1-1,c,s); + + // Pre-multiply y + rowrot(y,i+q+1,i+q,n,1,0,0,c,s); + } + + // Next rotate the rows + for (j=k+q+1; j +#include + +/* . entry points */ +extern void update1(double *Q2, double *w, int *mp, int *kp); +static R_NativePrimitiveArgType update1_t[] = { + REALSXP, REALSXP, INTSXP, INTSXP +}; + +extern void downdate1(double *Q1, double *R, int *j0p, int *mp, int *np); +static R_NativePrimitiveArgType downdate1_t[] = { + REALSXP, REALSXP, INTSXP, INTSXP, INTSXP +}; + +static const R_CMethodDef CEntries[] = { + {"update1", (DL_FUNC) &update1, 4}, + {"downdate1", (DL_FUNC) &downdate1, 5}, + {NULL, NULL, 0} +}; + +void R_init_cubature(DllInfo *dll) { + R_registerRoutines(dll, CEntries, NULL, NULL, NULL); + R_useDynamicSymbols(dll, FALSE); +} diff --git a/selectiveInference-currentCRAN/src/truncnorm.c b/selectiveInference-currentCRAN/src/truncnorm.c new file mode 100644 index 0000000..cca61d9 --- /dev/null +++ b/selectiveInference-currentCRAN/src/truncnorm.c @@ -0,0 +1,188 @@ +#include +#include + +// Take a Gibbs hit and run step along a given direction + +// Assumes the covariance is identity + +void gibbs_step(double *state, /* state has law N(0,I) constrained to polyhedral set \{y:Ay \leq b\}*/ + double *direction, /* direction we will take Gibbs step */ + double *U, /* A %*% state - b */ + double *alpha, /* A %*% direction */ + int nconstraint, /* number of rows of A */ + int nstate) /* dimension of state */ +{ + + int istate; + double value = 0; + + /* Compute V=\eta^Ty */ + + for (istate = 0; istate < nstate; istate++) { + value += direction[istate] * state[istate]; + } + + /* Compute upper and lower bounds */ + + double lower_bound = -1e12; + double upper_bound = 1e12; + double bound_val = 0; + double tol=1.e-7; + int iconstraint; + + for (iconstraint = 0; iconstraint < nconstraint; iconstraint++) { + + bound_val = -U[iconstraint] / alpha[iconstraint] + value; + + if ((alpha[iconstraint] > tol) && + (bound_val < upper_bound)) { + upper_bound = bound_val; + } + else if ((alpha[iconstraint] < -tol) && + (bound_val > lower_bound)) { + lower_bound = bound_val; + } + + } + + /* Ensure constraints are satisfied */ + + if (lower_bound > value) { + lower_bound = value - tol; + } + else if (upper_bound < value) { + upper_bound = value + tol; + } + + /* Check to see if constraints are satisfied */ + + /* if (lower_bound > upper_bound) { + + }*/ + + /* Now, take a step */ + + double tnorm; /* the 1D gaussian variable */ + double cdfU, cdfL, unif; /* temp variables */ + + if (upper_bound < -10) { + + /* use Exp approximation */ + /* the approximation is that */ + /* Z | lower_bound < Z < upper_bound */ + /* is fabs(upper_bound) * (upper_bound - Z) = E approx Exp(1) */ + /* so Z = upper_bound - E / fabs(upper_bound) */ + /* and the truncation of the exponential is */ + /* E < fabs(upper_bound - lower_bound) * fabs(upper_bound) = D */ + + /* this has distribution function (1 - exp(-x)) / (1 - exp(-D)) */ + /* so to draw from this distribution */ + /* we set E = - log(1 - U * (1 - exp(-D))) where U is Unif(0,1) */ + /* and Z (= tnorm below) is as stated */ + + unif = runif(0., 1.) * (1 - exp(-fabs((lower_bound - upper_bound) * upper_bound))); + tnorm = (upper_bound + log(1 - unif) / fabs(upper_bound)); + } + else if (lower_bound > 10) { + + /* here Z = lower_bound + E / fabs(lower_bound) (though lower_bound is positive) */ + /* and D = fabs((upper_bound - lower_bound) * lower_bound) */ + + unif = runif(0., 1.) * (1 - exp(-fabs((upper_bound - lower_bound) * lower_bound))); + tnorm = (lower_bound - log(1 - unif) / lower_bound); + } + else if (lower_bound < 0) { + cdfL = pnorm(lower_bound, 0., 1., 1, 0); + cdfU = pnorm(upper_bound, 0., 1., 1, 0); + unif = runif(0., 1.) * (cdfU - cdfL) + cdfL; + if (unif < 0.5) { + tnorm = qnorm(unif, 0., 1., 1, 0); + } + else { + tnorm = -qnorm(1-unif, 0., 1., 1, 0); + } + } + else { + cdfL = pnorm(-lower_bound, 0., 1., 1, 0); + cdfU = pnorm(-upper_bound, 0., 1., 1, 0); + unif = runif(0., 1.) * (cdfL - cdfU) + cdfU; + if (unif < 0.5) { + tnorm = -qnorm(unif, 0., 1., 1, 0); + } + else { + tnorm = qnorm(1-unif, 0., 1., 1, 0); + } + } + + /* Now update the state and U */ + + double delta = tnorm - value; + + for (istate = 0; istate < nstate; istate++) { + state[istate] += delta * direction[istate]; + } + for (iconstraint = 0; iconstraint < nconstraint; iconstraint++) { + U[iconstraint] += delta * alpha[iconstraint] ; + } + + /* End of gibbs_step */ + +} + +void sample_truncnorm_white(double *state, /* state has law N(0,I) constrained to polyhedral set \{y:Ay \leq b\}*/ + double *U, /* A %*% state - b */ + double *directions, /* possible steps for sampler to take */ + /* assumed to be stored as list of columns of dimension nstate */ + /* has shape (nstate, ndirection) */ + double *alphas, /* The matrix A %*% directions */ + /* has shape (nconstraint, ndirection) */ + double *output, /* array in which to store samples */ + /* assumed will stored as list of vectors of dimension nstate */ + /* has shape (nstate, ndraw) */ + int *pnconstraint, /* number of rows of A */ + int *pndirection, /* the possible number of directions to choose from */ + /* `directions` should have size nstate*ndirection */ + int *pnstate, /* dimension of state */ + int *pburnin, /* number of burnin steps */ + int *pndraw) /* total number of samples to return */ +{ + + int iter_count; + int which_direction; + + int nconstraint = *pnconstraint; + int ndirection = *pndirection; + int nstate = *pnstate; + int burnin = *pburnin; + int ndraw = *pndraw; + + double *direction, *alpha; + + for (iter_count = 0; iter_count < burnin + ndraw; iter_count++) { + + which_direction = (int) floor(runif(0., 1.) * ndirection); + direction = ((double *) directions) + nstate * which_direction; + alpha = ((double *) alphas) + nconstraint * which_direction; + + /* take a step, which implicitly updates `state` and `U` */ + + gibbs_step(state, + direction, + U, + alpha, + nconstraint, + nstate); + + /* Store result if after burnin */ + + int istate; + if (iter_count >= burnin) { + for (istate = 0; istate < nstate; istate++) { + *output = state[istate]; + output++; + } + } + } + +} + From 0a3bc8d0d73cb47c985b40b0b28ee018a3357c59 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Fri, 22 Sep 2017 15:51:14 -0700 Subject: [PATCH 247/493] new versions of RcppExports --- selectiveInference/R/RcppExports.R | 8 ++--- selectiveInference/src/RcppExports.cpp | 44 ++++++++++++++++---------- 2 files changed, 32 insertions(+), 20 deletions(-) diff --git a/selectiveInference/R/RcppExports.R b/selectiveInference/R/RcppExports.R index e04c446..622d1d2 100644 --- a/selectiveInference/R/RcppExports.R +++ b/selectiveInference/R/RcppExports.R @@ -1,15 +1,15 @@ -# This file was generated by Rcpp::compileAttributes +# Generated by using Rcpp::compileAttributes() -> do not edit by hand # Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 solve_QP <- function(Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active) { - .Call('selectiveInference_solve_QP', PACKAGE = 'selectiveInference', Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active) + .Call('_selectiveInference_solve_QP', PACKAGE = 'selectiveInference', Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active) } update1_ <- function(Q2, w, m, k) { - .Call('selectiveInference_update1_', PACKAGE = 'selectiveInference', Q2, w, m, k) + .Call('_selectiveInference_update1_', PACKAGE = 'selectiveInference', Q2, w, m, k) } downdate1_ <- function(Q1, R, j0, m, n) { - .Call('selectiveInference_downdate1_', PACKAGE = 'selectiveInference', Q1, R, j0, m, n) + .Call('_selectiveInference_downdate1_', PACKAGE = 'selectiveInference', Q1, R, j0, m, n) } diff --git a/selectiveInference/src/RcppExports.cpp b/selectiveInference/src/RcppExports.cpp index feefe32..461b0e5 100644 --- a/selectiveInference/src/RcppExports.cpp +++ b/selectiveInference/src/RcppExports.cpp @@ -1,4 +1,4 @@ -// This file was generated by Rcpp::compileAttributes +// Generated by using Rcpp::compileAttributes() -> do not edit by hand // Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 #include @@ -7,10 +7,10 @@ using namespace Rcpp; // solve_QP Rcpp::List solve_QP(Rcpp::NumericMatrix Sigma, double bound, int maxiter, Rcpp::NumericVector theta, Rcpp::NumericVector linear_func, Rcpp::NumericVector gradient, Rcpp::IntegerVector ever_active, Rcpp::IntegerVector nactive, double kkt_tol, double objective_tol, int max_active); -RcppExport SEXP selectiveInference_solve_QP(SEXP SigmaSEXP, SEXP boundSEXP, SEXP maxiterSEXP, SEXP thetaSEXP, SEXP linear_funcSEXP, SEXP gradientSEXP, SEXP ever_activeSEXP, SEXP nactiveSEXP, SEXP kkt_tolSEXP, SEXP objective_tolSEXP, SEXP max_activeSEXP) { +RcppExport SEXP _selectiveInference_solve_QP(SEXP SigmaSEXP, SEXP boundSEXP, SEXP maxiterSEXP, SEXP thetaSEXP, SEXP linear_funcSEXP, SEXP gradientSEXP, SEXP ever_activeSEXP, SEXP nactiveSEXP, SEXP kkt_tolSEXP, SEXP objective_tolSEXP, SEXP max_activeSEXP) { BEGIN_RCPP - Rcpp::RObject __result; - Rcpp::RNGScope __rngScope; + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type Sigma(SigmaSEXP); Rcpp::traits::input_parameter< double >::type bound(boundSEXP); Rcpp::traits::input_parameter< int >::type maxiter(maxiterSEXP); @@ -22,36 +22,48 @@ BEGIN_RCPP Rcpp::traits::input_parameter< double >::type kkt_tol(kkt_tolSEXP); Rcpp::traits::input_parameter< double >::type objective_tol(objective_tolSEXP); Rcpp::traits::input_parameter< int >::type max_active(max_activeSEXP); - __result = Rcpp::wrap(solve_QP(Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active)); - return __result; + rcpp_result_gen = Rcpp::wrap(solve_QP(Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active)); + return rcpp_result_gen; END_RCPP } // update1_ Rcpp::List update1_(Rcpp::NumericMatrix Q2, Rcpp::NumericVector w, int m, int k); -RcppExport SEXP selectiveInference_update1_(SEXP Q2SEXP, SEXP wSEXP, SEXP mSEXP, SEXP kSEXP) { +RcppExport SEXP _selectiveInference_update1_(SEXP Q2SEXP, SEXP wSEXP, SEXP mSEXP, SEXP kSEXP) { BEGIN_RCPP - Rcpp::RObject __result; - Rcpp::RNGScope __rngScope; + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type Q2(Q2SEXP); Rcpp::traits::input_parameter< Rcpp::NumericVector >::type w(wSEXP); Rcpp::traits::input_parameter< int >::type m(mSEXP); Rcpp::traits::input_parameter< int >::type k(kSEXP); - __result = Rcpp::wrap(update1_(Q2, w, m, k)); - return __result; + rcpp_result_gen = Rcpp::wrap(update1_(Q2, w, m, k)); + return rcpp_result_gen; END_RCPP } // downdate1_ Rcpp::List downdate1_(Rcpp::NumericMatrix Q1, Rcpp::NumericMatrix R, int j0, int m, int n); -RcppExport SEXP selectiveInference_downdate1_(SEXP Q1SEXP, SEXP RSEXP, SEXP j0SEXP, SEXP mSEXP, SEXP nSEXP) { +RcppExport SEXP _selectiveInference_downdate1_(SEXP Q1SEXP, SEXP RSEXP, SEXP j0SEXP, SEXP mSEXP, SEXP nSEXP) { BEGIN_RCPP - Rcpp::RObject __result; - Rcpp::RNGScope __rngScope; + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type Q1(Q1SEXP); Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type R(RSEXP); Rcpp::traits::input_parameter< int >::type j0(j0SEXP); Rcpp::traits::input_parameter< int >::type m(mSEXP); Rcpp::traits::input_parameter< int >::type n(nSEXP); - __result = Rcpp::wrap(downdate1_(Q1, R, j0, m, n)); - return __result; + rcpp_result_gen = Rcpp::wrap(downdate1_(Q1, R, j0, m, n)); + return rcpp_result_gen; END_RCPP } + +static const R_CallMethodDef CallEntries[] = { + {"_selectiveInference_solve_QP", (DL_FUNC) &_selectiveInference_solve_QP, 11}, + {"_selectiveInference_update1_", (DL_FUNC) &_selectiveInference_update1_, 4}, + {"_selectiveInference_downdate1_", (DL_FUNC) &_selectiveInference_downdate1_, 5}, + {NULL, NULL, 0} +}; + +RcppExport void R_init_selectiveInference(DllInfo *dll) { + R_registerRoutines(dll, NULL, CallEntries, NULL, NULL); + R_useDynamicSymbols(dll, FALSE); +} From 59e9c7e8050e6152c02bb638faadd43148b6231d Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Mon, 25 Sep 2017 17:33:44 -0700 Subject: [PATCH 248/493] fixing examples for new glmnet, small cleanup of function signature --- selectiveInference/R/funs.fixed.R | 7 +++-- selectiveInference/R/funs.fixedCox.R | 10 ++++--- selectiveInference/man/fixedLassoInf.Rd | 35 ++++++++++++++----------- 3 files changed, 31 insertions(+), 21 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index c65731d..6e1ffa9 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -2,10 +2,13 @@ # for the solution of # min 1/2 || y - \beta_0 - X \beta ||_2^2 + \lambda || \beta ||_1 -fixedLassoInf <- function(x, y, beta, lambda, family=c("gaussian","binomial","cox"),intercept=TRUE, add.targets=NULL, status=NULL, +fixedLassoInf <- function(x, y, beta, + lambda, family=c("gaussian","binomial","cox"), + intercept=TRUE, add.targets=NULL, status=NULL, sigma=NULL, alpha=0.1, type=c("partial","full"), tol.beta=1e-5, tol.kkt=0.1, - gridrange=c(-100,100), bits=NULL, verbose=FALSE, linesearch.try=10) { + gridrange=c(-100,100), bits=NULL, verbose=FALSE, + linesearch.try=10) { family = match.arg(family) this.call = match.call() diff --git a/selectiveInference/R/funs.fixedCox.R b/selectiveInference/R/funs.fixedCox.R index cfe764e..92567bd 100644 --- a/selectiveInference/R/funs.fixedCox.R +++ b/selectiveInference/R/funs.fixedCox.R @@ -1,6 +1,10 @@ -fixedCoxLassoInf=function(x,y,status,beta,lambda,alpha=.1, type=c("partial"),tol.beta=1e-5, tol.kkt=0.1, - gridrange=c(-100,100), bits=NULL, verbose=FALSE,this.call=NULL){ - +fixedCoxLassoInf=function(x, y, status, + beta, lambda, + alpha=.1, type=c("partial"), + tol.beta=1e-5, tol.kkt=0.1, + gridrange=c(-100,100), + bits=NULL, verbose=FALSE, + this.call=NULL){ checkargs.xy(x,y) if(is.null(status)) stop("Must supply `status' argument") diff --git a/selectiveInference/man/fixedLassoInf.Rd b/selectiveInference/man/fixedLassoInf.Rd index bd740f8..5fd8c24 100644 --- a/selectiveInference/man/fixedLassoInf.Rd +++ b/selectiveInference/man/fixedLassoInf.Rd @@ -160,7 +160,7 @@ gfit = glmnet(x,y,standardize=FALSE) # extract coef for a given lambda; note the 1/n factor! # (and we don't save the intercept term) lambda = .8 -beta = coef(gfit, s=lambda/n, exact=TRUE)[-1] +beta = coef(gfit, x=x, y=y, s=lambda/n, exact=TRUE)[-1] # compute fixed lambda p-values and selection intervals out = fixedLassoInf(x,y,beta,lambda,sigma=sigma) @@ -170,8 +170,8 @@ out ## as above, but use lar function instead to get initial ## lasso fit (should get same results) lfit = lar(x,y,normalize=FALSE) -beta = coef(lfit,s=lambda,mode="lambda") -out2 = fixedLassoInf(x,y,beta,lambda,sigma=sigma) +beta = coef(lfit, s=lambda, mode="lambda") +out2 = fixedLassoInf(x, y, beta, lambda, sigma=sigma) out2 ## mimic different penalty factors by first scaling x @@ -189,12 +189,12 @@ pf=c(rep(1,7),rep(.1,3)) #define penalty factors pf=p*pf/sum(pf) # penalty factors should be rescaled so they sum to p xs=scale(x,FALSE,pf) #scale cols of x by penalty factors # first run glmnet -gfit = glmnet(xs,y,standardize=FALSE) +gfit = glmnet(xs, y, standardize=FALSE) # extract coef for a given lambda; note the 1/n factor! # (and we don't save the intercept term) lambda = .8 -beta_hat = coef(gfit, s=lambda/n, exact=TRUE)[-1] +beta_hat = coef(gfit, x=xs, y=y, s=lambda/n, exact=TRUE)[-1] # compute fixed lambda p-values and selection intervals out = fixedLassoInf(xs,y,beta_hat,lambda,sigma=sigma) @@ -221,37 +221,40 @@ set.seed(43) # extract coef for a given lambda; note the 1/n factor! # (and here we DO include the intercept term) lambda = .8 - beta_hat = coef(gfit, s=lambda/n, exact=TRUE) + beta_hat = coef(gfit, x=x, y=y, s=lambda/n, exact=TRUE) # compute fixed lambda p-values and selection intervals out = fixedLassoInf(x,y,beta_hat,lambda,family="binomial") out -#Cox model -set.seed(43) + + # Cox model + + set.seed(43) n = 50 p = 10 sigma = 1 - x = matrix(rnorm(n*p),n,p) - x=scale(x,TRUE,TRUE) + x = matrix(rnorm(n*p), n, p) + x=scale(x, TRUE, TRUE) beta = c(3,2,rep(0,p-2)) tim = as.vector(x\%*\%beta + sigma*rnorm(n)) tim= tim-min(tim)+1 -status=sample(c(0,1),size=n,replace=TRUE) + status=sample(c(0,1),size=n,replace=TRUE) # first run glmnet - gfit = glmnet(x,Surv(tim,status),standardize=FALSE,family="cox") + y = Surv(tim,status) + gfit = glmnet(x, y, standardize=FALSE, family="cox") # extract coef for a given lambda; note the 1/n factor! lambda = 1.5 - beta_hat = as.numeric(coef(gfit, s=lambda/n, exact=TRUE)) - + beta_hat = as.numeric(coef(gfit, x=x, y=y, s=lambda/n, exact=TRUE)) + # compute fixed lambda p-values and selection intervals - out = fixedLassoInf(x,tim,beta_hat,lambda,status=status,family="cox") + out = fixedLassoInf(x, tim, beta_hat, lambda, status=status, family="cox") out # Debiased lasso or "full" @@ -272,7 +275,7 @@ gfit = glmnet(x, y, standardize=FALSE, intercept=FALSE) # extract coef for a given lambda; note the 1/n factor! # (and we don't save the intercept term) lambda = 2.8 -beta = coef(gfit, s=lambda/n, exact=TRUE)[-1] +beta = coef(gfit, x=x, y=y, s=lambda/n, exact=TRUE)[-1] # compute fixed lambda p-values and selection intervals out = fixedLassoInf(x, y, beta, lambda, sigma=sigma, type='full', intercept=FALSE) From 41dc63aade08b6b70c074351fe1f10fea830f340 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Mon, 25 Sep 2017 17:34:31 -0700 Subject: [PATCH 249/493] removing a tab --- selectiveInference/R/funs.fixedCox.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selectiveInference/R/funs.fixedCox.R b/selectiveInference/R/funs.fixedCox.R index 92567bd..d6ebd6b 100644 --- a/selectiveInference/R/funs.fixedCox.R +++ b/selectiveInference/R/funs.fixedCox.R @@ -1,5 +1,5 @@ fixedCoxLassoInf=function(x, y, status, - beta, lambda, + beta, lambda, alpha=.1, type=c("partial"), tol.beta=1e-5, tol.kkt=0.1, gridrange=c(-100,100), From 86a92fdaa482355f148930cce04824aa3c7beb83 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Mon, 25 Sep 2017 17:56:21 -0700 Subject: [PATCH 250/493] WIP: writing a solver for wide X matrices --- selectiveInference/R/RcppExports.R | 4 + selectiveInference/src/Rcpp-debias.cpp | 72 ++++ selectiveInference/src/RcppExports.cpp | 22 ++ selectiveInference/src/debias.h | 21 ++ .../src/quadratic_program_wide.c | 341 ++++++++++++++++++ 5 files changed, 460 insertions(+) create mode 100644 selectiveInference/src/quadratic_program_wide.c diff --git a/selectiveInference/R/RcppExports.R b/selectiveInference/R/RcppExports.R index 622d1d2..1c03053 100644 --- a/selectiveInference/R/RcppExports.R +++ b/selectiveInference/R/RcppExports.R @@ -5,6 +5,10 @@ solve_QP <- function(Sigma, bound, maxiter, theta, linear_func, gradient, ever_a .Call('_selectiveInference_solve_QP', PACKAGE = 'selectiveInference', Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active) } +solve_QP_wide <- function(X, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active) { + .Call('_selectiveInference_solve_QP_wide', PACKAGE = 'selectiveInference', X, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active) +} + update1_ <- function(Q2, w, m, k) { .Call('_selectiveInference_update1_', PACKAGE = 'selectiveInference', Q2, w, m, k) } diff --git a/selectiveInference/src/Rcpp-debias.cpp b/selectiveInference/src/Rcpp-debias.cpp index 6420e51..d6e8741 100644 --- a/selectiveInference/src/Rcpp-debias.cpp +++ b/selectiveInference/src/Rcpp-debias.cpp @@ -68,3 +68,75 @@ Rcpp::List solve_QP(Rcpp::NumericMatrix Sigma, Rcpp::Named("max_active_check") = max_active_check)); } + + +// [[Rcpp::export]] +Rcpp::List solve_QP_wide(Rcpp::NumericMatrix X, + double bound, + int maxiter, + Rcpp::NumericVector theta, + Rcpp::NumericVector linear_func, + Rcpp::NumericVector gradient, + Rcpp::IntegerVector ever_active, + Rcpp::IntegerVector nactive, + double kkt_tol, + double objective_tol, + int max_active + ) { + + int nrow = X.nrow(); // number of cases + int ncol = X.ncol(); // number of features + + // Active set + + int irow, icol; + + // Extract the diagonal + Rcpp::NumericVector X_diag(ncol); + double *X_diag_p = X_diag.begin(); + + for (icol=0; icol= max_active); + + return(Rcpp::List::create(Rcpp::Named("soln") = theta, + Rcpp::Named("gradient") = gradient, + Rcpp::Named("linear_func") = linear_func, + Rcpp::Named("iter") = iter, + Rcpp::Named("kkt_check") = kkt_check, + Rcpp::Named("ever_active") = ever_active, + Rcpp::Named("nactive") = nactive, + Rcpp::Named("max_active_check") = max_active_check)); + +} diff --git a/selectiveInference/src/RcppExports.cpp b/selectiveInference/src/RcppExports.cpp index 461b0e5..6939cf1 100644 --- a/selectiveInference/src/RcppExports.cpp +++ b/selectiveInference/src/RcppExports.cpp @@ -26,6 +26,27 @@ BEGIN_RCPP return rcpp_result_gen; END_RCPP } +// solve_QP_wide +Rcpp::List solve_QP_wide(Rcpp::NumericMatrix X, double bound, int maxiter, Rcpp::NumericVector theta, Rcpp::NumericVector linear_func, Rcpp::NumericVector gradient, Rcpp::IntegerVector ever_active, Rcpp::IntegerVector nactive, double kkt_tol, double objective_tol, int max_active); +RcppExport SEXP _selectiveInference_solve_QP_wide(SEXP XSEXP, SEXP boundSEXP, SEXP maxiterSEXP, SEXP thetaSEXP, SEXP linear_funcSEXP, SEXP gradientSEXP, SEXP ever_activeSEXP, SEXP nactiveSEXP, SEXP kkt_tolSEXP, SEXP objective_tolSEXP, SEXP max_activeSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type X(XSEXP); + Rcpp::traits::input_parameter< double >::type bound(boundSEXP); + Rcpp::traits::input_parameter< int >::type maxiter(maxiterSEXP); + Rcpp::traits::input_parameter< Rcpp::NumericVector >::type theta(thetaSEXP); + Rcpp::traits::input_parameter< Rcpp::NumericVector >::type linear_func(linear_funcSEXP); + Rcpp::traits::input_parameter< Rcpp::NumericVector >::type gradient(gradientSEXP); + Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type ever_active(ever_activeSEXP); + Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type nactive(nactiveSEXP); + Rcpp::traits::input_parameter< double >::type kkt_tol(kkt_tolSEXP); + Rcpp::traits::input_parameter< double >::type objective_tol(objective_tolSEXP); + Rcpp::traits::input_parameter< int >::type max_active(max_activeSEXP); + rcpp_result_gen = Rcpp::wrap(solve_QP_wide(X, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active)); + return rcpp_result_gen; +END_RCPP +} // update1_ Rcpp::List update1_(Rcpp::NumericMatrix Q2, Rcpp::NumericVector w, int m, int k); RcppExport SEXP _selectiveInference_update1_(SEXP Q2SEXP, SEXP wSEXP, SEXP mSEXP, SEXP kSEXP) { @@ -58,6 +79,7 @@ END_RCPP static const R_CallMethodDef CallEntries[] = { {"_selectiveInference_solve_QP", (DL_FUNC) &_selectiveInference_solve_QP, 11}, + {"_selectiveInference_solve_QP_wide", (DL_FUNC) &_selectiveInference_solve_QP_wide, 11}, {"_selectiveInference_update1_", (DL_FUNC) &_selectiveInference_update1_, 4}, {"_selectiveInference_downdate1_", (DL_FUNC) &_selectiveInference_downdate1_, 5}, {NULL, NULL, 0} diff --git a/selectiveInference/src/debias.h b/selectiveInference/src/debias.h index 7cab5e3..6de2940 100644 --- a/selectiveInference/src/debias.h +++ b/selectiveInference/src/debias.h @@ -23,6 +23,27 @@ int check_KKT_qp(double *theta, /* current theta */ double bound, /* Lagrange multipler for \ell_1 */ double tol); /* precision for checking KKT conditions */ +int solve_wide(double *X_ptr, /* A design matrix */ + double *linear_func_ptr, /* Linear term in objective */ + double *X_diag_ptr, /* Diagonal entry of covariance matrix */ + double *gradient_ptr, /* Current gradient of quadratic loss */ + int *ever_active_ptr, /* Ever active set: 0-based */ + int *nactive_ptr, /* Size of ever active set */ + int nrow, /* How many rows in X */ + int ncol, /* How many rows in X */ + double bound, /* feasibility parameter */ + double *theta, /* current value */ + int maxiter, /* how many iterations */ + double kkt_tol, /* precision for checking KKT conditions */ + double objective_tol, /* precision for checking relative decrease in objective value */ + int max_active); /* Upper limit for size of active set -- otherwise break */ + +int check_KKT_wide(double *theta, /* current theta */ + double *gradient_ptr, /* Current gradient of quadratic loss */ + int nrow, /* how many rows in Sigma */ + double bound, /* Lagrange multipler for \ell_1 */ + double tol); /* precision for checking KKT conditions */ + #ifdef __cplusplus } /* extern "C" */ #endif /* __cplusplus */ diff --git a/selectiveInference/src/quadratic_program_wide.c b/selectiveInference/src/quadratic_program_wide.c new file mode 100644 index 0000000..36a2723 --- /dev/null +++ b/selectiveInference/src/quadratic_program_wide.c @@ -0,0 +1,341 @@ +#include // for fabs + +// Find an approximate row of \hat{Sigma}^{-1} + +// Solves a dual version of problem (4) of https://arxiv.org/pdf/1306.3171.pdf + +// Dual problem: \text{min}_{\theta} 1/2 \|X\theta\|^2 - l^T\theta + \mu \|\theta\|_1 +// where l is `linear_func` below + +// This is the "negative" of the problem as in https://gist.github.com/jonathan-taylor/07774d209173f8bc4e42aa37712339bf +// Therefore we don't have to negate the answer to get theta. +// Update one coordinate + +// Throughout X is a design matrix + +double objective_wide(double *X_ptr, /* A design matrix */ + double *linear_func_ptr, /* Linear term in objective */ + int *ever_active_ptr, /* Ever active set: 0-based */ + int *nactive_ptr, /* Size of ever active set */ + int nrow, /* how many rows in X */ + int ncol, /* how many columns in X */ + double bound, /* Lagrange multipler for \ell_1 */ + double *theta) /* current value */ +{ + int irow, icol; + double value = 0; + double *X_ptr_tmp = X_ptr; + double *linear_func_ptr_tmp = linear_func_ptr; + double *theta_row_ptr, *theta_col_ptr; + int *active_row_ptr, *active_col_ptr; + int active_row, active_col; + int nactive = *nactive_ptr; + + theta_row_ptr = theta; + theta_col_ptr = theta; + + for (irow=0; irow 0) && (fabs(gradient + bound) > tol * bound)) { + return(0); + } + else if ((*theta_ptr < 0) && (fabs(gradient - bound) > tol * bound)) { + return(0); + } + } + else { + if (fabs(gradient) > (1. + tol) * bound) { + return(0); + } + } + } + + return(1); +} + +double update_one_coord_wide(double *X_ptr, /* A design matrix*/ + double *linear_func_ptr, /* Linear term in objective */ + double *X_diag_ptr, /* Diagonal entries of Sigma */ + double *gradient_ptr, /* X^TX/n times theta */ + int *ever_active_ptr, /* Ever active set: 1-based */ + int *nactive_ptr, /* Size of ever active set */ + int nrow, /* How many rows in X */ + int ncol, /* How many rows in X */ + double bound, /* feasibility parameter */ + double *theta, /* current value */ + int coord, /* which coordinate to update: 0-based */ + int is_active) /* Is this coord in ever_active */ +{ + + double delta; + double linear_term = 0; + double value = 0; + double old_value; + double *X_ptr_tmp; + double *gradient_ptr_tmp; + double *theta_ptr; + int icol = 0; + + double *quadratic_ptr = ((double *) X_diag_ptr + coord); + double quadratic_term = *quadratic_ptr; + + gradient_ptr_tmp = ((double *) gradient_ptr + coord); + linear_term = *gradient_ptr_tmp; + + theta_ptr = ((double *) theta + coord); + old_value = *theta_ptr; + + // The coord entry of gradient_ptr term has a diagonal term in it: + // X[coord, coord] * theta[coord] + // This removes it. + + linear_term -= quadratic_term * old_value; + + // Now soft-threshold the coord entry of theta + + // Objective is t \mapsto q/2 * t^2 + l * t + bound |t| + // with q=quadratic_term and l=linear_term + + // With a negative linear term, solution should be + // positive + + if (linear_term < -bound) { + value = (-linear_term - bound) / quadratic_term; + } + else if (linear_term > bound) { + value = -(linear_term - bound) / quadratic_term; + } + + // Add to active set if necessary + + if ((is_active == 0) && (value != 0)) { + update_ever_active_wide(coord, ever_active_ptr, nactive_ptr); + } + + // Update the linear term + + if (fabs(old_value - value) > 1.e-6 * (fabs(value) + fabs(old_value))) { + + delta = value - old_value; + X_ptr_tmp = ((double *) X_ptr + coord * nrow); + gradient_ptr_tmp = ((double *) gradient_ptr); + + for (icol=0; icol= max_active) { + break; + } + + // Check relative decrease of objective + + if (check_objective) { + new_value = objective_wide(X_ptr, + linear_func_ptr, + ever_active_ptr, + nactive_ptr, + nrow, + ncol, + bound, + theta); + + if ((fabs(old_value - new_value) < objective_tol * fabs(new_value)) && (iter > 0)) { + break; + } + old_value = new_value; + } + } + return(iter); +} + From 2f05bf60764ebd47ab04286e5f479badf31c6944 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Mon, 25 Sep 2017 17:57:01 -0700 Subject: [PATCH 251/493] for devel version -- needs intervals reinstalled --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 21270e0..541fa3a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,6 +11,6 @@ addons: warnings_are_errors: true before_install: - tlmgr install index # for texlive and vignette? - - R -e 'install.packages("Rcpp", repos="http://cloud.r-project.org")' + - R -e 'install.packages(c("Rcpp", "intervals"), repos="http://cloud.r-project.org")' - make Rcpp - cd selectiveInference From 6238a92c3c484edc160123fa2be73562e5d272e5 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Tue, 26 Sep 2017 11:44:27 -0700 Subject: [PATCH 252/493] WIP: working on wide X QP --- .../src/quadratic_program_wide.c | 32 +++++++++++-------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/selectiveInference/src/quadratic_program_wide.c b/selectiveInference/src/quadratic_program_wide.c index 36a2723..21ad990 100644 --- a/selectiveInference/src/quadratic_program_wide.c +++ b/selectiveInference/src/quadratic_program_wide.c @@ -14,6 +14,7 @@ // Throughout X is a design matrix double objective_wide(double *X_ptr, /* A design matrix */ + double *X_theta_ptr, /* Fitted values */ double *linear_func_ptr, /* Linear term in objective */ int *ever_active_ptr, /* Ever active set: 0-based */ int *nactive_ptr, /* Size of ever active set */ @@ -24,7 +25,7 @@ double objective_wide(double *X_ptr, /* A design matrix */ { int irow, icol; double value = 0; - double *X_ptr_tmp = X_ptr; + double *X_theta_ptr_tmp = X_theta_ptr; double *linear_func_ptr_tmp = linear_func_ptr; double *theta_row_ptr, *theta_col_ptr; int *active_row_ptr, *active_col_ptr; @@ -34,29 +35,32 @@ double objective_wide(double *X_ptr, /* A design matrix */ theta_row_ptr = theta; theta_col_ptr = theta; - for (irow=0; irow Date: Tue, 26 Sep 2017 14:47:15 -0700 Subject: [PATCH 253/493] WIP: builds now, but segfaulting --- selectiveInference/R/RcppExports.R | 12 +- selectiveInference/src/Rcpp-debias.cpp | 51 ++- selectiveInference/src/RcppExports.cpp | 58 ++-- selectiveInference/src/debias.h | 39 ++- .../src/quadratic_program_wide.c | 296 +++++++++++++----- 5 files changed, 302 insertions(+), 154 deletions(-) diff --git a/selectiveInference/R/RcppExports.R b/selectiveInference/R/RcppExports.R index 1c03053..8af4640 100644 --- a/selectiveInference/R/RcppExports.R +++ b/selectiveInference/R/RcppExports.R @@ -1,19 +1,19 @@ -# Generated by using Rcpp::compileAttributes() -> do not edit by hand +# This file was generated by Rcpp::compileAttributes # Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 solve_QP <- function(Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active) { - .Call('_selectiveInference_solve_QP', PACKAGE = 'selectiveInference', Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active) + .Call('selectiveInference_solve_QP', PACKAGE = 'selectiveInference', Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active) } -solve_QP_wide <- function(X, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active) { - .Call('_selectiveInference_solve_QP_wide', PACKAGE = 'selectiveInference', X, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active) +solve_QP_wide <- function(X, bound, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, max_active) { + .Call('selectiveInference_solve_QP_wide', PACKAGE = 'selectiveInference', X, bound, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, max_active) } update1_ <- function(Q2, w, m, k) { - .Call('_selectiveInference_update1_', PACKAGE = 'selectiveInference', Q2, w, m, k) + .Call('selectiveInference_update1_', PACKAGE = 'selectiveInference', Q2, w, m, k) } downdate1_ <- function(Q1, R, j0, m, n) { - .Call('_selectiveInference_downdate1_', PACKAGE = 'selectiveInference', Q1, R, j0, m, n) + .Call('selectiveInference_downdate1_', PACKAGE = 'selectiveInference', Q1, R, j0, m, n) } diff --git a/selectiveInference/src/Rcpp-debias.cpp b/selectiveInference/src/Rcpp-debias.cpp index d6e8741..fcf0eb6 100644 --- a/selectiveInference/src/Rcpp-debias.cpp +++ b/selectiveInference/src/Rcpp-debias.cpp @@ -77,6 +77,7 @@ Rcpp::List solve_QP_wide(Rcpp::NumericMatrix X, Rcpp::NumericVector theta, Rcpp::NumericVector linear_func, Rcpp::NumericVector gradient, + Rcpp::NumericVector X_theta, Rcpp::IntegerVector ever_active, Rcpp::IntegerVector nactive, double kkt_tol, @@ -84,35 +85,41 @@ Rcpp::List solve_QP_wide(Rcpp::NumericMatrix X, int max_active ) { - int nrow = X.nrow(); // number of cases - int ncol = X.ncol(); // number of features + int ncase = X.nrow(); // number of cases + int nfeature = X.ncol(); // number of features // Active set - int irow, icol; + int icase, ifeature; + + // A vector to keep track of gradient updates + + Rcpp::IntegerVector need_update(nfeature); // Extract the diagonal - Rcpp::NumericVector X_diag(ncol); + Rcpp::NumericVector X_diag(nfeature); double *X_diag_p = X_diag.begin(); - for (icol=0; icol= max_active); + // Make sure gradient is updated -- essentially a matrix multiply + + update_gradient_wide((double *) gradient.begin(), + (double *) X_theta.begin(), + (double *) X.begin(), + (double *) linear_func.begin(), + (int *) need_update.begin(), + nfeature, + ncase); + return(Rcpp::List::create(Rcpp::Named("soln") = theta, Rcpp::Named("gradient") = gradient, + Rcpp::Named("X_theta") = X_theta, Rcpp::Named("linear_func") = linear_func, Rcpp::Named("iter") = iter, Rcpp::Named("kkt_check") = kkt_check, diff --git a/selectiveInference/src/RcppExports.cpp b/selectiveInference/src/RcppExports.cpp index 6939cf1..efa87d5 100644 --- a/selectiveInference/src/RcppExports.cpp +++ b/selectiveInference/src/RcppExports.cpp @@ -1,4 +1,4 @@ -// Generated by using Rcpp::compileAttributes() -> do not edit by hand +// This file was generated by Rcpp::compileAttributes // Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 #include @@ -7,10 +7,10 @@ using namespace Rcpp; // solve_QP Rcpp::List solve_QP(Rcpp::NumericMatrix Sigma, double bound, int maxiter, Rcpp::NumericVector theta, Rcpp::NumericVector linear_func, Rcpp::NumericVector gradient, Rcpp::IntegerVector ever_active, Rcpp::IntegerVector nactive, double kkt_tol, double objective_tol, int max_active); -RcppExport SEXP _selectiveInference_solve_QP(SEXP SigmaSEXP, SEXP boundSEXP, SEXP maxiterSEXP, SEXP thetaSEXP, SEXP linear_funcSEXP, SEXP gradientSEXP, SEXP ever_activeSEXP, SEXP nactiveSEXP, SEXP kkt_tolSEXP, SEXP objective_tolSEXP, SEXP max_activeSEXP) { +RcppExport SEXP selectiveInference_solve_QP(SEXP SigmaSEXP, SEXP boundSEXP, SEXP maxiterSEXP, SEXP thetaSEXP, SEXP linear_funcSEXP, SEXP gradientSEXP, SEXP ever_activeSEXP, SEXP nactiveSEXP, SEXP kkt_tolSEXP, SEXP objective_tolSEXP, SEXP max_activeSEXP) { BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::RObject __result; + Rcpp::RNGScope __rngScope; Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type Sigma(SigmaSEXP); Rcpp::traits::input_parameter< double >::type bound(boundSEXP); Rcpp::traits::input_parameter< int >::type maxiter(maxiterSEXP); @@ -22,70 +22,58 @@ BEGIN_RCPP Rcpp::traits::input_parameter< double >::type kkt_tol(kkt_tolSEXP); Rcpp::traits::input_parameter< double >::type objective_tol(objective_tolSEXP); Rcpp::traits::input_parameter< int >::type max_active(max_activeSEXP); - rcpp_result_gen = Rcpp::wrap(solve_QP(Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active)); - return rcpp_result_gen; + __result = Rcpp::wrap(solve_QP(Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active)); + return __result; END_RCPP } // solve_QP_wide -Rcpp::List solve_QP_wide(Rcpp::NumericMatrix X, double bound, int maxiter, Rcpp::NumericVector theta, Rcpp::NumericVector linear_func, Rcpp::NumericVector gradient, Rcpp::IntegerVector ever_active, Rcpp::IntegerVector nactive, double kkt_tol, double objective_tol, int max_active); -RcppExport SEXP _selectiveInference_solve_QP_wide(SEXP XSEXP, SEXP boundSEXP, SEXP maxiterSEXP, SEXP thetaSEXP, SEXP linear_funcSEXP, SEXP gradientSEXP, SEXP ever_activeSEXP, SEXP nactiveSEXP, SEXP kkt_tolSEXP, SEXP objective_tolSEXP, SEXP max_activeSEXP) { +Rcpp::List solve_QP_wide(Rcpp::NumericMatrix X, double bound, int maxiter, Rcpp::NumericVector theta, Rcpp::NumericVector linear_func, Rcpp::NumericVector gradient, Rcpp::NumericVector X_theta, Rcpp::IntegerVector ever_active, Rcpp::IntegerVector nactive, double kkt_tol, double objective_tol, int max_active); +RcppExport SEXP selectiveInference_solve_QP_wide(SEXP XSEXP, SEXP boundSEXP, SEXP maxiterSEXP, SEXP thetaSEXP, SEXP linear_funcSEXP, SEXP gradientSEXP, SEXP X_thetaSEXP, SEXP ever_activeSEXP, SEXP nactiveSEXP, SEXP kkt_tolSEXP, SEXP objective_tolSEXP, SEXP max_activeSEXP) { BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::RObject __result; + Rcpp::RNGScope __rngScope; Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type X(XSEXP); Rcpp::traits::input_parameter< double >::type bound(boundSEXP); Rcpp::traits::input_parameter< int >::type maxiter(maxiterSEXP); Rcpp::traits::input_parameter< Rcpp::NumericVector >::type theta(thetaSEXP); Rcpp::traits::input_parameter< Rcpp::NumericVector >::type linear_func(linear_funcSEXP); Rcpp::traits::input_parameter< Rcpp::NumericVector >::type gradient(gradientSEXP); + Rcpp::traits::input_parameter< Rcpp::NumericVector >::type X_theta(X_thetaSEXP); Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type ever_active(ever_activeSEXP); Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type nactive(nactiveSEXP); Rcpp::traits::input_parameter< double >::type kkt_tol(kkt_tolSEXP); Rcpp::traits::input_parameter< double >::type objective_tol(objective_tolSEXP); Rcpp::traits::input_parameter< int >::type max_active(max_activeSEXP); - rcpp_result_gen = Rcpp::wrap(solve_QP_wide(X, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active)); - return rcpp_result_gen; + __result = Rcpp::wrap(solve_QP_wide(X, bound, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, max_active)); + return __result; END_RCPP } // update1_ Rcpp::List update1_(Rcpp::NumericMatrix Q2, Rcpp::NumericVector w, int m, int k); -RcppExport SEXP _selectiveInference_update1_(SEXP Q2SEXP, SEXP wSEXP, SEXP mSEXP, SEXP kSEXP) { +RcppExport SEXP selectiveInference_update1_(SEXP Q2SEXP, SEXP wSEXP, SEXP mSEXP, SEXP kSEXP) { BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::RObject __result; + Rcpp::RNGScope __rngScope; Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type Q2(Q2SEXP); Rcpp::traits::input_parameter< Rcpp::NumericVector >::type w(wSEXP); Rcpp::traits::input_parameter< int >::type m(mSEXP); Rcpp::traits::input_parameter< int >::type k(kSEXP); - rcpp_result_gen = Rcpp::wrap(update1_(Q2, w, m, k)); - return rcpp_result_gen; + __result = Rcpp::wrap(update1_(Q2, w, m, k)); + return __result; END_RCPP } // downdate1_ Rcpp::List downdate1_(Rcpp::NumericMatrix Q1, Rcpp::NumericMatrix R, int j0, int m, int n); -RcppExport SEXP _selectiveInference_downdate1_(SEXP Q1SEXP, SEXP RSEXP, SEXP j0SEXP, SEXP mSEXP, SEXP nSEXP) { +RcppExport SEXP selectiveInference_downdate1_(SEXP Q1SEXP, SEXP RSEXP, SEXP j0SEXP, SEXP mSEXP, SEXP nSEXP) { BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::RObject __result; + Rcpp::RNGScope __rngScope; Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type Q1(Q1SEXP); Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type R(RSEXP); Rcpp::traits::input_parameter< int >::type j0(j0SEXP); Rcpp::traits::input_parameter< int >::type m(mSEXP); Rcpp::traits::input_parameter< int >::type n(nSEXP); - rcpp_result_gen = Rcpp::wrap(downdate1_(Q1, R, j0, m, n)); - return rcpp_result_gen; + __result = Rcpp::wrap(downdate1_(Q1, R, j0, m, n)); + return __result; END_RCPP } - -static const R_CallMethodDef CallEntries[] = { - {"_selectiveInference_solve_QP", (DL_FUNC) &_selectiveInference_solve_QP, 11}, - {"_selectiveInference_solve_QP_wide", (DL_FUNC) &_selectiveInference_solve_QP_wide, 11}, - {"_selectiveInference_update1_", (DL_FUNC) &_selectiveInference_update1_, 4}, - {"_selectiveInference_downdate1_", (DL_FUNC) &_selectiveInference_downdate1_, 5}, - {NULL, NULL, 0} -}; - -RcppExport void R_init_selectiveInference(DllInfo *dll) { - R_registerRoutines(dll, NULL, CallEntries, NULL, NULL); - R_useDynamicSymbols(dll, FALSE); -} diff --git a/selectiveInference/src/debias.h b/selectiveInference/src/debias.h index 6de2940..70ba536 100644 --- a/selectiveInference/src/debias.h +++ b/selectiveInference/src/debias.h @@ -24,26 +24,41 @@ int check_KKT_qp(double *theta, /* current theta */ double tol); /* precision for checking KKT conditions */ int solve_wide(double *X_ptr, /* A design matrix */ + double *X_theta_ptr, /* Fitted values */ double *linear_func_ptr, /* Linear term in objective */ double *X_diag_ptr, /* Diagonal entry of covariance matrix */ - double *gradient_ptr, /* Current gradient of quadratic loss */ - int *ever_active_ptr, /* Ever active set: 0-based */ + double *gradient_ptr, /* X times theta */ + int *need_update_ptr, /* Keeps track of updated gradient coords */ + int *ever_active_ptr, /* Ever active set: 1-based */ int *nactive_ptr, /* Size of ever active set */ - int nrow, /* How many rows in X */ - int ncol, /* How many rows in X */ + int ncase, /* How many rows in X */ + int nfeature, /* How many columns in X */ double bound, /* feasibility parameter */ - double *theta, /* current value */ - int maxiter, /* how many iterations */ + double *theta_ptr, /* current value */ + int maxiter, /* max number of iterations */ double kkt_tol, /* precision for checking KKT conditions */ double objective_tol, /* precision for checking relative decrease in objective value */ - int max_active); /* Upper limit for size of active set -- otherwise break */ + int max_active); /* Upper limit for size of active set -- otherwise break */ -int check_KKT_wide(double *theta, /* current theta */ - double *gradient_ptr, /* Current gradient of quadratic loss */ - int nrow, /* how many rows in Sigma */ - double bound, /* Lagrange multipler for \ell_1 */ - double tol); /* precision for checking KKT conditions */ +int check_KKT_wide(double *theta_ptr, /* current theta */ + double *gradient_ptr, /* X^TX/n times theta */ + double *X_theta_ptr, /* Current fitted values */ + double *X_ptr, /* A design matrix */ + double *linear_func_ptr, /* Linear term in objective */ + int *need_update_ptr, /* Which coordinates need to be updated? */ + int nfeature, /* how many columns in X */ + int ncase, /* how many rows in X */ + double bound, /* Lagrange multipler for \ell_1 */ + double tol); /* precision for checking KKT conditions */ +void update_gradient_wide(double *gradient_ptr, /* X^TX/n times theta */ + double *X_theta_ptr, /* Current fitted values */ + double *X_ptr, /* A design matrix */ + double *linear_func_ptr, /* Linear term in objective */ + int *need_update_ptr, /* Which coordinates need to be updated? */ + int nfeature, /* how many columns in X */ + int ncase); /* how many rows in X */ + #ifdef __cplusplus } /* extern "C" */ #endif /* __cplusplus */ diff --git a/selectiveInference/src/quadratic_program_wide.c b/selectiveInference/src/quadratic_program_wide.c index 21ad990..be7411d 100644 --- a/selectiveInference/src/quadratic_program_wide.c +++ b/selectiveInference/src/quadratic_program_wide.c @@ -1,4 +1,5 @@ #include // for fabs +#include // Find an approximate row of \hat{Sigma}^{-1} @@ -13,64 +14,113 @@ // Throughout X is a design matrix -double objective_wide(double *X_ptr, /* A design matrix */ - double *X_theta_ptr, /* Fitted values */ +double objective_wide(double *X_theta_ptr, /* Fitted values */ double *linear_func_ptr, /* Linear term in objective */ int *ever_active_ptr, /* Ever active set: 0-based */ int *nactive_ptr, /* Size of ever active set */ - int nrow, /* how many rows in X */ - int ncol, /* how many columns in X */ + int ncase, /* how many rows in X */ + int nfeature, /* how many columns in X */ double bound, /* Lagrange multipler for \ell_1 */ - double *theta) /* current value */ + double *theta_ptr) /* current value */ { - int irow, icol; + int icase, iactive; double value = 0; double *X_theta_ptr_tmp = X_theta_ptr; double *linear_func_ptr_tmp = linear_func_ptr; - double *theta_row_ptr, *theta_col_ptr; - int *active_row_ptr, *active_col_ptr; - int active_row, active_col; + double *theta_ptr_tmp; + int *active_feature_ptr; + int active_feature; int nactive = *nactive_ptr; - theta_row_ptr = theta; - theta_col_ptr = theta; + // The term \|X\theta\|^2_2/n, with n=ncase - double entry = 0; // An entry of X\theta + for (icase=0; icase 0) && (fabs(gradient + bound) > tol * bound)) { + if (*theta_ptr_tmp != 0) { // these coordinates of gradients should be equal to -bound + // fprintf(stderr, "WTF\n"); + if ((*theta_ptr_tmp > 0) && (fabs(gradient + bound) > tol * bound)) { + // fprintf(stderr, "WTF2\n"); return(0); } - else if ((*theta_ptr < 0) && (fabs(gradient - bound) > tol * bound)) { + else if ((*theta_ptr_tmp < 0) && (fabs(gradient - bound) > tol * bound)) { + // fprintf(stderr, "WTF3\n"); return(0); } } else { if (fabs(gradient) > (1. + tol) * bound) { + // fprintf(stderr, "inactive\n"); return(0); } } @@ -141,10 +218,12 @@ double update_one_coord_wide(double *X_ptr, /* A design matrix*/ double *gradient_ptr, /* X^TX/n times theta */ int *ever_active_ptr, /* Ever active set: 1-based */ int *nactive_ptr, /* Size of ever active set */ - int nrow, /* How many rows in X */ - int ncol, /* How many rows in X */ + double *X_theta_ptr, /* X\theta -- fitted values */ + int *need_update_ptr, /* Whether a gradient coordinate needs update or not */ + int ncase, /* How many rows in X */ + int nfeature, /* How many rows in X */ double bound, /* feasibility parameter */ - double *theta, /* current value */ + double *theta_ptr, /* current value */ int coord, /* which coordinate to update: 0-based */ int is_active) /* Is this coord in ever_active */ { @@ -154,18 +233,18 @@ double update_one_coord_wide(double *X_ptr, /* A design matrix*/ double value = 0; double old_value; double *X_ptr_tmp; - double *gradient_ptr_tmp; - double *theta_ptr; - int icol = 0; + double *X_theta_ptr_tmp; + int *need_update_ptr_tmp; + double *theta_ptr_tmp; + int ifeature, icase; double *quadratic_ptr = ((double *) X_diag_ptr + coord); double quadratic_term = *quadratic_ptr; - gradient_ptr_tmp = ((double *) gradient_ptr + coord); - linear_term = *gradient_ptr_tmp; + linear_term = compute_gradient_coord(gradient_ptr, X_theta_ptr, X_ptr, linear_func_ptr, need_update_ptr, coord, ncase); - theta_ptr = ((double *) theta + coord); - old_value = *theta_ptr; + theta_ptr_tmp = ((double *) theta_ptr + coord); + old_value = *theta_ptr_tmp; // The coord entry of gradient_ptr term has a diagonal term in it: // X[coord, coord] * theta[coord] @@ -198,18 +277,26 @@ double update_one_coord_wide(double *X_ptr, /* A design matrix*/ if (fabs(old_value - value) > 1.e-6 * (fabs(value) + fabs(old_value))) { + // Set the update_gradient_ptr to 1 + + need_update_ptr_tmp = need_update_ptr; + for (ifeature=0; ifeature= max_active) { break; } // Check relative decrease of objective + // fprintf(stderr, "here7\n"); + if (check_objective) { - new_value = objective_wide(X_ptr, + new_value = objective_wide(X_theta_ptr, linear_func_ptr, ever_active_ptr, nactive_ptr, - nrow, - ncol, + ncase, + nfeature, bound, - theta); + theta_ptr); + + // fprintf(stderr, "here8\n"); if ((fabs(old_value - new_value) < objective_tol * fabs(new_value)) && (iter > 0)) { break; } old_value = new_value; } + + // fprintf(stderr, "here10\n"); + } return(iter); } From ed19c2942f72d331a5c7231a28c40b4bd94cb202 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Tue, 26 Sep 2017 14:49:04 -0700 Subject: [PATCH 254/493] test script for wide problem --- test.R | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 test.R diff --git a/test.R b/test.R new file mode 100644 index 0000000..0b48686 --- /dev/null +++ b/test.R @@ -0,0 +1,23 @@ +set.seed(43) + + n = 100 + p = 200 + lam = 10 + X = matrix(rnorm(n*p), n, p) + Y = rnorm(n) + library(selectiveInference) + p = ncol(X) + soln_R = rep(0, p) + grad = -t(X) %*% Y + ever_active = c(1, rep(0, p-1)) + nactive = as.integer(1) + kkt_tol = 1.e-12 + objective_tol = 1.e-12 + maxiter = 500 + Xtheta = rep(0, n) + soln_R = selectiveInference:::solve_QP(t(X) %*% X, lam, maxiter, soln_R, -t(X) %*% Y, grad, ever_active, nactive, kkt_tol, objective_tol, p)$soln + print(soln_R) + # test wide solver + + soln_R_wide = selectiveInference:::solve_QP_wide(X, lam, maxiter, soln_R, -t(X) %*% Y, grad, Xtheta, ever_active, nactive, kkt_tol, objective_tol, p) + print(soln_R_wide) \ No newline at end of file From ce0dc0741063173f700e9e1e1237fd77c88d65ee Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Tue, 26 Sep 2017 14:55:18 -0700 Subject: [PATCH 255/493] test running now -- no segfault? --- test.R | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/test.R b/test.R index 0b48686..2d9349d 100644 --- a/test.R +++ b/test.R @@ -2,22 +2,28 @@ set.seed(43) n = 100 p = 200 - lam = 10 + lam = 0.1 X = matrix(rnorm(n*p), n, p) Y = rnorm(n) library(selectiveInference) p = ncol(X) soln_R = rep(0, p) - grad = -t(X) %*% Y + grad = -t(X) %*% Y / n ever_active = c(1, rep(0, p-1)) nactive = as.integer(1) kkt_tol = 1.e-12 objective_tol = 1.e-12 maxiter = 500 - Xtheta = rep(0, n) - soln_R = selectiveInference:::solve_QP(t(X) %*% X, lam, maxiter, soln_R, -t(X) %*% Y, grad, ever_active, nactive, kkt_tol, objective_tol, p)$soln + soln_R = selectiveInference:::solve_QP(t(X) %*% X / n, lam, maxiter, soln_R, -t(X) %*% Y / n, grad, ever_active, nactive, kkt_tol, objective_tol, p)$soln print(soln_R) + Xtheta = rep(0, n) + nactive = as.integer(1) + ever_active = c(1, rep(0, p-1)) + soln_R = rep(0, p) + grad = - t(X) %*% Y / n # test wide solver - - soln_R_wide = selectiveInference:::solve_QP_wide(X, lam, maxiter, soln_R, -t(X) %*% Y, grad, Xtheta, ever_active, nactive, kkt_tol, objective_tol, p) - print(soln_R_wide) \ No newline at end of file + soln_R_wide = selectiveInference:::solve_QP_wide(X, lam, maxiter, soln_R, -t(X) %*% Y / n, grad, Xtheta, ever_active, nactive, kkt_tol, objective_tol, p) + print(soln_R_wide) + print(soln_R) + print(soln_R_wide$soln) + print(soln_R_wide$soln - soln_R) \ No newline at end of file From c26a06b243084eb9cdffa208ffaf9418e2c49850 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Tue, 26 Sep 2017 21:29:58 -0700 Subject: [PATCH 256/493] WIP: running but not agreeing with other solver --- selectiveInference/R/RcppExports.R | 10 ++-- selectiveInference/src/RcppExports.cpp | 55 ++++++++++++------- .../src/quadratic_program_wide.c | 4 ++ test.R | 38 +++++++++---- 4 files changed, 71 insertions(+), 36 deletions(-) diff --git a/selectiveInference/R/RcppExports.R b/selectiveInference/R/RcppExports.R index 8af4640..f5ebee4 100644 --- a/selectiveInference/R/RcppExports.R +++ b/selectiveInference/R/RcppExports.R @@ -1,19 +1,19 @@ -# This file was generated by Rcpp::compileAttributes +# Generated by using Rcpp::compileAttributes() -> do not edit by hand # Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 solve_QP <- function(Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active) { - .Call('selectiveInference_solve_QP', PACKAGE = 'selectiveInference', Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active) + .Call('_selectiveInference_solve_QP', PACKAGE = 'selectiveInference', Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active) } solve_QP_wide <- function(X, bound, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, max_active) { - .Call('selectiveInference_solve_QP_wide', PACKAGE = 'selectiveInference', X, bound, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, max_active) + .Call('_selectiveInference_solve_QP_wide', PACKAGE = 'selectiveInference', X, bound, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, max_active) } update1_ <- function(Q2, w, m, k) { - .Call('selectiveInference_update1_', PACKAGE = 'selectiveInference', Q2, w, m, k) + .Call('_selectiveInference_update1_', PACKAGE = 'selectiveInference', Q2, w, m, k) } downdate1_ <- function(Q1, R, j0, m, n) { - .Call('selectiveInference_downdate1_', PACKAGE = 'selectiveInference', Q1, R, j0, m, n) + .Call('_selectiveInference_downdate1_', PACKAGE = 'selectiveInference', Q1, R, j0, m, n) } diff --git a/selectiveInference/src/RcppExports.cpp b/selectiveInference/src/RcppExports.cpp index efa87d5..02a7741 100644 --- a/selectiveInference/src/RcppExports.cpp +++ b/selectiveInference/src/RcppExports.cpp @@ -1,4 +1,4 @@ -// This file was generated by Rcpp::compileAttributes +// Generated by using Rcpp::compileAttributes() -> do not edit by hand // Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 #include @@ -7,10 +7,10 @@ using namespace Rcpp; // solve_QP Rcpp::List solve_QP(Rcpp::NumericMatrix Sigma, double bound, int maxiter, Rcpp::NumericVector theta, Rcpp::NumericVector linear_func, Rcpp::NumericVector gradient, Rcpp::IntegerVector ever_active, Rcpp::IntegerVector nactive, double kkt_tol, double objective_tol, int max_active); -RcppExport SEXP selectiveInference_solve_QP(SEXP SigmaSEXP, SEXP boundSEXP, SEXP maxiterSEXP, SEXP thetaSEXP, SEXP linear_funcSEXP, SEXP gradientSEXP, SEXP ever_activeSEXP, SEXP nactiveSEXP, SEXP kkt_tolSEXP, SEXP objective_tolSEXP, SEXP max_activeSEXP) { +RcppExport SEXP _selectiveInference_solve_QP(SEXP SigmaSEXP, SEXP boundSEXP, SEXP maxiterSEXP, SEXP thetaSEXP, SEXP linear_funcSEXP, SEXP gradientSEXP, SEXP ever_activeSEXP, SEXP nactiveSEXP, SEXP kkt_tolSEXP, SEXP objective_tolSEXP, SEXP max_activeSEXP) { BEGIN_RCPP - Rcpp::RObject __result; - Rcpp::RNGScope __rngScope; + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type Sigma(SigmaSEXP); Rcpp::traits::input_parameter< double >::type bound(boundSEXP); Rcpp::traits::input_parameter< int >::type maxiter(maxiterSEXP); @@ -22,16 +22,16 @@ BEGIN_RCPP Rcpp::traits::input_parameter< double >::type kkt_tol(kkt_tolSEXP); Rcpp::traits::input_parameter< double >::type objective_tol(objective_tolSEXP); Rcpp::traits::input_parameter< int >::type max_active(max_activeSEXP); - __result = Rcpp::wrap(solve_QP(Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active)); - return __result; + rcpp_result_gen = Rcpp::wrap(solve_QP(Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active)); + return rcpp_result_gen; END_RCPP } // solve_QP_wide Rcpp::List solve_QP_wide(Rcpp::NumericMatrix X, double bound, int maxiter, Rcpp::NumericVector theta, Rcpp::NumericVector linear_func, Rcpp::NumericVector gradient, Rcpp::NumericVector X_theta, Rcpp::IntegerVector ever_active, Rcpp::IntegerVector nactive, double kkt_tol, double objective_tol, int max_active); -RcppExport SEXP selectiveInference_solve_QP_wide(SEXP XSEXP, SEXP boundSEXP, SEXP maxiterSEXP, SEXP thetaSEXP, SEXP linear_funcSEXP, SEXP gradientSEXP, SEXP X_thetaSEXP, SEXP ever_activeSEXP, SEXP nactiveSEXP, SEXP kkt_tolSEXP, SEXP objective_tolSEXP, SEXP max_activeSEXP) { +RcppExport SEXP _selectiveInference_solve_QP_wide(SEXP XSEXP, SEXP boundSEXP, SEXP maxiterSEXP, SEXP thetaSEXP, SEXP linear_funcSEXP, SEXP gradientSEXP, SEXP X_thetaSEXP, SEXP ever_activeSEXP, SEXP nactiveSEXP, SEXP kkt_tolSEXP, SEXP objective_tolSEXP, SEXP max_activeSEXP) { BEGIN_RCPP - Rcpp::RObject __result; - Rcpp::RNGScope __rngScope; + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type X(XSEXP); Rcpp::traits::input_parameter< double >::type bound(boundSEXP); Rcpp::traits::input_parameter< int >::type maxiter(maxiterSEXP); @@ -44,36 +44,49 @@ BEGIN_RCPP Rcpp::traits::input_parameter< double >::type kkt_tol(kkt_tolSEXP); Rcpp::traits::input_parameter< double >::type objective_tol(objective_tolSEXP); Rcpp::traits::input_parameter< int >::type max_active(max_activeSEXP); - __result = Rcpp::wrap(solve_QP_wide(X, bound, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, max_active)); - return __result; + rcpp_result_gen = Rcpp::wrap(solve_QP_wide(X, bound, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, max_active)); + return rcpp_result_gen; END_RCPP } // update1_ Rcpp::List update1_(Rcpp::NumericMatrix Q2, Rcpp::NumericVector w, int m, int k); -RcppExport SEXP selectiveInference_update1_(SEXP Q2SEXP, SEXP wSEXP, SEXP mSEXP, SEXP kSEXP) { +RcppExport SEXP _selectiveInference_update1_(SEXP Q2SEXP, SEXP wSEXP, SEXP mSEXP, SEXP kSEXP) { BEGIN_RCPP - Rcpp::RObject __result; - Rcpp::RNGScope __rngScope; + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type Q2(Q2SEXP); Rcpp::traits::input_parameter< Rcpp::NumericVector >::type w(wSEXP); Rcpp::traits::input_parameter< int >::type m(mSEXP); Rcpp::traits::input_parameter< int >::type k(kSEXP); - __result = Rcpp::wrap(update1_(Q2, w, m, k)); - return __result; + rcpp_result_gen = Rcpp::wrap(update1_(Q2, w, m, k)); + return rcpp_result_gen; END_RCPP } // downdate1_ Rcpp::List downdate1_(Rcpp::NumericMatrix Q1, Rcpp::NumericMatrix R, int j0, int m, int n); -RcppExport SEXP selectiveInference_downdate1_(SEXP Q1SEXP, SEXP RSEXP, SEXP j0SEXP, SEXP mSEXP, SEXP nSEXP) { +RcppExport SEXP _selectiveInference_downdate1_(SEXP Q1SEXP, SEXP RSEXP, SEXP j0SEXP, SEXP mSEXP, SEXP nSEXP) { BEGIN_RCPP - Rcpp::RObject __result; - Rcpp::RNGScope __rngScope; + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type Q1(Q1SEXP); Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type R(RSEXP); Rcpp::traits::input_parameter< int >::type j0(j0SEXP); Rcpp::traits::input_parameter< int >::type m(mSEXP); Rcpp::traits::input_parameter< int >::type n(nSEXP); - __result = Rcpp::wrap(downdate1_(Q1, R, j0, m, n)); - return __result; + rcpp_result_gen = Rcpp::wrap(downdate1_(Q1, R, j0, m, n)); + return rcpp_result_gen; END_RCPP } + +static const R_CallMethodDef CallEntries[] = { + {"_selectiveInference_solve_QP", (DL_FUNC) &_selectiveInference_solve_QP, 11}, + {"_selectiveInference_solve_QP_wide", (DL_FUNC) &_selectiveInference_solve_QP_wide, 12}, + {"_selectiveInference_update1_", (DL_FUNC) &_selectiveInference_update1_, 4}, + {"_selectiveInference_downdate1_", (DL_FUNC) &_selectiveInference_downdate1_, 5}, + {NULL, NULL, 0} +}; + +RcppExport void R_init_selectiveInference(DllInfo *dll) { + R_registerRoutines(dll, NULL, CallEntries, NULL, NULL); + R_useDynamicSymbols(dll, FALSE); +} diff --git a/selectiveInference/src/quadratic_program_wide.c b/selectiveInference/src/quadratic_program_wide.c index be7411d..ca9301e 100644 --- a/selectiveInference/src/quadratic_program_wide.c +++ b/selectiveInference/src/quadratic_program_wide.c @@ -388,6 +388,7 @@ int solve_wide(double *X_ptr, /* A design matrix */ ncase, bound, kkt_tol) == 1) { + fprintf(stderr, "break1\n"); break; } @@ -426,6 +427,7 @@ int solve_wide(double *X_ptr, /* A design matrix */ ncase, bound, kkt_tol) == 1) { + fprintf(stderr, "break2\n"); break; } @@ -434,6 +436,7 @@ int solve_wide(double *X_ptr, /* A design matrix */ // fprintf(stderr, "here18 %d\n", *nactive_ptr); if (*nactive_ptr >= max_active) { + fprintf(stderr, "break3\n"); break; } @@ -454,6 +457,7 @@ int solve_wide(double *X_ptr, /* A design matrix */ // fprintf(stderr, "here8\n"); if ((fabs(old_value - new_value) < objective_tol * fabs(new_value)) && (iter > 0)) { + fprintf(stderr, "break5 %f %f %f %d\n", old_value, new_value, objective_tol, iter); break; } old_value = new_value; diff --git a/test.R b/test.R index 2d9349d..31264be 100644 --- a/test.R +++ b/test.R @@ -2,28 +2,46 @@ set.seed(43) n = 100 p = 200 - lam = 0.1 + lam = 0.2 X = matrix(rnorm(n*p), n, p) Y = rnorm(n) library(selectiveInference) p = ncol(X) soln_R = rep(0, p) grad = -t(X) %*% Y / n - ever_active = c(1, rep(0, p-1)) + ever_active = as.integer(c(1, rep(0, p-1))) nactive = as.integer(1) kkt_tol = 1.e-12 - objective_tol = 1.e-12 + objective_tol = 1.e-16 maxiter = 500 - soln_R = selectiveInference:::solve_QP(t(X) %*% X / n, lam, maxiter, soln_R, -t(X) %*% Y / n, grad, ever_active, nactive, kkt_tol, objective_tol, p)$soln + soln_R = selectiveInference:::solve_QP(t(X) %*% X / n, lam, maxiter, soln_R, -t(X) %*% Y / n, grad, ever_active, nactive, kkt_tol, objective_tol, p) + print('active') + print(nactive) + print(ever_active) + print(soln_R$ever_active) + soln_R = soln_R$soln + soln_R_old = soln_R print(soln_R) Xtheta = rep(0, n) nactive = as.integer(1) - ever_active = c(1, rep(0, p-1)) + ever_active = as.integer(c(1, rep(0, p-1))) soln_R = rep(0, p) grad = - t(X) %*% Y / n # test wide solver - soln_R_wide = selectiveInference:::solve_QP_wide(X, lam, maxiter, soln_R, -t(X) %*% Y / n, grad, Xtheta, ever_active, nactive, kkt_tol, objective_tol, p) - print(soln_R_wide) - print(soln_R) - print(soln_R_wide$soln) - print(soln_R_wide$soln - soln_R) \ No newline at end of file + soln_R_wide = selectiveInference:::solve_QP_wide(X, lam, maxiter, soln_R*1., -t(X) %*% Y / n, grad, Xtheta, ever_active, nactive, kkt_tol, objective_tol, p) + print(nactive) + print(soln_R_wide$ever_active) + + print('diff') + print(soln_R_wide$soln - soln_R_old) + print(soln_R_wide$gradient[soln_R_wide$ever_active]) + print(max(abs(soln_R_wide$gradient[-soln_R_wide$ever_active]))) + print(soln_R_wide$kkt_check) + print(soln_R_wide$iter) +# print(Xtheta - X %*% soln_R_wide$soln) +# print(Xtheta) + + soln_R_wide = selectiveInference:::solve_QP_wide(X, 0.7 * lam, maxiter, soln_R_wide$soln, -t(X) %*% Y / n, grad, Xtheta, ever_active, nactive, kkt_tol, objective_tol, p) +# print(Xtheta - X %*% soln_R_wide$soln) +# print(soln_R_wide$soln) + soln_R_wide = selectiveInference:::solve_QP_wide(X, 0.5 * lam, maxiter, soln_R_wide$soln, -t(X) %*% Y / n, grad, Xtheta, ever_active, nactive, kkt_tol, objective_tol, p) \ No newline at end of file From bf65665533fcfad41225ea64f0bb8da72c753063 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Wed, 27 Sep 2017 22:12:46 -0700 Subject: [PATCH 257/493] WIP: C code for wide version working -- need to work on R code --- selectiveInference/src/Makevars | 2 +- selectiveInference/src/Rcpp-debias.cpp | 18 ++-- selectiveInference/src/debias.h | 46 +++++----- selectiveInference/src/quadratic_program.c | 56 ++++++------ .../src/quadratic_program_wide.c | 88 +++++++------------ 5 files changed, 92 insertions(+), 118 deletions(-) diff --git a/selectiveInference/src/Makevars b/selectiveInference/src/Makevars index b77ed95..2adf9a6 100644 --- a/selectiveInference/src/Makevars +++ b/selectiveInference/src/Makevars @@ -2,7 +2,7 @@ PKG_CFLAGS= -I. PKG_CPPFLAGS= -I. PKG_LIBS=-L. -$(SHLIB): Rcpp Rcpp-matrixcomps.o Rcpp-debias.o RcppExports.o quadratic_program.o +$(SHLIB): Rcpp Rcpp-matrixcomps.o Rcpp-debias.o RcppExports.o quadratic_program.o quadratic_program_wide.o clean: rm -f *o diff --git a/selectiveInference/src/Rcpp-debias.cpp b/selectiveInference/src/Rcpp-debias.cpp index fcf0eb6..ce8bb15 100644 --- a/selectiveInference/src/Rcpp-debias.cpp +++ b/selectiveInference/src/Rcpp-debias.cpp @@ -1,5 +1,5 @@ #include // need to include the main Rcpp header file -#include // where find_one_row_void is defined +#include // where solve_QP, solve_QP_wide are defined // Below, the gradient should be equal to Sigma * theta + linear_func!! // No check is done on this. @@ -97,15 +97,15 @@ Rcpp::List solve_QP_wide(Rcpp::NumericMatrix X, Rcpp::IntegerVector need_update(nfeature); // Extract the diagonal - Rcpp::NumericVector X_diag(nfeature); - double *X_diag_p = X_diag.begin(); + Rcpp::NumericVector nndef_diag(nfeature); + double *nndef_diag_p = nndef_diag.begin(); - for (icase=0; icase // for fabs -// Find an approximate row of \hat{Sigma}^{-1} +// Find an approximate row of \hat{nndef}^{-1} // Solves a dual version of problem (4) of https://arxiv.org/pdf/1306.3171.pdf @@ -11,17 +11,17 @@ // Therefore we don't have to negate the answer to get theta. // Update one coordinate -double objective_qp(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ +double objective_qp(double *nndef_ptr, /* A non-negative definite matrix */ double *linear_func_ptr, /* Linear term in objective */ int *ever_active_ptr, /* Ever active set: 0-based */ int *nactive_ptr, /* Size of ever active set */ - int nrow, /* how many rows in Sigma */ + int nrow, /* how many rows in nndef */ double bound, /* Lagrange multipler for \ell_1 */ double *theta) /* current value */ { int irow, icol; double value = 0; - double *Sigma_ptr_tmp = Sigma_ptr; + double *nndef_ptr_tmp = nndef_ptr; double *linear_func_ptr_tmp = linear_func_ptr; double *theta_row_ptr, *theta_col_ptr; int *active_row_ptr, *active_col_ptr; @@ -43,9 +43,9 @@ double objective_qp(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ active_col = *active_col_ptr - 1; // Ever-active is 1-based theta_col_ptr = ((double *) theta + active_col); - Sigma_ptr_tmp = ((double *) Sigma_ptr + nrow * active_col + active_row); // Matrices are column-major order + nndef_ptr_tmp = ((double *) nndef_ptr + nrow * active_col + active_row); // Matrices are column-major order - value += 0.5 * (*Sigma_ptr_tmp) * (*theta_row_ptr) * (*theta_col_ptr); + value += 0.5 * (*nndef_ptr_tmp) * (*theta_row_ptr) * (*theta_col_ptr); } value += bound * fabs((*theta_row_ptr)); // the \ell_1 term @@ -91,8 +91,8 @@ int update_ever_active_qp(int coord, } int check_KKT_qp(double *theta, /* current theta */ - double *gradient_ptr, /* Sigma times theta */ - int nrow, /* how many rows in Sigma */ + double *gradient_ptr, /* nndef times theta + linear_func */ + int nrow, /* how many rows in nndef */ double bound, /* Lagrange multipler for \ell_1 */ double tol) /* precision for checking KKT conditions */ { @@ -128,13 +128,13 @@ int check_KKT_qp(double *theta, /* current theta */ return(1); } -double update_one_coord_qp(double *Sigma_ptr, /* A covariance matrix: X^TX/n */ +double update_one_coord_qp(double *nndef_ptr, /* A non-negative definite matrix */ double *linear_func_ptr, /* Linear term in objective */ - double *Sigma_diag_ptr, /* Diagonal entries of Sigma */ - double *gradient_ptr, /* Sigma times theta */ + double *nndef_diag_ptr, /* Diagonal of nndef */ + double *gradient_ptr, /* nndef times theta + linear_func */ int *ever_active_ptr, /* Ever active set: 1-based */ int *nactive_ptr, /* Size of ever active set */ - int nrow, /* How many rows in Sigma */ + int nrow, /* How many rows in nndef */ double bound, /* feasibility parameter */ double *theta, /* current value */ int coord, /* which coordinate to update: 0-based */ @@ -145,12 +145,12 @@ double update_one_coord_qp(double *Sigma_ptr, /* A covariance matrix: double linear_term = 0; double value = 0; double old_value; - double *Sigma_ptr_tmp; + double *nndef_ptr_tmp; double *gradient_ptr_tmp; double *theta_ptr; int icol = 0; - double *quadratic_ptr = ((double *) Sigma_diag_ptr + coord); + double *quadratic_ptr = ((double *) nndef_diag_ptr + coord); double quadratic_term = *quadratic_ptr; gradient_ptr_tmp = ((double *) gradient_ptr + coord); @@ -160,7 +160,7 @@ double update_one_coord_qp(double *Sigma_ptr, /* A covariance matrix: old_value = *theta_ptr; // The coord entry of gradient_ptr term has a diagonal term in it: - // Sigma[coord, coord] * theta[coord] + // nndef[coord, coord] * theta[coord] // This removes it. linear_term -= quadratic_term * old_value; @@ -191,13 +191,13 @@ double update_one_coord_qp(double *Sigma_ptr, /* A covariance matrix: if (fabs(old_value - value) > 1.e-6 * (fabs(value) + fabs(old_value))) { delta = value - old_value; - Sigma_ptr_tmp = ((double *) Sigma_ptr + coord * nrow); + nndef_ptr_tmp = ((double *) nndef_ptr + coord * nrow); gradient_ptr_tmp = ((double *) gradient_ptr); for (icol=0; icol // for fabs -#include // Find an approximate row of \hat{Sigma}^{-1} @@ -50,8 +49,6 @@ double objective_wide(double *X_theta_ptr, /* Fitted values */ active_feature_ptr = ((int *) ever_active_ptr + iactive); active_feature = *active_feature_ptr - 1; // Ever-active is 1-based - // fprintf(stderr, "active %d\n", active_feature); - theta_ptr_tmp = ((double *) theta_ptr + active_feature); linear_func_ptr_tmp = ((double *) linear_func_ptr + active_feature); value += (*linear_func_ptr_tmp) * (*theta_ptr_tmp); @@ -69,7 +66,7 @@ double objective_wide(double *X_theta_ptr, /* Fitted values */ double compute_gradient_coord(double *gradient_ptr, /* Gradient -- one coordinate will be updated if needed */ double *X_theta_ptr, /* Current fitted values */ - double *X_ptr, /* A design matrix */ + double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX/ncase = nndef */ double *linear_func_ptr, /* Linear term in objective */ int *need_update_ptr, /* Which coordinates need to be updated? */ int coord, /* Coordinate we are trying to update */ @@ -85,11 +82,10 @@ double compute_gradient_coord(double *gradient_ptr, /* Gradient -- one co double value = 0.; need_update_ptr_tmp = ((int *) need_update_ptr + coord); + // Check if this coordinate needs updating if (*need_update_ptr_tmp == 1) { - // fprintf(stderr, "compute grad %d %d\n", ncase, coord); - for (icase=0; icase 0) && (fabs(gradient + bound) > tol * bound)) { - // fprintf(stderr, "WTF2\n"); return(0); } else if ((*theta_ptr_tmp < 0) && (fabs(gradient - bound) > tol * bound)) { - // fprintf(stderr, "WTF3\n"); return(0); } + } else { if (fabs(gradient) > (1. + tol) * bound) { - // fprintf(stderr, "inactive\n"); return(0); } } @@ -214,8 +206,8 @@ int check_KKT_wide(double *theta_ptr, /* current theta */ double update_one_coord_wide(double *X_ptr, /* A design matrix*/ double *linear_func_ptr, /* Linear term in objective */ - double *X_diag_ptr, /* Diagonal entries of Sigma */ - double *gradient_ptr, /* X^TX/n times theta */ + double *nndef_diag_ptr, /* Diagonal entries of Sigma */ + double *gradient_ptr, /* X^TX/ncase times theta + linear_func*/ int *ever_active_ptr, /* Ever active set: 1-based */ int *nactive_ptr, /* Size of ever active set */ double *X_theta_ptr, /* X\theta -- fitted values */ @@ -238,8 +230,8 @@ double update_one_coord_wide(double *X_ptr, /* A design matrix*/ double *theta_ptr_tmp; int ifeature, icase; - double *quadratic_ptr = ((double *) X_diag_ptr + coord); - double quadratic_term = *quadratic_ptr; + double *diagonal_ptr = ((double *) nndef_diag_ptr + coord); + double diagonal_entry = *diagonal_ptr; linear_term = compute_gradient_coord(gradient_ptr, X_theta_ptr, X_ptr, linear_func_ptr, need_update_ptr, coord, ncase); @@ -247,24 +239,24 @@ double update_one_coord_wide(double *X_ptr, /* A design matrix*/ old_value = *theta_ptr_tmp; // The coord entry of gradient_ptr term has a diagonal term in it: - // X[coord, coord] * theta[coord] + // (X^TX)[coord, coord] * theta[coord] / ncase // This removes it. - linear_term -= quadratic_term * old_value; + linear_term -= diagonal_entry * old_value; // Now soft-threshold the coord entry of theta // Objective is t \mapsto q/2 * t^2 + l * t + bound |t| - // with q=quadratic_term and l=linear_term + // with q=diagonal_entry and l=linear_term // With a negative linear term, solution should be // positive if (linear_term < -bound) { - value = (-linear_term - bound) / quadratic_term; + value = (-linear_term - bound) / diagonal_entry; } else if (linear_term > bound) { - value = -(linear_term - bound) / quadratic_term; + value = -(linear_term - bound) / diagonal_entry; } // Add to active set if necessary @@ -273,7 +265,7 @@ double update_one_coord_wide(double *X_ptr, /* A design matrix*/ update_ever_active_wide(coord, ever_active_ptr, nactive_ptr); } - // Update the linear term + // Update X\theta if changed if (fabs(old_value - value) > 1.e-6 * (fabs(value) + fabs(old_value))) { @@ -298,17 +290,22 @@ double update_one_coord_wide(double *X_ptr, /* A design matrix*/ theta_ptr_tmp = ((double *) theta_ptr + coord); *theta_ptr_tmp = value; + theta_ptr_tmp = theta_ptr; + for (ifeature=0; ifeature= max_active) { - fprintf(stderr, "break3\n"); break; } // Check relative decrease of objective - // fprintf(stderr, "here7\n"); - if (check_objective) { new_value = objective_wide(X_theta_ptr, linear_func_ptr, @@ -454,17 +433,12 @@ int solve_wide(double *X_ptr, /* A design matrix */ bound, theta_ptr); - // fprintf(stderr, "here8\n"); - if ((fabs(old_value - new_value) < objective_tol * fabs(new_value)) && (iter > 0)) { - fprintf(stderr, "break5 %f %f %f %d\n", old_value, new_value, objective_tol, iter); break; } old_value = new_value; } - // fprintf(stderr, "here10\n"); - } return(iter); } From f85a568facc0f6d72d424d486a56642b42ffd97d Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Wed, 27 Sep 2017 22:35:15 -0700 Subject: [PATCH 258/493] test of wide solver --- test.R | 75 ++++++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 49 insertions(+), 26 deletions(-) diff --git a/test.R b/test.R index 31264be..0660840 100644 --- a/test.R +++ b/test.R @@ -14,34 +14,57 @@ set.seed(43) kkt_tol = 1.e-12 objective_tol = 1.e-16 maxiter = 500 - soln_R = selectiveInference:::solve_QP(t(X) %*% X / n, lam, maxiter, soln_R, -t(X) %*% Y / n, grad, ever_active, nactive, kkt_tol, objective_tol, p) - print('active') - print(nactive) - print(ever_active) - print(soln_R$ever_active) - soln_R = soln_R$soln - soln_R_old = soln_R - print(soln_R) - Xtheta = rep(0, n) + soln_R = rep(0, p) + grad = -t(X) %*% Y / n + ever_active = as.integer(c(1, rep(0, p-1))) + nactive = as.integer(1) + kkt_tol = 1.e-12 + objective_tol = 1.e-16 + maxiter = 500 + soln_R = selectiveInference:::solve_QP(t(X) %*% X / n, lam, maxiter, soln_R, -t(X) %*% Y / n, grad, ever_active, nactive, kkt_tol, objective_tol, p)$soln + + # test wide solver + Xtheta = rep(0, n) nactive = as.integer(1) ever_active = as.integer(c(1, rep(0, p-1))) - soln_R = rep(0, p) + soln_R_wide = rep(0, p) grad = - t(X) %*% Y / n - # test wide solver - soln_R_wide = selectiveInference:::solve_QP_wide(X, lam, maxiter, soln_R*1., -t(X) %*% Y / n, grad, Xtheta, ever_active, nactive, kkt_tol, objective_tol, p) - print(nactive) - print(soln_R_wide$ever_active) + soln_R_wide = selectiveInference:::solve_QP_wide(X, lam, maxiter, soln_R_wide, -t(X) %*% Y / n, grad, Xtheta, ever_active, nactive, kkt_tol, objective_tol, p)$soln + +# soln_R = selectiveInference:::solve_QP(t(X) %*% X / n, lam, maxiter, soln_R, -t(X) %*% Y / n, grad, ever_active, nactive, kkt_tol, objective_tol, p) +# print('active') +# print(nactive) +# print(ever_active) +# print(soln_R$ever_active) +# soln_R = soln_R$soln +# soln_R_old = soln_R +# print(soln_R) +# Xtheta = rep(0, n) +# nactive = as.integer(1) +# ever_active = as.integer(c(1, rep(0, p-1))) +# soln_R = rep(0, p) +# grad = - t(X) %*% Y / n +# # test wide solver +# soln_R_wide = selectiveInference:::solve_QP_wide(X, lam, maxiter, soln_R*1., -t(X) %*% Y / n, grad, Xtheta, ever_active, nactive, kkt_tol, objective_tol, p) +# print(nactive) +# print(soln_R_wide$ever_active) - print('diff') - print(soln_R_wide$soln - soln_R_old) - print(soln_R_wide$gradient[soln_R_wide$ever_active]) - print(max(abs(soln_R_wide$gradient[-soln_R_wide$ever_active]))) - print(soln_R_wide$kkt_check) - print(soln_R_wide$iter) -# print(Xtheta - X %*% soln_R_wide$soln) -# print(Xtheta) + print('diff') + print(soln_R_wide - soln_R) +# print(soln_R_wide$gradient[soln_R_wide$ever_active]) +# print(max(abs(soln_R_wide$gradient[-soln_R_wide$ever_active]))) +# print(soln_R_wide$kkt_check) +# print(soln_R_wide$iter) +# print(max(abs(Xtheta - X %*% soln_R_wide$soln))) +# # print(Xtheta) - soln_R_wide = selectiveInference:::solve_QP_wide(X, 0.7 * lam, maxiter, soln_R_wide$soln, -t(X) %*% Y / n, grad, Xtheta, ever_active, nactive, kkt_tol, objective_tol, p) -# print(Xtheta - X %*% soln_R_wide$soln) -# print(soln_R_wide$soln) - soln_R_wide = selectiveInference:::solve_QP_wide(X, 0.5 * lam, maxiter, soln_R_wide$soln, -t(X) %*% Y / n, grad, Xtheta, ever_active, nactive, kkt_tol, objective_tol, p) \ No newline at end of file +# print('R objective') +# print(0.5 * sum(Xtheta^2)/n - sum(Xtheta*Y)/n + lam * 0.7 * sum(abs(soln_R_wide$soln))) +# print(max(abs(soln_R_wide$gradient - t(X) %*% X %*% soln_R_wide$soln / n + t(X) %*% Y / n))) +# print(lam) +# print(max(abs(soln_R_wide$gradient[soln_R_wide$soln != 0]))) +# print(which(soln_R_wide$soln != 0)) +# soln_R_wide = selectiveInference:::solve_QP_wide(X, 0.7 * lam, maxiter, soln_R_wide$soln, -t(X) %*% Y / n, grad, Xtheta, ever_active, nactive, kkt_tol, objective_tol, p) +# # print(Xtheta - X %*% soln_R_wide$soln) +# # print(soln_R_wide$soln) +# soln_R_wide = selectiveInference:::solve_QP_wide(X, 0.5 * lam, maxiter, soln_R_wide$soln, -t(X) %*% Y / n, grad, Xtheta, ever_active, nactive, kkt_tol, objective_tol, p) \ No newline at end of file From 636483b6afc5a29fd740cd8bcb1473d0cd2ea5d7 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Wed, 27 Sep 2017 22:35:42 -0700 Subject: [PATCH 259/493] removing unneeded test, adding Rcpp exports --- selectiveInference/R/RcppExports.R | 10 ++-- selectiveInference/src/RcppExports.cpp | 55 ++++++++------------ test.R | 70 -------------------------- 3 files changed, 26 insertions(+), 109 deletions(-) delete mode 100644 test.R diff --git a/selectiveInference/R/RcppExports.R b/selectiveInference/R/RcppExports.R index f5ebee4..8af4640 100644 --- a/selectiveInference/R/RcppExports.R +++ b/selectiveInference/R/RcppExports.R @@ -1,19 +1,19 @@ -# Generated by using Rcpp::compileAttributes() -> do not edit by hand +# This file was generated by Rcpp::compileAttributes # Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 solve_QP <- function(Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active) { - .Call('_selectiveInference_solve_QP', PACKAGE = 'selectiveInference', Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active) + .Call('selectiveInference_solve_QP', PACKAGE = 'selectiveInference', Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active) } solve_QP_wide <- function(X, bound, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, max_active) { - .Call('_selectiveInference_solve_QP_wide', PACKAGE = 'selectiveInference', X, bound, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, max_active) + .Call('selectiveInference_solve_QP_wide', PACKAGE = 'selectiveInference', X, bound, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, max_active) } update1_ <- function(Q2, w, m, k) { - .Call('_selectiveInference_update1_', PACKAGE = 'selectiveInference', Q2, w, m, k) + .Call('selectiveInference_update1_', PACKAGE = 'selectiveInference', Q2, w, m, k) } downdate1_ <- function(Q1, R, j0, m, n) { - .Call('_selectiveInference_downdate1_', PACKAGE = 'selectiveInference', Q1, R, j0, m, n) + .Call('selectiveInference_downdate1_', PACKAGE = 'selectiveInference', Q1, R, j0, m, n) } diff --git a/selectiveInference/src/RcppExports.cpp b/selectiveInference/src/RcppExports.cpp index 02a7741..efa87d5 100644 --- a/selectiveInference/src/RcppExports.cpp +++ b/selectiveInference/src/RcppExports.cpp @@ -1,4 +1,4 @@ -// Generated by using Rcpp::compileAttributes() -> do not edit by hand +// This file was generated by Rcpp::compileAttributes // Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 #include @@ -7,10 +7,10 @@ using namespace Rcpp; // solve_QP Rcpp::List solve_QP(Rcpp::NumericMatrix Sigma, double bound, int maxiter, Rcpp::NumericVector theta, Rcpp::NumericVector linear_func, Rcpp::NumericVector gradient, Rcpp::IntegerVector ever_active, Rcpp::IntegerVector nactive, double kkt_tol, double objective_tol, int max_active); -RcppExport SEXP _selectiveInference_solve_QP(SEXP SigmaSEXP, SEXP boundSEXP, SEXP maxiterSEXP, SEXP thetaSEXP, SEXP linear_funcSEXP, SEXP gradientSEXP, SEXP ever_activeSEXP, SEXP nactiveSEXP, SEXP kkt_tolSEXP, SEXP objective_tolSEXP, SEXP max_activeSEXP) { +RcppExport SEXP selectiveInference_solve_QP(SEXP SigmaSEXP, SEXP boundSEXP, SEXP maxiterSEXP, SEXP thetaSEXP, SEXP linear_funcSEXP, SEXP gradientSEXP, SEXP ever_activeSEXP, SEXP nactiveSEXP, SEXP kkt_tolSEXP, SEXP objective_tolSEXP, SEXP max_activeSEXP) { BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::RObject __result; + Rcpp::RNGScope __rngScope; Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type Sigma(SigmaSEXP); Rcpp::traits::input_parameter< double >::type bound(boundSEXP); Rcpp::traits::input_parameter< int >::type maxiter(maxiterSEXP); @@ -22,16 +22,16 @@ BEGIN_RCPP Rcpp::traits::input_parameter< double >::type kkt_tol(kkt_tolSEXP); Rcpp::traits::input_parameter< double >::type objective_tol(objective_tolSEXP); Rcpp::traits::input_parameter< int >::type max_active(max_activeSEXP); - rcpp_result_gen = Rcpp::wrap(solve_QP(Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active)); - return rcpp_result_gen; + __result = Rcpp::wrap(solve_QP(Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active)); + return __result; END_RCPP } // solve_QP_wide Rcpp::List solve_QP_wide(Rcpp::NumericMatrix X, double bound, int maxiter, Rcpp::NumericVector theta, Rcpp::NumericVector linear_func, Rcpp::NumericVector gradient, Rcpp::NumericVector X_theta, Rcpp::IntegerVector ever_active, Rcpp::IntegerVector nactive, double kkt_tol, double objective_tol, int max_active); -RcppExport SEXP _selectiveInference_solve_QP_wide(SEXP XSEXP, SEXP boundSEXP, SEXP maxiterSEXP, SEXP thetaSEXP, SEXP linear_funcSEXP, SEXP gradientSEXP, SEXP X_thetaSEXP, SEXP ever_activeSEXP, SEXP nactiveSEXP, SEXP kkt_tolSEXP, SEXP objective_tolSEXP, SEXP max_activeSEXP) { +RcppExport SEXP selectiveInference_solve_QP_wide(SEXP XSEXP, SEXP boundSEXP, SEXP maxiterSEXP, SEXP thetaSEXP, SEXP linear_funcSEXP, SEXP gradientSEXP, SEXP X_thetaSEXP, SEXP ever_activeSEXP, SEXP nactiveSEXP, SEXP kkt_tolSEXP, SEXP objective_tolSEXP, SEXP max_activeSEXP) { BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::RObject __result; + Rcpp::RNGScope __rngScope; Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type X(XSEXP); Rcpp::traits::input_parameter< double >::type bound(boundSEXP); Rcpp::traits::input_parameter< int >::type maxiter(maxiterSEXP); @@ -44,49 +44,36 @@ BEGIN_RCPP Rcpp::traits::input_parameter< double >::type kkt_tol(kkt_tolSEXP); Rcpp::traits::input_parameter< double >::type objective_tol(objective_tolSEXP); Rcpp::traits::input_parameter< int >::type max_active(max_activeSEXP); - rcpp_result_gen = Rcpp::wrap(solve_QP_wide(X, bound, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, max_active)); - return rcpp_result_gen; + __result = Rcpp::wrap(solve_QP_wide(X, bound, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, max_active)); + return __result; END_RCPP } // update1_ Rcpp::List update1_(Rcpp::NumericMatrix Q2, Rcpp::NumericVector w, int m, int k); -RcppExport SEXP _selectiveInference_update1_(SEXP Q2SEXP, SEXP wSEXP, SEXP mSEXP, SEXP kSEXP) { +RcppExport SEXP selectiveInference_update1_(SEXP Q2SEXP, SEXP wSEXP, SEXP mSEXP, SEXP kSEXP) { BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::RObject __result; + Rcpp::RNGScope __rngScope; Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type Q2(Q2SEXP); Rcpp::traits::input_parameter< Rcpp::NumericVector >::type w(wSEXP); Rcpp::traits::input_parameter< int >::type m(mSEXP); Rcpp::traits::input_parameter< int >::type k(kSEXP); - rcpp_result_gen = Rcpp::wrap(update1_(Q2, w, m, k)); - return rcpp_result_gen; + __result = Rcpp::wrap(update1_(Q2, w, m, k)); + return __result; END_RCPP } // downdate1_ Rcpp::List downdate1_(Rcpp::NumericMatrix Q1, Rcpp::NumericMatrix R, int j0, int m, int n); -RcppExport SEXP _selectiveInference_downdate1_(SEXP Q1SEXP, SEXP RSEXP, SEXP j0SEXP, SEXP mSEXP, SEXP nSEXP) { +RcppExport SEXP selectiveInference_downdate1_(SEXP Q1SEXP, SEXP RSEXP, SEXP j0SEXP, SEXP mSEXP, SEXP nSEXP) { BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::RObject __result; + Rcpp::RNGScope __rngScope; Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type Q1(Q1SEXP); Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type R(RSEXP); Rcpp::traits::input_parameter< int >::type j0(j0SEXP); Rcpp::traits::input_parameter< int >::type m(mSEXP); Rcpp::traits::input_parameter< int >::type n(nSEXP); - rcpp_result_gen = Rcpp::wrap(downdate1_(Q1, R, j0, m, n)); - return rcpp_result_gen; + __result = Rcpp::wrap(downdate1_(Q1, R, j0, m, n)); + return __result; END_RCPP } - -static const R_CallMethodDef CallEntries[] = { - {"_selectiveInference_solve_QP", (DL_FUNC) &_selectiveInference_solve_QP, 11}, - {"_selectiveInference_solve_QP_wide", (DL_FUNC) &_selectiveInference_solve_QP_wide, 12}, - {"_selectiveInference_update1_", (DL_FUNC) &_selectiveInference_update1_, 4}, - {"_selectiveInference_downdate1_", (DL_FUNC) &_selectiveInference_downdate1_, 5}, - {NULL, NULL, 0} -}; - -RcppExport void R_init_selectiveInference(DllInfo *dll) { - R_registerRoutines(dll, NULL, CallEntries, NULL, NULL); - R_useDynamicSymbols(dll, FALSE); -} diff --git a/test.R b/test.R deleted file mode 100644 index 0660840..0000000 --- a/test.R +++ /dev/null @@ -1,70 +0,0 @@ -set.seed(43) - - n = 100 - p = 200 - lam = 0.2 - X = matrix(rnorm(n*p), n, p) - Y = rnorm(n) - library(selectiveInference) - p = ncol(X) - soln_R = rep(0, p) - grad = -t(X) %*% Y / n - ever_active = as.integer(c(1, rep(0, p-1))) - nactive = as.integer(1) - kkt_tol = 1.e-12 - objective_tol = 1.e-16 - maxiter = 500 - soln_R = rep(0, p) - grad = -t(X) %*% Y / n - ever_active = as.integer(c(1, rep(0, p-1))) - nactive = as.integer(1) - kkt_tol = 1.e-12 - objective_tol = 1.e-16 - maxiter = 500 - soln_R = selectiveInference:::solve_QP(t(X) %*% X / n, lam, maxiter, soln_R, -t(X) %*% Y / n, grad, ever_active, nactive, kkt_tol, objective_tol, p)$soln - - # test wide solver - Xtheta = rep(0, n) - nactive = as.integer(1) - ever_active = as.integer(c(1, rep(0, p-1))) - soln_R_wide = rep(0, p) - grad = - t(X) %*% Y / n - soln_R_wide = selectiveInference:::solve_QP_wide(X, lam, maxiter, soln_R_wide, -t(X) %*% Y / n, grad, Xtheta, ever_active, nactive, kkt_tol, objective_tol, p)$soln - -# soln_R = selectiveInference:::solve_QP(t(X) %*% X / n, lam, maxiter, soln_R, -t(X) %*% Y / n, grad, ever_active, nactive, kkt_tol, objective_tol, p) -# print('active') -# print(nactive) -# print(ever_active) -# print(soln_R$ever_active) -# soln_R = soln_R$soln -# soln_R_old = soln_R -# print(soln_R) -# Xtheta = rep(0, n) -# nactive = as.integer(1) -# ever_active = as.integer(c(1, rep(0, p-1))) -# soln_R = rep(0, p) -# grad = - t(X) %*% Y / n -# # test wide solver -# soln_R_wide = selectiveInference:::solve_QP_wide(X, lam, maxiter, soln_R*1., -t(X) %*% Y / n, grad, Xtheta, ever_active, nactive, kkt_tol, objective_tol, p) -# print(nactive) -# print(soln_R_wide$ever_active) - - print('diff') - print(soln_R_wide - soln_R) -# print(soln_R_wide$gradient[soln_R_wide$ever_active]) -# print(max(abs(soln_R_wide$gradient[-soln_R_wide$ever_active]))) -# print(soln_R_wide$kkt_check) -# print(soln_R_wide$iter) -# print(max(abs(Xtheta - X %*% soln_R_wide$soln))) -# # print(Xtheta) - -# print('R objective') -# print(0.5 * sum(Xtheta^2)/n - sum(Xtheta*Y)/n + lam * 0.7 * sum(abs(soln_R_wide$soln))) -# print(max(abs(soln_R_wide$gradient - t(X) %*% X %*% soln_R_wide$soln / n + t(X) %*% Y / n))) -# print(lam) -# print(max(abs(soln_R_wide$gradient[soln_R_wide$soln != 0]))) -# print(which(soln_R_wide$soln != 0)) -# soln_R_wide = selectiveInference:::solve_QP_wide(X, 0.7 * lam, maxiter, soln_R_wide$soln, -t(X) %*% Y / n, grad, Xtheta, ever_active, nactive, kkt_tol, objective_tol, p) -# # print(Xtheta - X %*% soln_R_wide$soln) -# # print(soln_R_wide$soln) -# soln_R_wide = selectiveInference:::solve_QP_wide(X, 0.5 * lam, maxiter, soln_R_wide$soln, -t(X) %*% Y / n, grad, Xtheta, ever_active, nactive, kkt_tol, objective_tol, p) \ No newline at end of file From 4d376c497741c3d404a20e9428cc103efcd049ec Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Wed, 27 Sep 2017 23:10:33 -0700 Subject: [PATCH 260/493] added R code decision for wide or not; R check passing --- selectiveInference/R/funs.fixed.R | 91 +++++++++++++++-------- selectiveInference/man/debiasingMatrix.Rd | 15 +++- selectiveInference/src/debias.h | 4 +- 3 files changed, 72 insertions(+), 38 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 6e1ffa9..f119a30 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -154,20 +154,24 @@ fixedLassoInf <- function(x, y, beta, # Reorder so that active set S is first Xordered = Xint[,c(S,notS,recursive=T)] + hsigmaS = 1/n*(t(XS)%*%XS) # hsigma[S,S] + hsigmaSinv = solve(hsigmaS) # pinv(hsigmaS) - hsigma <- 1/n*(t(Xordered)%*%Xordered) - hsigmaS <- 1/n*(t(XS)%*%XS) # hsigma[S,S] - hsigmaSinv <- solve(hsigmaS) # pinv(hsigmaS) + FS = rbind(diag(length(S)),matrix(0,pp-length(S),length(S))) + GS = cbind(diag(length(S)),matrix(0,length(S),pp-length(S))) - # Approximate inverse covariance matrix for when (n < p) from lasso_Inference.R + is_wide = n < (2 * p) # somewhat arbitrary decision -- it is really for when we don't want to form with pxp matrices - htheta = debiasingMatrix(hsigma, n, 1:length(S), verbose=FALSE, max_try=linesearch.try, warn_kkt=TRUE) + # Approximate inverse covariance matrix for when (n < p) from lasso_Inference.R + if (!is_wide) { + hsigma = 1/n*(t(Xordered)%*%Xordered) + htheta = debiasingMatrix(hsigma, is_wide, n, 1:length(S), verbose=FALSE, max_try=linesearch.try, warn_kkt=TRUE) + ithetasigma = (GS-(htheta%*%hsigma)) + } else { + htheta = debiasingMatrix(Xordered, is_wide, n, 1:length(S), verbose=FALSE, max_try=linesearch.try, warn_kkt=TRUE) + ithetasigma = (GS-((htheta%*%t(Xordered)) %*% Xordered)/n) + } - FS = rbind(diag(length(S)),matrix(0,pp-length(S),length(S))) - GS = cbind(diag(length(S)),matrix(0,length(S),pp-length(S))) - ithetasigma = (GS-(htheta%*%hsigma)) - # ithetasigma = (diag(pp) - (htheta%*%hsigma)) - M <- (((htheta%*%t(Xordered))+ithetasigma%*%FS%*%hsigmaSinv%*%t(XS))/n) # vector which is offset for testing debiased beta's null_value <- (((ithetasigma%*%FS%*%hsigmaSinv)%*%sign(hbetaS))*lambda/n) @@ -264,10 +268,11 @@ fixedLassoPoly = ## Approximates inverse covariance matrix theta ## using coordinate descent -debiasingMatrix = function(Sigma, +debiasingMatrix = function(Xinfo, # could be X or t(X) %*% X / n depending on is_wide + is_wide, nsample, rows, - verbose=FALSE, + verbose=FALSE, mu=NULL, # starting value of mu linesearch=TRUE, # do a linesearch? scaling_factor=1.5, # multiplicative factor for linesearch @@ -284,7 +289,7 @@ debiasingMatrix = function(Sigma, max_active = max(50, 0.3 * nsample) } - p = nrow(Sigma); + p = ncol(Xinfo); M = matrix(0, length(rows), p); if (is.null(mu)) { @@ -302,12 +307,13 @@ debiasingMatrix = function(Sigma, print(paste(xperc,"% done",sep="")); } } - output = debiasingRow(Sigma, + output = debiasingRow(Xinfo, # could be X or t(X) %*% X / n depending on is_wide + is_wide, row, mu, linesearch=linesearch, scaling_factor=scaling_factor, - max_active=max_active, + max_active=max_active, max_try=max_try, warn_kkt=FALSE, max_iter=max_iter, @@ -329,14 +335,15 @@ debiasingMatrix = function(Sigma, return(M) } -# Find one row of the debiasing matrix +# Find one row of the debiasing matrix -- assuming X^TX/n is not too large -- i.e. X is tall -debiasingRow = function (Sigma, +debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n depending on is_wide + is_wide, row, mu, - linesearch=TRUE, # do a linesearch? + linesearch=TRUE, # do a linesearch? scaling_factor=1.2, # multiplicative factor for linesearch - max_active=NULL, # how big can active set get? + max_active=NULL, # how big can active set get? max_try=10, # how many steps in linesearch? warn_kkt=FALSE, # warn if KKT does not seem to be satisfied? max_iter=100, # how many iterations for each optimization problem @@ -344,10 +351,10 @@ debiasingRow = function (Sigma, objective_tol=1.e-8 # tolerance for relative decrease in objective ) { - p = nrow(Sigma) + p = ncol(Xinfo) if (is.null(max_active)) { - max_active = nrow(Sigma) + max_active = nrow(Xinfo) } # Initialize variables @@ -371,18 +378,37 @@ debiasingRow = function (Sigma, while (counter_idx < max_try) { - result = solve_QP(Sigma, - mu, - max_iter, - soln, - linear_func, - gradient, - ever_active, - nactive, - kkt_tol, - objective_tol, - max_active) + if (!is_wide) { + Sigma = Xinfo + result = solve_QP(Sigma, + mu, + max_iter, + soln, + linear_func, + gradient, + ever_active, + nactive, + kkt_tol, + objective_tol, + max_active) + } else { + X = Xinfo + n = nrow(X) + Xsoln = rep(0, n) + result = solve_QP_wide(X, + mu, + max_iter, + soln, + linear_func, + gradient, + Xsoln, + ever_active, + nactive, + kkt_tol, + objective_tol, + max_active) + } iter = result$iter # Logic for whether we should continue the line search @@ -439,6 +465,7 @@ debiasingRow = function (Sigma, } + ############################## print.fixedLassoInf <- function(x, tailarea=TRUE, ...) { diff --git a/selectiveInference/man/debiasingMatrix.Rd b/selectiveInference/man/debiasingMatrix.Rd index 533a12c..8c0b3c1 100644 --- a/selectiveInference/man/debiasingMatrix.Rd +++ b/selectiveInference/man/debiasingMatrix.Rd @@ -11,7 +11,8 @@ Newton step from some consistent estimator (such as the LASSO) to find a debiased solution. } \usage{ -debiasingMatrix(Sigma, +debiasingMatrix(Xinfo, + is_wide, nsample, rows, verbose=FALSE, @@ -26,8 +27,14 @@ debiasingMatrix(Sigma, objective_tol=1.e-8) } \arguments{ -\item{Sigma}{ -A symmetric non-negative definite matrix, often a cross-covariance matrix. +\item{Xinfo}{ +Either a non-negative definite matrix S=t(X) %*% X / n or X itself. If +is_wide is TRUE, then Xinfo should be X, otherwise it should be S. +} +\item{is_wide}{ +Are we solving for rows of the debiasing matrix assuming it is +a wide matrix so that Xinfo=X and the non-negative definite +matrix of interest is t(X) %*% X / nrow(X). } \item{nsample}{ Number of samples used in forming the cross-covariance matrix. @@ -102,7 +109,7 @@ n = 50 p = 100 X = matrix(rnorm(n * p), n, p) S = t(X) \%*\% X / n -M = debiasingMatrix(S, n, c(1,3,5)) +M = debiasingMatrix(S, FALSE, n, c(1,3,5)) } \ No newline at end of file diff --git a/selectiveInference/src/debias.h b/selectiveInference/src/debias.h index 916bc14..ebcbc93 100644 --- a/selectiveInference/src/debias.h +++ b/selectiveInference/src/debias.h @@ -21,7 +21,7 @@ int check_KKT_qp(double *theta, /* current theta */ double *gradient_ptr, /* nndef times theta + linear_func */ int nrow, /* how many rows in nndef */ double bound, /* Lagrange multipler for \ell_1 */ - double tol) /* precision for checking KKT conditions */ + double tol); /* precision for checking KKT conditions */ int solve_wide(double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX/ncase = nndef */ double *X_theta_ptr, /* Fitted values */ @@ -49,7 +49,7 @@ int check_KKT_wide(double *theta_ptr, /* current theta */ int nfeature, /* how many columns in X */ int ncase, /* how many rows in X */ double bound, /* Lagrange multipler for \ell_1 */ - double tol) /* precision for checking KKT conditions */ + double tol); /* precision for checking KKT conditions */ void update_gradient_wide(double *gradient_ptr, /* X^TX/ncase times theta + linear_func */ double *X_theta_ptr, /* Current fitted values */ From fb7f85f60ebf6b2588230fa6cb6e1490c9a7dde2 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Wed, 27 Sep 2017 23:23:10 -0700 Subject: [PATCH 261/493] solving active problem more accurately with more iterations -- KKT check to break --- .../src/quadratic_program_wide.c | 120 ++++++++++++++---- 1 file changed, 97 insertions(+), 23 deletions(-) diff --git a/selectiveInference/src/quadratic_program_wide.c b/selectiveInference/src/quadratic_program_wide.c index 3504492..c4f1231 100644 --- a/selectiveInference/src/quadratic_program_wide.c +++ b/selectiveInference/src/quadratic_program_wide.c @@ -163,11 +163,11 @@ int check_KKT_wide(double *theta_ptr, /* current theta */ double *gradient_ptr, /* X^TX/ncase times theta + linear_func*/ double *X_theta_ptr, /* Current fitted values */ double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX/ncase = nndef */ - double *linear_func_ptr, /* Linear term in objective */ + double *linear_func_ptr, /* Linear term in objective */ int *need_update_ptr, /* Which coordinates need to be updated? */ int nfeature, /* how many columns in X */ int ncase, /* how many rows in X */ - double bound, /* Lagrange multipler for \ell_1 */ + double bound, /* Lagrange multipler for \ell_1 */ double tol) /* precision for checking KKT conditions */ { // First check inactive @@ -204,6 +204,59 @@ int check_KKT_wide(double *theta_ptr, /* current theta */ return(1); } +int check_KKT_wide_active(int *ever_active_ptr, /* Ever active set: 0-based */ + int *nactive_ptr, /* Size of ever active set */ + double *theta_ptr, /* current theta */ + double *gradient_ptr, /* X^TX/ncase times theta + linear_func*/ + double *X_theta_ptr, /* Current fitted values */ + double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX/ncase = nndef */ + double *linear_func_ptr, /* Linear term in objective */ + int *need_update_ptr, /* Which coordinates need to be updated? */ + int nfeature, /* how many columns in X */ + int ncase, /* how many rows in X */ + double bound, /* Lagrange multipler for \ell_1 */ + double tol) /* precision for checking KKT conditions */ +{ + // First check inactive + + int iactive; + double *theta_ptr_tmp; + double gradient; + int ever_active_ptr_tmp; + int nactive = *nactive_ptr; + int active_feature; + int *active_feature_ptr; + + for (iactive=0; iactive 0) && (fabs(gradient + bound) > tol * bound)) { + return(0); + } + else if ((*theta_ptr_tmp < 0) && (fabs(gradient - bound) > tol * bound)) { + return(0); + } + + } + else { + if (fabs(gradient) > (1. + tol) * bound) { + return(0); + } + } + } + + return(1); +} + double update_one_coord_wide(double *X_ptr, /* A design matrix*/ double *linear_func_ptr, /* Linear term in objective */ double *nndef_diag_ptr, /* Diagonal entries of Sigma */ @@ -323,10 +376,10 @@ int solve_wide(double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX int ifeature = 0; int iactive = 0; int *active_ptr; - int check_objective = 1; - double old_value, new_value; + int niter_active = 5; + int iter_active; if (check_objective) { @@ -343,26 +396,47 @@ int solve_wide(double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX for (iter=0; iter Date: Thu, 28 Sep 2017 00:14:02 -0700 Subject: [PATCH 262/493] R code now produces almost identical answer when assuming wide or not --- selectiveInference/R/funs.fixed.R | 14 +- selectiveInference/man/debiasingMatrix.Rd | 5 +- selectiveInference/src/quadratic_program.c | 136 +++++++++++++----- .../src/quadratic_program_wide.c | 13 +- 4 files changed, 116 insertions(+), 52 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index f119a30..1f9ac2c 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -300,7 +300,6 @@ debiasingMatrix = function(Xinfo, # could be X or t(X) %*% X / n d xp = round(p/10); idx = 1; for (row in rows) { - if ((idx %% xp)==0){ xperc = xperc+10; if (verbose) { @@ -354,13 +353,13 @@ debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n dep p = ncol(Xinfo) if (is.null(max_active)) { - max_active = nrow(Xinfo) + max_active = min(nrow(Xinfo), ncol(Xinfo)) } # Initialize variables soln = rep(0, p) - + Xsoln = rep(0, n) ever_active = rep(0, p) ever_active[1] = row # 1-based ever_active = as.integer(ever_active) @@ -379,8 +378,7 @@ debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n dep while (counter_idx < max_try) { if (!is_wide) { - Sigma = Xinfo - result = solve_QP(Sigma, + result = solve_QP(Xinfo, # this is non-neg-def matrix mu, max_iter, soln, @@ -392,10 +390,7 @@ debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n dep objective_tol, max_active) } else { - X = Xinfo - n = nrow(X) - Xsoln = rep(0, n) - result = solve_QP_wide(X, + result = solve_QP_wide(Xinfo, # this is a design matrix mu, max_iter, soln, @@ -409,6 +404,7 @@ debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n dep max_active) } + iter = result$iter # Logic for whether we should continue the line search diff --git a/selectiveInference/man/debiasingMatrix.Rd b/selectiveInference/man/debiasingMatrix.Rd index 8c0b3c1..d0e908d 100644 --- a/selectiveInference/man/debiasingMatrix.Rd +++ b/selectiveInference/man/debiasingMatrix.Rd @@ -108,8 +108,9 @@ set.seed(10) n = 50 p = 100 X = matrix(rnorm(n * p), n, p) -S = t(X) \%*\% X / n +S = t(X) %*% X / n M = debiasingMatrix(S, FALSE, n, c(1,3,5)) - +M2 = debiasingMatrix(X, TRUE, n, c(1,3,5)) +max(M - M2) } \ No newline at end of file diff --git a/selectiveInference/src/quadratic_program.c b/selectiveInference/src/quadratic_program.c index cee3fa4..d9bd017 100644 --- a/selectiveInference/src/quadratic_program.c +++ b/selectiveInference/src/quadratic_program.c @@ -17,7 +17,7 @@ double objective_qp(double *nndef_ptr, /* A non-negative definite matrix * int *nactive_ptr, /* Size of ever active set */ int nrow, /* how many rows in nndef */ double bound, /* Lagrange multipler for \ell_1 */ - double *theta) /* current value */ + double *theta_ptr) /* current value */ { int irow, icol; double value = 0; @@ -28,20 +28,20 @@ double objective_qp(double *nndef_ptr, /* A non-negative definite matrix * int active_row, active_col; int nactive = *nactive_ptr; - theta_row_ptr = theta; - theta_col_ptr = theta; + theta_row_ptr = theta_ptr; + theta_col_ptr = theta_ptr; for (irow=0; irow 0) && (fabs(gradient + bound) > tol * bound)) { + if (*theta_ptr_tmp != 0) { // these coordinates of gradients should be equal to -bound + if ((*theta_ptr_tmp > 0) && (fabs(gradient + bound) > tol * bound)) { return(0); } - else if ((*theta_ptr < 0) && (fabs(gradient - bound) > tol * bound)) { + else if ((*theta_ptr_tmp < 0) && (fabs(gradient - bound) > tol * bound)) { return(0); } } @@ -128,6 +128,57 @@ int check_KKT_qp(double *theta, /* current theta */ return(1); } +int check_KKT_qp_active(int *ever_active_ptr, /* Ever active set: 0-based */ + int *nactive_ptr, /* Size of ever active set */ + double *theta_ptr, /* current theta */ + double *gradient_ptr, /* nndef times theta + linear_func */ + int nrow, /* how many rows in nndef */ + double bound, /* Lagrange multipler for \ell_1 */ + double tol) /* precision for checking KKT conditions */ +{ + // First check inactive + + int iactive; + double *theta_ptr_tmp; + double gradient; + double *gradient_ptr_tmp; + int nactive = *nactive_ptr; + int active_feature; + int *active_feature_ptr; + + for (iactive=0; iactive 0) && (fabs(gradient + bound) > tol * bound)) { + return(0); + } + else if ((*theta_ptr_tmp < 0) && (fabs(gradient - bound) > tol * bound)) { + return(0); + } + + } + else { + if (fabs(gradient) > (1. + tol) * bound) { + return(0); + } + } + } + + return(1); +} + + double update_one_coord_qp(double *nndef_ptr, /* A non-negative definite matrix */ double *linear_func_ptr, /* Linear term in objective */ double *nndef_diag_ptr, /* Diagonal of nndef */ @@ -136,7 +187,7 @@ double update_one_coord_qp(double *nndef_ptr, /* A non-negative defini int *nactive_ptr, /* Size of ever active set */ int nrow, /* How many rows in nndef */ double bound, /* feasibility parameter */ - double *theta, /* current value */ + double *theta_ptr, /* current value */ int coord, /* which coordinate to update: 0-based */ int is_active) /* Is this coord in ever_active */ { @@ -147,7 +198,7 @@ double update_one_coord_qp(double *nndef_ptr, /* A non-negative defini double old_value; double *nndef_ptr_tmp; double *gradient_ptr_tmp; - double *theta_ptr; + double *theta_ptr_tmp; int icol = 0; double *quadratic_ptr = ((double *) nndef_diag_ptr + coord); @@ -156,8 +207,8 @@ double update_one_coord_qp(double *nndef_ptr, /* A non-negative defini gradient_ptr_tmp = ((double *) gradient_ptr + coord); linear_term = *gradient_ptr_tmp; - theta_ptr = ((double *) theta + coord); - old_value = *theta_ptr; + theta_ptr_tmp = ((double *) theta_ptr + coord); + old_value = *theta_ptr_tmp; // The coord entry of gradient_ptr term has a diagonal term in it: // nndef[coord, coord] * theta[coord] @@ -200,8 +251,8 @@ double update_one_coord_qp(double *nndef_ptr, /* A non-negative defini nndef_ptr_tmp += 1; } - theta_ptr = ((double *) theta + coord); - *theta_ptr = value; + theta_ptr_tmp = ((double *) theta_ptr + coord); + *theta_ptr_tmp = value; } @@ -230,6 +281,8 @@ int solve_qp(double *nndef_ptr, /* A non-negative definite matrix */ int *active_ptr; int check_objective = 1; + int iter_active; + int niter_active=5; double old_value, new_value; @@ -248,23 +301,38 @@ int solve_qp(double *nndef_ptr, /* A non-negative definite matrix */ for (iter=0; iter // for fabs -// Find an approximate row of \hat{Sigma}^{-1} +// Find an approximate row of \hat{nndef}^{-1} // Solves a dual version of problem (4) of https://arxiv.org/pdf/1306.3171.pdf @@ -222,7 +222,6 @@ int check_KKT_wide_active(int *ever_active_ptr, /* Ever active set: 0- int iactive; double *theta_ptr_tmp; double gradient; - int ever_active_ptr_tmp; int nactive = *nactive_ptr; int active_feature; int *active_feature_ptr; @@ -259,16 +258,16 @@ int check_KKT_wide_active(int *ever_active_ptr, /* Ever active set: 0- double update_one_coord_wide(double *X_ptr, /* A design matrix*/ double *linear_func_ptr, /* Linear term in objective */ - double *nndef_diag_ptr, /* Diagonal entries of Sigma */ - double *gradient_ptr, /* X^TX/ncase times theta + linear_func*/ + double *nndef_diag_ptr, /* Diagonal of nndef */ + double *gradient_ptr, /* X^TX/ncase times theta + linear_func*/ int *ever_active_ptr, /* Ever active set: 1-based */ int *nactive_ptr, /* Size of ever active set */ double *X_theta_ptr, /* X\theta -- fitted values */ int *need_update_ptr, /* Whether a gradient coordinate needs update or not */ - int ncase, /* How many rows in X */ - int nfeature, /* How many rows in X */ + int ncase, /* How many rows in X */ + int nfeature, /* How many rows in X */ double bound, /* feasibility parameter */ - double *theta_ptr, /* current value */ + double *theta_ptr, /* current value */ int coord, /* which coordinate to update: 0-based */ int is_active) /* Is this coord in ever_active */ { From c0dab8cf27d226cbeb0c8a7c671c4155cfb546bb Mon Sep 17 00:00:00 2001 From: tibs Date: Tue, 3 Oct 2017 18:15:48 -0700 Subject: [PATCH 263/493] rob fixed type=full option --- selectiveInference/R/funs.fixed.R | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 1f9ac2c..a2776e5 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -82,10 +82,11 @@ fixedLassoInf <- function(x, y, beta, tol.coef = tol.beta * sqrt(n^2 / colSums(x^2)) # print(tol.coef) - vars = which(abs(beta) > tol.coef) + # vars = which(abs(beta) > tol.coef) + vars = abs(beta) > tol.coef # print(beta) # print(vars) - if(length(vars)==0){ + if(sum(vars)==0){ cat("Empty model",fill=T) return() } @@ -96,10 +97,17 @@ fixedLassoInf <- function(x, y, beta, "'thresh' parameter, for a more accurate convergence.")) # Get lasso polyhedral region, of form Gy >= u +<<<<<<< HEAD + if (type == 'full') out = fixedLasso.poly(x,y,beta,lambda,vars,inactive=TRUE) + else out = fixedLasso.poly(x,y,beta,lambda,vars) + G = out$G + u = out$u +======= if (type == 'full' & p > n) out = fixedLassoPoly(x,y,lambda,beta,vars,inactive=TRUE) else out = fixedLassoPoly(x,y,lambda,beta,vars) A = out$A b = out$b +>>>>>>> 726b917649c7aaabd030b2cab062836ca774ef57 # Check polyhedral region tol.poly = 0.01 @@ -127,7 +135,8 @@ fixedLassoInf <- function(x, y, beta, # add additional targets for inference if provided if (!is.null(add.targets)) vars = sort(unique(c(vars,add.targets,recursive=T))) - k = length(vars) + k = length(vars) + k=sum(vars) pv = vlo = vup = numeric(k) vmat = matrix(0,k,n) ci = tailarea = matrix(0,k,2) From ae37fdcd5dce5d2e2870b25542e141810509d08c Mon Sep 17 00:00:00 2001 From: tibs Date: Tue, 3 Oct 2017 22:35:22 -0700 Subject: [PATCH 264/493] rob type=full --- selectiveInference/R/RcppExports.R | 10 ++--- selectiveInference/R/funs.fixed.R | 12 +----- selectiveInference/R/funs.inf.R | 2 +- selectiveInference/src/RcppExports.cpp | 55 ++++++++++++++++---------- 4 files changed, 42 insertions(+), 37 deletions(-) diff --git a/selectiveInference/R/RcppExports.R b/selectiveInference/R/RcppExports.R index 8af4640..f5ebee4 100644 --- a/selectiveInference/R/RcppExports.R +++ b/selectiveInference/R/RcppExports.R @@ -1,19 +1,19 @@ -# This file was generated by Rcpp::compileAttributes +# Generated by using Rcpp::compileAttributes() -> do not edit by hand # Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 solve_QP <- function(Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active) { - .Call('selectiveInference_solve_QP', PACKAGE = 'selectiveInference', Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active) + .Call('_selectiveInference_solve_QP', PACKAGE = 'selectiveInference', Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active) } solve_QP_wide <- function(X, bound, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, max_active) { - .Call('selectiveInference_solve_QP_wide', PACKAGE = 'selectiveInference', X, bound, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, max_active) + .Call('_selectiveInference_solve_QP_wide', PACKAGE = 'selectiveInference', X, bound, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, max_active) } update1_ <- function(Q2, w, m, k) { - .Call('selectiveInference_update1_', PACKAGE = 'selectiveInference', Q2, w, m, k) + .Call('_selectiveInference_update1_', PACKAGE = 'selectiveInference', Q2, w, m, k) } downdate1_ <- function(Q1, R, j0, m, n) { - .Call('selectiveInference_downdate1_', PACKAGE = 'selectiveInference', Q1, R, j0, m, n) + .Call('_selectiveInference_downdate1_', PACKAGE = 'selectiveInference', Q1, R, j0, m, n) } diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index a2776e5..102ca46 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -97,17 +97,10 @@ fixedLassoInf <- function(x, y, beta, "'thresh' parameter, for a more accurate convergence.")) # Get lasso polyhedral region, of form Gy >= u -<<<<<<< HEAD - if (type == 'full') out = fixedLasso.poly(x,y,beta,lambda,vars,inactive=TRUE) - else out = fixedLasso.poly(x,y,beta,lambda,vars) - G = out$G - u = out$u -======= - if (type == 'full' & p > n) out = fixedLassoPoly(x,y,lambda,beta,vars,inactive=TRUE) + if (type == 'full') out = fixedLassoPoly(x,y,lambda,beta,vars,inactive=TRUE) else out = fixedLassoPoly(x,y,lambda,beta,vars) A = out$A b = out$b ->>>>>>> 726b917649c7aaabd030b2cab062836ca774ef57 # Check polyhedral region tol.poly = 0.01 @@ -135,7 +128,7 @@ fixedLassoInf <- function(x, y, beta, # add additional targets for inference if provided if (!is.null(add.targets)) vars = sort(unique(c(vars,add.targets,recursive=T))) - k = length(vars) + # k = length(vars) k=sum(vars) pv = vlo = vup = numeric(k) vmat = matrix(0,k,n) @@ -510,4 +503,3 @@ print.fixedLassoInf <- function(x, tailarea=TRUE, ...) { # lambda = 2*mean(apply(t(x)%*%eps,2,max)) # return(lambda) #} - diff --git a/selectiveInference/R/funs.inf.R b/selectiveInference/R/funs.inf.R index 9d7e740..0688c1f 100644 --- a/selectiveInference/R/funs.inf.R +++ b/selectiveInference/R/funs.inf.R @@ -209,7 +209,7 @@ TG.limits = function(Z, A, b, eta, Sigma=NULL) { target_estimate = sum(as.numeric(eta) * as.numeric(Z)) if (max(A %*% as.numeric(Z) - b) > 0) { - warning('Contsraint not satisfied. A %*% Z should be elementwise less than or equal to b') + warning('Constraint not satisfied. A %*% Z should be elementwise less than or equal to b') } if (is.null(Sigma)) { diff --git a/selectiveInference/src/RcppExports.cpp b/selectiveInference/src/RcppExports.cpp index efa87d5..02a7741 100644 --- a/selectiveInference/src/RcppExports.cpp +++ b/selectiveInference/src/RcppExports.cpp @@ -1,4 +1,4 @@ -// This file was generated by Rcpp::compileAttributes +// Generated by using Rcpp::compileAttributes() -> do not edit by hand // Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 #include @@ -7,10 +7,10 @@ using namespace Rcpp; // solve_QP Rcpp::List solve_QP(Rcpp::NumericMatrix Sigma, double bound, int maxiter, Rcpp::NumericVector theta, Rcpp::NumericVector linear_func, Rcpp::NumericVector gradient, Rcpp::IntegerVector ever_active, Rcpp::IntegerVector nactive, double kkt_tol, double objective_tol, int max_active); -RcppExport SEXP selectiveInference_solve_QP(SEXP SigmaSEXP, SEXP boundSEXP, SEXP maxiterSEXP, SEXP thetaSEXP, SEXP linear_funcSEXP, SEXP gradientSEXP, SEXP ever_activeSEXP, SEXP nactiveSEXP, SEXP kkt_tolSEXP, SEXP objective_tolSEXP, SEXP max_activeSEXP) { +RcppExport SEXP _selectiveInference_solve_QP(SEXP SigmaSEXP, SEXP boundSEXP, SEXP maxiterSEXP, SEXP thetaSEXP, SEXP linear_funcSEXP, SEXP gradientSEXP, SEXP ever_activeSEXP, SEXP nactiveSEXP, SEXP kkt_tolSEXP, SEXP objective_tolSEXP, SEXP max_activeSEXP) { BEGIN_RCPP - Rcpp::RObject __result; - Rcpp::RNGScope __rngScope; + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type Sigma(SigmaSEXP); Rcpp::traits::input_parameter< double >::type bound(boundSEXP); Rcpp::traits::input_parameter< int >::type maxiter(maxiterSEXP); @@ -22,16 +22,16 @@ BEGIN_RCPP Rcpp::traits::input_parameter< double >::type kkt_tol(kkt_tolSEXP); Rcpp::traits::input_parameter< double >::type objective_tol(objective_tolSEXP); Rcpp::traits::input_parameter< int >::type max_active(max_activeSEXP); - __result = Rcpp::wrap(solve_QP(Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active)); - return __result; + rcpp_result_gen = Rcpp::wrap(solve_QP(Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active)); + return rcpp_result_gen; END_RCPP } // solve_QP_wide Rcpp::List solve_QP_wide(Rcpp::NumericMatrix X, double bound, int maxiter, Rcpp::NumericVector theta, Rcpp::NumericVector linear_func, Rcpp::NumericVector gradient, Rcpp::NumericVector X_theta, Rcpp::IntegerVector ever_active, Rcpp::IntegerVector nactive, double kkt_tol, double objective_tol, int max_active); -RcppExport SEXP selectiveInference_solve_QP_wide(SEXP XSEXP, SEXP boundSEXP, SEXP maxiterSEXP, SEXP thetaSEXP, SEXP linear_funcSEXP, SEXP gradientSEXP, SEXP X_thetaSEXP, SEXP ever_activeSEXP, SEXP nactiveSEXP, SEXP kkt_tolSEXP, SEXP objective_tolSEXP, SEXP max_activeSEXP) { +RcppExport SEXP _selectiveInference_solve_QP_wide(SEXP XSEXP, SEXP boundSEXP, SEXP maxiterSEXP, SEXP thetaSEXP, SEXP linear_funcSEXP, SEXP gradientSEXP, SEXP X_thetaSEXP, SEXP ever_activeSEXP, SEXP nactiveSEXP, SEXP kkt_tolSEXP, SEXP objective_tolSEXP, SEXP max_activeSEXP) { BEGIN_RCPP - Rcpp::RObject __result; - Rcpp::RNGScope __rngScope; + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type X(XSEXP); Rcpp::traits::input_parameter< double >::type bound(boundSEXP); Rcpp::traits::input_parameter< int >::type maxiter(maxiterSEXP); @@ -44,36 +44,49 @@ BEGIN_RCPP Rcpp::traits::input_parameter< double >::type kkt_tol(kkt_tolSEXP); Rcpp::traits::input_parameter< double >::type objective_tol(objective_tolSEXP); Rcpp::traits::input_parameter< int >::type max_active(max_activeSEXP); - __result = Rcpp::wrap(solve_QP_wide(X, bound, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, max_active)); - return __result; + rcpp_result_gen = Rcpp::wrap(solve_QP_wide(X, bound, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, max_active)); + return rcpp_result_gen; END_RCPP } // update1_ Rcpp::List update1_(Rcpp::NumericMatrix Q2, Rcpp::NumericVector w, int m, int k); -RcppExport SEXP selectiveInference_update1_(SEXP Q2SEXP, SEXP wSEXP, SEXP mSEXP, SEXP kSEXP) { +RcppExport SEXP _selectiveInference_update1_(SEXP Q2SEXP, SEXP wSEXP, SEXP mSEXP, SEXP kSEXP) { BEGIN_RCPP - Rcpp::RObject __result; - Rcpp::RNGScope __rngScope; + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type Q2(Q2SEXP); Rcpp::traits::input_parameter< Rcpp::NumericVector >::type w(wSEXP); Rcpp::traits::input_parameter< int >::type m(mSEXP); Rcpp::traits::input_parameter< int >::type k(kSEXP); - __result = Rcpp::wrap(update1_(Q2, w, m, k)); - return __result; + rcpp_result_gen = Rcpp::wrap(update1_(Q2, w, m, k)); + return rcpp_result_gen; END_RCPP } // downdate1_ Rcpp::List downdate1_(Rcpp::NumericMatrix Q1, Rcpp::NumericMatrix R, int j0, int m, int n); -RcppExport SEXP selectiveInference_downdate1_(SEXP Q1SEXP, SEXP RSEXP, SEXP j0SEXP, SEXP mSEXP, SEXP nSEXP) { +RcppExport SEXP _selectiveInference_downdate1_(SEXP Q1SEXP, SEXP RSEXP, SEXP j0SEXP, SEXP mSEXP, SEXP nSEXP) { BEGIN_RCPP - Rcpp::RObject __result; - Rcpp::RNGScope __rngScope; + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type Q1(Q1SEXP); Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type R(RSEXP); Rcpp::traits::input_parameter< int >::type j0(j0SEXP); Rcpp::traits::input_parameter< int >::type m(mSEXP); Rcpp::traits::input_parameter< int >::type n(nSEXP); - __result = Rcpp::wrap(downdate1_(Q1, R, j0, m, n)); - return __result; + rcpp_result_gen = Rcpp::wrap(downdate1_(Q1, R, j0, m, n)); + return rcpp_result_gen; END_RCPP } + +static const R_CallMethodDef CallEntries[] = { + {"_selectiveInference_solve_QP", (DL_FUNC) &_selectiveInference_solve_QP, 11}, + {"_selectiveInference_solve_QP_wide", (DL_FUNC) &_selectiveInference_solve_QP_wide, 12}, + {"_selectiveInference_update1_", (DL_FUNC) &_selectiveInference_update1_, 4}, + {"_selectiveInference_downdate1_", (DL_FUNC) &_selectiveInference_downdate1_, 5}, + {NULL, NULL, 0} +}; + +RcppExport void R_init_selectiveInference(DllInfo *dll) { + R_registerRoutines(dll, NULL, CallEntries, NULL, NULL); + R_useDynamicSymbols(dll, FALSE); +} From 8f356ff9228e0b148814761525fc65abd565c547 Mon Sep 17 00:00:00 2001 From: tibs Date: Wed, 4 Oct 2017 08:46:23 -0700 Subject: [PATCH 265/493] rob fixed another type=full bug --- selectiveInference/R/funs.fixed.R | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 102ca46..250a9d4 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -82,8 +82,8 @@ fixedLassoInf <- function(x, y, beta, tol.coef = tol.beta * sqrt(n^2 / colSums(x^2)) # print(tol.coef) - # vars = which(abs(beta) > tol.coef) - vars = abs(beta) > tol.coef + vars = which(abs(beta) > tol.coef) + # vars = abs(beta) > tol.coef # print(beta) # print(vars) if(sum(vars)==0){ @@ -97,8 +97,10 @@ fixedLassoInf <- function(x, y, beta, "'thresh' parameter, for a more accurate convergence.")) # Get lasso polyhedral region, of form Gy >= u - if (type == 'full') out = fixedLassoPoly(x,y,lambda,beta,vars,inactive=TRUE) - else out = fixedLassoPoly(x,y,lambda,beta,vars) +logical.vars=rep(FALSE,p) +logical.vars[vars]=TRUE + if (type == 'full') out = fixedLassoPoly(x,y,lambda,beta,logical.vars,inactive=TRUE) + else out = fixedLassoPoly(x,y,lambda,beta,logical.vars) A = out$A b = out$b @@ -128,8 +130,7 @@ fixedLassoInf <- function(x, y, beta, # add additional targets for inference if provided if (!is.null(add.targets)) vars = sort(unique(c(vars,add.targets,recursive=T))) - # k = length(vars) - k=sum(vars) + k = length(vars) pv = vlo = vup = numeric(k) vmat = matrix(0,k,n) ci = tailarea = matrix(0,k,2) From 782290e86f61a8e1245f8581f5fd65059c7d855f Mon Sep 17 00:00:00 2001 From: tibs Date: Wed, 4 Oct 2017 09:35:38 -0700 Subject: [PATCH 266/493] small change to current CRAN --- selectiveInference-currentCRAN/DESCRIPTION | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/selectiveInference-currentCRAN/DESCRIPTION b/selectiveInference-currentCRAN/DESCRIPTION index 0eb38f7..f7af810 100644 --- a/selectiveInference-currentCRAN/DESCRIPTION +++ b/selectiveInference-currentCRAN/DESCRIPTION @@ -1,12 +1,12 @@ Package: selectiveInference Type: Package Title: Tools for Post-Selection Inference -Version: 1.2.3 +Version: 1.2.4 Date: 2017-09-18 Author: Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid Maintainer: Rob Tibshirani -Depends: glmnet, intervals, survival +Depends: glmnet, intervals, survival, R (>= 3.4.0) Suggests: Rmpfr Description: New tools for post-selection inference, for use with forward stepwise regression, least angle regression, the From 96e87abe19ad8e1b972000099fd2c837ef06e434 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Sat, 9 Sep 2017 14:14:56 -0700 Subject: [PATCH 267/493] travis failing with install for shell reason -- maybe caps works better? --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 91a89a4..e10e111 100644 --- a/Makefile +++ b/Makefile @@ -4,7 +4,7 @@ Rcpp: Rscript -e "library(Rcpp); Rcpp::compileAttributes('selectiveInference')" install: Rcpp - R CMD install selectiveInference + R CMD INSTALL selectiveInference build: R CMD build selectiveInference From be257f10ad4740eb16d3283432cbb2611a87cadb Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Tue, 10 Oct 2017 13:21:54 -0700 Subject: [PATCH 268/493] small cleanup of fixedLassoPoly --- selectiveInference/R/funs.fixed.R | 49 ++++++++++++++++++------------- 1 file changed, 29 insertions(+), 20 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 250a9d4..6ddf513 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -80,12 +80,9 @@ fixedLassoInf <- function(x, y, beta, warning(paste("Solution beta does not satisfy the KKT conditions", "(to within specified tolerances)")) - tol.coef = tol.beta * sqrt(n^2 / colSums(x^2)) - # print(tol.coef) - vars = which(abs(beta) > tol.coef) - # vars = abs(beta) > tol.coef - # print(beta) - # print(vars) + tol.coef = tol.beta * sqrt(n / colSums(x^2)) + vars = which(abs(beta) > tol.coef) + if(sum(vars)==0){ cat("Empty model",fill=T) return() @@ -97,10 +94,17 @@ fixedLassoInf <- function(x, y, beta, "'thresh' parameter, for a more accurate convergence.")) # Get lasso polyhedral region, of form Gy >= u -logical.vars=rep(FALSE,p) -logical.vars[vars]=TRUE - if (type == 'full') out = fixedLassoPoly(x,y,lambda,beta,logical.vars,inactive=TRUE) - else out = fixedLassoPoly(x,y,lambda,beta,logical.vars) + + logical.vars=rep(FALSE,p) + logical.vars[vars]=TRUE + + if (type == 'full') { + out = fixedLassoPoly(x, y, lambda, beta, logical.vars, inactive=TRUE) + } + else { + out = fixedLassoPoly(x, y, lambda, beta, logical.vars) + } + A = out$A b = out$b @@ -233,8 +237,8 @@ logical.vars[vars]=TRUE fixedLassoPoly = function(X, y, lambda, beta, active, inactive = FALSE) { - Xa = X[,active,drop=F] - Xac = X[,!active,drop=F] + Xa = X[, active, drop=FALSE] + Xac = X[, !active, drop=FALSE] Xai = pinv(crossprod(Xa)) Xap = Xai %*% t(Xa) @@ -242,25 +246,30 @@ fixedLassoPoly = if (length(za)>1) dz = diag(za) if (length(za)==1) dz = matrix(za,1,1) + if(length(lambda)>1) { + lambdaA= lambda[active] + lambdaI = lambda[!active] + } else { + lambdaA = rep(lambda, sum(active)) + lambdaI = rep(lambda, sum(!active)) + } if (inactive) { # should we include the inactive constraints? - R = diag(1,nrow(Xa)) - Xa %*% Xap # R is residual forming matrix of selected model + R = diag(rep(1, nrow(Xa))) - Xa %*% Xap # R is residual forming matrix of selected model A = rbind( - 1/lambda * t(Xac) %*% R, - -1/lambda * t(Xac) %*% R, + 1/lambdaI * t(Xac) %*% R, + -1/lambdaI * t(Xac) %*% R, -dz %*% Xap ) lambda2=lambda - if(length(lambda)>1) lambda2=lambda[active] + b = c( 1 - t(Xac) %*% t(Xap) %*% za, 1 + t(Xac) %*% t(Xap) %*% za, - -lambda2 * dz %*% Xai %*% za) + -lambdaA * dz %*% Xai %*% za) } else { A = -dz %*% Xap - lambda2=lambda - if(length(lambda)>1) lambda2=lambda[active] - b = -lambda2 * dz %*% Xai %*% za + b = -lambdaA * dz %*% Xai %*% za } return(list(A=A, b=b)) From 25dce248fcd030f3ae05f0aba310a0adedd71c51 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Tue, 10 Oct 2017 14:45:03 -0700 Subject: [PATCH 269/493] rewriting fixedLassoPoly to allow for vector lambda (including unpenalized 0 coords) --- selectiveInference/R/RcppExports.R | 10 ++--- selectiveInference/R/funs.fixed.R | 42 +++++++++++--------- selectiveInference/src/RcppExports.cpp | 55 ++++++++++---------------- 3 files changed, 49 insertions(+), 58 deletions(-) diff --git a/selectiveInference/R/RcppExports.R b/selectiveInference/R/RcppExports.R index f5ebee4..8af4640 100644 --- a/selectiveInference/R/RcppExports.R +++ b/selectiveInference/R/RcppExports.R @@ -1,19 +1,19 @@ -# Generated by using Rcpp::compileAttributes() -> do not edit by hand +# This file was generated by Rcpp::compileAttributes # Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 solve_QP <- function(Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active) { - .Call('_selectiveInference_solve_QP', PACKAGE = 'selectiveInference', Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active) + .Call('selectiveInference_solve_QP', PACKAGE = 'selectiveInference', Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active) } solve_QP_wide <- function(X, bound, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, max_active) { - .Call('_selectiveInference_solve_QP_wide', PACKAGE = 'selectiveInference', X, bound, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, max_active) + .Call('selectiveInference_solve_QP_wide', PACKAGE = 'selectiveInference', X, bound, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, max_active) } update1_ <- function(Q2, w, m, k) { - .Call('_selectiveInference_update1_', PACKAGE = 'selectiveInference', Q2, w, m, k) + .Call('selectiveInference_update1_', PACKAGE = 'selectiveInference', Q2, w, m, k) } downdate1_ <- function(Q1, R, j0, m, n) { - .Call('_selectiveInference_downdate1_', PACKAGE = 'selectiveInference', Q1, R, j0, m, n) + .Call('selectiveInference_downdate1_', PACKAGE = 'selectiveInference', Q1, R, j0, m, n) } diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 6ddf513..0fa0d71 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -237,15 +237,13 @@ fixedLassoInf <- function(x, y, beta, fixedLassoPoly = function(X, y, lambda, beta, active, inactive = FALSE) { - Xa = X[, active, drop=FALSE] - Xac = X[, !active, drop=FALSE] - Xai = pinv(crossprod(Xa)) - Xap = Xai %*% t(Xa) - - za = sign(beta[active]) - if (length(za)>1) dz = diag(za) - if (length(za)==1) dz = matrix(za,1,1) - + + XA = X[, active, drop=FALSE] + XI = X[, !active, drop=FALSE] + XAi = pinv(crossprod(XA)) + XAp = XAi %*% t(XA) + Ir = t(XI) %*% t(XAp) # matrix in the "irrepresentable" condition + if(length(lambda)>1) { lambdaA= lambda[active] lambdaI = lambda[!active] @@ -253,23 +251,29 @@ fixedLassoPoly = lambdaA = rep(lambda, sum(active)) lambdaI = rep(lambda, sum(!active)) } + + penalized = lambdaA != 0 + signA = sign(beta[active]) + active_subgrad = signA * lambdaA + if (length(signA)>1) sign_diag = diag(signA) + if (length(signA)==1) sign_diag = matrix(signA, 1, 1) + if (inactive) { # should we include the inactive constraints? - R = diag(rep(1, nrow(Xa))) - Xa %*% Xap # R is residual forming matrix of selected model + RA = diag(rep(1, nrow(XA))) - XA %*% XAp # RA is residual forming matrix of selected model A = rbind( - 1/lambdaI * t(Xac) %*% R, - -1/lambdaI * t(Xac) %*% R, - -dz %*% Xap + t(XI) %*% RA, + -t(XI) %*% RA, + -(sign_diag %*% XAp)[penalized,] # no constraints for unpenalized ) - lambda2=lambda b = c( - 1 - t(Xac) %*% t(Xap) %*% za, - 1 + t(Xac) %*% t(Xap) %*% za, - -lambdaA * dz %*% Xai %*% za) + lambdaI - Ir %*% active_subgrad, + lambdaI + Ir %*% active_subgrad, + -(sign_diag %*% XAi %*% active_subgrad)[penalized]) } else { - A = -dz %*% Xap - b = -lambdaA * dz %*% Xai %*% za + A = -(sign_diag %*% XAp)[penalized,] # no constraints for unpenalized + b = -(sign_diag %*% XAi %*% active_subgrad)[penalized] } return(list(A=A, b=b)) diff --git a/selectiveInference/src/RcppExports.cpp b/selectiveInference/src/RcppExports.cpp index 02a7741..efa87d5 100644 --- a/selectiveInference/src/RcppExports.cpp +++ b/selectiveInference/src/RcppExports.cpp @@ -1,4 +1,4 @@ -// Generated by using Rcpp::compileAttributes() -> do not edit by hand +// This file was generated by Rcpp::compileAttributes // Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 #include @@ -7,10 +7,10 @@ using namespace Rcpp; // solve_QP Rcpp::List solve_QP(Rcpp::NumericMatrix Sigma, double bound, int maxiter, Rcpp::NumericVector theta, Rcpp::NumericVector linear_func, Rcpp::NumericVector gradient, Rcpp::IntegerVector ever_active, Rcpp::IntegerVector nactive, double kkt_tol, double objective_tol, int max_active); -RcppExport SEXP _selectiveInference_solve_QP(SEXP SigmaSEXP, SEXP boundSEXP, SEXP maxiterSEXP, SEXP thetaSEXP, SEXP linear_funcSEXP, SEXP gradientSEXP, SEXP ever_activeSEXP, SEXP nactiveSEXP, SEXP kkt_tolSEXP, SEXP objective_tolSEXP, SEXP max_activeSEXP) { +RcppExport SEXP selectiveInference_solve_QP(SEXP SigmaSEXP, SEXP boundSEXP, SEXP maxiterSEXP, SEXP thetaSEXP, SEXP linear_funcSEXP, SEXP gradientSEXP, SEXP ever_activeSEXP, SEXP nactiveSEXP, SEXP kkt_tolSEXP, SEXP objective_tolSEXP, SEXP max_activeSEXP) { BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::RObject __result; + Rcpp::RNGScope __rngScope; Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type Sigma(SigmaSEXP); Rcpp::traits::input_parameter< double >::type bound(boundSEXP); Rcpp::traits::input_parameter< int >::type maxiter(maxiterSEXP); @@ -22,16 +22,16 @@ BEGIN_RCPP Rcpp::traits::input_parameter< double >::type kkt_tol(kkt_tolSEXP); Rcpp::traits::input_parameter< double >::type objective_tol(objective_tolSEXP); Rcpp::traits::input_parameter< int >::type max_active(max_activeSEXP); - rcpp_result_gen = Rcpp::wrap(solve_QP(Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active)); - return rcpp_result_gen; + __result = Rcpp::wrap(solve_QP(Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active)); + return __result; END_RCPP } // solve_QP_wide Rcpp::List solve_QP_wide(Rcpp::NumericMatrix X, double bound, int maxiter, Rcpp::NumericVector theta, Rcpp::NumericVector linear_func, Rcpp::NumericVector gradient, Rcpp::NumericVector X_theta, Rcpp::IntegerVector ever_active, Rcpp::IntegerVector nactive, double kkt_tol, double objective_tol, int max_active); -RcppExport SEXP _selectiveInference_solve_QP_wide(SEXP XSEXP, SEXP boundSEXP, SEXP maxiterSEXP, SEXP thetaSEXP, SEXP linear_funcSEXP, SEXP gradientSEXP, SEXP X_thetaSEXP, SEXP ever_activeSEXP, SEXP nactiveSEXP, SEXP kkt_tolSEXP, SEXP objective_tolSEXP, SEXP max_activeSEXP) { +RcppExport SEXP selectiveInference_solve_QP_wide(SEXP XSEXP, SEXP boundSEXP, SEXP maxiterSEXP, SEXP thetaSEXP, SEXP linear_funcSEXP, SEXP gradientSEXP, SEXP X_thetaSEXP, SEXP ever_activeSEXP, SEXP nactiveSEXP, SEXP kkt_tolSEXP, SEXP objective_tolSEXP, SEXP max_activeSEXP) { BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::RObject __result; + Rcpp::RNGScope __rngScope; Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type X(XSEXP); Rcpp::traits::input_parameter< double >::type bound(boundSEXP); Rcpp::traits::input_parameter< int >::type maxiter(maxiterSEXP); @@ -44,49 +44,36 @@ BEGIN_RCPP Rcpp::traits::input_parameter< double >::type kkt_tol(kkt_tolSEXP); Rcpp::traits::input_parameter< double >::type objective_tol(objective_tolSEXP); Rcpp::traits::input_parameter< int >::type max_active(max_activeSEXP); - rcpp_result_gen = Rcpp::wrap(solve_QP_wide(X, bound, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, max_active)); - return rcpp_result_gen; + __result = Rcpp::wrap(solve_QP_wide(X, bound, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, max_active)); + return __result; END_RCPP } // update1_ Rcpp::List update1_(Rcpp::NumericMatrix Q2, Rcpp::NumericVector w, int m, int k); -RcppExport SEXP _selectiveInference_update1_(SEXP Q2SEXP, SEXP wSEXP, SEXP mSEXP, SEXP kSEXP) { +RcppExport SEXP selectiveInference_update1_(SEXP Q2SEXP, SEXP wSEXP, SEXP mSEXP, SEXP kSEXP) { BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::RObject __result; + Rcpp::RNGScope __rngScope; Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type Q2(Q2SEXP); Rcpp::traits::input_parameter< Rcpp::NumericVector >::type w(wSEXP); Rcpp::traits::input_parameter< int >::type m(mSEXP); Rcpp::traits::input_parameter< int >::type k(kSEXP); - rcpp_result_gen = Rcpp::wrap(update1_(Q2, w, m, k)); - return rcpp_result_gen; + __result = Rcpp::wrap(update1_(Q2, w, m, k)); + return __result; END_RCPP } // downdate1_ Rcpp::List downdate1_(Rcpp::NumericMatrix Q1, Rcpp::NumericMatrix R, int j0, int m, int n); -RcppExport SEXP _selectiveInference_downdate1_(SEXP Q1SEXP, SEXP RSEXP, SEXP j0SEXP, SEXP mSEXP, SEXP nSEXP) { +RcppExport SEXP selectiveInference_downdate1_(SEXP Q1SEXP, SEXP RSEXP, SEXP j0SEXP, SEXP mSEXP, SEXP nSEXP) { BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::RObject __result; + Rcpp::RNGScope __rngScope; Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type Q1(Q1SEXP); Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type R(RSEXP); Rcpp::traits::input_parameter< int >::type j0(j0SEXP); Rcpp::traits::input_parameter< int >::type m(mSEXP); Rcpp::traits::input_parameter< int >::type n(nSEXP); - rcpp_result_gen = Rcpp::wrap(downdate1_(Q1, R, j0, m, n)); - return rcpp_result_gen; + __result = Rcpp::wrap(downdate1_(Q1, R, j0, m, n)); + return __result; END_RCPP } - -static const R_CallMethodDef CallEntries[] = { - {"_selectiveInference_solve_QP", (DL_FUNC) &_selectiveInference_solve_QP, 11}, - {"_selectiveInference_solve_QP_wide", (DL_FUNC) &_selectiveInference_solve_QP_wide, 12}, - {"_selectiveInference_update1_", (DL_FUNC) &_selectiveInference_update1_, 4}, - {"_selectiveInference_downdate1_", (DL_FUNC) &_selectiveInference_downdate1_, 5}, - {NULL, NULL, 0} -}; - -RcppExport void R_init_selectiveInference(DllInfo *dll) { - R_registerRoutines(dll, NULL, CallEntries, NULL, NULL); - R_useDynamicSymbols(dll, FALSE); -} From 17eaff40d0d880745815a44428978a1b84af78e7 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Tue, 10 Oct 2017 14:48:59 -0700 Subject: [PATCH 270/493] undefined reference to n --- selectiveInference/R/funs.fixed.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 0fa0d71..83c0f93 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -375,7 +375,6 @@ debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n dep # Initialize variables soln = rep(0, p) - Xsoln = rep(0, n) ever_active = rep(0, p) ever_active[1] = row # 1-based ever_active = as.integer(ever_active) @@ -406,6 +405,7 @@ debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n dep objective_tol, max_active) } else { + Xsoln = rep(0, nrow(Xinfo)) result = solve_QP_wide(Xinfo, # this is a design matrix mu, max_iter, From eb2a5e4b47d270a71ddd8855a97e1c32955de0ed Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Tue, 10 Oct 2017 14:52:28 -0700 Subject: [PATCH 271/493] needed LaTeX escape chars --- selectiveInference/man/debiasingMatrix.Rd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selectiveInference/man/debiasingMatrix.Rd b/selectiveInference/man/debiasingMatrix.Rd index d0e908d..4da925e 100644 --- a/selectiveInference/man/debiasingMatrix.Rd +++ b/selectiveInference/man/debiasingMatrix.Rd @@ -108,7 +108,7 @@ set.seed(10) n = 50 p = 100 X = matrix(rnorm(n * p), n, p) -S = t(X) %*% X / n +S = t(X) \%*\% X / n M = debiasingMatrix(S, FALSE, n, c(1,3,5)) M2 = debiasingMatrix(X, TRUE, n, c(1,3,5)) max(M - M2) From 43fbddf9d2a18dea84326867dcf0e0ac90bfdc12 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Tue, 10 Oct 2017 15:54:14 -0700 Subject: [PATCH 272/493] added a full n>p example --- selectiveInference/man/fixedLassoInf.Rd | 59 ++++++++++++++++++------- 1 file changed, 42 insertions(+), 17 deletions(-) diff --git a/selectiveInference/man/fixedLassoInf.Rd b/selectiveInference/man/fixedLassoInf.Rd index 5fd8c24..445e72a 100644 --- a/selectiveInference/man/fixedLassoInf.Rd +++ b/selectiveInference/man/fixedLassoInf.Rd @@ -257,29 +257,54 @@ set.seed(43) out = fixedLassoInf(x, tim, beta_hat, lambda, status=status, family="cox") out -# Debiased lasso or "full" + # Debiased lasso or "full" -n = 50 -p = 100 -sigma = 1 + n = 50 + p = 100 + sigma = 1 -x = matrix(rnorm(n*p),n,p) -x = scale(x,TRUE,TRUE) + x = matrix(rnorm(n*p),n,p) + x = scale(x,TRUE,TRUE) -beta = c(3,2,rep(0,p-2)) -y = x\%*\%beta + sigma*rnorm(n) + beta = c(3,2,rep(0,p-2)) + y = x\%*\%beta + sigma*rnorm(n) -# first run glmnet -gfit = glmnet(x, y, standardize=FALSE, intercept=FALSE) + # first run glmnet + gfit = glmnet(x, y, standardize=FALSE, intercept=FALSE) -# extract coef for a given lambda; note the 1/n factor! -# (and we don't save the intercept term) -lambda = 2.8 -beta = coef(gfit, x=x, y=y, s=lambda/n, exact=TRUE)[-1] + # extract coef for a given lambda; note the 1/n factor! + # (and we don't save the intercept term) + lambda = 2.8 + beta = coef(gfit, x=x, y=y, s=lambda/n, exact=TRUE)[-1] -# compute fixed lambda p-values and selection intervals -out = fixedLassoInf(x, y, beta, lambda, sigma=sigma, type='full', intercept=FALSE) -out + # compute fixed lambda p-values and selection intervals + out = fixedLassoInf(x, y, beta, lambda, sigma=sigma, type='full', intercept=FALSE) + out + + # When n > p and "full" we use the full inverse + # instead of Javanmard and Montanari's approximate inverse + + n = 200 + p = 50 + sigma = 1 + + x = matrix(rnorm(n*p),n,p) + x = scale(x,TRUE,TRUE) + + beta = c(3,2,rep(0,p-2)) + y = x\%*\%beta + sigma*rnorm(n) + + # first run glmnet + gfit = glmnet(x, y, standardize=FALSE, intercept=FALSE) + + # extract coef for a given lambda; note the 1/n factor! + # (and we don't save the intercept term) + lambda = 2.8 + beta = coef(gfit, x=x, y=y, s=lambda/n, exact=TRUE)[-1] + + # compute fixed lambda p-values and selection intervals + out = fixedLassoInf(x, y, beta, lambda, sigma=sigma, type='full', intercept=FALSE) + out } \ No newline at end of file From a6fcd6e283c32e3b20c7f1cd762e0ccecf728915 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Tue, 10 Oct 2017 23:00:08 -0700 Subject: [PATCH 273/493] fix of signs for full --- selectiveInference/R/funs.fixed.R | 41 ++++++++++++++++++++++--------- 1 file changed, 29 insertions(+), 12 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 83c0f93..be314af 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -82,17 +82,20 @@ fixedLassoInf <- function(x, y, beta, tol.coef = tol.beta * sqrt(n / colSums(x^2)) vars = which(abs(beta) > tol.coef) + sign_vars = sign(beta[vars]) if(sum(vars)==0){ cat("Empty model",fill=T) return() } - if (any(sign(g[vars]) != sign(beta[vars]))) + + if (any(sign(g[vars]) != sign_vars)) { warning(paste("Solution beta does not satisfy the KKT conditions", "(to within specified tolerances). You might try rerunning", "glmnet with a lower setting of the", "'thresh' parameter, for a more accurate convergence.")) - + } + # Get lasso polyhedral region, of form Gy >= u logical.vars=rep(FALSE,p) @@ -132,13 +135,19 @@ fixedLassoInf <- function(x, y, beta, } # add additional targets for inference if provided - if (!is.null(add.targets)) vars = sort(unique(c(vars,add.targets,recursive=T))) - - k = length(vars) + if (!is.null(add.targets)) { + # vars is boolean... + old_vars = vars & TRUE + vars[add.targets] = TRUE + sign_vars = sign(beta[vars]) + sign_vars[!old_vars] = NA + stop("`add.targets` not fully implemented yet") + } + + k = length(vars) pv = vlo = vup = numeric(k) vmat = matrix(0,k,n) ci = tailarea = matrix(0,k,2) - sign = numeric(k) if (type=="full" & p > n) { if (intercept == T) { @@ -202,20 +211,28 @@ fixedLassoInf <- function(x, y, beta, vj = M[j,] mj = sqrt(sum(vj^2)) vj = vj / mj # Standardize (divide by norm of vj) - sign[j] = sign(sum(vj*y)) - vj = sign[j] * vj + + if (!is.na(sign_vars[j])) { + vj = sign_vars[j] * vj + } limits.info = TG.limits(y, A, b, vj, Sigma=diag(rep(sigma^2, n))) a = TG.pvalue.base(limits.info, null_value=null_value[j], bits=bits) pv[j] = a$pv + if (is.na(sign_vars[j])) { # for variables not in the active set, report 2-sided pvalue + pv[j] = 2 * min(pv[j], 1 - pv[j]) + } vlo[j] = a$vlo * mj # Unstandardize (mult by norm of vj) vup[j] = a$vup * mj # Unstandardize (mult by norm of vj) - vmat[j,] = vj * mj * sign[j] # Unstandardize (mult by norm of vj) - + if (!is.na(sign_vars[j])) { + vmat[j,] = vj * mj * sign_vars[j] # Unstandardize (mult by norm of vj) and fix sign + } else { + vmat[j,] = vj * mj # Unstandardize (mult by norm of vj) + } a = TG.interval.base(limits.info, alpha=alpha, gridrange=gridrange, - flip=(sign[j]==-1), + flip=(sign_vars[j]==-1), bits=bits) ci[j,] = (a$int-null_value[j]) * mj # Unstandardize (mult by norm of vj) tailarea[j,] = a$tailarea @@ -223,7 +240,7 @@ fixedLassoInf <- function(x, y, beta, out = list(type=type,lambda=lambda,pv=pv,ci=ci, tailarea=tailarea,vlo=vlo,vup=vup,vmat=vmat,y=y, - vars=vars,sign=sign,sigma=sigma,alpha=alpha, + vars=vars,sign=sign_vars,sigma=sigma,alpha=alpha, sd=sigma*sqrt(rowSums(vmat^2)), coef0=vmat%*%y, call=this.call) From 8ad2f63d42d04bdd5212ac9c9b10ad75d98498e3 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Wed, 11 Oct 2017 07:38:07 -0700 Subject: [PATCH 274/493] variable rename --- selectiveInference/R/funs.fixedCox.R | 12 ++++++------ selectiveInference/R/funs.fixedLogit.R | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/selectiveInference/R/funs.fixedCox.R b/selectiveInference/R/funs.fixedCox.R index d6ebd6b..7530511 100644 --- a/selectiveInference/R/funs.fixedCox.R +++ b/selectiveInference/R/funs.fixedCox.R @@ -29,7 +29,7 @@ if( sum(status==0)+sum(status==1)!=length(y)) stop("status vector must have valu vars=which(m) if(sum(m)>0){ bhat=beta[beta!=0] #penalized coefs just for active variables - s2=sign(bhat) + sign_bhat=sign(bhat) #check KKT @@ -40,7 +40,7 @@ if(sum(m)>0){ res=residuals(aaa,type="score") if(!is.matrix(res)) res=matrix(res,ncol=1) scor=colSums(res) - g=(scor+lambda*s2)/(2*lambda) + g=(scor+lambda*sign_bhat)/(2*lambda) # cat(c(g,lambda,tol.kkt),fill=T) if (any(abs(g) > 1+tol.kkt) ) warning(paste("Solution beta does not satisfy the KKT conditions", @@ -49,9 +49,9 @@ scor=colSums(res) # Hessian of partial likelihood at the LASSO solution MM=vcov(aaa) -bbar=(bhat+lambda*MM%*%s2) -A1=-(mydiag(s2)) -b1= -(mydiag(s2)%*%MM)%*%s2*lambda +bbar=(bhat+lambda*MM%*%sign_bhat) +A1=-(mydiag(sign_bhat)) +b1= -(mydiag(sign_bhat)%*%MM)%*%sign_bhat*lambda temp=max(A1%*%bbar-b1) @@ -63,7 +63,7 @@ b1= -(mydiag(s2)%*%MM)%*%s2*lambda # the one sided p-values are a bit off for(jj in 1:length(bbar)){ - vj=rep(0,length(bbar));vj[jj]=s2[jj] + vj=rep(0,length(bbar));vj[jj]=sign_bhat[jj] junk=TG.pvalue(bbar, A1, b1, vj,MM) diff --git a/selectiveInference/R/funs.fixedLogit.R b/selectiveInference/R/funs.fixedLogit.R index 19936b0..16cafdc 100644 --- a/selectiveInference/R/funs.fixedLogit.R +++ b/selectiveInference/R/funs.fixedLogit.R @@ -32,7 +32,7 @@ fixedLogitLassoInf=function(x,y,beta,lambda,alpha=.1, type=c("partial"), tol.bet m=beta[-1]!=0 #active set bhat=c(beta[1],beta[-1][beta[-1]!=0]) # intcpt plus active vars - s2=sign(bhat) + sign_bhat=sign(bhat) lam2m=diag(c(0,rep(lambda,sum(m)))) @@ -66,14 +66,14 @@ fixedLogitLassoInf=function(x,y,beta,lambda,alpha=.1, type=c("partial"), tol.bet # MM=solve(t(xxm)%*%w%*%xxm) MM=solve(scale(t(xxm),F,1/ww)%*%xxm) gm = c(0,-g[vars]*lambda) # gradient at LASSO solution, first entry is 0 because intercept is unpenalized - # at exact LASSO solution it should be s2[-1] + # at exact LASSO solution it should be sign_bhat[-1] dbeta = MM %*% gm - # bbar=(bhat+lam2m%*%MM%*%s2) # JT: this is wrong, shouldn't use sign of intercept anywhere... + # bbar=(bhat+lam2m%*%MM%*%sign_bhat) # JT: this is wrong, shouldn't use sign of intercept anywhere... bbar = bhat - dbeta - A1=-(mydiag(s2))[-1,] - b1= (s2 * dbeta)[-1] + A1=-(mydiag(sign_bhat))[-1,] + b1= (sign_bhat * dbeta)[-1] tol.poly = 0.01 if (max((A1 %*% bbar) - b1) > tol.poly) @@ -87,7 +87,7 @@ fixedLogitLassoInf=function(x,y,beta,lambda,alpha=.1, type=c("partial"), tol.bet for(jj in 1:sum(m)){ - vj=c(rep(0,sum(m)+1));vj[jj+1]=s2[jj+1] + vj=c(rep(0,sum(m)+1));vj[jj+1]=sign_bhat[jj+1] # compute p-values junk=TG.pvalue(bbar, A1, b1, vj, MM) pv[jj] = junk$pv From 749c136eddbbb9928c0e8940b09def5d8aece550 Mon Sep 17 00:00:00 2001 From: tibs Date: Wed, 11 Oct 2017 10:08:57 -0700 Subject: [PATCH 275/493] rob added unifTest.R --- selectiveInference/R/RcppExports.R | 10 +-- selectiveInference/src/RcppExports.cpp | 55 ++++++++----- tests/unifTest.R | 110 +++++++++++++++++++++++++ 3 files changed, 149 insertions(+), 26 deletions(-) create mode 100644 tests/unifTest.R diff --git a/selectiveInference/R/RcppExports.R b/selectiveInference/R/RcppExports.R index 8af4640..f5ebee4 100644 --- a/selectiveInference/R/RcppExports.R +++ b/selectiveInference/R/RcppExports.R @@ -1,19 +1,19 @@ -# This file was generated by Rcpp::compileAttributes +# Generated by using Rcpp::compileAttributes() -> do not edit by hand # Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 solve_QP <- function(Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active) { - .Call('selectiveInference_solve_QP', PACKAGE = 'selectiveInference', Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active) + .Call('_selectiveInference_solve_QP', PACKAGE = 'selectiveInference', Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active) } solve_QP_wide <- function(X, bound, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, max_active) { - .Call('selectiveInference_solve_QP_wide', PACKAGE = 'selectiveInference', X, bound, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, max_active) + .Call('_selectiveInference_solve_QP_wide', PACKAGE = 'selectiveInference', X, bound, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, max_active) } update1_ <- function(Q2, w, m, k) { - .Call('selectiveInference_update1_', PACKAGE = 'selectiveInference', Q2, w, m, k) + .Call('_selectiveInference_update1_', PACKAGE = 'selectiveInference', Q2, w, m, k) } downdate1_ <- function(Q1, R, j0, m, n) { - .Call('selectiveInference_downdate1_', PACKAGE = 'selectiveInference', Q1, R, j0, m, n) + .Call('_selectiveInference_downdate1_', PACKAGE = 'selectiveInference', Q1, R, j0, m, n) } diff --git a/selectiveInference/src/RcppExports.cpp b/selectiveInference/src/RcppExports.cpp index efa87d5..02a7741 100644 --- a/selectiveInference/src/RcppExports.cpp +++ b/selectiveInference/src/RcppExports.cpp @@ -1,4 +1,4 @@ -// This file was generated by Rcpp::compileAttributes +// Generated by using Rcpp::compileAttributes() -> do not edit by hand // Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 #include @@ -7,10 +7,10 @@ using namespace Rcpp; // solve_QP Rcpp::List solve_QP(Rcpp::NumericMatrix Sigma, double bound, int maxiter, Rcpp::NumericVector theta, Rcpp::NumericVector linear_func, Rcpp::NumericVector gradient, Rcpp::IntegerVector ever_active, Rcpp::IntegerVector nactive, double kkt_tol, double objective_tol, int max_active); -RcppExport SEXP selectiveInference_solve_QP(SEXP SigmaSEXP, SEXP boundSEXP, SEXP maxiterSEXP, SEXP thetaSEXP, SEXP linear_funcSEXP, SEXP gradientSEXP, SEXP ever_activeSEXP, SEXP nactiveSEXP, SEXP kkt_tolSEXP, SEXP objective_tolSEXP, SEXP max_activeSEXP) { +RcppExport SEXP _selectiveInference_solve_QP(SEXP SigmaSEXP, SEXP boundSEXP, SEXP maxiterSEXP, SEXP thetaSEXP, SEXP linear_funcSEXP, SEXP gradientSEXP, SEXP ever_activeSEXP, SEXP nactiveSEXP, SEXP kkt_tolSEXP, SEXP objective_tolSEXP, SEXP max_activeSEXP) { BEGIN_RCPP - Rcpp::RObject __result; - Rcpp::RNGScope __rngScope; + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type Sigma(SigmaSEXP); Rcpp::traits::input_parameter< double >::type bound(boundSEXP); Rcpp::traits::input_parameter< int >::type maxiter(maxiterSEXP); @@ -22,16 +22,16 @@ BEGIN_RCPP Rcpp::traits::input_parameter< double >::type kkt_tol(kkt_tolSEXP); Rcpp::traits::input_parameter< double >::type objective_tol(objective_tolSEXP); Rcpp::traits::input_parameter< int >::type max_active(max_activeSEXP); - __result = Rcpp::wrap(solve_QP(Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active)); - return __result; + rcpp_result_gen = Rcpp::wrap(solve_QP(Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active)); + return rcpp_result_gen; END_RCPP } // solve_QP_wide Rcpp::List solve_QP_wide(Rcpp::NumericMatrix X, double bound, int maxiter, Rcpp::NumericVector theta, Rcpp::NumericVector linear_func, Rcpp::NumericVector gradient, Rcpp::NumericVector X_theta, Rcpp::IntegerVector ever_active, Rcpp::IntegerVector nactive, double kkt_tol, double objective_tol, int max_active); -RcppExport SEXP selectiveInference_solve_QP_wide(SEXP XSEXP, SEXP boundSEXP, SEXP maxiterSEXP, SEXP thetaSEXP, SEXP linear_funcSEXP, SEXP gradientSEXP, SEXP X_thetaSEXP, SEXP ever_activeSEXP, SEXP nactiveSEXP, SEXP kkt_tolSEXP, SEXP objective_tolSEXP, SEXP max_activeSEXP) { +RcppExport SEXP _selectiveInference_solve_QP_wide(SEXP XSEXP, SEXP boundSEXP, SEXP maxiterSEXP, SEXP thetaSEXP, SEXP linear_funcSEXP, SEXP gradientSEXP, SEXP X_thetaSEXP, SEXP ever_activeSEXP, SEXP nactiveSEXP, SEXP kkt_tolSEXP, SEXP objective_tolSEXP, SEXP max_activeSEXP) { BEGIN_RCPP - Rcpp::RObject __result; - Rcpp::RNGScope __rngScope; + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type X(XSEXP); Rcpp::traits::input_parameter< double >::type bound(boundSEXP); Rcpp::traits::input_parameter< int >::type maxiter(maxiterSEXP); @@ -44,36 +44,49 @@ BEGIN_RCPP Rcpp::traits::input_parameter< double >::type kkt_tol(kkt_tolSEXP); Rcpp::traits::input_parameter< double >::type objective_tol(objective_tolSEXP); Rcpp::traits::input_parameter< int >::type max_active(max_activeSEXP); - __result = Rcpp::wrap(solve_QP_wide(X, bound, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, max_active)); - return __result; + rcpp_result_gen = Rcpp::wrap(solve_QP_wide(X, bound, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, max_active)); + return rcpp_result_gen; END_RCPP } // update1_ Rcpp::List update1_(Rcpp::NumericMatrix Q2, Rcpp::NumericVector w, int m, int k); -RcppExport SEXP selectiveInference_update1_(SEXP Q2SEXP, SEXP wSEXP, SEXP mSEXP, SEXP kSEXP) { +RcppExport SEXP _selectiveInference_update1_(SEXP Q2SEXP, SEXP wSEXP, SEXP mSEXP, SEXP kSEXP) { BEGIN_RCPP - Rcpp::RObject __result; - Rcpp::RNGScope __rngScope; + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type Q2(Q2SEXP); Rcpp::traits::input_parameter< Rcpp::NumericVector >::type w(wSEXP); Rcpp::traits::input_parameter< int >::type m(mSEXP); Rcpp::traits::input_parameter< int >::type k(kSEXP); - __result = Rcpp::wrap(update1_(Q2, w, m, k)); - return __result; + rcpp_result_gen = Rcpp::wrap(update1_(Q2, w, m, k)); + return rcpp_result_gen; END_RCPP } // downdate1_ Rcpp::List downdate1_(Rcpp::NumericMatrix Q1, Rcpp::NumericMatrix R, int j0, int m, int n); -RcppExport SEXP selectiveInference_downdate1_(SEXP Q1SEXP, SEXP RSEXP, SEXP j0SEXP, SEXP mSEXP, SEXP nSEXP) { +RcppExport SEXP _selectiveInference_downdate1_(SEXP Q1SEXP, SEXP RSEXP, SEXP j0SEXP, SEXP mSEXP, SEXP nSEXP) { BEGIN_RCPP - Rcpp::RObject __result; - Rcpp::RNGScope __rngScope; + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type Q1(Q1SEXP); Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type R(RSEXP); Rcpp::traits::input_parameter< int >::type j0(j0SEXP); Rcpp::traits::input_parameter< int >::type m(mSEXP); Rcpp::traits::input_parameter< int >::type n(nSEXP); - __result = Rcpp::wrap(downdate1_(Q1, R, j0, m, n)); - return __result; + rcpp_result_gen = Rcpp::wrap(downdate1_(Q1, R, j0, m, n)); + return rcpp_result_gen; END_RCPP } + +static const R_CallMethodDef CallEntries[] = { + {"_selectiveInference_solve_QP", (DL_FUNC) &_selectiveInference_solve_QP, 11}, + {"_selectiveInference_solve_QP_wide", (DL_FUNC) &_selectiveInference_solve_QP_wide, 12}, + {"_selectiveInference_update1_", (DL_FUNC) &_selectiveInference_update1_, 4}, + {"_selectiveInference_downdate1_", (DL_FUNC) &_selectiveInference_downdate1_, 5}, + {NULL, NULL, 0} +}; + +RcppExport void R_init_selectiveInference(DllInfo *dll) { + R_registerRoutines(dll, NULL, CallEntries, NULL, NULL); + R_useDynamicSymbols(dll, FALSE); +} diff --git a/tests/unifTest.R b/tests/unifTest.R new file mode 100644 index 0000000..535fa68 --- /dev/null +++ b/tests/unifTest.R @@ -0,0 +1,110 @@ + +library(selectiveInference) + +library(glmnet) + +set.seed(424) + +#n=100 +#p=30 + +n=20 +p=40 +sigma=.4 +beta=c(3,2,-1,4,-2,2,rep(0,p-6)) +#beta=rep(0,p) + +tr=beta!=0 + +#type="full" +type="part" + +nsim = 1000 +lambda=.3 +nzb=0 +pvals <- matrix(NA, nrow=nsim, ncol=p) +x = matrix(rnorm(n*p),n,p) +x = scale(x,T,T)/sqrt(n-1) +mu = x%*%beta + +for (i in 1:nsim) { + cat(i) +y=mu+sigma*rnorm(n) +y=y-mean(y) +# first run glmnet +gfit=glmnet(x,y,intercept=F,standardize=F,thresh=1e-8) + +#extract coef for a given lambda; Note the 1/n factor! + bhat = coef(gfit, s=lambda/n, exact=TRUE,x=x,y=y)[-1] + nzb=nzb+sum(bhat!=0) +# compute fixed lambda p-values and selection intervals +aa = fixedLassoInf(x,y,bhat,lambda,intercept=F,sigma=sigma,type=type) +pvals[i, aa$vars] <- aa$pv +} + +# summarize results + +if(type=="partial"){ +nulls=rowSums(is.na(pvals[,tr]))==0 # for type=partial, nonnull setting +np = pvals[nulls,-(1:sum(beta!=0))] +} + +if(type=="full"){ +nulls=1:nrow(pvals) # for type=full non null setting +np = pvals[nulls,-(1:sum(beta!=0))] +} + + + +#np=pvals #for null setting + +o=!is.na(np) + +#check uniformity + +plot((1:sum(o))/sum(o),sort(np[o]),xlab="Expected pvalue",ylab="Observed pvalue") +abline(0,1) + + + # estimate and plot FDR + +pvadj=pvadj.by=pvadj.holm=matrix(NA,nsim,p) +for(ii in 1:nsim){ + o=!is.na(pvals[ii,]) + pvadj[ii,o]=p.adjust(pvals[ii,o],method="BH") + pvadj.by[ii,o]=p.adjust(pvals[ii,o],method="BY") + pvadj.holm[ii,o]=p.adjust(pvals[ii,o],method="holm") + } +qqlist=fdr=se=fdr.by=se.by=fdr.holm=se.holm=c(.05, .1,.15,.2,.25,.3) +jj=0 +for(qq in qqlist){ + jj=jj+1 + +r=v=r.by=v.by=r.holm=v.holm=rep(NA,nsim) +for(ii in 1:nsim){ + v[ii]=sum( (pvadj[ii,] Date: Wed, 11 Oct 2017 10:32:44 -0700 Subject: [PATCH 276/493] rob modified unifTest.R --- tests/unifTest.R | 40 +++++++++++++++++++--------------------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/tests/unifTest.R b/tests/unifTest.R index 535fa68..bc15bf7 100644 --- a/tests/unifTest.R +++ b/tests/unifTest.R @@ -1,15 +1,16 @@ -library(selectiveInference) +library(selectiveInference, lib.loc="/Users/tibs/dropbox/git/R-software/mylib") library(glmnet) set.seed(424) -#n=100 -#p=30 +n=100 +p=30 + +n=100 +p=200 -n=20 -p=40 sigma=.4 beta=c(3,2,-1,4,-2,2,rep(0,p-6)) #beta=rep(0,p) @@ -17,7 +18,7 @@ beta=c(3,2,-1,4,-2,2,rep(0,p-6)) tr=beta!=0 #type="full" -type="part" +type="partial" nsim = 1000 lambda=.3 @@ -28,7 +29,7 @@ x = scale(x,T,T)/sqrt(n-1) mu = x%*%beta for (i in 1:nsim) { - cat(i) + cat(i,fill=T) y=mu+sigma*rnorm(n) y=y-mean(y) # first run glmnet @@ -68,26 +69,25 @@ abline(0,1) # estimate and plot FDR -pvadj=pvadj.by=pvadj.holm=matrix(NA,nsim,p) +pvadj=pvadj.by=matrix(NA,nsim,p) for(ii in 1:nsim){ - o=!is.na(pvals[ii,]) - pvadj[ii,o]=p.adjust(pvals[ii,o],method="BH") - pvadj.by[ii,o]=p.adjust(pvals[ii,o],method="BY") - pvadj.holm[ii,o]=p.adjust(pvals[ii,o],method="holm") + oo=!is.na(pvals[ii,]) + pvadj[ii,oo]=p.adjust(pvals[ii,oo],method="BH") + pvadj.by[ii,oo]=p.adjust(pvals[ii,oo],method="BY") + } -qqlist=fdr=se=fdr.by=se.by=fdr.holm=se.holm=c(.05, .1,.15,.2,.25,.3) +qqlist=c(.05, .1,.15,.2,.25,.3) +fdr=se=fdr.by=se.by=rep(NA,length(qqlist)) jj=0 for(qq in qqlist){ jj=jj+1 -r=v=r.by=v.by=r.holm=v.holm=rep(NA,nsim) +r=v=r.by=v.by=rep(NA,nsim) for(ii in 1:nsim){ v[ii]=sum( (pvadj[ii,] Date: Wed, 11 Oct 2017 10:46:34 -0700 Subject: [PATCH 277/493] rob modified unifTest.R --- tests/unifTest.R | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/unifTest.R b/tests/unifTest.R index bc15bf7..3f251ca 100644 --- a/tests/unifTest.R +++ b/tests/unifTest.R @@ -106,3 +106,9 @@ lines(qqlist,fdr.by,type="b",col=3) abline(0,1,lty=2) title(paste("n=",as.character(n)," p=",as.character(p)," ",as.character(type))) legend("bottomright",c("BH","BY"),col=c(1,3),lty=1) + + +pv=pvals[ii,] +pvv=sort(pv) +oo=which(pvv<=.2*(1:length(pvv))/length(pvv)) +oo=oo[length(oo)] From 5f971f6c36c11b4fbe04bb9263dcd4563ac22339 Mon Sep 17 00:00:00 2001 From: tibs Date: Wed, 11 Oct 2017 10:08:57 -0700 Subject: [PATCH 278/493] rob added unifTest.R --- selectiveInference/R/RcppExports.R | 10 +-- selectiveInference/src/RcppExports.cpp | 55 ++++++++----- tests/unifTest.R | 110 +++++++++++++++++++++++++ 3 files changed, 149 insertions(+), 26 deletions(-) create mode 100644 tests/unifTest.R diff --git a/selectiveInference/R/RcppExports.R b/selectiveInference/R/RcppExports.R index 8af4640..f5ebee4 100644 --- a/selectiveInference/R/RcppExports.R +++ b/selectiveInference/R/RcppExports.R @@ -1,19 +1,19 @@ -# This file was generated by Rcpp::compileAttributes +# Generated by using Rcpp::compileAttributes() -> do not edit by hand # Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 solve_QP <- function(Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active) { - .Call('selectiveInference_solve_QP', PACKAGE = 'selectiveInference', Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active) + .Call('_selectiveInference_solve_QP', PACKAGE = 'selectiveInference', Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active) } solve_QP_wide <- function(X, bound, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, max_active) { - .Call('selectiveInference_solve_QP_wide', PACKAGE = 'selectiveInference', X, bound, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, max_active) + .Call('_selectiveInference_solve_QP_wide', PACKAGE = 'selectiveInference', X, bound, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, max_active) } update1_ <- function(Q2, w, m, k) { - .Call('selectiveInference_update1_', PACKAGE = 'selectiveInference', Q2, w, m, k) + .Call('_selectiveInference_update1_', PACKAGE = 'selectiveInference', Q2, w, m, k) } downdate1_ <- function(Q1, R, j0, m, n) { - .Call('selectiveInference_downdate1_', PACKAGE = 'selectiveInference', Q1, R, j0, m, n) + .Call('_selectiveInference_downdate1_', PACKAGE = 'selectiveInference', Q1, R, j0, m, n) } diff --git a/selectiveInference/src/RcppExports.cpp b/selectiveInference/src/RcppExports.cpp index efa87d5..02a7741 100644 --- a/selectiveInference/src/RcppExports.cpp +++ b/selectiveInference/src/RcppExports.cpp @@ -1,4 +1,4 @@ -// This file was generated by Rcpp::compileAttributes +// Generated by using Rcpp::compileAttributes() -> do not edit by hand // Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 #include @@ -7,10 +7,10 @@ using namespace Rcpp; // solve_QP Rcpp::List solve_QP(Rcpp::NumericMatrix Sigma, double bound, int maxiter, Rcpp::NumericVector theta, Rcpp::NumericVector linear_func, Rcpp::NumericVector gradient, Rcpp::IntegerVector ever_active, Rcpp::IntegerVector nactive, double kkt_tol, double objective_tol, int max_active); -RcppExport SEXP selectiveInference_solve_QP(SEXP SigmaSEXP, SEXP boundSEXP, SEXP maxiterSEXP, SEXP thetaSEXP, SEXP linear_funcSEXP, SEXP gradientSEXP, SEXP ever_activeSEXP, SEXP nactiveSEXP, SEXP kkt_tolSEXP, SEXP objective_tolSEXP, SEXP max_activeSEXP) { +RcppExport SEXP _selectiveInference_solve_QP(SEXP SigmaSEXP, SEXP boundSEXP, SEXP maxiterSEXP, SEXP thetaSEXP, SEXP linear_funcSEXP, SEXP gradientSEXP, SEXP ever_activeSEXP, SEXP nactiveSEXP, SEXP kkt_tolSEXP, SEXP objective_tolSEXP, SEXP max_activeSEXP) { BEGIN_RCPP - Rcpp::RObject __result; - Rcpp::RNGScope __rngScope; + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type Sigma(SigmaSEXP); Rcpp::traits::input_parameter< double >::type bound(boundSEXP); Rcpp::traits::input_parameter< int >::type maxiter(maxiterSEXP); @@ -22,16 +22,16 @@ BEGIN_RCPP Rcpp::traits::input_parameter< double >::type kkt_tol(kkt_tolSEXP); Rcpp::traits::input_parameter< double >::type objective_tol(objective_tolSEXP); Rcpp::traits::input_parameter< int >::type max_active(max_activeSEXP); - __result = Rcpp::wrap(solve_QP(Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active)); - return __result; + rcpp_result_gen = Rcpp::wrap(solve_QP(Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active)); + return rcpp_result_gen; END_RCPP } // solve_QP_wide Rcpp::List solve_QP_wide(Rcpp::NumericMatrix X, double bound, int maxiter, Rcpp::NumericVector theta, Rcpp::NumericVector linear_func, Rcpp::NumericVector gradient, Rcpp::NumericVector X_theta, Rcpp::IntegerVector ever_active, Rcpp::IntegerVector nactive, double kkt_tol, double objective_tol, int max_active); -RcppExport SEXP selectiveInference_solve_QP_wide(SEXP XSEXP, SEXP boundSEXP, SEXP maxiterSEXP, SEXP thetaSEXP, SEXP linear_funcSEXP, SEXP gradientSEXP, SEXP X_thetaSEXP, SEXP ever_activeSEXP, SEXP nactiveSEXP, SEXP kkt_tolSEXP, SEXP objective_tolSEXP, SEXP max_activeSEXP) { +RcppExport SEXP _selectiveInference_solve_QP_wide(SEXP XSEXP, SEXP boundSEXP, SEXP maxiterSEXP, SEXP thetaSEXP, SEXP linear_funcSEXP, SEXP gradientSEXP, SEXP X_thetaSEXP, SEXP ever_activeSEXP, SEXP nactiveSEXP, SEXP kkt_tolSEXP, SEXP objective_tolSEXP, SEXP max_activeSEXP) { BEGIN_RCPP - Rcpp::RObject __result; - Rcpp::RNGScope __rngScope; + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type X(XSEXP); Rcpp::traits::input_parameter< double >::type bound(boundSEXP); Rcpp::traits::input_parameter< int >::type maxiter(maxiterSEXP); @@ -44,36 +44,49 @@ BEGIN_RCPP Rcpp::traits::input_parameter< double >::type kkt_tol(kkt_tolSEXP); Rcpp::traits::input_parameter< double >::type objective_tol(objective_tolSEXP); Rcpp::traits::input_parameter< int >::type max_active(max_activeSEXP); - __result = Rcpp::wrap(solve_QP_wide(X, bound, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, max_active)); - return __result; + rcpp_result_gen = Rcpp::wrap(solve_QP_wide(X, bound, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, max_active)); + return rcpp_result_gen; END_RCPP } // update1_ Rcpp::List update1_(Rcpp::NumericMatrix Q2, Rcpp::NumericVector w, int m, int k); -RcppExport SEXP selectiveInference_update1_(SEXP Q2SEXP, SEXP wSEXP, SEXP mSEXP, SEXP kSEXP) { +RcppExport SEXP _selectiveInference_update1_(SEXP Q2SEXP, SEXP wSEXP, SEXP mSEXP, SEXP kSEXP) { BEGIN_RCPP - Rcpp::RObject __result; - Rcpp::RNGScope __rngScope; + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type Q2(Q2SEXP); Rcpp::traits::input_parameter< Rcpp::NumericVector >::type w(wSEXP); Rcpp::traits::input_parameter< int >::type m(mSEXP); Rcpp::traits::input_parameter< int >::type k(kSEXP); - __result = Rcpp::wrap(update1_(Q2, w, m, k)); - return __result; + rcpp_result_gen = Rcpp::wrap(update1_(Q2, w, m, k)); + return rcpp_result_gen; END_RCPP } // downdate1_ Rcpp::List downdate1_(Rcpp::NumericMatrix Q1, Rcpp::NumericMatrix R, int j0, int m, int n); -RcppExport SEXP selectiveInference_downdate1_(SEXP Q1SEXP, SEXP RSEXP, SEXP j0SEXP, SEXP mSEXP, SEXP nSEXP) { +RcppExport SEXP _selectiveInference_downdate1_(SEXP Q1SEXP, SEXP RSEXP, SEXP j0SEXP, SEXP mSEXP, SEXP nSEXP) { BEGIN_RCPP - Rcpp::RObject __result; - Rcpp::RNGScope __rngScope; + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type Q1(Q1SEXP); Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type R(RSEXP); Rcpp::traits::input_parameter< int >::type j0(j0SEXP); Rcpp::traits::input_parameter< int >::type m(mSEXP); Rcpp::traits::input_parameter< int >::type n(nSEXP); - __result = Rcpp::wrap(downdate1_(Q1, R, j0, m, n)); - return __result; + rcpp_result_gen = Rcpp::wrap(downdate1_(Q1, R, j0, m, n)); + return rcpp_result_gen; END_RCPP } + +static const R_CallMethodDef CallEntries[] = { + {"_selectiveInference_solve_QP", (DL_FUNC) &_selectiveInference_solve_QP, 11}, + {"_selectiveInference_solve_QP_wide", (DL_FUNC) &_selectiveInference_solve_QP_wide, 12}, + {"_selectiveInference_update1_", (DL_FUNC) &_selectiveInference_update1_, 4}, + {"_selectiveInference_downdate1_", (DL_FUNC) &_selectiveInference_downdate1_, 5}, + {NULL, NULL, 0} +}; + +RcppExport void R_init_selectiveInference(DllInfo *dll) { + R_registerRoutines(dll, NULL, CallEntries, NULL, NULL); + R_useDynamicSymbols(dll, FALSE); +} diff --git a/tests/unifTest.R b/tests/unifTest.R new file mode 100644 index 0000000..535fa68 --- /dev/null +++ b/tests/unifTest.R @@ -0,0 +1,110 @@ + +library(selectiveInference) + +library(glmnet) + +set.seed(424) + +#n=100 +#p=30 + +n=20 +p=40 +sigma=.4 +beta=c(3,2,-1,4,-2,2,rep(0,p-6)) +#beta=rep(0,p) + +tr=beta!=0 + +#type="full" +type="part" + +nsim = 1000 +lambda=.3 +nzb=0 +pvals <- matrix(NA, nrow=nsim, ncol=p) +x = matrix(rnorm(n*p),n,p) +x = scale(x,T,T)/sqrt(n-1) +mu = x%*%beta + +for (i in 1:nsim) { + cat(i) +y=mu+sigma*rnorm(n) +y=y-mean(y) +# first run glmnet +gfit=glmnet(x,y,intercept=F,standardize=F,thresh=1e-8) + +#extract coef for a given lambda; Note the 1/n factor! + bhat = coef(gfit, s=lambda/n, exact=TRUE,x=x,y=y)[-1] + nzb=nzb+sum(bhat!=0) +# compute fixed lambda p-values and selection intervals +aa = fixedLassoInf(x,y,bhat,lambda,intercept=F,sigma=sigma,type=type) +pvals[i, aa$vars] <- aa$pv +} + +# summarize results + +if(type=="partial"){ +nulls=rowSums(is.na(pvals[,tr]))==0 # for type=partial, nonnull setting +np = pvals[nulls,-(1:sum(beta!=0))] +} + +if(type=="full"){ +nulls=1:nrow(pvals) # for type=full non null setting +np = pvals[nulls,-(1:sum(beta!=0))] +} + + + +#np=pvals #for null setting + +o=!is.na(np) + +#check uniformity + +plot((1:sum(o))/sum(o),sort(np[o]),xlab="Expected pvalue",ylab="Observed pvalue") +abline(0,1) + + + # estimate and plot FDR + +pvadj=pvadj.by=pvadj.holm=matrix(NA,nsim,p) +for(ii in 1:nsim){ + o=!is.na(pvals[ii,]) + pvadj[ii,o]=p.adjust(pvals[ii,o],method="BH") + pvadj.by[ii,o]=p.adjust(pvals[ii,o],method="BY") + pvadj.holm[ii,o]=p.adjust(pvals[ii,o],method="holm") + } +qqlist=fdr=se=fdr.by=se.by=fdr.holm=se.holm=c(.05, .1,.15,.2,.25,.3) +jj=0 +for(qq in qqlist){ + jj=jj+1 + +r=v=r.by=v.by=r.holm=v.holm=rep(NA,nsim) +for(ii in 1:nsim){ + v[ii]=sum( (pvadj[ii,] Date: Wed, 11 Oct 2017 10:32:44 -0700 Subject: [PATCH 279/493] rob modified unifTest.R --- tests/unifTest.R | 40 +++++++++++++++++++--------------------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/tests/unifTest.R b/tests/unifTest.R index 535fa68..bc15bf7 100644 --- a/tests/unifTest.R +++ b/tests/unifTest.R @@ -1,15 +1,16 @@ -library(selectiveInference) +library(selectiveInference, lib.loc="/Users/tibs/dropbox/git/R-software/mylib") library(glmnet) set.seed(424) -#n=100 -#p=30 +n=100 +p=30 + +n=100 +p=200 -n=20 -p=40 sigma=.4 beta=c(3,2,-1,4,-2,2,rep(0,p-6)) #beta=rep(0,p) @@ -17,7 +18,7 @@ beta=c(3,2,-1,4,-2,2,rep(0,p-6)) tr=beta!=0 #type="full" -type="part" +type="partial" nsim = 1000 lambda=.3 @@ -28,7 +29,7 @@ x = scale(x,T,T)/sqrt(n-1) mu = x%*%beta for (i in 1:nsim) { - cat(i) + cat(i,fill=T) y=mu+sigma*rnorm(n) y=y-mean(y) # first run glmnet @@ -68,26 +69,25 @@ abline(0,1) # estimate and plot FDR -pvadj=pvadj.by=pvadj.holm=matrix(NA,nsim,p) +pvadj=pvadj.by=matrix(NA,nsim,p) for(ii in 1:nsim){ - o=!is.na(pvals[ii,]) - pvadj[ii,o]=p.adjust(pvals[ii,o],method="BH") - pvadj.by[ii,o]=p.adjust(pvals[ii,o],method="BY") - pvadj.holm[ii,o]=p.adjust(pvals[ii,o],method="holm") + oo=!is.na(pvals[ii,]) + pvadj[ii,oo]=p.adjust(pvals[ii,oo],method="BH") + pvadj.by[ii,oo]=p.adjust(pvals[ii,oo],method="BY") + } -qqlist=fdr=se=fdr.by=se.by=fdr.holm=se.holm=c(.05, .1,.15,.2,.25,.3) +qqlist=c(.05, .1,.15,.2,.25,.3) +fdr=se=fdr.by=se.by=rep(NA,length(qqlist)) jj=0 for(qq in qqlist){ jj=jj+1 -r=v=r.by=v.by=r.holm=v.holm=rep(NA,nsim) +r=v=r.by=v.by=rep(NA,nsim) for(ii in 1:nsim){ v[ii]=sum( (pvadj[ii,] Date: Wed, 11 Oct 2017 10:46:34 -0700 Subject: [PATCH 280/493] rob modified unifTest.R --- tests/unifTest.R | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/unifTest.R b/tests/unifTest.R index bc15bf7..3f251ca 100644 --- a/tests/unifTest.R +++ b/tests/unifTest.R @@ -106,3 +106,9 @@ lines(qqlist,fdr.by,type="b",col=3) abline(0,1,lty=2) title(paste("n=",as.character(n)," p=",as.character(p)," ",as.character(type))) legend("bottomright",c("BH","BY"),col=c(1,3),lty=1) + + +pv=pvals[ii,] +pvv=sort(pv) +oo=which(pvv<=.2*(1:length(pvv))/length(pvv)) +oo=oo[length(oo)] From 3da6c507fa366aaa8c8b4b86124092d40bea5255 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Wed, 25 Oct 2017 14:06:10 -0700 Subject: [PATCH 281/493] NF: density functions for randomized LASSO --- selectiveInference/src/randomized_lasso.c | 201 ++++++++++++++++++++++ selectiveInference/src/randomized_lasso.h | 42 +++++ 2 files changed, 243 insertions(+) create mode 100644 selectiveInference/src/randomized_lasso.c create mode 100644 selectiveInference/src/randomized_lasso.h diff --git a/selectiveInference/src/randomized_lasso.c b/selectiveInference/src/randomized_lasso.c new file mode 100644 index 0000000..ac55cf4 --- /dev/null +++ b/selectiveInference/src/randomized_lasso.c @@ -0,0 +1,201 @@ +#include // for fabs + +// Augmented density for randomized LASSO after +// Gaussian randomization + +// Described in https://arxiv.org/abs/1609.05609 + +// Gaussian is product of IID N(0, noise_scale^2) density +// Evaluated at A_D D + A_O O + h + +// Laplace is product of IID Laplace with scale noise_scale +// Also evaluated at A_D D + A_O O + h + +double log_density_gaussian(double noise_scale, // Scale of randomization + int ndim, // Number of features -- "p" + int ninternal, // Dimension of internal data representation often 1 + int noptimization, // Dimension of optimization variables -- "p" + double *internal_linear, // A_D -- linear part for data + double *internal_state, // D -- data state + double *optimization_linear, // A_O -- linear part for optimization variables + double *optimization_state, // O -- optimization state + double *offset) // h -- offset in affine transform -- "p" dimensional +{ + int irow, icol; + double denom = 2 * noise_scale * noise_scale; + double value = 0; + double reconstruction = 0; + double *offset_ptr; + double *internal_linear_ptr; + double *internal_state_ptr; + double *optimization_linear_ptr; + double *optimization_state_ptr; + + for (irow=0; irow Date: Wed, 25 Oct 2017 16:35:52 -0700 Subject: [PATCH 282/493] T to TRUE --- selectiveInference/R/funs.fixed.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index be314af..66a3088 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -6,7 +6,7 @@ fixedLassoInf <- function(x, y, beta, lambda, family=c("gaussian","binomial","cox"), intercept=TRUE, add.targets=NULL, status=NULL, sigma=NULL, alpha=0.1, - type=c("partial","full"), tol.beta=1e-5, tol.kkt=0.1, + type=c("partial", "full"), tol.beta=1e-5, tol.kkt=0.1, gridrange=c(-100,100), bits=NULL, verbose=FALSE, linesearch.try=10) { @@ -150,7 +150,7 @@ fixedLassoInf <- function(x, y, beta, ci = tailarea = matrix(0,k,2) if (type=="full" & p > n) { - if (intercept == T) { + if (intercept == TRUE) { pp=p+1 Xint <- cbind(rep(1,n),x) # indices of selected predictors From b23b189f380ae04ee7a5de0728e55110f46eee42 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 26 Oct 2017 13:08:05 -0700 Subject: [PATCH 283/493] updated wide C code -- can now do ridge as well as variable weights -- ready to solve randomized LASSO --- selectiveInference/R/funs.fixed.R | 40 +++- selectiveInference/src/Rcpp-debias.cpp | 35 +++- selectiveInference/src/debias.h | 22 ++- selectiveInference/src/quadratic_program.c | 108 +++++++---- .../src/quadratic_program_wide.c | 176 ++++++++++++------ selectiveInference/src/randomized_lasso.c | 13 -- 6 files changed, 270 insertions(+), 124 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 66a3088..aaceaaa 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -189,8 +189,10 @@ fixedLassoInf <- function(x, y, beta, } M <- (((htheta%*%t(Xordered))+ithetasigma%*%FS%*%hsigmaSinv%*%t(XS))/n) + # vector which is offset for testing debiased beta's null_value <- (((ithetasigma%*%FS%*%hsigmaSinv)%*%sign(hbetaS))*lambda/n) + if (intercept == T) { M = M[-1,] # remove intercept row null_value = null_value[-1] # remove intercept element @@ -238,12 +240,23 @@ fixedLassoInf <- function(x, y, beta, tailarea[j,] = a$tailarea } - out = list(type=type,lambda=lambda,pv=pv,ci=ci, - tailarea=tailarea,vlo=vlo,vup=vup,vmat=vmat,y=y, - vars=vars,sign=sign_vars,sigma=sigma,alpha=alpha, - sd=sigma*sqrt(rowSums(vmat^2)), - coef0=vmat%*%y, - call=this.call) + out = list(type=type, + lambda=lambda, + pv=pv, + ci=ci, + tailarea=tailarea, + vlo=vlo, + vup=vup, + vmat=vmat, + y=y, + vars=vars, + sign=sign_vars, + sigma=sigma, + alpha=alpha, + sd=sigma*sqrt(rowSums(vmat^2)), + coef0=vmat%*%y, + call=this.call) + class(out) = "fixedLassoInf" return(out) } @@ -374,7 +387,7 @@ debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n dep row, mu, linesearch=TRUE, # do a linesearch? - scaling_factor=1.2, # multiplicative factor for linesearch + scaling_factor=1.5, # multiplicative factor for linesearch max_active=NULL, # how big can active set get? max_try=10, # how many steps in linesearch? warn_kkt=FALSE, # warn if KKT does not seem to be satisfied? @@ -420,11 +433,15 @@ debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n dep nactive, kkt_tol, objective_tol, - max_active) + max_active, + FALSE, # objective_stop + FALSE, # kkt_stop + TRUE) # param_stop } else { Xsoln = rep(0, nrow(Xinfo)) result = solve_QP_wide(Xinfo, # this is a design matrix - mu, + rep(mu, p), # vector of Lagrange multipliers + 0, # ridge_term max_iter, soln, linear_func, @@ -434,7 +451,10 @@ debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n dep nactive, kkt_tol, objective_tol, - max_active) + max_active, + FALSE, # objective_stop + FALSE, # kkt_stop + TRUE) # param_stop } diff --git a/selectiveInference/src/Rcpp-debias.cpp b/selectiveInference/src/Rcpp-debias.cpp index ce8bb15..24bbae8 100644 --- a/selectiveInference/src/Rcpp-debias.cpp +++ b/selectiveInference/src/Rcpp-debias.cpp @@ -15,7 +15,10 @@ Rcpp::List solve_QP(Rcpp::NumericMatrix Sigma, Rcpp::IntegerVector nactive, double kkt_tol, double objective_tol, - int max_active + int max_active, + int objective_stop, + int kkt_stop, + int param_stop ) { int nrow = Sigma.nrow(); // number of features @@ -28,6 +31,8 @@ Rcpp::List solve_QP(Rcpp::NumericMatrix Sigma, Rcpp::NumericVector Sigma_diag(nrow); double *sigma_diag_p = Sigma_diag.begin(); + Rcpp::NumericVector theta_old(nrow); + for (irow=0; irow= max_active); diff --git a/selectiveInference/src/debias.h b/selectiveInference/src/debias.h index ebcbc93..052af7a 100644 --- a/selectiveInference/src/debias.h +++ b/selectiveInference/src/debias.h @@ -9,13 +9,17 @@ int solve_qp(double *nndef_ptr, /* A non-negative definite matrix */ double *gradient_ptr, /* nndef times theta */ int *ever_active_ptr, /* Ever active set: 1-based */ int *nactive_ptr, /* Size of ever active set */ - int nrow, /* How many rows in nndef */ + int nfeature, /* How many features in nndef */ double bound, /* feasibility parameter */ double *theta, /* current value */ + double *theta_old, /* previous value */ int maxiter, /* max number of iterations */ double kkt_tol, /* precision for checking KKT conditions */ double objective_tol, /* precision for checking relative decrease in objective value */ - int max_active); /* Upper limit for size of active set -- otherwise break */ + int max_active, /* Upper limit for size of active set -- otherwise break */ + int objective_stop, /* Break based on convergence of objective value? */ + int kkt_stop, /* Break based on KKT? */ + int param_stop); /* Break based on parameter convergence? */ int check_KKT_qp(double *theta, /* current theta */ double *gradient_ptr, /* nndef times theta + linear_func */ @@ -33,12 +37,17 @@ int solve_wide(double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX int *nactive_ptr, /* Size of ever active set */ int ncase, /* How many rows in X */ int nfeature, /* How many columns in X */ - double bound, /* feasibility parameter */ + double *bound_ptr, /* Lagrange multipliers */ + double ridge_term, /* Ridge / ENet term */ double *theta_ptr, /* current value */ + double *theta_old_ptr, /* previous value */ int maxiter, /* max number of iterations */ double kkt_tol, /* precision for checking KKT conditions */ double objective_tol, /* precision for checking relative decrease in objective value */ - int max_active); /* Upper limit for size of active set -- otherwise break */ + int max_active, /* Upper limit for size of active set -- otherwise break */ + int objective_stop, /* Break based on convergence of objective value? */ + int kkt_stop, /* Break based on KKT? */ + int param_stop); /* Break based on parameter convergence? */ int check_KKT_wide(double *theta_ptr, /* current theta */ double *gradient_ptr, /* X^TX/ncase times theta + linear_func*/ @@ -48,8 +57,9 @@ int check_KKT_wide(double *theta_ptr, /* current theta */ int *need_update_ptr, /* Which coordinates need to be updated? */ int nfeature, /* how many columns in X */ int ncase, /* how many rows in X */ - double bound, /* Lagrange multipler for \ell_1 */ - double tol); /* precision for checking KKT conditions */ + double *bound_ptr, /* Lagrange multiplers for \ell_1 */ + double ridge_term, /* Ridge / ENet term */ + double tol); /* precision for checking KKT conditions */ void update_gradient_wide(double *gradient_ptr, /* X^TX/ncase times theta + linear_func */ double *X_theta_ptr, /* Current fitted values */ diff --git a/selectiveInference/src/quadratic_program.c b/selectiveInference/src/quadratic_program.c index d9bd017..1bc7fa3 100644 --- a/selectiveInference/src/quadratic_program.c +++ b/selectiveInference/src/quadratic_program.c @@ -92,19 +92,19 @@ int update_ever_active_qp(int coord, int check_KKT_qp(double *theta_ptr, /* current theta */ double *gradient_ptr, /* nndef times theta + linear_func */ - int nrow, /* how many rows in nndef */ + int nfeature, /* how many features in nndef */ double bound, /* Lagrange multipler for \ell_1 */ double tol) /* precision for checking KKT conditions */ { // First check inactive - int irow; + int ifeature; double *theta_ptr_tmp, *gradient_ptr_tmp; double gradient; - for (irow=0; irow 1.e-6 * (fabs(value) + fabs(old_value))) { delta = value - old_value; - nndef_ptr_tmp = ((double *) nndef_ptr + coord * nrow); + nndef_ptr_tmp = ((double *) nndef_ptr + coord * nfeature); gradient_ptr_tmp = ((double *) gradient_ptr); - for (icol=0; icol= max_active) { @@ -380,12 +417,12 @@ int solve_qp(double *nndef_ptr, /* A non-negative definite matrix */ // Check relative decrease of objective - if (check_objective) { + if (objective_stop) { new_value = objective_qp(nndef_ptr, linear_func_ptr, ever_active_ptr, nactive_ptr, - nrow, + nfeature, bound, theta); @@ -394,6 +431,7 @@ int solve_qp(double *nndef_ptr, /* A non-negative definite matrix */ } old_value = new_value; } + } return(iter); } diff --git a/selectiveInference/src/quadratic_program_wide.c b/selectiveInference/src/quadratic_program_wide.c index 3beb578..c6cb9f3 100644 --- a/selectiveInference/src/quadratic_program_wide.c +++ b/selectiveInference/src/quadratic_program_wide.c @@ -4,7 +4,7 @@ // Solves a dual version of problem (4) of https://arxiv.org/pdf/1306.3171.pdf -// Dual problem: \text{min}_{\theta} 1/2 \|X\theta\|^2 - l^T\theta + \mu \|\theta\|_1 +// Dual problem: \text{min}_{\theta} 1/2 \|X\theta\|^2 - l^T\theta + \mu \|\theta\|_1 + \frac{\epsilon}{2} \|\theta\|^2_2 // where l is `linear_func` below // This is the "negative" of the problem as in https://gist.github.com/jonathan-taylor/07774d209173f8bc4e42aa37712339bf @@ -19,11 +19,13 @@ double objective_wide(double *X_theta_ptr, /* Fitted values */ int *nactive_ptr, /* Size of ever active set */ int ncase, /* how many rows in X */ int nfeature, /* how many columns in X */ - double bound, /* Lagrange multipler for \ell_1 */ + double *bound_ptr, /* Lagrange multiplers for \ell_1 */ + double ridge_term, /* Ridge / ENet term */ double *theta_ptr) /* current value */ { int icase, iactive; double value = 0; + double *bound_ptr_tmp; double *X_theta_ptr_tmp = X_theta_ptr; double *linear_func_ptr_tmp = linear_func_ptr; double *theta_ptr_tmp; @@ -55,8 +57,12 @@ double objective_wide(double *X_theta_ptr, /* Fitted values */ // The \ell_1 term - value += bound * fabs((*theta_ptr_tmp)); + bound_ptr_tmp = ((double *) bound_ptr + active_feature); + value += (*bound_ptr_tmp) * fabs((*theta_ptr_tmp)); + // The ridge term + + value += 0.5 * ridge_term * (*theta_ptr_tmp) * (*theta_ptr_tmp); } return(value); @@ -167,34 +173,39 @@ int check_KKT_wide(double *theta_ptr, /* current theta */ int *need_update_ptr, /* Which coordinates need to be updated? */ int nfeature, /* how many columns in X */ int ncase, /* how many rows in X */ - double bound, /* Lagrange multipler for \ell_1 */ + double *bound_ptr, /* Lagrange multiplers for \ell_1 */ + double ridge_term, /* Ridge / ENet term */ double tol) /* precision for checking KKT conditions */ { // First check inactive int ifeature; double *theta_ptr_tmp; + double *bound_ptr_tmp; + double bound; double gradient; for (ifeature=0; ifeature 0) && (fabs(gradient + bound) > tol * bound)) { + if ((*theta_ptr_tmp != 0) && (bound != 0)) { // these coordinates of gradients should be equal to -bound + + if ((*theta_ptr_tmp > 0) && (fabs(gradient + ridge_term * (*theta_ptr_tmp) + bound) > tol * bound)) { return(0); } - else if ((*theta_ptr_tmp < 0) && (fabs(gradient - bound) > tol * bound)) { + else if ((*theta_ptr_tmp < 0) && (fabs(gradient + ridge_term * (*theta_ptr_tmp) - bound) > tol * bound)) { return(0); } - + } - else { + else if (bound != 0) { if (fabs(gradient) > (1. + tol) * bound) { return(0); } @@ -214,13 +225,16 @@ int check_KKT_wide_active(int *ever_active_ptr, /* Ever active set: 0- int *need_update_ptr, /* Which coordinates need to be updated? */ int nfeature, /* how many columns in X */ int ncase, /* how many rows in X */ - double bound, /* Lagrange multipler for \ell_1 */ + double *bound_ptr, /* Lagrange multipliers for \ell_1 */ + double ridge_term, /* Ridge / ENet term */ double tol) /* precision for checking KKT conditions */ { // First check inactive int iactive; double *theta_ptr_tmp; + double *bound_ptr_tmp; + double bound; double gradient; int nactive = *nactive_ptr; int active_feature; @@ -230,23 +244,26 @@ int check_KKT_wide_active(int *ever_active_ptr, /* Ever active set: 0- active_feature_ptr = ((int *) ever_active_ptr + iactive); active_feature = *active_feature_ptr - 1; // Ever-active is 1-based + theta_ptr_tmp = ((double *) theta_ptr + active_feature); + bound_ptr_tmp = ((double *) bound_ptr + active_feature); + bound = *bound_ptr_tmp; // Compute this coordinate of the gradient gradient = compute_gradient_coord(gradient_ptr, X_theta_ptr, X_ptr, linear_func_ptr, need_update_ptr, active_feature, ncase); - if (*theta_ptr_tmp != 0) { // these coordinates of gradients should be equal to -bound + if ((*theta_ptr_tmp != 0) && (bound != 0)) { // these coordinates of gradients should be equal to -bound - if ((*theta_ptr_tmp > 0) && (fabs(gradient + bound) > tol * bound)) { + if ((*theta_ptr_tmp > 0) && (fabs(gradient + ridge_term * (*theta_ptr_tmp) + bound) > tol * bound)) { return(0); } - else if ((*theta_ptr_tmp < 0) && (fabs(gradient - bound) > tol * bound)) { + else if ((*theta_ptr_tmp < 0) && (fabs(gradient + ridge_term * (*theta_ptr_tmp) - bound) > tol * bound)) { return(0); } } - else { + else if (bound != 0) { if (fabs(gradient) > (1. + tol) * bound) { return(0); } @@ -266,7 +283,8 @@ double update_one_coord_wide(double *X_ptr, /* A design matrix*/ int *need_update_ptr, /* Whether a gradient coordinate needs update or not */ int ncase, /* How many rows in X */ int nfeature, /* How many rows in X */ - double bound, /* feasibility parameter */ + double *bound_ptr, /* Lagrange multipliers */ + double ridge_term, /* Ridge / ENet term */ double *theta_ptr, /* current value */ int coord, /* which coordinate to update: 0-based */ int is_active) /* Is this coord in ever_active */ @@ -280,6 +298,8 @@ double update_one_coord_wide(double *X_ptr, /* A design matrix*/ double *X_theta_ptr_tmp; int *need_update_ptr_tmp; double *theta_ptr_tmp; + double *bound_ptr_tmp; + double bound; int ifeature, icase; double *diagonal_ptr = ((double *) nndef_diag_ptr + coord); @@ -290,6 +310,9 @@ double update_one_coord_wide(double *X_ptr, /* A design matrix*/ theta_ptr_tmp = ((double *) theta_ptr + coord); old_value = *theta_ptr_tmp; + bound_ptr_tmp = ((double *) bound_ptr + coord); + bound = *bound_ptr_tmp; + // The coord entry of gradient_ptr term has a diagonal term in it: // (X^TX)[coord, coord] * theta[coord] / ncase // This removes it. @@ -298,17 +321,17 @@ double update_one_coord_wide(double *X_ptr, /* A design matrix*/ // Now soft-threshold the coord entry of theta - // Objective is t \mapsto q/2 * t^2 + l * t + bound |t| - // with q=diagonal_entry and l=linear_term + // Objective is t \mapsto (q+eps)/2 * t^2 + l * t + bound |t| + + // with q=diagonal_entry and l=linear_term and eps=ridge_Term // With a negative linear term, solution should be // positive if (linear_term < -bound) { - value = (-linear_term - bound) / diagonal_entry; + value = (-linear_term - bound) / (diagonal_entry + ridge_term); } else if (linear_term > bound) { - value = -(linear_term - bound) / diagonal_entry; + value = -(linear_term - bound) / (diagonal_entry + ridge_term); } // Add to active set if necessary @@ -363,24 +386,36 @@ int solve_wide(double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX int *nactive_ptr, /* Size of ever active set */ int ncase, /* How many rows in X */ int nfeature, /* How many columns in X */ - double bound, /* feasibility parameter */ + double *bound_ptr, /* Lagrange multipliers */ + double ridge_term, /* Ridge / ENet term */ double *theta_ptr, /* current value */ + double *theta_old_ptr, /* previous value */ int maxiter, /* max number of iterations */ double kkt_tol, /* precision for checking KKT conditions */ double objective_tol, /* precision for checking relative decrease in objective value */ - int max_active) /* Upper limit for size of active set -- otherwise break */ + int max_active, /* Upper limit for size of active set -- otherwise break */ + int objective_stop, /* Break based on convergence of objective value? */ + int kkt_stop, /* Break based on KKT? */ + int param_stop) /* Break based on parameter convergence? */ { int iter = 0; + int iter_old = 1; int ifeature = 0; int iactive = 0; int *active_ptr; - int check_objective = 1; + double old_value, new_value; int niter_active = 5; int iter_active; - if (check_objective) { + double norm_diff = 1.; + double norm_last = 1.; + double delta; + double threshold = 1.e-2; + double *theta_ptr_tmp, *theta_old_ptr_tmp; + + if (objective_stop) { old_value = objective_wide(X_theta_ptr, linear_func_ptr, @@ -388,8 +423,10 @@ int solve_wide(double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX nactive_ptr, ncase, nfeature, - bound, + bound_ptr, + ridge_term, theta_ptr); + new_value = old_value; } @@ -412,7 +449,8 @@ int solve_wide(double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX need_update_ptr, ncase, nfeature, - bound, + bound_ptr, + ridge_term, theta_ptr, *active_ptr - 1, // Ever-active is 1-based 1); @@ -431,7 +469,8 @@ int solve_wide(double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX need_update_ptr, nfeature, ncase, - bound, + bound_ptr, + ridge_term, kkt_tol) == 1) { break; } @@ -440,17 +479,20 @@ int solve_wide(double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX // Check KKT - if (check_KKT_wide(theta_ptr, - gradient_ptr, - X_theta_ptr, - X_ptr, - linear_func_ptr, - need_update_ptr, - nfeature, - ncase, - bound, - kkt_tol) == 1) { - break; + if (kkt_stop) { + if (check_KKT_wide(theta_ptr, + gradient_ptr, + X_theta_ptr, + X_ptr, + linear_func_ptr, + need_update_ptr, + nfeature, + ncase, + bound_ptr, + ridge_term, + kkt_tol) == 1) { + break; + } } // Update all variables @@ -467,7 +509,8 @@ int solve_wide(double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX need_update_ptr, ncase, nfeature, - bound, + bound_ptr, + ridge_term, theta_ptr, ifeature, 0); @@ -475,19 +518,45 @@ int solve_wide(double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX // Check KKT - if (check_KKT_wide(theta_ptr, - gradient_ptr, - X_theta_ptr, - X_ptr, - linear_func_ptr, - need_update_ptr, - nfeature, - ncase, - bound, - kkt_tol) == 1) { - break; + if (kkt_stop) { + if (check_KKT_wide(theta_ptr, + gradient_ptr, + X_theta_ptr, + X_ptr, + linear_func_ptr, + need_update_ptr, + nfeature, + ncase, + bound_ptr, + ridge_term, + kkt_tol) == 1) { + break; + } + } + + // Check based on norm -- from Adel's debiasing code + + if (param_stop) { + if (iter == 2 * iter_old) { + iter_old = iter; + norm_diff = 0; + norm_last = 0; + for (ifeature=0; ifeature= max_active) { @@ -496,14 +565,15 @@ int solve_wide(double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX // Check relative decrease of objective - if (check_objective) { + if (objective_stop) { new_value = objective_wide(X_theta_ptr, linear_func_ptr, ever_active_ptr, nactive_ptr, ncase, nfeature, - bound, + bound_ptr, + ridge_term, theta_ptr); if ((fabs(old_value - new_value) < objective_tol * fabs(new_value)) && (iter > 0)) { diff --git a/selectiveInference/src/randomized_lasso.c b/selectiveInference/src/randomized_lasso.c index ac55cf4..123c81d 100644 --- a/selectiveInference/src/randomized_lasso.c +++ b/selectiveInference/src/randomized_lasso.c @@ -126,8 +126,6 @@ double log_density_gaussian_conditional(double noise_scale, // Scale double denom = 2 * noise_scale * noise_scale; double reconstruction = 0; double *offset_ptr; - double *internal_linear_ptr; - double *internal_state_ptr; double *optimization_linear_ptr; double *optimization_state_ptr; @@ -164,8 +162,6 @@ double log_density_laplace_conditional(double noise_scale, // Scale double value = 0; double reconstruction = 0; double *offset_ptr; - double *internal_linear_ptr; - double *internal_state_ptr; double *optimization_linear_ptr; double *optimization_state_ptr; @@ -176,15 +172,6 @@ double log_density_laplace_conditional(double noise_scale, // Scale offset_ptr = ((double *) offset + irow); reconstruction = *offset_ptr; - // Internal (i.e. data) contribution - for (icol=0; icol Date: Thu, 26 Oct 2017 13:08:37 -0700 Subject: [PATCH 284/493] removing machine generated files --- selectiveInference/R/RcppExports.R | 19 ------ selectiveInference/src/RcppExports.cpp | 92 -------------------------- 2 files changed, 111 deletions(-) delete mode 100644 selectiveInference/R/RcppExports.R delete mode 100644 selectiveInference/src/RcppExports.cpp diff --git a/selectiveInference/R/RcppExports.R b/selectiveInference/R/RcppExports.R deleted file mode 100644 index f5ebee4..0000000 --- a/selectiveInference/R/RcppExports.R +++ /dev/null @@ -1,19 +0,0 @@ -# Generated by using Rcpp::compileAttributes() -> do not edit by hand -# Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 - -solve_QP <- function(Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active) { - .Call('_selectiveInference_solve_QP', PACKAGE = 'selectiveInference', Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active) -} - -solve_QP_wide <- function(X, bound, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, max_active) { - .Call('_selectiveInference_solve_QP_wide', PACKAGE = 'selectiveInference', X, bound, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, max_active) -} - -update1_ <- function(Q2, w, m, k) { - .Call('_selectiveInference_update1_', PACKAGE = 'selectiveInference', Q2, w, m, k) -} - -downdate1_ <- function(Q1, R, j0, m, n) { - .Call('_selectiveInference_downdate1_', PACKAGE = 'selectiveInference', Q1, R, j0, m, n) -} - diff --git a/selectiveInference/src/RcppExports.cpp b/selectiveInference/src/RcppExports.cpp deleted file mode 100644 index 02a7741..0000000 --- a/selectiveInference/src/RcppExports.cpp +++ /dev/null @@ -1,92 +0,0 @@ -// Generated by using Rcpp::compileAttributes() -> do not edit by hand -// Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 - -#include - -using namespace Rcpp; - -// solve_QP -Rcpp::List solve_QP(Rcpp::NumericMatrix Sigma, double bound, int maxiter, Rcpp::NumericVector theta, Rcpp::NumericVector linear_func, Rcpp::NumericVector gradient, Rcpp::IntegerVector ever_active, Rcpp::IntegerVector nactive, double kkt_tol, double objective_tol, int max_active); -RcppExport SEXP _selectiveInference_solve_QP(SEXP SigmaSEXP, SEXP boundSEXP, SEXP maxiterSEXP, SEXP thetaSEXP, SEXP linear_funcSEXP, SEXP gradientSEXP, SEXP ever_activeSEXP, SEXP nactiveSEXP, SEXP kkt_tolSEXP, SEXP objective_tolSEXP, SEXP max_activeSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type Sigma(SigmaSEXP); - Rcpp::traits::input_parameter< double >::type bound(boundSEXP); - Rcpp::traits::input_parameter< int >::type maxiter(maxiterSEXP); - Rcpp::traits::input_parameter< Rcpp::NumericVector >::type theta(thetaSEXP); - Rcpp::traits::input_parameter< Rcpp::NumericVector >::type linear_func(linear_funcSEXP); - Rcpp::traits::input_parameter< Rcpp::NumericVector >::type gradient(gradientSEXP); - Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type ever_active(ever_activeSEXP); - Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type nactive(nactiveSEXP); - Rcpp::traits::input_parameter< double >::type kkt_tol(kkt_tolSEXP); - Rcpp::traits::input_parameter< double >::type objective_tol(objective_tolSEXP); - Rcpp::traits::input_parameter< int >::type max_active(max_activeSEXP); - rcpp_result_gen = Rcpp::wrap(solve_QP(Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active)); - return rcpp_result_gen; -END_RCPP -} -// solve_QP_wide -Rcpp::List solve_QP_wide(Rcpp::NumericMatrix X, double bound, int maxiter, Rcpp::NumericVector theta, Rcpp::NumericVector linear_func, Rcpp::NumericVector gradient, Rcpp::NumericVector X_theta, Rcpp::IntegerVector ever_active, Rcpp::IntegerVector nactive, double kkt_tol, double objective_tol, int max_active); -RcppExport SEXP _selectiveInference_solve_QP_wide(SEXP XSEXP, SEXP boundSEXP, SEXP maxiterSEXP, SEXP thetaSEXP, SEXP linear_funcSEXP, SEXP gradientSEXP, SEXP X_thetaSEXP, SEXP ever_activeSEXP, SEXP nactiveSEXP, SEXP kkt_tolSEXP, SEXP objective_tolSEXP, SEXP max_activeSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type X(XSEXP); - Rcpp::traits::input_parameter< double >::type bound(boundSEXP); - Rcpp::traits::input_parameter< int >::type maxiter(maxiterSEXP); - Rcpp::traits::input_parameter< Rcpp::NumericVector >::type theta(thetaSEXP); - Rcpp::traits::input_parameter< Rcpp::NumericVector >::type linear_func(linear_funcSEXP); - Rcpp::traits::input_parameter< Rcpp::NumericVector >::type gradient(gradientSEXP); - Rcpp::traits::input_parameter< Rcpp::NumericVector >::type X_theta(X_thetaSEXP); - Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type ever_active(ever_activeSEXP); - Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type nactive(nactiveSEXP); - Rcpp::traits::input_parameter< double >::type kkt_tol(kkt_tolSEXP); - Rcpp::traits::input_parameter< double >::type objective_tol(objective_tolSEXP); - Rcpp::traits::input_parameter< int >::type max_active(max_activeSEXP); - rcpp_result_gen = Rcpp::wrap(solve_QP_wide(X, bound, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, max_active)); - return rcpp_result_gen; -END_RCPP -} -// update1_ -Rcpp::List update1_(Rcpp::NumericMatrix Q2, Rcpp::NumericVector w, int m, int k); -RcppExport SEXP _selectiveInference_update1_(SEXP Q2SEXP, SEXP wSEXP, SEXP mSEXP, SEXP kSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type Q2(Q2SEXP); - Rcpp::traits::input_parameter< Rcpp::NumericVector >::type w(wSEXP); - Rcpp::traits::input_parameter< int >::type m(mSEXP); - Rcpp::traits::input_parameter< int >::type k(kSEXP); - rcpp_result_gen = Rcpp::wrap(update1_(Q2, w, m, k)); - return rcpp_result_gen; -END_RCPP -} -// downdate1_ -Rcpp::List downdate1_(Rcpp::NumericMatrix Q1, Rcpp::NumericMatrix R, int j0, int m, int n); -RcppExport SEXP _selectiveInference_downdate1_(SEXP Q1SEXP, SEXP RSEXP, SEXP j0SEXP, SEXP mSEXP, SEXP nSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type Q1(Q1SEXP); - Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type R(RSEXP); - Rcpp::traits::input_parameter< int >::type j0(j0SEXP); - Rcpp::traits::input_parameter< int >::type m(mSEXP); - Rcpp::traits::input_parameter< int >::type n(nSEXP); - rcpp_result_gen = Rcpp::wrap(downdate1_(Q1, R, j0, m, n)); - return rcpp_result_gen; -END_RCPP -} - -static const R_CallMethodDef CallEntries[] = { - {"_selectiveInference_solve_QP", (DL_FUNC) &_selectiveInference_solve_QP, 11}, - {"_selectiveInference_solve_QP_wide", (DL_FUNC) &_selectiveInference_solve_QP_wide, 12}, - {"_selectiveInference_update1_", (DL_FUNC) &_selectiveInference_update1_, 4}, - {"_selectiveInference_downdate1_", (DL_FUNC) &_selectiveInference_downdate1_, 5}, - {NULL, NULL, 0} -}; - -RcppExport void R_init_selectiveInference(DllInfo *dll) { - R_registerRoutines(dll, NULL, CallEntries, NULL, NULL); - R_useDynamicSymbols(dll, FALSE); -} From 2c0e3d60e883620ee6b2ba970c719dc00d08ee6c Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 26 Oct 2017 14:30:59 -0700 Subject: [PATCH 285/493] WIP: function to fit randomized lasso --- selectiveInference/R/funs.randomized.R | 64 ++++++++++++++++++++++++++ tests/test_randomized.R | 14 ++++++ 2 files changed, 78 insertions(+) create mode 100644 selectiveInference/R/funs.randomized.R create mode 100644 tests/test_randomized.R diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R new file mode 100644 index 0000000..01e6aa4 --- /dev/null +++ b/selectiveInference/R/funs.randomized.R @@ -0,0 +1,64 @@ +# Functions to fit and "infer" about parameters in the +# randomized LASSO +# +# min 1/2 || y - \beta_0 - X \beta ||_2^2 + \lambda || \beta ||_1 - \omega^T\beta + \frac{\epsilon}{2} \|\beta\|^2_2 + +fit_randomized_lasso = function(X, + y, + lam, + noise_scale, + ridge_term, + noise_type=c('gaussian', 'laplace'), + max_iter=100, # how many iterations for each optimization problem + kkt_tol=1.e-4, # tolerance for the KKT conditions + objective_tol=1.e-8, # tolerance for relative decrease in objective + objective_stop=FALSE, + kkt_stop=TRUE, + param_stop=TRUE) +{ + + n = nrow(X); p = ncol(X) + + noise_type = match.arg(noise_type) + + if (noise_type == 'gaussian') { + D = Norm(mean=0, sd=noise_scale) + } + else if (noise_type == 'laplace') { + D = DExp(rate = 1 / noise_scale) # D is a Laplace distribution with rate = 1. + } + perturb_ = distr::r(D)(p) + + lam = as.numeric(lam) + if (length(lam) == 1) { + lam = rep(lam, p) + } + if (length(lam) != p) { + stop("Lagrange parameter should be single float or of length ncol(X)") + } + + soln = rep(0, p) + Xsoln = rep(0, n) + linear_func = (- t(X) %*% y - perturb_) + gradient = 1. * linear_func + ever_active = rep(0, p) + nactive = as.integer(0) + + result = solve_QP_wide(X, # design matrix + lam, # vector of Lagrange multipliers + ridge_term / n, # ridge_term + max_iter, + soln, + linear_func, + gradient, + Xsoln, + ever_active, + nactive, + kkt_tol, + objective_tol, + p, + objective_stop, # objective_stop + kkt_stop, # kkt_stop + param_stop) # param_stop + return(result) +} diff --git a/tests/test_randomized.R b/tests/test_randomized.R new file mode 100644 index 0000000..e4e35a1 --- /dev/null +++ b/tests/test_randomized.R @@ -0,0 +1,14 @@ +library(selectiveInference) + +test = function() { + + n = 100; p = 50 + X = matrix(rnorm(n * p), n, p) + y = rnorm(n) + lam = 20 / sqrt(n) + noise_scale = 0.01 * sqrt(n) + ridge_term = .1 / sqrt(n) + fit_randomized_lasso(X, y, lam, noise_scale, ridge_term) +} + +print(test()) From 2439d7318bcf9bec47be22766e1e35192abcf31f Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 26 Oct 2017 21:36:18 -0700 Subject: [PATCH 286/493] check that solution is same as old code -- currently failing --- tests/test_debiasing.R | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 tests/test_debiasing.R diff --git a/tests/test_debiasing.R b/tests/test_debiasing.R new file mode 100644 index 0000000..27bd621 --- /dev/null +++ b/tests/test_debiasing.R @@ -0,0 +1,27 @@ +library(selectiveInference) +source('oldcode.R') + +n = 500; p = 50 + +X = matrix(rnorm(n * p), n, p) +S = t(X) %*% X / n + +mu = 7.791408e-02 + +A1 = debiasingMatrix(S, FALSE, n, 1:5, mu=mu, max_iter=1000) +A2 = debiasingMatrix(S / n, FALSE, n, 1:5, mu=mu, max_iter=1000) + +B1 = debiasingMatrix(X, TRUE, n, 1:5, mu=mu, max_iter=1000) +B2 = debiasingMatrix(X / sqrt(n), TRUE, n, 1:5, mu=mu, max_iter=1000) + +C1 = InverseLinfty(S, n, mu=mu, maxiter=1000)[1:5,] +C2 = InverseLinfty(S / n, n, mu=mu, maxiter=1000)[1:5,] + +par(mfrow=c(2,3)) +plot(A1[1,], C1[1,]) +plot(A1[1,], B1[1,]) +plot(B1[1,], C1[1,]) + +plot(A1[1,], A2[1,]) +plot(B1[1,], B2[1,]) +plot(C1[1,], C2[1,]) From 83b04268b9f39749b37444914e227c63b87fb220 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 26 Oct 2017 22:17:39 -0700 Subject: [PATCH 287/493] bug found in qp solver -- look at tests/test_QP.R --- selectiveInference/NAMESPACE | 2 +- selectiveInference/R/funs.fixed.R | 5 + selectiveInference/R/funs.randomized.R | 2 + selectiveInference/src/Rcpp-debias.cpp | 4 + selectiveInference/src/debias.h | 2 + selectiveInference/src/quadratic_program.c | 4 +- .../src/quadratic_program_wide.c | 6 +- tests/test_QP.R | 15 ++ tests/test_debiasing.R | 172 +++++++++++++++++- 9 files changed, 204 insertions(+), 8 deletions(-) create mode 100644 tests/test_QP.R diff --git a/selectiveInference/NAMESPACE b/selectiveInference/NAMESPACE index d72d56a..c7d08a1 100644 --- a/selectiveInference/NAMESPACE +++ b/selectiveInference/NAMESPACE @@ -44,4 +44,4 @@ importFrom("stats", dnorm, lsfit, pexp, pnorm, predict, importFrom("stats", "coef", "df", "lm", "pf") importFrom("stats", "glm", "residuals", "vcov") importFrom("Rcpp", "sourceCpp") - +importFrom("distr", "Norm", "DExp") diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index aaceaaa..5490316 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -327,6 +327,7 @@ debiasingMatrix = function(Xinfo, # could be X or t(X) %*% X / n d warn_kkt=FALSE, # warn if KKT does not seem to be satisfied? max_iter=100, # how many iterations for each optimization problem kkt_tol=1.e-4, # tolerance for the KKT conditions + parameter_tol=1.e-4, # tolerance for relative convergence of parameter objective_tol=1.e-8 # tolerance for relative decrease in objective ) { @@ -363,6 +364,7 @@ debiasingMatrix = function(Xinfo, # could be X or t(X) %*% X / n d warn_kkt=FALSE, max_iter=max_iter, kkt_tol=kkt_tol, + parameter_tol=parameter_tol, objective_tol=objective_tol) if (warn_kkt && (!output$kkt_check)) { @@ -393,6 +395,7 @@ debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n dep warn_kkt=FALSE, # warn if KKT does not seem to be satisfied? max_iter=100, # how many iterations for each optimization problem kkt_tol=1.e-4, # tolerance for the KKT conditions + parameter_tol=1.e-4, # tolerance for relative convergence of parameter objective_tol=1.e-8 # tolerance for relative decrease in objective ) { @@ -433,6 +436,7 @@ debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n dep nactive, kkt_tol, objective_tol, + parameter_tol, max_active, FALSE, # objective_stop FALSE, # kkt_stop @@ -451,6 +455,7 @@ debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n dep nactive, kkt_tol, objective_tol, + parameter_tol, max_active, FALSE, # objective_stop FALSE, # kkt_stop diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 01e6aa4..25a0b95 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -11,6 +11,7 @@ fit_randomized_lasso = function(X, noise_type=c('gaussian', 'laplace'), max_iter=100, # how many iterations for each optimization problem kkt_tol=1.e-4, # tolerance for the KKT conditions + parameter_tol=1.e-8, # tolerance for relative convergence of parameter objective_tol=1.e-8, # tolerance for relative decrease in objective objective_stop=FALSE, kkt_stop=TRUE, @@ -56,6 +57,7 @@ fit_randomized_lasso = function(X, nactive, kkt_tol, objective_tol, + parameter_tol, p, objective_stop, # objective_stop kkt_stop, # kkt_stop diff --git a/selectiveInference/src/Rcpp-debias.cpp b/selectiveInference/src/Rcpp-debias.cpp index 24bbae8..9cda705 100644 --- a/selectiveInference/src/Rcpp-debias.cpp +++ b/selectiveInference/src/Rcpp-debias.cpp @@ -15,6 +15,7 @@ Rcpp::List solve_QP(Rcpp::NumericMatrix Sigma, Rcpp::IntegerVector nactive, double kkt_tol, double objective_tol, + double parameter_tol, int max_active, int objective_stop, int kkt_stop, @@ -52,6 +53,7 @@ Rcpp::List solve_QP(Rcpp::NumericMatrix Sigma, maxiter, kkt_tol, objective_tol, + parameter_tol, max_active, objective_stop, kkt_stop, @@ -92,6 +94,7 @@ Rcpp::List solve_QP_wide(Rcpp::NumericMatrix X, Rcpp::IntegerVector nactive, double kkt_tol, double objective_tol, + double parameter_tol, int max_active, int objective_stop, int kkt_stop, @@ -142,6 +145,7 @@ Rcpp::List solve_QP_wide(Rcpp::NumericMatrix X, maxiter, kkt_tol, objective_tol, + parameter_tol, max_active, objective_stop, kkt_stop, diff --git a/selectiveInference/src/debias.h b/selectiveInference/src/debias.h index 052af7a..d3db26d 100644 --- a/selectiveInference/src/debias.h +++ b/selectiveInference/src/debias.h @@ -16,6 +16,7 @@ int solve_qp(double *nndef_ptr, /* A non-negative definite matrix */ int maxiter, /* max number of iterations */ double kkt_tol, /* precision for checking KKT conditions */ double objective_tol, /* precision for checking relative decrease in objective value */ + double parameter_tol, /* precision for checking relative convergence of parameter */ int max_active, /* Upper limit for size of active set -- otherwise break */ int objective_stop, /* Break based on convergence of objective value? */ int kkt_stop, /* Break based on KKT? */ @@ -44,6 +45,7 @@ int solve_wide(double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX int maxiter, /* max number of iterations */ double kkt_tol, /* precision for checking KKT conditions */ double objective_tol, /* precision for checking relative decrease in objective value */ + double parameter_tol, /* precision for checking relative convergence of parameter */ int max_active, /* Upper limit for size of active set -- otherwise break */ int objective_stop, /* Break based on convergence of objective value? */ int kkt_stop, /* Break based on KKT? */ diff --git a/selectiveInference/src/quadratic_program.c b/selectiveInference/src/quadratic_program.c index 1bc7fa3..822ddf5 100644 --- a/selectiveInference/src/quadratic_program.c +++ b/selectiveInference/src/quadratic_program.c @@ -273,6 +273,7 @@ int solve_qp(double *nndef_ptr, /* A non-negative definite matrix */ int maxiter, /* max number of iterations */ double kkt_tol, /* precision for checking KKT conditions */ double objective_tol, /* precision for checking relative decrease in objective value */ + double parameter_tol, /* precision for checking relative convergence of parameter */ int max_active, /* Upper limit for size of active set -- otherwise break */ int objective_stop, /* Break based on convergence of objective value? */ int kkt_stop, /* Break based on KKT? */ @@ -292,7 +293,6 @@ int solve_qp(double *nndef_ptr, /* A non-negative definite matrix */ double norm_diff = 1.; double norm_last = 1.; double delta; - double threshold = 1.e-2; double *theta_ptr, *theta_old_ptr; if (objective_stop) { @@ -403,7 +403,7 @@ int solve_qp(double *nndef_ptr, /* A non-negative definite matrix */ norm_diff = sqrt(norm_diff); norm_last = sqrt(norm_last); - if (norm_diff < threshold * norm_last) { + if (norm_diff < parameter_tol * norm_last) { break; } } diff --git a/selectiveInference/src/quadratic_program_wide.c b/selectiveInference/src/quadratic_program_wide.c index c6cb9f3..3e4bdb0 100644 --- a/selectiveInference/src/quadratic_program_wide.c +++ b/selectiveInference/src/quadratic_program_wide.c @@ -4,7 +4,7 @@ // Solves a dual version of problem (4) of https://arxiv.org/pdf/1306.3171.pdf -// Dual problem: \text{min}_{\theta} 1/2 \|X\theta\|^2 - l^T\theta + \mu \|\theta\|_1 + \frac{\epsilon}{2} \|\theta\|^2_2 +// Dual problem: \text{min}_{\theta} 1/2 \|X\theta\|^2/n - l^T\theta + \mu \|\theta\|_1 + \frac{\epsilon}{2} \|\theta\|^2_2 // where l is `linear_func` below // This is the "negative" of the problem as in https://gist.github.com/jonathan-taylor/07774d209173f8bc4e42aa37712339bf @@ -393,6 +393,7 @@ int solve_wide(double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX int maxiter, /* max number of iterations */ double kkt_tol, /* precision for checking KKT conditions */ double objective_tol, /* precision for checking relative decrease in objective value */ + double parameter_tol, /* precision for checking relative convergence of parameter */ int max_active, /* Upper limit for size of active set -- otherwise break */ int objective_stop, /* Break based on convergence of objective value? */ int kkt_stop, /* Break based on KKT? */ @@ -412,7 +413,6 @@ int solve_wide(double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX double norm_diff = 1.; double norm_last = 1.; double delta; - double threshold = 1.e-2; double *theta_ptr_tmp, *theta_old_ptr_tmp; if (objective_stop) { @@ -552,7 +552,7 @@ int solve_wide(double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX norm_diff = sqrt(norm_diff); norm_last = sqrt(norm_last); - if (norm_diff < threshold * norm_last) { + if (norm_diff < parameter_tol * norm_last) { break; } } diff --git a/tests/test_QP.R b/tests/test_QP.R new file mode 100644 index 0000000..cf5ca64 --- /dev/null +++ b/tests/test_QP.R @@ -0,0 +1,15 @@ +library(selectiveInference) +### Test + +n = 100; p = 50 + +X = matrix(rnorm(n * p), n, p) +Y = rnorm(n) +lam = 2 + +soln1 = selectiveInference:::fit_randomized_lasso(X, Y, lam, 1.e-12, 0)$soln +G = glmnet(X, Y, intercept=FALSE, standardize=FALSE) +soln2 = coef(G, s=1/n, exact=TRUE, x=X, y=Y)[-1] + +print(soln1) +print(soln2) \ No newline at end of file diff --git a/tests/test_debiasing.R b/tests/test_debiasing.R index 27bd621..b1fdf24 100644 --- a/tests/test_debiasing.R +++ b/tests/test_debiasing.R @@ -1,7 +1,143 @@ library(selectiveInference) -source('oldcode.R') -n = 500; p = 50 + +## Approximates inverse covariance matrix theta +InverseLinfty <- function(sigma, n, resol=1.5, mu=NULL, maxiter=50, threshold=1e-10, verbose = TRUE) { + isgiven <- 1; + if (is.null(mu)){ + isgiven <- 0; + } + + p <- nrow(sigma); + M <- matrix(0, p, p); + xperc = 0; + xp = round(p/10); + for (i in 1:p) { + if ((i %% xp)==0){ + xperc = xperc+10; + if (verbose) { + print(paste(xperc,"% done",sep="")); } + } + if (isgiven==0){ + mu <- (1/sqrt(n)) * qnorm(1-(0.1/(p^2))); + } + mu.stop <- 0; + try.no <- 1; + incr <- 0; + while ((mu.stop != 1)&&(try.no<10)){ + last.beta <- beta + output <- InverseLinftyOneRow(sigma, i, mu, maxiter=maxiter, threshold=threshold) + beta <- output$optsol + iter <- output$iter + if (isgiven==1){ + mu.stop <- 1 + } + else{ + if (try.no==1){ + if (iter == (maxiter+1)){ + incr <- 1; + mu <- mu*resol; + } else { + incr <- 0; + mu <- mu/resol; + } + } + if (try.no > 1){ + if ((incr == 1)&&(iter == (maxiter+1))){ + mu <- mu*resol; + } + if ((incr == 1)&&(iter < (maxiter+1))){ + mu.stop <- 1; + } + if ((incr == 0)&&(iter < (maxiter+1))){ + mu <- mu/resol; + } + if ((incr == 0)&&(iter == (maxiter+1))){ + mu <- mu*resol; + beta <- last.beta; + mu.stop <- 1; + } + } + } + try.no <- try.no+1 + } + M[i,] <- beta; + } + return(M) +} + +InverseLinftyOneRow <- function ( sigma, i, mu, maxiter=50, threshold=1e-10) { + p <- nrow(sigma); + rho <- max(abs(sigma[i,-i])) / sigma[i,i]; + mu0 <- rho/(1+rho); + beta <- rep(0,p); + + #if (mu >= mu0){ + # beta[i] <- (1-mu0)/sigma[i,i]; + # returnlist <- list("optsol" = beta, "iter" = 0); + # return(returnlist); + #} + + diff.norm2 <- 1; + last.norm2 <- 1; + iter <- 1; + iter.old <- 1; + beta[i] <- (1-mu0)/sigma[i,i]; + beta.old <- beta; + sigma.tilde <- sigma; + diag(sigma.tilde) <- 0; + vs <- -sigma.tilde%*%beta; + + while ((iter <= maxiter) && (diff.norm2 >= threshold*last.norm2)){ + + for (j in 1:p){ + oldval <- beta[j]; + v <- vs[j]; + if (j==i) + v <- v+1; + beta[j] <- SoftThreshold(v,mu)/sigma[j,j]; + if (oldval != beta[j]){ + vs <- vs + (oldval-beta[j])*sigma.tilde[,j]; + } + } + + iter <- iter + 1; + if (iter==2*iter.old){ + d <- beta - beta.old; + diff.norm2 <- sqrt(sum(d*d)); + last.norm2 <-sqrt(sum(beta*beta)); + iter.old <- iter; + beta.old <- beta; + #if (iter>10) + # vs <- -sigma.tilde%*%beta; + } + + # print(c(iter, maxiter, diff.norm2, threshold * last.norm2, threshold, mu)) + + } + + returnlist <- list("optsol" = beta, "iter" = iter) + return(returnlist) +} + +SoftThreshold <- function( x, lambda ) { + # + # Standard soft thresholding + # + if (x>lambda){ + return (x-lambda);} + else { + if (x< (-lambda)){ + return (x+lambda);} + else { + return (0); } + } +} + + +### Test + +n = 100; p = 50 X = matrix(rnorm(n * p), n, p) S = t(X) %*% X / n @@ -25,3 +161,35 @@ plot(B1[1,], C1[1,]) plot(A1[1,], A2[1,]) plot(B1[1,], B2[1,]) plot(C1[1,], C2[1,]) + +print(c('A', sum(A1[1,] == 0))) +print(c('B', sum(B1[1,] == 0))) +print(c('C', sum(C1[1,] == 0))) + +## Are our points feasible + +feasibility = function(S, soln, j, mu) { + p = nrow(S) + E = rep(0, p) + E[j] = 1 + G = S %*% soln - E + return(c(max(abs(G)), mu)) +} + +print(c('feasibility A', feasibility(S, A1[1,], 1, mu))) +print(c('feasibility B', feasibility(S, B1[1,], 1, mu))) +print(c('feasibility C', feasibility(S, C1[1,], 1, mu))) + +active_KKT = function(S, soln, j, mu) { + p = nrow(S) + E = rep(0, p) + E[j] = 1 + G = S %*% soln - E + return(c(G[soln != 0] * sign(soln)[soln != 0], mu)) +} + +print(c('active_KKT A', active_KKT(S, A1[1,], 1, mu))) +print(c('active_KKT B', active_KKT(S, B1[1,], 1, mu))) +print(c('active_KKT C', active_KKT(S, C1[1,], 1, mu))) + + From f13bce45b2e05c6454adeb1dea82be5f02e7844d Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 26 Oct 2017 22:19:20 -0700 Subject: [PATCH 288/493] allowing randomization to be 0 in solver --- selectiveInference/R/funs.randomized.R | 18 +++++++++++------- tests/test_QP.R | 2 +- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 25a0b95..b79e2fb 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -22,14 +22,18 @@ fit_randomized_lasso = function(X, noise_type = match.arg(noise_type) - if (noise_type == 'gaussian') { - D = Norm(mean=0, sd=noise_scale) + if (noise_scale > 0) { + if (noise_type == 'gaussian') { + D = Norm(mean=0, sd=noise_scale) + } + else if (noise_type == 'laplace') { + D = DExp(rate = 1 / noise_scale) # D is a Laplace distribution with rate = 1. + } + perturb_ = distr::r(D)(p) + } else { + perturb_ = rep(0, p) } - else if (noise_type == 'laplace') { - D = DExp(rate = 1 / noise_scale) # D is a Laplace distribution with rate = 1. - } - perturb_ = distr::r(D)(p) - + lam = as.numeric(lam) if (length(lam) == 1) { lam = rep(lam, p) diff --git a/tests/test_QP.R b/tests/test_QP.R index cf5ca64..4aebec3 100644 --- a/tests/test_QP.R +++ b/tests/test_QP.R @@ -7,7 +7,7 @@ X = matrix(rnorm(n * p), n, p) Y = rnorm(n) lam = 2 -soln1 = selectiveInference:::fit_randomized_lasso(X, Y, lam, 1.e-12, 0)$soln +soln1 = selectiveInference:::fit_randomized_lasso(X, Y, lam, 0, 0)$soln G = glmnet(X, Y, intercept=FALSE, standardize=FALSE) soln2 = coef(G, s=1/n, exact=TRUE, x=X, y=Y)[-1] From a6064f27241eab8d2abc0ac253b6d4b41c31f9ae Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 26 Oct 2017 22:25:32 -0700 Subject: [PATCH 289/493] cosmetic edit --- selectiveInference/src/Rcpp-debias.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/selectiveInference/src/Rcpp-debias.cpp b/selectiveInference/src/Rcpp-debias.cpp index 9cda705..5c18184 100644 --- a/selectiveInference/src/Rcpp-debias.cpp +++ b/selectiveInference/src/Rcpp-debias.cpp @@ -112,12 +112,13 @@ Rcpp::List solve_QP_wide(Rcpp::NumericMatrix X, Rcpp::IntegerVector need_update(nfeature); - // Extract the diagonal + Rcpp::NumericVector theta_old(nfeature); + + // Extract the diagonal -- divide by ncase + Rcpp::NumericVector nndef_diag(nfeature); double *nndef_diag_p = nndef_diag.begin(); - Rcpp::NumericVector theta_old(nfeature); - for (ifeature=0; ifeature Date: Thu, 26 Oct 2017 22:46:48 -0700 Subject: [PATCH 290/493] LASSO solver is right up to scale --- tests/test_QP.R | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/test_QP.R b/tests/test_QP.R index 4aebec3..61c4d53 100644 --- a/tests/test_QP.R +++ b/tests/test_QP.R @@ -9,7 +9,8 @@ lam = 2 soln1 = selectiveInference:::fit_randomized_lasso(X, Y, lam, 0, 0)$soln G = glmnet(X, Y, intercept=FALSE, standardize=FALSE) -soln2 = coef(G, s=1/n, exact=TRUE, x=X, y=Y)[-1] +soln2 = coef(G, s=lam/n, exact=TRUE, x=X, y=Y)[-1] print(soln1) -print(soln2) \ No newline at end of file +print(soln2) +plot(soln1, soln2) From cc88b978c6719157b4a5f36762496f0fbbae7fb1 Mon Sep 17 00:00:00 2001 From: Nicolas Ballarini Date: Fri, 27 Oct 2017 10:04:32 +0200 Subject: [PATCH 291/493] Confidence intervals when estimate is negative Confidence intervals are not flipped when beta hat is negative --- selectiveInference/R/funs.fixedCox.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selectiveInference/R/funs.fixedCox.R b/selectiveInference/R/funs.fixedCox.R index d6ebd6b..2fa8c08 100644 --- a/selectiveInference/R/funs.fixedCox.R +++ b/selectiveInference/R/funs.fixedCox.R @@ -73,7 +73,7 @@ b1= -(mydiag(s2)%*%MM)%*%s2*lambda vup[jj]=junk$vup sd[jj]=junk$sd - junk2=TG.interval(bbar, A1, b1, vj, MM, alpha) + junk2=TG.interval(bbar, A1, b1, vj, MM, alpha, flip=(s2[jj]==-1)) ci[jj,]=junk2$int tailarea[jj,] = junk2$tailarea From 7b231508cc47fec41b074ee0352d42bf8c8cc0d7 Mon Sep 17 00:00:00 2001 From: Nicolas Ballarini Date: Fri, 27 Oct 2017 10:04:40 +0200 Subject: [PATCH 292/493] Confidence intervals when estimate is negative Confidence intervals are not flipped when beta hat is negative --- selectiveInference/R/funs.fixedLogit.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selectiveInference/R/funs.fixedLogit.R b/selectiveInference/R/funs.fixedLogit.R index 19936b0..4ab3398 100644 --- a/selectiveInference/R/funs.fixedLogit.R +++ b/selectiveInference/R/funs.fixedLogit.R @@ -96,7 +96,7 @@ fixedLogitLassoInf=function(x,y,beta,lambda,alpha=.1, type=c("partial"), tol.bet vup[jj]=junk$vup sd[jj]=junk$sd - junk2=TG.interval(bbar, A1, b1, vj, MM,alpha=alpha) + junk2=TG.interval(bbar, A1, b1, vj, MM,alpha=alpha, flip=(s2[jj+1]==-1)) ci[jj,]=junk2$int tailarea[jj,] = junk2$tailarea From 928fee90f833cd0a2cee39040c075d9292d9fd21 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Wed, 11 Oct 2017 07:38:07 -0700 Subject: [PATCH 293/493] variable rename --- selectiveInference/R/funs.fixedCox.R | 12 ++++++------ selectiveInference/R/funs.fixedLogit.R | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/selectiveInference/R/funs.fixedCox.R b/selectiveInference/R/funs.fixedCox.R index d6ebd6b..7530511 100644 --- a/selectiveInference/R/funs.fixedCox.R +++ b/selectiveInference/R/funs.fixedCox.R @@ -29,7 +29,7 @@ if( sum(status==0)+sum(status==1)!=length(y)) stop("status vector must have valu vars=which(m) if(sum(m)>0){ bhat=beta[beta!=0] #penalized coefs just for active variables - s2=sign(bhat) + sign_bhat=sign(bhat) #check KKT @@ -40,7 +40,7 @@ if(sum(m)>0){ res=residuals(aaa,type="score") if(!is.matrix(res)) res=matrix(res,ncol=1) scor=colSums(res) - g=(scor+lambda*s2)/(2*lambda) + g=(scor+lambda*sign_bhat)/(2*lambda) # cat(c(g,lambda,tol.kkt),fill=T) if (any(abs(g) > 1+tol.kkt) ) warning(paste("Solution beta does not satisfy the KKT conditions", @@ -49,9 +49,9 @@ scor=colSums(res) # Hessian of partial likelihood at the LASSO solution MM=vcov(aaa) -bbar=(bhat+lambda*MM%*%s2) -A1=-(mydiag(s2)) -b1= -(mydiag(s2)%*%MM)%*%s2*lambda +bbar=(bhat+lambda*MM%*%sign_bhat) +A1=-(mydiag(sign_bhat)) +b1= -(mydiag(sign_bhat)%*%MM)%*%sign_bhat*lambda temp=max(A1%*%bbar-b1) @@ -63,7 +63,7 @@ b1= -(mydiag(s2)%*%MM)%*%s2*lambda # the one sided p-values are a bit off for(jj in 1:length(bbar)){ - vj=rep(0,length(bbar));vj[jj]=s2[jj] + vj=rep(0,length(bbar));vj[jj]=sign_bhat[jj] junk=TG.pvalue(bbar, A1, b1, vj,MM) diff --git a/selectiveInference/R/funs.fixedLogit.R b/selectiveInference/R/funs.fixedLogit.R index 19936b0..16cafdc 100644 --- a/selectiveInference/R/funs.fixedLogit.R +++ b/selectiveInference/R/funs.fixedLogit.R @@ -32,7 +32,7 @@ fixedLogitLassoInf=function(x,y,beta,lambda,alpha=.1, type=c("partial"), tol.bet m=beta[-1]!=0 #active set bhat=c(beta[1],beta[-1][beta[-1]!=0]) # intcpt plus active vars - s2=sign(bhat) + sign_bhat=sign(bhat) lam2m=diag(c(0,rep(lambda,sum(m)))) @@ -66,14 +66,14 @@ fixedLogitLassoInf=function(x,y,beta,lambda,alpha=.1, type=c("partial"), tol.bet # MM=solve(t(xxm)%*%w%*%xxm) MM=solve(scale(t(xxm),F,1/ww)%*%xxm) gm = c(0,-g[vars]*lambda) # gradient at LASSO solution, first entry is 0 because intercept is unpenalized - # at exact LASSO solution it should be s2[-1] + # at exact LASSO solution it should be sign_bhat[-1] dbeta = MM %*% gm - # bbar=(bhat+lam2m%*%MM%*%s2) # JT: this is wrong, shouldn't use sign of intercept anywhere... + # bbar=(bhat+lam2m%*%MM%*%sign_bhat) # JT: this is wrong, shouldn't use sign of intercept anywhere... bbar = bhat - dbeta - A1=-(mydiag(s2))[-1,] - b1= (s2 * dbeta)[-1] + A1=-(mydiag(sign_bhat))[-1,] + b1= (sign_bhat * dbeta)[-1] tol.poly = 0.01 if (max((A1 %*% bbar) - b1) > tol.poly) @@ -87,7 +87,7 @@ fixedLogitLassoInf=function(x,y,beta,lambda,alpha=.1, type=c("partial"), tol.bet for(jj in 1:sum(m)){ - vj=c(rep(0,sum(m)+1));vj[jj+1]=s2[jj+1] + vj=c(rep(0,sum(m)+1));vj[jj+1]=sign_bhat[jj+1] # compute p-values junk=TG.pvalue(bbar, A1, b1, vj, MM) pv[jj] = junk$pv From 2e9b11d9ce155df3a8d201ce7af434a25ba142d0 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Wed, 25 Oct 2017 14:06:10 -0700 Subject: [PATCH 294/493] NF: density functions for randomized LASSO --- selectiveInference/src/randomized_lasso.c | 201 ++++++++++++++++++++++ selectiveInference/src/randomized_lasso.h | 42 +++++ 2 files changed, 243 insertions(+) create mode 100644 selectiveInference/src/randomized_lasso.c create mode 100644 selectiveInference/src/randomized_lasso.h diff --git a/selectiveInference/src/randomized_lasso.c b/selectiveInference/src/randomized_lasso.c new file mode 100644 index 0000000..ac55cf4 --- /dev/null +++ b/selectiveInference/src/randomized_lasso.c @@ -0,0 +1,201 @@ +#include // for fabs + +// Augmented density for randomized LASSO after +// Gaussian randomization + +// Described in https://arxiv.org/abs/1609.05609 + +// Gaussian is product of IID N(0, noise_scale^2) density +// Evaluated at A_D D + A_O O + h + +// Laplace is product of IID Laplace with scale noise_scale +// Also evaluated at A_D D + A_O O + h + +double log_density_gaussian(double noise_scale, // Scale of randomization + int ndim, // Number of features -- "p" + int ninternal, // Dimension of internal data representation often 1 + int noptimization, // Dimension of optimization variables -- "p" + double *internal_linear, // A_D -- linear part for data + double *internal_state, // D -- data state + double *optimization_linear, // A_O -- linear part for optimization variables + double *optimization_state, // O -- optimization state + double *offset) // h -- offset in affine transform -- "p" dimensional +{ + int irow, icol; + double denom = 2 * noise_scale * noise_scale; + double value = 0; + double reconstruction = 0; + double *offset_ptr; + double *internal_linear_ptr; + double *internal_state_ptr; + double *optimization_linear_ptr; + double *optimization_state_ptr; + + for (irow=0; irow Date: Wed, 25 Oct 2017 16:35:52 -0700 Subject: [PATCH 295/493] T to TRUE --- selectiveInference/R/funs.fixed.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index be314af..66a3088 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -6,7 +6,7 @@ fixedLassoInf <- function(x, y, beta, lambda, family=c("gaussian","binomial","cox"), intercept=TRUE, add.targets=NULL, status=NULL, sigma=NULL, alpha=0.1, - type=c("partial","full"), tol.beta=1e-5, tol.kkt=0.1, + type=c("partial", "full"), tol.beta=1e-5, tol.kkt=0.1, gridrange=c(-100,100), bits=NULL, verbose=FALSE, linesearch.try=10) { @@ -150,7 +150,7 @@ fixedLassoInf <- function(x, y, beta, ci = tailarea = matrix(0,k,2) if (type=="full" & p > n) { - if (intercept == T) { + if (intercept == TRUE) { pp=p+1 Xint <- cbind(rep(1,n),x) # indices of selected predictors From 3748723714d2fc2b837d3e21f8f5e0976d6be9dc Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 26 Oct 2017 13:08:05 -0700 Subject: [PATCH 296/493] updated wide C code -- can now do ridge as well as variable weights -- ready to solve randomized LASSO --- selectiveInference/R/funs.fixed.R | 40 +++- selectiveInference/src/Rcpp-debias.cpp | 35 +++- selectiveInference/src/debias.h | 22 ++- selectiveInference/src/quadratic_program.c | 108 +++++++---- .../src/quadratic_program_wide.c | 176 ++++++++++++------ selectiveInference/src/randomized_lasso.c | 13 -- 6 files changed, 270 insertions(+), 124 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 66a3088..aaceaaa 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -189,8 +189,10 @@ fixedLassoInf <- function(x, y, beta, } M <- (((htheta%*%t(Xordered))+ithetasigma%*%FS%*%hsigmaSinv%*%t(XS))/n) + # vector which is offset for testing debiased beta's null_value <- (((ithetasigma%*%FS%*%hsigmaSinv)%*%sign(hbetaS))*lambda/n) + if (intercept == T) { M = M[-1,] # remove intercept row null_value = null_value[-1] # remove intercept element @@ -238,12 +240,23 @@ fixedLassoInf <- function(x, y, beta, tailarea[j,] = a$tailarea } - out = list(type=type,lambda=lambda,pv=pv,ci=ci, - tailarea=tailarea,vlo=vlo,vup=vup,vmat=vmat,y=y, - vars=vars,sign=sign_vars,sigma=sigma,alpha=alpha, - sd=sigma*sqrt(rowSums(vmat^2)), - coef0=vmat%*%y, - call=this.call) + out = list(type=type, + lambda=lambda, + pv=pv, + ci=ci, + tailarea=tailarea, + vlo=vlo, + vup=vup, + vmat=vmat, + y=y, + vars=vars, + sign=sign_vars, + sigma=sigma, + alpha=alpha, + sd=sigma*sqrt(rowSums(vmat^2)), + coef0=vmat%*%y, + call=this.call) + class(out) = "fixedLassoInf" return(out) } @@ -374,7 +387,7 @@ debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n dep row, mu, linesearch=TRUE, # do a linesearch? - scaling_factor=1.2, # multiplicative factor for linesearch + scaling_factor=1.5, # multiplicative factor for linesearch max_active=NULL, # how big can active set get? max_try=10, # how many steps in linesearch? warn_kkt=FALSE, # warn if KKT does not seem to be satisfied? @@ -420,11 +433,15 @@ debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n dep nactive, kkt_tol, objective_tol, - max_active) + max_active, + FALSE, # objective_stop + FALSE, # kkt_stop + TRUE) # param_stop } else { Xsoln = rep(0, nrow(Xinfo)) result = solve_QP_wide(Xinfo, # this is a design matrix - mu, + rep(mu, p), # vector of Lagrange multipliers + 0, # ridge_term max_iter, soln, linear_func, @@ -434,7 +451,10 @@ debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n dep nactive, kkt_tol, objective_tol, - max_active) + max_active, + FALSE, # objective_stop + FALSE, # kkt_stop + TRUE) # param_stop } diff --git a/selectiveInference/src/Rcpp-debias.cpp b/selectiveInference/src/Rcpp-debias.cpp index ce8bb15..24bbae8 100644 --- a/selectiveInference/src/Rcpp-debias.cpp +++ b/selectiveInference/src/Rcpp-debias.cpp @@ -15,7 +15,10 @@ Rcpp::List solve_QP(Rcpp::NumericMatrix Sigma, Rcpp::IntegerVector nactive, double kkt_tol, double objective_tol, - int max_active + int max_active, + int objective_stop, + int kkt_stop, + int param_stop ) { int nrow = Sigma.nrow(); // number of features @@ -28,6 +31,8 @@ Rcpp::List solve_QP(Rcpp::NumericMatrix Sigma, Rcpp::NumericVector Sigma_diag(nrow); double *sigma_diag_p = Sigma_diag.begin(); + Rcpp::NumericVector theta_old(nrow); + for (irow=0; irow= max_active); diff --git a/selectiveInference/src/debias.h b/selectiveInference/src/debias.h index ebcbc93..052af7a 100644 --- a/selectiveInference/src/debias.h +++ b/selectiveInference/src/debias.h @@ -9,13 +9,17 @@ int solve_qp(double *nndef_ptr, /* A non-negative definite matrix */ double *gradient_ptr, /* nndef times theta */ int *ever_active_ptr, /* Ever active set: 1-based */ int *nactive_ptr, /* Size of ever active set */ - int nrow, /* How many rows in nndef */ + int nfeature, /* How many features in nndef */ double bound, /* feasibility parameter */ double *theta, /* current value */ + double *theta_old, /* previous value */ int maxiter, /* max number of iterations */ double kkt_tol, /* precision for checking KKT conditions */ double objective_tol, /* precision for checking relative decrease in objective value */ - int max_active); /* Upper limit for size of active set -- otherwise break */ + int max_active, /* Upper limit for size of active set -- otherwise break */ + int objective_stop, /* Break based on convergence of objective value? */ + int kkt_stop, /* Break based on KKT? */ + int param_stop); /* Break based on parameter convergence? */ int check_KKT_qp(double *theta, /* current theta */ double *gradient_ptr, /* nndef times theta + linear_func */ @@ -33,12 +37,17 @@ int solve_wide(double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX int *nactive_ptr, /* Size of ever active set */ int ncase, /* How many rows in X */ int nfeature, /* How many columns in X */ - double bound, /* feasibility parameter */ + double *bound_ptr, /* Lagrange multipliers */ + double ridge_term, /* Ridge / ENet term */ double *theta_ptr, /* current value */ + double *theta_old_ptr, /* previous value */ int maxiter, /* max number of iterations */ double kkt_tol, /* precision for checking KKT conditions */ double objective_tol, /* precision for checking relative decrease in objective value */ - int max_active); /* Upper limit for size of active set -- otherwise break */ + int max_active, /* Upper limit for size of active set -- otherwise break */ + int objective_stop, /* Break based on convergence of objective value? */ + int kkt_stop, /* Break based on KKT? */ + int param_stop); /* Break based on parameter convergence? */ int check_KKT_wide(double *theta_ptr, /* current theta */ double *gradient_ptr, /* X^TX/ncase times theta + linear_func*/ @@ -48,8 +57,9 @@ int check_KKT_wide(double *theta_ptr, /* current theta */ int *need_update_ptr, /* Which coordinates need to be updated? */ int nfeature, /* how many columns in X */ int ncase, /* how many rows in X */ - double bound, /* Lagrange multipler for \ell_1 */ - double tol); /* precision for checking KKT conditions */ + double *bound_ptr, /* Lagrange multiplers for \ell_1 */ + double ridge_term, /* Ridge / ENet term */ + double tol); /* precision for checking KKT conditions */ void update_gradient_wide(double *gradient_ptr, /* X^TX/ncase times theta + linear_func */ double *X_theta_ptr, /* Current fitted values */ diff --git a/selectiveInference/src/quadratic_program.c b/selectiveInference/src/quadratic_program.c index d9bd017..1bc7fa3 100644 --- a/selectiveInference/src/quadratic_program.c +++ b/selectiveInference/src/quadratic_program.c @@ -92,19 +92,19 @@ int update_ever_active_qp(int coord, int check_KKT_qp(double *theta_ptr, /* current theta */ double *gradient_ptr, /* nndef times theta + linear_func */ - int nrow, /* how many rows in nndef */ + int nfeature, /* how many features in nndef */ double bound, /* Lagrange multipler for \ell_1 */ double tol) /* precision for checking KKT conditions */ { // First check inactive - int irow; + int ifeature; double *theta_ptr_tmp, *gradient_ptr_tmp; double gradient; - for (irow=0; irow 1.e-6 * (fabs(value) + fabs(old_value))) { delta = value - old_value; - nndef_ptr_tmp = ((double *) nndef_ptr + coord * nrow); + nndef_ptr_tmp = ((double *) nndef_ptr + coord * nfeature); gradient_ptr_tmp = ((double *) gradient_ptr); - for (icol=0; icol= max_active) { @@ -380,12 +417,12 @@ int solve_qp(double *nndef_ptr, /* A non-negative definite matrix */ // Check relative decrease of objective - if (check_objective) { + if (objective_stop) { new_value = objective_qp(nndef_ptr, linear_func_ptr, ever_active_ptr, nactive_ptr, - nrow, + nfeature, bound, theta); @@ -394,6 +431,7 @@ int solve_qp(double *nndef_ptr, /* A non-negative definite matrix */ } old_value = new_value; } + } return(iter); } diff --git a/selectiveInference/src/quadratic_program_wide.c b/selectiveInference/src/quadratic_program_wide.c index 3beb578..c6cb9f3 100644 --- a/selectiveInference/src/quadratic_program_wide.c +++ b/selectiveInference/src/quadratic_program_wide.c @@ -4,7 +4,7 @@ // Solves a dual version of problem (4) of https://arxiv.org/pdf/1306.3171.pdf -// Dual problem: \text{min}_{\theta} 1/2 \|X\theta\|^2 - l^T\theta + \mu \|\theta\|_1 +// Dual problem: \text{min}_{\theta} 1/2 \|X\theta\|^2 - l^T\theta + \mu \|\theta\|_1 + \frac{\epsilon}{2} \|\theta\|^2_2 // where l is `linear_func` below // This is the "negative" of the problem as in https://gist.github.com/jonathan-taylor/07774d209173f8bc4e42aa37712339bf @@ -19,11 +19,13 @@ double objective_wide(double *X_theta_ptr, /* Fitted values */ int *nactive_ptr, /* Size of ever active set */ int ncase, /* how many rows in X */ int nfeature, /* how many columns in X */ - double bound, /* Lagrange multipler for \ell_1 */ + double *bound_ptr, /* Lagrange multiplers for \ell_1 */ + double ridge_term, /* Ridge / ENet term */ double *theta_ptr) /* current value */ { int icase, iactive; double value = 0; + double *bound_ptr_tmp; double *X_theta_ptr_tmp = X_theta_ptr; double *linear_func_ptr_tmp = linear_func_ptr; double *theta_ptr_tmp; @@ -55,8 +57,12 @@ double objective_wide(double *X_theta_ptr, /* Fitted values */ // The \ell_1 term - value += bound * fabs((*theta_ptr_tmp)); + bound_ptr_tmp = ((double *) bound_ptr + active_feature); + value += (*bound_ptr_tmp) * fabs((*theta_ptr_tmp)); + // The ridge term + + value += 0.5 * ridge_term * (*theta_ptr_tmp) * (*theta_ptr_tmp); } return(value); @@ -167,34 +173,39 @@ int check_KKT_wide(double *theta_ptr, /* current theta */ int *need_update_ptr, /* Which coordinates need to be updated? */ int nfeature, /* how many columns in X */ int ncase, /* how many rows in X */ - double bound, /* Lagrange multipler for \ell_1 */ + double *bound_ptr, /* Lagrange multiplers for \ell_1 */ + double ridge_term, /* Ridge / ENet term */ double tol) /* precision for checking KKT conditions */ { // First check inactive int ifeature; double *theta_ptr_tmp; + double *bound_ptr_tmp; + double bound; double gradient; for (ifeature=0; ifeature 0) && (fabs(gradient + bound) > tol * bound)) { + if ((*theta_ptr_tmp != 0) && (bound != 0)) { // these coordinates of gradients should be equal to -bound + + if ((*theta_ptr_tmp > 0) && (fabs(gradient + ridge_term * (*theta_ptr_tmp) + bound) > tol * bound)) { return(0); } - else if ((*theta_ptr_tmp < 0) && (fabs(gradient - bound) > tol * bound)) { + else if ((*theta_ptr_tmp < 0) && (fabs(gradient + ridge_term * (*theta_ptr_tmp) - bound) > tol * bound)) { return(0); } - + } - else { + else if (bound != 0) { if (fabs(gradient) > (1. + tol) * bound) { return(0); } @@ -214,13 +225,16 @@ int check_KKT_wide_active(int *ever_active_ptr, /* Ever active set: 0- int *need_update_ptr, /* Which coordinates need to be updated? */ int nfeature, /* how many columns in X */ int ncase, /* how many rows in X */ - double bound, /* Lagrange multipler for \ell_1 */ + double *bound_ptr, /* Lagrange multipliers for \ell_1 */ + double ridge_term, /* Ridge / ENet term */ double tol) /* precision for checking KKT conditions */ { // First check inactive int iactive; double *theta_ptr_tmp; + double *bound_ptr_tmp; + double bound; double gradient; int nactive = *nactive_ptr; int active_feature; @@ -230,23 +244,26 @@ int check_KKT_wide_active(int *ever_active_ptr, /* Ever active set: 0- active_feature_ptr = ((int *) ever_active_ptr + iactive); active_feature = *active_feature_ptr - 1; // Ever-active is 1-based + theta_ptr_tmp = ((double *) theta_ptr + active_feature); + bound_ptr_tmp = ((double *) bound_ptr + active_feature); + bound = *bound_ptr_tmp; // Compute this coordinate of the gradient gradient = compute_gradient_coord(gradient_ptr, X_theta_ptr, X_ptr, linear_func_ptr, need_update_ptr, active_feature, ncase); - if (*theta_ptr_tmp != 0) { // these coordinates of gradients should be equal to -bound + if ((*theta_ptr_tmp != 0) && (bound != 0)) { // these coordinates of gradients should be equal to -bound - if ((*theta_ptr_tmp > 0) && (fabs(gradient + bound) > tol * bound)) { + if ((*theta_ptr_tmp > 0) && (fabs(gradient + ridge_term * (*theta_ptr_tmp) + bound) > tol * bound)) { return(0); } - else if ((*theta_ptr_tmp < 0) && (fabs(gradient - bound) > tol * bound)) { + else if ((*theta_ptr_tmp < 0) && (fabs(gradient + ridge_term * (*theta_ptr_tmp) - bound) > tol * bound)) { return(0); } } - else { + else if (bound != 0) { if (fabs(gradient) > (1. + tol) * bound) { return(0); } @@ -266,7 +283,8 @@ double update_one_coord_wide(double *X_ptr, /* A design matrix*/ int *need_update_ptr, /* Whether a gradient coordinate needs update or not */ int ncase, /* How many rows in X */ int nfeature, /* How many rows in X */ - double bound, /* feasibility parameter */ + double *bound_ptr, /* Lagrange multipliers */ + double ridge_term, /* Ridge / ENet term */ double *theta_ptr, /* current value */ int coord, /* which coordinate to update: 0-based */ int is_active) /* Is this coord in ever_active */ @@ -280,6 +298,8 @@ double update_one_coord_wide(double *X_ptr, /* A design matrix*/ double *X_theta_ptr_tmp; int *need_update_ptr_tmp; double *theta_ptr_tmp; + double *bound_ptr_tmp; + double bound; int ifeature, icase; double *diagonal_ptr = ((double *) nndef_diag_ptr + coord); @@ -290,6 +310,9 @@ double update_one_coord_wide(double *X_ptr, /* A design matrix*/ theta_ptr_tmp = ((double *) theta_ptr + coord); old_value = *theta_ptr_tmp; + bound_ptr_tmp = ((double *) bound_ptr + coord); + bound = *bound_ptr_tmp; + // The coord entry of gradient_ptr term has a diagonal term in it: // (X^TX)[coord, coord] * theta[coord] / ncase // This removes it. @@ -298,17 +321,17 @@ double update_one_coord_wide(double *X_ptr, /* A design matrix*/ // Now soft-threshold the coord entry of theta - // Objective is t \mapsto q/2 * t^2 + l * t + bound |t| - // with q=diagonal_entry and l=linear_term + // Objective is t \mapsto (q+eps)/2 * t^2 + l * t + bound |t| + + // with q=diagonal_entry and l=linear_term and eps=ridge_Term // With a negative linear term, solution should be // positive if (linear_term < -bound) { - value = (-linear_term - bound) / diagonal_entry; + value = (-linear_term - bound) / (diagonal_entry + ridge_term); } else if (linear_term > bound) { - value = -(linear_term - bound) / diagonal_entry; + value = -(linear_term - bound) / (diagonal_entry + ridge_term); } // Add to active set if necessary @@ -363,24 +386,36 @@ int solve_wide(double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX int *nactive_ptr, /* Size of ever active set */ int ncase, /* How many rows in X */ int nfeature, /* How many columns in X */ - double bound, /* feasibility parameter */ + double *bound_ptr, /* Lagrange multipliers */ + double ridge_term, /* Ridge / ENet term */ double *theta_ptr, /* current value */ + double *theta_old_ptr, /* previous value */ int maxiter, /* max number of iterations */ double kkt_tol, /* precision for checking KKT conditions */ double objective_tol, /* precision for checking relative decrease in objective value */ - int max_active) /* Upper limit for size of active set -- otherwise break */ + int max_active, /* Upper limit for size of active set -- otherwise break */ + int objective_stop, /* Break based on convergence of objective value? */ + int kkt_stop, /* Break based on KKT? */ + int param_stop) /* Break based on parameter convergence? */ { int iter = 0; + int iter_old = 1; int ifeature = 0; int iactive = 0; int *active_ptr; - int check_objective = 1; + double old_value, new_value; int niter_active = 5; int iter_active; - if (check_objective) { + double norm_diff = 1.; + double norm_last = 1.; + double delta; + double threshold = 1.e-2; + double *theta_ptr_tmp, *theta_old_ptr_tmp; + + if (objective_stop) { old_value = objective_wide(X_theta_ptr, linear_func_ptr, @@ -388,8 +423,10 @@ int solve_wide(double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX nactive_ptr, ncase, nfeature, - bound, + bound_ptr, + ridge_term, theta_ptr); + new_value = old_value; } @@ -412,7 +449,8 @@ int solve_wide(double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX need_update_ptr, ncase, nfeature, - bound, + bound_ptr, + ridge_term, theta_ptr, *active_ptr - 1, // Ever-active is 1-based 1); @@ -431,7 +469,8 @@ int solve_wide(double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX need_update_ptr, nfeature, ncase, - bound, + bound_ptr, + ridge_term, kkt_tol) == 1) { break; } @@ -440,17 +479,20 @@ int solve_wide(double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX // Check KKT - if (check_KKT_wide(theta_ptr, - gradient_ptr, - X_theta_ptr, - X_ptr, - linear_func_ptr, - need_update_ptr, - nfeature, - ncase, - bound, - kkt_tol) == 1) { - break; + if (kkt_stop) { + if (check_KKT_wide(theta_ptr, + gradient_ptr, + X_theta_ptr, + X_ptr, + linear_func_ptr, + need_update_ptr, + nfeature, + ncase, + bound_ptr, + ridge_term, + kkt_tol) == 1) { + break; + } } // Update all variables @@ -467,7 +509,8 @@ int solve_wide(double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX need_update_ptr, ncase, nfeature, - bound, + bound_ptr, + ridge_term, theta_ptr, ifeature, 0); @@ -475,19 +518,45 @@ int solve_wide(double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX // Check KKT - if (check_KKT_wide(theta_ptr, - gradient_ptr, - X_theta_ptr, - X_ptr, - linear_func_ptr, - need_update_ptr, - nfeature, - ncase, - bound, - kkt_tol) == 1) { - break; + if (kkt_stop) { + if (check_KKT_wide(theta_ptr, + gradient_ptr, + X_theta_ptr, + X_ptr, + linear_func_ptr, + need_update_ptr, + nfeature, + ncase, + bound_ptr, + ridge_term, + kkt_tol) == 1) { + break; + } + } + + // Check based on norm -- from Adel's debiasing code + + if (param_stop) { + if (iter == 2 * iter_old) { + iter_old = iter; + norm_diff = 0; + norm_last = 0; + for (ifeature=0; ifeature= max_active) { @@ -496,14 +565,15 @@ int solve_wide(double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX // Check relative decrease of objective - if (check_objective) { + if (objective_stop) { new_value = objective_wide(X_theta_ptr, linear_func_ptr, ever_active_ptr, nactive_ptr, ncase, nfeature, - bound, + bound_ptr, + ridge_term, theta_ptr); if ((fabs(old_value - new_value) < objective_tol * fabs(new_value)) && (iter > 0)) { diff --git a/selectiveInference/src/randomized_lasso.c b/selectiveInference/src/randomized_lasso.c index ac55cf4..123c81d 100644 --- a/selectiveInference/src/randomized_lasso.c +++ b/selectiveInference/src/randomized_lasso.c @@ -126,8 +126,6 @@ double log_density_gaussian_conditional(double noise_scale, // Scale double denom = 2 * noise_scale * noise_scale; double reconstruction = 0; double *offset_ptr; - double *internal_linear_ptr; - double *internal_state_ptr; double *optimization_linear_ptr; double *optimization_state_ptr; @@ -164,8 +162,6 @@ double log_density_laplace_conditional(double noise_scale, // Scale double value = 0; double reconstruction = 0; double *offset_ptr; - double *internal_linear_ptr; - double *internal_state_ptr; double *optimization_linear_ptr; double *optimization_state_ptr; @@ -176,15 +172,6 @@ double log_density_laplace_conditional(double noise_scale, // Scale offset_ptr = ((double *) offset + irow); reconstruction = *offset_ptr; - // Internal (i.e. data) contribution - for (icol=0; icol Date: Thu, 26 Oct 2017 13:08:37 -0700 Subject: [PATCH 297/493] removing machine generated files --- selectiveInference/R/RcppExports.R | 19 ------ selectiveInference/src/RcppExports.cpp | 92 -------------------------- 2 files changed, 111 deletions(-) delete mode 100644 selectiveInference/R/RcppExports.R delete mode 100644 selectiveInference/src/RcppExports.cpp diff --git a/selectiveInference/R/RcppExports.R b/selectiveInference/R/RcppExports.R deleted file mode 100644 index f5ebee4..0000000 --- a/selectiveInference/R/RcppExports.R +++ /dev/null @@ -1,19 +0,0 @@ -# Generated by using Rcpp::compileAttributes() -> do not edit by hand -# Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 - -solve_QP <- function(Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active) { - .Call('_selectiveInference_solve_QP', PACKAGE = 'selectiveInference', Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active) -} - -solve_QP_wide <- function(X, bound, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, max_active) { - .Call('_selectiveInference_solve_QP_wide', PACKAGE = 'selectiveInference', X, bound, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, max_active) -} - -update1_ <- function(Q2, w, m, k) { - .Call('_selectiveInference_update1_', PACKAGE = 'selectiveInference', Q2, w, m, k) -} - -downdate1_ <- function(Q1, R, j0, m, n) { - .Call('_selectiveInference_downdate1_', PACKAGE = 'selectiveInference', Q1, R, j0, m, n) -} - diff --git a/selectiveInference/src/RcppExports.cpp b/selectiveInference/src/RcppExports.cpp deleted file mode 100644 index 02a7741..0000000 --- a/selectiveInference/src/RcppExports.cpp +++ /dev/null @@ -1,92 +0,0 @@ -// Generated by using Rcpp::compileAttributes() -> do not edit by hand -// Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 - -#include - -using namespace Rcpp; - -// solve_QP -Rcpp::List solve_QP(Rcpp::NumericMatrix Sigma, double bound, int maxiter, Rcpp::NumericVector theta, Rcpp::NumericVector linear_func, Rcpp::NumericVector gradient, Rcpp::IntegerVector ever_active, Rcpp::IntegerVector nactive, double kkt_tol, double objective_tol, int max_active); -RcppExport SEXP _selectiveInference_solve_QP(SEXP SigmaSEXP, SEXP boundSEXP, SEXP maxiterSEXP, SEXP thetaSEXP, SEXP linear_funcSEXP, SEXP gradientSEXP, SEXP ever_activeSEXP, SEXP nactiveSEXP, SEXP kkt_tolSEXP, SEXP objective_tolSEXP, SEXP max_activeSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type Sigma(SigmaSEXP); - Rcpp::traits::input_parameter< double >::type bound(boundSEXP); - Rcpp::traits::input_parameter< int >::type maxiter(maxiterSEXP); - Rcpp::traits::input_parameter< Rcpp::NumericVector >::type theta(thetaSEXP); - Rcpp::traits::input_parameter< Rcpp::NumericVector >::type linear_func(linear_funcSEXP); - Rcpp::traits::input_parameter< Rcpp::NumericVector >::type gradient(gradientSEXP); - Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type ever_active(ever_activeSEXP); - Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type nactive(nactiveSEXP); - Rcpp::traits::input_parameter< double >::type kkt_tol(kkt_tolSEXP); - Rcpp::traits::input_parameter< double >::type objective_tol(objective_tolSEXP); - Rcpp::traits::input_parameter< int >::type max_active(max_activeSEXP); - rcpp_result_gen = Rcpp::wrap(solve_QP(Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active)); - return rcpp_result_gen; -END_RCPP -} -// solve_QP_wide -Rcpp::List solve_QP_wide(Rcpp::NumericMatrix X, double bound, int maxiter, Rcpp::NumericVector theta, Rcpp::NumericVector linear_func, Rcpp::NumericVector gradient, Rcpp::NumericVector X_theta, Rcpp::IntegerVector ever_active, Rcpp::IntegerVector nactive, double kkt_tol, double objective_tol, int max_active); -RcppExport SEXP _selectiveInference_solve_QP_wide(SEXP XSEXP, SEXP boundSEXP, SEXP maxiterSEXP, SEXP thetaSEXP, SEXP linear_funcSEXP, SEXP gradientSEXP, SEXP X_thetaSEXP, SEXP ever_activeSEXP, SEXP nactiveSEXP, SEXP kkt_tolSEXP, SEXP objective_tolSEXP, SEXP max_activeSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type X(XSEXP); - Rcpp::traits::input_parameter< double >::type bound(boundSEXP); - Rcpp::traits::input_parameter< int >::type maxiter(maxiterSEXP); - Rcpp::traits::input_parameter< Rcpp::NumericVector >::type theta(thetaSEXP); - Rcpp::traits::input_parameter< Rcpp::NumericVector >::type linear_func(linear_funcSEXP); - Rcpp::traits::input_parameter< Rcpp::NumericVector >::type gradient(gradientSEXP); - Rcpp::traits::input_parameter< Rcpp::NumericVector >::type X_theta(X_thetaSEXP); - Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type ever_active(ever_activeSEXP); - Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type nactive(nactiveSEXP); - Rcpp::traits::input_parameter< double >::type kkt_tol(kkt_tolSEXP); - Rcpp::traits::input_parameter< double >::type objective_tol(objective_tolSEXP); - Rcpp::traits::input_parameter< int >::type max_active(max_activeSEXP); - rcpp_result_gen = Rcpp::wrap(solve_QP_wide(X, bound, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, max_active)); - return rcpp_result_gen; -END_RCPP -} -// update1_ -Rcpp::List update1_(Rcpp::NumericMatrix Q2, Rcpp::NumericVector w, int m, int k); -RcppExport SEXP _selectiveInference_update1_(SEXP Q2SEXP, SEXP wSEXP, SEXP mSEXP, SEXP kSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type Q2(Q2SEXP); - Rcpp::traits::input_parameter< Rcpp::NumericVector >::type w(wSEXP); - Rcpp::traits::input_parameter< int >::type m(mSEXP); - Rcpp::traits::input_parameter< int >::type k(kSEXP); - rcpp_result_gen = Rcpp::wrap(update1_(Q2, w, m, k)); - return rcpp_result_gen; -END_RCPP -} -// downdate1_ -Rcpp::List downdate1_(Rcpp::NumericMatrix Q1, Rcpp::NumericMatrix R, int j0, int m, int n); -RcppExport SEXP _selectiveInference_downdate1_(SEXP Q1SEXP, SEXP RSEXP, SEXP j0SEXP, SEXP mSEXP, SEXP nSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type Q1(Q1SEXP); - Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type R(RSEXP); - Rcpp::traits::input_parameter< int >::type j0(j0SEXP); - Rcpp::traits::input_parameter< int >::type m(mSEXP); - Rcpp::traits::input_parameter< int >::type n(nSEXP); - rcpp_result_gen = Rcpp::wrap(downdate1_(Q1, R, j0, m, n)); - return rcpp_result_gen; -END_RCPP -} - -static const R_CallMethodDef CallEntries[] = { - {"_selectiveInference_solve_QP", (DL_FUNC) &_selectiveInference_solve_QP, 11}, - {"_selectiveInference_solve_QP_wide", (DL_FUNC) &_selectiveInference_solve_QP_wide, 12}, - {"_selectiveInference_update1_", (DL_FUNC) &_selectiveInference_update1_, 4}, - {"_selectiveInference_downdate1_", (DL_FUNC) &_selectiveInference_downdate1_, 5}, - {NULL, NULL, 0} -}; - -RcppExport void R_init_selectiveInference(DllInfo *dll) { - R_registerRoutines(dll, NULL, CallEntries, NULL, NULL); - R_useDynamicSymbols(dll, FALSE); -} From ede2816a33aed4a7bc1c8aad81585c549c1422d6 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 26 Oct 2017 14:30:59 -0700 Subject: [PATCH 298/493] WIP: function to fit randomized lasso --- selectiveInference/R/funs.randomized.R | 64 ++++++++++++++++++++++++++ tests/test_randomized.R | 14 ++++++ 2 files changed, 78 insertions(+) create mode 100644 selectiveInference/R/funs.randomized.R create mode 100644 tests/test_randomized.R diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R new file mode 100644 index 0000000..01e6aa4 --- /dev/null +++ b/selectiveInference/R/funs.randomized.R @@ -0,0 +1,64 @@ +# Functions to fit and "infer" about parameters in the +# randomized LASSO +# +# min 1/2 || y - \beta_0 - X \beta ||_2^2 + \lambda || \beta ||_1 - \omega^T\beta + \frac{\epsilon}{2} \|\beta\|^2_2 + +fit_randomized_lasso = function(X, + y, + lam, + noise_scale, + ridge_term, + noise_type=c('gaussian', 'laplace'), + max_iter=100, # how many iterations for each optimization problem + kkt_tol=1.e-4, # tolerance for the KKT conditions + objective_tol=1.e-8, # tolerance for relative decrease in objective + objective_stop=FALSE, + kkt_stop=TRUE, + param_stop=TRUE) +{ + + n = nrow(X); p = ncol(X) + + noise_type = match.arg(noise_type) + + if (noise_type == 'gaussian') { + D = Norm(mean=0, sd=noise_scale) + } + else if (noise_type == 'laplace') { + D = DExp(rate = 1 / noise_scale) # D is a Laplace distribution with rate = 1. + } + perturb_ = distr::r(D)(p) + + lam = as.numeric(lam) + if (length(lam) == 1) { + lam = rep(lam, p) + } + if (length(lam) != p) { + stop("Lagrange parameter should be single float or of length ncol(X)") + } + + soln = rep(0, p) + Xsoln = rep(0, n) + linear_func = (- t(X) %*% y - perturb_) + gradient = 1. * linear_func + ever_active = rep(0, p) + nactive = as.integer(0) + + result = solve_QP_wide(X, # design matrix + lam, # vector of Lagrange multipliers + ridge_term / n, # ridge_term + max_iter, + soln, + linear_func, + gradient, + Xsoln, + ever_active, + nactive, + kkt_tol, + objective_tol, + p, + objective_stop, # objective_stop + kkt_stop, # kkt_stop + param_stop) # param_stop + return(result) +} diff --git a/tests/test_randomized.R b/tests/test_randomized.R new file mode 100644 index 0000000..e4e35a1 --- /dev/null +++ b/tests/test_randomized.R @@ -0,0 +1,14 @@ +library(selectiveInference) + +test = function() { + + n = 100; p = 50 + X = matrix(rnorm(n * p), n, p) + y = rnorm(n) + lam = 20 / sqrt(n) + noise_scale = 0.01 * sqrt(n) + ridge_term = .1 / sqrt(n) + fit_randomized_lasso(X, y, lam, noise_scale, ridge_term) +} + +print(test()) From 32feb0eae830e98d5dcd28b74c327d9bb195b6d1 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 26 Oct 2017 21:36:18 -0700 Subject: [PATCH 299/493] check that solution is same as old code -- currently failing --- tests/test_debiasing.R | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 tests/test_debiasing.R diff --git a/tests/test_debiasing.R b/tests/test_debiasing.R new file mode 100644 index 0000000..27bd621 --- /dev/null +++ b/tests/test_debiasing.R @@ -0,0 +1,27 @@ +library(selectiveInference) +source('oldcode.R') + +n = 500; p = 50 + +X = matrix(rnorm(n * p), n, p) +S = t(X) %*% X / n + +mu = 7.791408e-02 + +A1 = debiasingMatrix(S, FALSE, n, 1:5, mu=mu, max_iter=1000) +A2 = debiasingMatrix(S / n, FALSE, n, 1:5, mu=mu, max_iter=1000) + +B1 = debiasingMatrix(X, TRUE, n, 1:5, mu=mu, max_iter=1000) +B2 = debiasingMatrix(X / sqrt(n), TRUE, n, 1:5, mu=mu, max_iter=1000) + +C1 = InverseLinfty(S, n, mu=mu, maxiter=1000)[1:5,] +C2 = InverseLinfty(S / n, n, mu=mu, maxiter=1000)[1:5,] + +par(mfrow=c(2,3)) +plot(A1[1,], C1[1,]) +plot(A1[1,], B1[1,]) +plot(B1[1,], C1[1,]) + +plot(A1[1,], A2[1,]) +plot(B1[1,], B2[1,]) +plot(C1[1,], C2[1,]) From 0a99f5fb50f48b4ab5cac1006b33c9acd8958ece Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 26 Oct 2017 22:17:39 -0700 Subject: [PATCH 300/493] bug found in qp solver -- look at tests/test_QP.R --- selectiveInference/NAMESPACE | 2 +- selectiveInference/R/funs.fixed.R | 5 + selectiveInference/R/funs.randomized.R | 2 + selectiveInference/src/Rcpp-debias.cpp | 4 + selectiveInference/src/debias.h | 2 + selectiveInference/src/quadratic_program.c | 4 +- .../src/quadratic_program_wide.c | 6 +- tests/test_QP.R | 15 ++ tests/test_debiasing.R | 172 +++++++++++++++++- 9 files changed, 204 insertions(+), 8 deletions(-) create mode 100644 tests/test_QP.R diff --git a/selectiveInference/NAMESPACE b/selectiveInference/NAMESPACE index d72d56a..c7d08a1 100644 --- a/selectiveInference/NAMESPACE +++ b/selectiveInference/NAMESPACE @@ -44,4 +44,4 @@ importFrom("stats", dnorm, lsfit, pexp, pnorm, predict, importFrom("stats", "coef", "df", "lm", "pf") importFrom("stats", "glm", "residuals", "vcov") importFrom("Rcpp", "sourceCpp") - +importFrom("distr", "Norm", "DExp") diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index aaceaaa..5490316 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -327,6 +327,7 @@ debiasingMatrix = function(Xinfo, # could be X or t(X) %*% X / n d warn_kkt=FALSE, # warn if KKT does not seem to be satisfied? max_iter=100, # how many iterations for each optimization problem kkt_tol=1.e-4, # tolerance for the KKT conditions + parameter_tol=1.e-4, # tolerance for relative convergence of parameter objective_tol=1.e-8 # tolerance for relative decrease in objective ) { @@ -363,6 +364,7 @@ debiasingMatrix = function(Xinfo, # could be X or t(X) %*% X / n d warn_kkt=FALSE, max_iter=max_iter, kkt_tol=kkt_tol, + parameter_tol=parameter_tol, objective_tol=objective_tol) if (warn_kkt && (!output$kkt_check)) { @@ -393,6 +395,7 @@ debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n dep warn_kkt=FALSE, # warn if KKT does not seem to be satisfied? max_iter=100, # how many iterations for each optimization problem kkt_tol=1.e-4, # tolerance for the KKT conditions + parameter_tol=1.e-4, # tolerance for relative convergence of parameter objective_tol=1.e-8 # tolerance for relative decrease in objective ) { @@ -433,6 +436,7 @@ debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n dep nactive, kkt_tol, objective_tol, + parameter_tol, max_active, FALSE, # objective_stop FALSE, # kkt_stop @@ -451,6 +455,7 @@ debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n dep nactive, kkt_tol, objective_tol, + parameter_tol, max_active, FALSE, # objective_stop FALSE, # kkt_stop diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 01e6aa4..25a0b95 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -11,6 +11,7 @@ fit_randomized_lasso = function(X, noise_type=c('gaussian', 'laplace'), max_iter=100, # how many iterations for each optimization problem kkt_tol=1.e-4, # tolerance for the KKT conditions + parameter_tol=1.e-8, # tolerance for relative convergence of parameter objective_tol=1.e-8, # tolerance for relative decrease in objective objective_stop=FALSE, kkt_stop=TRUE, @@ -56,6 +57,7 @@ fit_randomized_lasso = function(X, nactive, kkt_tol, objective_tol, + parameter_tol, p, objective_stop, # objective_stop kkt_stop, # kkt_stop diff --git a/selectiveInference/src/Rcpp-debias.cpp b/selectiveInference/src/Rcpp-debias.cpp index 24bbae8..9cda705 100644 --- a/selectiveInference/src/Rcpp-debias.cpp +++ b/selectiveInference/src/Rcpp-debias.cpp @@ -15,6 +15,7 @@ Rcpp::List solve_QP(Rcpp::NumericMatrix Sigma, Rcpp::IntegerVector nactive, double kkt_tol, double objective_tol, + double parameter_tol, int max_active, int objective_stop, int kkt_stop, @@ -52,6 +53,7 @@ Rcpp::List solve_QP(Rcpp::NumericMatrix Sigma, maxiter, kkt_tol, objective_tol, + parameter_tol, max_active, objective_stop, kkt_stop, @@ -92,6 +94,7 @@ Rcpp::List solve_QP_wide(Rcpp::NumericMatrix X, Rcpp::IntegerVector nactive, double kkt_tol, double objective_tol, + double parameter_tol, int max_active, int objective_stop, int kkt_stop, @@ -142,6 +145,7 @@ Rcpp::List solve_QP_wide(Rcpp::NumericMatrix X, maxiter, kkt_tol, objective_tol, + parameter_tol, max_active, objective_stop, kkt_stop, diff --git a/selectiveInference/src/debias.h b/selectiveInference/src/debias.h index 052af7a..d3db26d 100644 --- a/selectiveInference/src/debias.h +++ b/selectiveInference/src/debias.h @@ -16,6 +16,7 @@ int solve_qp(double *nndef_ptr, /* A non-negative definite matrix */ int maxiter, /* max number of iterations */ double kkt_tol, /* precision for checking KKT conditions */ double objective_tol, /* precision for checking relative decrease in objective value */ + double parameter_tol, /* precision for checking relative convergence of parameter */ int max_active, /* Upper limit for size of active set -- otherwise break */ int objective_stop, /* Break based on convergence of objective value? */ int kkt_stop, /* Break based on KKT? */ @@ -44,6 +45,7 @@ int solve_wide(double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX int maxiter, /* max number of iterations */ double kkt_tol, /* precision for checking KKT conditions */ double objective_tol, /* precision for checking relative decrease in objective value */ + double parameter_tol, /* precision for checking relative convergence of parameter */ int max_active, /* Upper limit for size of active set -- otherwise break */ int objective_stop, /* Break based on convergence of objective value? */ int kkt_stop, /* Break based on KKT? */ diff --git a/selectiveInference/src/quadratic_program.c b/selectiveInference/src/quadratic_program.c index 1bc7fa3..822ddf5 100644 --- a/selectiveInference/src/quadratic_program.c +++ b/selectiveInference/src/quadratic_program.c @@ -273,6 +273,7 @@ int solve_qp(double *nndef_ptr, /* A non-negative definite matrix */ int maxiter, /* max number of iterations */ double kkt_tol, /* precision for checking KKT conditions */ double objective_tol, /* precision for checking relative decrease in objective value */ + double parameter_tol, /* precision for checking relative convergence of parameter */ int max_active, /* Upper limit for size of active set -- otherwise break */ int objective_stop, /* Break based on convergence of objective value? */ int kkt_stop, /* Break based on KKT? */ @@ -292,7 +293,6 @@ int solve_qp(double *nndef_ptr, /* A non-negative definite matrix */ double norm_diff = 1.; double norm_last = 1.; double delta; - double threshold = 1.e-2; double *theta_ptr, *theta_old_ptr; if (objective_stop) { @@ -403,7 +403,7 @@ int solve_qp(double *nndef_ptr, /* A non-negative definite matrix */ norm_diff = sqrt(norm_diff); norm_last = sqrt(norm_last); - if (norm_diff < threshold * norm_last) { + if (norm_diff < parameter_tol * norm_last) { break; } } diff --git a/selectiveInference/src/quadratic_program_wide.c b/selectiveInference/src/quadratic_program_wide.c index c6cb9f3..3e4bdb0 100644 --- a/selectiveInference/src/quadratic_program_wide.c +++ b/selectiveInference/src/quadratic_program_wide.c @@ -4,7 +4,7 @@ // Solves a dual version of problem (4) of https://arxiv.org/pdf/1306.3171.pdf -// Dual problem: \text{min}_{\theta} 1/2 \|X\theta\|^2 - l^T\theta + \mu \|\theta\|_1 + \frac{\epsilon}{2} \|\theta\|^2_2 +// Dual problem: \text{min}_{\theta} 1/2 \|X\theta\|^2/n - l^T\theta + \mu \|\theta\|_1 + \frac{\epsilon}{2} \|\theta\|^2_2 // where l is `linear_func` below // This is the "negative" of the problem as in https://gist.github.com/jonathan-taylor/07774d209173f8bc4e42aa37712339bf @@ -393,6 +393,7 @@ int solve_wide(double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX int maxiter, /* max number of iterations */ double kkt_tol, /* precision for checking KKT conditions */ double objective_tol, /* precision for checking relative decrease in objective value */ + double parameter_tol, /* precision for checking relative convergence of parameter */ int max_active, /* Upper limit for size of active set -- otherwise break */ int objective_stop, /* Break based on convergence of objective value? */ int kkt_stop, /* Break based on KKT? */ @@ -412,7 +413,6 @@ int solve_wide(double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX double norm_diff = 1.; double norm_last = 1.; double delta; - double threshold = 1.e-2; double *theta_ptr_tmp, *theta_old_ptr_tmp; if (objective_stop) { @@ -552,7 +552,7 @@ int solve_wide(double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX norm_diff = sqrt(norm_diff); norm_last = sqrt(norm_last); - if (norm_diff < threshold * norm_last) { + if (norm_diff < parameter_tol * norm_last) { break; } } diff --git a/tests/test_QP.R b/tests/test_QP.R new file mode 100644 index 0000000..cf5ca64 --- /dev/null +++ b/tests/test_QP.R @@ -0,0 +1,15 @@ +library(selectiveInference) +### Test + +n = 100; p = 50 + +X = matrix(rnorm(n * p), n, p) +Y = rnorm(n) +lam = 2 + +soln1 = selectiveInference:::fit_randomized_lasso(X, Y, lam, 1.e-12, 0)$soln +G = glmnet(X, Y, intercept=FALSE, standardize=FALSE) +soln2 = coef(G, s=1/n, exact=TRUE, x=X, y=Y)[-1] + +print(soln1) +print(soln2) \ No newline at end of file diff --git a/tests/test_debiasing.R b/tests/test_debiasing.R index 27bd621..b1fdf24 100644 --- a/tests/test_debiasing.R +++ b/tests/test_debiasing.R @@ -1,7 +1,143 @@ library(selectiveInference) -source('oldcode.R') -n = 500; p = 50 + +## Approximates inverse covariance matrix theta +InverseLinfty <- function(sigma, n, resol=1.5, mu=NULL, maxiter=50, threshold=1e-10, verbose = TRUE) { + isgiven <- 1; + if (is.null(mu)){ + isgiven <- 0; + } + + p <- nrow(sigma); + M <- matrix(0, p, p); + xperc = 0; + xp = round(p/10); + for (i in 1:p) { + if ((i %% xp)==0){ + xperc = xperc+10; + if (verbose) { + print(paste(xperc,"% done",sep="")); } + } + if (isgiven==0){ + mu <- (1/sqrt(n)) * qnorm(1-(0.1/(p^2))); + } + mu.stop <- 0; + try.no <- 1; + incr <- 0; + while ((mu.stop != 1)&&(try.no<10)){ + last.beta <- beta + output <- InverseLinftyOneRow(sigma, i, mu, maxiter=maxiter, threshold=threshold) + beta <- output$optsol + iter <- output$iter + if (isgiven==1){ + mu.stop <- 1 + } + else{ + if (try.no==1){ + if (iter == (maxiter+1)){ + incr <- 1; + mu <- mu*resol; + } else { + incr <- 0; + mu <- mu/resol; + } + } + if (try.no > 1){ + if ((incr == 1)&&(iter == (maxiter+1))){ + mu <- mu*resol; + } + if ((incr == 1)&&(iter < (maxiter+1))){ + mu.stop <- 1; + } + if ((incr == 0)&&(iter < (maxiter+1))){ + mu <- mu/resol; + } + if ((incr == 0)&&(iter == (maxiter+1))){ + mu <- mu*resol; + beta <- last.beta; + mu.stop <- 1; + } + } + } + try.no <- try.no+1 + } + M[i,] <- beta; + } + return(M) +} + +InverseLinftyOneRow <- function ( sigma, i, mu, maxiter=50, threshold=1e-10) { + p <- nrow(sigma); + rho <- max(abs(sigma[i,-i])) / sigma[i,i]; + mu0 <- rho/(1+rho); + beta <- rep(0,p); + + #if (mu >= mu0){ + # beta[i] <- (1-mu0)/sigma[i,i]; + # returnlist <- list("optsol" = beta, "iter" = 0); + # return(returnlist); + #} + + diff.norm2 <- 1; + last.norm2 <- 1; + iter <- 1; + iter.old <- 1; + beta[i] <- (1-mu0)/sigma[i,i]; + beta.old <- beta; + sigma.tilde <- sigma; + diag(sigma.tilde) <- 0; + vs <- -sigma.tilde%*%beta; + + while ((iter <= maxiter) && (diff.norm2 >= threshold*last.norm2)){ + + for (j in 1:p){ + oldval <- beta[j]; + v <- vs[j]; + if (j==i) + v <- v+1; + beta[j] <- SoftThreshold(v,mu)/sigma[j,j]; + if (oldval != beta[j]){ + vs <- vs + (oldval-beta[j])*sigma.tilde[,j]; + } + } + + iter <- iter + 1; + if (iter==2*iter.old){ + d <- beta - beta.old; + diff.norm2 <- sqrt(sum(d*d)); + last.norm2 <-sqrt(sum(beta*beta)); + iter.old <- iter; + beta.old <- beta; + #if (iter>10) + # vs <- -sigma.tilde%*%beta; + } + + # print(c(iter, maxiter, diff.norm2, threshold * last.norm2, threshold, mu)) + + } + + returnlist <- list("optsol" = beta, "iter" = iter) + return(returnlist) +} + +SoftThreshold <- function( x, lambda ) { + # + # Standard soft thresholding + # + if (x>lambda){ + return (x-lambda);} + else { + if (x< (-lambda)){ + return (x+lambda);} + else { + return (0); } + } +} + + +### Test + +n = 100; p = 50 X = matrix(rnorm(n * p), n, p) S = t(X) %*% X / n @@ -25,3 +161,35 @@ plot(B1[1,], C1[1,]) plot(A1[1,], A2[1,]) plot(B1[1,], B2[1,]) plot(C1[1,], C2[1,]) + +print(c('A', sum(A1[1,] == 0))) +print(c('B', sum(B1[1,] == 0))) +print(c('C', sum(C1[1,] == 0))) + +## Are our points feasible + +feasibility = function(S, soln, j, mu) { + p = nrow(S) + E = rep(0, p) + E[j] = 1 + G = S %*% soln - E + return(c(max(abs(G)), mu)) +} + +print(c('feasibility A', feasibility(S, A1[1,], 1, mu))) +print(c('feasibility B', feasibility(S, B1[1,], 1, mu))) +print(c('feasibility C', feasibility(S, C1[1,], 1, mu))) + +active_KKT = function(S, soln, j, mu) { + p = nrow(S) + E = rep(0, p) + E[j] = 1 + G = S %*% soln - E + return(c(G[soln != 0] * sign(soln)[soln != 0], mu)) +} + +print(c('active_KKT A', active_KKT(S, A1[1,], 1, mu))) +print(c('active_KKT B', active_KKT(S, B1[1,], 1, mu))) +print(c('active_KKT C', active_KKT(S, C1[1,], 1, mu))) + + From 242218e6f3da9153fca4e3a1cc0fcd47b0ebad8a Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 26 Oct 2017 22:19:20 -0700 Subject: [PATCH 301/493] allowing randomization to be 0 in solver --- selectiveInference/R/funs.randomized.R | 18 +++++++++++------- tests/test_QP.R | 2 +- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 25a0b95..b79e2fb 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -22,14 +22,18 @@ fit_randomized_lasso = function(X, noise_type = match.arg(noise_type) - if (noise_type == 'gaussian') { - D = Norm(mean=0, sd=noise_scale) + if (noise_scale > 0) { + if (noise_type == 'gaussian') { + D = Norm(mean=0, sd=noise_scale) + } + else if (noise_type == 'laplace') { + D = DExp(rate = 1 / noise_scale) # D is a Laplace distribution with rate = 1. + } + perturb_ = distr::r(D)(p) + } else { + perturb_ = rep(0, p) } - else if (noise_type == 'laplace') { - D = DExp(rate = 1 / noise_scale) # D is a Laplace distribution with rate = 1. - } - perturb_ = distr::r(D)(p) - + lam = as.numeric(lam) if (length(lam) == 1) { lam = rep(lam, p) diff --git a/tests/test_QP.R b/tests/test_QP.R index cf5ca64..4aebec3 100644 --- a/tests/test_QP.R +++ b/tests/test_QP.R @@ -7,7 +7,7 @@ X = matrix(rnorm(n * p), n, p) Y = rnorm(n) lam = 2 -soln1 = selectiveInference:::fit_randomized_lasso(X, Y, lam, 1.e-12, 0)$soln +soln1 = selectiveInference:::fit_randomized_lasso(X, Y, lam, 0, 0)$soln G = glmnet(X, Y, intercept=FALSE, standardize=FALSE) soln2 = coef(G, s=1/n, exact=TRUE, x=X, y=Y)[-1] From 360dcbd722a674f9168ae7f2c1aa230b024ad95c Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 26 Oct 2017 22:25:32 -0700 Subject: [PATCH 302/493] cosmetic edit --- selectiveInference/src/Rcpp-debias.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/selectiveInference/src/Rcpp-debias.cpp b/selectiveInference/src/Rcpp-debias.cpp index 9cda705..5c18184 100644 --- a/selectiveInference/src/Rcpp-debias.cpp +++ b/selectiveInference/src/Rcpp-debias.cpp @@ -112,12 +112,13 @@ Rcpp::List solve_QP_wide(Rcpp::NumericMatrix X, Rcpp::IntegerVector need_update(nfeature); - // Extract the diagonal + Rcpp::NumericVector theta_old(nfeature); + + // Extract the diagonal -- divide by ncase + Rcpp::NumericVector nndef_diag(nfeature); double *nndef_diag_p = nndef_diag.begin(); - Rcpp::NumericVector theta_old(nfeature); - for (ifeature=0; ifeature Date: Thu, 26 Oct 2017 22:46:48 -0700 Subject: [PATCH 303/493] LASSO solver is right up to scale --- tests/test_QP.R | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/test_QP.R b/tests/test_QP.R index 4aebec3..61c4d53 100644 --- a/tests/test_QP.R +++ b/tests/test_QP.R @@ -9,7 +9,8 @@ lam = 2 soln1 = selectiveInference:::fit_randomized_lasso(X, Y, lam, 0, 0)$soln G = glmnet(X, Y, intercept=FALSE, standardize=FALSE) -soln2 = coef(G, s=1/n, exact=TRUE, x=X, y=Y)[-1] +soln2 = coef(G, s=lam/n, exact=TRUE, x=X, y=Y)[-1] print(soln1) -print(soln2) \ No newline at end of file +print(soln2) +plot(soln1, soln2) From 506a205b316e71e2a7f2c562afc14d20a9b0ffef Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 26 Oct 2017 23:55:49 -0700 Subject: [PATCH 304/493] BF: fixing Xsoln incorrectly set in wide solver --- selectiveInference/R/funs.fixed.R | 24 +++++++++++++------ selectiveInference/R/funs.randomized.R | 4 ++-- .../src/quadratic_program_wide.c | 2 +- tests/test_QP.R | 2 +- tests/test_debiasing.R | 13 ++++++---- 5 files changed, 30 insertions(+), 15 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 5490316..22a31e5 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -326,6 +326,9 @@ debiasingMatrix = function(Xinfo, # could be X or t(X) %*% X / n d max_try=10, # how many steps in linesearch? warn_kkt=FALSE, # warn if KKT does not seem to be satisfied? max_iter=100, # how many iterations for each optimization problem + kkt_stop=TRUE, # stop based on KKT conditions? + parameter_stop=TRUE, # stop based on relative convergence of parameter? + objective_stop=TRUE, # stop based on relative decrease in objective? kkt_tol=1.e-4, # tolerance for the KKT conditions parameter_tol=1.e-4, # tolerance for relative convergence of parameter objective_tol=1.e-8 # tolerance for relative decrease in objective @@ -363,6 +366,9 @@ debiasingMatrix = function(Xinfo, # could be X or t(X) %*% X / n d max_try=max_try, warn_kkt=FALSE, max_iter=max_iter, + kkt_stop=kkt_stop, + parameter_stop=parameter_stop, + objective_stop=objective_stop, kkt_tol=kkt_tol, parameter_tol=parameter_tol, objective_tol=objective_tol) @@ -394,6 +400,9 @@ debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n dep max_try=10, # how many steps in linesearch? warn_kkt=FALSE, # warn if KKT does not seem to be satisfied? max_iter=100, # how many iterations for each optimization problem + kkt_stop=TRUE, # stop based on KKT conditions? + parameter_stop=TRUE, # stop based on relative convergence of parameter? + objective_stop=TRUE, # stop based on relative decrease in objective? kkt_tol=1.e-4, # tolerance for the KKT conditions parameter_tol=1.e-4, # tolerance for relative convergence of parameter objective_tol=1.e-8 # tolerance for relative decrease in objective @@ -423,6 +432,8 @@ debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n dep last_output = NULL + Xsoln = rep(0, n) + while (counter_idx < max_try) { if (!is_wide) { @@ -438,11 +449,10 @@ debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n dep objective_tol, parameter_tol, max_active, - FALSE, # objective_stop - FALSE, # kkt_stop - TRUE) # param_stop + objective_stop, + kkt_stop, + parameter_stop) } else { - Xsoln = rep(0, nrow(Xinfo)) result = solve_QP_wide(Xinfo, # this is a design matrix rep(mu, p), # vector of Lagrange multipliers 0, # ridge_term @@ -457,9 +467,9 @@ debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n dep objective_tol, parameter_tol, max_active, - FALSE, # objective_stop - FALSE, # kkt_stop - TRUE) # param_stop + objective_stop, + kkt_stop, + parameter_stop) } diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index b79e2fb..7bf6008 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -44,13 +44,13 @@ fit_randomized_lasso = function(X, soln = rep(0, p) Xsoln = rep(0, n) - linear_func = (- t(X) %*% y - perturb_) + linear_func = (- t(X) %*% y - perturb_) / n gradient = 1. * linear_func ever_active = rep(0, p) nactive = as.integer(0) result = solve_QP_wide(X, # design matrix - lam, # vector of Lagrange multipliers + lam / n, # vector of Lagrange multipliers ridge_term / n, # ridge_term max_iter, soln, diff --git a/selectiveInference/src/quadratic_program_wide.c b/selectiveInference/src/quadratic_program_wide.c index 3e4bdb0..3546fcd 100644 --- a/selectiveInference/src/quadratic_program_wide.c +++ b/selectiveInference/src/quadratic_program_wide.c @@ -4,7 +4,7 @@ // Solves a dual version of problem (4) of https://arxiv.org/pdf/1306.3171.pdf -// Dual problem: \text{min}_{\theta} 1/2 \|X\theta\|^2/n - l^T\theta + \mu \|\theta\|_1 + \frac{\epsilon}{2} \|\theta\|^2_2 +// Dual problem: \text{min}_{\theta} 1/2 \|X\theta\|^2/n + l^T\theta + \mu \|\theta\|_1 + \frac{\epsilon}{2} \|\theta\|^2_2 // where l is `linear_func` below // This is the "negative" of the problem as in https://gist.github.com/jonathan-taylor/07774d209173f8bc4e42aa37712339bf diff --git a/tests/test_QP.R b/tests/test_QP.R index 61c4d53..1764225 100644 --- a/tests/test_QP.R +++ b/tests/test_QP.R @@ -1,7 +1,7 @@ library(selectiveInference) ### Test -n = 100; p = 50 +n = 80; p = 50 X = matrix(rnorm(n * p), n, p) Y = rnorm(n) diff --git a/tests/test_debiasing.R b/tests/test_debiasing.R index b1fdf24..e2743fe 100644 --- a/tests/test_debiasing.R +++ b/tests/test_debiasing.R @@ -144,16 +144,19 @@ S = t(X) %*% X / n mu = 7.791408e-02 -A1 = debiasingMatrix(S, FALSE, n, 1:5, mu=mu, max_iter=1000) -A2 = debiasingMatrix(S / n, FALSE, n, 1:5, mu=mu, max_iter=1000) +tol = 1.e-12 -B1 = debiasingMatrix(X, TRUE, n, 1:5, mu=mu, max_iter=1000) -B2 = debiasingMatrix(X / sqrt(n), TRUE, n, 1:5, mu=mu, max_iter=1000) +A1 = debiasingMatrix(S, FALSE, n, 1:5, mu=mu, max_iter=1000, kkt_tol=tol, objective_tol=tol, parameter_tol=tol) +A2 = debiasingMatrix(S / n, FALSE, n, 1:5, mu=mu, max_iter=1000, kkt_tol=tol, objective_tol=tol, parameter_tol=tol) + +B1 = debiasingMatrix(X, TRUE, n, 1:5, mu=mu, max_iter=1000, kkt_tol=tol, objective_tol=tol, parameter_tol=tol) +B2 = debiasingMatrix(X / sqrt(n), TRUE, n, 1:5, mu=mu, max_iter=1000, kkt_tol=tol, objective_tol=tol, parameter_tol=tol) C1 = InverseLinfty(S, n, mu=mu, maxiter=1000)[1:5,] C2 = InverseLinfty(S / n, n, mu=mu, maxiter=1000)[1:5,] par(mfrow=c(2,3)) + plot(A1[1,], C1[1,]) plot(A1[1,], B1[1,]) plot(B1[1,], C1[1,]) @@ -185,6 +188,8 @@ active_KKT = function(S, soln, j, mu) { E = rep(0, p) E[j] = 1 G = S %*% soln - E + print(which(soln != 0)) + print(G[j]) return(c(G[soln != 0] * sign(soln)[soln != 0], mu)) } From 0be39c476d946569d472a4c7e41b232a9eca67e0 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Fri, 27 Oct 2017 00:03:09 -0700 Subject: [PATCH 305/493] gradient not current? --- selectiveInference/R/funs.fixed.R | 3 ++- tests/test_debiasing.R | 13 +++++++------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 22a31e5..8d3f727 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -525,7 +525,8 @@ debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n dep } return(list(soln=result$soln, - kkt_check=result$kkt_check)) + kkt_check=result$kkt_check, + gradient=result$gradient)) } diff --git a/tests/test_debiasing.R b/tests/test_debiasing.R index e2743fe..50b43d2 100644 --- a/tests/test_debiasing.R +++ b/tests/test_debiasing.R @@ -146,14 +146,15 @@ mu = 7.791408e-02 tol = 1.e-12 -A1 = debiasingMatrix(S, FALSE, n, 1:5, mu=mu, max_iter=1000, kkt_tol=tol, objective_tol=tol, parameter_tol=tol) -A2 = debiasingMatrix(S / n, FALSE, n, 1:5, mu=mu, max_iter=1000, kkt_tol=tol, objective_tol=tol, parameter_tol=tol) +rows = c(1:2) +A1 = debiasingMatrix(S, FALSE, n, rows, mu=mu, max_iter=1000, kkt_tol=tol, objective_tol=tol, parameter_tol=tol) +A2 = debiasingMatrix(S / n, FALSE, n, rows, mu=mu, max_iter=1000, kkt_tol=tol, objective_tol=tol, parameter_tol=tol) -B1 = debiasingMatrix(X, TRUE, n, 1:5, mu=mu, max_iter=1000, kkt_tol=tol, objective_tol=tol, parameter_tol=tol) -B2 = debiasingMatrix(X / sqrt(n), TRUE, n, 1:5, mu=mu, max_iter=1000, kkt_tol=tol, objective_tol=tol, parameter_tol=tol) +B1 = debiasingMatrix(X, TRUE, n, rows, mu=mu, max_iter=1000, kkt_tol=tol, objective_tol=tol, parameter_tol=tol) +B2 = debiasingMatrix(X / sqrt(n), TRUE, n, rows, mu=mu, max_iter=1000, kkt_tol=tol, objective_tol=tol, parameter_tol=tol) -C1 = InverseLinfty(S, n, mu=mu, maxiter=1000)[1:5,] -C2 = InverseLinfty(S / n, n, mu=mu, maxiter=1000)[1:5,] +C1 = InverseLinfty(S, n, mu=mu, maxiter=1000)[rows,] +C2 = InverseLinfty(S / n, n, mu=mu, maxiter=1000)[rows,] par(mfrow=c(2,3)) From 3ee2a434ff0e8e8c138cc688931f84eb8144ab26 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Fri, 27 Oct 2017 00:07:30 -0700 Subject: [PATCH 306/493] print R2 from lm --- tests/test_QP.R | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/test_QP.R b/tests/test_QP.R index 1764225..79638e0 100644 --- a/tests/test_QP.R +++ b/tests/test_QP.R @@ -14,3 +14,4 @@ soln2 = coef(G, s=lam/n, exact=TRUE, x=X, y=Y)[-1] print(soln1) print(soln2) plot(soln1, soln2) +print(summary(lm(soln1 ~ soln2))) \ No newline at end of file From 92812fc08b09015b8e713dd3dd3e5f44100dd9c6 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Fri, 27 Oct 2017 09:47:31 -0700 Subject: [PATCH 307/493] without linesearch we know agree with Adel's code at fixed mu --- selectiveInference/DESCRIPTION | 2 +- selectiveInference/NAMESPACE | 2 +- selectiveInference/R/funs.fixed.R | 29 ++++++---- selectiveInference/R/funs.randomized.R | 31 +++++----- tests/test_debiasing.R | 80 +++++++++++++------------- 5 files changed, 75 insertions(+), 69 deletions(-) diff --git a/selectiveInference/DESCRIPTION b/selectiveInference/DESCRIPTION index d902622..fad072d 100644 --- a/selectiveInference/DESCRIPTION +++ b/selectiveInference/DESCRIPTION @@ -9,7 +9,7 @@ Maintainer: Rob Tibshirani Depends: glmnet, intervals, - survival + survival, Suggests: Rmpfr Description: New tools for post-selection inference, for use with forward diff --git a/selectiveInference/NAMESPACE b/selectiveInference/NAMESPACE index c7d08a1..d72d56a 100644 --- a/selectiveInference/NAMESPACE +++ b/selectiveInference/NAMESPACE @@ -44,4 +44,4 @@ importFrom("stats", dnorm, lsfit, pexp, pnorm, predict, importFrom("stats", "coef", "df", "lm", "pf") importFrom("stats", "glm", "residuals", "vcov") importFrom("Rcpp", "sourceCpp") -importFrom("distr", "Norm", "DExp") + diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 8d3f727..1928487 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -319,7 +319,7 @@ debiasingMatrix = function(Xinfo, # could be X or t(X) %*% X / n d nsample, rows, verbose=FALSE, - mu=NULL, # starting value of mu + bound=NULL, # starting value of bound linesearch=TRUE, # do a linesearch? scaling_factor=1.5, # multiplicative factor for linesearch max_active=NULL, # how big can active set get? @@ -342,8 +342,8 @@ debiasingMatrix = function(Xinfo, # could be X or t(X) %*% X / n d p = ncol(Xinfo); M = matrix(0, length(rows), p); - if (is.null(mu)) { - mu = (1/sqrt(nsample)) * qnorm(1-(0.1/(p^2))) + if (is.null(bound)) { + bound = (1/sqrt(nsample)) * qnorm(1-(0.1/(p^2))) } xperc = 0; @@ -359,7 +359,7 @@ debiasingMatrix = function(Xinfo, # could be X or t(X) %*% X / n d output = debiasingRow(Xinfo, # could be X or t(X) %*% X / n depending on is_wide is_wide, row, - mu, + bound, linesearch=linesearch, scaling_factor=scaling_factor, max_active=max_active, @@ -393,7 +393,7 @@ debiasingMatrix = function(Xinfo, # could be X or t(X) %*% X / n d debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n depending on is_wide is_wide, row, - mu, + bound, linesearch=TRUE, # do a linesearch? scaling_factor=1.5, # multiplicative factor for linesearch max_active=NULL, # how big can active set get? @@ -414,9 +414,11 @@ debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n dep max_active = min(nrow(Xinfo), ncol(Xinfo)) } + # Initialize variables soln = rep(0, p) + soln = as.numeric(soln) ever_active = rep(0, p) ever_active[1] = row # 1-based ever_active = as.integer(ever_active) @@ -432,13 +434,16 @@ debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n dep last_output = NULL - Xsoln = rep(0, n) + if (is_wide) { + n = nrow(Xinfo) + Xsoln = as.numeric(rep(0, n)) + } while (counter_idx < max_try) { if (!is_wide) { result = solve_QP(Xinfo, # this is non-neg-def matrix - mu, + bound, max_iter, soln, linear_func, @@ -453,9 +458,9 @@ debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n dep kkt_stop, parameter_stop) } else { - result = solve_QP_wide(Xinfo, # this is a design matrix - rep(mu, p), # vector of Lagrange multipliers - 0, # ridge_term + result = solve_QP_wide(Xinfo, # this is a design matrix + as.numeric(rep(bound, p)), # vector of Lagrange multipliers + 0, # ridge_term max_iter, soln, linear_func, @@ -493,13 +498,13 @@ debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n dep if ((iter < (max_iter+1)) && (counter_idx > 1)) { break; # we've found a feasible point and solved the problem } - mu = mu * scaling_factor; + bound = bound * scaling_factor; } else { # trying to drop the bound parameter further if ((iter == (max_iter + 1)) && (counter_idx > 1)) { result = last_output; # problem seems infeasible because we didn't solve it break; # so we revert to previously found solution } - mu = mu / scaling_factor; + bound = bound / scaling_factor; } # If the active set has grown to a certain size diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 7bf6008..3a171f7 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -3,19 +3,19 @@ # # min 1/2 || y - \beta_0 - X \beta ||_2^2 + \lambda || \beta ||_1 - \omega^T\beta + \frac{\epsilon}{2} \|\beta\|^2_2 -fit_randomized_lasso = function(X, - y, - lam, - noise_scale, - ridge_term, - noise_type=c('gaussian', 'laplace'), - max_iter=100, # how many iterations for each optimization problem - kkt_tol=1.e-4, # tolerance for the KKT conditions - parameter_tol=1.e-8, # tolerance for relative convergence of parameter - objective_tol=1.e-8, # tolerance for relative decrease in objective - objective_stop=FALSE, - kkt_stop=TRUE, - param_stop=TRUE) +randomizedLASSO = function(X, + y, + lam, + noise_scale, + ridge_term, + noise_type=c('gaussian', 'laplace'), + max_iter=100, # how many iterations for each optimization problem + kkt_tol=1.e-4, # tolerance for the KKT conditions + parameter_tol=1.e-8, # tolerance for relative convergence of parameter + objective_tol=1.e-8, # tolerance for relative decrease in objective + objective_stop=FALSE, + kkt_stop=TRUE, + param_stop=TRUE) { n = nrow(X); p = ncol(X) @@ -24,12 +24,11 @@ fit_randomized_lasso = function(X, if (noise_scale > 0) { if (noise_type == 'gaussian') { - D = Norm(mean=0, sd=noise_scale) + perturb_ = rnorm(p) * noise_scale } else if (noise_type == 'laplace') { - D = DExp(rate = 1 / noise_scale) # D is a Laplace distribution with rate = 1. + perturb_ = rexp(p) * (2 * rbinom(p, 1, 0.5) - 1) * noise_scale } - perturb_ = distr::r(D)(p) } else { perturb_ = rep(0, p) } diff --git a/tests/test_debiasing.R b/tests/test_debiasing.R index 50b43d2..8e81b16 100644 --- a/tests/test_debiasing.R +++ b/tests/test_debiasing.R @@ -2,9 +2,9 @@ library(selectiveInference) ## Approximates inverse covariance matrix theta -InverseLinfty <- function(sigma, n, resol=1.5, mu=NULL, maxiter=50, threshold=1e-10, verbose = TRUE) { +InverseLinfty <- function(sigma, n, resol=1.5, bound=NULL, maxiter=50, threshold=1e-10, verbose = TRUE) { isgiven <- 1; - if (is.null(mu)){ + if (is.null(bound)){ isgiven <- 0; } @@ -19,43 +19,43 @@ InverseLinfty <- function(sigma, n, resol=1.5, mu=NULL, maxiter=50, threshold=1e print(paste(xperc,"% done",sep="")); } } if (isgiven==0){ - mu <- (1/sqrt(n)) * qnorm(1-(0.1/(p^2))); + bound <- (1/sqrt(n)) * qnorm(1-(0.1/(p^2))); } - mu.stop <- 0; + bound.stop <- 0; try.no <- 1; incr <- 0; - while ((mu.stop != 1)&&(try.no<10)){ + while ((bound.stop != 1)&&(try.no<10)){ last.beta <- beta - output <- InverseLinftyOneRow(sigma, i, mu, maxiter=maxiter, threshold=threshold) + output <- InverseLinftyOneRow(sigma, i, bound, maxiter=maxiter, threshold=threshold) beta <- output$optsol iter <- output$iter if (isgiven==1){ - mu.stop <- 1 + bound.stop <- 1 } else{ if (try.no==1){ if (iter == (maxiter+1)){ incr <- 1; - mu <- mu*resol; + bound <- bound*resol; } else { incr <- 0; - mu <- mu/resol; + bound <- bound/resol; } } if (try.no > 1){ if ((incr == 1)&&(iter == (maxiter+1))){ - mu <- mu*resol; + bound <- bound*resol; } if ((incr == 1)&&(iter < (maxiter+1))){ - mu.stop <- 1; + bound.stop <- 1; } if ((incr == 0)&&(iter < (maxiter+1))){ - mu <- mu/resol; + bound <- bound/resol; } if ((incr == 0)&&(iter == (maxiter+1))){ - mu <- mu*resol; + bound <- bound*resol; beta <- last.beta; - mu.stop <- 1; + bound.stop <- 1; } } } @@ -66,14 +66,14 @@ InverseLinfty <- function(sigma, n, resol=1.5, mu=NULL, maxiter=50, threshold=1e return(M) } -InverseLinftyOneRow <- function ( sigma, i, mu, maxiter=50, threshold=1e-10) { +InverseLinftyOneRow <- function ( sigma, i, bound, maxiter=50, threshold=1e-10) { p <- nrow(sigma); rho <- max(abs(sigma[i,-i])) / sigma[i,i]; - mu0 <- rho/(1+rho); + bound0 <- rho/(1+rho); beta <- rep(0,p); - #if (mu >= mu0){ - # beta[i] <- (1-mu0)/sigma[i,i]; + #if (bound >= bound0){ + # beta[i] <- (1-bound0)/sigma[i,i]; # returnlist <- list("optsol" = beta, "iter" = 0); # return(returnlist); #} @@ -82,7 +82,7 @@ InverseLinftyOneRow <- function ( sigma, i, mu, maxiter=50, threshold=1e-10) { last.norm2 <- 1; iter <- 1; iter.old <- 1; - beta[i] <- (1-mu0)/sigma[i,i]; + beta[i] <- (1-bound0)/sigma[i,i]; beta.old <- beta; sigma.tilde <- sigma; diag(sigma.tilde) <- 0; @@ -95,7 +95,7 @@ InverseLinftyOneRow <- function ( sigma, i, mu, maxiter=50, threshold=1e-10) { v <- vs[j]; if (j==i) v <- v+1; - beta[j] <- SoftThreshold(v,mu)/sigma[j,j]; + beta[j] <- SoftThreshold(v,bound)/sigma[j,j]; if (oldval != beta[j]){ vs <- vs + (oldval-beta[j])*sigma.tilde[,j]; } @@ -112,7 +112,7 @@ InverseLinftyOneRow <- function ( sigma, i, mu, maxiter=50, threshold=1e-10) { # vs <- -sigma.tilde%*%beta; } - # print(c(iter, maxiter, diff.norm2, threshold * last.norm2, threshold, mu)) + # print(c(iter, maxiter, diff.norm2, threshold * last.norm2, threshold, bound)) } @@ -142,19 +142,21 @@ n = 100; p = 50 X = matrix(rnorm(n * p), n, p) S = t(X) %*% X / n -mu = 7.791408e-02 +debiasing_bound = 7.791408e-02 tol = 1.e-12 -rows = c(1:2) -A1 = debiasingMatrix(S, FALSE, n, rows, mu=mu, max_iter=1000, kkt_tol=tol, objective_tol=tol, parameter_tol=tol) -A2 = debiasingMatrix(S / n, FALSE, n, rows, mu=mu, max_iter=1000, kkt_tol=tol, objective_tol=tol, parameter_tol=tol) +rows = as.integer(c(1:2)) +print('here') +print(rows) +A1 = debiasingMatrix(S, FALSE, n, rows, bound=debiasing_bound, max_iter=1000, kkt_tol=tol, objective_tol=tol, parameter_tol=tol, linesearch=FALSE) -B1 = debiasingMatrix(X, TRUE, n, rows, mu=mu, max_iter=1000, kkt_tol=tol, objective_tol=tol, parameter_tol=tol) -B2 = debiasingMatrix(X / sqrt(n), TRUE, n, rows, mu=mu, max_iter=1000, kkt_tol=tol, objective_tol=tol, parameter_tol=tol) +A2 = debiasingMatrix(S / n, FALSE, n, rows, bound=debiasing_bound, max_iter=1000, kkt_tol=tol, objective_tol=tol, parameter_tol=tol, linesearch=FALSE) +B1 = debiasingMatrix(X, TRUE, n, rows, bound=debiasing_bound, max_iter=1000, kkt_tol=tol, objective_tol=tol, parameter_tol=tol, linesearch=FALSE) +B2 = debiasingMatrix(X / sqrt(n), TRUE, n, rows, bound=debiasing_bound, max_iter=1000, kkt_tol=tol, objective_tol=tol, parameter_tol=tol, linesearch=FALSE) -C1 = InverseLinfty(S, n, mu=mu, maxiter=1000)[rows,] -C2 = InverseLinfty(S / n, n, mu=mu, maxiter=1000)[rows,] +C1 = InverseLinfty(S, n, bound=debiasing_bound, maxiter=1000)[rows,] +C2 = InverseLinfty(S / n, n, bound=debiasing_bound, maxiter=1000)[rows,] par(mfrow=c(2,3)) @@ -172,30 +174,30 @@ print(c('C', sum(C1[1,] == 0))) ## Are our points feasible -feasibility = function(S, soln, j, mu) { +feasibility = function(S, soln, j, debiasing_bound) { p = nrow(S) E = rep(0, p) E[j] = 1 G = S %*% soln - E - return(c(max(abs(G)), mu)) + return(c(max(abs(G)), debiasing_bound)) } -print(c('feasibility A', feasibility(S, A1[1,], 1, mu))) -print(c('feasibility B', feasibility(S, B1[1,], 1, mu))) -print(c('feasibility C', feasibility(S, C1[1,], 1, mu))) +print(c('feasibility A', feasibility(S, A1[1,], 1, debiasing_bound))) +print(c('feasibility B', feasibility(S, B1[1,], 1, debiasing_bound))) +print(c('feasibility C', feasibility(S, C1[1,], 1, debiasing_bound))) -active_KKT = function(S, soln, j, mu) { +active_KKT = function(S, soln, j, debiasing_bound) { p = nrow(S) E = rep(0, p) E[j] = 1 G = S %*% soln - E print(which(soln != 0)) print(G[j]) - return(c(G[soln != 0] * sign(soln)[soln != 0], mu)) + return(c(G[soln != 0] * sign(soln)[soln != 0], debiasing_bound)) } -print(c('active_KKT A', active_KKT(S, A1[1,], 1, mu))) -print(c('active_KKT B', active_KKT(S, B1[1,], 1, mu))) -print(c('active_KKT C', active_KKT(S, C1[1,], 1, mu))) +print(c('active_KKT A', active_KKT(S, A1[1,], 1, debiasing_bound))) +print(c('active_KKT B', active_KKT(S, B1[1,], 1, debiasing_bound))) +print(c('active_KKT C', active_KKT(S, C1[1,], 1, debiasing_bound))) From abf0824bde4fc76ddde1b5aa66669ff7ab19a469 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Fri, 27 Oct 2017 10:03:45 -0700 Subject: [PATCH 308/493] fixing documentation --- selectiveInference/NAMESPACE | 1 + selectiveInference/man/debiasingMatrix.Rd | 27 +++++++++-- selectiveInference/src/quadratic_program.c | 43 +++++++++-------- .../src/quadratic_program_wide.c | 46 ++++++++++--------- 4 files changed, 71 insertions(+), 46 deletions(-) diff --git a/selectiveInference/NAMESPACE b/selectiveInference/NAMESPACE index d72d56a..e7b1e80 100644 --- a/selectiveInference/NAMESPACE +++ b/selectiveInference/NAMESPACE @@ -43,5 +43,6 @@ importFrom("stats", dnorm, lsfit, pexp, pnorm, predict, qnorm, rnorm, sd, uniroot, dchisq, model.matrix, pchisq) importFrom("stats", "coef", "df", "lm", "pf") importFrom("stats", "glm", "residuals", "vcov") +importFrom("stats", "rbinom", "rexp") importFrom("Rcpp", "sourceCpp") diff --git a/selectiveInference/man/debiasingMatrix.Rd b/selectiveInference/man/debiasingMatrix.Rd index 4da925e..b95c75b 100644 --- a/selectiveInference/man/debiasingMatrix.Rd +++ b/selectiveInference/man/debiasingMatrix.Rd @@ -16,14 +16,18 @@ debiasingMatrix(Xinfo, nsample, rows, verbose=FALSE, - mu=NULL, + bound=NULL, linesearch=TRUE, scaling_factor=1.5, max_active=NULL, max_try=10, warn_kkt=FALSE, max_iter=100, + kkt_stop=TRUE, + parameter_stop=TRUE, + objective_stop=TRUE, kkt_tol=1.e-4, + parameter_tol=1.e-4, objective_tol=1.e-8) } \arguments{ @@ -38,7 +42,7 @@ matrix of interest is t(X) %*% X / nrow(X). } \item{nsample}{ Number of samples used in forming the cross-covariance matrix. -Used for default value of the bound parameter mu. +Used for default value of the bound parameter. } \item{rows}{ Which rows of the approximate inverse to compute. @@ -46,7 +50,7 @@ Which rows of the approximate inverse to compute. \item{verbose}{ Print out progress as rows are being computed. } -\item{mu}{ +\item{bound}{ Initial bound parameter for each row. Will be changed if linesearch is TRUE. } @@ -72,10 +76,25 @@ descent algorithm. How many full iterations to run of the coordinate descent for each value of the bound parameter. } +\item{kkt_stop}{ +If TRUE, check to stop coordinate descent when KKT conditions are approximately satisfied. +} +\item{parameter_stop}{ +If TRUE, check to stop coordinate descent based on relative convergence of parameter vector, +checked at geometrically spaced iterations 2^k. +} +\item{objective_stop}{ +If TRUE, check to stop coordinate descent based on relative decrease of objective value, +checked at geometrically spaced iterations 2^k. +} \item{kkt_tol}{ Tolerance value for assessing whether KKT conditions for solving the dual problem and feasibility of the original problem. } +\item{parameter_tol}{ +Tolerance value for assessing convergence of the problem using relative +convergence of the parameter. +} \item{objective_tol}{ Tolerance value for assessing convergence of the problem using relative decrease of the objective. @@ -86,7 +105,7 @@ This function computes an approximate inverse as described in Javanmard and Montanari (2013), specifically display (4). The problem is solved by considering a dual problem which has an objective similar to a LASSO problem and is solvable -by coordinate descent. For some values of mu the original +by coordinate descent. For some values of bound the original problem may not be feasible, in which case the dual problem has no solution. An attempt to detect this is made by stopping when the active set grows quite large, determined by max_active. diff --git a/selectiveInference/src/quadratic_program.c b/selectiveInference/src/quadratic_program.c index 822ddf5..1f7fcb3 100644 --- a/selectiveInference/src/quadratic_program.c +++ b/selectiveInference/src/quadratic_program.c @@ -385,10 +385,12 @@ int solve_qp(double *nndef_ptr, /* A non-negative definite matrix */ } } - // Check based on norm -- from Adel's debiasing code - if (param_stop) { - if (iter == 2 * iter_old) { + if (iter == 2 * iter_old) { // Geometric iterations from Adel's code + + // Check based on norm + + if (param_stop) { iter_old = iter; norm_diff = 0; norm_last = 0; @@ -407,6 +409,24 @@ int solve_qp(double *nndef_ptr, /* A non-negative definite matrix */ break; } } + + // Check relative decrease of objective + + if (objective_stop) { + new_value = objective_qp(nndef_ptr, + linear_func_ptr, + ever_active_ptr, + nactive_ptr, + nfeature, + bound, + theta); + + if ((fabs(old_value - new_value) < objective_tol * fabs(new_value)) && (iter > 0)) { + break; + } + old_value = new_value; + } + } // Check size of active set @@ -415,23 +435,6 @@ int solve_qp(double *nndef_ptr, /* A non-negative definite matrix */ break; } - // Check relative decrease of objective - - if (objective_stop) { - new_value = objective_qp(nndef_ptr, - linear_func_ptr, - ever_active_ptr, - nactive_ptr, - nfeature, - bound, - theta); - - if ((fabs(old_value - new_value) < objective_tol * fabs(new_value)) && (iter > 0)) { - break; - } - old_value = new_value; - } - } return(iter); } diff --git a/selectiveInference/src/quadratic_program_wide.c b/selectiveInference/src/quadratic_program_wide.c index 3546fcd..41e29ce 100644 --- a/selectiveInference/src/quadratic_program_wide.c +++ b/selectiveInference/src/quadratic_program_wide.c @@ -534,10 +534,11 @@ int solve_wide(double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX } } - // Check based on norm -- from Adel's debiasing code + if (iter == 2 * iter_old) { // Geometric iterations from Adel's code - if (param_stop) { - if (iter == 2 * iter_old) { + // Check based on norm + + if (param_stop) { iter_old = iter; norm_diff = 0; norm_last = 0; @@ -556,32 +557,33 @@ int solve_wide(double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX break; } } + + // Check relative decrease of objective + + if (objective_stop) { + new_value = objective_wide(X_theta_ptr, + linear_func_ptr, + ever_active_ptr, + nactive_ptr, + ncase, + nfeature, + bound_ptr, + ridge_term, + theta_ptr); + + if ((fabs(old_value - new_value) < objective_tol * fabs(new_value)) && (iter > 0)) { + break; + } + old_value = new_value; + } } + // Check size of active set if (*nactive_ptr >= max_active) { break; } - // Check relative decrease of objective - - if (objective_stop) { - new_value = objective_wide(X_theta_ptr, - linear_func_ptr, - ever_active_ptr, - nactive_ptr, - ncase, - nfeature, - bound_ptr, - ridge_term, - theta_ptr); - - if ((fabs(old_value - new_value) < objective_tol * fabs(new_value)) && (iter > 0)) { - break; - } - old_value = new_value; - } - } return(iter); } From 1658ecbad9ab779909e3985dda9750903b39d86e Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Fri, 27 Oct 2017 10:29:46 -0700 Subject: [PATCH 309/493] checking comparison example again -- looks good --- selectiveInference/R/funs.fixed.R | 13 +- selectiveInference/man/debiasingMatrix.Rd | 4 +- tests/debiased_lasso/comparison_scaled.R | 78 ++ tests/debiased_lasso/comparison_unscaled.R | 78 ++ tests/debiased_lasso/javanmard_montanari.R | 770 ++++++++++++++++++++ tests/{ => debiased_lasso}/test_debiasing.R | 0 tests/debiased_lasso/test_debiasing_wide.R | 202 +++++ 7 files changed, 1138 insertions(+), 7 deletions(-) create mode 100644 tests/debiased_lasso/comparison_scaled.R create mode 100644 tests/debiased_lasso/comparison_unscaled.R create mode 100644 tests/debiased_lasso/javanmard_montanari.R rename tests/{ => debiased_lasso}/test_debiasing.R (100%) create mode 100644 tests/debiased_lasso/test_debiasing_wide.R diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 1928487..7c8318d 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -8,7 +8,7 @@ fixedLassoInf <- function(x, y, beta, sigma=NULL, alpha=0.1, type=c("partial", "full"), tol.beta=1e-5, tol.kkt=0.1, gridrange=c(-100,100), bits=NULL, verbose=FALSE, - linesearch.try=10) { + linesearch.try=10, offset_correction=TRUE) { family = match.arg(family) this.call = match.call() @@ -197,6 +197,9 @@ fixedLassoInf <- function(x, y, beta, M = M[-1,] # remove intercept row null_value = null_value[-1] # remove intercept element } + if (!offset_correction) { + null_value = 0 * null_value + } } else if (type=="partial" || p > n) { xa = x[,vars,drop=F] M = pinv(crossprod(xa)) %*% t(xa) @@ -325,13 +328,13 @@ debiasingMatrix = function(Xinfo, # could be X or t(X) %*% X / n d max_active=NULL, # how big can active set get? max_try=10, # how many steps in linesearch? warn_kkt=FALSE, # warn if KKT does not seem to be satisfied? - max_iter=100, # how many iterations for each optimization problem + max_iter=50, # how many iterations for each optimization problem kkt_stop=TRUE, # stop based on KKT conditions? parameter_stop=TRUE, # stop based on relative convergence of parameter? objective_stop=TRUE, # stop based on relative decrease in objective? kkt_tol=1.e-4, # tolerance for the KKT conditions parameter_tol=1.e-4, # tolerance for relative convergence of parameter - objective_tol=1.e-8 # tolerance for relative decrease in objective + objective_tol=1.e-4 # tolerance for relative decrease in objective ) { @@ -399,13 +402,13 @@ debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n dep max_active=NULL, # how big can active set get? max_try=10, # how many steps in linesearch? warn_kkt=FALSE, # warn if KKT does not seem to be satisfied? - max_iter=100, # how many iterations for each optimization problem + max_iter=50, # how many iterations for each optimization problem kkt_stop=TRUE, # stop based on KKT conditions? parameter_stop=TRUE, # stop based on relative convergence of parameter? objective_stop=TRUE, # stop based on relative decrease in objective? kkt_tol=1.e-4, # tolerance for the KKT conditions parameter_tol=1.e-4, # tolerance for relative convergence of parameter - objective_tol=1.e-8 # tolerance for relative decrease in objective + objective_tol=1.e-4 # tolerance for relative decrease in objective ) { p = ncol(Xinfo) diff --git a/selectiveInference/man/debiasingMatrix.Rd b/selectiveInference/man/debiasingMatrix.Rd index b95c75b..6a34850 100644 --- a/selectiveInference/man/debiasingMatrix.Rd +++ b/selectiveInference/man/debiasingMatrix.Rd @@ -22,13 +22,13 @@ debiasingMatrix(Xinfo, max_active=NULL, max_try=10, warn_kkt=FALSE, - max_iter=100, + max_iter=50, kkt_stop=TRUE, parameter_stop=TRUE, objective_stop=TRUE, kkt_tol=1.e-4, parameter_tol=1.e-4, - objective_tol=1.e-8) + objective_tol=1.e-4) } \arguments{ \item{Xinfo}{ diff --git a/tests/debiased_lasso/comparison_scaled.R b/tests/debiased_lasso/comparison_scaled.R new file mode 100644 index 0000000..e0c0a6a --- /dev/null +++ b/tests/debiased_lasso/comparison_scaled.R @@ -0,0 +1,78 @@ +source('javanmard_montanari.R') + +############################################## + +# Runs nsims simulations under the global null, computing p-values +# using both the old code (slow one using Adel's code) and the new +# code (faster using Jon's code), and produces qq-plots for both. +# Runing 50 sims takes about 10-15 mins because old code is slow, so +# feel free to lower nsims if you want + + +library(selectiveInference) +library(glmnet) + +# set.seed(424) + +n=100 +p=200 + +sigma=.5 + +theor_lambda = sigma * sqrt(2 * log(p)) +lambda=c(0.25, 0.5, 1, 0.8 * theor_lambda, theor_lambda) + +for (j in c(3,4,5,1,2)) { + +thresh = 1e-10 + +beta=rep(0,p) +type="full" + +nsim = 20 + +scaling = sqrt(n) +pvs_old = c() +pvs_new <- c() +pvs_old_0 = c() # don't add the offset correction +pvs_new_0 = c() # don't add the offset correction +for (i in 1:nsim) { + cat(i,fill=T) + x = matrix(rnorm(n*p),n,p) + x = scale(x,T,T) / scaling + mu = x%*%beta + y=mu+sigma*rnorm(n) + + # first run glmnet + gfit=glmnet(x,y,intercept=F,standardize=F,thresh=thresh) + + bhat = coef(gfit, s=lambda[j]/(sqrt(n) * scaling), exact=TRUE,x=x,y=y)[-1] + + if(sum(bhat != 0) > 0) { + + # compute fixed lambda p-values and selection intervals + + aa = fixedLassoInf(x,y,bhat,lambda[j]*sqrt(n) / scaling,intercept=F,sigma=sigma,type=type) + bb = oldFixedLassoInf(x,y,bhat,lambda[j]*sqrt(n) / scaling,intercept=F,sigma=sigma,type=type) + cc = fixedLassoInf(x,y,bhat,lambda[j]*sqrt(n) / scaling,intercept=F,sigma=sigma,type=type, offset_correction=FALSE) + dd = oldFixedLassoInf(x,y,bhat,lambda[j]*sqrt(n) / scaling,intercept=F,sigma=sigma,type=type, offset_correction=FALSE) + pvs_new <- c(pvs_new, aa$pv, recursive=TRUE) + pvs_old <- c(pvs_old, bb$pv,recursive=TRUE) + pvs_new_0 <- c(pvs_new_0, cc$pv, recursive=TRUE) + pvs_old_0 <- c(pvs_old_0, dd$pv, recursive=TRUE) + + cat() + } +} + +#check uniformity + +png(paste('comparison_scaled', j, '.png', sep='')) +plot(ecdf(pvs_old), pch=23, col='green', xlim=c(0,1), ylim=c(0,1), main='ECDF of p-values') +plot(ecdf(pvs_new), pch=24, col='purple', add=TRUE) +plot(ecdf(pvs_old_0), pch=23, col='red', add=TRUE) +plot(ecdf(pvs_new_0), pch=24, col='black', add=TRUE) +abline(0,1) +legend("bottomright", legend=c("Old","New", "Old 0", "New 0"), pch=c(23,24,23,24), pt.bg=c("green","purple","red","black")) +dev.off() +} \ No newline at end of file diff --git a/tests/debiased_lasso/comparison_unscaled.R b/tests/debiased_lasso/comparison_unscaled.R new file mode 100644 index 0000000..3bb408e --- /dev/null +++ b/tests/debiased_lasso/comparison_unscaled.R @@ -0,0 +1,78 @@ +source('javanmard_montanari.R') + +############################################## + +# Runs nsims simulations under the global null, computing p-values +# using both the old code (slow one using Adel's code) and the new +# code (faster using Jon's code), and produces qq-plots for both. +# Runing 50 sims takes about 10-15 mins because old code is slow, so +# feel free to lower nsims if you want + + +library(selectiveInference) +library(glmnet) + +# set.seed(424) + +n=100 +p=200 + +sigma=.5 + +theor_lambda = sigma * sqrt(2 * log(p)) +lambda=c(0.25, 0.5, 1, 0.8 * theor_lambda, theor_lambda) + +for (j in c(3,4,5,1,2)) { + +thresh = 1e-10 + +beta=rep(0,p) +type="full" + +nsim = 20 + +scaling = sqrt(n) +pvs_old = c() +pvs_new <- c() +pvs_old_0 = c() # don't add the offset correction +pvs_new_0 = c() # don't add the offset correction +for (i in 1:nsim) { + cat(i,fill=T) + x = matrix(rnorm(n*p),n,p) + x = scale(x,T,T) / scaling + mu = x%*%beta + y=mu+sigma*rnorm(n) + + # first run glmnet + gfit=glmnet(x,y,intercept=F,standardize=F,thresh=thresh) + + bhat = coef(gfit, s=lambda[j]/(sqrt(n) * scaling), exact=TRUE,x=x,y=y)[-1] + + if(sum(bhat != 0) > 0) { + + # compute fixed lambda p-values and selection intervals + + aa = fixedLassoInf(x,y,bhat,lambda[j]*sqrt(n) / scaling,intercept=F,sigma=sigma,type=type) + bb = oldFixedLassoInf(x,y,bhat,lambda[j]*sqrt(n) / scaling,intercept=F,sigma=sigma,type=type) + cc = fixedLassoInf(x,y,bhat,lambda[j]*sqrt(n) / scaling,intercept=F,sigma=sigma,type=type, offset_correction=FALSE) + dd = oldFixedLassoInf(x,y,bhat,lambda[j]*sqrt(n) / scaling,intercept=F,sigma=sigma,type=type, offset_correction=FALSE) + pvs_new <- c(pvs_new, aa$pv, recursive=TRUE) + pvs_old <- c(pvs_old, bb$pv,recursive=TRUE) + pvs_new_0 <- c(pvs_new_0, cc$pv, recursive=TRUE) + pvs_old_0 <- c(pvs_old_0, dd$pv, recursive=TRUE) + + cat() + } +} + +#check uniformity + +png(paste('comparison_unscaled', j, '.png', sep='')) +plot(ecdf(pvs_old), pch=23, col='green', xlim=c(0,1), ylim=c(0,1), main='ECDF of p-values') +plot(ecdf(pvs_new), pch=24, col='purple', add=TRUE) +plot(ecdf(pvs_old_0), pch=23, col='red', add=TRUE) +plot(ecdf(pvs_new_0), pch=24, col='black', add=TRUE) +abline(0,1) +legend("bottomright", legend=c("Old","New", "Old 0", "New 0"), pch=c(23,24,23,24), pt.bg=c("green","purple","red","black")) +dev.off() +} \ No newline at end of file diff --git a/tests/debiased_lasso/javanmard_montanari.R b/tests/debiased_lasso/javanmard_montanari.R new file mode 100644 index 0000000..09f3355 --- /dev/null +++ b/tests/debiased_lasso/javanmard_montanari.R @@ -0,0 +1,770 @@ +# First part is only functions from the old code. At the bottom is +# the bit of code that actually compares the old vs new code + +###################################################### + +### Old code (using Adel's R code) + +## Approximates inverse covariance matrix theta +InverseLinfty <- function(sigma, n, resol=1.5, mu=NULL, maxiter=50, threshold=1e-10, verbose = TRUE) { + isgiven <- 1; + if (is.null(mu)){ + isgiven <- 0; + } + + p <- nrow(sigma); + M <- matrix(0, p, p); + xperc = 0; + xp = round(p/10); + for (i in 1:p) { + if ((i %% xp)==0){ + xperc = xperc+10; + if (verbose) { + print(paste(xperc,"% done",sep="")); } + } + if (isgiven==0){ + mu <- (1/sqrt(n)) * qnorm(1-(0.1/(p^2))); + } + mu.stop <- 0; + try.no <- 1; + incr <- 0; + while ((mu.stop != 1)&&(try.no<10)){ + last.beta <- beta + output <- InverseLinftyOneRow(sigma, i, mu, maxiter=maxiter, threshold=threshold) + beta <- output$optsol + iter <- output$iter + if (isgiven==1){ + mu.stop <- 1 + } + else{ + if (try.no==1){ + if (iter == (maxiter+1)){ + incr <- 1; + mu <- mu*resol; + } else { + incr <- 0; + mu <- mu/resol; + } + } + if (try.no > 1){ + if ((incr == 1)&&(iter == (maxiter+1))){ + mu <- mu*resol; + } + if ((incr == 1)&&(iter < (maxiter+1))){ + mu.stop <- 1; + } + if ((incr == 0)&&(iter < (maxiter+1))){ + mu <- mu/resol; + } + if ((incr == 0)&&(iter == (maxiter+1))){ + mu <- mu*resol; + beta <- last.beta; + mu.stop <- 1; + } + } + } + try.no <- try.no+1 + } + M[i,] <- beta; + } + return(M) +} + +InverseLinftyOneRow <- function ( sigma, i, mu, maxiter=50, threshold=1e-10) { + p <- nrow(sigma); + rho <- max(abs(sigma[i,-i])) / sigma[i,i]; + mu0 <- rho/(1+rho); + beta <- rep(0,p); + + #if (mu >= mu0){ + # beta[i] <- (1-mu0)/sigma[i,i]; + # returnlist <- list("optsol" = beta, "iter" = 0); + # return(returnlist); + #} + + diff.norm2 <- 1; + last.norm2 <- 1; + iter <- 1; + iter.old <- 1; + beta[i] <- (1-mu0)/sigma[i,i]; + beta.old <- beta; + sigma.tilde <- sigma; + diag(sigma.tilde) <- 0; + vs <- -sigma.tilde%*%beta; + + while ((iter <= maxiter) && (diff.norm2 >= threshold*last.norm2)){ + + for (j in 1:p){ + oldval <- beta[j]; + v <- vs[j]; + if (j==i) + v <- v+1; + beta[j] <- SoftThreshold(v,mu)/sigma[j,j]; + if (oldval != beta[j]){ + vs <- vs + (oldval-beta[j])*sigma.tilde[,j]; + } + } + + iter <- iter + 1; + if (iter==2*iter.old){ + d <- beta - beta.old; + diff.norm2 <- sqrt(sum(d*d)); + last.norm2 <-sqrt(sum(beta*beta)); + iter.old <- iter; + beta.old <- beta; + #if (iter>10) + # vs <- -sigma.tilde%*%beta; + } + + # print(c(iter, maxiter, diff.norm2, threshold * last.norm2, threshold, mu)) + + } + + returnlist <- list("optsol" = beta, "iter" = iter) + return(returnlist) +} + +SoftThreshold <- function( x, lambda ) { + # + # Standard soft thresholding + # + if (x>lambda){ + return (x-lambda);} + else { + if (x< (-lambda)){ + return (x+lambda);} + else { + return (0); } + } +} + + +### Functions borrowed from selective Inference (only fixedLassoInf and fixedLasso.poly are modified) + +# Special linear time order function, works only when x +# is a scrambled vector of integers. + +Order <- function(x) { + n = length(x) + o = numeric(n) + o[x] = Seq(1,n) + return(o) +} + +# Returns a sequence of integers from a to b if a <= b, +# otherwise nothing. You have no idea how important this +# function is... + +Seq <- function(a, b, ...) { + if (a<=b) return(seq(a,b,...)) + else return(numeric(0)) +} + +# Returns the sign of x, with Sign(0)=1. + +Sign <- function(x) { + return(-1+2*(x>=0)) +} + +############################## + +# Centering and scaling convenience function + +standardize <- function(x, y, intercept, normalize) { + x = as.matrix(x) + y = as.numeric(y) + n = nrow(x) + p = ncol(x) + + if (intercept) { + bx = colMeans(x) + by = mean(y) + x = scale(x,bx,FALSE) + y = y-mean(y) + } else { + bx = rep(0,p) + by = 0 + } + if (normalize) { + sx = sqrt(colSums(x^2)) + x = scale(x,FALSE,sx) + } else { + sx = rep(1,p) + } + + return(list(x=x,y=y,bx=bx,by=by,sx=sx)) +} + +############################## + +# Interpolation function to get coefficients + +coef.interpolate <- function(betas, s, knots, dec=TRUE) { + # Sort the s values + o = order(s,dec=dec) + s = s[o] + + k = length(s) + mat = matrix(rep(knots,each=k),nrow=k) + if (dec) b = s >= mat + else b = s <= mat + blo = max.col(b,ties.method="first") + bhi = pmax(blo-1,1) + + i = bhi==blo + p = numeric(k) + p[i] = 0 + p[!i] = ((s-knots[blo])/(knots[bhi]-knots[blo]))[!i] + + beta = t((1-p)*t(betas[,blo,drop=FALSE]) + p*t(betas[,bhi,drop=FALSE])) + colnames(beta) = as.character(round(s,3)) + rownames(beta) = NULL + + # Return in original order + o = order(o) + return(beta[,o,drop=FALSE]) +} + +############################## + +checkargs.xy <- function(x, y) { + if (missing(x)) stop("x is missing") + if (is.null(x) || !is.matrix(x)) stop("x must be a matrix") + if (missing(y)) stop("y is missing") + if (is.null(y) || !is.numeric(y)) stop("y must be numeric") + if (ncol(x) == 0) stop("There must be at least one predictor [must have ncol(x) > 0]") + if (checkcols(x)) stop("x cannot have duplicate columns") + if (length(y) == 0) stop("There must be at least one data point [must have length(y) > 0]") + if (length(y)!=nrow(x)) stop("Dimensions don't match [length(y) != nrow(x)]") +} + +checkargs.misc <- function(sigma=NULL, alpha=NULL, k=NULL, + gridrange=NULL, gridpts=NULL, griddepth=NULL, + mult=NULL, ntimes=NULL, + beta=NULL, lambda=NULL, tol.beta=NULL, tol.kkt=NULL, + bh.q=NULL) { + + if (!is.null(sigma) && sigma <= 0) stop("sigma must be > 0") + if (!is.null(lambda) && lambda < 0) stop("lambda must be >= 0") + if (!is.null(alpha) && (alpha <= 0 || alpha >= 1)) stop("alpha must be between 0 and 1") + if (!is.null(k) && length(k) != 1) stop("k must be a single number") + if (!is.null(k) && (k < 1 || k != floor(k))) stop("k must be an integer >= 1") + if (!is.null(gridrange) && (length(gridrange) != 2 || gridrange[1] > gridrange[2])) + stop("gridrange must be an interval of the form c(a,b) with a <= b") + if (!is.null(gridpts) && (gridpts < 20 || gridpts != round(gridpts))) + stop("gridpts must be an integer >= 20") + if (!is.null(griddepth) && (griddepth > 10 || griddepth != round(griddepth))) + stop("griddepth must be an integer <= 10") + if (!is.null(mult) && mult < 0) stop("mult must be >= 0") + if (!is.null(ntimes) && (ntimes <= 0 || ntimes != round(ntimes))) + stop("ntimes must be an integer > 0") + if (!is.null(beta) && sum(beta!=0)==0) stop("Value of lambda too large, beta is zero") + # if (!is.null(lambda) && length(lambda) != 1) stop("lambda must be a single number") + if (!is.null(lambda) && length(lambda) != 1 && length(lambda) != length(beta)) stop("lambda must be a single number or equal to the length of beta") + if (!is.null(lambda) && lambda < 0) stop("lambda must be >=0") + if (!is.null(tol.beta) && tol.beta <= 0) stop("tol.beta must be > 0") + if (!is.null(tol.kkt) && tol.kkt <= 0) stop("tol.kkt must be > 0") +} + +# Make sure that no two columms of A are the same +# (this works with probability one). + +checkcols <- function(A) { + b = rnorm(nrow(A)) + a = sort(t(A)%*%b) + if (any(diff(a)==0)) return(TRUE) + return(FALSE) +} + +estimateSigma <- function(x, y, intercept=TRUE, standardize=TRUE) { + checkargs.xy(x,rep(0,nrow(x))) + if(nrow(x)<10) stop("Number of observations must be at least 10 to run estimateSigma") + cvfit=cv.glmnet(x,y,intercept=intercept,standardize=standardize) + lamhat=cvfit$lambda.min + fit=glmnet(x,y,standardize=standardize) + yhat=predict(fit,x,s=lamhat) + nz=sum(predict(fit,s=lamhat, type="coef")!=0) + sigma=sqrt(sum((y-yhat)^2)/(length(y)-nz-1)) + return(list(sigmahat=sigma, df=nz)) +} + +# Update the QR factorization, after a column has been +# added. Here Q1 is m x n, Q2 is m x k, and R is n x n. + +updateQR <- function(Q1,Q2,R,col) { + m = nrow(Q1) + n = ncol(Q1) + k = ncol(Q2) + + a = .C("update1", + Q2=as.double(Q2), + w=as.double(t(Q2)%*%col), + m=as.integer(m), + k=as.integer(k), + dup=FALSE, + package="selectiveInference") + + Q2 = matrix(a$Q2,nrow=m) + w = c(t(Q1)%*%col,a$w) + + # Re-structure: delete a column from Q2, add one to + # Q1, and expand R + Q1 = cbind(Q1,Q2[,1]) + Q2 = Q2[,-1,drop=FALSE] + R = rbind(R,rep(0,n)) + R = cbind(R,w[Seq(1,n+1)]) + + return(list(Q1=Q1,Q2=Q2,R=R)) +} + +# Moore-Penrose pseudo inverse for symmetric matrices + +pinv <- function(A, tol=.Machine$double.eps) { + e = eigen(A) + v = Re(e$vec) + d = Re(e$val) + d[d > tol] = 1/d[d > tol] + d[d < tol] = 0 + if (length(d)==1) return(v*d*v) + else return(v %*% diag(d) %*% t(v)) +} + +############################## + +# Assuming that grid is in sorted order from smallest to largest, +# and vals are monotonically increasing function values over the +# grid, returns the grid end points such that the corresponding +# vals are approximately equal to {val1, val2} + +grid.search <- function(grid, fun, val1, val2, gridpts=100, griddepth=2) { + n = length(grid) + vals = fun(grid) + + ii = which(vals >= val1) + jj = which(vals <= val2) + if (length(ii)==0) return(c(grid[n],Inf)) # All vals < val1 + if (length(jj)==0) return(c(-Inf,grid[1])) # All vals > val2 + # RJT: the above logic is correct ... but for simplicity, instead, + # we could just return c(-Inf,Inf) + + i1 = min(ii); i2 = max(jj) + if (i1==1) lo = -Inf + else lo = grid.bsearch(grid[i1-1],grid[i1],fun,val1,gridpts, + griddepth-1,below=TRUE) + if (i2==n) hi = Inf + else hi = grid.bsearch(grid[i2],grid[i2+1],fun,val2,gridpts, + griddepth-1,below=FALSE) + return(c(lo,hi)) +} + +# Repeated bin search to find the point x in the interval [left, right] +# that satisfies f(x) approx equal to val. If below=TRUE, then we seek +# x such that the above holds and f(x) <= val; else we seek f(x) >= val. + +grid.bsearch <- function(left, right, fun, val, gridpts=100, griddepth=1, below=TRUE) { + n = gridpts + depth = 1 + + while (depth <= griddepth) { + grid = seq(left,right,length=n) + vals = fun(grid) + + if (below) { + ii = which(vals >= val) + if (length(ii)==0) return(grid[n]) # All vals < val (shouldn't happen) + if ((i0=min(ii))==1) return(grid[1]) # All vals > val (shouldn't happen) + left = grid[i0-1] + right = grid[i0] + } + + else { + ii = which(vals <= val) + if (length(ii)==0) return(grid[1]) # All vals > val (shouldn't happen) + if ((i0=max(ii))==n) return(grid[n]) # All vals < val (shouldn't happen) + left = grid[i0] + right = grid[i0+1] + } + + depth = depth+1 + } + + return(ifelse(below, left, right)) +} + +# Returns Prob(Z>z | Z in [a,b]), where mean can be a vector + +tnorm.surv <- function(z, mean, sd, a, b, bits=NULL) { + z = max(min(z,b),a) + + # Check silly boundary cases + p = numeric(length(mean)) + p[mean==-Inf] = 0 + p[mean==Inf] = 1 + + # Try the multi precision floating point calculation first + o = is.finite(mean) + mm = mean[o] + pp = mpfr.tnorm.surv(z,mm,sd,a,b,bits) + + # If there are any NAs, then settle for an approximation + oo = is.na(pp) + if (any(oo)) pp[oo] = bryc.tnorm.surv(z,mm[oo],sd,a,b) + + p[o] = pp + return(p) +} + +# Returns Prob(Z>z | Z in [a,b]), where mean cane be a vector, using +# multi precision floating point calculations thanks to the Rmpfr package + +mpfr.tnorm.surv <- function(z, mean=0, sd=1, a, b, bits=NULL) { + # If bits is not NULL, then we are supposed to be using Rmpf + # (note that this was fail if Rmpfr is not installed; but + # by the time this function is being executed, this should + # have been properly checked at a higher level; and if Rmpfr + # is not installed, bits would have been previously set to NULL) + if (!is.null(bits)) { + z = Rmpfr::mpfr((z-mean)/sd, precBits=bits) + a = Rmpfr::mpfr((a-mean)/sd, precBits=bits) + b = Rmpfr::mpfr((b-mean)/sd, precBits=bits) + return(as.numeric((Rmpfr::pnorm(b)-Rmpfr::pnorm(z))/ + (Rmpfr::pnorm(b)-Rmpfr::pnorm(a)))) + } + + # Else, just use standard floating point calculations + z = (z-mean)/sd + a = (a-mean)/sd + b = (b-mean)/sd + return((pnorm(b)-pnorm(z))/(pnorm(b)-pnorm(a))) +} + +# Returns Prob(Z>z | Z in [a,b]), where mean can be a vector, based on +# A UNIFORM APPROXIMATION TO THE RIGHT NORMAL TAIL INTEGRAL, W Bryc +# Applied Mathematics and Computation +# Volume 127, Issues 23, 15 April 2002, Pages 365--374 +# https://math.uc.edu/~brycw/preprint/z-tail/z-tail.pdf + +bryc.tnorm.surv <- function(z, mean=0, sd=1, a, b) { + z = (z-mean)/sd + a = (a-mean)/sd + b = (b-mean)/sd + n = length(mean) + + term1 = exp(z*z) + o = a > -Inf + term1[o] = ff(a[o])*exp(-(a[o]^2-z[o]^2)/2) + term2 = rep(0,n) + oo = b < Inf + term2[oo] = ff(b[oo])*exp(-(b[oo]^2-z[oo]^2)/2) + p = (ff(z)-term2)/(term1-term2) + + # Sometimes the approximation can give wacky p-values, + # outside of [0,1] .. + #p[p<0 | p>1] = NA + p = pmin(1,pmax(0,p)) + return(p) +} + +ff <- function(z) { + return((z^2+5.575192695*z+12.7743632)/ + (z^3*sqrt(2*pi)+14.38718147*z*z+31.53531977*z+2*12.77436324)) +} + +############## MODIFIED FUNCTIONS ############### + +# Lasso inference function (for fixed lambda). Note: here we are providing inference +# for the solution of +# min 1/2 || y - \beta_0 - X \beta ||_2^2 + \lambda || \beta ||_1 + +oldFixedLassoInf <- function(x, y, beta, lambda, family=c("gaussian","binomial","cox"),intercept=TRUE, status=NULL, + sigma=NULL, alpha=0.1, + type=c("partial","full"), tol.beta=1e-5, tol.kkt=0.1, + gridrange=c(-100,100), bits=NULL, verbose=FALSE, offset_correction=TRUE) { + + family = match.arg(family) + this.call = match.call() + type = match.arg(type) + + if(family=="binomial") { + if(type!="partial") stop("Only type= partial allowed with binomial family") + out=fixedLogitLassoInf(x,y,beta,lambda,alpha=alpha, type="partial", tol.beta=tol.beta, tol.kkt=tol.kkt, + gridrange=gridrange, bits=bits, verbose=verbose,this.call=this.call) + return(out) + } + else if(family=="cox") { + if(type!="partial") stop("Only type= partial allowed with Cox family") + out=fixedCoxLassoInf(x,y,status,beta,lambda,alpha=alpha, type="partial",tol.beta=tol.beta, + tol.kkt=tol.kkt, gridrange=gridrange, bits=bits, verbose=verbose,this.call=this.call) + return(out) + } + + else{ + + + + checkargs.xy(x,y) + if (missing(beta) || is.null(beta)) stop("Must supply the solution beta") + if (missing(lambda) || is.null(lambda)) stop("Must supply the tuning parameter value lambda") + + n = nrow(x) + p = ncol(x) + beta = as.numeric(beta) + if (type == "full") { + if (p > n) { + # need intercept (if there is one) for debiased lasso + hbeta = beta + if (intercept == T) { + if (length(beta) != p + 1) { + stop("Since type='full', p > n, and intercept=TRUE, beta must have length equal to ncol(x)+1") + } + # remove intercept if included + beta = beta[-1] + } else if (length(beta) != p) { + stop("Since family='gaussian', type='full' and intercept=FALSE, beta must have length equal to ncol(x)") + } + } + } else if (length(beta) != p) { + stop("Since family='gaussian' and type='partial', beta must have length equal to ncol(x)") + } + + checkargs.misc(beta=beta,lambda=lambda,sigma=sigma,alpha=alpha, + gridrange=gridrange,tol.beta=tol.beta,tol.kkt=tol.kkt) + if (!is.null(bits) && !requireNamespace("Rmpfr",quietly=TRUE)) { + warning("Package Rmpfr is not installed, reverting to standard precision") + bits = NULL + } + + # If glmnet was run with an intercept term, center x and y + if (intercept==TRUE) { + obj = standardize(x,y,TRUE,FALSE) + x = obj$x + y = obj$y + } + + # Check the KKT conditions + g = t(x)%*%(y-x%*%beta) / lambda + if (any(abs(g) > 1+tol.kkt * sqrt(sum(y^2)))) + warning(paste("Solution beta does not satisfy the KKT conditions", + "(to within specified tolerances)")) + + tol.coef = tol.beta * sqrt(n^2 / colSums(x^2)) + # print(tol.coef) + vars = which(abs(beta) > tol.coef) + # print(beta) + # print(vars) + if(length(vars)==0){ + cat("Empty model",fill=T) + return() + } + if (any(sign(g[vars]) != sign(beta[vars]))) + warning(paste("Solution beta does not satisfy the KKT conditions", + "(to within specified tolerances). You might try rerunning", + "glmnet with a lower setting of the", + "'thresh' parameter, for a more accurate convergence.")) + + # Get lasso polyhedral region, of form Gy >= u + if (type == 'full' & p > n) out = fixedLasso.poly(x,y,beta,lambda,vars,inactive=TRUE) + else out = fixedLasso.poly(x,y,beta,lambda,vars) + G = out$G + u = out$u + + # Check polyhedral region + tol.poly = 0.01 + if (min(G %*% y - u) < -tol.poly * sqrt(sum(y^2))) + stop(paste("Polyhedral constraints not satisfied; you must recompute beta", + "more accurately. With glmnet, make sure to use exact=TRUE in coef(),", + "and check whether the specified value of lambda is too small", + "(beyond the grid of values visited by glmnet).", + "You might also try rerunning glmnet with a lower setting of the", + "'thresh' parameter, for a more accurate convergence.")) + + # Estimate sigma + if (is.null(sigma)) { + if (n >= 2*p) { + oo = intercept + sigma = sqrt(sum(lsfit(x,y,intercept=oo)$res^2)/(n-p-oo)) + } + else { + sigma = sd(y) + warning(paste(sprintf("p > n/2, and sd(y) = %0.3f used as an estimate of sigma;",sigma), + "you may want to use the estimateSigma function")) + } + } + + k = length(vars) + pv = vlo = vup = numeric(k) + vmat = matrix(0,k,n) + ci = tailarea = matrix(0,k,2) + sign = numeric(k) + + if (type=="full" & p > n) { + if (intercept == T) { + pp=p+1 + Xint <- cbind(rep(1,n),x) + # indices of selected predictors + S = c(1,vars + 1) + notS = which(abs(beta) <= tol.coef) + 1 + } else { + pp=p + Xint <- x + # indices of selected predictors + S = vars + notS = which(abs(beta) <= tol.coef) + } + + + XS = Xint[,S] + hbetaS = hbeta[S] + + # Reorder so that active set S is first + Xordered = Xint[,c(S,notS,recursive=T)] + + hsigma <- 1/n*(t(Xordered)%*%Xordered) + hsigmaS <- 1/n*(t(XS)%*%XS) # hsigma[S,S] + hsigmaSinv <- pinv(hsigmaS) # solve(hsigmaS) + + # Approximate inverse covariance matrix for when (n < p) from lasso_Inference.R + htheta <- InverseLinfty(hsigma, n, verbose=FALSE) + + # 0-padding matrix + FS = rbind(diag(length(S)),matrix(0,pp-length(S),length(S))) + ithetasigma = (diag(pp)-(htheta%*%hsigma)) + + M <- (((htheta%*%t(Xordered))+ithetasigma%*%FS%*%hsigmaSinv%*%t(XS))/n) + # vector which is offset for testing debiased beta's + meanoffset <- -(((ithetasigma%*%FS%*%hsigmaSinv)%*%sign(hbetaS))*lambda/n) + if (intercept == T) { + M = M[-1,] # remove intercept row + meanoffset = meanoffset[-1] # remove intercept element + } + if (offset_correction == FALSE) { + meanoffset = 0 * meanoffset + } + } else if (type=="partial" || p > n) { + xa = x[,vars,drop=F] + M = pinv(crossprod(xa)) %*% t(xa) + meanoffset = rep(0,k) + } else { + M = pinv(crossprod(x)) %*% t(x) + M = M[vars,,drop=F] + meanoffset = rep(0,k) + } + + for (j in 1:k) { + if (verbose) cat(sprintf("Inference for variable %i ...\n",vars[j])) + + vj = M[j,] + mj = sqrt(sum(vj^2)) + vj = vj / mj # Standardize (divide by norm of vj) + sign[j] = sign(sum(vj*y)) + vj = sign[j] * vj + + a = poly.pval(y,G,u,vj,offset=meanoffset[j],sigma,bits) + pv[j] = a$pv + vlo[j] = a$vlo * mj # Unstandardize (mult by norm of vj) + vup[j] = a$vup * mj # Unstandardize (mult by norm of vj) + vmat[j,] = vj * mj * sign[j] # Unstandardize (mult by norm of vj) + + a = poly.int(y,G,u,vj,offset=meanoffset[j],sigma,alpha,gridrange=gridrange, + flip=(sign[j]==-1),bits=bits) + ci[j,] = a$int * mj # Unstandardize (mult by norm of vj) + tailarea[j,] = a$tailarea + } + + out = list(type=type,lambda=lambda,pv=pv,ci=ci, + tailarea=tailarea,vlo=vlo,vup=vup,vmat=vmat,y=y, + vars=vars,sign=sign,sigma=sigma,alpha=alpha, + sd=sigma*sqrt(rowSums(vmat^2)), + coef0=vmat%*%y, + call=this.call,M=M) + class(out) = "fixedLassoInf" + return(out) + } +} + + +fixedLasso.poly= + function(x, y, beta, lambda, a, inactive = FALSE) { + xa = x[,a,drop=F] + xac = x[,!a,drop=F] + xai = pinv(crossprod(xa)) + xap = xai %*% t(xa) + za = sign(beta[a]) + if (length(za)>1) dz = diag(za) + if (length(za)==1) dz = matrix(za,1,1) + + if (inactive) { + P = diag(1,nrow(xa)) - xa %*% xap + + G = -rbind( + 1/lambda * t(xac) %*% P, + -1/lambda * t(xac) %*% P, + -dz %*% xap + ) + lambda2=lambda + if(length(lambda)>1) lambda2=lambda[a] + u = -c( + 1 - t(xac) %*% t(xap) %*% za, + 1 + t(xac) %*% t(xap) %*% za, + -lambda2 * dz %*% xai %*% za) + } else { + G = -rbind( + # 1/lambda * t(xac) %*% P, + # -1/lambda * t(xac) %*% P, + -dz %*% xap + ) + lambda2=lambda + if(length(lambda)>1) lambda2=lambda[a] + u = -c( + # 1 - t(xac) %*% t(xap) %*% za, + # 1 + t(xac) %*% t(xap) %*% za, + -lambda2 * dz %*% xai %*% za) + } + + return(list(G=G,u=u)) + } + + +# Main p-value function + +poly.pval <- function(y, G, u, v, sigma, offset=0, bits=NULL) { + z = sum(v*y) + vv = sum(v^2) + sd = sigma*sqrt(vv) + + rho = G %*% v / vv + vec = (u - G %*% y + rho*z) / rho + vlo = suppressWarnings(max(vec[rho>0])) + vup = suppressWarnings(min(vec[rho<0])) + + pv = tnorm.surv(z,0-offset,sd,vlo,vup,bits) + return(list(pv=pv,vlo=vlo,vup=vup)) +} + +# Main confidence interval function + +poly.int <- function(y, G, u, v, sigma, alpha, offset=0, gridrange=c(-100,100), + gridpts=100, griddepth=2, flip=FALSE, bits=NULL) { + + z = sum(v*y) + vv = sum(v^2) + sd = sigma*sqrt(vv) + + rho = G %*% v / vv + vec = (u - G %*% y + rho*z) / rho + vlo = suppressWarnings(max(vec[rho>0])) + vup = suppressWarnings(min(vec[rho<0])) + + xg = seq(gridrange[1]*sd,gridrange[2]*sd,length=gridpts) + fun = function(x) { tnorm.surv(z,x-offset,sd,vlo,vup,bits) } + + int = grid.search(xg,fun,alpha/2,1-alpha/2,gridpts,griddepth) + tailarea = c(fun(int[1]),1-fun(int[2])) + + if (flip) { + int = -int[2:1] + tailarea = tailarea[2:1] + } + + return(list(int=int,tailarea=tailarea)) +} diff --git a/tests/test_debiasing.R b/tests/debiased_lasso/test_debiasing.R similarity index 100% rename from tests/test_debiasing.R rename to tests/debiased_lasso/test_debiasing.R diff --git a/tests/debiased_lasso/test_debiasing_wide.R b/tests/debiased_lasso/test_debiasing_wide.R new file mode 100644 index 0000000..62801da --- /dev/null +++ b/tests/debiased_lasso/test_debiasing_wide.R @@ -0,0 +1,202 @@ +library(selectiveInference) + + +## Approximates inverse covariance matrix theta +InverseLinfty <- function(sigma, n, resol=1.5, bound=NULL, maxiter=50, threshold=1e-10, verbose = TRUE) { + isgiven <- 1; + if (is.null(bound)){ + isgiven <- 0; + } + + p <- nrow(sigma); + M <- matrix(0, p, p); + xperc = 0; + xp = round(p/10); + for (i in 1:p) { + if ((i %% xp)==0){ + xperc = xperc+10; + if (verbose) { + print(paste(xperc,"% done",sep="")); } + } + if (isgiven==0){ + bound <- (1/sqrt(n)) * qnorm(1-(0.1/(p^2))); + } + bound.stop <- 0; + try.no <- 1; + incr <- 0; + while ((bound.stop != 1)&&(try.no<10)){ + last.beta <- beta + output <- InverseLinftyOneRow(sigma, i, bound, maxiter=maxiter, threshold=threshold) + beta <- output$optsol + iter <- output$iter + if (isgiven==1){ + bound.stop <- 1 + } + else{ + if (try.no==1){ + if (iter == (maxiter+1)){ + incr <- 1; + bound <- bound*resol; + } else { + incr <- 0; + bound <- bound/resol; + } + } + if (try.no > 1){ + if ((incr == 1)&&(iter == (maxiter+1))){ + bound <- bound*resol; + } + if ((incr == 1)&&(iter < (maxiter+1))){ + bound.stop <- 1; + } + if ((incr == 0)&&(iter < (maxiter+1))){ + bound <- bound/resol; + } + if ((incr == 0)&&(iter == (maxiter+1))){ + bound <- bound*resol; + beta <- last.beta; + bound.stop <- 1; + } + } + } + try.no <- try.no+1 + } + M[i,] <- beta; + } + return(M) +} + +InverseLinftyOneRow <- function ( sigma, i, bound, maxiter=50, threshold=1e-10) { + p <- nrow(sigma); + rho <- max(abs(sigma[i,-i])) / sigma[i,i]; + bound0 <- rho/(1+rho); + beta <- rep(0,p); + + #if (bound >= bound0){ + # beta[i] <- (1-bound0)/sigma[i,i]; + # returnlist <- list("optsol" = beta, "iter" = 0); + # return(returnlist); + #} + + diff.norm2 <- 1; + last.norm2 <- 1; + iter <- 1; + iter.old <- 1; + beta[i] <- (1-bound0)/sigma[i,i]; + beta.old <- beta; + sigma.tilde <- sigma; + diag(sigma.tilde) <- 0; + vs <- -sigma.tilde%*%beta; + + while ((iter <= maxiter) && (diff.norm2 >= threshold*last.norm2)){ + + for (j in 1:p){ + oldval <- beta[j]; + v <- vs[j]; + if (j==i) + v <- v+1; + beta[j] <- SoftThreshold(v,bound)/sigma[j,j]; + if (oldval != beta[j]){ + vs <- vs + (oldval-beta[j])*sigma.tilde[,j]; + } + } + + iter <- iter + 1; + if (iter==2*iter.old){ + d <- beta - beta.old; + diff.norm2 <- sqrt(sum(d*d)); + last.norm2 <-sqrt(sum(beta*beta)); + iter.old <- iter; + beta.old <- beta; + #if (iter>10) + # vs <- -sigma.tilde%*%beta; + } + + # print(c(iter, maxiter, diff.norm2, threshold * last.norm2, threshold, bound)) + + } + + returnlist <- list("optsol" = beta, "iter" = iter) + return(returnlist) +} + +SoftThreshold <- function( x, lambda ) { + # + # Standard soft thresholding + # + if (x>lambda){ + return (x-lambda);} + else { + if (x< (-lambda)){ + return (x+lambda);} + else { + return (0); } + } +} + + +### Test + +n = 100; p = 250 + +X = matrix(rnorm(n * p), n, p) +S = t(X) %*% X / n + +debiasing_bound = 0.2 + +tol = 1.e-12 + +rows = as.integer(c(1:2)) + +A1 = debiasingMatrix(S, FALSE, n, rows, bound=debiasing_bound, max_iter=1000, kkt_tol=tol, objective_tol=tol, parameter_tol=tol, linesearch=FALSE) +A2 = debiasingMatrix(S / n, FALSE, n, rows, bound=debiasing_bound, max_iter=1000, kkt_tol=tol, objective_tol=tol, parameter_tol=tol, linesearch=FALSE) +B1 = debiasingMatrix(X, TRUE, n, rows, bound=debiasing_bound, max_iter=1000, kkt_tol=tol, objective_tol=tol, parameter_tol=tol, linesearch=FALSE) +B2 = debiasingMatrix(X / sqrt(n), TRUE, n, rows, bound=debiasing_bound, max_iter=1000, kkt_tol=tol, objective_tol=tol, parameter_tol=tol, linesearch=FALSE) + +C1 = InverseLinfty(S, n, bound=debiasing_bound, maxiter=1000)[rows,] +C2 = InverseLinfty(S / n, n, bound=debiasing_bound, maxiter=1000)[rows,] + +par(mfrow=c(2,3)) + +plot(A1[1,], C1[1,]) +plot(A1[1,], B1[1,]) +plot(B1[1,], C1[1,]) + +plot(A1[1,], A2[1,]) +plot(B1[1,], B2[1,]) +plot(C1[1,], C2[1,]) + +print(c('A', sum(A1[1,] == 0))) +print(c('B', sum(B1[1,] == 0))) +print(c('C', sum(C1[1,] == 0))) + +## Are our points feasible + +feasibility = function(S, soln, j, debiasing_bound) { + p = nrow(S) + E = rep(0, p) + E[j] = 1 + G = S %*% soln - E + return(c(max(abs(G)), debiasing_bound)) +} + +print(c('feasibility A', feasibility(S, A1[1,], 1, debiasing_bound))) +print(c('feasibility B', feasibility(S, B1[1,], 1, debiasing_bound))) +print(c('feasibility C', feasibility(S, C1[1,], 1, debiasing_bound))) + +active_KKT = function(S, soln, j, debiasing_bound) { + p = nrow(S) + E = rep(0, p) + E[j] = 1 + G = S %*% soln - E + print(which(soln != 0)) + print(G[j]) + return(c(G[soln != 0] * sign(soln)[soln != 0], debiasing_bound)) +} + +print(c('active_KKT A', active_KKT(S, A1[1,], 1, debiasing_bound))) +print(c('active_KKT B', active_KKT(S, B1[1,], 1, debiasing_bound))) +print(c('active_KKT C', active_KKT(S, C1[1,], 1, debiasing_bound))) + + +print(summary(lm(A1[1,] ~ C1[1,]))) \ No newline at end of file From e3049cffa9892b96e8122cbde31d9e83ebf147bd Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Fri, 27 Oct 2017 10:36:58 -0700 Subject: [PATCH 310/493] removing the offset_correction which was just for the comparison --- selectiveInference/R/funs.fixed.R | 5 +---- tests/debiased_lasso/comparison_scaled.R | 13 +++---------- tests/debiased_lasso/comparison_unscaled.R | 13 +++---------- 3 files changed, 7 insertions(+), 24 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 7c8318d..d5e3d64 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -8,7 +8,7 @@ fixedLassoInf <- function(x, y, beta, sigma=NULL, alpha=0.1, type=c("partial", "full"), tol.beta=1e-5, tol.kkt=0.1, gridrange=c(-100,100), bits=NULL, verbose=FALSE, - linesearch.try=10, offset_correction=TRUE) { + linesearch.try=10) { family = match.arg(family) this.call = match.call() @@ -197,9 +197,6 @@ fixedLassoInf <- function(x, y, beta, M = M[-1,] # remove intercept row null_value = null_value[-1] # remove intercept element } - if (!offset_correction) { - null_value = 0 * null_value - } } else if (type=="partial" || p > n) { xa = x[,vars,drop=F] M = pinv(crossprod(xa)) %*% t(xa) diff --git a/tests/debiased_lasso/comparison_scaled.R b/tests/debiased_lasso/comparison_scaled.R index e0c0a6a..e296bd6 100644 --- a/tests/debiased_lasso/comparison_scaled.R +++ b/tests/debiased_lasso/comparison_scaled.R @@ -19,10 +19,9 @@ p=200 sigma=.5 -theor_lambda = sigma * sqrt(2 * log(p)) -lambda=c(0.25, 0.5, 1, 0.8 * theor_lambda, theor_lambda) +lambda=c(0.25, 0.5, 1) -for (j in c(3,4,5,1,2)) { +for (j in c(3,2,1)) { thresh = 1e-10 @@ -54,12 +53,8 @@ for (i in 1:nsim) { aa = fixedLassoInf(x,y,bhat,lambda[j]*sqrt(n) / scaling,intercept=F,sigma=sigma,type=type) bb = oldFixedLassoInf(x,y,bhat,lambda[j]*sqrt(n) / scaling,intercept=F,sigma=sigma,type=type) - cc = fixedLassoInf(x,y,bhat,lambda[j]*sqrt(n) / scaling,intercept=F,sigma=sigma,type=type, offset_correction=FALSE) - dd = oldFixedLassoInf(x,y,bhat,lambda[j]*sqrt(n) / scaling,intercept=F,sigma=sigma,type=type, offset_correction=FALSE) pvs_new <- c(pvs_new, aa$pv, recursive=TRUE) pvs_old <- c(pvs_old, bb$pv,recursive=TRUE) - pvs_new_0 <- c(pvs_new_0, cc$pv, recursive=TRUE) - pvs_old_0 <- c(pvs_old_0, dd$pv, recursive=TRUE) cat() } @@ -70,9 +65,7 @@ for (i in 1:nsim) { png(paste('comparison_scaled', j, '.png', sep='')) plot(ecdf(pvs_old), pch=23, col='green', xlim=c(0,1), ylim=c(0,1), main='ECDF of p-values') plot(ecdf(pvs_new), pch=24, col='purple', add=TRUE) -plot(ecdf(pvs_old_0), pch=23, col='red', add=TRUE) -plot(ecdf(pvs_new_0), pch=24, col='black', add=TRUE) abline(0,1) -legend("bottomright", legend=c("Old","New", "Old 0", "New 0"), pch=c(23,24,23,24), pt.bg=c("green","purple","red","black")) +legend("bottomright", legend=c("Old", "New"), pch=c(23,24), pt.bg=c("green","purple")) dev.off() } \ No newline at end of file diff --git a/tests/debiased_lasso/comparison_unscaled.R b/tests/debiased_lasso/comparison_unscaled.R index 3bb408e..eebda68 100644 --- a/tests/debiased_lasso/comparison_unscaled.R +++ b/tests/debiased_lasso/comparison_unscaled.R @@ -19,10 +19,9 @@ p=200 sigma=.5 -theor_lambda = sigma * sqrt(2 * log(p)) -lambda=c(0.25, 0.5, 1, 0.8 * theor_lambda, theor_lambda) +lambda=c(0.25, 0.5, 1) -for (j in c(3,4,5,1,2)) { +for (j in c(3,2,1)) { thresh = 1e-10 @@ -54,12 +53,8 @@ for (i in 1:nsim) { aa = fixedLassoInf(x,y,bhat,lambda[j]*sqrt(n) / scaling,intercept=F,sigma=sigma,type=type) bb = oldFixedLassoInf(x,y,bhat,lambda[j]*sqrt(n) / scaling,intercept=F,sigma=sigma,type=type) - cc = fixedLassoInf(x,y,bhat,lambda[j]*sqrt(n) / scaling,intercept=F,sigma=sigma,type=type, offset_correction=FALSE) - dd = oldFixedLassoInf(x,y,bhat,lambda[j]*sqrt(n) / scaling,intercept=F,sigma=sigma,type=type, offset_correction=FALSE) pvs_new <- c(pvs_new, aa$pv, recursive=TRUE) pvs_old <- c(pvs_old, bb$pv,recursive=TRUE) - pvs_new_0 <- c(pvs_new_0, cc$pv, recursive=TRUE) - pvs_old_0 <- c(pvs_old_0, dd$pv, recursive=TRUE) cat() } @@ -70,9 +65,7 @@ for (i in 1:nsim) { png(paste('comparison_unscaled', j, '.png', sep='')) plot(ecdf(pvs_old), pch=23, col='green', xlim=c(0,1), ylim=c(0,1), main='ECDF of p-values') plot(ecdf(pvs_new), pch=24, col='purple', add=TRUE) -plot(ecdf(pvs_old_0), pch=23, col='red', add=TRUE) -plot(ecdf(pvs_new_0), pch=24, col='black', add=TRUE) abline(0,1) -legend("bottomright", legend=c("Old","New", "Old 0", "New 0"), pch=c(23,24,23,24), pt.bg=c("green","purple","red","black")) +legend("bottomright", legend=c("Old", "New"), pch=c(23,24), pt.bg=c("green","purple")) dev.off() } \ No newline at end of file From fc49dcd96d34040de96feca72174106df42d67d6 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Sat, 28 Oct 2017 11:13:25 -0700 Subject: [PATCH 311/493] created the matrices for the affine transform, wrapper for calling Gaussian density --- selectiveInference/R/funs.fixed.R | 3 +- selectiveInference/R/funs.randomized.R | 34 ++++ selectiveInference/src/Rcpp-randomized.cpp | 40 +++++ selectiveInference/src/randomized_lasso.c | 2 + selectiveInference/src/randomized_lasso.c~ | 188 +++++++++++++++++++++ selectiveInference/src/randomized_lasso.h | 2 +- selectiveInference/src/randomized_lasso.h~ | 42 +++++ 7 files changed, 308 insertions(+), 3 deletions(-) create mode 100644 selectiveInference/src/Rcpp-randomized.cpp create mode 100644 selectiveInference/src/randomized_lasso.c~ create mode 100644 selectiveInference/src/randomized_lasso.h~ diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index d5e3d64..13d8b5e 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -435,8 +435,7 @@ debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n dep last_output = NULL if (is_wide) { - n = nrow(Xinfo) - Xsoln = as.numeric(rep(0, n)) + Xsoln = as.numeric(rep(0, nrow(Xinfo))) } while (counter_idx < max_try) { diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 3a171f7..1da73b2 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -37,6 +37,7 @@ randomizedLASSO = function(X, if (length(lam) == 1) { lam = rep(lam, p) } + if (length(lam) != p) { stop("Lagrange parameter should be single float or of length ncol(X)") } @@ -65,5 +66,38 @@ randomizedLASSO = function(X, objective_stop, # objective_stop kkt_stop, # kkt_stop param_stop) # param_stop + + + sign_soln = sign(result$soln) + + unpenalized = lam == 0 + active = !unpenalized * (sign_soln != 0) + inactive = !unpenzlied * (sign_soln == 0) + + unpenalized_set = which(unpenalized) + active_set = which(active) + inactive_set = which(inactive) + + coef_term = t(X) %*% X[,c(unpenalized_set, # the coefficients + active_set)] + coef_term = coef_term %*% diag(c(rep(1, sum(unpenalized)), sign_soln[active])) # coefficients are non-negative + coef_term[active,] = coef_term[active,] + ridge_term * diag(rep(1, sum(active))) # ridge term + + subgrad_term = cbind(matrix(0, sum(inactive), sum(active) + sum(unpenalized)), + diag(rep(1, sum(inactive)))) + linear_term = rbind(coef_term, + subgrad_term) + + offset_term = rep(0, p) + offset_term[active] = lam[active] * sign_soln[active] + + + + list(active_set = active_set, + inactive_set = inactive_set, + unpenalized_set = unpenalized_set, + sign_soln = sign_soln) + + return(result) } diff --git a/selectiveInference/src/Rcpp-randomized.cpp b/selectiveInference/src/Rcpp-randomized.cpp new file mode 100644 index 0000000..7887f32 --- /dev/null +++ b/selectiveInference/src/Rcpp-randomized.cpp @@ -0,0 +1,40 @@ +#include // need to include the main Rcpp header file +#include // where densities are defined + +// [[Rcpp::export]] +Rcpp::NumericVector log_density_gaussian_(double noise_scale, // Scale of randomization + Rcpp::NumericMatrix internal_linear, // A_D -- linear part for data + Rcpp::NumericMatrix internal_state, // D -- data state -- matrix of shape (nopt, npts) + Rcpp::NumericMatrix optimization_linear, // A_O -- linear part for optimization variables + Rcpp::NumericMatrix optimization_state, // O -- optimization state -- matrix of shape (ninternal, npts) + Rcpp::NumericMatrix offset) { // h -- offset in affine transform -- "p" dimensional + + int npt = internal_state.ncol(); // Function is vectorized + if (optimization_state.ncol() != npt) { // Assuming each column is an internal or opt state because arrays are column major + Rcpp::stop("Number of optimization samples should equal the number of (internally represented) data."); + } + + int ndim = optimization_linear.nrow(); + if (internal_linear.nrow() != ndim) { + Rcpp::stop("Dimension of optimization range should be the same as the dimension of the data range."); + } + int ninternal = internal_linear.ncol(); + int noptimization = optimization_linear.ncol(); + + Rcpp::NumericVector result(npt); + + int ipt; + for (ipt=0; ipt // for fabs + +// Augmented density for randomized LASSO after +// Gaussian randomization + +// Described in https://arxiv.org/abs/1609.05609 + +// Gaussian is product of IID N(0, noise_scale^2) density +// Evaluated at A_D D + A_O O + h + +// Laplace is product of IID Laplace with scale noise_scale +// Also evaluated at A_D D + A_O O + h + +double log_density_gaussian(double noise_scale, // Scale of randomization + int ndim, // Number of features -- "p" + int ninternal, // Dimension of internal data representation often 1 + int noptimization, // Dimension of optimization variables -- "p" + double *internal_linear, // A_D -- linear part for data + double *internal_state, // D -- data state + double *optimization_linear, // A_O -- linear part for optimization variables + double *optimization_state, // O -- optimization state + double *offset) // h -- offset in affine transform -- "p" dimensional +{ + int irow, icol; + double denom = 2 * noise_scale * noise_scale; + double value = 0; + double reconstruction = 0; + double *offset_ptr; + double *internal_linear_ptr; + double *internal_state_ptr; + double *optimization_linear_ptr; + double *optimization_state_ptr; + + for (irow=0; irow Date: Sat, 28 Oct 2017 11:13:48 -0700 Subject: [PATCH 312/493] unwanted files --- selectiveInference/src/randomized_lasso.c~ | 188 --------------------- selectiveInference/src/randomized_lasso.h~ | 42 ----- 2 files changed, 230 deletions(-) delete mode 100644 selectiveInference/src/randomized_lasso.c~ delete mode 100644 selectiveInference/src/randomized_lasso.h~ diff --git a/selectiveInference/src/randomized_lasso.c~ b/selectiveInference/src/randomized_lasso.c~ deleted file mode 100644 index 123c81d..0000000 --- a/selectiveInference/src/randomized_lasso.c~ +++ /dev/null @@ -1,188 +0,0 @@ -#include // for fabs - -// Augmented density for randomized LASSO after -// Gaussian randomization - -// Described in https://arxiv.org/abs/1609.05609 - -// Gaussian is product of IID N(0, noise_scale^2) density -// Evaluated at A_D D + A_O O + h - -// Laplace is product of IID Laplace with scale noise_scale -// Also evaluated at A_D D + A_O O + h - -double log_density_gaussian(double noise_scale, // Scale of randomization - int ndim, // Number of features -- "p" - int ninternal, // Dimension of internal data representation often 1 - int noptimization, // Dimension of optimization variables -- "p" - double *internal_linear, // A_D -- linear part for data - double *internal_state, // D -- data state - double *optimization_linear, // A_O -- linear part for optimization variables - double *optimization_state, // O -- optimization state - double *offset) // h -- offset in affine transform -- "p" dimensional -{ - int irow, icol; - double denom = 2 * noise_scale * noise_scale; - double value = 0; - double reconstruction = 0; - double *offset_ptr; - double *internal_linear_ptr; - double *internal_state_ptr; - double *optimization_linear_ptr; - double *optimization_state_ptr; - - for (irow=0; irow Date: Sat, 28 Oct 2017 11:16:12 -0700 Subject: [PATCH 313/493] wrapper for conditional density --- selectiveInference/src/Rcpp-randomized.cpp | 25 ++++++++++++++++++++++ tests/{ => randomized}/test_randomized.R | 0 2 files changed, 25 insertions(+) rename tests/{ => randomized}/test_randomized.R (100%) diff --git a/selectiveInference/src/Rcpp-randomized.cpp b/selectiveInference/src/Rcpp-randomized.cpp index 7887f32..23f0797 100644 --- a/selectiveInference/src/Rcpp-randomized.cpp +++ b/selectiveInference/src/Rcpp-randomized.cpp @@ -38,3 +38,28 @@ Rcpp::NumericVector log_density_gaussian_(double noise_scale, return(result); } + +// [[Rcpp::export]] +Rcpp::NumericVector log_density_gaussian_conditional_(double noise_scale, // Scale of randomization + Rcpp::NumericMatrix optimization_linear, // A_O -- linear part for optimization variables + Rcpp::NumericMatrix optimization_state, // O -- optimization state -- matrix of shape (ninternal, npts) + Rcpp::NumericMatrix offset) { // h -- offset in affine transform -- "p" dimensional + + int npt = optimization_state.ncol(); // Function is vectorized + int ndim = optimization_linear.nrow(); + int noptimization = optimization_linear.ncol(); + + Rcpp::NumericVector result(npt); + + int ipt; + for (ipt=0; ipt Date: Sat, 28 Oct 2017 11:49:40 -0700 Subject: [PATCH 314/493] forming internal affine transform --- selectiveInference/R/funs.randomized.R | 58 +++++++++++++++++++------- tests/randomized/test_randomized.R | 5 ++- 2 files changed, 46 insertions(+), 17 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 1da73b2..3b10423 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -71,33 +71,61 @@ randomizedLASSO = function(X, sign_soln = sign(result$soln) unpenalized = lam == 0 - active = !unpenalized * (sign_soln != 0) - inactive = !unpenzlied * (sign_soln == 0) + active = (!unpenalized) & (sign_soln != 0) + inactive = (!unpenalized) & (sign_soln == 0) unpenalized_set = which(unpenalized) active_set = which(active) inactive_set = which(inactive) - coef_term = t(X) %*% X[,c(unpenalized_set, # the coefficients - active_set)] + # affine transform for optimization variables + + E = c(unpenalized_set, active_set) + I = inactive_set + X_E = X[,E] + X_I = X[,I] + L_E = t(X) %*% X[,E] + + coef_term = L_E coef_term = coef_term %*% diag(c(rep(1, sum(unpenalized)), sign_soln[active])) # coefficients are non-negative coef_term[active,] = coef_term[active,] + ridge_term * diag(rep(1, sum(active))) # ridge term - subgrad_term = cbind(matrix(0, sum(inactive), sum(active) + sum(unpenalized)), - diag(rep(1, sum(inactive)))) - linear_term = rbind(coef_term, + subgrad_term = matrix(0, p, sum(inactive)) # for subgrad + for (i in 1:sum(inactive)) { + subgrad_term[inactive_set[i], i] = 1 + } + + linear_term = cbind(coef_term, subgrad_term) offset_term = rep(0, p) offset_term[active] = lam[active] * sign_soln[active] - + opt_transform = list(linear_term=linear_term, + offset_term=offset_term) + + # affine transform for internal (data) variables + # for now just use parametric in terms of + # (\bar{\beta}_E, X_{-E}^T(y-X_E\bar{\beta}_E) + # + # we have to reconstruct -X^TY from this pair + # + + active_term = -L_E # for \bar{\beta}_E + + inactive_term = -subgrad_term + linear_term = cbind(active_term, + inactive_term) + offset_term = rep(0, p) + internal_transform = list(linear_term = linear_term, + offset_term = offset_term) + + return(list(active_set = active_set, + inactive_set = inactive_set, + unpenalized_set = unpenalized_set, + sign_soln = sign_soln, + opt_transform = opt_transform, + internal_transform = internal_transform + )) - list(active_set = active_set, - inactive_set = inactive_set, - unpenalized_set = unpenalized_set, - sign_soln = sign_soln) - - - return(result) } diff --git a/tests/randomized/test_randomized.R b/tests/randomized/test_randomized.R index e4e35a1..305139b 100644 --- a/tests/randomized/test_randomized.R +++ b/tests/randomized/test_randomized.R @@ -8,7 +8,8 @@ test = function() { lam = 20 / sqrt(n) noise_scale = 0.01 * sqrt(n) ridge_term = .1 / sqrt(n) - fit_randomized_lasso(X, y, lam, noise_scale, ridge_term) + selectiveInference:::randomizedLASSO(X, y, lam, noise_scale, ridge_term) } -print(test()) +A=test() +#print(test()) From 9d1c79b17d1f69dbad9c8d017ef01c968da0185d Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Sat, 28 Oct 2017 12:03:00 -0700 Subject: [PATCH 315/493] vectorized densities evaluate OK -- need to check results --- selectiveInference/R/funs.randomized.R | 2 +- selectiveInference/src/Rcpp-randomized.cpp | 4 ++-- tests/randomized/test_randomized.R | 27 +++++++++++++++++++--- 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 3b10423..92b871e 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -124,7 +124,7 @@ randomizedLASSO = function(X, inactive_set = inactive_set, unpenalized_set = unpenalized_set, sign_soln = sign_soln, - opt_transform = opt_transform, + optimization_transform = opt_transform, internal_transform = internal_transform )) diff --git a/selectiveInference/src/Rcpp-randomized.cpp b/selectiveInference/src/Rcpp-randomized.cpp index 23f0797..d6e8517 100644 --- a/selectiveInference/src/Rcpp-randomized.cpp +++ b/selectiveInference/src/Rcpp-randomized.cpp @@ -7,7 +7,7 @@ Rcpp::NumericVector log_density_gaussian_(double noise_scale, Rcpp::NumericMatrix internal_state, // D -- data state -- matrix of shape (nopt, npts) Rcpp::NumericMatrix optimization_linear, // A_O -- linear part for optimization variables Rcpp::NumericMatrix optimization_state, // O -- optimization state -- matrix of shape (ninternal, npts) - Rcpp::NumericMatrix offset) { // h -- offset in affine transform -- "p" dimensional + Rcpp::NumericVector offset) { // h -- offset in affine transform -- "p" dimensional int npt = internal_state.ncol(); // Function is vectorized if (optimization_state.ncol() != npt) { // Assuming each column is an internal or opt state because arrays are column major @@ -43,7 +43,7 @@ Rcpp::NumericVector log_density_gaussian_(double noise_scale, Rcpp::NumericVector log_density_gaussian_conditional_(double noise_scale, // Scale of randomization Rcpp::NumericMatrix optimization_linear, // A_O -- linear part for optimization variables Rcpp::NumericMatrix optimization_state, // O -- optimization state -- matrix of shape (ninternal, npts) - Rcpp::NumericMatrix offset) { // h -- offset in affine transform -- "p" dimensional + Rcpp::NumericVector offset) { // h -- offset in affine transform -- "p" dimensional int npt = optimization_state.ncol(); // Function is vectorized int ndim = optimization_linear.nrow(); diff --git a/tests/randomized/test_randomized.R b/tests/randomized/test_randomized.R index 305139b..87a3043 100644 --- a/tests/randomized/test_randomized.R +++ b/tests/randomized/test_randomized.R @@ -1,6 +1,6 @@ library(selectiveInference) -test = function() { +smoke_test = function() { n = 100; p = 50 X = matrix(rnorm(n * p), n, p) @@ -10,6 +10,27 @@ test = function() { ridge_term = .1 / sqrt(n) selectiveInference:::randomizedLASSO(X, y, lam, noise_scale, ridge_term) } +A = smoke_test() -A=test() -#print(test()) +density_test = function() { + + random_lasso = smoke_test() + p = nrow(random_lasso$internal_transform$linear_term) + internal_state = matrix(rnorm(p * 20), p, 20) + optimization_state = matrix(rnorm(p * 20), p, 20) + offset = rnorm(p) + + selectiveInference:::log_density_gaussian_(10., + random_lasso$internal_transform$linear_term, + internal_state, + random_lasso$optimization_transform$linear_term, + optimization_state, + offset) + + selectiveInference:::log_density_gaussian_conditional_(10., + random_lasso$optimization_transform$linear_term, + optimization_state, + offset) +} + +density_test() From 5393dcd64b711aee524929a0c2eb55083b208d2c Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Sat, 28 Oct 2017 12:16:27 -0700 Subject: [PATCH 316/493] added laplace densities --- selectiveInference/src/Rcpp-randomized.cpp | 63 ++++++++++++++ tests/randomized/test_randomized.R | 95 +++++++++++++++++++--- 2 files changed, 145 insertions(+), 13 deletions(-) diff --git a/selectiveInference/src/Rcpp-randomized.cpp b/selectiveInference/src/Rcpp-randomized.cpp index d6e8517..b2b2cd2 100644 --- a/selectiveInference/src/Rcpp-randomized.cpp +++ b/selectiveInference/src/Rcpp-randomized.cpp @@ -63,3 +63,66 @@ Rcpp::NumericVector log_density_gaussian_conditional_(double noise_scale, return(result); } + +// [[Rcpp::export]] +Rcpp::NumericVector log_density_laplace_(double noise_scale, // Scale of randomization + Rcpp::NumericMatrix internal_linear, // A_D -- linear part for data + Rcpp::NumericMatrix internal_state, // D -- data state -- matrix of shape (nopt, npts) + Rcpp::NumericMatrix optimization_linear, // A_O -- linear part for optimization variables + Rcpp::NumericMatrix optimization_state, // O -- optimization state -- matrix of shape (ninternal, npts) + Rcpp::NumericVector offset) { // h -- offset in affine transform -- "p" dimensional + + int npt = internal_state.ncol(); // Function is vectorized + if (optimization_state.ncol() != npt) { // Assuming each column is an internal or opt state because arrays are column major + Rcpp::stop("Number of optimization samples should equal the number of (internally represented) data."); + } + + int ndim = optimization_linear.nrow(); + if (internal_linear.nrow() != ndim) { + Rcpp::stop("Dimension of optimization range should be the same as the dimension of the data range."); + } + int ninternal = internal_linear.ncol(); + int noptimization = optimization_linear.ncol(); + + Rcpp::NumericVector result(npt); + + int ipt; + for (ipt=0; ipt Date: Mon, 30 Oct 2017 21:53:04 -0700 Subject: [PATCH 317/493] using C-software submodule for selectiveInference/src --- .gitmodules | 3 + C-software | 1 + Makefile | 4 +- selectiveInference/src/debias.h | 76 --- selectiveInference/src/matrixcomps.c | 261 -------- selectiveInference/src/matrixcomps.h | 12 - selectiveInference/src/quadratic_program.c | 441 ------------- .../src/quadratic_program_wide.c | 590 ------------------ selectiveInference/src/randomized_lasso.c | 190 ------ selectiveInference/src/randomized_lasso.h | 42 -- selectiveInference/src/truncnorm.c | 188 ------ 11 files changed, 7 insertions(+), 1801 deletions(-) create mode 100644 .gitmodules create mode 160000 C-software delete mode 100644 selectiveInference/src/debias.h delete mode 100644 selectiveInference/src/matrixcomps.c delete mode 100644 selectiveInference/src/matrixcomps.h delete mode 100644 selectiveInference/src/quadratic_program.c delete mode 100644 selectiveInference/src/quadratic_program_wide.c delete mode 100644 selectiveInference/src/randomized_lasso.c delete mode 100644 selectiveInference/src/randomized_lasso.h delete mode 100644 selectiveInference/src/truncnorm.c diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..f8073fb --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "C-software"] + path = C-software + url = https://github.com/selective-inference/C-software.git diff --git a/C-software b/C-software new file mode 160000 index 0000000..a3d9a17 --- /dev/null +++ b/C-software @@ -0,0 +1 @@ +Subproject commit a3d9a1723ce94cb430b5dfd3e058fd708a6bae7f diff --git a/Makefile b/Makefile index e10e111..5580814 100644 --- a/Makefile +++ b/Makefile @@ -4,11 +4,13 @@ Rcpp: Rscript -e "library(Rcpp); Rcpp::compileAttributes('selectiveInference')" install: Rcpp + cp C-software/src/* selectiveInference/src R CMD INSTALL selectiveInference build: + cp C-software/src/* selectiveInference/src R CMD build selectiveInference -check: Rcpp build +check: Rcpp build R CMD build selectiveInference R CMD check selectiveInference_1.2.2.tar.gz # fix this to be a script variable \ No newline at end of file diff --git a/selectiveInference/src/debias.h b/selectiveInference/src/debias.h deleted file mode 100644 index d3db26d..0000000 --- a/selectiveInference/src/debias.h +++ /dev/null @@ -1,76 +0,0 @@ -#ifdef __cplusplus -extern "C" -{ -#endif /* __cplusplus */ - -int solve_qp(double *nndef_ptr, /* A non-negative definite matrix */ - double *linear_func_ptr, /* Linear term in objective */ - double *nndef_diag_ptr, /* Diagonal of nndef */ - double *gradient_ptr, /* nndef times theta */ - int *ever_active_ptr, /* Ever active set: 1-based */ - int *nactive_ptr, /* Size of ever active set */ - int nfeature, /* How many features in nndef */ - double bound, /* feasibility parameter */ - double *theta, /* current value */ - double *theta_old, /* previous value */ - int maxiter, /* max number of iterations */ - double kkt_tol, /* precision for checking KKT conditions */ - double objective_tol, /* precision for checking relative decrease in objective value */ - double parameter_tol, /* precision for checking relative convergence of parameter */ - int max_active, /* Upper limit for size of active set -- otherwise break */ - int objective_stop, /* Break based on convergence of objective value? */ - int kkt_stop, /* Break based on KKT? */ - int param_stop); /* Break based on parameter convergence? */ - -int check_KKT_qp(double *theta, /* current theta */ - double *gradient_ptr, /* nndef times theta + linear_func */ - int nrow, /* how many rows in nndef */ - double bound, /* Lagrange multipler for \ell_1 */ - double tol); /* precision for checking KKT conditions */ - -int solve_wide(double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX/ncase = nndef */ - double *X_theta_ptr, /* Fitted values */ - double *linear_func_ptr, /* Linear term in objective */ - double *nndef_diag_ptr, /* Diagonal entries of non-neg def matrix */ - double *gradient_ptr, /* X^TX/ncase times theta + linear_func*/ - int *need_update_ptr, /* Keeps track of updated gradient coords */ - int *ever_active_ptr, /* Ever active set: 1-based */ - int *nactive_ptr, /* Size of ever active set */ - int ncase, /* How many rows in X */ - int nfeature, /* How many columns in X */ - double *bound_ptr, /* Lagrange multipliers */ - double ridge_term, /* Ridge / ENet term */ - double *theta_ptr, /* current value */ - double *theta_old_ptr, /* previous value */ - int maxiter, /* max number of iterations */ - double kkt_tol, /* precision for checking KKT conditions */ - double objective_tol, /* precision for checking relative decrease in objective value */ - double parameter_tol, /* precision for checking relative convergence of parameter */ - int max_active, /* Upper limit for size of active set -- otherwise break */ - int objective_stop, /* Break based on convergence of objective value? */ - int kkt_stop, /* Break based on KKT? */ - int param_stop); /* Break based on parameter convergence? */ - -int check_KKT_wide(double *theta_ptr, /* current theta */ - double *gradient_ptr, /* X^TX/ncase times theta + linear_func*/ - double *X_theta_ptr, /* Current fitted values */ - double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX/ncase = nndef */ - double *linear_func_ptr, /* Linear term in objective */ - int *need_update_ptr, /* Which coordinates need to be updated? */ - int nfeature, /* how many columns in X */ - int ncase, /* how many rows in X */ - double *bound_ptr, /* Lagrange multiplers for \ell_1 */ - double ridge_term, /* Ridge / ENet term */ - double tol); /* precision for checking KKT conditions */ - -void update_gradient_wide(double *gradient_ptr, /* X^TX/ncase times theta + linear_func */ - double *X_theta_ptr, /* Current fitted values */ - double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX/ncase = nndef */ - double *linear_func_ptr, /* Linear term in objective */ - int *need_update_ptr, /* Which coordinates need to be updated? */ - int nfeature, /* how many columns in X */ - int ncase); /* how many rows in X */ - -#ifdef __cplusplus -} /* extern "C" */ -#endif /* __cplusplus */ diff --git a/selectiveInference/src/matrixcomps.c b/selectiveInference/src/matrixcomps.c deleted file mode 100644 index bec3506..0000000 --- a/selectiveInference/src/matrixcomps.c +++ /dev/null @@ -1,261 +0,0 @@ -#include -#include - -// Matrices are stored as vectors, in column-major order - -// Givens rotation of a and b, stored in c and s -void givens(double a, double b, double *c, double *s) { - if (b==0) { - *c = 1; - *s = 0; - } - else { - if (fabs(b)>fabs(a)) { - double t = -a/b; - *s = 1/sqrt(1+t*t); - *c = (*s)*t; - } - else { - double t = -b/a; - *c = 1/sqrt(1+t*t); - *s = (*c)*t; - } - } -} - -// Givens rotation applied to rows i1 and i2 of the m x n -// matrix A, on the subset of columns j1 through j2 -void rowrot(double *A, int i1, int i2, int m, int n, int j1, int j2, double c, double s) { - int j; - double t1,t2; - for (j=j1; j<=j2; j++) { - t1 = A[i1+j*m]; - t2 = A[i2+j*m]; - A[i1+j*m] = c*t1-s*t2; - A[i2+j*m] = s*t1+c*t2; - } -} - -// Givens rotation applied to columns j1 and j2 of the m x n -// matrix A, on the subset of rows i1 through i2 -void colrot(double *A, int j1, int j2, int m, int n, int i1, int i2, double c, double s) { - int i; - double t1,t2; - for (i=i1; i<=i2; i++) { - t1 = A[i+j1*m]; - t2 = A[i+j2*m]; - A[i+j1*m] = c*t1-s*t2; - A[i+j2*m] = s*t1+c*t2; - } -} - -// Downdate the QR factorization after deleting column j0, -// where Q1 is m x n and R is n x n. The other part of -// the Q matrix, Q2 m x (m-n), isn't needed so it isn't -// passed for efficiency -void downdate1(double *Q1, double *R, int j0, int m, int n) { - int j; - - double c,s; - for (j=j0+1; j=1; j--) { - // Compute the appropriate c and s - givens(w[j-1],w[j],&c,&s); - - // Pre-multiply w - rowrot(w,j-1,j,k,1,0,0,c,s); - - // Post-multiply Q2 - colrot(Q2,j-1,j,m,k,0,m-1,c,s); - } -} - -// Downdate the QR factorization after deleting the first row, -// where Q is m x m and R is m x n -void downdate2(double *Q, double *R, int *mp, int *np) { - int m,n,i; - m = *mp; - n = *np; - - double c,s; - for (i=m-1; i>=1; i--) { - // Compute the appropriate c and s - givens(Q[(i-1)*m],Q[i*m],&c,&s); - - // Post-mutiply Q - colrot(Q,i-1,i,m,m,0,m-1,c,s); - - // Pre-multiply R - if (i<=n) rowrot(R,i-1,i,m,n,i-1,n-1,c,s); - } -} - -// Update the QR factorization after adding the last row, -// where Q is m x m and R is m x n. For efficiency, Q is not -// passed, and only the first row of R is passed. Not counting -// its first row, the first q columns of R are zero -void update2(double *y, double *D, double *r, int *mp, int *np, int *qp) { - int m,n,q,j; - m = *mp; - n = *np; - q = *qp; - - double c,s; - for (j=0; j=0; i--) { - for (j=i; j=0; i--) { - for (j=i; j=0; i--) { - // Compute the appropriate c and s - givens(R[i+(i+q+1)*m2],R[i+(i+q)*m2],&c,&s); - - // Post-multiply R - colrot(R,i+q+1,i+q,m2,n,0,i,c,s); - - // Post-multiply D - colrot(A,i+q+1,i+q,m1,n,0,m1-1,c,s); - - // Pre-multiply y - rowrot(y,i+q+1,i+q,n,1,0,0,c,s); - } -} - -// Make the R factor upper triangular, by Givens rotating -// its columns and rows, appropriately. Here A is m1 x n, -// Q is m2 x m2, and R is m2 x n with rank(R) = n-q-1. The -// first q columns of R are zero. The kth row of R is the -// last row with a zero element on the diagonal -void maketri4(double *y, double *A, double *Q, double *R, int *m1p, int *m2p, int *np, int *qp, int *kp) { - int m1,m2,n,q,k,i,j; - m1 = *m1p; - m2 = *m2p; - n = *np; - q = *qp; - k = *kp; - - double c,s; - - // First rotate the columns - for (i=k-1; i>=0; i--) { - // Compute the appropriate c and s - givens(R[i+(i+q+1)*m2],R[i+(i+q)*m2],&c,&s); - - // Post-multiply R - colrot(R,i+q+1,i+q,m2,n,0,i,c,s); - - // Post-multiply D - colrot(A,i+q+1,i+q,m1,n,0,m1-1,c,s); - - // Pre-multiply y - rowrot(y,i+q+1,i+q,n,1,0,0,c,s); - } - - // Next rotate the rows - for (j=k+q+1; j // for fabs - -// Find an approximate row of \hat{nndef}^{-1} - -// Solves a dual version of problem (4) of https://arxiv.org/pdf/1306.3171.pdf - -// Dual problem: \text{min}_{\theta} 1/2 \theta^T \Sigma \theta - l^T\theta + \mu \|\theta\|_1 -// where l is `linear_func` below - -// This is the "negative" of the problem as in https://gist.github.com/jonathan-taylor/07774d209173f8bc4e42aa37712339bf -// Therefore we don't have to negate the answer to get theta. -// Update one coordinate - -double objective_qp(double *nndef_ptr, /* A non-negative definite matrix */ - double *linear_func_ptr, /* Linear term in objective */ - int *ever_active_ptr, /* Ever active set: 0-based */ - int *nactive_ptr, /* Size of ever active set */ - int nrow, /* how many rows in nndef */ - double bound, /* Lagrange multipler for \ell_1 */ - double *theta_ptr) /* current value */ -{ - int irow, icol; - double value = 0; - double *nndef_ptr_tmp = nndef_ptr; - double *linear_func_ptr_tmp = linear_func_ptr; - double *theta_row_ptr, *theta_col_ptr; - int *active_row_ptr, *active_col_ptr; - int active_row, active_col; - int nactive = *nactive_ptr; - - theta_row_ptr = theta_ptr; - theta_col_ptr = theta_ptr; - - for (irow=0; irow 0) && (fabs(gradient + bound) > tol * bound)) { - return(0); - } - else if ((*theta_ptr_tmp < 0) && (fabs(gradient - bound) > tol * bound)) { - return(0); - } - } - else { - if (fabs(gradient) > (1. + tol) * bound) { - return(0); - } - } - } - - return(1); -} - -int check_KKT_qp_active(int *ever_active_ptr, /* Ever active set: 0-based */ - int *nactive_ptr, /* Size of ever active set */ - double *theta_ptr, /* current theta */ - double *gradient_ptr, /* nndef times theta + linear_func */ - int nfeature, /* how many features in nndef */ - double bound, /* Lagrange multipler for \ell_1 */ - double tol) /* precision for checking KKT conditions */ -{ - // First check inactive - - int iactive; - double *theta_ptr_tmp; - double gradient; - double *gradient_ptr_tmp; - int nactive = *nactive_ptr; - int active_feature; - int *active_feature_ptr; - - for (iactive=0; iactive 0) && (fabs(gradient + bound) > tol * bound)) { - return(0); - } - else if ((*theta_ptr_tmp < 0) && (fabs(gradient - bound) > tol * bound)) { - return(0); - } - - } - else { - if (fabs(gradient) > (1. + tol) * bound) { - return(0); - } - } - } - - return(1); -} - - -double update_one_coord_qp(double *nndef_ptr, /* A non-negative definite matrix */ - double *linear_func_ptr, /* Linear term in objective */ - double *nndef_diag_ptr, /* Diagonal of nndef */ - double *gradient_ptr, /* nndef times theta + linear_func */ - int *ever_active_ptr, /* Ever active set: 1-based */ - int *nactive_ptr, /* Size of ever active set */ - int nfeature, /* How many features in nndef */ - double bound, /* feasibility parameter */ - double *theta_ptr, /* current value */ - int coord, /* which coordinate to update: 0-based */ - int is_active) /* Is this coord in ever_active */ -{ - - double delta; - double linear_term = 0; - double value = 0; - double old_value; - double *nndef_ptr_tmp; - double *gradient_ptr_tmp; - double *theta_ptr_tmp; - int icol = 0; - - double *quadratic_ptr = ((double *) nndef_diag_ptr + coord); - double quadratic_term = *quadratic_ptr; - - gradient_ptr_tmp = ((double *) gradient_ptr + coord); - linear_term = *gradient_ptr_tmp; - - theta_ptr_tmp = ((double *) theta_ptr + coord); - old_value = *theta_ptr_tmp; - - // The coord entry of gradient_ptr term has a diagonal term in it: - // nndef[coord, coord] * theta[coord] - // This removes it. - - linear_term -= quadratic_term * old_value; - - // Now soft-threshold the coord entry of theta - - // Objective is t \mapsto q/2 * t^2 + l * t + bound |t| - // with q=quadratic_term and l=linear_term - - // With a negative linear term, solution should be - // positive - - if (linear_term < -bound) { - value = (-linear_term - bound) / quadratic_term; - } - else if (linear_term > bound) { - value = -(linear_term - bound) / quadratic_term; - } - - // Add to active set if necessary - - if ((is_active == 0) && (value != 0)) { - update_ever_active_qp(coord, ever_active_ptr, nactive_ptr); - } - - // Update the linear term - - if (fabs(old_value - value) > 1.e-6 * (fabs(value) + fabs(old_value))) { - - delta = value - old_value; - nndef_ptr_tmp = ((double *) nndef_ptr + coord * nfeature); - gradient_ptr_tmp = ((double *) gradient_ptr); - - for (icol=0; icol 0)) { - break; - } - old_value = new_value; - } - - } - - // Check size of active set - - if (*nactive_ptr >= max_active) { - break; - } - - } - return(iter); -} - diff --git a/selectiveInference/src/quadratic_program_wide.c b/selectiveInference/src/quadratic_program_wide.c deleted file mode 100644 index 41e29ce..0000000 --- a/selectiveInference/src/quadratic_program_wide.c +++ /dev/null @@ -1,590 +0,0 @@ -#include // for fabs - -// Find an approximate row of \hat{nndef}^{-1} - -// Solves a dual version of problem (4) of https://arxiv.org/pdf/1306.3171.pdf - -// Dual problem: \text{min}_{\theta} 1/2 \|X\theta\|^2/n + l^T\theta + \mu \|\theta\|_1 + \frac{\epsilon}{2} \|\theta\|^2_2 -// where l is `linear_func` below - -// This is the "negative" of the problem as in https://gist.github.com/jonathan-taylor/07774d209173f8bc4e42aa37712339bf -// Therefore we don't have to negate the answer to get theta. -// Update one coordinate - -// Throughout X is a design matrix - -double objective_wide(double *X_theta_ptr, /* Fitted values */ - double *linear_func_ptr, /* Linear term in objective */ - int *ever_active_ptr, /* Ever active set: 0-based */ - int *nactive_ptr, /* Size of ever active set */ - int ncase, /* how many rows in X */ - int nfeature, /* how many columns in X */ - double *bound_ptr, /* Lagrange multiplers for \ell_1 */ - double ridge_term, /* Ridge / ENet term */ - double *theta_ptr) /* current value */ -{ - int icase, iactive; - double value = 0; - double *bound_ptr_tmp; - double *X_theta_ptr_tmp = X_theta_ptr; - double *linear_func_ptr_tmp = linear_func_ptr; - double *theta_ptr_tmp; - int *active_feature_ptr; - int active_feature; - int nactive = *nactive_ptr; - - // The term \|X\theta\|^2_2/n, with n=ncase - - for (icase=0; icase 0) && (fabs(gradient + ridge_term * (*theta_ptr_tmp) + bound) > tol * bound)) { - return(0); - } - else if ((*theta_ptr_tmp < 0) && (fabs(gradient + ridge_term * (*theta_ptr_tmp) - bound) > tol * bound)) { - return(0); - } - - } - else if (bound != 0) { - if (fabs(gradient) > (1. + tol) * bound) { - return(0); - } - } - } - - return(1); -} - -int check_KKT_wide_active(int *ever_active_ptr, /* Ever active set: 0-based */ - int *nactive_ptr, /* Size of ever active set */ - double *theta_ptr, /* current theta */ - double *gradient_ptr, /* X^TX/ncase times theta + linear_func*/ - double *X_theta_ptr, /* Current fitted values */ - double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX/ncase = nndef */ - double *linear_func_ptr, /* Linear term in objective */ - int *need_update_ptr, /* Which coordinates need to be updated? */ - int nfeature, /* how many columns in X */ - int ncase, /* how many rows in X */ - double *bound_ptr, /* Lagrange multipliers for \ell_1 */ - double ridge_term, /* Ridge / ENet term */ - double tol) /* precision for checking KKT conditions */ -{ - // First check inactive - - int iactive; - double *theta_ptr_tmp; - double *bound_ptr_tmp; - double bound; - double gradient; - int nactive = *nactive_ptr; - int active_feature; - int *active_feature_ptr; - - for (iactive=0; iactive 0) && (fabs(gradient + ridge_term * (*theta_ptr_tmp) + bound) > tol * bound)) { - return(0); - } - else if ((*theta_ptr_tmp < 0) && (fabs(gradient + ridge_term * (*theta_ptr_tmp) - bound) > tol * bound)) { - return(0); - } - - } - else if (bound != 0) { - if (fabs(gradient) > (1. + tol) * bound) { - return(0); - } - } - } - - return(1); -} - -double update_one_coord_wide(double *X_ptr, /* A design matrix*/ - double *linear_func_ptr, /* Linear term in objective */ - double *nndef_diag_ptr, /* Diagonal of nndef */ - double *gradient_ptr, /* X^TX/ncase times theta + linear_func*/ - int *ever_active_ptr, /* Ever active set: 1-based */ - int *nactive_ptr, /* Size of ever active set */ - double *X_theta_ptr, /* X\theta -- fitted values */ - int *need_update_ptr, /* Whether a gradient coordinate needs update or not */ - int ncase, /* How many rows in X */ - int nfeature, /* How many rows in X */ - double *bound_ptr, /* Lagrange multipliers */ - double ridge_term, /* Ridge / ENet term */ - double *theta_ptr, /* current value */ - int coord, /* which coordinate to update: 0-based */ - int is_active) /* Is this coord in ever_active */ -{ - - double delta; - double linear_term = 0; - double value = 0; - double old_value; - double *X_ptr_tmp; - double *X_theta_ptr_tmp; - int *need_update_ptr_tmp; - double *theta_ptr_tmp; - double *bound_ptr_tmp; - double bound; - int ifeature, icase; - - double *diagonal_ptr = ((double *) nndef_diag_ptr + coord); - double diagonal_entry = *diagonal_ptr; - - linear_term = compute_gradient_coord(gradient_ptr, X_theta_ptr, X_ptr, linear_func_ptr, need_update_ptr, coord, ncase); - - theta_ptr_tmp = ((double *) theta_ptr + coord); - old_value = *theta_ptr_tmp; - - bound_ptr_tmp = ((double *) bound_ptr + coord); - bound = *bound_ptr_tmp; - - // The coord entry of gradient_ptr term has a diagonal term in it: - // (X^TX)[coord, coord] * theta[coord] / ncase - // This removes it. - - linear_term -= diagonal_entry * old_value; - - // Now soft-threshold the coord entry of theta - - // Objective is t \mapsto (q+eps)/2 * t^2 + l * t + bound |t| + - // with q=diagonal_entry and l=linear_term and eps=ridge_Term - - // With a negative linear term, solution should be - // positive - - if (linear_term < -bound) { - value = (-linear_term - bound) / (diagonal_entry + ridge_term); - } - else if (linear_term > bound) { - value = -(linear_term - bound) / (diagonal_entry + ridge_term); - } - - // Add to active set if necessary - - if ((is_active == 0) && (value != 0)) { - update_ever_active_wide(coord, ever_active_ptr, nactive_ptr); - } - - // Update X\theta if changed - - if (fabs(old_value - value) > 1.e-6 * (fabs(value) + fabs(old_value))) { - - // Set the update_gradient_ptr to 1 - - need_update_ptr_tmp = need_update_ptr; - for (ifeature=0; ifeature 0)) { - break; - } - old_value = new_value; - } - } - - // Check size of active set - - if (*nactive_ptr >= max_active) { - break; - } - - } - return(iter); -} - diff --git a/selectiveInference/src/randomized_lasso.c b/selectiveInference/src/randomized_lasso.c deleted file mode 100644 index 1f396b1..0000000 --- a/selectiveInference/src/randomized_lasso.c +++ /dev/null @@ -1,190 +0,0 @@ -#include // for fabs - -// Augmented density for randomized LASSO after -// Gaussian randomization - -// Described in https://arxiv.org/abs/1609.05609 - -// Gaussian is product of IID N(0, noise_scale^2) density -// Evaluated at A_D D + A_O O + h - -// Laplace is product of IID Laplace with scale noise_scale -// Also evaluated at A_D D + A_O O + h - -// Matrices are assumed in column major order! - -double log_density_gaussian(double noise_scale, // Scale of randomization - int ndim, // Number of features -- "p" - int ninternal, // Dimension of internal data representation often 1 - int noptimization, // Dimension of optimization variables -- "p" - double *internal_linear, // A_D -- linear part for data - double *internal_state, // D -- data state - double *optimization_linear, // A_O -- linear part for optimization variables - double *optimization_state, // O -- optimization state - double *offset) // h -- offset in affine transform -- "p" dimensional -{ - int irow, icol; - double denom = 2 * noise_scale * noise_scale; - double value = 0; - double reconstruction = 0; - double *offset_ptr; - double *internal_linear_ptr; - double *internal_state_ptr; - double *optimization_linear_ptr; - double *optimization_state_ptr; - - for (irow=0; irow -#include - -// Take a Gibbs hit and run step along a given direction - -// Assumes the covariance is identity - -void gibbs_step(double *state, /* state has law N(0,I) constrained to polyhedral set \{y:Ay \leq b\}*/ - double *direction, /* direction we will take Gibbs step */ - double *U, /* A %*% state - b */ - double *alpha, /* A %*% direction */ - int nconstraint, /* number of rows of A */ - int nstate) /* dimension of state */ -{ - - int istate; - double value = 0; - - /* Compute V=\eta^Ty */ - - for (istate = 0; istate < nstate; istate++) { - value += direction[istate] * state[istate]; - } - - /* Compute upper and lower bounds */ - - double lower_bound = -1e12; - double upper_bound = 1e12; - double bound_val = 0; - double tol=1.e-7; - int iconstraint; - - for (iconstraint = 0; iconstraint < nconstraint; iconstraint++) { - - bound_val = -U[iconstraint] / alpha[iconstraint] + value; - - if ((alpha[iconstraint] > tol) && - (bound_val < upper_bound)) { - upper_bound = bound_val; - } - else if ((alpha[iconstraint] < -tol) && - (bound_val > lower_bound)) { - lower_bound = bound_val; - } - - } - - /* Ensure constraints are satisfied */ - - if (lower_bound > value) { - lower_bound = value - tol; - } - else if (upper_bound < value) { - upper_bound = value + tol; - } - - /* Check to see if constraints are satisfied */ - - /* if (lower_bound > upper_bound) { - - }*/ - - /* Now, take a step */ - - double tnorm; /* the 1D gaussian variable */ - double cdfU, cdfL, unif; /* temp variables */ - - if (upper_bound < -10) { - - /* use Exp approximation */ - /* the approximation is that */ - /* Z | lower_bound < Z < upper_bound */ - /* is fabs(upper_bound) * (upper_bound - Z) = E approx Exp(1) */ - /* so Z = upper_bound - E / fabs(upper_bound) */ - /* and the truncation of the exponential is */ - /* E < fabs(upper_bound - lower_bound) * fabs(upper_bound) = D */ - - /* this has distribution function (1 - exp(-x)) / (1 - exp(-D)) */ - /* so to draw from this distribution */ - /* we set E = - log(1 - U * (1 - exp(-D))) where U is Unif(0,1) */ - /* and Z (= tnorm below) is as stated */ - - unif = runif(0., 1.) * (1 - exp(-fabs((lower_bound - upper_bound) * upper_bound))); - tnorm = (upper_bound + log(1 - unif) / fabs(upper_bound)); - } - else if (lower_bound > 10) { - - /* here Z = lower_bound + E / fabs(lower_bound) (though lower_bound is positive) */ - /* and D = fabs((upper_bound - lower_bound) * lower_bound) */ - - unif = runif(0., 1.) * (1 - exp(-fabs((upper_bound - lower_bound) * lower_bound))); - tnorm = (lower_bound - log(1 - unif) / lower_bound); - } - else if (lower_bound < 0) { - cdfL = pnorm(lower_bound, 0., 1., 1, 0); - cdfU = pnorm(upper_bound, 0., 1., 1, 0); - unif = runif(0., 1.) * (cdfU - cdfL) + cdfL; - if (unif < 0.5) { - tnorm = qnorm(unif, 0., 1., 1, 0); - } - else { - tnorm = -qnorm(1-unif, 0., 1., 1, 0); - } - } - else { - cdfL = pnorm(-lower_bound, 0., 1., 1, 0); - cdfU = pnorm(-upper_bound, 0., 1., 1, 0); - unif = runif(0., 1.) * (cdfL - cdfU) + cdfU; - if (unif < 0.5) { - tnorm = -qnorm(unif, 0., 1., 1, 0); - } - else { - tnorm = qnorm(1-unif, 0., 1., 1, 0); - } - } - - /* Now update the state and U */ - - double delta = tnorm - value; - - for (istate = 0; istate < nstate; istate++) { - state[istate] += delta * direction[istate]; - } - for (iconstraint = 0; iconstraint < nconstraint; iconstraint++) { - U[iconstraint] += delta * alpha[iconstraint] ; - } - - /* End of gibbs_step */ - -} - -void sample_truncnorm_white(double *state, /* state has law N(0,I) constrained to polyhedral set \{y:Ay \leq b\}*/ - double *U, /* A %*% state - b */ - double *directions, /* possible steps for sampler to take */ - /* assumed to be stored as list of columns of dimension nstate */ - /* has shape (nstate, ndirection) */ - double *alphas, /* The matrix A %*% directions */ - /* has shape (nconstraint, ndirection) */ - double *output, /* array in which to store samples */ - /* assumed will stored as list of vectors of dimension nstate */ - /* has shape (nstate, ndraw) */ - int *pnconstraint, /* number of rows of A */ - int *pndirection, /* the possible number of directions to choose from */ - /* `directions` should have size nstate*ndirection */ - int *pnstate, /* dimension of state */ - int *pburnin, /* number of burnin steps */ - int *pndraw) /* total number of samples to return */ -{ - - int iter_count; - int which_direction; - - int nconstraint = *pnconstraint; - int ndirection = *pndirection; - int nstate = *pnstate; - int burnin = *pburnin; - int ndraw = *pndraw; - - double *direction, *alpha; - - for (iter_count = 0; iter_count < burnin + ndraw; iter_count++) { - - which_direction = (int) floor(runif(0., 1.) * ndirection); - direction = ((double *) directions) + nstate * which_direction; - alpha = ((double *) alphas) + nconstraint * which_direction; - - /* take a step, which implicitly updates `state` and `U` */ - - gibbs_step(state, - direction, - U, - alpha, - nconstraint, - nstate); - - /* Store result if after burnin */ - - int istate; - if (iter_count >= burnin) { - for (istate = 0; istate < nstate; istate++) { - *output = state[istate]; - output++; - } - } - } - -} - From 39b967577e8e642f8da2c1d36277c0a6f47f0b6b Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Mon, 30 Oct 2017 21:54:41 -0700 Subject: [PATCH 318/493] updating travis script --- .travis.yml | 4 ++++ Makefile | 9 +++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 541fa3a..c324f88 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,5 +12,9 @@ warnings_are_errors: true before_install: - tlmgr install index # for texlive and vignette? - R -e 'install.packages(c("Rcpp", "intervals"), repos="http://cloud.r-project.org")' + - cd C-software + - git submodule init + - git submodule update + - make src - make Rcpp - cd selectiveInference diff --git a/Makefile b/Makefile index 5580814..671099f 100644 --- a/Makefile +++ b/Makefile @@ -3,14 +3,15 @@ Rcpp: - rm -f selectiveInference/R/RcppExports.R Rscript -e "library(Rcpp); Rcpp::compileAttributes('selectiveInference')" -install: Rcpp - cp C-software/src/* selectiveInference/src +install: Rcpp src R CMD INSTALL selectiveInference -build: - cp C-software/src/* selectiveInference/src +build: src R CMD build selectiveInference +src: + cp C-software/src/* selectiveInference/src + check: Rcpp build R CMD build selectiveInference R CMD check selectiveInference_1.2.2.tar.gz # fix this to be a script variable \ No newline at end of file From cd918b1fa35e4721dafcc20e97ffc882a1edf21a Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Wed, 11 Oct 2017 07:38:07 -0700 Subject: [PATCH 319/493] variable rename --- selectiveInference/R/funs.fixedCox.R | 12 ++++++------ selectiveInference/R/funs.fixedLogit.R | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/selectiveInference/R/funs.fixedCox.R b/selectiveInference/R/funs.fixedCox.R index 2fa8c08..9f35c95 100644 --- a/selectiveInference/R/funs.fixedCox.R +++ b/selectiveInference/R/funs.fixedCox.R @@ -29,7 +29,7 @@ if( sum(status==0)+sum(status==1)!=length(y)) stop("status vector must have valu vars=which(m) if(sum(m)>0){ bhat=beta[beta!=0] #penalized coefs just for active variables - s2=sign(bhat) + sign_bhat=sign(bhat) #check KKT @@ -40,7 +40,7 @@ if(sum(m)>0){ res=residuals(aaa,type="score") if(!is.matrix(res)) res=matrix(res,ncol=1) scor=colSums(res) - g=(scor+lambda*s2)/(2*lambda) + g=(scor+lambda*sign_bhat)/(2*lambda) # cat(c(g,lambda,tol.kkt),fill=T) if (any(abs(g) > 1+tol.kkt) ) warning(paste("Solution beta does not satisfy the KKT conditions", @@ -49,9 +49,9 @@ scor=colSums(res) # Hessian of partial likelihood at the LASSO solution MM=vcov(aaa) -bbar=(bhat+lambda*MM%*%s2) -A1=-(mydiag(s2)) -b1= -(mydiag(s2)%*%MM)%*%s2*lambda +bbar=(bhat+lambda*MM%*%sign_bhat) +A1=-(mydiag(sign_bhat)) +b1= -(mydiag(sign_bhat)%*%MM)%*%sign_bhat*lambda temp=max(A1%*%bbar-b1) @@ -63,7 +63,7 @@ b1= -(mydiag(s2)%*%MM)%*%s2*lambda # the one sided p-values are a bit off for(jj in 1:length(bbar)){ - vj=rep(0,length(bbar));vj[jj]=s2[jj] + vj=rep(0,length(bbar));vj[jj]=sign_bhat[jj] junk=TG.pvalue(bbar, A1, b1, vj,MM) diff --git a/selectiveInference/R/funs.fixedLogit.R b/selectiveInference/R/funs.fixedLogit.R index 4ab3398..75a31e0 100644 --- a/selectiveInference/R/funs.fixedLogit.R +++ b/selectiveInference/R/funs.fixedLogit.R @@ -32,7 +32,7 @@ fixedLogitLassoInf=function(x,y,beta,lambda,alpha=.1, type=c("partial"), tol.bet m=beta[-1]!=0 #active set bhat=c(beta[1],beta[-1][beta[-1]!=0]) # intcpt plus active vars - s2=sign(bhat) + sign_bhat=sign(bhat) lam2m=diag(c(0,rep(lambda,sum(m)))) @@ -66,14 +66,14 @@ fixedLogitLassoInf=function(x,y,beta,lambda,alpha=.1, type=c("partial"), tol.bet # MM=solve(t(xxm)%*%w%*%xxm) MM=solve(scale(t(xxm),F,1/ww)%*%xxm) gm = c(0,-g[vars]*lambda) # gradient at LASSO solution, first entry is 0 because intercept is unpenalized - # at exact LASSO solution it should be s2[-1] + # at exact LASSO solution it should be sign_bhat[-1] dbeta = MM %*% gm - # bbar=(bhat+lam2m%*%MM%*%s2) # JT: this is wrong, shouldn't use sign of intercept anywhere... + # bbar=(bhat+lam2m%*%MM%*%sign_bhat) # JT: this is wrong, shouldn't use sign of intercept anywhere... bbar = bhat - dbeta - A1=-(mydiag(s2))[-1,] - b1= (s2 * dbeta)[-1] + A1=-(mydiag(sign_bhat))[-1,] + b1= (sign_bhat * dbeta)[-1] tol.poly = 0.01 if (max((A1 %*% bbar) - b1) > tol.poly) @@ -87,7 +87,7 @@ fixedLogitLassoInf=function(x,y,beta,lambda,alpha=.1, type=c("partial"), tol.bet for(jj in 1:sum(m)){ - vj=c(rep(0,sum(m)+1));vj[jj+1]=s2[jj+1] + vj=c(rep(0,sum(m)+1));vj[jj+1]=sign_bhat[jj+1] # compute p-values junk=TG.pvalue(bbar, A1, b1, vj, MM) pv[jj] = junk$pv From ac2bbc82abd7a7e530f44a1be54d01f5ca940c22 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Wed, 25 Oct 2017 14:06:10 -0700 Subject: [PATCH 320/493] NF: density functions for randomized LASSO --- selectiveInference/src/randomized_lasso.c | 201 ++++++++++++++++++++++ selectiveInference/src/randomized_lasso.h | 42 +++++ 2 files changed, 243 insertions(+) create mode 100644 selectiveInference/src/randomized_lasso.c create mode 100644 selectiveInference/src/randomized_lasso.h diff --git a/selectiveInference/src/randomized_lasso.c b/selectiveInference/src/randomized_lasso.c new file mode 100644 index 0000000..ac55cf4 --- /dev/null +++ b/selectiveInference/src/randomized_lasso.c @@ -0,0 +1,201 @@ +#include // for fabs + +// Augmented density for randomized LASSO after +// Gaussian randomization + +// Described in https://arxiv.org/abs/1609.05609 + +// Gaussian is product of IID N(0, noise_scale^2) density +// Evaluated at A_D D + A_O O + h + +// Laplace is product of IID Laplace with scale noise_scale +// Also evaluated at A_D D + A_O O + h + +double log_density_gaussian(double noise_scale, // Scale of randomization + int ndim, // Number of features -- "p" + int ninternal, // Dimension of internal data representation often 1 + int noptimization, // Dimension of optimization variables -- "p" + double *internal_linear, // A_D -- linear part for data + double *internal_state, // D -- data state + double *optimization_linear, // A_O -- linear part for optimization variables + double *optimization_state, // O -- optimization state + double *offset) // h -- offset in affine transform -- "p" dimensional +{ + int irow, icol; + double denom = 2 * noise_scale * noise_scale; + double value = 0; + double reconstruction = 0; + double *offset_ptr; + double *internal_linear_ptr; + double *internal_state_ptr; + double *optimization_linear_ptr; + double *optimization_state_ptr; + + for (irow=0; irow Date: Wed, 25 Oct 2017 16:35:52 -0700 Subject: [PATCH 321/493] T to TRUE --- selectiveInference/R/funs.fixed.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index be314af..66a3088 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -6,7 +6,7 @@ fixedLassoInf <- function(x, y, beta, lambda, family=c("gaussian","binomial","cox"), intercept=TRUE, add.targets=NULL, status=NULL, sigma=NULL, alpha=0.1, - type=c("partial","full"), tol.beta=1e-5, tol.kkt=0.1, + type=c("partial", "full"), tol.beta=1e-5, tol.kkt=0.1, gridrange=c(-100,100), bits=NULL, verbose=FALSE, linesearch.try=10) { @@ -150,7 +150,7 @@ fixedLassoInf <- function(x, y, beta, ci = tailarea = matrix(0,k,2) if (type=="full" & p > n) { - if (intercept == T) { + if (intercept == TRUE) { pp=p+1 Xint <- cbind(rep(1,n),x) # indices of selected predictors From 49d0b67884454543899680b91db1fed6c67e29a0 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 26 Oct 2017 13:08:05 -0700 Subject: [PATCH 322/493] updated wide C code -- can now do ridge as well as variable weights -- ready to solve randomized LASSO --- selectiveInference/R/funs.fixed.R | 40 +++- selectiveInference/src/Rcpp-debias.cpp | 35 +++- selectiveInference/src/debias.h | 22 ++- selectiveInference/src/quadratic_program.c | 108 +++++++---- .../src/quadratic_program_wide.c | 176 ++++++++++++------ selectiveInference/src/randomized_lasso.c | 13 -- 6 files changed, 270 insertions(+), 124 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 66a3088..aaceaaa 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -189,8 +189,10 @@ fixedLassoInf <- function(x, y, beta, } M <- (((htheta%*%t(Xordered))+ithetasigma%*%FS%*%hsigmaSinv%*%t(XS))/n) + # vector which is offset for testing debiased beta's null_value <- (((ithetasigma%*%FS%*%hsigmaSinv)%*%sign(hbetaS))*lambda/n) + if (intercept == T) { M = M[-1,] # remove intercept row null_value = null_value[-1] # remove intercept element @@ -238,12 +240,23 @@ fixedLassoInf <- function(x, y, beta, tailarea[j,] = a$tailarea } - out = list(type=type,lambda=lambda,pv=pv,ci=ci, - tailarea=tailarea,vlo=vlo,vup=vup,vmat=vmat,y=y, - vars=vars,sign=sign_vars,sigma=sigma,alpha=alpha, - sd=sigma*sqrt(rowSums(vmat^2)), - coef0=vmat%*%y, - call=this.call) + out = list(type=type, + lambda=lambda, + pv=pv, + ci=ci, + tailarea=tailarea, + vlo=vlo, + vup=vup, + vmat=vmat, + y=y, + vars=vars, + sign=sign_vars, + sigma=sigma, + alpha=alpha, + sd=sigma*sqrt(rowSums(vmat^2)), + coef0=vmat%*%y, + call=this.call) + class(out) = "fixedLassoInf" return(out) } @@ -374,7 +387,7 @@ debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n dep row, mu, linesearch=TRUE, # do a linesearch? - scaling_factor=1.2, # multiplicative factor for linesearch + scaling_factor=1.5, # multiplicative factor for linesearch max_active=NULL, # how big can active set get? max_try=10, # how many steps in linesearch? warn_kkt=FALSE, # warn if KKT does not seem to be satisfied? @@ -420,11 +433,15 @@ debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n dep nactive, kkt_tol, objective_tol, - max_active) + max_active, + FALSE, # objective_stop + FALSE, # kkt_stop + TRUE) # param_stop } else { Xsoln = rep(0, nrow(Xinfo)) result = solve_QP_wide(Xinfo, # this is a design matrix - mu, + rep(mu, p), # vector of Lagrange multipliers + 0, # ridge_term max_iter, soln, linear_func, @@ -434,7 +451,10 @@ debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n dep nactive, kkt_tol, objective_tol, - max_active) + max_active, + FALSE, # objective_stop + FALSE, # kkt_stop + TRUE) # param_stop } diff --git a/selectiveInference/src/Rcpp-debias.cpp b/selectiveInference/src/Rcpp-debias.cpp index ce8bb15..24bbae8 100644 --- a/selectiveInference/src/Rcpp-debias.cpp +++ b/selectiveInference/src/Rcpp-debias.cpp @@ -15,7 +15,10 @@ Rcpp::List solve_QP(Rcpp::NumericMatrix Sigma, Rcpp::IntegerVector nactive, double kkt_tol, double objective_tol, - int max_active + int max_active, + int objective_stop, + int kkt_stop, + int param_stop ) { int nrow = Sigma.nrow(); // number of features @@ -28,6 +31,8 @@ Rcpp::List solve_QP(Rcpp::NumericMatrix Sigma, Rcpp::NumericVector Sigma_diag(nrow); double *sigma_diag_p = Sigma_diag.begin(); + Rcpp::NumericVector theta_old(nrow); + for (irow=0; irow= max_active); diff --git a/selectiveInference/src/debias.h b/selectiveInference/src/debias.h index ebcbc93..052af7a 100644 --- a/selectiveInference/src/debias.h +++ b/selectiveInference/src/debias.h @@ -9,13 +9,17 @@ int solve_qp(double *nndef_ptr, /* A non-negative definite matrix */ double *gradient_ptr, /* nndef times theta */ int *ever_active_ptr, /* Ever active set: 1-based */ int *nactive_ptr, /* Size of ever active set */ - int nrow, /* How many rows in nndef */ + int nfeature, /* How many features in nndef */ double bound, /* feasibility parameter */ double *theta, /* current value */ + double *theta_old, /* previous value */ int maxiter, /* max number of iterations */ double kkt_tol, /* precision for checking KKT conditions */ double objective_tol, /* precision for checking relative decrease in objective value */ - int max_active); /* Upper limit for size of active set -- otherwise break */ + int max_active, /* Upper limit for size of active set -- otherwise break */ + int objective_stop, /* Break based on convergence of objective value? */ + int kkt_stop, /* Break based on KKT? */ + int param_stop); /* Break based on parameter convergence? */ int check_KKT_qp(double *theta, /* current theta */ double *gradient_ptr, /* nndef times theta + linear_func */ @@ -33,12 +37,17 @@ int solve_wide(double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX int *nactive_ptr, /* Size of ever active set */ int ncase, /* How many rows in X */ int nfeature, /* How many columns in X */ - double bound, /* feasibility parameter */ + double *bound_ptr, /* Lagrange multipliers */ + double ridge_term, /* Ridge / ENet term */ double *theta_ptr, /* current value */ + double *theta_old_ptr, /* previous value */ int maxiter, /* max number of iterations */ double kkt_tol, /* precision for checking KKT conditions */ double objective_tol, /* precision for checking relative decrease in objective value */ - int max_active); /* Upper limit for size of active set -- otherwise break */ + int max_active, /* Upper limit for size of active set -- otherwise break */ + int objective_stop, /* Break based on convergence of objective value? */ + int kkt_stop, /* Break based on KKT? */ + int param_stop); /* Break based on parameter convergence? */ int check_KKT_wide(double *theta_ptr, /* current theta */ double *gradient_ptr, /* X^TX/ncase times theta + linear_func*/ @@ -48,8 +57,9 @@ int check_KKT_wide(double *theta_ptr, /* current theta */ int *need_update_ptr, /* Which coordinates need to be updated? */ int nfeature, /* how many columns in X */ int ncase, /* how many rows in X */ - double bound, /* Lagrange multipler for \ell_1 */ - double tol); /* precision for checking KKT conditions */ + double *bound_ptr, /* Lagrange multiplers for \ell_1 */ + double ridge_term, /* Ridge / ENet term */ + double tol); /* precision for checking KKT conditions */ void update_gradient_wide(double *gradient_ptr, /* X^TX/ncase times theta + linear_func */ double *X_theta_ptr, /* Current fitted values */ diff --git a/selectiveInference/src/quadratic_program.c b/selectiveInference/src/quadratic_program.c index d9bd017..1bc7fa3 100644 --- a/selectiveInference/src/quadratic_program.c +++ b/selectiveInference/src/quadratic_program.c @@ -92,19 +92,19 @@ int update_ever_active_qp(int coord, int check_KKT_qp(double *theta_ptr, /* current theta */ double *gradient_ptr, /* nndef times theta + linear_func */ - int nrow, /* how many rows in nndef */ + int nfeature, /* how many features in nndef */ double bound, /* Lagrange multipler for \ell_1 */ double tol) /* precision for checking KKT conditions */ { // First check inactive - int irow; + int ifeature; double *theta_ptr_tmp, *gradient_ptr_tmp; double gradient; - for (irow=0; irow 1.e-6 * (fabs(value) + fabs(old_value))) { delta = value - old_value; - nndef_ptr_tmp = ((double *) nndef_ptr + coord * nrow); + nndef_ptr_tmp = ((double *) nndef_ptr + coord * nfeature); gradient_ptr_tmp = ((double *) gradient_ptr); - for (icol=0; icol= max_active) { @@ -380,12 +417,12 @@ int solve_qp(double *nndef_ptr, /* A non-negative definite matrix */ // Check relative decrease of objective - if (check_objective) { + if (objective_stop) { new_value = objective_qp(nndef_ptr, linear_func_ptr, ever_active_ptr, nactive_ptr, - nrow, + nfeature, bound, theta); @@ -394,6 +431,7 @@ int solve_qp(double *nndef_ptr, /* A non-negative definite matrix */ } old_value = new_value; } + } return(iter); } diff --git a/selectiveInference/src/quadratic_program_wide.c b/selectiveInference/src/quadratic_program_wide.c index 3beb578..c6cb9f3 100644 --- a/selectiveInference/src/quadratic_program_wide.c +++ b/selectiveInference/src/quadratic_program_wide.c @@ -4,7 +4,7 @@ // Solves a dual version of problem (4) of https://arxiv.org/pdf/1306.3171.pdf -// Dual problem: \text{min}_{\theta} 1/2 \|X\theta\|^2 - l^T\theta + \mu \|\theta\|_1 +// Dual problem: \text{min}_{\theta} 1/2 \|X\theta\|^2 - l^T\theta + \mu \|\theta\|_1 + \frac{\epsilon}{2} \|\theta\|^2_2 // where l is `linear_func` below // This is the "negative" of the problem as in https://gist.github.com/jonathan-taylor/07774d209173f8bc4e42aa37712339bf @@ -19,11 +19,13 @@ double objective_wide(double *X_theta_ptr, /* Fitted values */ int *nactive_ptr, /* Size of ever active set */ int ncase, /* how many rows in X */ int nfeature, /* how many columns in X */ - double bound, /* Lagrange multipler for \ell_1 */ + double *bound_ptr, /* Lagrange multiplers for \ell_1 */ + double ridge_term, /* Ridge / ENet term */ double *theta_ptr) /* current value */ { int icase, iactive; double value = 0; + double *bound_ptr_tmp; double *X_theta_ptr_tmp = X_theta_ptr; double *linear_func_ptr_tmp = linear_func_ptr; double *theta_ptr_tmp; @@ -55,8 +57,12 @@ double objective_wide(double *X_theta_ptr, /* Fitted values */ // The \ell_1 term - value += bound * fabs((*theta_ptr_tmp)); + bound_ptr_tmp = ((double *) bound_ptr + active_feature); + value += (*bound_ptr_tmp) * fabs((*theta_ptr_tmp)); + // The ridge term + + value += 0.5 * ridge_term * (*theta_ptr_tmp) * (*theta_ptr_tmp); } return(value); @@ -167,34 +173,39 @@ int check_KKT_wide(double *theta_ptr, /* current theta */ int *need_update_ptr, /* Which coordinates need to be updated? */ int nfeature, /* how many columns in X */ int ncase, /* how many rows in X */ - double bound, /* Lagrange multipler for \ell_1 */ + double *bound_ptr, /* Lagrange multiplers for \ell_1 */ + double ridge_term, /* Ridge / ENet term */ double tol) /* precision for checking KKT conditions */ { // First check inactive int ifeature; double *theta_ptr_tmp; + double *bound_ptr_tmp; + double bound; double gradient; for (ifeature=0; ifeature 0) && (fabs(gradient + bound) > tol * bound)) { + if ((*theta_ptr_tmp != 0) && (bound != 0)) { // these coordinates of gradients should be equal to -bound + + if ((*theta_ptr_tmp > 0) && (fabs(gradient + ridge_term * (*theta_ptr_tmp) + bound) > tol * bound)) { return(0); } - else if ((*theta_ptr_tmp < 0) && (fabs(gradient - bound) > tol * bound)) { + else if ((*theta_ptr_tmp < 0) && (fabs(gradient + ridge_term * (*theta_ptr_tmp) - bound) > tol * bound)) { return(0); } - + } - else { + else if (bound != 0) { if (fabs(gradient) > (1. + tol) * bound) { return(0); } @@ -214,13 +225,16 @@ int check_KKT_wide_active(int *ever_active_ptr, /* Ever active set: 0- int *need_update_ptr, /* Which coordinates need to be updated? */ int nfeature, /* how many columns in X */ int ncase, /* how many rows in X */ - double bound, /* Lagrange multipler for \ell_1 */ + double *bound_ptr, /* Lagrange multipliers for \ell_1 */ + double ridge_term, /* Ridge / ENet term */ double tol) /* precision for checking KKT conditions */ { // First check inactive int iactive; double *theta_ptr_tmp; + double *bound_ptr_tmp; + double bound; double gradient; int nactive = *nactive_ptr; int active_feature; @@ -230,23 +244,26 @@ int check_KKT_wide_active(int *ever_active_ptr, /* Ever active set: 0- active_feature_ptr = ((int *) ever_active_ptr + iactive); active_feature = *active_feature_ptr - 1; // Ever-active is 1-based + theta_ptr_tmp = ((double *) theta_ptr + active_feature); + bound_ptr_tmp = ((double *) bound_ptr + active_feature); + bound = *bound_ptr_tmp; // Compute this coordinate of the gradient gradient = compute_gradient_coord(gradient_ptr, X_theta_ptr, X_ptr, linear_func_ptr, need_update_ptr, active_feature, ncase); - if (*theta_ptr_tmp != 0) { // these coordinates of gradients should be equal to -bound + if ((*theta_ptr_tmp != 0) && (bound != 0)) { // these coordinates of gradients should be equal to -bound - if ((*theta_ptr_tmp > 0) && (fabs(gradient + bound) > tol * bound)) { + if ((*theta_ptr_tmp > 0) && (fabs(gradient + ridge_term * (*theta_ptr_tmp) + bound) > tol * bound)) { return(0); } - else if ((*theta_ptr_tmp < 0) && (fabs(gradient - bound) > tol * bound)) { + else if ((*theta_ptr_tmp < 0) && (fabs(gradient + ridge_term * (*theta_ptr_tmp) - bound) > tol * bound)) { return(0); } } - else { + else if (bound != 0) { if (fabs(gradient) > (1. + tol) * bound) { return(0); } @@ -266,7 +283,8 @@ double update_one_coord_wide(double *X_ptr, /* A design matrix*/ int *need_update_ptr, /* Whether a gradient coordinate needs update or not */ int ncase, /* How many rows in X */ int nfeature, /* How many rows in X */ - double bound, /* feasibility parameter */ + double *bound_ptr, /* Lagrange multipliers */ + double ridge_term, /* Ridge / ENet term */ double *theta_ptr, /* current value */ int coord, /* which coordinate to update: 0-based */ int is_active) /* Is this coord in ever_active */ @@ -280,6 +298,8 @@ double update_one_coord_wide(double *X_ptr, /* A design matrix*/ double *X_theta_ptr_tmp; int *need_update_ptr_tmp; double *theta_ptr_tmp; + double *bound_ptr_tmp; + double bound; int ifeature, icase; double *diagonal_ptr = ((double *) nndef_diag_ptr + coord); @@ -290,6 +310,9 @@ double update_one_coord_wide(double *X_ptr, /* A design matrix*/ theta_ptr_tmp = ((double *) theta_ptr + coord); old_value = *theta_ptr_tmp; + bound_ptr_tmp = ((double *) bound_ptr + coord); + bound = *bound_ptr_tmp; + // The coord entry of gradient_ptr term has a diagonal term in it: // (X^TX)[coord, coord] * theta[coord] / ncase // This removes it. @@ -298,17 +321,17 @@ double update_one_coord_wide(double *X_ptr, /* A design matrix*/ // Now soft-threshold the coord entry of theta - // Objective is t \mapsto q/2 * t^2 + l * t + bound |t| - // with q=diagonal_entry and l=linear_term + // Objective is t \mapsto (q+eps)/2 * t^2 + l * t + bound |t| + + // with q=diagonal_entry and l=linear_term and eps=ridge_Term // With a negative linear term, solution should be // positive if (linear_term < -bound) { - value = (-linear_term - bound) / diagonal_entry; + value = (-linear_term - bound) / (diagonal_entry + ridge_term); } else if (linear_term > bound) { - value = -(linear_term - bound) / diagonal_entry; + value = -(linear_term - bound) / (diagonal_entry + ridge_term); } // Add to active set if necessary @@ -363,24 +386,36 @@ int solve_wide(double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX int *nactive_ptr, /* Size of ever active set */ int ncase, /* How many rows in X */ int nfeature, /* How many columns in X */ - double bound, /* feasibility parameter */ + double *bound_ptr, /* Lagrange multipliers */ + double ridge_term, /* Ridge / ENet term */ double *theta_ptr, /* current value */ + double *theta_old_ptr, /* previous value */ int maxiter, /* max number of iterations */ double kkt_tol, /* precision for checking KKT conditions */ double objective_tol, /* precision for checking relative decrease in objective value */ - int max_active) /* Upper limit for size of active set -- otherwise break */ + int max_active, /* Upper limit for size of active set -- otherwise break */ + int objective_stop, /* Break based on convergence of objective value? */ + int kkt_stop, /* Break based on KKT? */ + int param_stop) /* Break based on parameter convergence? */ { int iter = 0; + int iter_old = 1; int ifeature = 0; int iactive = 0; int *active_ptr; - int check_objective = 1; + double old_value, new_value; int niter_active = 5; int iter_active; - if (check_objective) { + double norm_diff = 1.; + double norm_last = 1.; + double delta; + double threshold = 1.e-2; + double *theta_ptr_tmp, *theta_old_ptr_tmp; + + if (objective_stop) { old_value = objective_wide(X_theta_ptr, linear_func_ptr, @@ -388,8 +423,10 @@ int solve_wide(double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX nactive_ptr, ncase, nfeature, - bound, + bound_ptr, + ridge_term, theta_ptr); + new_value = old_value; } @@ -412,7 +449,8 @@ int solve_wide(double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX need_update_ptr, ncase, nfeature, - bound, + bound_ptr, + ridge_term, theta_ptr, *active_ptr - 1, // Ever-active is 1-based 1); @@ -431,7 +469,8 @@ int solve_wide(double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX need_update_ptr, nfeature, ncase, - bound, + bound_ptr, + ridge_term, kkt_tol) == 1) { break; } @@ -440,17 +479,20 @@ int solve_wide(double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX // Check KKT - if (check_KKT_wide(theta_ptr, - gradient_ptr, - X_theta_ptr, - X_ptr, - linear_func_ptr, - need_update_ptr, - nfeature, - ncase, - bound, - kkt_tol) == 1) { - break; + if (kkt_stop) { + if (check_KKT_wide(theta_ptr, + gradient_ptr, + X_theta_ptr, + X_ptr, + linear_func_ptr, + need_update_ptr, + nfeature, + ncase, + bound_ptr, + ridge_term, + kkt_tol) == 1) { + break; + } } // Update all variables @@ -467,7 +509,8 @@ int solve_wide(double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX need_update_ptr, ncase, nfeature, - bound, + bound_ptr, + ridge_term, theta_ptr, ifeature, 0); @@ -475,19 +518,45 @@ int solve_wide(double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX // Check KKT - if (check_KKT_wide(theta_ptr, - gradient_ptr, - X_theta_ptr, - X_ptr, - linear_func_ptr, - need_update_ptr, - nfeature, - ncase, - bound, - kkt_tol) == 1) { - break; + if (kkt_stop) { + if (check_KKT_wide(theta_ptr, + gradient_ptr, + X_theta_ptr, + X_ptr, + linear_func_ptr, + need_update_ptr, + nfeature, + ncase, + bound_ptr, + ridge_term, + kkt_tol) == 1) { + break; + } + } + + // Check based on norm -- from Adel's debiasing code + + if (param_stop) { + if (iter == 2 * iter_old) { + iter_old = iter; + norm_diff = 0; + norm_last = 0; + for (ifeature=0; ifeature= max_active) { @@ -496,14 +565,15 @@ int solve_wide(double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX // Check relative decrease of objective - if (check_objective) { + if (objective_stop) { new_value = objective_wide(X_theta_ptr, linear_func_ptr, ever_active_ptr, nactive_ptr, ncase, nfeature, - bound, + bound_ptr, + ridge_term, theta_ptr); if ((fabs(old_value - new_value) < objective_tol * fabs(new_value)) && (iter > 0)) { diff --git a/selectiveInference/src/randomized_lasso.c b/selectiveInference/src/randomized_lasso.c index ac55cf4..123c81d 100644 --- a/selectiveInference/src/randomized_lasso.c +++ b/selectiveInference/src/randomized_lasso.c @@ -126,8 +126,6 @@ double log_density_gaussian_conditional(double noise_scale, // Scale double denom = 2 * noise_scale * noise_scale; double reconstruction = 0; double *offset_ptr; - double *internal_linear_ptr; - double *internal_state_ptr; double *optimization_linear_ptr; double *optimization_state_ptr; @@ -164,8 +162,6 @@ double log_density_laplace_conditional(double noise_scale, // Scale double value = 0; double reconstruction = 0; double *offset_ptr; - double *internal_linear_ptr; - double *internal_state_ptr; double *optimization_linear_ptr; double *optimization_state_ptr; @@ -176,15 +172,6 @@ double log_density_laplace_conditional(double noise_scale, // Scale offset_ptr = ((double *) offset + irow); reconstruction = *offset_ptr; - // Internal (i.e. data) contribution - for (icol=0; icol Date: Thu, 26 Oct 2017 13:08:37 -0700 Subject: [PATCH 323/493] removing machine generated files --- selectiveInference/R/RcppExports.R | 19 ------ selectiveInference/src/RcppExports.cpp | 92 -------------------------- 2 files changed, 111 deletions(-) delete mode 100644 selectiveInference/R/RcppExports.R delete mode 100644 selectiveInference/src/RcppExports.cpp diff --git a/selectiveInference/R/RcppExports.R b/selectiveInference/R/RcppExports.R deleted file mode 100644 index f5ebee4..0000000 --- a/selectiveInference/R/RcppExports.R +++ /dev/null @@ -1,19 +0,0 @@ -# Generated by using Rcpp::compileAttributes() -> do not edit by hand -# Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 - -solve_QP <- function(Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active) { - .Call('_selectiveInference_solve_QP', PACKAGE = 'selectiveInference', Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active) -} - -solve_QP_wide <- function(X, bound, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, max_active) { - .Call('_selectiveInference_solve_QP_wide', PACKAGE = 'selectiveInference', X, bound, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, max_active) -} - -update1_ <- function(Q2, w, m, k) { - .Call('_selectiveInference_update1_', PACKAGE = 'selectiveInference', Q2, w, m, k) -} - -downdate1_ <- function(Q1, R, j0, m, n) { - .Call('_selectiveInference_downdate1_', PACKAGE = 'selectiveInference', Q1, R, j0, m, n) -} - diff --git a/selectiveInference/src/RcppExports.cpp b/selectiveInference/src/RcppExports.cpp deleted file mode 100644 index 02a7741..0000000 --- a/selectiveInference/src/RcppExports.cpp +++ /dev/null @@ -1,92 +0,0 @@ -// Generated by using Rcpp::compileAttributes() -> do not edit by hand -// Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 - -#include - -using namespace Rcpp; - -// solve_QP -Rcpp::List solve_QP(Rcpp::NumericMatrix Sigma, double bound, int maxiter, Rcpp::NumericVector theta, Rcpp::NumericVector linear_func, Rcpp::NumericVector gradient, Rcpp::IntegerVector ever_active, Rcpp::IntegerVector nactive, double kkt_tol, double objective_tol, int max_active); -RcppExport SEXP _selectiveInference_solve_QP(SEXP SigmaSEXP, SEXP boundSEXP, SEXP maxiterSEXP, SEXP thetaSEXP, SEXP linear_funcSEXP, SEXP gradientSEXP, SEXP ever_activeSEXP, SEXP nactiveSEXP, SEXP kkt_tolSEXP, SEXP objective_tolSEXP, SEXP max_activeSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type Sigma(SigmaSEXP); - Rcpp::traits::input_parameter< double >::type bound(boundSEXP); - Rcpp::traits::input_parameter< int >::type maxiter(maxiterSEXP); - Rcpp::traits::input_parameter< Rcpp::NumericVector >::type theta(thetaSEXP); - Rcpp::traits::input_parameter< Rcpp::NumericVector >::type linear_func(linear_funcSEXP); - Rcpp::traits::input_parameter< Rcpp::NumericVector >::type gradient(gradientSEXP); - Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type ever_active(ever_activeSEXP); - Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type nactive(nactiveSEXP); - Rcpp::traits::input_parameter< double >::type kkt_tol(kkt_tolSEXP); - Rcpp::traits::input_parameter< double >::type objective_tol(objective_tolSEXP); - Rcpp::traits::input_parameter< int >::type max_active(max_activeSEXP); - rcpp_result_gen = Rcpp::wrap(solve_QP(Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, max_active)); - return rcpp_result_gen; -END_RCPP -} -// solve_QP_wide -Rcpp::List solve_QP_wide(Rcpp::NumericMatrix X, double bound, int maxiter, Rcpp::NumericVector theta, Rcpp::NumericVector linear_func, Rcpp::NumericVector gradient, Rcpp::NumericVector X_theta, Rcpp::IntegerVector ever_active, Rcpp::IntegerVector nactive, double kkt_tol, double objective_tol, int max_active); -RcppExport SEXP _selectiveInference_solve_QP_wide(SEXP XSEXP, SEXP boundSEXP, SEXP maxiterSEXP, SEXP thetaSEXP, SEXP linear_funcSEXP, SEXP gradientSEXP, SEXP X_thetaSEXP, SEXP ever_activeSEXP, SEXP nactiveSEXP, SEXP kkt_tolSEXP, SEXP objective_tolSEXP, SEXP max_activeSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type X(XSEXP); - Rcpp::traits::input_parameter< double >::type bound(boundSEXP); - Rcpp::traits::input_parameter< int >::type maxiter(maxiterSEXP); - Rcpp::traits::input_parameter< Rcpp::NumericVector >::type theta(thetaSEXP); - Rcpp::traits::input_parameter< Rcpp::NumericVector >::type linear_func(linear_funcSEXP); - Rcpp::traits::input_parameter< Rcpp::NumericVector >::type gradient(gradientSEXP); - Rcpp::traits::input_parameter< Rcpp::NumericVector >::type X_theta(X_thetaSEXP); - Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type ever_active(ever_activeSEXP); - Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type nactive(nactiveSEXP); - Rcpp::traits::input_parameter< double >::type kkt_tol(kkt_tolSEXP); - Rcpp::traits::input_parameter< double >::type objective_tol(objective_tolSEXP); - Rcpp::traits::input_parameter< int >::type max_active(max_activeSEXP); - rcpp_result_gen = Rcpp::wrap(solve_QP_wide(X, bound, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, max_active)); - return rcpp_result_gen; -END_RCPP -} -// update1_ -Rcpp::List update1_(Rcpp::NumericMatrix Q2, Rcpp::NumericVector w, int m, int k); -RcppExport SEXP _selectiveInference_update1_(SEXP Q2SEXP, SEXP wSEXP, SEXP mSEXP, SEXP kSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type Q2(Q2SEXP); - Rcpp::traits::input_parameter< Rcpp::NumericVector >::type w(wSEXP); - Rcpp::traits::input_parameter< int >::type m(mSEXP); - Rcpp::traits::input_parameter< int >::type k(kSEXP); - rcpp_result_gen = Rcpp::wrap(update1_(Q2, w, m, k)); - return rcpp_result_gen; -END_RCPP -} -// downdate1_ -Rcpp::List downdate1_(Rcpp::NumericMatrix Q1, Rcpp::NumericMatrix R, int j0, int m, int n); -RcppExport SEXP _selectiveInference_downdate1_(SEXP Q1SEXP, SEXP RSEXP, SEXP j0SEXP, SEXP mSEXP, SEXP nSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type Q1(Q1SEXP); - Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type R(RSEXP); - Rcpp::traits::input_parameter< int >::type j0(j0SEXP); - Rcpp::traits::input_parameter< int >::type m(mSEXP); - Rcpp::traits::input_parameter< int >::type n(nSEXP); - rcpp_result_gen = Rcpp::wrap(downdate1_(Q1, R, j0, m, n)); - return rcpp_result_gen; -END_RCPP -} - -static const R_CallMethodDef CallEntries[] = { - {"_selectiveInference_solve_QP", (DL_FUNC) &_selectiveInference_solve_QP, 11}, - {"_selectiveInference_solve_QP_wide", (DL_FUNC) &_selectiveInference_solve_QP_wide, 12}, - {"_selectiveInference_update1_", (DL_FUNC) &_selectiveInference_update1_, 4}, - {"_selectiveInference_downdate1_", (DL_FUNC) &_selectiveInference_downdate1_, 5}, - {NULL, NULL, 0} -}; - -RcppExport void R_init_selectiveInference(DllInfo *dll) { - R_registerRoutines(dll, NULL, CallEntries, NULL, NULL); - R_useDynamicSymbols(dll, FALSE); -} From 74803104aef4efbbc0126a1a4d8033c61f608a82 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 26 Oct 2017 14:30:59 -0700 Subject: [PATCH 324/493] WIP: function to fit randomized lasso --- selectiveInference/R/funs.randomized.R | 64 ++++++++++++++++++++++++++ tests/test_randomized.R | 14 ++++++ 2 files changed, 78 insertions(+) create mode 100644 selectiveInference/R/funs.randomized.R create mode 100644 tests/test_randomized.R diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R new file mode 100644 index 0000000..01e6aa4 --- /dev/null +++ b/selectiveInference/R/funs.randomized.R @@ -0,0 +1,64 @@ +# Functions to fit and "infer" about parameters in the +# randomized LASSO +# +# min 1/2 || y - \beta_0 - X \beta ||_2^2 + \lambda || \beta ||_1 - \omega^T\beta + \frac{\epsilon}{2} \|\beta\|^2_2 + +fit_randomized_lasso = function(X, + y, + lam, + noise_scale, + ridge_term, + noise_type=c('gaussian', 'laplace'), + max_iter=100, # how many iterations for each optimization problem + kkt_tol=1.e-4, # tolerance for the KKT conditions + objective_tol=1.e-8, # tolerance for relative decrease in objective + objective_stop=FALSE, + kkt_stop=TRUE, + param_stop=TRUE) +{ + + n = nrow(X); p = ncol(X) + + noise_type = match.arg(noise_type) + + if (noise_type == 'gaussian') { + D = Norm(mean=0, sd=noise_scale) + } + else if (noise_type == 'laplace') { + D = DExp(rate = 1 / noise_scale) # D is a Laplace distribution with rate = 1. + } + perturb_ = distr::r(D)(p) + + lam = as.numeric(lam) + if (length(lam) == 1) { + lam = rep(lam, p) + } + if (length(lam) != p) { + stop("Lagrange parameter should be single float or of length ncol(X)") + } + + soln = rep(0, p) + Xsoln = rep(0, n) + linear_func = (- t(X) %*% y - perturb_) + gradient = 1. * linear_func + ever_active = rep(0, p) + nactive = as.integer(0) + + result = solve_QP_wide(X, # design matrix + lam, # vector of Lagrange multipliers + ridge_term / n, # ridge_term + max_iter, + soln, + linear_func, + gradient, + Xsoln, + ever_active, + nactive, + kkt_tol, + objective_tol, + p, + objective_stop, # objective_stop + kkt_stop, # kkt_stop + param_stop) # param_stop + return(result) +} diff --git a/tests/test_randomized.R b/tests/test_randomized.R new file mode 100644 index 0000000..e4e35a1 --- /dev/null +++ b/tests/test_randomized.R @@ -0,0 +1,14 @@ +library(selectiveInference) + +test = function() { + + n = 100; p = 50 + X = matrix(rnorm(n * p), n, p) + y = rnorm(n) + lam = 20 / sqrt(n) + noise_scale = 0.01 * sqrt(n) + ridge_term = .1 / sqrt(n) + fit_randomized_lasso(X, y, lam, noise_scale, ridge_term) +} + +print(test()) From 38b2020b36ef81da2fe0fec8f265f3effc23610f Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 26 Oct 2017 21:36:18 -0700 Subject: [PATCH 325/493] check that solution is same as old code -- currently failing --- tests/test_debiasing.R | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 tests/test_debiasing.R diff --git a/tests/test_debiasing.R b/tests/test_debiasing.R new file mode 100644 index 0000000..27bd621 --- /dev/null +++ b/tests/test_debiasing.R @@ -0,0 +1,27 @@ +library(selectiveInference) +source('oldcode.R') + +n = 500; p = 50 + +X = matrix(rnorm(n * p), n, p) +S = t(X) %*% X / n + +mu = 7.791408e-02 + +A1 = debiasingMatrix(S, FALSE, n, 1:5, mu=mu, max_iter=1000) +A2 = debiasingMatrix(S / n, FALSE, n, 1:5, mu=mu, max_iter=1000) + +B1 = debiasingMatrix(X, TRUE, n, 1:5, mu=mu, max_iter=1000) +B2 = debiasingMatrix(X / sqrt(n), TRUE, n, 1:5, mu=mu, max_iter=1000) + +C1 = InverseLinfty(S, n, mu=mu, maxiter=1000)[1:5,] +C2 = InverseLinfty(S / n, n, mu=mu, maxiter=1000)[1:5,] + +par(mfrow=c(2,3)) +plot(A1[1,], C1[1,]) +plot(A1[1,], B1[1,]) +plot(B1[1,], C1[1,]) + +plot(A1[1,], A2[1,]) +plot(B1[1,], B2[1,]) +plot(C1[1,], C2[1,]) From dc423de5cf6094e18a986b1305b269aa159c422d Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 26 Oct 2017 22:17:39 -0700 Subject: [PATCH 326/493] bug found in qp solver -- look at tests/test_QP.R --- selectiveInference/NAMESPACE | 2 +- selectiveInference/R/funs.fixed.R | 5 + selectiveInference/R/funs.randomized.R | 2 + selectiveInference/src/Rcpp-debias.cpp | 4 + selectiveInference/src/debias.h | 2 + selectiveInference/src/quadratic_program.c | 4 +- .../src/quadratic_program_wide.c | 6 +- tests/test_QP.R | 15 ++ tests/test_debiasing.R | 172 +++++++++++++++++- 9 files changed, 204 insertions(+), 8 deletions(-) create mode 100644 tests/test_QP.R diff --git a/selectiveInference/NAMESPACE b/selectiveInference/NAMESPACE index d72d56a..c7d08a1 100644 --- a/selectiveInference/NAMESPACE +++ b/selectiveInference/NAMESPACE @@ -44,4 +44,4 @@ importFrom("stats", dnorm, lsfit, pexp, pnorm, predict, importFrom("stats", "coef", "df", "lm", "pf") importFrom("stats", "glm", "residuals", "vcov") importFrom("Rcpp", "sourceCpp") - +importFrom("distr", "Norm", "DExp") diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index aaceaaa..5490316 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -327,6 +327,7 @@ debiasingMatrix = function(Xinfo, # could be X or t(X) %*% X / n d warn_kkt=FALSE, # warn if KKT does not seem to be satisfied? max_iter=100, # how many iterations for each optimization problem kkt_tol=1.e-4, # tolerance for the KKT conditions + parameter_tol=1.e-4, # tolerance for relative convergence of parameter objective_tol=1.e-8 # tolerance for relative decrease in objective ) { @@ -363,6 +364,7 @@ debiasingMatrix = function(Xinfo, # could be X or t(X) %*% X / n d warn_kkt=FALSE, max_iter=max_iter, kkt_tol=kkt_tol, + parameter_tol=parameter_tol, objective_tol=objective_tol) if (warn_kkt && (!output$kkt_check)) { @@ -393,6 +395,7 @@ debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n dep warn_kkt=FALSE, # warn if KKT does not seem to be satisfied? max_iter=100, # how many iterations for each optimization problem kkt_tol=1.e-4, # tolerance for the KKT conditions + parameter_tol=1.e-4, # tolerance for relative convergence of parameter objective_tol=1.e-8 # tolerance for relative decrease in objective ) { @@ -433,6 +436,7 @@ debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n dep nactive, kkt_tol, objective_tol, + parameter_tol, max_active, FALSE, # objective_stop FALSE, # kkt_stop @@ -451,6 +455,7 @@ debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n dep nactive, kkt_tol, objective_tol, + parameter_tol, max_active, FALSE, # objective_stop FALSE, # kkt_stop diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 01e6aa4..25a0b95 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -11,6 +11,7 @@ fit_randomized_lasso = function(X, noise_type=c('gaussian', 'laplace'), max_iter=100, # how many iterations for each optimization problem kkt_tol=1.e-4, # tolerance for the KKT conditions + parameter_tol=1.e-8, # tolerance for relative convergence of parameter objective_tol=1.e-8, # tolerance for relative decrease in objective objective_stop=FALSE, kkt_stop=TRUE, @@ -56,6 +57,7 @@ fit_randomized_lasso = function(X, nactive, kkt_tol, objective_tol, + parameter_tol, p, objective_stop, # objective_stop kkt_stop, # kkt_stop diff --git a/selectiveInference/src/Rcpp-debias.cpp b/selectiveInference/src/Rcpp-debias.cpp index 24bbae8..9cda705 100644 --- a/selectiveInference/src/Rcpp-debias.cpp +++ b/selectiveInference/src/Rcpp-debias.cpp @@ -15,6 +15,7 @@ Rcpp::List solve_QP(Rcpp::NumericMatrix Sigma, Rcpp::IntegerVector nactive, double kkt_tol, double objective_tol, + double parameter_tol, int max_active, int objective_stop, int kkt_stop, @@ -52,6 +53,7 @@ Rcpp::List solve_QP(Rcpp::NumericMatrix Sigma, maxiter, kkt_tol, objective_tol, + parameter_tol, max_active, objective_stop, kkt_stop, @@ -92,6 +94,7 @@ Rcpp::List solve_QP_wide(Rcpp::NumericMatrix X, Rcpp::IntegerVector nactive, double kkt_tol, double objective_tol, + double parameter_tol, int max_active, int objective_stop, int kkt_stop, @@ -142,6 +145,7 @@ Rcpp::List solve_QP_wide(Rcpp::NumericMatrix X, maxiter, kkt_tol, objective_tol, + parameter_tol, max_active, objective_stop, kkt_stop, diff --git a/selectiveInference/src/debias.h b/selectiveInference/src/debias.h index 052af7a..d3db26d 100644 --- a/selectiveInference/src/debias.h +++ b/selectiveInference/src/debias.h @@ -16,6 +16,7 @@ int solve_qp(double *nndef_ptr, /* A non-negative definite matrix */ int maxiter, /* max number of iterations */ double kkt_tol, /* precision for checking KKT conditions */ double objective_tol, /* precision for checking relative decrease in objective value */ + double parameter_tol, /* precision for checking relative convergence of parameter */ int max_active, /* Upper limit for size of active set -- otherwise break */ int objective_stop, /* Break based on convergence of objective value? */ int kkt_stop, /* Break based on KKT? */ @@ -44,6 +45,7 @@ int solve_wide(double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX int maxiter, /* max number of iterations */ double kkt_tol, /* precision for checking KKT conditions */ double objective_tol, /* precision for checking relative decrease in objective value */ + double parameter_tol, /* precision for checking relative convergence of parameter */ int max_active, /* Upper limit for size of active set -- otherwise break */ int objective_stop, /* Break based on convergence of objective value? */ int kkt_stop, /* Break based on KKT? */ diff --git a/selectiveInference/src/quadratic_program.c b/selectiveInference/src/quadratic_program.c index 1bc7fa3..822ddf5 100644 --- a/selectiveInference/src/quadratic_program.c +++ b/selectiveInference/src/quadratic_program.c @@ -273,6 +273,7 @@ int solve_qp(double *nndef_ptr, /* A non-negative definite matrix */ int maxiter, /* max number of iterations */ double kkt_tol, /* precision for checking KKT conditions */ double objective_tol, /* precision for checking relative decrease in objective value */ + double parameter_tol, /* precision for checking relative convergence of parameter */ int max_active, /* Upper limit for size of active set -- otherwise break */ int objective_stop, /* Break based on convergence of objective value? */ int kkt_stop, /* Break based on KKT? */ @@ -292,7 +293,6 @@ int solve_qp(double *nndef_ptr, /* A non-negative definite matrix */ double norm_diff = 1.; double norm_last = 1.; double delta; - double threshold = 1.e-2; double *theta_ptr, *theta_old_ptr; if (objective_stop) { @@ -403,7 +403,7 @@ int solve_qp(double *nndef_ptr, /* A non-negative definite matrix */ norm_diff = sqrt(norm_diff); norm_last = sqrt(norm_last); - if (norm_diff < threshold * norm_last) { + if (norm_diff < parameter_tol * norm_last) { break; } } diff --git a/selectiveInference/src/quadratic_program_wide.c b/selectiveInference/src/quadratic_program_wide.c index c6cb9f3..3e4bdb0 100644 --- a/selectiveInference/src/quadratic_program_wide.c +++ b/selectiveInference/src/quadratic_program_wide.c @@ -4,7 +4,7 @@ // Solves a dual version of problem (4) of https://arxiv.org/pdf/1306.3171.pdf -// Dual problem: \text{min}_{\theta} 1/2 \|X\theta\|^2 - l^T\theta + \mu \|\theta\|_1 + \frac{\epsilon}{2} \|\theta\|^2_2 +// Dual problem: \text{min}_{\theta} 1/2 \|X\theta\|^2/n - l^T\theta + \mu \|\theta\|_1 + \frac{\epsilon}{2} \|\theta\|^2_2 // where l is `linear_func` below // This is the "negative" of the problem as in https://gist.github.com/jonathan-taylor/07774d209173f8bc4e42aa37712339bf @@ -393,6 +393,7 @@ int solve_wide(double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX int maxiter, /* max number of iterations */ double kkt_tol, /* precision for checking KKT conditions */ double objective_tol, /* precision for checking relative decrease in objective value */ + double parameter_tol, /* precision for checking relative convergence of parameter */ int max_active, /* Upper limit for size of active set -- otherwise break */ int objective_stop, /* Break based on convergence of objective value? */ int kkt_stop, /* Break based on KKT? */ @@ -412,7 +413,6 @@ int solve_wide(double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX double norm_diff = 1.; double norm_last = 1.; double delta; - double threshold = 1.e-2; double *theta_ptr_tmp, *theta_old_ptr_tmp; if (objective_stop) { @@ -552,7 +552,7 @@ int solve_wide(double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX norm_diff = sqrt(norm_diff); norm_last = sqrt(norm_last); - if (norm_diff < threshold * norm_last) { + if (norm_diff < parameter_tol * norm_last) { break; } } diff --git a/tests/test_QP.R b/tests/test_QP.R new file mode 100644 index 0000000..cf5ca64 --- /dev/null +++ b/tests/test_QP.R @@ -0,0 +1,15 @@ +library(selectiveInference) +### Test + +n = 100; p = 50 + +X = matrix(rnorm(n * p), n, p) +Y = rnorm(n) +lam = 2 + +soln1 = selectiveInference:::fit_randomized_lasso(X, Y, lam, 1.e-12, 0)$soln +G = glmnet(X, Y, intercept=FALSE, standardize=FALSE) +soln2 = coef(G, s=1/n, exact=TRUE, x=X, y=Y)[-1] + +print(soln1) +print(soln2) \ No newline at end of file diff --git a/tests/test_debiasing.R b/tests/test_debiasing.R index 27bd621..b1fdf24 100644 --- a/tests/test_debiasing.R +++ b/tests/test_debiasing.R @@ -1,7 +1,143 @@ library(selectiveInference) -source('oldcode.R') -n = 500; p = 50 + +## Approximates inverse covariance matrix theta +InverseLinfty <- function(sigma, n, resol=1.5, mu=NULL, maxiter=50, threshold=1e-10, verbose = TRUE) { + isgiven <- 1; + if (is.null(mu)){ + isgiven <- 0; + } + + p <- nrow(sigma); + M <- matrix(0, p, p); + xperc = 0; + xp = round(p/10); + for (i in 1:p) { + if ((i %% xp)==0){ + xperc = xperc+10; + if (verbose) { + print(paste(xperc,"% done",sep="")); } + } + if (isgiven==0){ + mu <- (1/sqrt(n)) * qnorm(1-(0.1/(p^2))); + } + mu.stop <- 0; + try.no <- 1; + incr <- 0; + while ((mu.stop != 1)&&(try.no<10)){ + last.beta <- beta + output <- InverseLinftyOneRow(sigma, i, mu, maxiter=maxiter, threshold=threshold) + beta <- output$optsol + iter <- output$iter + if (isgiven==1){ + mu.stop <- 1 + } + else{ + if (try.no==1){ + if (iter == (maxiter+1)){ + incr <- 1; + mu <- mu*resol; + } else { + incr <- 0; + mu <- mu/resol; + } + } + if (try.no > 1){ + if ((incr == 1)&&(iter == (maxiter+1))){ + mu <- mu*resol; + } + if ((incr == 1)&&(iter < (maxiter+1))){ + mu.stop <- 1; + } + if ((incr == 0)&&(iter < (maxiter+1))){ + mu <- mu/resol; + } + if ((incr == 0)&&(iter == (maxiter+1))){ + mu <- mu*resol; + beta <- last.beta; + mu.stop <- 1; + } + } + } + try.no <- try.no+1 + } + M[i,] <- beta; + } + return(M) +} + +InverseLinftyOneRow <- function ( sigma, i, mu, maxiter=50, threshold=1e-10) { + p <- nrow(sigma); + rho <- max(abs(sigma[i,-i])) / sigma[i,i]; + mu0 <- rho/(1+rho); + beta <- rep(0,p); + + #if (mu >= mu0){ + # beta[i] <- (1-mu0)/sigma[i,i]; + # returnlist <- list("optsol" = beta, "iter" = 0); + # return(returnlist); + #} + + diff.norm2 <- 1; + last.norm2 <- 1; + iter <- 1; + iter.old <- 1; + beta[i] <- (1-mu0)/sigma[i,i]; + beta.old <- beta; + sigma.tilde <- sigma; + diag(sigma.tilde) <- 0; + vs <- -sigma.tilde%*%beta; + + while ((iter <= maxiter) && (diff.norm2 >= threshold*last.norm2)){ + + for (j in 1:p){ + oldval <- beta[j]; + v <- vs[j]; + if (j==i) + v <- v+1; + beta[j] <- SoftThreshold(v,mu)/sigma[j,j]; + if (oldval != beta[j]){ + vs <- vs + (oldval-beta[j])*sigma.tilde[,j]; + } + } + + iter <- iter + 1; + if (iter==2*iter.old){ + d <- beta - beta.old; + diff.norm2 <- sqrt(sum(d*d)); + last.norm2 <-sqrt(sum(beta*beta)); + iter.old <- iter; + beta.old <- beta; + #if (iter>10) + # vs <- -sigma.tilde%*%beta; + } + + # print(c(iter, maxiter, diff.norm2, threshold * last.norm2, threshold, mu)) + + } + + returnlist <- list("optsol" = beta, "iter" = iter) + return(returnlist) +} + +SoftThreshold <- function( x, lambda ) { + # + # Standard soft thresholding + # + if (x>lambda){ + return (x-lambda);} + else { + if (x< (-lambda)){ + return (x+lambda);} + else { + return (0); } + } +} + + +### Test + +n = 100; p = 50 X = matrix(rnorm(n * p), n, p) S = t(X) %*% X / n @@ -25,3 +161,35 @@ plot(B1[1,], C1[1,]) plot(A1[1,], A2[1,]) plot(B1[1,], B2[1,]) plot(C1[1,], C2[1,]) + +print(c('A', sum(A1[1,] == 0))) +print(c('B', sum(B1[1,] == 0))) +print(c('C', sum(C1[1,] == 0))) + +## Are our points feasible + +feasibility = function(S, soln, j, mu) { + p = nrow(S) + E = rep(0, p) + E[j] = 1 + G = S %*% soln - E + return(c(max(abs(G)), mu)) +} + +print(c('feasibility A', feasibility(S, A1[1,], 1, mu))) +print(c('feasibility B', feasibility(S, B1[1,], 1, mu))) +print(c('feasibility C', feasibility(S, C1[1,], 1, mu))) + +active_KKT = function(S, soln, j, mu) { + p = nrow(S) + E = rep(0, p) + E[j] = 1 + G = S %*% soln - E + return(c(G[soln != 0] * sign(soln)[soln != 0], mu)) +} + +print(c('active_KKT A', active_KKT(S, A1[1,], 1, mu))) +print(c('active_KKT B', active_KKT(S, B1[1,], 1, mu))) +print(c('active_KKT C', active_KKT(S, C1[1,], 1, mu))) + + From 71ff6e3080c6c93390fb6d074ef22085fbd036b0 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 26 Oct 2017 22:19:20 -0700 Subject: [PATCH 327/493] allowing randomization to be 0 in solver --- selectiveInference/R/funs.randomized.R | 18 +++++++++++------- tests/test_QP.R | 2 +- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 25a0b95..b79e2fb 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -22,14 +22,18 @@ fit_randomized_lasso = function(X, noise_type = match.arg(noise_type) - if (noise_type == 'gaussian') { - D = Norm(mean=0, sd=noise_scale) + if (noise_scale > 0) { + if (noise_type == 'gaussian') { + D = Norm(mean=0, sd=noise_scale) + } + else if (noise_type == 'laplace') { + D = DExp(rate = 1 / noise_scale) # D is a Laplace distribution with rate = 1. + } + perturb_ = distr::r(D)(p) + } else { + perturb_ = rep(0, p) } - else if (noise_type == 'laplace') { - D = DExp(rate = 1 / noise_scale) # D is a Laplace distribution with rate = 1. - } - perturb_ = distr::r(D)(p) - + lam = as.numeric(lam) if (length(lam) == 1) { lam = rep(lam, p) diff --git a/tests/test_QP.R b/tests/test_QP.R index cf5ca64..4aebec3 100644 --- a/tests/test_QP.R +++ b/tests/test_QP.R @@ -7,7 +7,7 @@ X = matrix(rnorm(n * p), n, p) Y = rnorm(n) lam = 2 -soln1 = selectiveInference:::fit_randomized_lasso(X, Y, lam, 1.e-12, 0)$soln +soln1 = selectiveInference:::fit_randomized_lasso(X, Y, lam, 0, 0)$soln G = glmnet(X, Y, intercept=FALSE, standardize=FALSE) soln2 = coef(G, s=1/n, exact=TRUE, x=X, y=Y)[-1] From de8874bc22db314e2efeb99a34ed226aeea2745e Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 26 Oct 2017 22:25:32 -0700 Subject: [PATCH 328/493] cosmetic edit --- selectiveInference/src/Rcpp-debias.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/selectiveInference/src/Rcpp-debias.cpp b/selectiveInference/src/Rcpp-debias.cpp index 9cda705..5c18184 100644 --- a/selectiveInference/src/Rcpp-debias.cpp +++ b/selectiveInference/src/Rcpp-debias.cpp @@ -112,12 +112,13 @@ Rcpp::List solve_QP_wide(Rcpp::NumericMatrix X, Rcpp::IntegerVector need_update(nfeature); - // Extract the diagonal + Rcpp::NumericVector theta_old(nfeature); + + // Extract the diagonal -- divide by ncase + Rcpp::NumericVector nndef_diag(nfeature); double *nndef_diag_p = nndef_diag.begin(); - Rcpp::NumericVector theta_old(nfeature); - for (ifeature=0; ifeature Date: Thu, 26 Oct 2017 22:46:48 -0700 Subject: [PATCH 329/493] LASSO solver is right up to scale --- tests/test_QP.R | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/test_QP.R b/tests/test_QP.R index 4aebec3..61c4d53 100644 --- a/tests/test_QP.R +++ b/tests/test_QP.R @@ -9,7 +9,8 @@ lam = 2 soln1 = selectiveInference:::fit_randomized_lasso(X, Y, lam, 0, 0)$soln G = glmnet(X, Y, intercept=FALSE, standardize=FALSE) -soln2 = coef(G, s=1/n, exact=TRUE, x=X, y=Y)[-1] +soln2 = coef(G, s=lam/n, exact=TRUE, x=X, y=Y)[-1] print(soln1) -print(soln2) \ No newline at end of file +print(soln2) +plot(soln1, soln2) From 2f1686ee2c627061765f1aca1f0b533202eaf0a2 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 26 Oct 2017 23:55:49 -0700 Subject: [PATCH 330/493] BF: fixing Xsoln incorrectly set in wide solver --- selectiveInference/R/funs.fixed.R | 24 +++++++++++++------ selectiveInference/R/funs.randomized.R | 4 ++-- .../src/quadratic_program_wide.c | 2 +- tests/test_QP.R | 2 +- tests/test_debiasing.R | 13 ++++++---- 5 files changed, 30 insertions(+), 15 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 5490316..22a31e5 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -326,6 +326,9 @@ debiasingMatrix = function(Xinfo, # could be X or t(X) %*% X / n d max_try=10, # how many steps in linesearch? warn_kkt=FALSE, # warn if KKT does not seem to be satisfied? max_iter=100, # how many iterations for each optimization problem + kkt_stop=TRUE, # stop based on KKT conditions? + parameter_stop=TRUE, # stop based on relative convergence of parameter? + objective_stop=TRUE, # stop based on relative decrease in objective? kkt_tol=1.e-4, # tolerance for the KKT conditions parameter_tol=1.e-4, # tolerance for relative convergence of parameter objective_tol=1.e-8 # tolerance for relative decrease in objective @@ -363,6 +366,9 @@ debiasingMatrix = function(Xinfo, # could be X or t(X) %*% X / n d max_try=max_try, warn_kkt=FALSE, max_iter=max_iter, + kkt_stop=kkt_stop, + parameter_stop=parameter_stop, + objective_stop=objective_stop, kkt_tol=kkt_tol, parameter_tol=parameter_tol, objective_tol=objective_tol) @@ -394,6 +400,9 @@ debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n dep max_try=10, # how many steps in linesearch? warn_kkt=FALSE, # warn if KKT does not seem to be satisfied? max_iter=100, # how many iterations for each optimization problem + kkt_stop=TRUE, # stop based on KKT conditions? + parameter_stop=TRUE, # stop based on relative convergence of parameter? + objective_stop=TRUE, # stop based on relative decrease in objective? kkt_tol=1.e-4, # tolerance for the KKT conditions parameter_tol=1.e-4, # tolerance for relative convergence of parameter objective_tol=1.e-8 # tolerance for relative decrease in objective @@ -423,6 +432,8 @@ debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n dep last_output = NULL + Xsoln = rep(0, n) + while (counter_idx < max_try) { if (!is_wide) { @@ -438,11 +449,10 @@ debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n dep objective_tol, parameter_tol, max_active, - FALSE, # objective_stop - FALSE, # kkt_stop - TRUE) # param_stop + objective_stop, + kkt_stop, + parameter_stop) } else { - Xsoln = rep(0, nrow(Xinfo)) result = solve_QP_wide(Xinfo, # this is a design matrix rep(mu, p), # vector of Lagrange multipliers 0, # ridge_term @@ -457,9 +467,9 @@ debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n dep objective_tol, parameter_tol, max_active, - FALSE, # objective_stop - FALSE, # kkt_stop - TRUE) # param_stop + objective_stop, + kkt_stop, + parameter_stop) } diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index b79e2fb..7bf6008 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -44,13 +44,13 @@ fit_randomized_lasso = function(X, soln = rep(0, p) Xsoln = rep(0, n) - linear_func = (- t(X) %*% y - perturb_) + linear_func = (- t(X) %*% y - perturb_) / n gradient = 1. * linear_func ever_active = rep(0, p) nactive = as.integer(0) result = solve_QP_wide(X, # design matrix - lam, # vector of Lagrange multipliers + lam / n, # vector of Lagrange multipliers ridge_term / n, # ridge_term max_iter, soln, diff --git a/selectiveInference/src/quadratic_program_wide.c b/selectiveInference/src/quadratic_program_wide.c index 3e4bdb0..3546fcd 100644 --- a/selectiveInference/src/quadratic_program_wide.c +++ b/selectiveInference/src/quadratic_program_wide.c @@ -4,7 +4,7 @@ // Solves a dual version of problem (4) of https://arxiv.org/pdf/1306.3171.pdf -// Dual problem: \text{min}_{\theta} 1/2 \|X\theta\|^2/n - l^T\theta + \mu \|\theta\|_1 + \frac{\epsilon}{2} \|\theta\|^2_2 +// Dual problem: \text{min}_{\theta} 1/2 \|X\theta\|^2/n + l^T\theta + \mu \|\theta\|_1 + \frac{\epsilon}{2} \|\theta\|^2_2 // where l is `linear_func` below // This is the "negative" of the problem as in https://gist.github.com/jonathan-taylor/07774d209173f8bc4e42aa37712339bf diff --git a/tests/test_QP.R b/tests/test_QP.R index 61c4d53..1764225 100644 --- a/tests/test_QP.R +++ b/tests/test_QP.R @@ -1,7 +1,7 @@ library(selectiveInference) ### Test -n = 100; p = 50 +n = 80; p = 50 X = matrix(rnorm(n * p), n, p) Y = rnorm(n) diff --git a/tests/test_debiasing.R b/tests/test_debiasing.R index b1fdf24..e2743fe 100644 --- a/tests/test_debiasing.R +++ b/tests/test_debiasing.R @@ -144,16 +144,19 @@ S = t(X) %*% X / n mu = 7.791408e-02 -A1 = debiasingMatrix(S, FALSE, n, 1:5, mu=mu, max_iter=1000) -A2 = debiasingMatrix(S / n, FALSE, n, 1:5, mu=mu, max_iter=1000) +tol = 1.e-12 -B1 = debiasingMatrix(X, TRUE, n, 1:5, mu=mu, max_iter=1000) -B2 = debiasingMatrix(X / sqrt(n), TRUE, n, 1:5, mu=mu, max_iter=1000) +A1 = debiasingMatrix(S, FALSE, n, 1:5, mu=mu, max_iter=1000, kkt_tol=tol, objective_tol=tol, parameter_tol=tol) +A2 = debiasingMatrix(S / n, FALSE, n, 1:5, mu=mu, max_iter=1000, kkt_tol=tol, objective_tol=tol, parameter_tol=tol) + +B1 = debiasingMatrix(X, TRUE, n, 1:5, mu=mu, max_iter=1000, kkt_tol=tol, objective_tol=tol, parameter_tol=tol) +B2 = debiasingMatrix(X / sqrt(n), TRUE, n, 1:5, mu=mu, max_iter=1000, kkt_tol=tol, objective_tol=tol, parameter_tol=tol) C1 = InverseLinfty(S, n, mu=mu, maxiter=1000)[1:5,] C2 = InverseLinfty(S / n, n, mu=mu, maxiter=1000)[1:5,] par(mfrow=c(2,3)) + plot(A1[1,], C1[1,]) plot(A1[1,], B1[1,]) plot(B1[1,], C1[1,]) @@ -185,6 +188,8 @@ active_KKT = function(S, soln, j, mu) { E = rep(0, p) E[j] = 1 G = S %*% soln - E + print(which(soln != 0)) + print(G[j]) return(c(G[soln != 0] * sign(soln)[soln != 0], mu)) } From 6444472cd41456ce627f05986ec4222d39f1f049 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Fri, 27 Oct 2017 00:03:09 -0700 Subject: [PATCH 331/493] gradient not current? --- selectiveInference/R/funs.fixed.R | 3 ++- tests/test_debiasing.R | 13 +++++++------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 22a31e5..8d3f727 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -525,7 +525,8 @@ debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n dep } return(list(soln=result$soln, - kkt_check=result$kkt_check)) + kkt_check=result$kkt_check, + gradient=result$gradient)) } diff --git a/tests/test_debiasing.R b/tests/test_debiasing.R index e2743fe..50b43d2 100644 --- a/tests/test_debiasing.R +++ b/tests/test_debiasing.R @@ -146,14 +146,15 @@ mu = 7.791408e-02 tol = 1.e-12 -A1 = debiasingMatrix(S, FALSE, n, 1:5, mu=mu, max_iter=1000, kkt_tol=tol, objective_tol=tol, parameter_tol=tol) -A2 = debiasingMatrix(S / n, FALSE, n, 1:5, mu=mu, max_iter=1000, kkt_tol=tol, objective_tol=tol, parameter_tol=tol) +rows = c(1:2) +A1 = debiasingMatrix(S, FALSE, n, rows, mu=mu, max_iter=1000, kkt_tol=tol, objective_tol=tol, parameter_tol=tol) +A2 = debiasingMatrix(S / n, FALSE, n, rows, mu=mu, max_iter=1000, kkt_tol=tol, objective_tol=tol, parameter_tol=tol) -B1 = debiasingMatrix(X, TRUE, n, 1:5, mu=mu, max_iter=1000, kkt_tol=tol, objective_tol=tol, parameter_tol=tol) -B2 = debiasingMatrix(X / sqrt(n), TRUE, n, 1:5, mu=mu, max_iter=1000, kkt_tol=tol, objective_tol=tol, parameter_tol=tol) +B1 = debiasingMatrix(X, TRUE, n, rows, mu=mu, max_iter=1000, kkt_tol=tol, objective_tol=tol, parameter_tol=tol) +B2 = debiasingMatrix(X / sqrt(n), TRUE, n, rows, mu=mu, max_iter=1000, kkt_tol=tol, objective_tol=tol, parameter_tol=tol) -C1 = InverseLinfty(S, n, mu=mu, maxiter=1000)[1:5,] -C2 = InverseLinfty(S / n, n, mu=mu, maxiter=1000)[1:5,] +C1 = InverseLinfty(S, n, mu=mu, maxiter=1000)[rows,] +C2 = InverseLinfty(S / n, n, mu=mu, maxiter=1000)[rows,] par(mfrow=c(2,3)) From 9f2684462758fdafd5871fd748ce032a873209cd Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Fri, 27 Oct 2017 00:07:30 -0700 Subject: [PATCH 332/493] print R2 from lm --- tests/test_QP.R | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/test_QP.R b/tests/test_QP.R index 1764225..79638e0 100644 --- a/tests/test_QP.R +++ b/tests/test_QP.R @@ -14,3 +14,4 @@ soln2 = coef(G, s=lam/n, exact=TRUE, x=X, y=Y)[-1] print(soln1) print(soln2) plot(soln1, soln2) +print(summary(lm(soln1 ~ soln2))) \ No newline at end of file From 9c7bfcce31fbcf0bf87d381bceb6fe3d42029e04 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Fri, 27 Oct 2017 09:47:31 -0700 Subject: [PATCH 333/493] without linesearch we know agree with Adel's code at fixed mu --- selectiveInference/DESCRIPTION | 2 +- selectiveInference/NAMESPACE | 2 +- selectiveInference/R/funs.fixed.R | 29 ++++++---- selectiveInference/R/funs.randomized.R | 31 +++++----- tests/test_debiasing.R | 80 +++++++++++++------------- 5 files changed, 75 insertions(+), 69 deletions(-) diff --git a/selectiveInference/DESCRIPTION b/selectiveInference/DESCRIPTION index d902622..fad072d 100644 --- a/selectiveInference/DESCRIPTION +++ b/selectiveInference/DESCRIPTION @@ -9,7 +9,7 @@ Maintainer: Rob Tibshirani Depends: glmnet, intervals, - survival + survival, Suggests: Rmpfr Description: New tools for post-selection inference, for use with forward diff --git a/selectiveInference/NAMESPACE b/selectiveInference/NAMESPACE index c7d08a1..d72d56a 100644 --- a/selectiveInference/NAMESPACE +++ b/selectiveInference/NAMESPACE @@ -44,4 +44,4 @@ importFrom("stats", dnorm, lsfit, pexp, pnorm, predict, importFrom("stats", "coef", "df", "lm", "pf") importFrom("stats", "glm", "residuals", "vcov") importFrom("Rcpp", "sourceCpp") -importFrom("distr", "Norm", "DExp") + diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 8d3f727..1928487 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -319,7 +319,7 @@ debiasingMatrix = function(Xinfo, # could be X or t(X) %*% X / n d nsample, rows, verbose=FALSE, - mu=NULL, # starting value of mu + bound=NULL, # starting value of bound linesearch=TRUE, # do a linesearch? scaling_factor=1.5, # multiplicative factor for linesearch max_active=NULL, # how big can active set get? @@ -342,8 +342,8 @@ debiasingMatrix = function(Xinfo, # could be X or t(X) %*% X / n d p = ncol(Xinfo); M = matrix(0, length(rows), p); - if (is.null(mu)) { - mu = (1/sqrt(nsample)) * qnorm(1-(0.1/(p^2))) + if (is.null(bound)) { + bound = (1/sqrt(nsample)) * qnorm(1-(0.1/(p^2))) } xperc = 0; @@ -359,7 +359,7 @@ debiasingMatrix = function(Xinfo, # could be X or t(X) %*% X / n d output = debiasingRow(Xinfo, # could be X or t(X) %*% X / n depending on is_wide is_wide, row, - mu, + bound, linesearch=linesearch, scaling_factor=scaling_factor, max_active=max_active, @@ -393,7 +393,7 @@ debiasingMatrix = function(Xinfo, # could be X or t(X) %*% X / n d debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n depending on is_wide is_wide, row, - mu, + bound, linesearch=TRUE, # do a linesearch? scaling_factor=1.5, # multiplicative factor for linesearch max_active=NULL, # how big can active set get? @@ -414,9 +414,11 @@ debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n dep max_active = min(nrow(Xinfo), ncol(Xinfo)) } + # Initialize variables soln = rep(0, p) + soln = as.numeric(soln) ever_active = rep(0, p) ever_active[1] = row # 1-based ever_active = as.integer(ever_active) @@ -432,13 +434,16 @@ debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n dep last_output = NULL - Xsoln = rep(0, n) + if (is_wide) { + n = nrow(Xinfo) + Xsoln = as.numeric(rep(0, n)) + } while (counter_idx < max_try) { if (!is_wide) { result = solve_QP(Xinfo, # this is non-neg-def matrix - mu, + bound, max_iter, soln, linear_func, @@ -453,9 +458,9 @@ debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n dep kkt_stop, parameter_stop) } else { - result = solve_QP_wide(Xinfo, # this is a design matrix - rep(mu, p), # vector of Lagrange multipliers - 0, # ridge_term + result = solve_QP_wide(Xinfo, # this is a design matrix + as.numeric(rep(bound, p)), # vector of Lagrange multipliers + 0, # ridge_term max_iter, soln, linear_func, @@ -493,13 +498,13 @@ debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n dep if ((iter < (max_iter+1)) && (counter_idx > 1)) { break; # we've found a feasible point and solved the problem } - mu = mu * scaling_factor; + bound = bound * scaling_factor; } else { # trying to drop the bound parameter further if ((iter == (max_iter + 1)) && (counter_idx > 1)) { result = last_output; # problem seems infeasible because we didn't solve it break; # so we revert to previously found solution } - mu = mu / scaling_factor; + bound = bound / scaling_factor; } # If the active set has grown to a certain size diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 7bf6008..3a171f7 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -3,19 +3,19 @@ # # min 1/2 || y - \beta_0 - X \beta ||_2^2 + \lambda || \beta ||_1 - \omega^T\beta + \frac{\epsilon}{2} \|\beta\|^2_2 -fit_randomized_lasso = function(X, - y, - lam, - noise_scale, - ridge_term, - noise_type=c('gaussian', 'laplace'), - max_iter=100, # how many iterations for each optimization problem - kkt_tol=1.e-4, # tolerance for the KKT conditions - parameter_tol=1.e-8, # tolerance for relative convergence of parameter - objective_tol=1.e-8, # tolerance for relative decrease in objective - objective_stop=FALSE, - kkt_stop=TRUE, - param_stop=TRUE) +randomizedLASSO = function(X, + y, + lam, + noise_scale, + ridge_term, + noise_type=c('gaussian', 'laplace'), + max_iter=100, # how many iterations for each optimization problem + kkt_tol=1.e-4, # tolerance for the KKT conditions + parameter_tol=1.e-8, # tolerance for relative convergence of parameter + objective_tol=1.e-8, # tolerance for relative decrease in objective + objective_stop=FALSE, + kkt_stop=TRUE, + param_stop=TRUE) { n = nrow(X); p = ncol(X) @@ -24,12 +24,11 @@ fit_randomized_lasso = function(X, if (noise_scale > 0) { if (noise_type == 'gaussian') { - D = Norm(mean=0, sd=noise_scale) + perturb_ = rnorm(p) * noise_scale } else if (noise_type == 'laplace') { - D = DExp(rate = 1 / noise_scale) # D is a Laplace distribution with rate = 1. + perturb_ = rexp(p) * (2 * rbinom(p, 1, 0.5) - 1) * noise_scale } - perturb_ = distr::r(D)(p) } else { perturb_ = rep(0, p) } diff --git a/tests/test_debiasing.R b/tests/test_debiasing.R index 50b43d2..8e81b16 100644 --- a/tests/test_debiasing.R +++ b/tests/test_debiasing.R @@ -2,9 +2,9 @@ library(selectiveInference) ## Approximates inverse covariance matrix theta -InverseLinfty <- function(sigma, n, resol=1.5, mu=NULL, maxiter=50, threshold=1e-10, verbose = TRUE) { +InverseLinfty <- function(sigma, n, resol=1.5, bound=NULL, maxiter=50, threshold=1e-10, verbose = TRUE) { isgiven <- 1; - if (is.null(mu)){ + if (is.null(bound)){ isgiven <- 0; } @@ -19,43 +19,43 @@ InverseLinfty <- function(sigma, n, resol=1.5, mu=NULL, maxiter=50, threshold=1e print(paste(xperc,"% done",sep="")); } } if (isgiven==0){ - mu <- (1/sqrt(n)) * qnorm(1-(0.1/(p^2))); + bound <- (1/sqrt(n)) * qnorm(1-(0.1/(p^2))); } - mu.stop <- 0; + bound.stop <- 0; try.no <- 1; incr <- 0; - while ((mu.stop != 1)&&(try.no<10)){ + while ((bound.stop != 1)&&(try.no<10)){ last.beta <- beta - output <- InverseLinftyOneRow(sigma, i, mu, maxiter=maxiter, threshold=threshold) + output <- InverseLinftyOneRow(sigma, i, bound, maxiter=maxiter, threshold=threshold) beta <- output$optsol iter <- output$iter if (isgiven==1){ - mu.stop <- 1 + bound.stop <- 1 } else{ if (try.no==1){ if (iter == (maxiter+1)){ incr <- 1; - mu <- mu*resol; + bound <- bound*resol; } else { incr <- 0; - mu <- mu/resol; + bound <- bound/resol; } } if (try.no > 1){ if ((incr == 1)&&(iter == (maxiter+1))){ - mu <- mu*resol; + bound <- bound*resol; } if ((incr == 1)&&(iter < (maxiter+1))){ - mu.stop <- 1; + bound.stop <- 1; } if ((incr == 0)&&(iter < (maxiter+1))){ - mu <- mu/resol; + bound <- bound/resol; } if ((incr == 0)&&(iter == (maxiter+1))){ - mu <- mu*resol; + bound <- bound*resol; beta <- last.beta; - mu.stop <- 1; + bound.stop <- 1; } } } @@ -66,14 +66,14 @@ InverseLinfty <- function(sigma, n, resol=1.5, mu=NULL, maxiter=50, threshold=1e return(M) } -InverseLinftyOneRow <- function ( sigma, i, mu, maxiter=50, threshold=1e-10) { +InverseLinftyOneRow <- function ( sigma, i, bound, maxiter=50, threshold=1e-10) { p <- nrow(sigma); rho <- max(abs(sigma[i,-i])) / sigma[i,i]; - mu0 <- rho/(1+rho); + bound0 <- rho/(1+rho); beta <- rep(0,p); - #if (mu >= mu0){ - # beta[i] <- (1-mu0)/sigma[i,i]; + #if (bound >= bound0){ + # beta[i] <- (1-bound0)/sigma[i,i]; # returnlist <- list("optsol" = beta, "iter" = 0); # return(returnlist); #} @@ -82,7 +82,7 @@ InverseLinftyOneRow <- function ( sigma, i, mu, maxiter=50, threshold=1e-10) { last.norm2 <- 1; iter <- 1; iter.old <- 1; - beta[i] <- (1-mu0)/sigma[i,i]; + beta[i] <- (1-bound0)/sigma[i,i]; beta.old <- beta; sigma.tilde <- sigma; diag(sigma.tilde) <- 0; @@ -95,7 +95,7 @@ InverseLinftyOneRow <- function ( sigma, i, mu, maxiter=50, threshold=1e-10) { v <- vs[j]; if (j==i) v <- v+1; - beta[j] <- SoftThreshold(v,mu)/sigma[j,j]; + beta[j] <- SoftThreshold(v,bound)/sigma[j,j]; if (oldval != beta[j]){ vs <- vs + (oldval-beta[j])*sigma.tilde[,j]; } @@ -112,7 +112,7 @@ InverseLinftyOneRow <- function ( sigma, i, mu, maxiter=50, threshold=1e-10) { # vs <- -sigma.tilde%*%beta; } - # print(c(iter, maxiter, diff.norm2, threshold * last.norm2, threshold, mu)) + # print(c(iter, maxiter, diff.norm2, threshold * last.norm2, threshold, bound)) } @@ -142,19 +142,21 @@ n = 100; p = 50 X = matrix(rnorm(n * p), n, p) S = t(X) %*% X / n -mu = 7.791408e-02 +debiasing_bound = 7.791408e-02 tol = 1.e-12 -rows = c(1:2) -A1 = debiasingMatrix(S, FALSE, n, rows, mu=mu, max_iter=1000, kkt_tol=tol, objective_tol=tol, parameter_tol=tol) -A2 = debiasingMatrix(S / n, FALSE, n, rows, mu=mu, max_iter=1000, kkt_tol=tol, objective_tol=tol, parameter_tol=tol) +rows = as.integer(c(1:2)) +print('here') +print(rows) +A1 = debiasingMatrix(S, FALSE, n, rows, bound=debiasing_bound, max_iter=1000, kkt_tol=tol, objective_tol=tol, parameter_tol=tol, linesearch=FALSE) -B1 = debiasingMatrix(X, TRUE, n, rows, mu=mu, max_iter=1000, kkt_tol=tol, objective_tol=tol, parameter_tol=tol) -B2 = debiasingMatrix(X / sqrt(n), TRUE, n, rows, mu=mu, max_iter=1000, kkt_tol=tol, objective_tol=tol, parameter_tol=tol) +A2 = debiasingMatrix(S / n, FALSE, n, rows, bound=debiasing_bound, max_iter=1000, kkt_tol=tol, objective_tol=tol, parameter_tol=tol, linesearch=FALSE) +B1 = debiasingMatrix(X, TRUE, n, rows, bound=debiasing_bound, max_iter=1000, kkt_tol=tol, objective_tol=tol, parameter_tol=tol, linesearch=FALSE) +B2 = debiasingMatrix(X / sqrt(n), TRUE, n, rows, bound=debiasing_bound, max_iter=1000, kkt_tol=tol, objective_tol=tol, parameter_tol=tol, linesearch=FALSE) -C1 = InverseLinfty(S, n, mu=mu, maxiter=1000)[rows,] -C2 = InverseLinfty(S / n, n, mu=mu, maxiter=1000)[rows,] +C1 = InverseLinfty(S, n, bound=debiasing_bound, maxiter=1000)[rows,] +C2 = InverseLinfty(S / n, n, bound=debiasing_bound, maxiter=1000)[rows,] par(mfrow=c(2,3)) @@ -172,30 +174,30 @@ print(c('C', sum(C1[1,] == 0))) ## Are our points feasible -feasibility = function(S, soln, j, mu) { +feasibility = function(S, soln, j, debiasing_bound) { p = nrow(S) E = rep(0, p) E[j] = 1 G = S %*% soln - E - return(c(max(abs(G)), mu)) + return(c(max(abs(G)), debiasing_bound)) } -print(c('feasibility A', feasibility(S, A1[1,], 1, mu))) -print(c('feasibility B', feasibility(S, B1[1,], 1, mu))) -print(c('feasibility C', feasibility(S, C1[1,], 1, mu))) +print(c('feasibility A', feasibility(S, A1[1,], 1, debiasing_bound))) +print(c('feasibility B', feasibility(S, B1[1,], 1, debiasing_bound))) +print(c('feasibility C', feasibility(S, C1[1,], 1, debiasing_bound))) -active_KKT = function(S, soln, j, mu) { +active_KKT = function(S, soln, j, debiasing_bound) { p = nrow(S) E = rep(0, p) E[j] = 1 G = S %*% soln - E print(which(soln != 0)) print(G[j]) - return(c(G[soln != 0] * sign(soln)[soln != 0], mu)) + return(c(G[soln != 0] * sign(soln)[soln != 0], debiasing_bound)) } -print(c('active_KKT A', active_KKT(S, A1[1,], 1, mu))) -print(c('active_KKT B', active_KKT(S, B1[1,], 1, mu))) -print(c('active_KKT C', active_KKT(S, C1[1,], 1, mu))) +print(c('active_KKT A', active_KKT(S, A1[1,], 1, debiasing_bound))) +print(c('active_KKT B', active_KKT(S, B1[1,], 1, debiasing_bound))) +print(c('active_KKT C', active_KKT(S, C1[1,], 1, debiasing_bound))) From c2460a162cab1db17958f02c71cfcdab6234da8a Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Fri, 27 Oct 2017 10:03:45 -0700 Subject: [PATCH 334/493] fixing documentation --- selectiveInference/NAMESPACE | 1 + selectiveInference/man/debiasingMatrix.Rd | 27 +++++++++-- selectiveInference/src/quadratic_program.c | 43 +++++++++-------- .../src/quadratic_program_wide.c | 46 ++++++++++--------- 4 files changed, 71 insertions(+), 46 deletions(-) diff --git a/selectiveInference/NAMESPACE b/selectiveInference/NAMESPACE index d72d56a..e7b1e80 100644 --- a/selectiveInference/NAMESPACE +++ b/selectiveInference/NAMESPACE @@ -43,5 +43,6 @@ importFrom("stats", dnorm, lsfit, pexp, pnorm, predict, qnorm, rnorm, sd, uniroot, dchisq, model.matrix, pchisq) importFrom("stats", "coef", "df", "lm", "pf") importFrom("stats", "glm", "residuals", "vcov") +importFrom("stats", "rbinom", "rexp") importFrom("Rcpp", "sourceCpp") diff --git a/selectiveInference/man/debiasingMatrix.Rd b/selectiveInference/man/debiasingMatrix.Rd index 4da925e..b95c75b 100644 --- a/selectiveInference/man/debiasingMatrix.Rd +++ b/selectiveInference/man/debiasingMatrix.Rd @@ -16,14 +16,18 @@ debiasingMatrix(Xinfo, nsample, rows, verbose=FALSE, - mu=NULL, + bound=NULL, linesearch=TRUE, scaling_factor=1.5, max_active=NULL, max_try=10, warn_kkt=FALSE, max_iter=100, + kkt_stop=TRUE, + parameter_stop=TRUE, + objective_stop=TRUE, kkt_tol=1.e-4, + parameter_tol=1.e-4, objective_tol=1.e-8) } \arguments{ @@ -38,7 +42,7 @@ matrix of interest is t(X) %*% X / nrow(X). } \item{nsample}{ Number of samples used in forming the cross-covariance matrix. -Used for default value of the bound parameter mu. +Used for default value of the bound parameter. } \item{rows}{ Which rows of the approximate inverse to compute. @@ -46,7 +50,7 @@ Which rows of the approximate inverse to compute. \item{verbose}{ Print out progress as rows are being computed. } -\item{mu}{ +\item{bound}{ Initial bound parameter for each row. Will be changed if linesearch is TRUE. } @@ -72,10 +76,25 @@ descent algorithm. How many full iterations to run of the coordinate descent for each value of the bound parameter. } +\item{kkt_stop}{ +If TRUE, check to stop coordinate descent when KKT conditions are approximately satisfied. +} +\item{parameter_stop}{ +If TRUE, check to stop coordinate descent based on relative convergence of parameter vector, +checked at geometrically spaced iterations 2^k. +} +\item{objective_stop}{ +If TRUE, check to stop coordinate descent based on relative decrease of objective value, +checked at geometrically spaced iterations 2^k. +} \item{kkt_tol}{ Tolerance value for assessing whether KKT conditions for solving the dual problem and feasibility of the original problem. } +\item{parameter_tol}{ +Tolerance value for assessing convergence of the problem using relative +convergence of the parameter. +} \item{objective_tol}{ Tolerance value for assessing convergence of the problem using relative decrease of the objective. @@ -86,7 +105,7 @@ This function computes an approximate inverse as described in Javanmard and Montanari (2013), specifically display (4). The problem is solved by considering a dual problem which has an objective similar to a LASSO problem and is solvable -by coordinate descent. For some values of mu the original +by coordinate descent. For some values of bound the original problem may not be feasible, in which case the dual problem has no solution. An attempt to detect this is made by stopping when the active set grows quite large, determined by max_active. diff --git a/selectiveInference/src/quadratic_program.c b/selectiveInference/src/quadratic_program.c index 822ddf5..1f7fcb3 100644 --- a/selectiveInference/src/quadratic_program.c +++ b/selectiveInference/src/quadratic_program.c @@ -385,10 +385,12 @@ int solve_qp(double *nndef_ptr, /* A non-negative definite matrix */ } } - // Check based on norm -- from Adel's debiasing code - if (param_stop) { - if (iter == 2 * iter_old) { + if (iter == 2 * iter_old) { // Geometric iterations from Adel's code + + // Check based on norm + + if (param_stop) { iter_old = iter; norm_diff = 0; norm_last = 0; @@ -407,6 +409,24 @@ int solve_qp(double *nndef_ptr, /* A non-negative definite matrix */ break; } } + + // Check relative decrease of objective + + if (objective_stop) { + new_value = objective_qp(nndef_ptr, + linear_func_ptr, + ever_active_ptr, + nactive_ptr, + nfeature, + bound, + theta); + + if ((fabs(old_value - new_value) < objective_tol * fabs(new_value)) && (iter > 0)) { + break; + } + old_value = new_value; + } + } // Check size of active set @@ -415,23 +435,6 @@ int solve_qp(double *nndef_ptr, /* A non-negative definite matrix */ break; } - // Check relative decrease of objective - - if (objective_stop) { - new_value = objective_qp(nndef_ptr, - linear_func_ptr, - ever_active_ptr, - nactive_ptr, - nfeature, - bound, - theta); - - if ((fabs(old_value - new_value) < objective_tol * fabs(new_value)) && (iter > 0)) { - break; - } - old_value = new_value; - } - } return(iter); } diff --git a/selectiveInference/src/quadratic_program_wide.c b/selectiveInference/src/quadratic_program_wide.c index 3546fcd..41e29ce 100644 --- a/selectiveInference/src/quadratic_program_wide.c +++ b/selectiveInference/src/quadratic_program_wide.c @@ -534,10 +534,11 @@ int solve_wide(double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX } } - // Check based on norm -- from Adel's debiasing code + if (iter == 2 * iter_old) { // Geometric iterations from Adel's code - if (param_stop) { - if (iter == 2 * iter_old) { + // Check based on norm + + if (param_stop) { iter_old = iter; norm_diff = 0; norm_last = 0; @@ -556,32 +557,33 @@ int solve_wide(double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX break; } } + + // Check relative decrease of objective + + if (objective_stop) { + new_value = objective_wide(X_theta_ptr, + linear_func_ptr, + ever_active_ptr, + nactive_ptr, + ncase, + nfeature, + bound_ptr, + ridge_term, + theta_ptr); + + if ((fabs(old_value - new_value) < objective_tol * fabs(new_value)) && (iter > 0)) { + break; + } + old_value = new_value; + } } + // Check size of active set if (*nactive_ptr >= max_active) { break; } - // Check relative decrease of objective - - if (objective_stop) { - new_value = objective_wide(X_theta_ptr, - linear_func_ptr, - ever_active_ptr, - nactive_ptr, - ncase, - nfeature, - bound_ptr, - ridge_term, - theta_ptr); - - if ((fabs(old_value - new_value) < objective_tol * fabs(new_value)) && (iter > 0)) { - break; - } - old_value = new_value; - } - } return(iter); } From ce15b68f64132e2929530d92f3a84326d7d59a5d Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Fri, 27 Oct 2017 10:29:46 -0700 Subject: [PATCH 335/493] checking comparison example again -- looks good --- selectiveInference/R/funs.fixed.R | 13 +- selectiveInference/man/debiasingMatrix.Rd | 4 +- tests/debiased_lasso/comparison_scaled.R | 78 ++ tests/debiased_lasso/comparison_unscaled.R | 78 ++ tests/debiased_lasso/javanmard_montanari.R | 770 ++++++++++++++++++++ tests/{ => debiased_lasso}/test_debiasing.R | 0 tests/debiased_lasso/test_debiasing_wide.R | 202 +++++ 7 files changed, 1138 insertions(+), 7 deletions(-) create mode 100644 tests/debiased_lasso/comparison_scaled.R create mode 100644 tests/debiased_lasso/comparison_unscaled.R create mode 100644 tests/debiased_lasso/javanmard_montanari.R rename tests/{ => debiased_lasso}/test_debiasing.R (100%) create mode 100644 tests/debiased_lasso/test_debiasing_wide.R diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 1928487..7c8318d 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -8,7 +8,7 @@ fixedLassoInf <- function(x, y, beta, sigma=NULL, alpha=0.1, type=c("partial", "full"), tol.beta=1e-5, tol.kkt=0.1, gridrange=c(-100,100), bits=NULL, verbose=FALSE, - linesearch.try=10) { + linesearch.try=10, offset_correction=TRUE) { family = match.arg(family) this.call = match.call() @@ -197,6 +197,9 @@ fixedLassoInf <- function(x, y, beta, M = M[-1,] # remove intercept row null_value = null_value[-1] # remove intercept element } + if (!offset_correction) { + null_value = 0 * null_value + } } else if (type=="partial" || p > n) { xa = x[,vars,drop=F] M = pinv(crossprod(xa)) %*% t(xa) @@ -325,13 +328,13 @@ debiasingMatrix = function(Xinfo, # could be X or t(X) %*% X / n d max_active=NULL, # how big can active set get? max_try=10, # how many steps in linesearch? warn_kkt=FALSE, # warn if KKT does not seem to be satisfied? - max_iter=100, # how many iterations for each optimization problem + max_iter=50, # how many iterations for each optimization problem kkt_stop=TRUE, # stop based on KKT conditions? parameter_stop=TRUE, # stop based on relative convergence of parameter? objective_stop=TRUE, # stop based on relative decrease in objective? kkt_tol=1.e-4, # tolerance for the KKT conditions parameter_tol=1.e-4, # tolerance for relative convergence of parameter - objective_tol=1.e-8 # tolerance for relative decrease in objective + objective_tol=1.e-4 # tolerance for relative decrease in objective ) { @@ -399,13 +402,13 @@ debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n dep max_active=NULL, # how big can active set get? max_try=10, # how many steps in linesearch? warn_kkt=FALSE, # warn if KKT does not seem to be satisfied? - max_iter=100, # how many iterations for each optimization problem + max_iter=50, # how many iterations for each optimization problem kkt_stop=TRUE, # stop based on KKT conditions? parameter_stop=TRUE, # stop based on relative convergence of parameter? objective_stop=TRUE, # stop based on relative decrease in objective? kkt_tol=1.e-4, # tolerance for the KKT conditions parameter_tol=1.e-4, # tolerance for relative convergence of parameter - objective_tol=1.e-8 # tolerance for relative decrease in objective + objective_tol=1.e-4 # tolerance for relative decrease in objective ) { p = ncol(Xinfo) diff --git a/selectiveInference/man/debiasingMatrix.Rd b/selectiveInference/man/debiasingMatrix.Rd index b95c75b..6a34850 100644 --- a/selectiveInference/man/debiasingMatrix.Rd +++ b/selectiveInference/man/debiasingMatrix.Rd @@ -22,13 +22,13 @@ debiasingMatrix(Xinfo, max_active=NULL, max_try=10, warn_kkt=FALSE, - max_iter=100, + max_iter=50, kkt_stop=TRUE, parameter_stop=TRUE, objective_stop=TRUE, kkt_tol=1.e-4, parameter_tol=1.e-4, - objective_tol=1.e-8) + objective_tol=1.e-4) } \arguments{ \item{Xinfo}{ diff --git a/tests/debiased_lasso/comparison_scaled.R b/tests/debiased_lasso/comparison_scaled.R new file mode 100644 index 0000000..e0c0a6a --- /dev/null +++ b/tests/debiased_lasso/comparison_scaled.R @@ -0,0 +1,78 @@ +source('javanmard_montanari.R') + +############################################## + +# Runs nsims simulations under the global null, computing p-values +# using both the old code (slow one using Adel's code) and the new +# code (faster using Jon's code), and produces qq-plots for both. +# Runing 50 sims takes about 10-15 mins because old code is slow, so +# feel free to lower nsims if you want + + +library(selectiveInference) +library(glmnet) + +# set.seed(424) + +n=100 +p=200 + +sigma=.5 + +theor_lambda = sigma * sqrt(2 * log(p)) +lambda=c(0.25, 0.5, 1, 0.8 * theor_lambda, theor_lambda) + +for (j in c(3,4,5,1,2)) { + +thresh = 1e-10 + +beta=rep(0,p) +type="full" + +nsim = 20 + +scaling = sqrt(n) +pvs_old = c() +pvs_new <- c() +pvs_old_0 = c() # don't add the offset correction +pvs_new_0 = c() # don't add the offset correction +for (i in 1:nsim) { + cat(i,fill=T) + x = matrix(rnorm(n*p),n,p) + x = scale(x,T,T) / scaling + mu = x%*%beta + y=mu+sigma*rnorm(n) + + # first run glmnet + gfit=glmnet(x,y,intercept=F,standardize=F,thresh=thresh) + + bhat = coef(gfit, s=lambda[j]/(sqrt(n) * scaling), exact=TRUE,x=x,y=y)[-1] + + if(sum(bhat != 0) > 0) { + + # compute fixed lambda p-values and selection intervals + + aa = fixedLassoInf(x,y,bhat,lambda[j]*sqrt(n) / scaling,intercept=F,sigma=sigma,type=type) + bb = oldFixedLassoInf(x,y,bhat,lambda[j]*sqrt(n) / scaling,intercept=F,sigma=sigma,type=type) + cc = fixedLassoInf(x,y,bhat,lambda[j]*sqrt(n) / scaling,intercept=F,sigma=sigma,type=type, offset_correction=FALSE) + dd = oldFixedLassoInf(x,y,bhat,lambda[j]*sqrt(n) / scaling,intercept=F,sigma=sigma,type=type, offset_correction=FALSE) + pvs_new <- c(pvs_new, aa$pv, recursive=TRUE) + pvs_old <- c(pvs_old, bb$pv,recursive=TRUE) + pvs_new_0 <- c(pvs_new_0, cc$pv, recursive=TRUE) + pvs_old_0 <- c(pvs_old_0, dd$pv, recursive=TRUE) + + cat() + } +} + +#check uniformity + +png(paste('comparison_scaled', j, '.png', sep='')) +plot(ecdf(pvs_old), pch=23, col='green', xlim=c(0,1), ylim=c(0,1), main='ECDF of p-values') +plot(ecdf(pvs_new), pch=24, col='purple', add=TRUE) +plot(ecdf(pvs_old_0), pch=23, col='red', add=TRUE) +plot(ecdf(pvs_new_0), pch=24, col='black', add=TRUE) +abline(0,1) +legend("bottomright", legend=c("Old","New", "Old 0", "New 0"), pch=c(23,24,23,24), pt.bg=c("green","purple","red","black")) +dev.off() +} \ No newline at end of file diff --git a/tests/debiased_lasso/comparison_unscaled.R b/tests/debiased_lasso/comparison_unscaled.R new file mode 100644 index 0000000..3bb408e --- /dev/null +++ b/tests/debiased_lasso/comparison_unscaled.R @@ -0,0 +1,78 @@ +source('javanmard_montanari.R') + +############################################## + +# Runs nsims simulations under the global null, computing p-values +# using both the old code (slow one using Adel's code) and the new +# code (faster using Jon's code), and produces qq-plots for both. +# Runing 50 sims takes about 10-15 mins because old code is slow, so +# feel free to lower nsims if you want + + +library(selectiveInference) +library(glmnet) + +# set.seed(424) + +n=100 +p=200 + +sigma=.5 + +theor_lambda = sigma * sqrt(2 * log(p)) +lambda=c(0.25, 0.5, 1, 0.8 * theor_lambda, theor_lambda) + +for (j in c(3,4,5,1,2)) { + +thresh = 1e-10 + +beta=rep(0,p) +type="full" + +nsim = 20 + +scaling = sqrt(n) +pvs_old = c() +pvs_new <- c() +pvs_old_0 = c() # don't add the offset correction +pvs_new_0 = c() # don't add the offset correction +for (i in 1:nsim) { + cat(i,fill=T) + x = matrix(rnorm(n*p),n,p) + x = scale(x,T,T) / scaling + mu = x%*%beta + y=mu+sigma*rnorm(n) + + # first run glmnet + gfit=glmnet(x,y,intercept=F,standardize=F,thresh=thresh) + + bhat = coef(gfit, s=lambda[j]/(sqrt(n) * scaling), exact=TRUE,x=x,y=y)[-1] + + if(sum(bhat != 0) > 0) { + + # compute fixed lambda p-values and selection intervals + + aa = fixedLassoInf(x,y,bhat,lambda[j]*sqrt(n) / scaling,intercept=F,sigma=sigma,type=type) + bb = oldFixedLassoInf(x,y,bhat,lambda[j]*sqrt(n) / scaling,intercept=F,sigma=sigma,type=type) + cc = fixedLassoInf(x,y,bhat,lambda[j]*sqrt(n) / scaling,intercept=F,sigma=sigma,type=type, offset_correction=FALSE) + dd = oldFixedLassoInf(x,y,bhat,lambda[j]*sqrt(n) / scaling,intercept=F,sigma=sigma,type=type, offset_correction=FALSE) + pvs_new <- c(pvs_new, aa$pv, recursive=TRUE) + pvs_old <- c(pvs_old, bb$pv,recursive=TRUE) + pvs_new_0 <- c(pvs_new_0, cc$pv, recursive=TRUE) + pvs_old_0 <- c(pvs_old_0, dd$pv, recursive=TRUE) + + cat() + } +} + +#check uniformity + +png(paste('comparison_unscaled', j, '.png', sep='')) +plot(ecdf(pvs_old), pch=23, col='green', xlim=c(0,1), ylim=c(0,1), main='ECDF of p-values') +plot(ecdf(pvs_new), pch=24, col='purple', add=TRUE) +plot(ecdf(pvs_old_0), pch=23, col='red', add=TRUE) +plot(ecdf(pvs_new_0), pch=24, col='black', add=TRUE) +abline(0,1) +legend("bottomright", legend=c("Old","New", "Old 0", "New 0"), pch=c(23,24,23,24), pt.bg=c("green","purple","red","black")) +dev.off() +} \ No newline at end of file diff --git a/tests/debiased_lasso/javanmard_montanari.R b/tests/debiased_lasso/javanmard_montanari.R new file mode 100644 index 0000000..09f3355 --- /dev/null +++ b/tests/debiased_lasso/javanmard_montanari.R @@ -0,0 +1,770 @@ +# First part is only functions from the old code. At the bottom is +# the bit of code that actually compares the old vs new code + +###################################################### + +### Old code (using Adel's R code) + +## Approximates inverse covariance matrix theta +InverseLinfty <- function(sigma, n, resol=1.5, mu=NULL, maxiter=50, threshold=1e-10, verbose = TRUE) { + isgiven <- 1; + if (is.null(mu)){ + isgiven <- 0; + } + + p <- nrow(sigma); + M <- matrix(0, p, p); + xperc = 0; + xp = round(p/10); + for (i in 1:p) { + if ((i %% xp)==0){ + xperc = xperc+10; + if (verbose) { + print(paste(xperc,"% done",sep="")); } + } + if (isgiven==0){ + mu <- (1/sqrt(n)) * qnorm(1-(0.1/(p^2))); + } + mu.stop <- 0; + try.no <- 1; + incr <- 0; + while ((mu.stop != 1)&&(try.no<10)){ + last.beta <- beta + output <- InverseLinftyOneRow(sigma, i, mu, maxiter=maxiter, threshold=threshold) + beta <- output$optsol + iter <- output$iter + if (isgiven==1){ + mu.stop <- 1 + } + else{ + if (try.no==1){ + if (iter == (maxiter+1)){ + incr <- 1; + mu <- mu*resol; + } else { + incr <- 0; + mu <- mu/resol; + } + } + if (try.no > 1){ + if ((incr == 1)&&(iter == (maxiter+1))){ + mu <- mu*resol; + } + if ((incr == 1)&&(iter < (maxiter+1))){ + mu.stop <- 1; + } + if ((incr == 0)&&(iter < (maxiter+1))){ + mu <- mu/resol; + } + if ((incr == 0)&&(iter == (maxiter+1))){ + mu <- mu*resol; + beta <- last.beta; + mu.stop <- 1; + } + } + } + try.no <- try.no+1 + } + M[i,] <- beta; + } + return(M) +} + +InverseLinftyOneRow <- function ( sigma, i, mu, maxiter=50, threshold=1e-10) { + p <- nrow(sigma); + rho <- max(abs(sigma[i,-i])) / sigma[i,i]; + mu0 <- rho/(1+rho); + beta <- rep(0,p); + + #if (mu >= mu0){ + # beta[i] <- (1-mu0)/sigma[i,i]; + # returnlist <- list("optsol" = beta, "iter" = 0); + # return(returnlist); + #} + + diff.norm2 <- 1; + last.norm2 <- 1; + iter <- 1; + iter.old <- 1; + beta[i] <- (1-mu0)/sigma[i,i]; + beta.old <- beta; + sigma.tilde <- sigma; + diag(sigma.tilde) <- 0; + vs <- -sigma.tilde%*%beta; + + while ((iter <= maxiter) && (diff.norm2 >= threshold*last.norm2)){ + + for (j in 1:p){ + oldval <- beta[j]; + v <- vs[j]; + if (j==i) + v <- v+1; + beta[j] <- SoftThreshold(v,mu)/sigma[j,j]; + if (oldval != beta[j]){ + vs <- vs + (oldval-beta[j])*sigma.tilde[,j]; + } + } + + iter <- iter + 1; + if (iter==2*iter.old){ + d <- beta - beta.old; + diff.norm2 <- sqrt(sum(d*d)); + last.norm2 <-sqrt(sum(beta*beta)); + iter.old <- iter; + beta.old <- beta; + #if (iter>10) + # vs <- -sigma.tilde%*%beta; + } + + # print(c(iter, maxiter, diff.norm2, threshold * last.norm2, threshold, mu)) + + } + + returnlist <- list("optsol" = beta, "iter" = iter) + return(returnlist) +} + +SoftThreshold <- function( x, lambda ) { + # + # Standard soft thresholding + # + if (x>lambda){ + return (x-lambda);} + else { + if (x< (-lambda)){ + return (x+lambda);} + else { + return (0); } + } +} + + +### Functions borrowed from selective Inference (only fixedLassoInf and fixedLasso.poly are modified) + +# Special linear time order function, works only when x +# is a scrambled vector of integers. + +Order <- function(x) { + n = length(x) + o = numeric(n) + o[x] = Seq(1,n) + return(o) +} + +# Returns a sequence of integers from a to b if a <= b, +# otherwise nothing. You have no idea how important this +# function is... + +Seq <- function(a, b, ...) { + if (a<=b) return(seq(a,b,...)) + else return(numeric(0)) +} + +# Returns the sign of x, with Sign(0)=1. + +Sign <- function(x) { + return(-1+2*(x>=0)) +} + +############################## + +# Centering and scaling convenience function + +standardize <- function(x, y, intercept, normalize) { + x = as.matrix(x) + y = as.numeric(y) + n = nrow(x) + p = ncol(x) + + if (intercept) { + bx = colMeans(x) + by = mean(y) + x = scale(x,bx,FALSE) + y = y-mean(y) + } else { + bx = rep(0,p) + by = 0 + } + if (normalize) { + sx = sqrt(colSums(x^2)) + x = scale(x,FALSE,sx) + } else { + sx = rep(1,p) + } + + return(list(x=x,y=y,bx=bx,by=by,sx=sx)) +} + +############################## + +# Interpolation function to get coefficients + +coef.interpolate <- function(betas, s, knots, dec=TRUE) { + # Sort the s values + o = order(s,dec=dec) + s = s[o] + + k = length(s) + mat = matrix(rep(knots,each=k),nrow=k) + if (dec) b = s >= mat + else b = s <= mat + blo = max.col(b,ties.method="first") + bhi = pmax(blo-1,1) + + i = bhi==blo + p = numeric(k) + p[i] = 0 + p[!i] = ((s-knots[blo])/(knots[bhi]-knots[blo]))[!i] + + beta = t((1-p)*t(betas[,blo,drop=FALSE]) + p*t(betas[,bhi,drop=FALSE])) + colnames(beta) = as.character(round(s,3)) + rownames(beta) = NULL + + # Return in original order + o = order(o) + return(beta[,o,drop=FALSE]) +} + +############################## + +checkargs.xy <- function(x, y) { + if (missing(x)) stop("x is missing") + if (is.null(x) || !is.matrix(x)) stop("x must be a matrix") + if (missing(y)) stop("y is missing") + if (is.null(y) || !is.numeric(y)) stop("y must be numeric") + if (ncol(x) == 0) stop("There must be at least one predictor [must have ncol(x) > 0]") + if (checkcols(x)) stop("x cannot have duplicate columns") + if (length(y) == 0) stop("There must be at least one data point [must have length(y) > 0]") + if (length(y)!=nrow(x)) stop("Dimensions don't match [length(y) != nrow(x)]") +} + +checkargs.misc <- function(sigma=NULL, alpha=NULL, k=NULL, + gridrange=NULL, gridpts=NULL, griddepth=NULL, + mult=NULL, ntimes=NULL, + beta=NULL, lambda=NULL, tol.beta=NULL, tol.kkt=NULL, + bh.q=NULL) { + + if (!is.null(sigma) && sigma <= 0) stop("sigma must be > 0") + if (!is.null(lambda) && lambda < 0) stop("lambda must be >= 0") + if (!is.null(alpha) && (alpha <= 0 || alpha >= 1)) stop("alpha must be between 0 and 1") + if (!is.null(k) && length(k) != 1) stop("k must be a single number") + if (!is.null(k) && (k < 1 || k != floor(k))) stop("k must be an integer >= 1") + if (!is.null(gridrange) && (length(gridrange) != 2 || gridrange[1] > gridrange[2])) + stop("gridrange must be an interval of the form c(a,b) with a <= b") + if (!is.null(gridpts) && (gridpts < 20 || gridpts != round(gridpts))) + stop("gridpts must be an integer >= 20") + if (!is.null(griddepth) && (griddepth > 10 || griddepth != round(griddepth))) + stop("griddepth must be an integer <= 10") + if (!is.null(mult) && mult < 0) stop("mult must be >= 0") + if (!is.null(ntimes) && (ntimes <= 0 || ntimes != round(ntimes))) + stop("ntimes must be an integer > 0") + if (!is.null(beta) && sum(beta!=0)==0) stop("Value of lambda too large, beta is zero") + # if (!is.null(lambda) && length(lambda) != 1) stop("lambda must be a single number") + if (!is.null(lambda) && length(lambda) != 1 && length(lambda) != length(beta)) stop("lambda must be a single number or equal to the length of beta") + if (!is.null(lambda) && lambda < 0) stop("lambda must be >=0") + if (!is.null(tol.beta) && tol.beta <= 0) stop("tol.beta must be > 0") + if (!is.null(tol.kkt) && tol.kkt <= 0) stop("tol.kkt must be > 0") +} + +# Make sure that no two columms of A are the same +# (this works with probability one). + +checkcols <- function(A) { + b = rnorm(nrow(A)) + a = sort(t(A)%*%b) + if (any(diff(a)==0)) return(TRUE) + return(FALSE) +} + +estimateSigma <- function(x, y, intercept=TRUE, standardize=TRUE) { + checkargs.xy(x,rep(0,nrow(x))) + if(nrow(x)<10) stop("Number of observations must be at least 10 to run estimateSigma") + cvfit=cv.glmnet(x,y,intercept=intercept,standardize=standardize) + lamhat=cvfit$lambda.min + fit=glmnet(x,y,standardize=standardize) + yhat=predict(fit,x,s=lamhat) + nz=sum(predict(fit,s=lamhat, type="coef")!=0) + sigma=sqrt(sum((y-yhat)^2)/(length(y)-nz-1)) + return(list(sigmahat=sigma, df=nz)) +} + +# Update the QR factorization, after a column has been +# added. Here Q1 is m x n, Q2 is m x k, and R is n x n. + +updateQR <- function(Q1,Q2,R,col) { + m = nrow(Q1) + n = ncol(Q1) + k = ncol(Q2) + + a = .C("update1", + Q2=as.double(Q2), + w=as.double(t(Q2)%*%col), + m=as.integer(m), + k=as.integer(k), + dup=FALSE, + package="selectiveInference") + + Q2 = matrix(a$Q2,nrow=m) + w = c(t(Q1)%*%col,a$w) + + # Re-structure: delete a column from Q2, add one to + # Q1, and expand R + Q1 = cbind(Q1,Q2[,1]) + Q2 = Q2[,-1,drop=FALSE] + R = rbind(R,rep(0,n)) + R = cbind(R,w[Seq(1,n+1)]) + + return(list(Q1=Q1,Q2=Q2,R=R)) +} + +# Moore-Penrose pseudo inverse for symmetric matrices + +pinv <- function(A, tol=.Machine$double.eps) { + e = eigen(A) + v = Re(e$vec) + d = Re(e$val) + d[d > tol] = 1/d[d > tol] + d[d < tol] = 0 + if (length(d)==1) return(v*d*v) + else return(v %*% diag(d) %*% t(v)) +} + +############################## + +# Assuming that grid is in sorted order from smallest to largest, +# and vals are monotonically increasing function values over the +# grid, returns the grid end points such that the corresponding +# vals are approximately equal to {val1, val2} + +grid.search <- function(grid, fun, val1, val2, gridpts=100, griddepth=2) { + n = length(grid) + vals = fun(grid) + + ii = which(vals >= val1) + jj = which(vals <= val2) + if (length(ii)==0) return(c(grid[n],Inf)) # All vals < val1 + if (length(jj)==0) return(c(-Inf,grid[1])) # All vals > val2 + # RJT: the above logic is correct ... but for simplicity, instead, + # we could just return c(-Inf,Inf) + + i1 = min(ii); i2 = max(jj) + if (i1==1) lo = -Inf + else lo = grid.bsearch(grid[i1-1],grid[i1],fun,val1,gridpts, + griddepth-1,below=TRUE) + if (i2==n) hi = Inf + else hi = grid.bsearch(grid[i2],grid[i2+1],fun,val2,gridpts, + griddepth-1,below=FALSE) + return(c(lo,hi)) +} + +# Repeated bin search to find the point x in the interval [left, right] +# that satisfies f(x) approx equal to val. If below=TRUE, then we seek +# x such that the above holds and f(x) <= val; else we seek f(x) >= val. + +grid.bsearch <- function(left, right, fun, val, gridpts=100, griddepth=1, below=TRUE) { + n = gridpts + depth = 1 + + while (depth <= griddepth) { + grid = seq(left,right,length=n) + vals = fun(grid) + + if (below) { + ii = which(vals >= val) + if (length(ii)==0) return(grid[n]) # All vals < val (shouldn't happen) + if ((i0=min(ii))==1) return(grid[1]) # All vals > val (shouldn't happen) + left = grid[i0-1] + right = grid[i0] + } + + else { + ii = which(vals <= val) + if (length(ii)==0) return(grid[1]) # All vals > val (shouldn't happen) + if ((i0=max(ii))==n) return(grid[n]) # All vals < val (shouldn't happen) + left = grid[i0] + right = grid[i0+1] + } + + depth = depth+1 + } + + return(ifelse(below, left, right)) +} + +# Returns Prob(Z>z | Z in [a,b]), where mean can be a vector + +tnorm.surv <- function(z, mean, sd, a, b, bits=NULL) { + z = max(min(z,b),a) + + # Check silly boundary cases + p = numeric(length(mean)) + p[mean==-Inf] = 0 + p[mean==Inf] = 1 + + # Try the multi precision floating point calculation first + o = is.finite(mean) + mm = mean[o] + pp = mpfr.tnorm.surv(z,mm,sd,a,b,bits) + + # If there are any NAs, then settle for an approximation + oo = is.na(pp) + if (any(oo)) pp[oo] = bryc.tnorm.surv(z,mm[oo],sd,a,b) + + p[o] = pp + return(p) +} + +# Returns Prob(Z>z | Z in [a,b]), where mean cane be a vector, using +# multi precision floating point calculations thanks to the Rmpfr package + +mpfr.tnorm.surv <- function(z, mean=0, sd=1, a, b, bits=NULL) { + # If bits is not NULL, then we are supposed to be using Rmpf + # (note that this was fail if Rmpfr is not installed; but + # by the time this function is being executed, this should + # have been properly checked at a higher level; and if Rmpfr + # is not installed, bits would have been previously set to NULL) + if (!is.null(bits)) { + z = Rmpfr::mpfr((z-mean)/sd, precBits=bits) + a = Rmpfr::mpfr((a-mean)/sd, precBits=bits) + b = Rmpfr::mpfr((b-mean)/sd, precBits=bits) + return(as.numeric((Rmpfr::pnorm(b)-Rmpfr::pnorm(z))/ + (Rmpfr::pnorm(b)-Rmpfr::pnorm(a)))) + } + + # Else, just use standard floating point calculations + z = (z-mean)/sd + a = (a-mean)/sd + b = (b-mean)/sd + return((pnorm(b)-pnorm(z))/(pnorm(b)-pnorm(a))) +} + +# Returns Prob(Z>z | Z in [a,b]), where mean can be a vector, based on +# A UNIFORM APPROXIMATION TO THE RIGHT NORMAL TAIL INTEGRAL, W Bryc +# Applied Mathematics and Computation +# Volume 127, Issues 23, 15 April 2002, Pages 365--374 +# https://math.uc.edu/~brycw/preprint/z-tail/z-tail.pdf + +bryc.tnorm.surv <- function(z, mean=0, sd=1, a, b) { + z = (z-mean)/sd + a = (a-mean)/sd + b = (b-mean)/sd + n = length(mean) + + term1 = exp(z*z) + o = a > -Inf + term1[o] = ff(a[o])*exp(-(a[o]^2-z[o]^2)/2) + term2 = rep(0,n) + oo = b < Inf + term2[oo] = ff(b[oo])*exp(-(b[oo]^2-z[oo]^2)/2) + p = (ff(z)-term2)/(term1-term2) + + # Sometimes the approximation can give wacky p-values, + # outside of [0,1] .. + #p[p<0 | p>1] = NA + p = pmin(1,pmax(0,p)) + return(p) +} + +ff <- function(z) { + return((z^2+5.575192695*z+12.7743632)/ + (z^3*sqrt(2*pi)+14.38718147*z*z+31.53531977*z+2*12.77436324)) +} + +############## MODIFIED FUNCTIONS ############### + +# Lasso inference function (for fixed lambda). Note: here we are providing inference +# for the solution of +# min 1/2 || y - \beta_0 - X \beta ||_2^2 + \lambda || \beta ||_1 + +oldFixedLassoInf <- function(x, y, beta, lambda, family=c("gaussian","binomial","cox"),intercept=TRUE, status=NULL, + sigma=NULL, alpha=0.1, + type=c("partial","full"), tol.beta=1e-5, tol.kkt=0.1, + gridrange=c(-100,100), bits=NULL, verbose=FALSE, offset_correction=TRUE) { + + family = match.arg(family) + this.call = match.call() + type = match.arg(type) + + if(family=="binomial") { + if(type!="partial") stop("Only type= partial allowed with binomial family") + out=fixedLogitLassoInf(x,y,beta,lambda,alpha=alpha, type="partial", tol.beta=tol.beta, tol.kkt=tol.kkt, + gridrange=gridrange, bits=bits, verbose=verbose,this.call=this.call) + return(out) + } + else if(family=="cox") { + if(type!="partial") stop("Only type= partial allowed with Cox family") + out=fixedCoxLassoInf(x,y,status,beta,lambda,alpha=alpha, type="partial",tol.beta=tol.beta, + tol.kkt=tol.kkt, gridrange=gridrange, bits=bits, verbose=verbose,this.call=this.call) + return(out) + } + + else{ + + + + checkargs.xy(x,y) + if (missing(beta) || is.null(beta)) stop("Must supply the solution beta") + if (missing(lambda) || is.null(lambda)) stop("Must supply the tuning parameter value lambda") + + n = nrow(x) + p = ncol(x) + beta = as.numeric(beta) + if (type == "full") { + if (p > n) { + # need intercept (if there is one) for debiased lasso + hbeta = beta + if (intercept == T) { + if (length(beta) != p + 1) { + stop("Since type='full', p > n, and intercept=TRUE, beta must have length equal to ncol(x)+1") + } + # remove intercept if included + beta = beta[-1] + } else if (length(beta) != p) { + stop("Since family='gaussian', type='full' and intercept=FALSE, beta must have length equal to ncol(x)") + } + } + } else if (length(beta) != p) { + stop("Since family='gaussian' and type='partial', beta must have length equal to ncol(x)") + } + + checkargs.misc(beta=beta,lambda=lambda,sigma=sigma,alpha=alpha, + gridrange=gridrange,tol.beta=tol.beta,tol.kkt=tol.kkt) + if (!is.null(bits) && !requireNamespace("Rmpfr",quietly=TRUE)) { + warning("Package Rmpfr is not installed, reverting to standard precision") + bits = NULL + } + + # If glmnet was run with an intercept term, center x and y + if (intercept==TRUE) { + obj = standardize(x,y,TRUE,FALSE) + x = obj$x + y = obj$y + } + + # Check the KKT conditions + g = t(x)%*%(y-x%*%beta) / lambda + if (any(abs(g) > 1+tol.kkt * sqrt(sum(y^2)))) + warning(paste("Solution beta does not satisfy the KKT conditions", + "(to within specified tolerances)")) + + tol.coef = tol.beta * sqrt(n^2 / colSums(x^2)) + # print(tol.coef) + vars = which(abs(beta) > tol.coef) + # print(beta) + # print(vars) + if(length(vars)==0){ + cat("Empty model",fill=T) + return() + } + if (any(sign(g[vars]) != sign(beta[vars]))) + warning(paste("Solution beta does not satisfy the KKT conditions", + "(to within specified tolerances). You might try rerunning", + "glmnet with a lower setting of the", + "'thresh' parameter, for a more accurate convergence.")) + + # Get lasso polyhedral region, of form Gy >= u + if (type == 'full' & p > n) out = fixedLasso.poly(x,y,beta,lambda,vars,inactive=TRUE) + else out = fixedLasso.poly(x,y,beta,lambda,vars) + G = out$G + u = out$u + + # Check polyhedral region + tol.poly = 0.01 + if (min(G %*% y - u) < -tol.poly * sqrt(sum(y^2))) + stop(paste("Polyhedral constraints not satisfied; you must recompute beta", + "more accurately. With glmnet, make sure to use exact=TRUE in coef(),", + "and check whether the specified value of lambda is too small", + "(beyond the grid of values visited by glmnet).", + "You might also try rerunning glmnet with a lower setting of the", + "'thresh' parameter, for a more accurate convergence.")) + + # Estimate sigma + if (is.null(sigma)) { + if (n >= 2*p) { + oo = intercept + sigma = sqrt(sum(lsfit(x,y,intercept=oo)$res^2)/(n-p-oo)) + } + else { + sigma = sd(y) + warning(paste(sprintf("p > n/2, and sd(y) = %0.3f used as an estimate of sigma;",sigma), + "you may want to use the estimateSigma function")) + } + } + + k = length(vars) + pv = vlo = vup = numeric(k) + vmat = matrix(0,k,n) + ci = tailarea = matrix(0,k,2) + sign = numeric(k) + + if (type=="full" & p > n) { + if (intercept == T) { + pp=p+1 + Xint <- cbind(rep(1,n),x) + # indices of selected predictors + S = c(1,vars + 1) + notS = which(abs(beta) <= tol.coef) + 1 + } else { + pp=p + Xint <- x + # indices of selected predictors + S = vars + notS = which(abs(beta) <= tol.coef) + } + + + XS = Xint[,S] + hbetaS = hbeta[S] + + # Reorder so that active set S is first + Xordered = Xint[,c(S,notS,recursive=T)] + + hsigma <- 1/n*(t(Xordered)%*%Xordered) + hsigmaS <- 1/n*(t(XS)%*%XS) # hsigma[S,S] + hsigmaSinv <- pinv(hsigmaS) # solve(hsigmaS) + + # Approximate inverse covariance matrix for when (n < p) from lasso_Inference.R + htheta <- InverseLinfty(hsigma, n, verbose=FALSE) + + # 0-padding matrix + FS = rbind(diag(length(S)),matrix(0,pp-length(S),length(S))) + ithetasigma = (diag(pp)-(htheta%*%hsigma)) + + M <- (((htheta%*%t(Xordered))+ithetasigma%*%FS%*%hsigmaSinv%*%t(XS))/n) + # vector which is offset for testing debiased beta's + meanoffset <- -(((ithetasigma%*%FS%*%hsigmaSinv)%*%sign(hbetaS))*lambda/n) + if (intercept == T) { + M = M[-1,] # remove intercept row + meanoffset = meanoffset[-1] # remove intercept element + } + if (offset_correction == FALSE) { + meanoffset = 0 * meanoffset + } + } else if (type=="partial" || p > n) { + xa = x[,vars,drop=F] + M = pinv(crossprod(xa)) %*% t(xa) + meanoffset = rep(0,k) + } else { + M = pinv(crossprod(x)) %*% t(x) + M = M[vars,,drop=F] + meanoffset = rep(0,k) + } + + for (j in 1:k) { + if (verbose) cat(sprintf("Inference for variable %i ...\n",vars[j])) + + vj = M[j,] + mj = sqrt(sum(vj^2)) + vj = vj / mj # Standardize (divide by norm of vj) + sign[j] = sign(sum(vj*y)) + vj = sign[j] * vj + + a = poly.pval(y,G,u,vj,offset=meanoffset[j],sigma,bits) + pv[j] = a$pv + vlo[j] = a$vlo * mj # Unstandardize (mult by norm of vj) + vup[j] = a$vup * mj # Unstandardize (mult by norm of vj) + vmat[j,] = vj * mj * sign[j] # Unstandardize (mult by norm of vj) + + a = poly.int(y,G,u,vj,offset=meanoffset[j],sigma,alpha,gridrange=gridrange, + flip=(sign[j]==-1),bits=bits) + ci[j,] = a$int * mj # Unstandardize (mult by norm of vj) + tailarea[j,] = a$tailarea + } + + out = list(type=type,lambda=lambda,pv=pv,ci=ci, + tailarea=tailarea,vlo=vlo,vup=vup,vmat=vmat,y=y, + vars=vars,sign=sign,sigma=sigma,alpha=alpha, + sd=sigma*sqrt(rowSums(vmat^2)), + coef0=vmat%*%y, + call=this.call,M=M) + class(out) = "fixedLassoInf" + return(out) + } +} + + +fixedLasso.poly= + function(x, y, beta, lambda, a, inactive = FALSE) { + xa = x[,a,drop=F] + xac = x[,!a,drop=F] + xai = pinv(crossprod(xa)) + xap = xai %*% t(xa) + za = sign(beta[a]) + if (length(za)>1) dz = diag(za) + if (length(za)==1) dz = matrix(za,1,1) + + if (inactive) { + P = diag(1,nrow(xa)) - xa %*% xap + + G = -rbind( + 1/lambda * t(xac) %*% P, + -1/lambda * t(xac) %*% P, + -dz %*% xap + ) + lambda2=lambda + if(length(lambda)>1) lambda2=lambda[a] + u = -c( + 1 - t(xac) %*% t(xap) %*% za, + 1 + t(xac) %*% t(xap) %*% za, + -lambda2 * dz %*% xai %*% za) + } else { + G = -rbind( + # 1/lambda * t(xac) %*% P, + # -1/lambda * t(xac) %*% P, + -dz %*% xap + ) + lambda2=lambda + if(length(lambda)>1) lambda2=lambda[a] + u = -c( + # 1 - t(xac) %*% t(xap) %*% za, + # 1 + t(xac) %*% t(xap) %*% za, + -lambda2 * dz %*% xai %*% za) + } + + return(list(G=G,u=u)) + } + + +# Main p-value function + +poly.pval <- function(y, G, u, v, sigma, offset=0, bits=NULL) { + z = sum(v*y) + vv = sum(v^2) + sd = sigma*sqrt(vv) + + rho = G %*% v / vv + vec = (u - G %*% y + rho*z) / rho + vlo = suppressWarnings(max(vec[rho>0])) + vup = suppressWarnings(min(vec[rho<0])) + + pv = tnorm.surv(z,0-offset,sd,vlo,vup,bits) + return(list(pv=pv,vlo=vlo,vup=vup)) +} + +# Main confidence interval function + +poly.int <- function(y, G, u, v, sigma, alpha, offset=0, gridrange=c(-100,100), + gridpts=100, griddepth=2, flip=FALSE, bits=NULL) { + + z = sum(v*y) + vv = sum(v^2) + sd = sigma*sqrt(vv) + + rho = G %*% v / vv + vec = (u - G %*% y + rho*z) / rho + vlo = suppressWarnings(max(vec[rho>0])) + vup = suppressWarnings(min(vec[rho<0])) + + xg = seq(gridrange[1]*sd,gridrange[2]*sd,length=gridpts) + fun = function(x) { tnorm.surv(z,x-offset,sd,vlo,vup,bits) } + + int = grid.search(xg,fun,alpha/2,1-alpha/2,gridpts,griddepth) + tailarea = c(fun(int[1]),1-fun(int[2])) + + if (flip) { + int = -int[2:1] + tailarea = tailarea[2:1] + } + + return(list(int=int,tailarea=tailarea)) +} diff --git a/tests/test_debiasing.R b/tests/debiased_lasso/test_debiasing.R similarity index 100% rename from tests/test_debiasing.R rename to tests/debiased_lasso/test_debiasing.R diff --git a/tests/debiased_lasso/test_debiasing_wide.R b/tests/debiased_lasso/test_debiasing_wide.R new file mode 100644 index 0000000..62801da --- /dev/null +++ b/tests/debiased_lasso/test_debiasing_wide.R @@ -0,0 +1,202 @@ +library(selectiveInference) + + +## Approximates inverse covariance matrix theta +InverseLinfty <- function(sigma, n, resol=1.5, bound=NULL, maxiter=50, threshold=1e-10, verbose = TRUE) { + isgiven <- 1; + if (is.null(bound)){ + isgiven <- 0; + } + + p <- nrow(sigma); + M <- matrix(0, p, p); + xperc = 0; + xp = round(p/10); + for (i in 1:p) { + if ((i %% xp)==0){ + xperc = xperc+10; + if (verbose) { + print(paste(xperc,"% done",sep="")); } + } + if (isgiven==0){ + bound <- (1/sqrt(n)) * qnorm(1-(0.1/(p^2))); + } + bound.stop <- 0; + try.no <- 1; + incr <- 0; + while ((bound.stop != 1)&&(try.no<10)){ + last.beta <- beta + output <- InverseLinftyOneRow(sigma, i, bound, maxiter=maxiter, threshold=threshold) + beta <- output$optsol + iter <- output$iter + if (isgiven==1){ + bound.stop <- 1 + } + else{ + if (try.no==1){ + if (iter == (maxiter+1)){ + incr <- 1; + bound <- bound*resol; + } else { + incr <- 0; + bound <- bound/resol; + } + } + if (try.no > 1){ + if ((incr == 1)&&(iter == (maxiter+1))){ + bound <- bound*resol; + } + if ((incr == 1)&&(iter < (maxiter+1))){ + bound.stop <- 1; + } + if ((incr == 0)&&(iter < (maxiter+1))){ + bound <- bound/resol; + } + if ((incr == 0)&&(iter == (maxiter+1))){ + bound <- bound*resol; + beta <- last.beta; + bound.stop <- 1; + } + } + } + try.no <- try.no+1 + } + M[i,] <- beta; + } + return(M) +} + +InverseLinftyOneRow <- function ( sigma, i, bound, maxiter=50, threshold=1e-10) { + p <- nrow(sigma); + rho <- max(abs(sigma[i,-i])) / sigma[i,i]; + bound0 <- rho/(1+rho); + beta <- rep(0,p); + + #if (bound >= bound0){ + # beta[i] <- (1-bound0)/sigma[i,i]; + # returnlist <- list("optsol" = beta, "iter" = 0); + # return(returnlist); + #} + + diff.norm2 <- 1; + last.norm2 <- 1; + iter <- 1; + iter.old <- 1; + beta[i] <- (1-bound0)/sigma[i,i]; + beta.old <- beta; + sigma.tilde <- sigma; + diag(sigma.tilde) <- 0; + vs <- -sigma.tilde%*%beta; + + while ((iter <= maxiter) && (diff.norm2 >= threshold*last.norm2)){ + + for (j in 1:p){ + oldval <- beta[j]; + v <- vs[j]; + if (j==i) + v <- v+1; + beta[j] <- SoftThreshold(v,bound)/sigma[j,j]; + if (oldval != beta[j]){ + vs <- vs + (oldval-beta[j])*sigma.tilde[,j]; + } + } + + iter <- iter + 1; + if (iter==2*iter.old){ + d <- beta - beta.old; + diff.norm2 <- sqrt(sum(d*d)); + last.norm2 <-sqrt(sum(beta*beta)); + iter.old <- iter; + beta.old <- beta; + #if (iter>10) + # vs <- -sigma.tilde%*%beta; + } + + # print(c(iter, maxiter, diff.norm2, threshold * last.norm2, threshold, bound)) + + } + + returnlist <- list("optsol" = beta, "iter" = iter) + return(returnlist) +} + +SoftThreshold <- function( x, lambda ) { + # + # Standard soft thresholding + # + if (x>lambda){ + return (x-lambda);} + else { + if (x< (-lambda)){ + return (x+lambda);} + else { + return (0); } + } +} + + +### Test + +n = 100; p = 250 + +X = matrix(rnorm(n * p), n, p) +S = t(X) %*% X / n + +debiasing_bound = 0.2 + +tol = 1.e-12 + +rows = as.integer(c(1:2)) + +A1 = debiasingMatrix(S, FALSE, n, rows, bound=debiasing_bound, max_iter=1000, kkt_tol=tol, objective_tol=tol, parameter_tol=tol, linesearch=FALSE) +A2 = debiasingMatrix(S / n, FALSE, n, rows, bound=debiasing_bound, max_iter=1000, kkt_tol=tol, objective_tol=tol, parameter_tol=tol, linesearch=FALSE) +B1 = debiasingMatrix(X, TRUE, n, rows, bound=debiasing_bound, max_iter=1000, kkt_tol=tol, objective_tol=tol, parameter_tol=tol, linesearch=FALSE) +B2 = debiasingMatrix(X / sqrt(n), TRUE, n, rows, bound=debiasing_bound, max_iter=1000, kkt_tol=tol, objective_tol=tol, parameter_tol=tol, linesearch=FALSE) + +C1 = InverseLinfty(S, n, bound=debiasing_bound, maxiter=1000)[rows,] +C2 = InverseLinfty(S / n, n, bound=debiasing_bound, maxiter=1000)[rows,] + +par(mfrow=c(2,3)) + +plot(A1[1,], C1[1,]) +plot(A1[1,], B1[1,]) +plot(B1[1,], C1[1,]) + +plot(A1[1,], A2[1,]) +plot(B1[1,], B2[1,]) +plot(C1[1,], C2[1,]) + +print(c('A', sum(A1[1,] == 0))) +print(c('B', sum(B1[1,] == 0))) +print(c('C', sum(C1[1,] == 0))) + +## Are our points feasible + +feasibility = function(S, soln, j, debiasing_bound) { + p = nrow(S) + E = rep(0, p) + E[j] = 1 + G = S %*% soln - E + return(c(max(abs(G)), debiasing_bound)) +} + +print(c('feasibility A', feasibility(S, A1[1,], 1, debiasing_bound))) +print(c('feasibility B', feasibility(S, B1[1,], 1, debiasing_bound))) +print(c('feasibility C', feasibility(S, C1[1,], 1, debiasing_bound))) + +active_KKT = function(S, soln, j, debiasing_bound) { + p = nrow(S) + E = rep(0, p) + E[j] = 1 + G = S %*% soln - E + print(which(soln != 0)) + print(G[j]) + return(c(G[soln != 0] * sign(soln)[soln != 0], debiasing_bound)) +} + +print(c('active_KKT A', active_KKT(S, A1[1,], 1, debiasing_bound))) +print(c('active_KKT B', active_KKT(S, B1[1,], 1, debiasing_bound))) +print(c('active_KKT C', active_KKT(S, C1[1,], 1, debiasing_bound))) + + +print(summary(lm(A1[1,] ~ C1[1,]))) \ No newline at end of file From e01d8f19052271141cfb10ffa4e9c52ea98a5e0b Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Fri, 27 Oct 2017 10:36:58 -0700 Subject: [PATCH 336/493] removing the offset_correction which was just for the comparison --- selectiveInference/R/funs.fixed.R | 5 +---- tests/debiased_lasso/comparison_scaled.R | 13 +++---------- tests/debiased_lasso/comparison_unscaled.R | 13 +++---------- 3 files changed, 7 insertions(+), 24 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 7c8318d..d5e3d64 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -8,7 +8,7 @@ fixedLassoInf <- function(x, y, beta, sigma=NULL, alpha=0.1, type=c("partial", "full"), tol.beta=1e-5, tol.kkt=0.1, gridrange=c(-100,100), bits=NULL, verbose=FALSE, - linesearch.try=10, offset_correction=TRUE) { + linesearch.try=10) { family = match.arg(family) this.call = match.call() @@ -197,9 +197,6 @@ fixedLassoInf <- function(x, y, beta, M = M[-1,] # remove intercept row null_value = null_value[-1] # remove intercept element } - if (!offset_correction) { - null_value = 0 * null_value - } } else if (type=="partial" || p > n) { xa = x[,vars,drop=F] M = pinv(crossprod(xa)) %*% t(xa) diff --git a/tests/debiased_lasso/comparison_scaled.R b/tests/debiased_lasso/comparison_scaled.R index e0c0a6a..e296bd6 100644 --- a/tests/debiased_lasso/comparison_scaled.R +++ b/tests/debiased_lasso/comparison_scaled.R @@ -19,10 +19,9 @@ p=200 sigma=.5 -theor_lambda = sigma * sqrt(2 * log(p)) -lambda=c(0.25, 0.5, 1, 0.8 * theor_lambda, theor_lambda) +lambda=c(0.25, 0.5, 1) -for (j in c(3,4,5,1,2)) { +for (j in c(3,2,1)) { thresh = 1e-10 @@ -54,12 +53,8 @@ for (i in 1:nsim) { aa = fixedLassoInf(x,y,bhat,lambda[j]*sqrt(n) / scaling,intercept=F,sigma=sigma,type=type) bb = oldFixedLassoInf(x,y,bhat,lambda[j]*sqrt(n) / scaling,intercept=F,sigma=sigma,type=type) - cc = fixedLassoInf(x,y,bhat,lambda[j]*sqrt(n) / scaling,intercept=F,sigma=sigma,type=type, offset_correction=FALSE) - dd = oldFixedLassoInf(x,y,bhat,lambda[j]*sqrt(n) / scaling,intercept=F,sigma=sigma,type=type, offset_correction=FALSE) pvs_new <- c(pvs_new, aa$pv, recursive=TRUE) pvs_old <- c(pvs_old, bb$pv,recursive=TRUE) - pvs_new_0 <- c(pvs_new_0, cc$pv, recursive=TRUE) - pvs_old_0 <- c(pvs_old_0, dd$pv, recursive=TRUE) cat() } @@ -70,9 +65,7 @@ for (i in 1:nsim) { png(paste('comparison_scaled', j, '.png', sep='')) plot(ecdf(pvs_old), pch=23, col='green', xlim=c(0,1), ylim=c(0,1), main='ECDF of p-values') plot(ecdf(pvs_new), pch=24, col='purple', add=TRUE) -plot(ecdf(pvs_old_0), pch=23, col='red', add=TRUE) -plot(ecdf(pvs_new_0), pch=24, col='black', add=TRUE) abline(0,1) -legend("bottomright", legend=c("Old","New", "Old 0", "New 0"), pch=c(23,24,23,24), pt.bg=c("green","purple","red","black")) +legend("bottomright", legend=c("Old", "New"), pch=c(23,24), pt.bg=c("green","purple")) dev.off() } \ No newline at end of file diff --git a/tests/debiased_lasso/comparison_unscaled.R b/tests/debiased_lasso/comparison_unscaled.R index 3bb408e..eebda68 100644 --- a/tests/debiased_lasso/comparison_unscaled.R +++ b/tests/debiased_lasso/comparison_unscaled.R @@ -19,10 +19,9 @@ p=200 sigma=.5 -theor_lambda = sigma * sqrt(2 * log(p)) -lambda=c(0.25, 0.5, 1, 0.8 * theor_lambda, theor_lambda) +lambda=c(0.25, 0.5, 1) -for (j in c(3,4,5,1,2)) { +for (j in c(3,2,1)) { thresh = 1e-10 @@ -54,12 +53,8 @@ for (i in 1:nsim) { aa = fixedLassoInf(x,y,bhat,lambda[j]*sqrt(n) / scaling,intercept=F,sigma=sigma,type=type) bb = oldFixedLassoInf(x,y,bhat,lambda[j]*sqrt(n) / scaling,intercept=F,sigma=sigma,type=type) - cc = fixedLassoInf(x,y,bhat,lambda[j]*sqrt(n) / scaling,intercept=F,sigma=sigma,type=type, offset_correction=FALSE) - dd = oldFixedLassoInf(x,y,bhat,lambda[j]*sqrt(n) / scaling,intercept=F,sigma=sigma,type=type, offset_correction=FALSE) pvs_new <- c(pvs_new, aa$pv, recursive=TRUE) pvs_old <- c(pvs_old, bb$pv,recursive=TRUE) - pvs_new_0 <- c(pvs_new_0, cc$pv, recursive=TRUE) - pvs_old_0 <- c(pvs_old_0, dd$pv, recursive=TRUE) cat() } @@ -70,9 +65,7 @@ for (i in 1:nsim) { png(paste('comparison_unscaled', j, '.png', sep='')) plot(ecdf(pvs_old), pch=23, col='green', xlim=c(0,1), ylim=c(0,1), main='ECDF of p-values') plot(ecdf(pvs_new), pch=24, col='purple', add=TRUE) -plot(ecdf(pvs_old_0), pch=23, col='red', add=TRUE) -plot(ecdf(pvs_new_0), pch=24, col='black', add=TRUE) abline(0,1) -legend("bottomright", legend=c("Old","New", "Old 0", "New 0"), pch=c(23,24,23,24), pt.bg=c("green","purple","red","black")) +legend("bottomright", legend=c("Old", "New"), pch=c(23,24), pt.bg=c("green","purple")) dev.off() } \ No newline at end of file From eedf0fde5bf16648e5dde7f3703f5eacf59928e8 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Sat, 28 Oct 2017 11:13:25 -0700 Subject: [PATCH 337/493] created the matrices for the affine transform, wrapper for calling Gaussian density --- selectiveInference/R/funs.fixed.R | 3 +- selectiveInference/R/funs.randomized.R | 34 ++++ selectiveInference/src/Rcpp-randomized.cpp | 40 +++++ selectiveInference/src/randomized_lasso.c | 2 + selectiveInference/src/randomized_lasso.c~ | 188 +++++++++++++++++++++ selectiveInference/src/randomized_lasso.h | 2 +- selectiveInference/src/randomized_lasso.h~ | 42 +++++ 7 files changed, 308 insertions(+), 3 deletions(-) create mode 100644 selectiveInference/src/Rcpp-randomized.cpp create mode 100644 selectiveInference/src/randomized_lasso.c~ create mode 100644 selectiveInference/src/randomized_lasso.h~ diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index d5e3d64..13d8b5e 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -435,8 +435,7 @@ debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n dep last_output = NULL if (is_wide) { - n = nrow(Xinfo) - Xsoln = as.numeric(rep(0, n)) + Xsoln = as.numeric(rep(0, nrow(Xinfo))) } while (counter_idx < max_try) { diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 3a171f7..1da73b2 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -37,6 +37,7 @@ randomizedLASSO = function(X, if (length(lam) == 1) { lam = rep(lam, p) } + if (length(lam) != p) { stop("Lagrange parameter should be single float or of length ncol(X)") } @@ -65,5 +66,38 @@ randomizedLASSO = function(X, objective_stop, # objective_stop kkt_stop, # kkt_stop param_stop) # param_stop + + + sign_soln = sign(result$soln) + + unpenalized = lam == 0 + active = !unpenalized * (sign_soln != 0) + inactive = !unpenzlied * (sign_soln == 0) + + unpenalized_set = which(unpenalized) + active_set = which(active) + inactive_set = which(inactive) + + coef_term = t(X) %*% X[,c(unpenalized_set, # the coefficients + active_set)] + coef_term = coef_term %*% diag(c(rep(1, sum(unpenalized)), sign_soln[active])) # coefficients are non-negative + coef_term[active,] = coef_term[active,] + ridge_term * diag(rep(1, sum(active))) # ridge term + + subgrad_term = cbind(matrix(0, sum(inactive), sum(active) + sum(unpenalized)), + diag(rep(1, sum(inactive)))) + linear_term = rbind(coef_term, + subgrad_term) + + offset_term = rep(0, p) + offset_term[active] = lam[active] * sign_soln[active] + + + + list(active_set = active_set, + inactive_set = inactive_set, + unpenalized_set = unpenalized_set, + sign_soln = sign_soln) + + return(result) } diff --git a/selectiveInference/src/Rcpp-randomized.cpp b/selectiveInference/src/Rcpp-randomized.cpp new file mode 100644 index 0000000..7887f32 --- /dev/null +++ b/selectiveInference/src/Rcpp-randomized.cpp @@ -0,0 +1,40 @@ +#include // need to include the main Rcpp header file +#include // where densities are defined + +// [[Rcpp::export]] +Rcpp::NumericVector log_density_gaussian_(double noise_scale, // Scale of randomization + Rcpp::NumericMatrix internal_linear, // A_D -- linear part for data + Rcpp::NumericMatrix internal_state, // D -- data state -- matrix of shape (nopt, npts) + Rcpp::NumericMatrix optimization_linear, // A_O -- linear part for optimization variables + Rcpp::NumericMatrix optimization_state, // O -- optimization state -- matrix of shape (ninternal, npts) + Rcpp::NumericMatrix offset) { // h -- offset in affine transform -- "p" dimensional + + int npt = internal_state.ncol(); // Function is vectorized + if (optimization_state.ncol() != npt) { // Assuming each column is an internal or opt state because arrays are column major + Rcpp::stop("Number of optimization samples should equal the number of (internally represented) data."); + } + + int ndim = optimization_linear.nrow(); + if (internal_linear.nrow() != ndim) { + Rcpp::stop("Dimension of optimization range should be the same as the dimension of the data range."); + } + int ninternal = internal_linear.ncol(); + int noptimization = optimization_linear.ncol(); + + Rcpp::NumericVector result(npt); + + int ipt; + for (ipt=0; ipt // for fabs + +// Augmented density for randomized LASSO after +// Gaussian randomization + +// Described in https://arxiv.org/abs/1609.05609 + +// Gaussian is product of IID N(0, noise_scale^2) density +// Evaluated at A_D D + A_O O + h + +// Laplace is product of IID Laplace with scale noise_scale +// Also evaluated at A_D D + A_O O + h + +double log_density_gaussian(double noise_scale, // Scale of randomization + int ndim, // Number of features -- "p" + int ninternal, // Dimension of internal data representation often 1 + int noptimization, // Dimension of optimization variables -- "p" + double *internal_linear, // A_D -- linear part for data + double *internal_state, // D -- data state + double *optimization_linear, // A_O -- linear part for optimization variables + double *optimization_state, // O -- optimization state + double *offset) // h -- offset in affine transform -- "p" dimensional +{ + int irow, icol; + double denom = 2 * noise_scale * noise_scale; + double value = 0; + double reconstruction = 0; + double *offset_ptr; + double *internal_linear_ptr; + double *internal_state_ptr; + double *optimization_linear_ptr; + double *optimization_state_ptr; + + for (irow=0; irow Date: Sat, 28 Oct 2017 11:13:48 -0700 Subject: [PATCH 338/493] unwanted files --- selectiveInference/src/randomized_lasso.c~ | 188 --------------------- selectiveInference/src/randomized_lasso.h~ | 42 ----- 2 files changed, 230 deletions(-) delete mode 100644 selectiveInference/src/randomized_lasso.c~ delete mode 100644 selectiveInference/src/randomized_lasso.h~ diff --git a/selectiveInference/src/randomized_lasso.c~ b/selectiveInference/src/randomized_lasso.c~ deleted file mode 100644 index 123c81d..0000000 --- a/selectiveInference/src/randomized_lasso.c~ +++ /dev/null @@ -1,188 +0,0 @@ -#include // for fabs - -// Augmented density for randomized LASSO after -// Gaussian randomization - -// Described in https://arxiv.org/abs/1609.05609 - -// Gaussian is product of IID N(0, noise_scale^2) density -// Evaluated at A_D D + A_O O + h - -// Laplace is product of IID Laplace with scale noise_scale -// Also evaluated at A_D D + A_O O + h - -double log_density_gaussian(double noise_scale, // Scale of randomization - int ndim, // Number of features -- "p" - int ninternal, // Dimension of internal data representation often 1 - int noptimization, // Dimension of optimization variables -- "p" - double *internal_linear, // A_D -- linear part for data - double *internal_state, // D -- data state - double *optimization_linear, // A_O -- linear part for optimization variables - double *optimization_state, // O -- optimization state - double *offset) // h -- offset in affine transform -- "p" dimensional -{ - int irow, icol; - double denom = 2 * noise_scale * noise_scale; - double value = 0; - double reconstruction = 0; - double *offset_ptr; - double *internal_linear_ptr; - double *internal_state_ptr; - double *optimization_linear_ptr; - double *optimization_state_ptr; - - for (irow=0; irow Date: Sat, 28 Oct 2017 11:16:12 -0700 Subject: [PATCH 339/493] wrapper for conditional density --- selectiveInference/src/Rcpp-randomized.cpp | 25 ++++++++++++++++++++++ tests/{ => randomized}/test_randomized.R | 0 2 files changed, 25 insertions(+) rename tests/{ => randomized}/test_randomized.R (100%) diff --git a/selectiveInference/src/Rcpp-randomized.cpp b/selectiveInference/src/Rcpp-randomized.cpp index 7887f32..23f0797 100644 --- a/selectiveInference/src/Rcpp-randomized.cpp +++ b/selectiveInference/src/Rcpp-randomized.cpp @@ -38,3 +38,28 @@ Rcpp::NumericVector log_density_gaussian_(double noise_scale, return(result); } + +// [[Rcpp::export]] +Rcpp::NumericVector log_density_gaussian_conditional_(double noise_scale, // Scale of randomization + Rcpp::NumericMatrix optimization_linear, // A_O -- linear part for optimization variables + Rcpp::NumericMatrix optimization_state, // O -- optimization state -- matrix of shape (ninternal, npts) + Rcpp::NumericMatrix offset) { // h -- offset in affine transform -- "p" dimensional + + int npt = optimization_state.ncol(); // Function is vectorized + int ndim = optimization_linear.nrow(); + int noptimization = optimization_linear.ncol(); + + Rcpp::NumericVector result(npt); + + int ipt; + for (ipt=0; ipt Date: Sat, 28 Oct 2017 11:49:40 -0700 Subject: [PATCH 340/493] forming internal affine transform --- selectiveInference/R/funs.randomized.R | 58 +++++++++++++++++++------- tests/randomized/test_randomized.R | 5 ++- 2 files changed, 46 insertions(+), 17 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 1da73b2..3b10423 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -71,33 +71,61 @@ randomizedLASSO = function(X, sign_soln = sign(result$soln) unpenalized = lam == 0 - active = !unpenalized * (sign_soln != 0) - inactive = !unpenzlied * (sign_soln == 0) + active = (!unpenalized) & (sign_soln != 0) + inactive = (!unpenalized) & (sign_soln == 0) unpenalized_set = which(unpenalized) active_set = which(active) inactive_set = which(inactive) - coef_term = t(X) %*% X[,c(unpenalized_set, # the coefficients - active_set)] + # affine transform for optimization variables + + E = c(unpenalized_set, active_set) + I = inactive_set + X_E = X[,E] + X_I = X[,I] + L_E = t(X) %*% X[,E] + + coef_term = L_E coef_term = coef_term %*% diag(c(rep(1, sum(unpenalized)), sign_soln[active])) # coefficients are non-negative coef_term[active,] = coef_term[active,] + ridge_term * diag(rep(1, sum(active))) # ridge term - subgrad_term = cbind(matrix(0, sum(inactive), sum(active) + sum(unpenalized)), - diag(rep(1, sum(inactive)))) - linear_term = rbind(coef_term, + subgrad_term = matrix(0, p, sum(inactive)) # for subgrad + for (i in 1:sum(inactive)) { + subgrad_term[inactive_set[i], i] = 1 + } + + linear_term = cbind(coef_term, subgrad_term) offset_term = rep(0, p) offset_term[active] = lam[active] * sign_soln[active] - + opt_transform = list(linear_term=linear_term, + offset_term=offset_term) + + # affine transform for internal (data) variables + # for now just use parametric in terms of + # (\bar{\beta}_E, X_{-E}^T(y-X_E\bar{\beta}_E) + # + # we have to reconstruct -X^TY from this pair + # + + active_term = -L_E # for \bar{\beta}_E + + inactive_term = -subgrad_term + linear_term = cbind(active_term, + inactive_term) + offset_term = rep(0, p) + internal_transform = list(linear_term = linear_term, + offset_term = offset_term) + + return(list(active_set = active_set, + inactive_set = inactive_set, + unpenalized_set = unpenalized_set, + sign_soln = sign_soln, + opt_transform = opt_transform, + internal_transform = internal_transform + )) - list(active_set = active_set, - inactive_set = inactive_set, - unpenalized_set = unpenalized_set, - sign_soln = sign_soln) - - - return(result) } diff --git a/tests/randomized/test_randomized.R b/tests/randomized/test_randomized.R index e4e35a1..305139b 100644 --- a/tests/randomized/test_randomized.R +++ b/tests/randomized/test_randomized.R @@ -8,7 +8,8 @@ test = function() { lam = 20 / sqrt(n) noise_scale = 0.01 * sqrt(n) ridge_term = .1 / sqrt(n) - fit_randomized_lasso(X, y, lam, noise_scale, ridge_term) + selectiveInference:::randomizedLASSO(X, y, lam, noise_scale, ridge_term) } -print(test()) +A=test() +#print(test()) From c175a8b192b56a1ea1ad9fabe688461f459f770f Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Sat, 28 Oct 2017 12:03:00 -0700 Subject: [PATCH 341/493] vectorized densities evaluate OK -- need to check results --- selectiveInference/R/funs.randomized.R | 2 +- selectiveInference/src/Rcpp-randomized.cpp | 4 ++-- tests/randomized/test_randomized.R | 27 +++++++++++++++++++--- 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 3b10423..92b871e 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -124,7 +124,7 @@ randomizedLASSO = function(X, inactive_set = inactive_set, unpenalized_set = unpenalized_set, sign_soln = sign_soln, - opt_transform = opt_transform, + optimization_transform = opt_transform, internal_transform = internal_transform )) diff --git a/selectiveInference/src/Rcpp-randomized.cpp b/selectiveInference/src/Rcpp-randomized.cpp index 23f0797..d6e8517 100644 --- a/selectiveInference/src/Rcpp-randomized.cpp +++ b/selectiveInference/src/Rcpp-randomized.cpp @@ -7,7 +7,7 @@ Rcpp::NumericVector log_density_gaussian_(double noise_scale, Rcpp::NumericMatrix internal_state, // D -- data state -- matrix of shape (nopt, npts) Rcpp::NumericMatrix optimization_linear, // A_O -- linear part for optimization variables Rcpp::NumericMatrix optimization_state, // O -- optimization state -- matrix of shape (ninternal, npts) - Rcpp::NumericMatrix offset) { // h -- offset in affine transform -- "p" dimensional + Rcpp::NumericVector offset) { // h -- offset in affine transform -- "p" dimensional int npt = internal_state.ncol(); // Function is vectorized if (optimization_state.ncol() != npt) { // Assuming each column is an internal or opt state because arrays are column major @@ -43,7 +43,7 @@ Rcpp::NumericVector log_density_gaussian_(double noise_scale, Rcpp::NumericVector log_density_gaussian_conditional_(double noise_scale, // Scale of randomization Rcpp::NumericMatrix optimization_linear, // A_O -- linear part for optimization variables Rcpp::NumericMatrix optimization_state, // O -- optimization state -- matrix of shape (ninternal, npts) - Rcpp::NumericMatrix offset) { // h -- offset in affine transform -- "p" dimensional + Rcpp::NumericVector offset) { // h -- offset in affine transform -- "p" dimensional int npt = optimization_state.ncol(); // Function is vectorized int ndim = optimization_linear.nrow(); diff --git a/tests/randomized/test_randomized.R b/tests/randomized/test_randomized.R index 305139b..87a3043 100644 --- a/tests/randomized/test_randomized.R +++ b/tests/randomized/test_randomized.R @@ -1,6 +1,6 @@ library(selectiveInference) -test = function() { +smoke_test = function() { n = 100; p = 50 X = matrix(rnorm(n * p), n, p) @@ -10,6 +10,27 @@ test = function() { ridge_term = .1 / sqrt(n) selectiveInference:::randomizedLASSO(X, y, lam, noise_scale, ridge_term) } +A = smoke_test() -A=test() -#print(test()) +density_test = function() { + + random_lasso = smoke_test() + p = nrow(random_lasso$internal_transform$linear_term) + internal_state = matrix(rnorm(p * 20), p, 20) + optimization_state = matrix(rnorm(p * 20), p, 20) + offset = rnorm(p) + + selectiveInference:::log_density_gaussian_(10., + random_lasso$internal_transform$linear_term, + internal_state, + random_lasso$optimization_transform$linear_term, + optimization_state, + offset) + + selectiveInference:::log_density_gaussian_conditional_(10., + random_lasso$optimization_transform$linear_term, + optimization_state, + offset) +} + +density_test() From c940537211e217b3dbeaa103699475e0ed67e7f1 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Sat, 28 Oct 2017 12:16:27 -0700 Subject: [PATCH 342/493] added laplace densities --- selectiveInference/src/Rcpp-randomized.cpp | 63 ++++++++++++++ tests/randomized/test_randomized.R | 95 +++++++++++++++++++--- 2 files changed, 145 insertions(+), 13 deletions(-) diff --git a/selectiveInference/src/Rcpp-randomized.cpp b/selectiveInference/src/Rcpp-randomized.cpp index d6e8517..b2b2cd2 100644 --- a/selectiveInference/src/Rcpp-randomized.cpp +++ b/selectiveInference/src/Rcpp-randomized.cpp @@ -63,3 +63,66 @@ Rcpp::NumericVector log_density_gaussian_conditional_(double noise_scale, return(result); } + +// [[Rcpp::export]] +Rcpp::NumericVector log_density_laplace_(double noise_scale, // Scale of randomization + Rcpp::NumericMatrix internal_linear, // A_D -- linear part for data + Rcpp::NumericMatrix internal_state, // D -- data state -- matrix of shape (nopt, npts) + Rcpp::NumericMatrix optimization_linear, // A_O -- linear part for optimization variables + Rcpp::NumericMatrix optimization_state, // O -- optimization state -- matrix of shape (ninternal, npts) + Rcpp::NumericVector offset) { // h -- offset in affine transform -- "p" dimensional + + int npt = internal_state.ncol(); // Function is vectorized + if (optimization_state.ncol() != npt) { // Assuming each column is an internal or opt state because arrays are column major + Rcpp::stop("Number of optimization samples should equal the number of (internally represented) data."); + } + + int ndim = optimization_linear.nrow(); + if (internal_linear.nrow() != ndim) { + Rcpp::stop("Dimension of optimization range should be the same as the dimension of the data range."); + } + int ninternal = internal_linear.ncol(); + int noptimization = optimization_linear.ncol(); + + Rcpp::NumericVector result(npt); + + int ipt; + for (ipt=0; ipt Date: Mon, 30 Oct 2017 22:05:21 -0700 Subject: [PATCH 343/493] BF: variable rename --- selectiveInference/R/funs.fixedCox.R | 2 +- selectiveInference/R/funs.fixedLogit.R | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/selectiveInference/R/funs.fixedCox.R b/selectiveInference/R/funs.fixedCox.R index 9f35c95..5cbe330 100644 --- a/selectiveInference/R/funs.fixedCox.R +++ b/selectiveInference/R/funs.fixedCox.R @@ -73,7 +73,7 @@ b1= -(mydiag(sign_bhat)%*%MM)%*%sign_bhat*lambda vup[jj]=junk$vup sd[jj]=junk$sd - junk2=TG.interval(bbar, A1, b1, vj, MM, alpha, flip=(s2[jj]==-1)) + junk2=TG.interval(bbar, A1, b1, vj, MM, alpha, flip=(sign_bhat[jj]==-1)) ci[jj,]=junk2$int tailarea[jj,] = junk2$tailarea diff --git a/selectiveInference/R/funs.fixedLogit.R b/selectiveInference/R/funs.fixedLogit.R index 75a31e0..60b6451 100644 --- a/selectiveInference/R/funs.fixedLogit.R +++ b/selectiveInference/R/funs.fixedLogit.R @@ -96,7 +96,7 @@ fixedLogitLassoInf=function(x,y,beta,lambda,alpha=.1, type=c("partial"), tol.bet vup[jj]=junk$vup sd[jj]=junk$sd - junk2=TG.interval(bbar, A1, b1, vj, MM,alpha=alpha, flip=(s2[jj+1]==-1)) + junk2=TG.interval(bbar, A1, b1, vj, MM,alpha=alpha, flip=(sign_bhat[jj+1]==-1)) ci[jj,]=junk2$int tailarea[jj,] = junk2$tailarea From 2917d6eb71f156c7c50e8cc1d05204ef4a7ee74e Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Mon, 30 Oct 2017 22:22:47 -0700 Subject: [PATCH 344/493] BF: forgot to cd up directory --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index c324f88..18769f7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -15,6 +15,7 @@ before_install: - cd C-software - git submodule init - git submodule update + - cd .. - make src - make Rcpp - cd selectiveInference From 63e60df3b3a886fd3337707a6f09a4c1c52237be Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Mon, 30 Oct 2017 22:50:04 -0700 Subject: [PATCH 345/493] changing order of stop arguments --- selectiveInference/R/funs.fixed.R | 4 ++-- selectiveInference/src/Rcpp-debias.cpp | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 13d8b5e..5df84d3 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -453,8 +453,8 @@ debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n dep objective_tol, parameter_tol, max_active, - objective_stop, kkt_stop, + objective_stop, parameter_stop) } else { result = solve_QP_wide(Xinfo, # this is a design matrix @@ -471,8 +471,8 @@ debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n dep objective_tol, parameter_tol, max_active, - objective_stop, kkt_stop, + objective_stop, parameter_stop) } diff --git a/selectiveInference/src/Rcpp-debias.cpp b/selectiveInference/src/Rcpp-debias.cpp index 5c18184..112a6a8 100644 --- a/selectiveInference/src/Rcpp-debias.cpp +++ b/selectiveInference/src/Rcpp-debias.cpp @@ -17,8 +17,8 @@ Rcpp::List solve_QP(Rcpp::NumericMatrix Sigma, double objective_tol, double parameter_tol, int max_active, - int objective_stop, int kkt_stop, + int objective_stop, int param_stop ) { @@ -55,8 +55,8 @@ Rcpp::List solve_QP(Rcpp::NumericMatrix Sigma, objective_tol, parameter_tol, max_active, - objective_stop, kkt_stop, + objective_stop, param_stop); // Check whether feasible @@ -96,8 +96,8 @@ Rcpp::List solve_QP_wide(Rcpp::NumericMatrix X, double objective_tol, double parameter_tol, int max_active, - int objective_stop, int kkt_stop, + int objective_stop, int param_stop ) { @@ -148,8 +148,8 @@ Rcpp::List solve_QP_wide(Rcpp::NumericMatrix X, objective_tol, parameter_tol, max_active, - objective_stop, kkt_stop, + objective_stop, param_stop); // Check whether feasible From f7744835149e57c4656740794e32e8c6670e28fe Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Tue, 31 Oct 2017 20:46:13 -0700 Subject: [PATCH 346/493] unused import --- selectiveInference/NAMESPACE | 1 - 1 file changed, 1 deletion(-) diff --git a/selectiveInference/NAMESPACE b/selectiveInference/NAMESPACE index 7a56d45..0de5d3b 100644 --- a/selectiveInference/NAMESPACE +++ b/selectiveInference/NAMESPACE @@ -45,4 +45,3 @@ importFrom("stats", "coef", "df", "lm", "pf") importFrom("stats", "glm", "residuals", "vcov") importFrom("stats", "rbinom", "rexp") importFrom("Rcpp", "sourceCpp") -importFrom("distr", "Norm", "DExp") From da1b9b559f04a2a1f700f8209662a5dec8443587 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Tue, 31 Oct 2017 20:46:50 -0700 Subject: [PATCH 347/493] column major ordering in C library --- C-software | 2 +- selectiveInference/R/funs.fixed.R | 21 --- selectiveInference/src/Rcpp-debias.cpp | 6 +- selectiveInference/src/randomized_lasso.c | 188 ---------------------- selectiveInference/src/randomized_lasso.h | 42 ----- 5 files changed, 6 insertions(+), 253 deletions(-) delete mode 100644 selectiveInference/src/randomized_lasso.c delete mode 100644 selectiveInference/src/randomized_lasso.h diff --git a/C-software b/C-software index a3d9a17..963ef1f 160000 --- a/C-software +++ b/C-software @@ -1 +1 @@ -Subproject commit a3d9a1723ce94cb430b5dfd3e058fd708a6bae7f +Subproject commit 963ef1fd4fa3b9599a0d24c6cc4882dff2204725 diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index c679922..5df84d3 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -405,11 +405,7 @@ debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n dep objective_stop=TRUE, # stop based on relative decrease in objective? kkt_tol=1.e-4, # tolerance for the KKT conditions parameter_tol=1.e-4, # tolerance for relative convergence of parameter -<<<<<<< HEAD - objective_tol=1.e-8 # tolerance for relative decrease in objective -======= objective_tol=1.e-4 # tolerance for relative decrease in objective ->>>>>>> 232760d6aef5182e040b82e30555f4af5ad6803c ) { p = ncol(Xinfo) @@ -457,16 +453,6 @@ debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n dep objective_tol, parameter_tol, max_active, -<<<<<<< HEAD - FALSE, # objective_stop - FALSE, # kkt_stop - TRUE) # param_stop - } else { - Xsoln = rep(0, nrow(Xinfo)) - result = solve_QP_wide(Xinfo, # this is a design matrix - rep(mu, p), # vector of Lagrange multipliers - 0, # ridge_term -======= kkt_stop, objective_stop, parameter_stop) @@ -474,7 +460,6 @@ debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n dep result = solve_QP_wide(Xinfo, # this is a design matrix as.numeric(rep(bound, p)), # vector of Lagrange multipliers 0, # ridge_term ->>>>>>> 232760d6aef5182e040b82e30555f4af5ad6803c max_iter, soln, linear_func, @@ -486,15 +471,9 @@ debiasingRow = function (Xinfo, # could be X or t(X) %*% X / n dep objective_tol, parameter_tol, max_active, -<<<<<<< HEAD - FALSE, # objective_stop - FALSE, # kkt_stop - TRUE) # param_stop -======= kkt_stop, objective_stop, parameter_stop) ->>>>>>> 232760d6aef5182e040b82e30555f4af5ad6803c } diff --git a/selectiveInference/src/Rcpp-debias.cpp b/selectiveInference/src/Rcpp-debias.cpp index 112a6a8..75ff1af 100644 --- a/selectiveInference/src/Rcpp-debias.cpp +++ b/selectiveInference/src/Rcpp-debias.cpp @@ -101,6 +101,7 @@ Rcpp::List solve_QP_wide(Rcpp::NumericMatrix X, int param_stop ) { + int column_major = 1; // R has matrices in column major order int ncase = X.nrow(); // number of cases int nfeature = X.ncol(); // number of features @@ -139,6 +140,7 @@ Rcpp::List solve_QP_wide(Rcpp::NumericMatrix X, (int *) nactive.begin(), ncase, nfeature, + column_major, (double *) bound.begin(), ridge_term, (double *) theta.begin(), @@ -162,6 +164,7 @@ Rcpp::List solve_QP_wide(Rcpp::NumericMatrix X, (int *) need_update.begin(), nfeature, ncase, + column_major, (double *) bound.begin(), ridge_term, kkt_tol); @@ -176,7 +179,8 @@ Rcpp::List solve_QP_wide(Rcpp::NumericMatrix X, (double *) linear_func.begin(), (int *) need_update.begin(), nfeature, - ncase); + ncase, + column_major); return(Rcpp::List::create(Rcpp::Named("soln") = theta, Rcpp::Named("gradient") = gradient, diff --git a/selectiveInference/src/randomized_lasso.c b/selectiveInference/src/randomized_lasso.c deleted file mode 100644 index 123c81d..0000000 --- a/selectiveInference/src/randomized_lasso.c +++ /dev/null @@ -1,188 +0,0 @@ -#include // for fabs - -// Augmented density for randomized LASSO after -// Gaussian randomization - -// Described in https://arxiv.org/abs/1609.05609 - -// Gaussian is product of IID N(0, noise_scale^2) density -// Evaluated at A_D D + A_O O + h - -// Laplace is product of IID Laplace with scale noise_scale -// Also evaluated at A_D D + A_O O + h - -double log_density_gaussian(double noise_scale, // Scale of randomization - int ndim, // Number of features -- "p" - int ninternal, // Dimension of internal data representation often 1 - int noptimization, // Dimension of optimization variables -- "p" - double *internal_linear, // A_D -- linear part for data - double *internal_state, // D -- data state - double *optimization_linear, // A_O -- linear part for optimization variables - double *optimization_state, // O -- optimization state - double *offset) // h -- offset in affine transform -- "p" dimensional -{ - int irow, icol; - double denom = 2 * noise_scale * noise_scale; - double value = 0; - double reconstruction = 0; - double *offset_ptr; - double *internal_linear_ptr; - double *internal_state_ptr; - double *optimization_linear_ptr; - double *optimization_state_ptr; - - for (irow=0; irow Date: Tue, 31 Oct 2017 20:49:18 -0700 Subject: [PATCH 348/493] tests are in different directory --- tests/test_debiasing.R | 195 ---------------------------------------- tests/test_randomized.R | 14 --- 2 files changed, 209 deletions(-) delete mode 100644 tests/test_debiasing.R delete mode 100644 tests/test_randomized.R diff --git a/tests/test_debiasing.R b/tests/test_debiasing.R deleted file mode 100644 index b1fdf24..0000000 --- a/tests/test_debiasing.R +++ /dev/null @@ -1,195 +0,0 @@ -library(selectiveInference) - - -## Approximates inverse covariance matrix theta -InverseLinfty <- function(sigma, n, resol=1.5, mu=NULL, maxiter=50, threshold=1e-10, verbose = TRUE) { - isgiven <- 1; - if (is.null(mu)){ - isgiven <- 0; - } - - p <- nrow(sigma); - M <- matrix(0, p, p); - xperc = 0; - xp = round(p/10); - for (i in 1:p) { - if ((i %% xp)==0){ - xperc = xperc+10; - if (verbose) { - print(paste(xperc,"% done",sep="")); } - } - if (isgiven==0){ - mu <- (1/sqrt(n)) * qnorm(1-(0.1/(p^2))); - } - mu.stop <- 0; - try.no <- 1; - incr <- 0; - while ((mu.stop != 1)&&(try.no<10)){ - last.beta <- beta - output <- InverseLinftyOneRow(sigma, i, mu, maxiter=maxiter, threshold=threshold) - beta <- output$optsol - iter <- output$iter - if (isgiven==1){ - mu.stop <- 1 - } - else{ - if (try.no==1){ - if (iter == (maxiter+1)){ - incr <- 1; - mu <- mu*resol; - } else { - incr <- 0; - mu <- mu/resol; - } - } - if (try.no > 1){ - if ((incr == 1)&&(iter == (maxiter+1))){ - mu <- mu*resol; - } - if ((incr == 1)&&(iter < (maxiter+1))){ - mu.stop <- 1; - } - if ((incr == 0)&&(iter < (maxiter+1))){ - mu <- mu/resol; - } - if ((incr == 0)&&(iter == (maxiter+1))){ - mu <- mu*resol; - beta <- last.beta; - mu.stop <- 1; - } - } - } - try.no <- try.no+1 - } - M[i,] <- beta; - } - return(M) -} - -InverseLinftyOneRow <- function ( sigma, i, mu, maxiter=50, threshold=1e-10) { - p <- nrow(sigma); - rho <- max(abs(sigma[i,-i])) / sigma[i,i]; - mu0 <- rho/(1+rho); - beta <- rep(0,p); - - #if (mu >= mu0){ - # beta[i] <- (1-mu0)/sigma[i,i]; - # returnlist <- list("optsol" = beta, "iter" = 0); - # return(returnlist); - #} - - diff.norm2 <- 1; - last.norm2 <- 1; - iter <- 1; - iter.old <- 1; - beta[i] <- (1-mu0)/sigma[i,i]; - beta.old <- beta; - sigma.tilde <- sigma; - diag(sigma.tilde) <- 0; - vs <- -sigma.tilde%*%beta; - - while ((iter <= maxiter) && (diff.norm2 >= threshold*last.norm2)){ - - for (j in 1:p){ - oldval <- beta[j]; - v <- vs[j]; - if (j==i) - v <- v+1; - beta[j] <- SoftThreshold(v,mu)/sigma[j,j]; - if (oldval != beta[j]){ - vs <- vs + (oldval-beta[j])*sigma.tilde[,j]; - } - } - - iter <- iter + 1; - if (iter==2*iter.old){ - d <- beta - beta.old; - diff.norm2 <- sqrt(sum(d*d)); - last.norm2 <-sqrt(sum(beta*beta)); - iter.old <- iter; - beta.old <- beta; - #if (iter>10) - # vs <- -sigma.tilde%*%beta; - } - - # print(c(iter, maxiter, diff.norm2, threshold * last.norm2, threshold, mu)) - - } - - returnlist <- list("optsol" = beta, "iter" = iter) - return(returnlist) -} - -SoftThreshold <- function( x, lambda ) { - # - # Standard soft thresholding - # - if (x>lambda){ - return (x-lambda);} - else { - if (x< (-lambda)){ - return (x+lambda);} - else { - return (0); } - } -} - - -### Test - -n = 100; p = 50 - -X = matrix(rnorm(n * p), n, p) -S = t(X) %*% X / n - -mu = 7.791408e-02 - -A1 = debiasingMatrix(S, FALSE, n, 1:5, mu=mu, max_iter=1000) -A2 = debiasingMatrix(S / n, FALSE, n, 1:5, mu=mu, max_iter=1000) - -B1 = debiasingMatrix(X, TRUE, n, 1:5, mu=mu, max_iter=1000) -B2 = debiasingMatrix(X / sqrt(n), TRUE, n, 1:5, mu=mu, max_iter=1000) - -C1 = InverseLinfty(S, n, mu=mu, maxiter=1000)[1:5,] -C2 = InverseLinfty(S / n, n, mu=mu, maxiter=1000)[1:5,] - -par(mfrow=c(2,3)) -plot(A1[1,], C1[1,]) -plot(A1[1,], B1[1,]) -plot(B1[1,], C1[1,]) - -plot(A1[1,], A2[1,]) -plot(B1[1,], B2[1,]) -plot(C1[1,], C2[1,]) - -print(c('A', sum(A1[1,] == 0))) -print(c('B', sum(B1[1,] == 0))) -print(c('C', sum(C1[1,] == 0))) - -## Are our points feasible - -feasibility = function(S, soln, j, mu) { - p = nrow(S) - E = rep(0, p) - E[j] = 1 - G = S %*% soln - E - return(c(max(abs(G)), mu)) -} - -print(c('feasibility A', feasibility(S, A1[1,], 1, mu))) -print(c('feasibility B', feasibility(S, B1[1,], 1, mu))) -print(c('feasibility C', feasibility(S, C1[1,], 1, mu))) - -active_KKT = function(S, soln, j, mu) { - p = nrow(S) - E = rep(0, p) - E[j] = 1 - G = S %*% soln - E - return(c(G[soln != 0] * sign(soln)[soln != 0], mu)) -} - -print(c('active_KKT A', active_KKT(S, A1[1,], 1, mu))) -print(c('active_KKT B', active_KKT(S, B1[1,], 1, mu))) -print(c('active_KKT C', active_KKT(S, C1[1,], 1, mu))) - - diff --git a/tests/test_randomized.R b/tests/test_randomized.R deleted file mode 100644 index e4e35a1..0000000 --- a/tests/test_randomized.R +++ /dev/null @@ -1,14 +0,0 @@ -library(selectiveInference) - -test = function() { - - n = 100; p = 50 - X = matrix(rnorm(n * p), n, p) - y = rnorm(n) - lam = 20 / sqrt(n) - noise_scale = 0.01 * sqrt(n) - ridge_term = .1 / sqrt(n) - fit_randomized_lasso(X, y, lam, noise_scale, ridge_term) -} - -print(test()) From ae9aec856a4d6fdf77847dfa13d7139949dbff57 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 2 Nov 2017 14:53:58 -0700 Subject: [PATCH 349/493] WIP: have sample from optimization density, importance weight -- need to write pivot function --- .travis.yml | 2 +- selectiveInference/DESCRIPTION | 1 + selectiveInference/NAMESPACE | 1 + selectiveInference/R/funs.randomized.R | 97 +++++++++++++++++++++++++- tests/randomized/test_randomized.R | 14 ++++ 5 files changed, 112 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 18769f7..76ab515 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,7 +11,7 @@ addons: warnings_are_errors: true before_install: - tlmgr install index # for texlive and vignette? - - R -e 'install.packages(c("Rcpp", "intervals"), repos="http://cloud.r-project.org")' + - R -e 'install.packages(c("Rcpp", "intervals", "adaptMCMC", "glmnet"), repos="http://cloud.r-project.org")' - cd C-software - git submodule init - git submodule update diff --git a/selectiveInference/DESCRIPTION b/selectiveInference/DESCRIPTION index fad072d..c765663 100644 --- a/selectiveInference/DESCRIPTION +++ b/selectiveInference/DESCRIPTION @@ -10,6 +10,7 @@ Depends: glmnet, intervals, survival, + adaptMCMC, Suggests: Rmpfr Description: New tools for post-selection inference, for use with forward diff --git a/selectiveInference/NAMESPACE b/selectiveInference/NAMESPACE index 0de5d3b..e8f36e0 100644 --- a/selectiveInference/NAMESPACE +++ b/selectiveInference/NAMESPACE @@ -45,3 +45,4 @@ importFrom("stats", "coef", "df", "lm", "pf") importFrom("stats", "glm", "residuals", "vcov") importFrom("stats", "rbinom", "rexp") importFrom("Rcpp", "sourceCpp") +importFrom("adaptMCMC", "MCMC") diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 3ca22b4..07af468 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -67,7 +67,7 @@ randomizedLASSO = function(X, objective_stop, # objective_stop kkt_stop, # kkt_stop param_stop) # param_stop - + sign_soln = sign(result$soln) unpenalized = lam == 0 @@ -78,6 +78,14 @@ randomizedLASSO = function(X, active_set = which(active) inactive_set = which(inactive) + # observed opt state + + observed_scalings = abs(result$soln)[active] + observed_unpen = result$soln[unpenalized] + observed_subgrad = result$gradient[inactive] + + observed_opt_state = c(observed_unpen, observed_scalings, observed_subgrad) + # affine transform for optimization variables E = c(unpenalized_set, active_set) @@ -120,12 +128,97 @@ randomizedLASSO = function(X, internal_transform = list(linear_term = linear_term, offset_term = offset_term) + # density for sampling optimization variables + + observed_raw = -t(X) %*% Y + inactive_lam = lam[inactive_set] + inactive_start = sum(unpenalized) + sum(active) + active_start = sum(unpenalized) + + # XXX only for Gaussian so far + + log_optimization_density = function(opt_state + ) { + + + if ((sum(abs(opt_state[(inactive_start + 1):p]) > inactive_lam) > 0) || + (sum(opt_state[(active_start+1):inactive_start] < 0) > 0)) { + return(-Inf) + } + + D = log_density_gaussian_conditional_(noise_scale, + opt_transform$linear_term, + as.matrix(opt_state), + observed_raw) + return(D) + } + return(list(active_set = active_set, inactive_set = inactive_set, unpenalized_set = unpenalized_set, sign_soln = sign_soln, optimization_transform = opt_transform, - internal_transform = internal_transform + internal_transform = internal_transform, + log_optimization_density = log_optimization_density, + observed_opt_state = observed_opt_state, + observed_raw = observed_raw )) } + +sample_opt_variables = function(randomizedLASSO_obj, jump_scale, nsample=10000) { + return(MCMC(randomizedLASSO_obj$log_optimization_density, + nsample, + randomizedLASSO_obj$observed_opt_state, + acc.rate=0.2, + scale=jump_scale)) +} + +# Carry out a linear decompositon of an internal +# representation with respect to a target + +# Returns an affine transform into raw coordinates (i.e. \omega or randomization coordinates) + +linear_decomposition = function(observed_target, + observed_internal, + var_target, + cov_target_internal, + internal_transform) { + var_target = as.matrix(var_target) + if (nrow(var_target) == 1) { + nuisance = observed_internal - cov_target_internal * observed_target / var_target + target_linear = internal_transform$linear_part %*% cov_target_internal / var_target + } else { + nuisance = observed_internal - cov_target_internal %*% solve(var_target) %*% observed_target + target_linear = internal_transform$linear_part %*% cov_target_internal %*% solve(var_target) + } + target_offset = internal_transform$linear_part %*% nuisance + internal_transform$offset + return(list(linear_term=target_linear, + offset_term=target_offset)) +} + +# XXX only for Gaussian so far + +importance_weight = function(noise_scale, + target_sample, + opt_sample, + opt_transform, + target_transform, + observed_raw) { + + log_num = log_density_gaussian_(noise_scale, + target_transform$linear_term, + as.matrix(target_sample), + optimization_transform$linear_term, + as.matrix(opt_state), + target_transform$offset_term + optimization_transform$offset_term) + + log_den = log_density_gaussian_conditional_(noise_scale, + opt_transform$linear_term, + as.matrix(opt_sample), + observed_raw) + W = log_num - log_den + W = W - max(W) + return(exp(W)) +} + diff --git a/tests/randomized/test_randomized.R b/tests/randomized/test_randomized.R index b9b1750..eef0eaa 100644 --- a/tests/randomized/test_randomized.R +++ b/tests/randomized/test_randomized.R @@ -12,6 +12,20 @@ smoke_test = function() { } A = smoke_test() +sampler_test = function() { + + n = 100; p = 50 + X = matrix(rnorm(n * p), n, p) + y = rnorm(n) + lam = 20 / sqrt(n) + noise_scale = 0.01 * sqrt(n) + ridge_term = .1 / sqrt(n) + obj = selectiveInference:::randomizedLASSO(X, y, lam, noise_scale, ridge_term) + S = selectiveInference:::sample_opt_variables(obj, jump_scale=rep(1/sqrt(n), p), nsample=10000) + return(S$samples[2001:10000,]) +} +B = sampler_test() + gaussian_density_test = function() { noise_scale = 10. From 177ab78e2af2060083b327c8b82854b0c937651d Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 2 Nov 2017 17:13:12 -0700 Subject: [PATCH 350/493] update to C-software, using a compiler define for column major --- C-software | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/C-software b/C-software index 963ef1f..158c64d 160000 --- a/C-software +++ b/C-software @@ -1 +1 @@ -Subproject commit 963ef1fd4fa3b9599a0d24c6cc4882dff2204725 +Subproject commit 158c64d8d81fbcf434869c0c68f5bb7a4a9cdf5a From 1d60dfaf95a8263c6ec25e41d54b693a51eb6043 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 2 Nov 2017 17:13:30 -0700 Subject: [PATCH 351/493] update to C-software, using a compiler define for column major --- selectiveInference/src/Makevars | 4 ++-- selectiveInference/src/Rcpp-debias.cpp | 6 +----- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/selectiveInference/src/Makevars b/selectiveInference/src/Makevars index 2adf9a6..22c4c7d 100644 --- a/selectiveInference/src/Makevars +++ b/selectiveInference/src/Makevars @@ -1,5 +1,5 @@ -PKG_CFLAGS= -I. -PKG_CPPFLAGS= -I. +PKG_CFLAGS= -I. -DCOLUMN_MAJOR_ORDER +PKG_CPPFLAGS= -I. -DCOLUMN_MAJOR_ORDER PKG_LIBS=-L. $(SHLIB): Rcpp Rcpp-matrixcomps.o Rcpp-debias.o RcppExports.o quadratic_program.o quadratic_program_wide.o diff --git a/selectiveInference/src/Rcpp-debias.cpp b/selectiveInference/src/Rcpp-debias.cpp index 75ff1af..112a6a8 100644 --- a/selectiveInference/src/Rcpp-debias.cpp +++ b/selectiveInference/src/Rcpp-debias.cpp @@ -101,7 +101,6 @@ Rcpp::List solve_QP_wide(Rcpp::NumericMatrix X, int param_stop ) { - int column_major = 1; // R has matrices in column major order int ncase = X.nrow(); // number of cases int nfeature = X.ncol(); // number of features @@ -140,7 +139,6 @@ Rcpp::List solve_QP_wide(Rcpp::NumericMatrix X, (int *) nactive.begin(), ncase, nfeature, - column_major, (double *) bound.begin(), ridge_term, (double *) theta.begin(), @@ -164,7 +162,6 @@ Rcpp::List solve_QP_wide(Rcpp::NumericMatrix X, (int *) need_update.begin(), nfeature, ncase, - column_major, (double *) bound.begin(), ridge_term, kkt_tol); @@ -179,8 +176,7 @@ Rcpp::List solve_QP_wide(Rcpp::NumericMatrix X, (double *) linear_func.begin(), (int *) need_update.begin(), nfeature, - ncase, - column_major); + ncase); return(Rcpp::List::create(Rcpp::Named("soln") = theta, Rcpp::Named("gradient") = gradient, From 3ce4ea2044095a34be9203de7ed9c2cd43964dee Mon Sep 17 00:00:00 2001 From: Jelena Markovic Date: Sun, 5 Nov 2017 14:59:24 -0800 Subject: [PATCH 352/493] pivots running but weights all zero --- selectiveInference/R/RcppExports.R | 35 +++++++ selectiveInference/R/funs.randomized.R | 14 +-- tests/randomized/test_instances.R | 121 +++++++++++++++++++++++++ tests/randomized/test_randomized.R | 1 + 4 files changed, 164 insertions(+), 7 deletions(-) create mode 100644 selectiveInference/R/RcppExports.R create mode 100644 tests/randomized/test_instances.R diff --git a/selectiveInference/R/RcppExports.R b/selectiveInference/R/RcppExports.R new file mode 100644 index 0000000..e927a3a --- /dev/null +++ b/selectiveInference/R/RcppExports.R @@ -0,0 +1,35 @@ +# Generated by using Rcpp::compileAttributes() -> do not edit by hand +# Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 + +solve_QP <- function(Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, parameter_tol, max_active, kkt_stop, objective_stop, param_stop) { + .Call('selectiveInference_solve_QP', PACKAGE = 'selectiveInference', Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, parameter_tol, max_active, kkt_stop, objective_stop, param_stop) +} + +solve_QP_wide <- function(X, bound, ridge_term, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, parameter_tol, max_active, kkt_stop, objective_stop, param_stop) { + .Call('selectiveInference_solve_QP_wide', PACKAGE = 'selectiveInference', X, bound, ridge_term, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, parameter_tol, max_active, kkt_stop, objective_stop, param_stop) +} + +update1_ <- function(Q2, w, m, k) { + .Call('selectiveInference_update1_', PACKAGE = 'selectiveInference', Q2, w, m, k) +} + +downdate1_ <- function(Q1, R, j0, m, n) { + .Call('selectiveInference_downdate1_', PACKAGE = 'selectiveInference', Q1, R, j0, m, n) +} + +log_density_gaussian_ <- function(noise_scale, internal_linear, internal_state, optimization_linear, optimization_state, offset) { + .Call('selectiveInference_log_density_gaussian_', PACKAGE = 'selectiveInference', noise_scale, internal_linear, internal_state, optimization_linear, optimization_state, offset) +} + +log_density_gaussian_conditional_ <- function(noise_scale, optimization_linear, optimization_state, offset) { + .Call('selectiveInference_log_density_gaussian_conditional_', PACKAGE = 'selectiveInference', noise_scale, optimization_linear, optimization_state, offset) +} + +log_density_laplace_ <- function(noise_scale, internal_linear, internal_state, optimization_linear, optimization_state, offset) { + .Call('selectiveInference_log_density_laplace_', PACKAGE = 'selectiveInference', noise_scale, internal_linear, internal_state, optimization_linear, optimization_state, offset) +} + +log_density_laplace_conditional_ <- function(noise_scale, optimization_linear, optimization_state, offset) { + .Call('selectiveInference_log_density_laplace_conditional_', PACKAGE = 'selectiveInference', noise_scale, optimization_linear, optimization_state, offset) +} + diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 07af468..bf5f89d 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -130,7 +130,7 @@ randomizedLASSO = function(X, # density for sampling optimization variables - observed_raw = -t(X) %*% Y + observed_raw = -t(X) %*% y inactive_lam = lam[inactive_set] inactive_start = sum(unpenalized) + sum(active) active_start = sum(unpenalized) @@ -187,12 +187,12 @@ linear_decomposition = function(observed_target, var_target = as.matrix(var_target) if (nrow(var_target) == 1) { nuisance = observed_internal - cov_target_internal * observed_target / var_target - target_linear = internal_transform$linear_part %*% cov_target_internal / var_target + target_linear = internal_transform$linear_term %*% cov_target_internal / var_target[1,1] } else { nuisance = observed_internal - cov_target_internal %*% solve(var_target) %*% observed_target - target_linear = internal_transform$linear_part %*% cov_target_internal %*% solve(var_target) + target_linear = internal_transform$linear_term %*% cov_target_internal %*% solve(var_target) } - target_offset = internal_transform$linear_part %*% nuisance + internal_transform$offset + target_offset = internal_transform$linear_term %*% nuisance + internal_transform$offset_term return(list(linear_term=target_linear, offset_term=target_offset)) } @@ -209,9 +209,9 @@ importance_weight = function(noise_scale, log_num = log_density_gaussian_(noise_scale, target_transform$linear_term, as.matrix(target_sample), - optimization_transform$linear_term, - as.matrix(opt_state), - target_transform$offset_term + optimization_transform$offset_term) + opt_transform$linear_term, + as.matrix(opt_sample), + target_transform$offset_term + opt_transform$offset_term) log_den = log_density_gaussian_conditional_(noise_scale, opt_transform$linear_term, diff --git a/tests/randomized/test_instances.R b/tests/randomized/test_instances.R new file mode 100644 index 0000000..3119e0a --- /dev/null +++ b/tests/randomized/test_instances.R @@ -0,0 +1,121 @@ +#library(devtools) +#devtools::install_github('jonathan-taylor/R-selective/selectiveInference') +library(selectiveInference, lib.loc='/Users/Jelena/anaconda/lib/R/library') + + +gaussian_instance = function(n, p, s, sigma=1, rho=0, signal=6, X=NA, + random_signs=TRUE, scale=TRUE, center=TRUE, seed=NA){ + if (!is.na(seed)){ + set.seed(seed) + } + + if (is.na(X)){ + X = sqrt(1-rho)*matrix(rnorm(n*p),n) + sqrt(rho)*matrix(rep(rnorm(n), p), nrow = n) + X = scale(X)/sqrt(n) + } + beta = rep(0, p) + if (s>0){ + beta[1:s] = seq(3, 6, length.out=s) + } + beta = sample(beta) + if (random_signs==TRUE & s>0){ + signs = sample(c(-1,1), s, replace = TRUE) + beta = beta * signs + } + y = X %*% beta + rnorm(n)*sigma + result = list(X=X,y=y,beta=beta) + return(result) +} + + +run_instance = function(n, p, s){ + rho=0.3 + lam=1.3 + sigma=1 + data = gaussian_instance(n=n,p=p,s=s, rho=rho, sigma=sigma) + X=data$X + print(dim(X)) + y=data$y + ridge_term=sd(y)/sqrt(n) + noise_scale = sd(y)/2 + lasso_soln=selectiveInference:::randomizedLASSO(X, y, lam, noise_scale, ridge_term) + + active_set = lasso_soln$active_set + inactive_set = lasso_soln$inactive_set + observed_raw = lasso_soln$observed_raw + opt_linear = lasso_soln$optimization_transform$linear_term + opt_offset = lasso_soln$optimization_transform$offset_term + observed_opt_state = lasso_soln$observed_opt_state + + nactive = length(active_set) + print(paste("nactive",nactive)) + B = opt_linear[,1:nactive] + beta_offset = observed_raw+opt_offset + if (nactive 0) { + return(-Inf) + } + D = selectiveInference:::log_density_gaussian_conditional_(noise_scale, + reduced_B, + as.matrix(observed_opt_state[1:nactive]), + reduced_beta_offset) + return(D) + } + lasso_soln$log_optimization_density = log_condl_optimization_density + lasso_soln$observed_opt_state = observed_opt_state[1:nactive] + S = selectiveInference:::sample_opt_variables(lasso_soln, jump_scale=rep(1/sqrt(n), nactive), nsample=10000) + beta_samples = S$samples[2001:10000,] + print(paste("dim beta samples", dim(beta_samples))) + + X_E=X[, active_set] + X_minusE=X[, inactive_set] + target_cov = solve(t(X_E)%*%X_E)*sigma^2 + cov_target_internal = rbind(target_cov, matrix(0, nrow=p-nactive, ncol=nactive)) * sigma^2 + observed_target = solve(t(X_E) %*% X_E) %*% t(X_E) %*% y + observed_internal = c(observed_target, t(X_minusE) %*% (y-X_E%*% observed_target)) + internal_transform = lasso_soln$internal_transform + + pivots = rep(0, nactive) + for (i in 1:nactive){ + target_transform = selectiveInference:::linear_decomposition(observed_target[i], + observed_internal, + target_cov[i,i], + cov_target_internal[,i], + internal_transform) + target_sample = rnorm(nrow(beta_samples)) * sqrt(target_cov[i,i]) + + weights = selectiveInference:::importance_weight(noise_scale, + t(as.matrix(target_sample)), + t(beta_samples), + opt_transform, + target_transform, + observed_raw) + + pivots[i] = mean((target_sample Date: Sun, 5 Nov 2017 15:46:10 -0800 Subject: [PATCH 353/493] reorg --- tests/randomized/test_instances.R | 94 ++++++++++++++++++++----------- 1 file changed, 61 insertions(+), 33 deletions(-) diff --git a/tests/randomized/test_instances.R b/tests/randomized/test_instances.R index 3119e0a..1c125f2 100644 --- a/tests/randomized/test_instances.R +++ b/tests/randomized/test_instances.R @@ -27,18 +27,7 @@ gaussian_instance = function(n, p, s, sigma=1, rho=0, signal=6, X=NA, return(result) } - -run_instance = function(n, p, s){ - rho=0.3 - lam=1.3 - sigma=1 - data = gaussian_instance(n=n,p=p,s=s, rho=rho, sigma=sigma) - X=data$X - print(dim(X)) - y=data$y - ridge_term=sd(y)/sqrt(n) - noise_scale = sd(y)/2 - lasso_soln=selectiveInference:::randomizedLASSO(X, y, lam, noise_scale, ridge_term) +conditional_density = function(noise_scale, lasso_soln){ active_set = lasso_soln$active_set inactive_set = lasso_soln$inactive_set @@ -48,9 +37,9 @@ run_instance = function(n, p, s){ observed_opt_state = lasso_soln$observed_opt_state nactive = length(active_set) - print(paste("nactive",nactive)) B = opt_linear[,1:nactive] beta_offset = observed_raw+opt_offset + p=length(observed_opt_state) if (nactive 0) { - return(-Inf) - } - D = selectiveInference:::log_density_gaussian_conditional_(noise_scale, - reduced_B, - as.matrix(observed_opt_state[1:nactive]), - reduced_beta_offset) - return(D) + + if (sum(opt_state < 0) > 0) { + return(-Inf) } + D = selectiveInference:::log_density_gaussian_conditional_(noise_scale, + reduced_B, + as.matrix(observed_opt_state[1:nactive]), + reduced_beta_offset) + return(D) + } lasso_soln$log_optimization_density = log_condl_optimization_density lasso_soln$observed_opt_state = observed_opt_state[1:nactive] + lasso_soln$optimization_transform = opt_transform + return(lasso_soln) +} + + + +run_instance = function(n, p, s){ + rho=0.3 + lam=1. + sigma=1 + data = gaussian_instance(n=n,p=p,s=s, rho=rho, sigma=sigma) + X=data$X + print(dim(X)) + y=data$y + ridge_term=sd(y)/sqrt(n) + noise_scale = sd(y)/2 + lasso_soln=selectiveInference:::randomizedLASSO(X, y, lam, noise_scale, ridge_term) + active_set = lasso_soln$active_set + inactive_set = lasso_soln$inactive_set + nactive = length(active_set) + print(paste("nactive", nactive)) + + lasso_soln = conditional_density(noise_scale, lasso_soln) + S = selectiveInference:::sample_opt_variables(lasso_soln, jump_scale=rep(1/sqrt(n), nactive), nsample=10000) - beta_samples = S$samples[2001:10000,] - print(paste("dim beta samples", dim(beta_samples))) + opt_samples = S$samples[2001:10000,] + print(paste("dim opt samples", toString(dim(opt_samples)))) + + observed_raw = lasso_soln$observed_raw + opt_linear = lasso_soln$optimization_transform$linear_term + opt_offset = lasso_soln$optimization_transform$offset_term + observed_opt_state = lasso_soln$observed_opt_state + opt_transform = lasso_soln$optimization_transform X_E=X[, active_set] X_minusE=X[, inactive_set] target_cov = solve(t(X_E)%*%X_E)*sigma^2 - cov_target_internal = rbind(target_cov, matrix(0, nrow=p-nactive, ncol=nactive)) * sigma^2 + cov_target_internal = rbind(target_cov, matrix(0, nrow=p-nactive, ncol=nactive)) observed_target = solve(t(X_E) %*% X_E) %*% t(X_E) %*% y observed_internal = c(observed_target, t(X_minusE) %*% (y-X_E%*% observed_target)) internal_transform = lasso_soln$internal_transform @@ -91,16 +110,20 @@ run_instance = function(n, p, s){ target_cov[i,i], cov_target_internal[,i], internal_transform) - target_sample = rnorm(nrow(beta_samples)) * sqrt(target_cov[i,i]) - weights = selectiveInference:::importance_weight(noise_scale, - t(as.matrix(target_sample)), - t(beta_samples), + target_sample = rnorm(nrow(opt_samples)) * sqrt(target_cov[i,i]) + + pivot = function(candidate){ + weights = selectiveInference:::importance_weight(noise_scale, + t(as.matrix(target_sample))+candidate, + t(opt_samples), opt_transform, target_transform, observed_raw) - - pivots[i] = mean((target_sample Date: Sun, 5 Nov 2017 18:17:50 -0800 Subject: [PATCH 354/493] segfault error --- tests/randomized/test_instances.R | 46 ++++++++++++++++--------------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/tests/randomized/test_instances.R b/tests/randomized/test_instances.R index 1c125f2..55807fd 100644 --- a/tests/randomized/test_instances.R +++ b/tests/randomized/test_instances.R @@ -66,28 +66,16 @@ conditional_density = function(noise_scale, lasso_soln){ } - -run_instance = function(n, p, s){ - rho=0.3 - lam=1. - sigma=1 - data = gaussian_instance(n=n,p=p,s=s, rho=rho, sigma=sigma) - X=data$X - print(dim(X)) - y=data$y - ridge_term=sd(y)/sqrt(n) - noise_scale = sd(y)/2 +run_instance = function(X,y,sigma, lam, noise_scale, ridge_term){ + n=nrow(X) + p=ncol(X) lasso_soln=selectiveInference:::randomizedLASSO(X, y, lam, noise_scale, ridge_term) active_set = lasso_soln$active_set inactive_set = lasso_soln$inactive_set nactive = length(active_set) print(paste("nactive", nactive)) - lasso_soln = conditional_density(noise_scale, lasso_soln) - - S = selectiveInference:::sample_opt_variables(lasso_soln, jump_scale=rep(1/sqrt(n), nactive), nsample=10000) - opt_samples = S$samples[2001:10000,] - print(paste("dim opt samples", toString(dim(opt_samples)))) + #lasso_soln = conditional_density(noise_scale, lasso_soln) observed_raw = lasso_soln$observed_raw opt_linear = lasso_soln$optimization_transform$linear_term @@ -95,6 +83,11 @@ run_instance = function(n, p, s){ observed_opt_state = lasso_soln$observed_opt_state opt_transform = lasso_soln$optimization_transform + dim=length(observed_opt_state) + S = selectiveInference:::sample_opt_variables(lasso_soln, jump_scale=rep(1/sqrt(n), dim), nsample=10000) + opt_samples = S$samples[2001:10000,] + print(paste("dim opt samples", toString(dim(opt_samples)))) + X_E=X[, active_set] X_minusE=X[, inactive_set] target_cov = solve(t(X_E)%*%X_E)*sigma^2 @@ -124,26 +117,35 @@ run_instance = function(n, p, s){ } pivots[i] = pivot(0) - print(pivots[i]) } - + print(paste("pivots", toString(pivots))) return(pivots) } -collect_instances = function(n,p,s, nsim=1){ +collect_results = function(n,p,s, nsim=2){ + rho=0.3 + lam=1. + sigma=1 sample_pivots = NULL for (i in 1:nsim){ - result = run_instance(n,p,s) + data = gaussian_instance(n=n,p=p,s=s, rho=rho, sigma=sigma) + X=data$X + print(dim(X)) + y=data$y + ridge_term=sd(y)/sqrt(n) + noise_scale = sd(y)/2 + result = run_instance(X,y,sigma, lam, noise_scale, ridge_term) sample_pivots = c(sample_pivots, result) } + jpeg('pivots.jpg') plot(ecdf(sample_pivots), xlim=c(0,1), main="Empirical CDF of null p-values", xlab="p-values", ylab="ecdf") abline(0, 1, lty=2) dev.off() } - -collect_instances(n=100, p=20, s=0) +set.seed(1) +collect_results(n=100, p=20, s=0) From 68e27f4895a84f59118cdd9f29e2c788261d1659 Mon Sep 17 00:00:00 2001 From: Jelena Markovic Date: Sun, 5 Nov 2017 18:56:06 -0800 Subject: [PATCH 355/493] bug in weights --- selectiveInference/R/funs.randomized.R | 2 +- tests/randomized/test_instances.R | 25 +++++++++++-------------- 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index bf5f89d..4fc357c 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -216,7 +216,7 @@ importance_weight = function(noise_scale, log_den = log_density_gaussian_conditional_(noise_scale, opt_transform$linear_term, as.matrix(opt_sample), - observed_raw) + observed_raw+opt_transform$offset_term) W = log_num - log_den W = W - max(W) return(exp(W)) diff --git a/tests/randomized/test_instances.R b/tests/randomized/test_instances.R index 55807fd..91673da 100644 --- a/tests/randomized/test_instances.R +++ b/tests/randomized/test_instances.R @@ -30,7 +30,6 @@ gaussian_instance = function(n, p, s, sigma=1, rho=0, signal=6, X=NA, conditional_density = function(noise_scale, lasso_soln){ active_set = lasso_soln$active_set - inactive_set = lasso_soln$inactive_set observed_raw = lasso_soln$observed_raw opt_linear = lasso_soln$optimization_transform$linear_term opt_offset = lasso_soln$optimization_transform$offset_term @@ -41,15 +40,14 @@ conditional_density = function(noise_scale, lasso_soln){ beta_offset = observed_raw+opt_offset p=length(observed_opt_state) if (nactive 0) { return(-Inf) } @@ -77,25 +75,24 @@ run_instance = function(X,y,sigma, lam, noise_scale, ridge_term){ #lasso_soln = conditional_density(noise_scale, lasso_soln) - observed_raw = lasso_soln$observed_raw - opt_linear = lasso_soln$optimization_transform$linear_term - opt_offset = lasso_soln$optimization_transform$offset_term - observed_opt_state = lasso_soln$observed_opt_state - opt_transform = lasso_soln$optimization_transform - - dim=length(observed_opt_state) + dim=length(lasso_soln$observed_opt_state) + print(paste("chain dim", dim)) S = selectiveInference:::sample_opt_variables(lasso_soln, jump_scale=rep(1/sqrt(n), dim), nsample=10000) opt_samples = S$samples[2001:10000,] print(paste("dim opt samples", toString(dim(opt_samples)))) X_E=X[, active_set] X_minusE=X[, inactive_set] - target_cov = solve(t(X_E)%*%X_E)*sigma^2 + target_cov = solve(t(X_E) %*% X_E)*sigma^2 cov_target_internal = rbind(target_cov, matrix(0, nrow=p-nactive, ncol=nactive)) observed_target = solve(t(X_E) %*% X_E) %*% t(X_E) %*% y observed_internal = c(observed_target, t(X_minusE) %*% (y-X_E%*% observed_target)) internal_transform = lasso_soln$internal_transform + observed_opt_state = lasso_soln$observed_opt_state + opt_transform = lasso_soln$optimization_transform + observed_raw = lasso_soln$observed_raw + pivots = rep(0, nactive) for (i in 1:nactive){ target_transform = selectiveInference:::linear_decomposition(observed_target[i], @@ -122,7 +119,7 @@ run_instance = function(X,y,sigma, lam, noise_scale, ridge_term){ return(pivots) } -collect_results = function(n,p,s, nsim=2){ +collect_results = function(n,p,s, nsim=1){ rho=0.3 lam=1. sigma=1 From 0fa7c4e17bfdb2af1a436f2b11a2d0a2824a355d Mon Sep 17 00:00:00 2001 From: Jelena Markovic Date: Sun, 5 Nov 2017 19:24:41 -0800 Subject: [PATCH 356/493] condl bug fixed --- selectiveInference/R/funs.randomized.R | 3 +-- tests/randomized/test_instances.R | 10 ++++------ 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 4fc357c..0d1ae81 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -145,11 +145,10 @@ randomizedLASSO = function(X, (sum(opt_state[(active_start+1):inactive_start] < 0) > 0)) { return(-Inf) } - D = log_density_gaussian_conditional_(noise_scale, opt_transform$linear_term, as.matrix(opt_state), - observed_raw) + observed_raw+opt_transform$offset_term) return(D) } diff --git a/tests/randomized/test_instances.R b/tests/randomized/test_instances.R index 91673da..3d4bc31 100644 --- a/tests/randomized/test_instances.R +++ b/tests/randomized/test_instances.R @@ -37,7 +37,7 @@ conditional_density = function(noise_scale, lasso_soln){ nactive = length(active_set) B = opt_linear[,1:nactive] - beta_offset = observed_raw+opt_offset + beta_offset = opt_offset p=length(observed_opt_state) if (nactive Date: Mon, 6 Nov 2017 11:31:28 -0800 Subject: [PATCH 357/493] added ci --- tests/randomized/test_instances.R | 31 ++++++++++++++++++++++++------ tests/randomized/test_randomized.R | 1 - 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/tests/randomized/test_instances.R b/tests/randomized/test_instances.R index 3d4bc31..54bbd59 100644 --- a/tests/randomized/test_instances.R +++ b/tests/randomized/test_instances.R @@ -65,7 +65,7 @@ conditional_density = function(noise_scale, lasso_soln){ } -run_instance = function(X,y,sigma, lam, noise_scale, ridge_term){ +randomized_inference = function(X,y,sigma, lam, noise_scale, ridge_term){ n=nrow(X) p=ncol(X) lasso_soln=selectiveInference:::randomizedLASSO(X, y, lam, noise_scale, ridge_term) @@ -74,7 +74,7 @@ run_instance = function(X,y,sigma, lam, noise_scale, ridge_term){ nactive = length(active_set) print(paste("nactive", nactive)) - lasso_soln = conditional_density(noise_scale, lasso_soln) + #lasso_soln = conditional_density(noise_scale, lasso_soln) dim=length(lasso_soln$observed_opt_state) print(paste("chain dim", dim)) @@ -93,6 +93,7 @@ run_instance = function(X,y,sigma, lam, noise_scale, ridge_term){ observed_raw = lasso_soln$observed_raw pivots = rep(0, nactive) + ci = matrix(0, nactive, 2) for (i in 1:nactive){ target_transform = selectiveInference:::linear_decomposition(observed_target[i], observed_internal, @@ -110,11 +111,24 @@ run_instance = function(X,y,sigma, lam, noise_scale, ridge_term){ observed_raw) return(mean((target_sample Date: Mon, 6 Nov 2017 11:37:10 -0800 Subject: [PATCH 358/493] removed local import --- selectiveInference/R/RcppExports.R | 35 ------------------------------ tests/randomized/test_instances.R | 5 +---- 2 files changed, 1 insertion(+), 39 deletions(-) delete mode 100644 selectiveInference/R/RcppExports.R diff --git a/selectiveInference/R/RcppExports.R b/selectiveInference/R/RcppExports.R deleted file mode 100644 index e927a3a..0000000 --- a/selectiveInference/R/RcppExports.R +++ /dev/null @@ -1,35 +0,0 @@ -# Generated by using Rcpp::compileAttributes() -> do not edit by hand -# Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 - -solve_QP <- function(Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, parameter_tol, max_active, kkt_stop, objective_stop, param_stop) { - .Call('selectiveInference_solve_QP', PACKAGE = 'selectiveInference', Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, parameter_tol, max_active, kkt_stop, objective_stop, param_stop) -} - -solve_QP_wide <- function(X, bound, ridge_term, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, parameter_tol, max_active, kkt_stop, objective_stop, param_stop) { - .Call('selectiveInference_solve_QP_wide', PACKAGE = 'selectiveInference', X, bound, ridge_term, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, parameter_tol, max_active, kkt_stop, objective_stop, param_stop) -} - -update1_ <- function(Q2, w, m, k) { - .Call('selectiveInference_update1_', PACKAGE = 'selectiveInference', Q2, w, m, k) -} - -downdate1_ <- function(Q1, R, j0, m, n) { - .Call('selectiveInference_downdate1_', PACKAGE = 'selectiveInference', Q1, R, j0, m, n) -} - -log_density_gaussian_ <- function(noise_scale, internal_linear, internal_state, optimization_linear, optimization_state, offset) { - .Call('selectiveInference_log_density_gaussian_', PACKAGE = 'selectiveInference', noise_scale, internal_linear, internal_state, optimization_linear, optimization_state, offset) -} - -log_density_gaussian_conditional_ <- function(noise_scale, optimization_linear, optimization_state, offset) { - .Call('selectiveInference_log_density_gaussian_conditional_', PACKAGE = 'selectiveInference', noise_scale, optimization_linear, optimization_state, offset) -} - -log_density_laplace_ <- function(noise_scale, internal_linear, internal_state, optimization_linear, optimization_state, offset) { - .Call('selectiveInference_log_density_laplace_', PACKAGE = 'selectiveInference', noise_scale, internal_linear, internal_state, optimization_linear, optimization_state, offset) -} - -log_density_laplace_conditional_ <- function(noise_scale, optimization_linear, optimization_state, offset) { - .Call('selectiveInference_log_density_laplace_conditional_', PACKAGE = 'selectiveInference', noise_scale, optimization_linear, optimization_state, offset) -} - diff --git a/tests/randomized/test_instances.R b/tests/randomized/test_instances.R index 54bbd59..9ae0afd 100644 --- a/tests/randomized/test_instances.R +++ b/tests/randomized/test_instances.R @@ -1,7 +1,4 @@ -#library(devtools) -#devtools::install_github('jonathan-taylor/R-selective/selectiveInference') -library(selectiveInference, lib.loc='/Users/Jelena/anaconda/lib/R/library') - +library(selectiveInference) gaussian_instance = function(n, p, s, sigma=1, rho=0, signal=6, X=NA, random_signs=TRUE, scale=TRUE, center=TRUE, seed=NA){ From 71b6586287a1cb980d439492548dcec7fbee18d1 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Mon, 6 Nov 2017 17:26:54 -0800 Subject: [PATCH 359/493] BF: segfault seems fixed -- ensured all functions have some order of ncase, nfeature --- selectiveInference/src/Rcpp-debias.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/selectiveInference/src/Rcpp-debias.cpp b/selectiveInference/src/Rcpp-debias.cpp index 112a6a8..f5160ba 100644 --- a/selectiveInference/src/Rcpp-debias.cpp +++ b/selectiveInference/src/Rcpp-debias.cpp @@ -160,8 +160,8 @@ Rcpp::List solve_QP_wide(Rcpp::NumericMatrix X, (double *) X.begin(), (double *) linear_func.begin(), (int *) need_update.begin(), - nfeature, ncase, + nfeature, (double *) bound.begin(), ridge_term, kkt_tol); @@ -175,8 +175,8 @@ Rcpp::List solve_QP_wide(Rcpp::NumericMatrix X, (double *) X.begin(), (double *) linear_func.begin(), (int *) need_update.begin(), - nfeature, - ncase); + ncase, + nfeature); return(Rcpp::List::create(Rcpp::Named("soln") = theta, Rcpp::Named("gradient") = gradient, From e0ee2a7f583fa0c1b785ba7180a89098c5887cbe Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Mon, 6 Nov 2017 17:27:42 -0800 Subject: [PATCH 360/493] jelena's inference functions --- selectiveInference/R/funs.randomized.R | 105 +++++++++++++++++++++++++ 1 file changed, 105 insertions(+) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 0d1ae81..93a8dbb 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -221,3 +221,108 @@ importance_weight = function(noise_scale, return(exp(W)) } +### Jelena's functions + +conditional_density = function(noise_scale, lasso_soln){ + + active_set = lasso_soln$active_set + observed_raw = lasso_soln$observed_raw + opt_linear = lasso_soln$optimization_transform$linear_term + opt_offset = lasso_soln$optimization_transform$offset_term + observed_opt_state = lasso_soln$observed_opt_state + + nactive = length(active_set) + B = opt_linear[,1:nactive] + beta_offset = opt_offset + p=length(observed_opt_state) + if (nactive 0) { + return(-Inf) + } + D = selectiveInference:::log_density_gaussian_conditional_(noise_scale, + reduced_B, + as.matrix(opt_state), + reduced_beta_offset) + return(D) + } + lasso_soln$log_optimization_density = log_condl_optimization_density + lasso_soln$observed_opt_state = observed_opt_state[1:nactive] + lasso_soln$optimization_transform = opt_transform + return(lasso_soln) +} + + +randomized_inference = function(X,y,sigma, lam, noise_scale, ridge_term){ + n=nrow(X) + p=ncol(X) + lasso_soln=selectiveInference:::randomizedLASSO(X, y, lam, noise_scale, ridge_term) + active_set = lasso_soln$active_set + inactive_set = lasso_soln$inactive_set + nactive = length(active_set) + print(paste("nactive", nactive)) + + #lasso_soln = conditional_density(noise_scale, lasso_soln) + + dim=length(lasso_soln$observed_opt_state) + print(paste("chain dim", dim)) + S = selectiveInference:::sample_opt_variables(lasso_soln, jump_scale=rep(1/sqrt(n), dim), nsample=10000) + opt_samples = S$samples[2001:10000,] + print(paste("dim opt samples", toString(dim(opt_samples)))) + + X_E=X[, active_set] + X_minusE=X[, inactive_set] + target_cov = solve(t(X_E) %*% X_E)*sigma^2 + cov_target_internal = rbind(target_cov, matrix(0, nrow=p-nactive, ncol=nactive)) + observed_target = solve(t(X_E) %*% X_E) %*% t(X_E) %*% y + observed_internal = c(observed_target, t(X_minusE) %*% (y-X_E%*% observed_target)) + internal_transform = lasso_soln$internal_transform + opt_transform = lasso_soln$optimization_transform + observed_raw = lasso_soln$observed_raw + + pivots = rep(0, nactive) + ci = matrix(0, nactive, 2) + for (i in 1:nactive){ + target_transform = selectiveInference:::linear_decomposition(observed_target[i], + observed_internal, + target_cov[i,i], + cov_target_internal[,i], + internal_transform) + target_sample = rnorm(nrow(opt_samples)) * sqrt(target_cov[i,i]) + + pivot = function(candidate){ + weights = selectiveInference:::importance_weight(noise_scale, + t(as.matrix(target_sample))+candidate, + t(opt_samples), + opt_transform, + target_transform, + observed_raw) + return(mean((target_sample Date: Mon, 6 Nov 2017 18:03:36 -0800 Subject: [PATCH 361/493] BF: seems ncase and nfeature were swapped in some places in C code --- C-software | 2 +- tests/randomized/test_instances.R | 112 ++---------------------------- 2 files changed, 5 insertions(+), 109 deletions(-) diff --git a/C-software b/C-software index 158c64d..ec6a954 160000 --- a/C-software +++ b/C-software @@ -1 +1 @@ -Subproject commit 158c64d8d81fbcf434869c0c68f5bb7a4a9cdf5a +Subproject commit ec6a954d6b335439115e961abde91fa5a07a3669 diff --git a/tests/randomized/test_instances.R b/tests/randomized/test_instances.R index 9ae0afd..3ee447f 100644 --- a/tests/randomized/test_instances.R +++ b/tests/randomized/test_instances.R @@ -7,7 +7,7 @@ gaussian_instance = function(n, p, s, sigma=1, rho=0, signal=6, X=NA, } if (is.na(X)){ - X = sqrt(1-rho)*matrix(rnorm(n*p),n) + sqrt(rho)*matrix(rep(rnorm(n), p), nrow = n) + X = sqrt(1-rho)*matrix(rnorm(n*p),n, p) + sqrt(rho)*matrix(rep(rnorm(n), p), nrow = n) X = scale(X)/sqrt(n) } beta = rep(0, p) @@ -24,119 +24,15 @@ gaussian_instance = function(n, p, s, sigma=1, rho=0, signal=6, X=NA, return(result) } -conditional_density = function(noise_scale, lasso_soln){ - - active_set = lasso_soln$active_set - observed_raw = lasso_soln$observed_raw - opt_linear = lasso_soln$optimization_transform$linear_term - opt_offset = lasso_soln$optimization_transform$offset_term - observed_opt_state = lasso_soln$observed_opt_state - - nactive = length(active_set) - B = opt_linear[,1:nactive] - beta_offset = opt_offset - p=length(observed_opt_state) - if (nactive 0) { - return(-Inf) - } - D = selectiveInference:::log_density_gaussian_conditional_(noise_scale, - reduced_B, - as.matrix(opt_state), - reduced_beta_offset) - return(D) - } - lasso_soln$log_optimization_density = log_condl_optimization_density - lasso_soln$observed_opt_state = observed_opt_state[1:nactive] - lasso_soln$optimization_transform = opt_transform - return(lasso_soln) -} - - -randomized_inference = function(X,y,sigma, lam, noise_scale, ridge_term){ - n=nrow(X) - p=ncol(X) - lasso_soln=selectiveInference:::randomizedLASSO(X, y, lam, noise_scale, ridge_term) - active_set = lasso_soln$active_set - inactive_set = lasso_soln$inactive_set - nactive = length(active_set) - print(paste("nactive", nactive)) - - #lasso_soln = conditional_density(noise_scale, lasso_soln) - - dim=length(lasso_soln$observed_opt_state) - print(paste("chain dim", dim)) - S = selectiveInference:::sample_opt_variables(lasso_soln, jump_scale=rep(1/sqrt(n), dim), nsample=10000) - opt_samples = S$samples[2001:10000,] - print(paste("dim opt samples", toString(dim(opt_samples)))) - - X_E=X[, active_set] - X_minusE=X[, inactive_set] - target_cov = solve(t(X_E) %*% X_E)*sigma^2 - cov_target_internal = rbind(target_cov, matrix(0, nrow=p-nactive, ncol=nactive)) - observed_target = solve(t(X_E) %*% X_E) %*% t(X_E) %*% y - observed_internal = c(observed_target, t(X_minusE) %*% (y-X_E%*% observed_target)) - internal_transform = lasso_soln$internal_transform - opt_transform = lasso_soln$optimization_transform - observed_raw = lasso_soln$observed_raw - - pivots = rep(0, nactive) - ci = matrix(0, nactive, 2) - for (i in 1:nactive){ - target_transform = selectiveInference:::linear_decomposition(observed_target[i], - observed_internal, - target_cov[i,i], - cov_target_internal[,i], - internal_transform) - target_sample = rnorm(nrow(opt_samples)) * sqrt(target_cov[i,i]) - - pivot = function(candidate){ - weights = selectiveInference:::importance_weight(noise_scale, - t(as.matrix(target_sample))+candidate, - t(opt_samples), - opt_transform, - target_transform, - observed_raw) - return(mean((target_sample Date: Mon, 6 Nov 2017 18:14:48 -0800 Subject: [PATCH 362/493] minor cleanup -- doesn't seem to use conditional_density? --- selectiveInference/R/funs.randomized.R | 39 ++++++++++---------------- 1 file changed, 15 insertions(+), 24 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 93a8dbb..e0a1eec 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -221,9 +221,7 @@ importance_weight = function(noise_scale, return(exp(W)) } -### Jelena's functions - -conditional_density = function(noise_scale, lasso_soln){ +conditional_density = function(noise_scale, lasso_soln) { active_set = lasso_soln$active_set observed_raw = lasso_soln$observed_raw @@ -241,7 +239,7 @@ conditional_density = function(noise_scale, lasso_soln){ opt_transform = list(linear_term=B, offset_term = beta_offset) reduced_B = chol(t(B) %*% B) - beta_offset = beta_offset+observed_raw + beta_offset = beta_offset + observed_raw reduced_beta_offset = solve(t(reduced_B)) %*% (t(B) %*% beta_offset) log_condl_optimization_density = function(opt_state) { @@ -260,26 +258,23 @@ conditional_density = function(noise_scale, lasso_soln){ return(lasso_soln) } +randomized_inference = function(X, y, sigma, lam, noise_scale, ridge_term){ -randomized_inference = function(X,y,sigma, lam, noise_scale, ridge_term){ - n=nrow(X) - p=ncol(X) - lasso_soln=selectiveInference:::randomizedLASSO(X, y, lam, noise_scale, ridge_term) + n = nrow(X) + p = ncol(X) + lasso_soln = selectiveInference:::randomizedLASSO(X, y, lam, noise_scale, ridge_term) active_set = lasso_soln$active_set inactive_set = lasso_soln$inactive_set nactive = length(active_set) - print(paste("nactive", nactive)) - - #lasso_soln = conditional_density(noise_scale, lasso_soln) - - dim=length(lasso_soln$observed_opt_state) + + dim = length(lasso_soln$observed_opt_state) print(paste("chain dim", dim)) S = selectiveInference:::sample_opt_variables(lasso_soln, jump_scale=rep(1/sqrt(n), dim), nsample=10000) opt_samples = S$samples[2001:10000,] print(paste("dim opt samples", toString(dim(opt_samples)))) - X_E=X[, active_set] - X_minusE=X[, inactive_set] + X_E = X[, active_set] + X_minusE = X[, inactive_set] target_cov = solve(t(X_E) %*% X_E)*sigma^2 cov_target_internal = rbind(target_cov, matrix(0, nrow=p-nactive, ncol=nactive)) observed_target = solve(t(X_E) %*% X_E) %*% t(X_E) %*% y @@ -288,7 +283,7 @@ randomized_inference = function(X,y,sigma, lam, noise_scale, ridge_term){ opt_transform = lasso_soln$optimization_transform observed_raw = lasso_soln$observed_raw - pivots = rep(0, nactive) + pvalus = rep(0, nactive) ci = matrix(0, nactive, 2) for (i in 1:nactive){ target_transform = selectiveInference:::linear_decomposition(observed_target[i], @@ -300,7 +295,7 @@ randomized_inference = function(X,y,sigma, lam, noise_scale, ridge_term){ pivot = function(candidate){ weights = selectiveInference:::importance_weight(noise_scale, - t(as.matrix(target_sample))+candidate, + t(as.matrix(target_sample)) + candidate, t(opt_samples), opt_transform, target_transform, @@ -314,15 +309,11 @@ randomized_inference = function(X,y,sigma, lam, noise_scale, ridge_term){ rootL = function(candidate){ return (pivot(observed_target[i]+candidate)-(1+level)/2) } - pivots[i] = pivot(0) + pvalues[i] = pivot(0) line_min = -10*sd(target_sample) line_max = 10*sd(target_sample) ci[i,1] = uniroot(rootU, c(line_min, line_max))$root+observed_target[i] - ci[i,2] = uniroot(rootL,c(line_min, line_max))$root+observed_target[i] - } - print(paste("pivots", toString(pivots))) - for (i in 1:nactive){ - print(paste("CIs", toString(ci[i,]))) + ci[i,2] = uniroot(rootL, c(line_min, line_max))$root+observed_target[i] } - return(list(pivots=pivots, ci=ci)) + return(list(pvalues=pvalues, ci=ci)) } From 07b6bb705d291f88e9ff9baaa01fc73969af1b6a Mon Sep 17 00:00:00 2001 From: Jelena Markovic Date: Mon, 6 Nov 2017 22:50:13 -0800 Subject: [PATCH 363/493] coverages --- selectiveInference/R/RcppExports.R | 35 ++++++++++++++++++++++++++ selectiveInference/R/funs.randomized.R | 27 +++++++++++++------- tests/randomized/test_instances.R | 30 +++++++++++++--------- 3 files changed, 71 insertions(+), 21 deletions(-) create mode 100644 selectiveInference/R/RcppExports.R diff --git a/selectiveInference/R/RcppExports.R b/selectiveInference/R/RcppExports.R new file mode 100644 index 0000000..e927a3a --- /dev/null +++ b/selectiveInference/R/RcppExports.R @@ -0,0 +1,35 @@ +# Generated by using Rcpp::compileAttributes() -> do not edit by hand +# Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 + +solve_QP <- function(Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, parameter_tol, max_active, kkt_stop, objective_stop, param_stop) { + .Call('selectiveInference_solve_QP', PACKAGE = 'selectiveInference', Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, parameter_tol, max_active, kkt_stop, objective_stop, param_stop) +} + +solve_QP_wide <- function(X, bound, ridge_term, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, parameter_tol, max_active, kkt_stop, objective_stop, param_stop) { + .Call('selectiveInference_solve_QP_wide', PACKAGE = 'selectiveInference', X, bound, ridge_term, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, parameter_tol, max_active, kkt_stop, objective_stop, param_stop) +} + +update1_ <- function(Q2, w, m, k) { + .Call('selectiveInference_update1_', PACKAGE = 'selectiveInference', Q2, w, m, k) +} + +downdate1_ <- function(Q1, R, j0, m, n) { + .Call('selectiveInference_downdate1_', PACKAGE = 'selectiveInference', Q1, R, j0, m, n) +} + +log_density_gaussian_ <- function(noise_scale, internal_linear, internal_state, optimization_linear, optimization_state, offset) { + .Call('selectiveInference_log_density_gaussian_', PACKAGE = 'selectiveInference', noise_scale, internal_linear, internal_state, optimization_linear, optimization_state, offset) +} + +log_density_gaussian_conditional_ <- function(noise_scale, optimization_linear, optimization_state, offset) { + .Call('selectiveInference_log_density_gaussian_conditional_', PACKAGE = 'selectiveInference', noise_scale, optimization_linear, optimization_state, offset) +} + +log_density_laplace_ <- function(noise_scale, internal_linear, internal_state, optimization_linear, optimization_state, offset) { + .Call('selectiveInference_log_density_laplace_', PACKAGE = 'selectiveInference', noise_scale, internal_linear, internal_state, optimization_linear, optimization_state, offset) +} + +log_density_laplace_conditional_ <- function(noise_scale, optimization_linear, optimization_state, offset) { + .Call('selectiveInference_log_density_laplace_conditional_', PACKAGE = 'selectiveInference', noise_scale, optimization_linear, optimization_state, offset) +} + diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index e0a1eec..78c3a87 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -258,7 +258,7 @@ conditional_density = function(noise_scale, lasso_soln) { return(lasso_soln) } -randomized_inference = function(X, y, sigma, lam, noise_scale, ridge_term){ +randomized_inference = function(X, y, sigma, lam, noise_scale, ridge_term, level=0.9){ n = nrow(X) p = ncol(X) @@ -283,7 +283,7 @@ randomized_inference = function(X, y, sigma, lam, noise_scale, ridge_term){ opt_transform = lasso_soln$optimization_transform observed_raw = lasso_soln$observed_raw - pvalus = rep(0, nactive) + pvalues = rep(0, nactive) ci = matrix(0, nactive, 2) for (i in 1:nactive){ target_transform = selectiveInference:::linear_decomposition(observed_target[i], @@ -300,9 +300,8 @@ randomized_inference = function(X, y, sigma, lam, noise_scale, ridge_term){ opt_transform, target_transform, observed_raw) - return(mean((target_sampletrue_beta[i]){ + coverage[i]=1 + } + print(paste("ci", toString(result$ci[i,]))) + } + sample_pvalues = c(sample_pvalues, result$pvalues) + sample_coverage = c(sample_coverage, coverage) } - + print(paste("coverage", mean(sample_coverage))) jpeg('pivots.jpg') - plot(ecdf(sample_pivots), xlim=c(0,1), main="Empirical CDF of null p-values", xlab="p-values", ylab="ecdf") + plot(ecdf(sample_pvalues), xlim=c(0,1), main="Empirical CDF of null p-values", xlab="p-values", ylab="ecdf") abline(0, 1, lty=2) dev.off() } From 1115635aa730bf05c7901bcfbaa62c1248058b6f Mon Sep 17 00:00:00 2001 From: Jelena Markovic Date: Tue, 7 Nov 2017 11:10:11 -0800 Subject: [PATCH 364/493] subgrad condition option added --- selectiveInference/R/funs.randomized.R | 9 +++++++-- tests/randomized/test_instances.R | 6 +++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 78c3a87..95b2a7a 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -258,7 +258,8 @@ conditional_density = function(noise_scale, lasso_soln) { return(lasso_soln) } -randomized_inference = function(X, y, sigma, lam, noise_scale, ridge_term, level=0.9){ +randomized_inference = function(X, y, sigma, lam, noise_scale, ridge_term, + condition_subgrad=FALSE, level=0.9){ n = nrow(X) p = ncol(X) @@ -266,7 +267,11 @@ randomized_inference = function(X, y, sigma, lam, noise_scale, ridge_term, level active_set = lasso_soln$active_set inactive_set = lasso_soln$inactive_set nactive = length(active_set) - + + if (condition_subgrad==TRUE){ + lasso_soln=conditional_density(noise_scale,lasso_soln) + } + dim = length(lasso_soln$observed_opt_state) print(paste("chain dim", dim)) S = selectiveInference:::sample_opt_variables(lasso_soln, jump_scale=rep(1/sqrt(n), dim), nsample=10000) diff --git a/tests/randomized/test_instances.R b/tests/randomized/test_instances.R index 7bbc54a..380323d 100644 --- a/tests/randomized/test_instances.R +++ b/tests/randomized/test_instances.R @@ -25,8 +25,8 @@ gaussian_instance = function(n, p, s, sigma=1, rho=0, signal=6, X=NA, } -collect_results = function(n,p,s, nsim=10, level=0.9){ - rho=0. +collect_results = function(n,p,s, nsim=100, level=0.9){ + rho=0.3 lam=1. sigma=1 sample_pvalues = c() @@ -38,7 +38,7 @@ collect_results = function(n,p,s, nsim=10, level=0.9){ beta=data$beta ridge_term=sd(y)/sqrt(n) noise_scale = sd(y)/2 - result = selectiveInference:::randomized_inference(X,y,sigma,lam,noise_scale,ridge_term, level) + result = selectiveInference:::randomized_inference(X,y,sigma,lam,noise_scale,ridge_term, TRUE, level) true_beta = beta[result$active_set] coverage = rep(0, nrow(result$ci)) for (i in 1:nrow(result$ci)){ From e2f45859d8dad938dbdc9dacf0bb1f3f7a277c98 Mon Sep 17 00:00:00 2001 From: Jelena Markovic Date: Tue, 7 Nov 2017 11:43:44 -0800 Subject: [PATCH 365/493] bug --- selectiveInference/R/funs.randomized.R | 9 +++------ tests/randomized/test_instances.R | 6 +++--- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 95b2a7a..37b8121 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -258,8 +258,7 @@ conditional_density = function(noise_scale, lasso_soln) { return(lasso_soln) } -randomized_inference = function(X, y, sigma, lam, noise_scale, ridge_term, - condition_subgrad=FALSE, level=0.9){ +randomized_inference = function(X, y, sigma, lam, noise_scale, ridge_term, level=0.9){ n = nrow(X) p = ncol(X) @@ -268,9 +267,7 @@ randomized_inference = function(X, y, sigma, lam, noise_scale, ridge_term, inactive_set = lasso_soln$inactive_set nactive = length(active_set) - if (condition_subgrad==TRUE){ - lasso_soln=conditional_density(noise_scale,lasso_soln) - } + lasso_soln=conditional_density(noise_scale,lasso_soln) dim = length(lasso_soln$observed_opt_state) print(paste("chain dim", dim)) @@ -296,7 +293,7 @@ randomized_inference = function(X, y, sigma, lam, noise_scale, ridge_term, target_cov[i,i], cov_target_internal[,i], internal_transform) - target_sample = rnorm(nrow(opt_samples)) * sqrt(target_cov[i,i]) + target_sample = rnorm(nrow(as.matrix(opt_samples))) * sqrt(target_cov[i,i]) pivot = function(candidate){ weights = selectiveInference:::importance_weight(noise_scale, diff --git a/tests/randomized/test_instances.R b/tests/randomized/test_instances.R index 380323d..4e8d529 100644 --- a/tests/randomized/test_instances.R +++ b/tests/randomized/test_instances.R @@ -25,9 +25,9 @@ gaussian_instance = function(n, p, s, sigma=1, rho=0, signal=6, X=NA, } -collect_results = function(n,p,s, nsim=100, level=0.9){ +collect_results = function(n,p,s, nsim=1, level=0.9){ rho=0.3 - lam=1. + lam=2. sigma=1 sample_pvalues = c() sample_coverage = c() @@ -38,7 +38,7 @@ collect_results = function(n,p,s, nsim=100, level=0.9){ beta=data$beta ridge_term=sd(y)/sqrt(n) noise_scale = sd(y)/2 - result = selectiveInference:::randomized_inference(X,y,sigma,lam,noise_scale,ridge_term, TRUE, level) + result = selectiveInference:::randomized_inference(X,y,sigma,lam,noise_scale,ridge_term, level) true_beta = beta[result$active_set] coverage = rep(0, nrow(result$ci)) for (i in 1:nrow(result$ci)){ From df777e381fa9f9b3630fc33ea161f1719fa4a394 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Tue, 7 Nov 2017 11:55:21 -0800 Subject: [PATCH 366/493] using some default arguments now -- bug in C code for densities --- selectiveInference/R/RcppExports.R | 35 ------------ selectiveInference/R/funs.randomized.R | 73 ++++++++++++++++++-------- tests/randomized/test_instances.R | 4 +- tests/randomized/test_randomized.R | 4 +- 4 files changed, 54 insertions(+), 62 deletions(-) delete mode 100644 selectiveInference/R/RcppExports.R diff --git a/selectiveInference/R/RcppExports.R b/selectiveInference/R/RcppExports.R deleted file mode 100644 index e927a3a..0000000 --- a/selectiveInference/R/RcppExports.R +++ /dev/null @@ -1,35 +0,0 @@ -# Generated by using Rcpp::compileAttributes() -> do not edit by hand -# Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 - -solve_QP <- function(Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, parameter_tol, max_active, kkt_stop, objective_stop, param_stop) { - .Call('selectiveInference_solve_QP', PACKAGE = 'selectiveInference', Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, parameter_tol, max_active, kkt_stop, objective_stop, param_stop) -} - -solve_QP_wide <- function(X, bound, ridge_term, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, parameter_tol, max_active, kkt_stop, objective_stop, param_stop) { - .Call('selectiveInference_solve_QP_wide', PACKAGE = 'selectiveInference', X, bound, ridge_term, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, parameter_tol, max_active, kkt_stop, objective_stop, param_stop) -} - -update1_ <- function(Q2, w, m, k) { - .Call('selectiveInference_update1_', PACKAGE = 'selectiveInference', Q2, w, m, k) -} - -downdate1_ <- function(Q1, R, j0, m, n) { - .Call('selectiveInference_downdate1_', PACKAGE = 'selectiveInference', Q1, R, j0, m, n) -} - -log_density_gaussian_ <- function(noise_scale, internal_linear, internal_state, optimization_linear, optimization_state, offset) { - .Call('selectiveInference_log_density_gaussian_', PACKAGE = 'selectiveInference', noise_scale, internal_linear, internal_state, optimization_linear, optimization_state, offset) -} - -log_density_gaussian_conditional_ <- function(noise_scale, optimization_linear, optimization_state, offset) { - .Call('selectiveInference_log_density_gaussian_conditional_', PACKAGE = 'selectiveInference', noise_scale, optimization_linear, optimization_state, offset) -} - -log_density_laplace_ <- function(noise_scale, internal_linear, internal_state, optimization_linear, optimization_state, offset) { - .Call('selectiveInference_log_density_laplace_', PACKAGE = 'selectiveInference', noise_scale, internal_linear, internal_state, optimization_linear, optimization_state, offset) -} - -log_density_laplace_conditional_ <- function(noise_scale, optimization_linear, optimization_state, offset) { - .Call('selectiveInference_log_density_laplace_conditional_', PACKAGE = 'selectiveInference', noise_scale, optimization_linear, optimization_state, offset) -} - diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 95b2a7a..e065a5e 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -3,11 +3,11 @@ # # min 1/2 || y - \beta_0 - X \beta ||_2^2 + \lambda || \beta ||_1 - \omega^T\beta + \frac{\epsilon}{2} \|\beta\|^2_2 -randomizedLASSO = function(X, +randomizedLasso = function(X, y, lam, - noise_scale, - ridge_term, + noise_scale=NULL, + ridge_term=NULL, noise_type=c('gaussian', 'laplace'), max_iter=100, # how many iterations for each optimization problem kkt_tol=1.e-4, # tolerance for the KKT conditions @@ -20,6 +20,21 @@ randomizedLASSO = function(X, n = nrow(X); p = ncol(X) + mean_diag = mean(apply(X^2, 2, sum)) + + # default ridge term + + if (is.null(ridge_term)) { + ridge_term = sqrt(mean_diag) * sd(y) / sqrt(n) + } + + # default noise level + + if (is.null(noise_scale)) { + noise_scale = 0.5 * sd(y) * sqrt(mean_diag) + } + + print(c(noise_scale, ridge_term)) noise_type = match.arg(noise_type) if (noise_scale > 0) { @@ -246,10 +261,10 @@ conditional_density = function(noise_scale, lasso_soln) { if (sum(opt_state < 0) > 0) { return(-Inf) } - D = selectiveInference:::log_density_gaussian_conditional_(noise_scale, - reduced_B, - as.matrix(opt_state), - reduced_beta_offset) + D = log_density_gaussian_conditional_(noise_scale, + reduced_B, + as.matrix(opt_state), + reduced_beta_offset) return(D) } lasso_soln$log_optimization_density = log_condl_optimization_density @@ -258,12 +273,18 @@ conditional_density = function(noise_scale, lasso_soln) { return(lasso_soln) } -randomized_inference = function(X, y, sigma, lam, noise_scale, ridge_term, - condition_subgrad=FALSE, level=0.9){ +randomizedLassoInf = function(X, + y, + lam, + sigma=NULL, + noise_scale=NULL, + ridge_term=NULL, + condition_subgrad=TRUE, + level=0.9) { n = nrow(X) p = ncol(X) - lasso_soln = selectiveInference:::randomizedLASSO(X, y, lam, noise_scale, ridge_term) + lasso_soln = randomizedLasso(X, y, lam, noise_scale, ridge_term) active_set = lasso_soln$active_set inactive_set = lasso_soln$inactive_set nactive = length(active_set) @@ -274,12 +295,20 @@ randomized_inference = function(X, y, sigma, lam, noise_scale, ridge_term, dim = length(lasso_soln$observed_opt_state) print(paste("chain dim", dim)) - S = selectiveInference:::sample_opt_variables(lasso_soln, jump_scale=rep(1/sqrt(n), dim), nsample=10000) + S = sample_opt_variables(lasso_soln, jump_scale=rep(1/sqrt(n), dim), nsample=10000) opt_samples = S$samples[2001:10000,] print(paste("dim opt samples", toString(dim(opt_samples)))) X_E = X[, active_set] X_minusE = X[, inactive_set] + + # if no sigma given, use OLS estimate + + if (is.null(sigma)) { + lm_y = lm(y ~ X[,E] - 1) + sigma = sum(resid(lm_y)^2 / lm_y$df.resid) + } + print(c(sigma, 'sigma')) target_cov = solve(t(X_E) %*% X_E)*sigma^2 cov_target_internal = rbind(target_cov, matrix(0, nrow=p-nactive, ncol=nactive)) observed_target = solve(t(X_E) %*% X_E) %*% t(X_E) %*% y @@ -291,20 +320,20 @@ randomized_inference = function(X, y, sigma, lam, noise_scale, ridge_term, pvalues = rep(0, nactive) ci = matrix(0, nactive, 2) for (i in 1:nactive){ - target_transform = selectiveInference:::linear_decomposition(observed_target[i], - observed_internal, - target_cov[i,i], - cov_target_internal[,i], - internal_transform) + target_transform = linear_decomposition(observed_target[i], + observed_internal, + target_cov[i,i], + cov_target_internal[,i], + internal_transform) target_sample = rnorm(nrow(opt_samples)) * sqrt(target_cov[i,i]) pivot = function(candidate){ - weights = selectiveInference:::importance_weight(noise_scale, - t(as.matrix(target_sample)) + candidate, - t(opt_samples), - opt_transform, - target_transform, - observed_raw) + weights = importance_weight(noise_scale, + t(as.matrix(target_sample)) + candidate, + t(opt_samples), + opt_transform, + target_transform, + observed_raw) return(mean((target_sample+candidate Date: Tue, 7 Nov 2017 11:58:06 -0800 Subject: [PATCH 367/493] dealing with zero length active set --- selectiveInference/R/funs.randomized.R | 6 +++++- tests/randomized/test_instances.R | 30 +++++++++++++++----------- 2 files changed, 22 insertions(+), 14 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 37b8121..3d8ddec 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -264,6 +264,9 @@ randomized_inference = function(X, y, sigma, lam, noise_scale, ridge_term, level p = ncol(X) lasso_soln = selectiveInference:::randomizedLASSO(X, y, lam, noise_scale, ridge_term) active_set = lasso_soln$active_set + if (length(active_set)==0){ + return (list(active_set=active_set, pvalues=c(), ci=c())) + } inactive_set = lasso_soln$inactive_set nactive = length(active_set) @@ -293,8 +296,9 @@ randomized_inference = function(X, y, sigma, lam, noise_scale, ridge_term, level target_cov[i,i], cov_target_internal[,i], internal_transform) + target_sample = rnorm(nrow(as.matrix(opt_samples))) * sqrt(target_cov[i,i]) - + print(length(target_sample)) pivot = function(candidate){ weights = selectiveInference:::importance_weight(noise_scale, t(as.matrix(target_sample)) + candidate, diff --git a/tests/randomized/test_instances.R b/tests/randomized/test_instances.R index 4e8d529..baafb15 100644 --- a/tests/randomized/test_instances.R +++ b/tests/randomized/test_instances.R @@ -39,22 +39,26 @@ collect_results = function(n,p,s, nsim=1, level=0.9){ ridge_term=sd(y)/sqrt(n) noise_scale = sd(y)/2 result = selectiveInference:::randomized_inference(X,y,sigma,lam,noise_scale,ridge_term, level) - true_beta = beta[result$active_set] - coverage = rep(0, nrow(result$ci)) - for (i in 1:nrow(result$ci)){ - if (result$ci[i,1]true_beta[i]){ - coverage[i]=1 + if (length(result$active_set)>0){ + true_beta = beta[result$active_set] + coverage = rep(0, nrow(result$ci)) + for (i in 1:nrow(result$ci)){ + if (result$ci[i,1]true_beta[i]){ + coverage[i]=1 + } + print(paste("ci", toString(result$ci[i,]))) } - print(paste("ci", toString(result$ci[i,]))) + sample_pvalues = c(sample_pvalues, result$pvalues) + sample_coverage = c(sample_coverage, coverage) } - sample_pvalues = c(sample_pvalues, result$pvalues) - sample_coverage = c(sample_coverage, coverage) } - print(paste("coverage", mean(sample_coverage))) - jpeg('pivots.jpg') - plot(ecdf(sample_pvalues), xlim=c(0,1), main="Empirical CDF of null p-values", xlab="p-values", ylab="ecdf") - abline(0, 1, lty=2) - dev.off() + if (length(sample_coverage)>0){ + print(paste("coverage", mean(sample_coverage))) + jpeg('pivots.jpg') + plot(ecdf(sample_pvalues), xlim=c(0,1), main="Empirical CDF of null p-values", xlab="p-values", ylab="ecdf") + abline(0, 1, lty=2) + dev.off() + } } set.seed(1) From ab91969dfed3f76417f157faabfb7013d3295c71 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Tue, 7 Nov 2017 13:18:30 -0800 Subject: [PATCH 368/493] now nut running after trying to set default arguments --- C-software | 2 +- selectiveInference/R/funs.randomized.R | 2 ++ tests/randomized/test_instances.R | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/C-software b/C-software index ec6a954..8d06a25 160000 --- a/C-software +++ b/C-software @@ -1 +1 @@ -Subproject commit ec6a954d6b335439115e961abde91fa5a07a3669 +Subproject commit 8d06a251820689db939246e3362475bf4c56801e diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index e065a5e..cd67f6d 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -65,6 +65,7 @@ randomizedLasso = function(X, ever_active = rep(0, p) nactive = as.integer(0) + print('here') result = solve_QP_wide(X, # design matrix lam / n, # vector of Lagrange multipliers ridge_term / n, # ridge_term @@ -85,6 +86,7 @@ randomizedLasso = function(X, sign_soln = sign(result$soln) + print('now') unpenalized = lam == 0 active = (!unpenalized) & (sign_soln != 0) inactive = (!unpenalized) & (sign_soln == 0) diff --git a/tests/randomized/test_instances.R b/tests/randomized/test_instances.R index 404312e..02f6984 100644 --- a/tests/randomized/test_instances.R +++ b/tests/randomized/test_instances.R @@ -36,7 +36,7 @@ collect_results = function(n,p,s, nsim=100, level=0.9){ X=data$X y=data$y beta=data$beta - result = selectiveInference:::randomizedLassoInf(X, y, sigma, lam, level=level) + result = selectiveInference:::randomizedLassoInf(X, y, lam, level=level) true_beta = beta[result$active_set] coverage = rep(0, nrow(result$ci)) for (i in 1:nrow(result$ci)){ From 5b4bc08d6ccf2c411a0a4fb81f8d1a346afb154b Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Tue, 7 Nov 2017 13:23:03 -0800 Subject: [PATCH 369/493] BF: estimate of sigma --- selectiveInference/R/funs.randomized.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index cd67f6d..c6b7a23 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -307,8 +307,8 @@ randomizedLassoInf = function(X, # if no sigma given, use OLS estimate if (is.null(sigma)) { - lm_y = lm(y ~ X[,E] - 1) - sigma = sum(resid(lm_y)^2 / lm_y$df.resid) + lm_y = lm(y ~ X_E - 1) + sigma = sqrt(sum(resid(lm_y)^2) / lm_y$df.resid) } print(c(sigma, 'sigma')) target_cov = solve(t(X_E) %*% X_E)*sigma^2 From 46856e1a87fae22dde84b7a07da8c59772161ff8 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Tue, 7 Nov 2017 13:25:19 -0800 Subject: [PATCH 370/493] changing arguments --- selectiveInference/R/funs.randomized.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index c6b7a23..71a6a71 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -286,7 +286,7 @@ randomizedLassoInf = function(X, n = nrow(X) p = ncol(X) - lasso_soln = randomizedLasso(X, y, lam, noise_scale, ridge_term) + lasso_soln = randomizedLasso(X, y, lam, noise_scale=noise_scale, ridge_term=ridge_term) active_set = lasso_soln$active_set inactive_set = lasso_soln$inactive_set nactive = length(active_set) From d1ebca35bfc8e03f0bd6f527dc6f688e07953139 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Tue, 7 Nov 2017 14:25:13 -0800 Subject: [PATCH 371/493] BF: noise_scale was NULL --- C-software | 2 +- selectiveInference/R/funs.randomized.R | 96 ++++++++++++++-------- selectiveInference/src/Rcpp-randomized.cpp | 3 +- tests/randomized/test_instances.R | 2 +- 4 files changed, 67 insertions(+), 36 deletions(-) diff --git a/C-software b/C-software index 8d06a25..225d827 160000 --- a/C-software +++ b/C-software @@ -1 +1 @@ -Subproject commit 8d06a251820689db939246e3362475bf4c56801e +Subproject commit 225d8274ec54eea0ccf14d4ef27297dd699b54e5 diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 71a6a71..869b277 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -65,7 +65,6 @@ randomizedLasso = function(X, ever_active = rep(0, p) nactive = as.integer(0) - print('here') result = solve_QP_wide(X, # design matrix lam / n, # vector of Lagrange multipliers ridge_term / n, # ridge_term @@ -86,7 +85,6 @@ randomizedLasso = function(X, sign_soln = sign(result$soln) - print('now') unpenalized = lam == 0 active = (!unpenalized) & (sign_soln != 0) inactive = (!unpenalized) & (sign_soln == 0) @@ -156,16 +154,17 @@ randomizedLasso = function(X, log_optimization_density = function(opt_state ) { - - if ((sum(abs(opt_state[(inactive_start + 1):p]) > inactive_lam) > 0) || (sum(opt_state[(active_start+1):inactive_start] < 0) > 0)) { return(-Inf) } - D = log_density_gaussian_conditional_(noise_scale, - opt_transform$linear_term, - as.matrix(opt_state), - observed_raw+opt_transform$offset_term) + + A = opt_transform$linear_term %*% opt_state + observed_raw + opt_transform$offset_term + D = -apply(A^2, 2, sum) / noise_scale^2 +# D = log_density_gaussian_conditional_(noise_scale, +# opt_transform$linear_term, +# as.matrix(opt_state), +# observed_raw + opt_transform$offset_term) return(D) } @@ -177,7 +176,8 @@ randomizedLasso = function(X, internal_transform = internal_transform, log_optimization_density = log_optimization_density, observed_opt_state = observed_opt_state, - observed_raw = observed_raw + observed_raw = observed_raw, + noise_scale = noise_scale )) } @@ -222,17 +222,31 @@ importance_weight = function(noise_scale, target_transform, observed_raw) { - log_num = log_density_gaussian_(noise_scale, - target_transform$linear_term, - as.matrix(target_sample), - opt_transform$linear_term, - as.matrix(opt_sample), - target_transform$offset_term + opt_transform$offset_term) - - log_den = log_density_gaussian_conditional_(noise_scale, - opt_transform$linear_term, - as.matrix(opt_sample), - observed_raw+opt_transform$offset_term) + use_C_code = FALSE + if (!use_C_code) { + A = (opt_transform$linear_term %*% opt_sample + + target_transform$linear_term %*% target_sample) + A = apply(A, 2, function(x) {return(x + target_transform$offset_term + opt_transform$offset_term)}) + log_num = -apply(A^2, 2, sum) / noise_scale^2 + } else { + log_num = log_density_gaussian_(noise_scale, + target_transform$linear_term, + as.matrix(target_sample), + opt_transform$linear_term, + as.matrix(opt_sample), + target_transform$offset_term + opt_transform$offset_term) + } + + if (!use_C_code) { + A = opt_transform$linear_term %*% opt_sample + A = apply(A, 2, function(x) {return(x + observed_raw + opt_transform$offset_term)}) + log_den = -apply(A^2, 2, sum) / noise_scale^2 + } else { + log_den = log_density_gaussian_conditional_(noise_scale, + opt_transform$linear_term, + as.matrix(opt_sample), + observed_raw+opt_transform$offset_term) + } W = log_num - log_den W = W - max(W) return(exp(W)) @@ -263,11 +277,19 @@ conditional_density = function(noise_scale, lasso_soln) { if (sum(opt_state < 0) > 0) { return(-Inf) } - D = log_density_gaussian_conditional_(noise_scale, - reduced_B, - as.matrix(opt_state), - reduced_beta_offset) - return(D) + + use_C_code = FALSE + if (!use_C_code) { + A = reduced_B %*% as.matrix(opt_state) + reduced_beta_offset + A = apply(A, 2, function(x) {x + reduced_beta_offset}) + log_den = -apply(A^2, 2, sum) / noise_scale^2 + } else { + log_den = log_density_gaussian_conditional_(noise_scale, + reduced_B, + as.matrix(opt_state), + reduced_beta_offset) + } + return(log_den) } lasso_soln$log_optimization_density = log_condl_optimization_density lasso_soln$observed_opt_state = observed_opt_state[1:nactive] @@ -282,7 +304,9 @@ randomizedLassoInf = function(X, noise_scale=NULL, ridge_term=NULL, condition_subgrad=TRUE, - level=0.9) { + level=0.9, + nsample=10000, + burnin=2000) { n = nrow(X) p = ncol(X) @@ -291,14 +315,20 @@ randomizedLassoInf = function(X, inactive_set = lasso_soln$inactive_set nactive = length(active_set) - if (condition_subgrad==TRUE){ - lasso_soln=conditional_density(noise_scale,lasso_soln) - } + noise_scale = lasso_soln$noise_scale # set to default value in randomizedLasso + + if (condition_subgrad==TRUE){ + lasso_soln=conditional_density(noise_scale, lasso_soln) + } dim = length(lasso_soln$observed_opt_state) print(paste("chain dim", dim)) - S = sample_opt_variables(lasso_soln, jump_scale=rep(1/sqrt(n), dim), nsample=10000) - opt_samples = S$samples[2001:10000,] + +# print(lasso_soln) + + + S = sample_opt_variables(lasso_soln, jump_scale=rep(1/sqrt(n), dim), nsample=nsample) + opt_samples = S$samples[(burnin+1):nsample,] print(paste("dim opt samples", toString(dim(opt_samples)))) X_E = X[, active_set] @@ -331,12 +361,12 @@ randomizedLassoInf = function(X, pivot = function(candidate){ weights = importance_weight(noise_scale, - t(as.matrix(target_sample)) + candidate, + t(as.matrix(target_sample) + candidate), t(opt_samples), opt_transform, target_transform, observed_raw) - return(mean((target_sample+candidate // need to include the main Rcpp header file #include // where densities are defined - +#include // [[Rcpp::export]] Rcpp::NumericVector log_density_gaussian_(double noise_scale, // Scale of randomization Rcpp::NumericMatrix internal_linear, // A_D -- linear part for data @@ -53,6 +53,7 @@ Rcpp::NumericVector log_density_gaussian_conditional_(double noise_scale, int ipt; for (ipt=0; ipt Date: Tue, 7 Nov 2017 14:31:09 -0800 Subject: [PATCH 372/493] seems to be running now with default arguments --- C-software | 2 +- selectiveInference/R/funs.randomized.R | 14 ++++---------- tests/randomized/test_instances.R | 1 + 3 files changed, 6 insertions(+), 11 deletions(-) diff --git a/C-software b/C-software index 225d827..563bf1a 160000 --- a/C-software +++ b/C-software @@ -1 +1 @@ -Subproject commit 225d8274ec54eea0ccf14d4ef27297dd699b54e5 +Subproject commit 563bf1aa370b55f8343693224717047f1df0d0c3 diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 869b277..55bb0f2 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -34,7 +34,6 @@ randomizedLasso = function(X, noise_scale = 0.5 * sd(y) * sqrt(mean_diag) } - print(c(noise_scale, ridge_term)) noise_type = match.arg(noise_type) if (noise_scale > 0) { @@ -222,7 +221,7 @@ importance_weight = function(noise_scale, target_transform, observed_raw) { - use_C_code = FALSE + use_C_code = TRUE if (!use_C_code) { A = (opt_transform$linear_term %*% opt_sample + target_transform$linear_term %*% target_sample) @@ -278,7 +277,7 @@ conditional_density = function(noise_scale, lasso_soln) { return(-Inf) } - use_C_code = FALSE + use_C_code = TRUE if (!use_C_code) { A = reduced_B %*% as.matrix(opt_state) + reduced_beta_offset A = apply(A, 2, function(x) {x + reduced_beta_offset}) @@ -321,15 +320,10 @@ randomizedLassoInf = function(X, lasso_soln=conditional_density(noise_scale, lasso_soln) } - dim = length(lasso_soln$observed_opt_state) - print(paste("chain dim", dim)) + ndim = length(lasso_soln$observed_opt_state) -# print(lasso_soln) - - - S = sample_opt_variables(lasso_soln, jump_scale=rep(1/sqrt(n), dim), nsample=nsample) + S = sample_opt_variables(lasso_soln, jump_scale=rep(1/sqrt(n), ndim), nsample=nsample) opt_samples = S$samples[(burnin+1):nsample,] - print(paste("dim opt samples", toString(dim(opt_samples)))) X_E = X[, active_set] X_minusE = X[, inactive_set] diff --git a/tests/randomized/test_instances.R b/tests/randomized/test_instances.R index 54b219b..e3e9816 100644 --- a/tests/randomized/test_instances.R +++ b/tests/randomized/test_instances.R @@ -47,6 +47,7 @@ collect_results = function(n,p,s, nsim=100, level=0.9){ } sample_pvalues = c(sample_pvalues, result$pvalues) sample_coverage = c(sample_coverage, coverage) + print(paste("coverage", mean(sample_coverage))) } print(paste("coverage", mean(sample_coverage))) jpeg('pivots.jpg') From 8187b536f94e4845f6b73d7a56e1f3eb7d444396 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Tue, 7 Nov 2017 14:35:31 -0800 Subject: [PATCH 373/493] forgot one bit of C code to use --- selectiveInference/R/funs.randomized.R | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 55bb0f2..2591b09 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -158,12 +158,16 @@ randomizedLasso = function(X, return(-Inf) } - A = opt_transform$linear_term %*% opt_state + observed_raw + opt_transform$offset_term - D = -apply(A^2, 2, sum) / noise_scale^2 -# D = log_density_gaussian_conditional_(noise_scale, -# opt_transform$linear_term, -# as.matrix(opt_state), -# observed_raw + opt_transform$offset_term) + use_C_code = TRUE + if (!use_C_code) { + A = opt_transform$linear_term %*% opt_state + observed_raw + opt_transform$offset_term + D = -apply(A^2, 2, sum) / noise_scale^2 + } else { + D = log_density_gaussian_conditional_(noise_scale, + opt_transform$linear_term, + as.matrix(opt_state), + observed_raw + opt_transform$offset_term) + } return(D) } From 6dae27c96cdfeef4ca8e7238fc83c4e16dc86eb7 Mon Sep 17 00:00:00 2001 From: Jelena Markovic Date: Tue, 7 Nov 2017 14:36:53 -0800 Subject: [PATCH 374/493] weights running in |E|+1 dimensions --- selectiveInference/R/funs.randomized.R | 20 ++++++++++++++++---- tests/randomized/test_instances.R | 4 ++-- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 3d8ddec..df53da5 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -296,16 +296,28 @@ randomized_inference = function(X, y, sigma, lam, noise_scale, ridge_term, level target_cov[i,i], cov_target_internal[,i], internal_transform) - + + target_opt_linear = cbind(target_transform$linear_term, opt_transform$linear_term) + reduced_target_opt_linear = chol(t(target_opt_linear) %*% target_opt_linear) + target_linear = reduced_target_opt_linear[,1] + temp = solve(t(reduced_target_opt_linear)) %*% t(target_opt_linear) + target_offset = temp %*% target_transform$offset_term + target_transform = list(linear_term = as.matrix(target_linear), offset_term = target_offset) + print(dim(reduced_target_opt_linear)) + opt_linear = reduced_target_opt_linear[,2:ncol(reduced_target_opt_linear)] + opt_offset = temp %*% opt_transform$offset_term + opt_transform_reduced = list(linear_term = as.matrix(opt_linear), offset_term = opt_offset) + + raw = target_transform$linear_term * observed_target[i] +target_transform$offset_term + target_sample = rnorm(nrow(as.matrix(opt_samples))) * sqrt(target_cov[i,i]) - print(length(target_sample)) pivot = function(candidate){ weights = selectiveInference:::importance_weight(noise_scale, t(as.matrix(target_sample)) + candidate, t(opt_samples), - opt_transform, + opt_transform_reduced, target_transform, - observed_raw) + raw) return(mean((target_sample+candidate Date: Tue, 7 Nov 2017 15:31:04 -0800 Subject: [PATCH 375/493] BF: opt_transform linear_term was not cast as matrix in conditional_density --- selectiveInference/R/funs.randomized.R | 33 ++++++++++++++++---------- tests/randomized/test_instances.R | 6 ++--- 2 files changed, 23 insertions(+), 16 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 2591b09..de16951 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -109,7 +109,13 @@ randomizedLasso = function(X, L_E = t(X) %*% X[,E] coef_term = L_E - coef_term = coef_term %*% diag(c(rep(1, sum(unpenalized)), sign_soln[active])) # coefficients are non-negative + signs_ = c(rep(1, sum(unpenalized)), sign_soln[active]) + if (length(signs_) == 1) { + coef_term = coef_term * signs_ + } else { + coef_term = coef_term %*% diag(signs_) # scaligns are non-negative + } + coef_term[active,] = coef_term[active,] + ridge_term * diag(rep(1, sum(active))) # ridge term subgrad_term = matrix(0, p, sum(inactive)) # for subgrad @@ -151,10 +157,10 @@ randomizedLasso = function(X, # XXX only for Gaussian so far - log_optimization_density = function(opt_state - ) { + log_optimization_density = function(opt_state) { + if ((sum(abs(opt_state[(inactive_start + 1):p]) > inactive_lam) > 0) || - (sum(opt_state[(active_start+1):inactive_start] < 0) > 0)) { + (sum(opt_state[(active_start + 1):inactive_start] < 0) > 0)) { return(-Inf) } @@ -188,7 +194,7 @@ randomizedLasso = function(X, sample_opt_variables = function(randomizedLASSO_obj, jump_scale, nsample=10000) { return(MCMC(randomizedLASSO_obj$log_optimization_density, nsample, - randomizedLASSO_obj$observed_opt_state, + randomizedLASSO_obj$observed_opt_state, acc.rate=0.2, scale=jump_scale)) } @@ -232,6 +238,7 @@ importance_weight = function(noise_scale, A = apply(A, 2, function(x) {return(x + target_transform$offset_term + opt_transform$offset_term)}) log_num = -apply(A^2, 2, sum) / noise_scale^2 } else { + log_num = log_density_gaussian_(noise_scale, target_transform$linear_term, as.matrix(target_sample), @@ -264,10 +271,11 @@ conditional_density = function(noise_scale, lasso_soln) { observed_opt_state = lasso_soln$observed_opt_state nactive = length(active_set) - B = opt_linear[,1:nactive] + B = opt_linear[,1:nactive,drop=FALSE] beta_offset = opt_offset - p=length(observed_opt_state) - if (nactive Date: Tue, 7 Nov 2017 16:00:25 -0800 Subject: [PATCH 376/493] working instance --- selectiveInference/R/funs.randomized.R | 16 ++++++++++------ tests/randomized/test_instances.R | 4 ++-- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index df53da5..99da66d 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -95,6 +95,7 @@ randomizedLASSO = function(X, L_E = t(X) %*% X[,E] coef_term = L_E + print(active_set) coef_term = coef_term %*% diag(c(rep(1, sum(unpenalized)), sign_soln[active])) # coefficients are non-negative coef_term[active,] = coef_term[active,] + ridge_term * diag(rep(1, sum(active))) # ridge term @@ -274,8 +275,9 @@ randomized_inference = function(X, y, sigma, lam, noise_scale, ridge_term, level dim = length(lasso_soln$observed_opt_state) print(paste("chain dim", dim)) - S = selectiveInference:::sample_opt_variables(lasso_soln, jump_scale=rep(1/sqrt(n), dim), nsample=10000) - opt_samples = S$samples[2001:10000,] + nsample=4000 + S = selectiveInference:::sample_opt_variables(lasso_soln, jump_scale=rep(1/sqrt(n), dim), nsample=nsample) + opt_samples = S$samples[2001:nsample,] print(paste("dim opt samples", toString(dim(opt_samples)))) X_E = X[, active_set] @@ -290,6 +292,7 @@ randomized_inference = function(X, y, sigma, lam, noise_scale, ridge_term, level pvalues = rep(0, nactive) ci = matrix(0, nactive, 2) + for (i in 1:nactive){ target_transform = selectiveInference:::linear_decomposition(observed_target[i], observed_internal, @@ -303,7 +306,6 @@ randomized_inference = function(X, y, sigma, lam, noise_scale, ridge_term, level temp = solve(t(reduced_target_opt_linear)) %*% t(target_opt_linear) target_offset = temp %*% target_transform$offset_term target_transform = list(linear_term = as.matrix(target_linear), offset_term = target_offset) - print(dim(reduced_target_opt_linear)) opt_linear = reduced_target_opt_linear[,2:ncol(reduced_target_opt_linear)] opt_offset = temp %*% opt_transform$offset_term opt_transform_reduced = list(linear_term = as.matrix(opt_linear), offset_term = opt_offset) @@ -324,11 +326,13 @@ randomized_inference = function(X, y, sigma, lam, noise_scale, ridge_term, level return (pivot(observed_target[i]+candidate)-(1-level)/2) } rootL = function(candidate){ - return (pivot(observed_target[i]+candidate)-(1+level)/2) + return(pivot(observed_target[i]+candidate)-(1+level)/2) } pvalues[i] = pivot(0) - line_min = -20*sd(target_sample) - line_max = 20*sd(target_sample) + line_min = -10*sd(target_sample) + line_max = 10*sd(target_sample) + print(rootU(line_min)) + print(rootU(line_max)) if (rootU(line_min)*rootU(line_max)<0){ ci[i,2] = uniroot(rootU, c(line_min, line_max))$root+observed_target[i] } else{ diff --git a/tests/randomized/test_instances.R b/tests/randomized/test_instances.R index 4b6df00..8c353c9 100644 --- a/tests/randomized/test_instances.R +++ b/tests/randomized/test_instances.R @@ -25,9 +25,9 @@ gaussian_instance = function(n, p, s, sigma=1, rho=0, signal=6, X=NA, } -collect_results = function(n,p,s, nsim=100, level=0.9){ +collect_results = function(n,p,s, nsim=20, level=0.9){ rho=0.3 - lam=1. + lam=1.2 sigma=1 sample_pvalues = c() sample_coverage = c() From 571cf823d4da8fcb099984b92af79e07d4b3beae Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Tue, 7 Nov 2017 16:16:10 -0800 Subject: [PATCH 377/493] export of randomized and man page --- selectiveInference/NAMESPACE | 3 +- selectiveInference/man/fixedLassoInf.Rd | 2 +- selectiveInference/man/randomizedLassoInf.Rd | 159 +++++++++++++++++++ 3 files changed, 162 insertions(+), 2 deletions(-) create mode 100644 selectiveInference/man/randomizedLassoInf.Rd diff --git a/selectiveInference/NAMESPACE b/selectiveInference/NAMESPACE index e8f36e0..da23e38 100644 --- a/selectiveInference/NAMESPACE +++ b/selectiveInference/NAMESPACE @@ -14,7 +14,8 @@ export(lar,fs, TG.pvalue, TG.limits, TG.interval, - debiasingMatrix + debiasingMatrix, + randomizedLassoInf ) S3method("coef", "lar") diff --git a/selectiveInference/man/fixedLassoInf.Rd b/selectiveInference/man/fixedLassoInf.Rd index 445e72a..ac7ca21 100644 --- a/selectiveInference/man/fixedLassoInf.Rd +++ b/selectiveInference/man/fixedLassoInf.Rd @@ -113,7 +113,7 @@ is not allowed. Note that the coefficients and standard errors reported are unregularized. Eg for the Gaussian, they are the usual least squares estimates and standard errors -for the model fit to the actice set from the lasso. +for the model fit to the active set from the lasso. } \value{ \item{type}{Type of coefficients tested (partial or full)} diff --git a/selectiveInference/man/randomizedLassoInf.Rd b/selectiveInference/man/randomizedLassoInf.Rd new file mode 100644 index 0000000..35d0dc4 --- /dev/null +++ b/selectiveInference/man/randomizedLassoInf.Rd @@ -0,0 +1,159 @@ +\name{randomizedLassoInf} +\alias{randomizedLassoInf} + +\title{ +Inference for the randomized lasso, with a fixed lambda +} +\description{ +Compute p-values and confidence intervals based on selecting +an active set with the randomized lasso, at a +fixed value of the tuning parameter lambda and using Gaussian +randomization. +} +\usage{ +randomizedLassoInf(X, + y, + lam, + sigma=NULL, + noise_scale=NULL, + ridge_term=NULL, + condition_subgrad=TRUE, + level=0.9, + nsample=10000, + burnin=2000, + max_iter=100, + kkt_tol=1.e-4, + parameter_tol=1.e-8, + objective_tol=1.e-8, + objective_stop=FALSE, + kkt_stop=TRUE, + param_stop=TRUE) +} +\arguments{ + \item{X}{ +Matrix of predictors (n by p); +} + \item{y}{ +Vector of outcomes (length n) +} + \item{lam}{ +Value of lambda used to compute beta. See the above warning + Be careful! This function uses the "standard" lasso objective + \deqn{ + 1/2 \|y - x \beta\|_2^2 + \lambda \|\beta\|_1. + } + In contrast, glmnet multiplies the first term by a factor of 1/n. + So after running glmnet, to extract the beta corresponding to a value lambda, + you need to use \code{beta = coef(obj, s=lambda/n)[-1]}, + where obj is the object returned by glmnet (and [-1] removes the intercept, + which glmnet always puts in the first component) +} +\item{sigma}{ +Estimate of error standard deviation. If NULL (default), this is estimated +using the mean squared residual of the full least squares based on +selected active set. +} +\item{noise_scale}{ +Scale of Gaussian noise added to objective. Default is +0.5 * sd(y) times the sqrt of the mean of the trace of X^TX. +} +\item{ridge_term}{ +A small "elastic net" or ridge penalty is added to ensure +the randomized problem has a solution. +0.5 * sd(y) times the sqrt of the mean of the trace of X^TX divided by +sqrt(n). +} +\item{condition_subgrad}{ +In forming selective confidence intervals and p-values should we condition +on the inactive coordinates of the subgradient as well? +Default is TRUE. +} +\item{level} +{ +Level for confidence intervals. +} +\item{nsample} +{ +Number of samples of optimization variables to sample. +} +\item{burnin} +{ +How many samples of optimization variable to discard (should be less than nsample). +} +\item{max_iter} +{ +How many rounds of updates used of coordinate descent in solving randomized +LASSO. +} +\item{kkt_tol}{ +Tolerance for checking convergence based on KKT conditions. +} +\item{parameter_tol}{ +Tolerance for checking convergence based on convergence +of parameters. +} +\item{objective_tol}{ +Tolerance for checking convergence based on convergence +of objective value. +} +\item{kkt_stop}{ +Should we use KKT check to determine when to stop? +} +\item{parameter_tol}{ +Should we use convergence of parameters to determine when to stop? +} +\item{objective_tol}{ +Should we use convergence of objective value to determine when to stop? +} +} + +\details{ +This function computes selective p-values and confidence intervals for a +randomized version of the lasso, +given a fixed value of the tuning parameter lambda. + +} +\value{ +\item{type}{Type of coefficients tested (partial or full)} +\item{lambda}{Value of tuning parameter lambda used} +\item{pv}{One-sided P-values for active variables, uses the fact we have conditioned on the sign.} +\item{ci}{Confidence intervals} +\item{tailarea}{Realized tail areas (lower and upper) for each confidence interval} +\item{vlo}{Lower truncation limits for statistics} +\item{vup}{Upper truncation limits for statistics} +\item{vmat}{Linear contrasts that define the observed statistics} +\item{y}{Vector of outcomes} +\item{vars}{Variables in active set} +\item{sign}{Signs of active coefficients} +\item{alpha}{Desired coverage (alpha/2 in each tail)} +\item{sigma}{Value of error standard deviation (sigma) used} +\item{call}{The call to lassoInf} +} + +\references{ +Xiaoying Tian, and Jonathan Taylor (2015). +Selective inference with a randomized response. arxiv.org:1507.06739 + +Xiaoying Tian, Snigdha Panigrahi, Jelena Markovic, Nan Bi and Jonathan Taylor (2016). +Selective inference after solving a convex problem. +arxiv:1609.05609 + +} +\author{Jelena Markovic, Jonathan Taylor} + +\examples{ +set.seed(43) +n = 50 +p = 10 +sigma = 1 + +x = matrix(rnorm(n*p),n,p) +x = scale(x,TRUE,TRUE) + +beta = c(3,2,rep(0,p-2)) +y = x\%*\%beta + sigma*rnorm(n) + +result = randomizedLassoInf(X, y, lam) + +} + From 9adbe9b8d7ff0db6b4c3e44bbab3d298c7be1a45 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Tue, 7 Nov 2017 16:16:45 -0800 Subject: [PATCH 378/493] adding resid to namespace --- selectiveInference/NAMESPACE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selectiveInference/NAMESPACE b/selectiveInference/NAMESPACE index da23e38..11a834e 100644 --- a/selectiveInference/NAMESPACE +++ b/selectiveInference/NAMESPACE @@ -41,7 +41,7 @@ import(intervals) import(survival) importFrom("graphics", abline, axis, matplot) importFrom("stats", dnorm, lsfit, pexp, pnorm, predict, - qnorm, rnorm, sd, uniroot, dchisq, model.matrix, pchisq) + qnorm, rnorm, sd, uniroot, dchisq, model.matrix, pchisq, resid) importFrom("stats", "coef", "df", "lm", "pf") importFrom("stats", "glm", "residuals", "vcov") importFrom("stats", "rbinom", "rexp") From eda1482654c33abf23ac0cc6218e4a69266b9ea4 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Tue, 7 Nov 2017 16:22:11 -0800 Subject: [PATCH 379/493] fixing to make check pass --- selectiveInference/R/funs.randomized.R | 24 +++++++++++++++++-- selectiveInference/man/randomizedLassoInf.Rd | 25 +++++++++----------- 2 files changed, 33 insertions(+), 16 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index de16951..357941a 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -317,12 +317,32 @@ randomizedLassoInf = function(X, condition_subgrad=TRUE, level=0.9, nsample=10000, - burnin=2000) { + burnin=2000, + max_iter=100, # how many iterations for each optimization problem + kkt_tol=1.e-4, # tolerance for the KKT conditions + parameter_tol=1.e-8, # tolerance for relative convergence of parameter + objective_tol=1.e-8, # tolerance for relative decrease in objective + objective_stop=FALSE, + kkt_stop=TRUE, + param_stop=TRUE) + { n = nrow(X) p = ncol(X) - lasso_soln = randomizedLasso(X, y, lam, noise_scale=noise_scale, ridge_term=ridge_term) + lasso_soln = randomizedLasso(X, + y, + lam, + noise_scale=noise_scale, + ridge_term=ridge_term, + max_iter=max_iter, + kkt_tol=kkt_tol, + parameter_tol=parameter_tol, + objective_tol=objective_tol, + objective_stop=objective_stop, + kkt_stop=kkt_stop, + param_stop=param_stop) + active_set = lasso_soln$active_set inactive_set = lasso_soln$inactive_set nactive = length(active_set) diff --git a/selectiveInference/man/randomizedLassoInf.Rd b/selectiveInference/man/randomizedLassoInf.Rd index 35d0dc4..15e70f0 100644 --- a/selectiveInference/man/randomizedLassoInf.Rd +++ b/selectiveInference/man/randomizedLassoInf.Rd @@ -68,20 +68,16 @@ In forming selective confidence intervals and p-values should we condition on the inactive coordinates of the subgradient as well? Default is TRUE. } -\item{level} -{ +\item{level}{ Level for confidence intervals. } -\item{nsample} -{ +\item{nsample}{ Number of samples of optimization variables to sample. } -\item{burnin} -{ +\item{burnin}{ How many samples of optimization variable to discard (should be less than nsample). } -\item{max_iter} -{ +\item{max_iter}{ How many rounds of updates used of coordinate descent in solving randomized LASSO. } @@ -99,10 +95,10 @@ of objective value. \item{kkt_stop}{ Should we use KKT check to determine when to stop? } -\item{parameter_tol}{ +\item{parameter_stop}{ Should we use convergence of parameters to determine when to stop? } -\item{objective_tol}{ +\item{objective_stop}{ Should we use convergence of objective value to determine when to stop? } } @@ -145,13 +141,14 @@ arxiv:1609.05609 set.seed(43) n = 50 p = 10 -sigma = 1 +sigma = 0.2 +lam = 0.5 -x = matrix(rnorm(n*p),n,p) -x = scale(x,TRUE,TRUE) +X = matrix(rnorm(n*p), n, p) +X = scale(X, TRUE, TRUE) beta = c(3,2,rep(0,p-2)) -y = x\%*\%beta + sigma*rnorm(n) +y = X\%*\%beta + sigma*rnorm(n) result = randomizedLassoInf(X, y, lam) From 3ca443199d474f740a14f2c252cd181c771dd2e7 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Tue, 7 Nov 2017 16:23:34 -0800 Subject: [PATCH 380/493] param_stop --- selectiveInference/R/funs.randomized.R | 8 ++++---- selectiveInference/man/randomizedLassoInf.Rd | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 357941a..ae8a463 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -15,7 +15,7 @@ randomizedLasso = function(X, objective_tol=1.e-8, # tolerance for relative decrease in objective objective_stop=FALSE, kkt_stop=TRUE, - param_stop=TRUE) + parameter_stop=TRUE) { n = nrow(X); p = ncol(X) @@ -80,7 +80,7 @@ randomizedLasso = function(X, p, objective_stop, # objective_stop kkt_stop, # kkt_stop - param_stop) # param_stop + parameter_stop) # param_stop sign_soln = sign(result$soln) @@ -324,7 +324,7 @@ randomizedLassoInf = function(X, objective_tol=1.e-8, # tolerance for relative decrease in objective objective_stop=FALSE, kkt_stop=TRUE, - param_stop=TRUE) + parameter_stop=TRUE) { n = nrow(X) @@ -341,7 +341,7 @@ randomizedLassoInf = function(X, objective_tol=objective_tol, objective_stop=objective_stop, kkt_stop=kkt_stop, - param_stop=param_stop) + parameter_stop=parameter_stop) active_set = lasso_soln$active_set inactive_set = lasso_soln$inactive_set diff --git a/selectiveInference/man/randomizedLassoInf.Rd b/selectiveInference/man/randomizedLassoInf.Rd index 15e70f0..7ce8fb7 100644 --- a/selectiveInference/man/randomizedLassoInf.Rd +++ b/selectiveInference/man/randomizedLassoInf.Rd @@ -145,7 +145,7 @@ sigma = 0.2 lam = 0.5 X = matrix(rnorm(n*p), n, p) -X = scale(X, TRUE, TRUE) +X = scale(X, TRUE, TRUE) / sqrt(n-1) beta = c(3,2,rep(0,p-2)) y = X\%*\%beta + sigma*rnorm(n) From 690f0ea59ea4eb1ddf52fa0415584def81af1e14 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Tue, 7 Nov 2017 18:19:35 -0800 Subject: [PATCH 381/493] fixing function signature --- selectiveInference/man/randomizedLassoInf.Rd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selectiveInference/man/randomizedLassoInf.Rd b/selectiveInference/man/randomizedLassoInf.Rd index 7ce8fb7..18b9611 100644 --- a/selectiveInference/man/randomizedLassoInf.Rd +++ b/selectiveInference/man/randomizedLassoInf.Rd @@ -27,7 +27,7 @@ randomizedLassoInf(X, objective_tol=1.e-8, objective_stop=FALSE, kkt_stop=TRUE, - param_stop=TRUE) + parameter_stop=TRUE) } \arguments{ \item{X}{ From 6c1a123fdeee79427b7638939f24111cead6565e Mon Sep 17 00:00:00 2001 From: Jelena Markovic Date: Tue, 7 Nov 2017 22:59:25 -0800 Subject: [PATCH 382/493] added mean and cov of a gaussian --- selectiveInference/R/RcppExports.R | 35 ++++++++++++++++++++++++++ selectiveInference/R/funs.randomized.R | 10 +++++++- 2 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 selectiveInference/R/RcppExports.R diff --git a/selectiveInference/R/RcppExports.R b/selectiveInference/R/RcppExports.R new file mode 100644 index 0000000..e927a3a --- /dev/null +++ b/selectiveInference/R/RcppExports.R @@ -0,0 +1,35 @@ +# Generated by using Rcpp::compileAttributes() -> do not edit by hand +# Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 + +solve_QP <- function(Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, parameter_tol, max_active, kkt_stop, objective_stop, param_stop) { + .Call('selectiveInference_solve_QP', PACKAGE = 'selectiveInference', Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, parameter_tol, max_active, kkt_stop, objective_stop, param_stop) +} + +solve_QP_wide <- function(X, bound, ridge_term, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, parameter_tol, max_active, kkt_stop, objective_stop, param_stop) { + .Call('selectiveInference_solve_QP_wide', PACKAGE = 'selectiveInference', X, bound, ridge_term, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, parameter_tol, max_active, kkt_stop, objective_stop, param_stop) +} + +update1_ <- function(Q2, w, m, k) { + .Call('selectiveInference_update1_', PACKAGE = 'selectiveInference', Q2, w, m, k) +} + +downdate1_ <- function(Q1, R, j0, m, n) { + .Call('selectiveInference_downdate1_', PACKAGE = 'selectiveInference', Q1, R, j0, m, n) +} + +log_density_gaussian_ <- function(noise_scale, internal_linear, internal_state, optimization_linear, optimization_state, offset) { + .Call('selectiveInference_log_density_gaussian_', PACKAGE = 'selectiveInference', noise_scale, internal_linear, internal_state, optimization_linear, optimization_state, offset) +} + +log_density_gaussian_conditional_ <- function(noise_scale, optimization_linear, optimization_state, offset) { + .Call('selectiveInference_log_density_gaussian_conditional_', PACKAGE = 'selectiveInference', noise_scale, optimization_linear, optimization_state, offset) +} + +log_density_laplace_ <- function(noise_scale, internal_linear, internal_state, optimization_linear, optimization_state, offset) { + .Call('selectiveInference_log_density_laplace_', PACKAGE = 'selectiveInference', noise_scale, internal_linear, internal_state, optimization_linear, optimization_state, offset) +} + +log_density_laplace_conditional_ <- function(noise_scale, optimization_linear, optimization_state, offset) { + .Call('selectiveInference_log_density_laplace_conditional_', PACKAGE = 'selectiveInference', noise_scale, optimization_linear, optimization_state, offset) +} + diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 6914fd7..192f648 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -239,7 +239,6 @@ importance_weight = function(noise_scale, A = apply(A, 2, function(x) {return(x + target_transform$offset_term + opt_transform$offset_term)}) log_num = -apply(A^2, 2, sum) / noise_scale^2 } else { - log_num = log_density_gaussian_(noise_scale, target_transform$linear_term, as.matrix(target_sample), @@ -262,6 +261,15 @@ importance_weight = function(noise_scale, W = W - max(W) return(exp(W)) } + +get_mean_cov = function(noise_scale, linear_term, offset_term){ + temp = solve(t(linear_term) %*% linear_term) + cov = noise_scale^2*temp + mean = temp %*% linear_term %*% offset_term + return(list(mean=mean, cov=cov)) +} + + conditional_density = function(noise_scale, lasso_soln) { From d2a3b9bf075fb76ace427831416e51cf8d322bb8 Mon Sep 17 00:00:00 2001 From: Jelena Markovic Date: Tue, 7 Nov 2017 23:04:22 -0800 Subject: [PATCH 383/493] transpose --- selectiveInference/R/funs.randomized.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 192f648..757b555 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -265,7 +265,7 @@ importance_weight = function(noise_scale, get_mean_cov = function(noise_scale, linear_term, offset_term){ temp = solve(t(linear_term) %*% linear_term) cov = noise_scale^2*temp - mean = temp %*% linear_term %*% offset_term + mean = temp %*% t(linear_term) %*% offset_term return(list(mean=mean, cov=cov)) } From e2efbdcbe5b8902113ce34e9d9847ebd7c72077e Mon Sep 17 00:00:00 2001 From: Jelena Markovic Date: Wed, 8 Nov 2017 18:15:24 -0800 Subject: [PATCH 384/493] working! bugs fixed. new sampler --- selectiveInference/R/funs.randomized.R | 83 +++++++++++++++------- selectiveInference/R/sampler.R | 96 ++++++++++++++++++++++++++ tests/randomized/test_instances.R | 53 ++++++++++++-- tests/randomized/test_sampler.R | 16 +++++ 4 files changed, 217 insertions(+), 31 deletions(-) create mode 100644 selectiveInference/R/sampler.R create mode 100644 tests/randomized/test_sampler.R diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 757b555..da64f99 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -33,11 +33,15 @@ randomizedLasso = function(X, if (is.null(noise_scale)) { noise_scale = 0.5 * sd(y) * sqrt(mean_diag) } - + + print(paste("ridge term", ridge_term)) + print(paste("noise scale", noise_scale)) + noise_type = match.arg(noise_type) if (noise_scale > 0) { if (noise_type == 'gaussian') { + set.seed(1) perturb_ = rnorm(p) * noise_scale } else if (noise_type == 'laplace') { @@ -65,8 +69,8 @@ randomizedLasso = function(X, nactive = as.integer(0) result = solve_QP_wide(X, # design matrix - lam / n, # vector of Lagrange multipliers - ridge_term / n, # ridge_term + lam / n, # vector of Lagrange multipliers + ridge_term / n, # ridge_term max_iter, soln, linear_func, @@ -76,12 +80,12 @@ randomizedLasso = function(X, nactive, kkt_tol, objective_tol, - parameter_tol, + parameter_tol, p, - objective_stop, # objective_stop - kkt_stop, # kkt_stop - parameter_stop) # param_stop - + objective_stop, # objective_stop + kkt_stop, # kkt_stop + parameter_stop) # param_stop + sign_soln = sign(result$soln) unpenalized = lam == 0 @@ -96,7 +100,11 @@ randomizedLasso = function(X, observed_scalings = abs(result$soln)[active] observed_unpen = result$soln[unpenalized] - observed_subgrad = result$gradient[inactive] + observed_subgrad = -n*result$gradient[inactive] + + if (length(which(abs(observed_subgrad)>lam[1]))){ + print("subgradient eq not satisfied") + } observed_opt_state = c(observed_unpen, observed_scalings, observed_subgrad) @@ -111,14 +119,15 @@ randomizedLasso = function(X, coef_term = L_E signs_ = c(rep(1, sum(unpenalized)), sign_soln[active]) + + coef_term[active,] = coef_term[active,] + ridge_term * diag(rep(1, sum(active))) # ridge term + if (length(signs_) == 1) { - coef_term = coef_term * signs_ + coef_term = coef_term * signs_ } else { - coef_term = coef_term %*% diag(signs_) # scaligns are non-negative + coef_term = coef_term %*% diag(signs_) # scaligns are non-negative } - - coef_term[active,] = coef_term[active,] + ridge_term * diag(rep(1, sum(active))) # ridge term - + subgrad_term = matrix(0, p, sum(inactive)) # for subgrad for (i in 1:sum(inactive)) { subgrad_term[inactive_set[i], i] = 1 @@ -155,7 +164,8 @@ randomizedLasso = function(X, inactive_lam = lam[inactive_set] inactive_start = sum(unpenalized) + sum(active) active_start = sum(unpenalized) - + + # XXX only for Gaussian so far log_optimization_density = function(opt_state) { @@ -185,9 +195,11 @@ randomizedLasso = function(X, optimization_transform = opt_transform, internal_transform = internal_transform, log_optimization_density = log_optimization_density, - observed_opt_state = observed_opt_state, + observed_opt_state = observed_opt_state, observed_raw = observed_raw, - noise_scale = noise_scale + noise_scale = noise_scale, + soln = result$soln, + perturb = perturb_ )) } @@ -314,19 +326,22 @@ conditional_density = function(noise_scale, lasso_soln) { lasso_soln$log_optimization_density = log_condl_optimization_density lasso_soln$observed_opt_state = observed_opt_state[1:nactive] lasso_soln$optimization_transform = opt_transform - return(lasso_soln) + reduced_opt_transform =list(linear_term = reduced_B, offset_term = reduced_beta_offset) + return(list(lasso_soln=lasso_soln, + reduced_opt_transform = reduced_opt_transform)) } randomizedLassoInf = function(X, y, lam, + sampler="A", sigma=NULL, noise_scale=NULL, ridge_term=NULL, condition_subgrad=TRUE, level=0.9, - nsample=10000, - burnin=2000, + nsample=10000, + burnin=2000, max_iter=100, # how many iterations for each optimization problem kkt_tol=1.e-4, # tolerance for the KKT conditions parameter_tol=1.e-8, # tolerance for relative convergence of parameter @@ -353,22 +368,35 @@ randomizedLassoInf = function(X, parameter_stop=parameter_stop) active_set = lasso_soln$active_set - if (length(active_set)==0){ + nactive = length(active_set) + print(paste("nactive", nactive)) + if (nactive==0){ return (list(active_set=active_set, pvalues=c(), ci=c())) } inactive_set = lasso_soln$inactive_set - nactive = length(active_set) + noise_scale = lasso_soln$noise_scale # set to default value in randomizedLasso if (condition_subgrad==TRUE){ - lasso_soln=conditional_density(noise_scale, lasso_soln) + condl_lasso=conditional_density(noise_scale, lasso_soln) + lasso_soln = condl_lasso$lasso_soln + reduced_opt_transform = condl_lasso$reduced_opt_transform } ndim = length(lasso_soln$observed_opt_state) - - S = sample_opt_variables(lasso_soln, jump_scale=rep(1/sqrt(n), ndim), nsample=nsample) - opt_samples = as.matrix(S$samples[(burnin+1):nsample,,drop=FALSE]) + + if (sampler =="R"){ + S = sample_opt_variables(lasso_soln, jump_scale=rep(1/sqrt(n), ndim), nsample=nsample) + opt_samples = as.matrix(S$samples[(burnin+1):nsample,,drop=FALSE]) + } else if (sampler == "A"){ + opt_samples = gaussian_sampler(noise_scale, + lasso_soln$observed_opt_state, + reduced_opt_transform$linear_term, + reduced_opt_transform$offset_term, + nsamples=nsample) + opt_sample = opt_samples[(burnin+1):nsample,] + } X_E = X[, active_set] X_minusE = X[, inactive_set] @@ -458,3 +486,6 @@ randomizedLassoInf = function(X, } return(list(active_set=active_set, pvalues=pvalues, ci=ci)) } + + + diff --git a/selectiveInference/R/sampler.R b/selectiveInference/R/sampler.R new file mode 100644 index 0000000..48efccc --- /dev/null +++ b/selectiveInference/R/sampler.R @@ -0,0 +1,96 @@ + +log_concave_sampler = function(negative_log_density, + grad_negative_log_density, + constraints, + observed, + nsamples){ + #print(constraints) + constraints = as.matrix(constraints) + dim = nrow(constraints) + + get_poisson_process = function(state){ + pos = as.matrix(state$pos) + velocity = as.matrix(state$velocity) + neg_velocity = velocity<0 + pos_velocity = velocity>0 + tau_min = 0 + tau_max = 10 + if (sum(neg_velocity)>0){ + R = (-constraints[neg_velocity,1]+pos[neg_velocity])/(-velocity[neg_velocity]) + tau_max = min(tau_max, min(R)) + L = (-constraints[neg_velocity,2]+pos[neg_velocity])/(-velocity[neg_velocity]) + tau_min = max(tau_min, max(L)) + } + if (sum(pos_velocity)>0){ + R = (constraints[pos_velocity,2]-pos[pos_velocity])/velocity[pos_velocity] + tau_max = min(tau_max, min(R)) + L = (constraints[pos_velocity,1]-pos[pos_velocity])/velocity[pos_velocity] + tau_min = max(tau_min, max(L)) + } + + f=function(t){as.numeric(t(velocity) %*% grad_negative_log_density(pos+velocity*t))} + tau_star = tau_max + if (f(tau_min)*f(tau_max)<0){ + tau_star = uniroot(f, c(tau_min, tau_max))$root + } else{ + if (negative_log_density(pos+velocity*tau_min)0){ @@ -61,7 +104,7 @@ collect_results = function(n,p,s, nsim=100, level=0.9, condition_subgrad=TRUE, l } set.seed(1) -collect_results(n=200, p=100, s=0, lam=2) - - +collect_results(n=100, p=2000, s=0, lam=3) +#test_randomized_lasso() +#test_KKT() diff --git a/tests/randomized/test_sampler.R b/tests/randomized/test_sampler.R new file mode 100644 index 0000000..e19a53f --- /dev/null +++ b/tests/randomized/test_sampler.R @@ -0,0 +1,16 @@ + +test_log_concave_sampler = function(){ + samples = log_concave_sampler(negative_log_density= function(x){x^2/2}, + grad_negative_log_density=function(x){x}, + constraints = t(as.matrix(c(2,3))), + observed = 2, nsamples=10000) + mean(samples) + hist(samples) +} + + +test_gaussian_sampler =function(){ + samples = gaussian_sampler(1, 1, 1, 0,10000) + mean(samples) + hist(samples) +} From e739255b7e190f4de4f4c75338455656f58f3a6d Mon Sep 17 00:00:00 2001 From: Jelena Markovic Date: Wed, 8 Nov 2017 21:33:12 -0800 Subject: [PATCH 385/493] active set zero --- tests/randomized/test_instances.R | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/randomized/test_instances.R b/tests/randomized/test_instances.R index 9e2e0d2..7f525a4 100644 --- a/tests/randomized/test_instances.R +++ b/tests/randomized/test_instances.R @@ -63,7 +63,7 @@ test_KKT=function(){ collect_results = function(n,p,s, nsim=100, level=0.9, condition_subgrad=TRUE, lam=1.2){ - rho=0. + rho=0.3 sigma=1 sample_pvalues = c() sample_coverage = c() @@ -80,9 +80,9 @@ collect_results = function(n,p,s, nsim=100, level=0.9, condition_subgrad=TRUE, l burnin=1000, nsample=5000, condition_subgrad=condition_subgrad) - true_beta = beta[result$active_set] - coverage = rep(0, nrow(result$ci)) if (length(result$active_set)>0){ + true_beta = beta[result$active_set] + coverage = rep(0, nrow(result$ci)) for (i in 1:nrow(result$ci)){ if (result$ci[i,1]true_beta[i]){ coverage[i]=1 @@ -104,7 +104,7 @@ collect_results = function(n,p,s, nsim=100, level=0.9, condition_subgrad=TRUE, l } set.seed(1) -collect_results(n=100, p=2000, s=0, lam=3) +collect_results(n=100, p=2000, s=0, lam=2.5) #test_randomized_lasso() #test_KKT() From b4fd8b521b4f5981250bc749fbfdf1e05df3faae Mon Sep 17 00:00:00 2001 From: Jelena Markovic Date: Wed, 8 Nov 2017 23:45:39 -0800 Subject: [PATCH 386/493] removed set seed when gen randomization --- selectiveInference/R/funs.randomized.R | 1 - tests/randomized/test_instances.R | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index da64f99..a086df9 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -41,7 +41,6 @@ randomizedLasso = function(X, if (noise_scale > 0) { if (noise_type == 'gaussian') { - set.seed(1) perturb_ = rnorm(p) * noise_scale } else if (noise_type == 'laplace') { diff --git a/tests/randomized/test_instances.R b/tests/randomized/test_instances.R index 7f525a4..7a89dd7 100644 --- a/tests/randomized/test_instances.R +++ b/tests/randomized/test_instances.R @@ -76,7 +76,7 @@ collect_results = function(n,p,s, nsim=100, level=0.9, condition_subgrad=TRUE, l lam=lam, sigma=sigma, level=level, - sampler = "A", + sampler = "R", burnin=1000, nsample=5000, condition_subgrad=condition_subgrad) From d2438c9512802d506f41208c1e54412073079145 Mon Sep 17 00:00:00 2001 From: Jelena Markovic Date: Thu, 9 Nov 2017 12:23:05 -0800 Subject: [PATCH 387/493] amir sampler working with subgrad condition false as well --- selectiveInference/R/funs.randomized.R | 25 +++++++++++++++++-------- selectiveInference/R/sampler.R | 10 ++++++---- tests/randomized/test_instances.R | 6 +++--- 3 files changed, 26 insertions(+), 15 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index a086df9..f3c3aac 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -374,14 +374,23 @@ randomizedLassoInf = function(X, } inactive_set = lasso_soln$inactive_set - noise_scale = lasso_soln$noise_scale # set to default value in randomizedLasso - - if (condition_subgrad==TRUE){ + + constraints = matrix(0,nactive,2) + constraints[,2] = Inf + if (condition_subgrad==TRUE){ condl_lasso=conditional_density(noise_scale, lasso_soln) lasso_soln = condl_lasso$lasso_soln - reduced_opt_transform = condl_lasso$reduced_opt_transform - } + cur_opt_transform = condl_lasso$reduced_opt_transform + } else{ + if (nactive Date: Thu, 9 Nov 2017 15:41:32 -0800 Subject: [PATCH 388/493] logistic --- selectiveInference/R/funs.randomized.R | 67 ++++++++++++++++++++------ tests/randomized/test_instances.R | 31 ++++++++---- 2 files changed, 74 insertions(+), 24 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index f3c3aac..ee414f4 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -6,6 +6,7 @@ randomizedLasso = function(X, y, lam, + family="gaussian", noise_scale=NULL, ridge_term=NULL, noise_type=c('gaussian', 'laplace'), @@ -17,7 +18,6 @@ randomizedLasso = function(X, kkt_stop=TRUE, parameter_stop=TRUE) { - n = nrow(X); p = ncol(X) mean_diag = mean(apply(X^2, 2, sum)) @@ -86,7 +86,7 @@ randomizedLasso = function(X, parameter_stop) # param_stop sign_soln = sign(result$soln) - + unpenalized = lam == 0 active = (!unpenalized) & (sign_soln != 0) inactive = (!unpenalized) & (sign_soln == 0) @@ -113,8 +113,21 @@ randomizedLasso = function(X, I = inactive_set X_E = X[,E] X_I = X[,I] - L_E = t(X) %*% X[,E] - + + if (family=="binomial"){ + unpen_reg = glm(y~X_E-1, family="binomial") + unpen_est = unpen_reg$coefficients + pi_fn = function(beta){ + temp = X_E %*% as.matrix(beta) + return(as.vector(exp(temp)/(1+exp(temp)))) # n-dimensional + } + pi_vec = pi_fn(unpen_est) + W_E = diag(pi_vec*(1-pi_vec)) + } else if (family=="gaussian"){ + W_E = diag(rep(1,n)) + } + L_E = t(X) %*% W_E %*% X[,E] + coef_term = L_E signs_ = c(rep(1, sum(unpenalized)), sign_soln[active]) @@ -158,8 +171,12 @@ randomizedLasso = function(X, offset_term = offset_term) # density for sampling optimization variables - + observed_raw = -t(X) %*% y + if (family=="binomial"){ + beta_E = result$soln[active_set] + observed_raw = observed_raw+t(X)%*%pi_fn(beta_E)-L_E %*% beta_E + } inactive_lam = lam[inactive_set] inactive_start = sum(unpenalized) + sum(active) active_start = sum(unpenalized) @@ -333,6 +350,7 @@ conditional_density = function(noise_scale, lasso_soln) { randomizedLassoInf = function(X, y, lam, + family="gaussian", sampler="A", sigma=NULL, noise_scale=NULL, @@ -352,10 +370,11 @@ randomizedLassoInf = function(X, n = nrow(X) p = ncol(X) - + lasso_soln = randomizedLasso(X, y, lam, + family=family, noise_scale=noise_scale, ridge_term=ridge_term, max_iter=max_iter, @@ -410,17 +429,32 @@ randomizedLassoInf = function(X, X_E = X[, active_set] X_minusE = X[, inactive_set] - # if no sigma given, use OLS estimate - + + + if (family=="gaussian"){ + lm_y = lm(y ~ X_E - 1) + sigma_resid = sqrt(sum(resid(lm_y)^2) / lm_y$df.resid) + observed_target = lm_y$coefficients + W_E = diag(rep(1,n)) + observed_internal = c(observed_target, t(X_minusE) %*% (y-X_E%*% observed_target)) + } else if (family=="binomial"){ + glm_y = glm(y~X_E-1) + sigma_resid = sqrt(sum(resid(glm_y)^2) / glm_y$df.resid) + observed_target = as.matrix(glm_y$coefficients) + temp = X_E%*%observed_target + pi_vec = exp(temp)/(1+exp(temp)) + observed_internal = c(observed_target, t(X_minusE) %*% (y-pi_vec)) + W_E=diag(as.vector(pi_vec *(1-pi_vec))) + } + + # if no sigma given, use the estimate + if (is.null(sigma)) { - lm_y = lm(y ~ X_E - 1) - sigma = sqrt(sum(resid(lm_y)^2) / lm_y$df.resid) + sigma = sigma_resid } - - target_cov = solve(t(X_E) %*% X_E)*sigma^2 + + target_cov = solve(t(X_E) %*% W_E %*% X_E)*sigma^2 cov_target_internal = rbind(target_cov, matrix(0, nrow=p-nactive, ncol=nactive)) - observed_target = solve(t(X_E) %*% X_E) %*% t(X_E) %*% y - observed_internal = c(observed_target, t(X_minusE) %*% (y-X_E%*% observed_target)) internal_transform = lasso_soln$internal_transform opt_transform = lasso_soln$optimization_transform observed_raw = lasso_soln$observed_raw @@ -495,5 +529,10 @@ randomizedLassoInf = function(X, return(list(active_set=active_set, pvalues=pvalues, ci=ci)) } + + + + + diff --git a/tests/randomized/test_instances.R b/tests/randomized/test_instances.R index 2255109..dc93ec5 100644 --- a/tests/randomized/test_instances.R +++ b/tests/randomized/test_instances.R @@ -1,7 +1,7 @@ library(selectiveInference) -gaussian_instance = function(n, p, s, sigma=1, rho=0, signal=6, X=NA, - random_signs=TRUE, scale=TRUE, center=TRUE, seed=NA){ +get_instance = function(n, p, s, sigma=1, rho=0, signal=6, family="gaussian", + X=NA, random_signs=TRUE, scale=TRUE, center=TRUE, seed=NA){ if (!is.na(seed)){ set.seed(seed) } @@ -19,11 +19,20 @@ gaussian_instance = function(n, p, s, sigma=1, rho=0, signal=6, X=NA, signs = sample(c(-1,1), s, replace = TRUE) beta = beta * signs } - y = X %*% beta + rnorm(n)*sigma + mu = X %*% beta + if (family=="gaussian"){ + y = mu + rnorm(n)*sigma + } else if (family=="binomial"){ + prob = exp(mu)/(1+exp(mu)) + y= rbinom(n,1, prob) + } result = list(X=X,y=y,beta=beta) return(result) } + + + test_randomized_lasso = function(n=100,p=200,s=0){ set.seed(1) data = gaussian_instance(n=n,p=p,s=s, rho=0.3, sigma=3) @@ -61,27 +70,29 @@ test_KKT=function(){ -collect_results = function(n,p,s, nsim=100, level=0.9, condition_subgrad=FALSE, lam=1.2){ +collect_results = function(n,p,s, nsim=100, level=0.9, + family = "gaussian", + condition_subgrad=FALSE, lam=1.2){ rho=0.3 sigma=1 sample_pvalues = c() sample_coverage = c() for (i in 1:nsim){ - data = gaussian_instance(n=n,p=p,s=s, rho=rho, sigma=sigma) + data = get_instance(n=n,p=p,s=s, rho=rho, sigma=sigma, family=family) X=data$X y=data$y - beta=data$beta result = selectiveInference:::randomizedLassoInf(X, y, - lam=lam, + lam, + family = family, + sampler = "A", sigma=sigma, level=level, - sampler = "A", burnin=1000, nsample=5000, condition_subgrad=condition_subgrad) if (length(result$active_set)>0){ - true_beta = beta[result$active_set] + true_beta = data$beta[result$active_set] coverage = rep(0, nrow(result$ci)) for (i in 1:nrow(result$ci)){ if (result$ci[i,1]true_beta[i]){ @@ -104,7 +115,7 @@ collect_results = function(n,p,s, nsim=100, level=0.9, condition_subgrad=FALSE, } set.seed(1) -collect_results(n=100, p=20, s=0, lam=1.2) +collect_results(n=100, p=20, s=0, lam=0.5) #test_randomized_lasso() #test_KKT() From 157c1db486e8d9df877a0cfc7a0221d60776da39 Mon Sep 17 00:00:00 2001 From: Jelena Markovic Date: Thu, 9 Nov 2017 16:02:53 -0800 Subject: [PATCH 389/493] E of zero length --- selectiveInference/R/funs.randomized.R | 5 +++++ tests/randomized/test_instances.R | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index ee414f4..9f2e4e2 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -114,6 +114,10 @@ randomizedLasso = function(X, X_E = X[,E] X_I = X[,I] + if (length(E)==0){ + return(list(active_set=c())) + } + if (family=="binomial"){ unpen_reg = glm(y~X_E-1, family="binomial") unpen_est = unpen_reg$coefficients @@ -126,6 +130,7 @@ randomizedLasso = function(X, } else if (family=="gaussian"){ W_E = diag(rep(1,n)) } + L_E = t(X) %*% W_E %*% X[,E] coef_term = L_E diff --git a/tests/randomized/test_instances.R b/tests/randomized/test_instances.R index dc93ec5..d5c3eca 100644 --- a/tests/randomized/test_instances.R +++ b/tests/randomized/test_instances.R @@ -71,7 +71,7 @@ test_KKT=function(){ collect_results = function(n,p,s, nsim=100, level=0.9, - family = "gaussian", + family = "binomial", condition_subgrad=FALSE, lam=1.2){ rho=0.3 @@ -115,7 +115,7 @@ collect_results = function(n,p,s, nsim=100, level=0.9, } set.seed(1) -collect_results(n=100, p=20, s=0, lam=0.5) +collect_results(n=100, p=20, s=0, lam=0.8) #test_randomized_lasso() #test_KKT() From 1dfbea8b3596f2f56c9f1ee7e5b29925e13f58cd Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 9 Nov 2017 21:59:39 -0800 Subject: [PATCH 390/493] fixing man page so check passes --- selectiveInference/R/RcppExports.R | 35 -------------------- selectiveInference/R/funs.randomized.R | 17 +++++----- selectiveInference/man/randomizedLassoInf.Rd | 5 +++ 3 files changed, 13 insertions(+), 44 deletions(-) delete mode 100644 selectiveInference/R/RcppExports.R diff --git a/selectiveInference/R/RcppExports.R b/selectiveInference/R/RcppExports.R deleted file mode 100644 index e927a3a..0000000 --- a/selectiveInference/R/RcppExports.R +++ /dev/null @@ -1,35 +0,0 @@ -# Generated by using Rcpp::compileAttributes() -> do not edit by hand -# Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 - -solve_QP <- function(Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, parameter_tol, max_active, kkt_stop, objective_stop, param_stop) { - .Call('selectiveInference_solve_QP', PACKAGE = 'selectiveInference', Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, parameter_tol, max_active, kkt_stop, objective_stop, param_stop) -} - -solve_QP_wide <- function(X, bound, ridge_term, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, parameter_tol, max_active, kkt_stop, objective_stop, param_stop) { - .Call('selectiveInference_solve_QP_wide', PACKAGE = 'selectiveInference', X, bound, ridge_term, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, parameter_tol, max_active, kkt_stop, objective_stop, param_stop) -} - -update1_ <- function(Q2, w, m, k) { - .Call('selectiveInference_update1_', PACKAGE = 'selectiveInference', Q2, w, m, k) -} - -downdate1_ <- function(Q1, R, j0, m, n) { - .Call('selectiveInference_downdate1_', PACKAGE = 'selectiveInference', Q1, R, j0, m, n) -} - -log_density_gaussian_ <- function(noise_scale, internal_linear, internal_state, optimization_linear, optimization_state, offset) { - .Call('selectiveInference_log_density_gaussian_', PACKAGE = 'selectiveInference', noise_scale, internal_linear, internal_state, optimization_linear, optimization_state, offset) -} - -log_density_gaussian_conditional_ <- function(noise_scale, optimization_linear, optimization_state, offset) { - .Call('selectiveInference_log_density_gaussian_conditional_', PACKAGE = 'selectiveInference', noise_scale, optimization_linear, optimization_state, offset) -} - -log_density_laplace_ <- function(noise_scale, internal_linear, internal_state, optimization_linear, optimization_state, offset) { - .Call('selectiveInference_log_density_laplace_', PACKAGE = 'selectiveInference', noise_scale, internal_linear, internal_state, optimization_linear, optimization_state, offset) -} - -log_density_laplace_conditional_ <- function(noise_scale, optimization_linear, optimization_state, offset) { - .Call('selectiveInference_log_density_laplace_conditional_', PACKAGE = 'selectiveInference', noise_scale, optimization_linear, optimization_state, offset) -} - diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index f3c3aac..f954e1c 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -34,9 +34,6 @@ randomizedLasso = function(X, noise_scale = 0.5 * sd(y) * sqrt(mean_diag) } - print(paste("ridge term", ridge_term)) - print(paste("noise scale", noise_scale)) - noise_type = match.arg(noise_type) if (noise_scale > 0) { @@ -333,14 +330,14 @@ conditional_density = function(noise_scale, lasso_soln) { randomizedLassoInf = function(X, y, lam, - sampler="A", sigma=NULL, noise_scale=NULL, ridge_term=NULL, condition_subgrad=TRUE, level=0.9, - nsample=10000, - burnin=2000, + sampler=c("norejection", "adaptMCMC"), + nsample=10000, + burnin=2000, max_iter=100, # how many iterations for each optimization problem kkt_tol=1.e-4, # tolerance for the KKT conditions parameter_tol=1.e-8, # tolerance for relative convergence of parameter @@ -368,7 +365,7 @@ randomizedLassoInf = function(X, active_set = lasso_soln$active_set nactive = length(active_set) - print(paste("nactive", nactive)) + if (nactive==0){ return (list(active_set=active_set, pvalues=c(), ci=c())) } @@ -394,10 +391,12 @@ randomizedLassoInf = function(X, ndim = length(lasso_soln$observed_opt_state) - if (sampler =="R"){ + sampler = match.arg(sampler) + + if (sampler == "adaptMCMC"){ S = sample_opt_variables(lasso_soln, jump_scale=rep(1/sqrt(n), ndim), nsample=nsample) opt_samples = as.matrix(S$samples[(burnin+1):nsample,,drop=FALSE]) - } else if (sampler == "A"){ + } else if (sampler == "norejection") { opt_samples = gaussian_sampler(noise_scale, lasso_soln$observed_opt_state, cur_opt_transform$linear_term, diff --git a/selectiveInference/man/randomizedLassoInf.Rd b/selectiveInference/man/randomizedLassoInf.Rd index 18b9611..e0f9d44 100644 --- a/selectiveInference/man/randomizedLassoInf.Rd +++ b/selectiveInference/man/randomizedLassoInf.Rd @@ -19,6 +19,7 @@ randomizedLassoInf(X, ridge_term=NULL, condition_subgrad=TRUE, level=0.9, + sampler=c("norejection", "adaptMCMC"), nsample=10000, burnin=2000, max_iter=100, @@ -71,6 +72,10 @@ Default is TRUE. \item{level}{ Level for confidence intervals. } +\item{sampler}{ +Which sampler to use -- default is a no-rejection sampler. Otherwise +use MCMC from the adaptMCMC package. +} \item{nsample}{ Number of samples of optimization variables to sample. } From b21260afe2e57afcc4053628591a71393463e3e2 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 9 Nov 2017 22:01:14 -0800 Subject: [PATCH 391/493] renaming file --- selectiveInference/R/{sampler.R => funs.sampler.R} | 1 + 1 file changed, 1 insertion(+) rename selectiveInference/R/{sampler.R => funs.sampler.R} (97%) diff --git a/selectiveInference/R/sampler.R b/selectiveInference/R/funs.sampler.R similarity index 97% rename from selectiveInference/R/sampler.R rename to selectiveInference/R/funs.sampler.R index c9e8ace..3f7f5fd 100644 --- a/selectiveInference/R/sampler.R +++ b/selectiveInference/R/funs.sampler.R @@ -1,3 +1,4 @@ +# A no-rejection MCMC algorithm Jelena and Amir have been working on log_concave_sampler = function(negative_log_density, grad_negative_log_density, From 183bc3abb230db8a828bf8db9f168dc1afde63e5 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 9 Nov 2017 22:03:47 -0800 Subject: [PATCH 392/493] stop instead of print --- selectiveInference/R/funs.randomized.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index f954e1c..5c5f3d1 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -98,8 +98,8 @@ randomizedLasso = function(X, observed_unpen = result$soln[unpenalized] observed_subgrad = -n*result$gradient[inactive] - if (length(which(abs(observed_subgrad)>lam[1]))){ - print("subgradient eq not satisfied") + if (sum(abs(observed_subgrad)>lam*(1.001)) > 0){ + stop("subgradient eq not satisfied") } observed_opt_state = c(observed_unpen, observed_scalings, observed_subgrad) From 42cd878bddf45a090b1ec54a0ca3aed7e4537bfa Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 9 Nov 2017 22:16:35 -0800 Subject: [PATCH 393/493] WIP: adding logistic option, need to solve logistic problem --- selectiveInference/R/funs.randomized.R | 27 ++++++++++---------- selectiveInference/man/randomizedLassoInf.Rd | 4 +++ 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 1dc835c..020698d 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -6,7 +6,7 @@ randomizedLasso = function(X, y, lam, - family="gaussian", + family=c("gaussian","binomial"), noise_scale=NULL, ridge_term=NULL, noise_type=c('gaussian', 'laplace'), @@ -18,6 +18,8 @@ randomizedLasso = function(X, kkt_stop=TRUE, parameter_stop=TRUE) { + family = match.arg(family) + n = nrow(X); p = ncol(X) mean_diag = mean(apply(X^2, 2, sum)) @@ -65,8 +67,8 @@ randomizedLasso = function(X, nactive = as.integer(0) result = solve_QP_wide(X, # design matrix - lam / n, # vector of Lagrange multipliers - ridge_term / n, # ridge_term + lam / n, # vector of Lagrange multipliers + ridge_term / n, # ridge_term max_iter, soln, linear_func, @@ -177,7 +179,7 @@ randomizedLasso = function(X, observed_raw = -t(X) %*% y if (family=="binomial"){ beta_E = result$soln[active_set] - observed_raw = observed_raw+t(X)%*%pi_fn(beta_E)-L_E %*% beta_E + observed_raw = observed_raw + t(X)%*%pi_fn(beta_E) - L_E %*% beta_E } inactive_lam = lam[inactive_set] inactive_start = sum(unpenalized) + sum(active) @@ -213,11 +215,11 @@ randomizedLasso = function(X, optimization_transform = opt_transform, internal_transform = internal_transform, log_optimization_density = log_optimization_density, - observed_opt_state = observed_opt_state, + observed_opt_state = observed_opt_state, observed_raw = observed_raw, - noise_scale = noise_scale, - soln = result$soln, - perturb = perturb_ + noise_scale = noise_scale, + soln = result$soln, + perturb = perturb_ )) } @@ -352,8 +354,7 @@ conditional_density = function(noise_scale, lasso_soln) { randomizedLassoInf = function(X, y, lam, - family=c("gaussian", "logistic"), - sampler=c("norejection", "adaptMCMC"), + family=c("gaussian", "binomial"), sigma=NULL, noise_scale=NULL, ridge_term=NULL, @@ -436,15 +437,13 @@ randomizedLassoInf = function(X, X_E = X[, active_set] X_minusE = X[, inactive_set] - - - if (family=="gaussian"){ + if (family == "gaussian") { lm_y = lm(y ~ X_E - 1) sigma_resid = sqrt(sum(resid(lm_y)^2) / lm_y$df.resid) observed_target = lm_y$coefficients W_E = diag(rep(1,n)) observed_internal = c(observed_target, t(X_minusE) %*% (y-X_E%*% observed_target)) - } else if (family=="binomial"){ + } else if (family == "binomial") { glm_y = glm(y~X_E-1) sigma_resid = sqrt(sum(resid(glm_y)^2) / glm_y$df.resid) observed_target = as.matrix(glm_y$coefficients) diff --git a/selectiveInference/man/randomizedLassoInf.Rd b/selectiveInference/man/randomizedLassoInf.Rd index e0f9d44..351596e 100644 --- a/selectiveInference/man/randomizedLassoInf.Rd +++ b/selectiveInference/man/randomizedLassoInf.Rd @@ -14,6 +14,7 @@ randomization. randomizedLassoInf(X, y, lam, + family=c("gaussian", "binomial"), sigma=NULL, noise_scale=NULL, ridge_term=NULL, @@ -49,6 +50,9 @@ Value of lambda used to compute beta. See the above warning where obj is the object returned by glmnet (and [-1] removes the intercept, which glmnet always puts in the first component) } +\item{family}{ +Response type: "gaussian" (default), "binomial". +} \item{sigma}{ Estimate of error standard deviation. If NULL (default), this is estimated using the mean squared residual of the full least squares based on From af3b818cb75b43f1dbc53c1e621fb6a7994027f7 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Fri, 10 Nov 2017 08:43:56 -0800 Subject: [PATCH 394/493] fixing empty inactive set indexing problem --- selectiveInference/R/funs.randomized.R | 40 +++++++++++++++----------- tests/randomized/test_instances.R | 6 ++-- 2 files changed, 27 insertions(+), 19 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 020698d..5be7938 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -78,11 +78,11 @@ randomizedLasso = function(X, nactive, kkt_tol, objective_tol, - parameter_tol, + parameter_tol, p, - objective_stop, # objective_stop - kkt_stop, # kkt_stop - parameter_stop) # param_stop + objective_stop, # objective_stop + kkt_stop, # kkt_stop + parameter_stop) # param_stop sign_soln = sign(result$soln) @@ -100,7 +100,7 @@ randomizedLasso = function(X, observed_unpen = result$soln[unpenalized] observed_subgrad = -n*result$gradient[inactive] - if (sum(abs(observed_subgrad)>lam*(1.001)) > 0){ + if (sum(abs(observed_subgrad)>lam[inactive]*(1.001)) > 0){ stop("subgradient eq not satisfied") } @@ -144,14 +144,17 @@ randomizedLasso = function(X, coef_term = coef_term %*% diag(signs_) # scaligns are non-negative } - subgrad_term = matrix(0, p, sum(inactive)) # for subgrad - for (i in 1:sum(inactive)) { - subgrad_term[inactive_set[i], i] = 1 - } - - linear_term = cbind(coef_term, - subgrad_term) - + if (sum(inactive) > 0) { + subgrad_term = matrix(0, p, sum(inactive)) # for subgrad + for (i in 1:sum(inactive)) { + subgrad_term[inactive_set[i], i] = 1 + } + + linear_term = cbind(coef_term, + subgrad_term) + } else { + linear_term = coef_term + } offset_term = rep(0, p) offset_term[active] = lam[active] * sign_soln[active] @@ -167,9 +170,14 @@ randomizedLasso = function(X, active_term = -L_E # for \bar{\beta}_E - inactive_term = -subgrad_term - linear_term = cbind(active_term, - inactive_term) + if (sum(inactive) > 0) { + inactive_term = -subgrad_term + linear_term = cbind(active_term, + inactive_term) + } else { + linear_term = active_term + } + offset_term = rep(0, p) internal_transform = list(linear_term = linear_term, offset_term = offset_term) diff --git a/tests/randomized/test_instances.R b/tests/randomized/test_instances.R index d5c3eca..8155e5f 100644 --- a/tests/randomized/test_instances.R +++ b/tests/randomized/test_instances.R @@ -85,7 +85,7 @@ collect_results = function(n,p,s, nsim=100, level=0.9, result = selectiveInference:::randomizedLassoInf(X, y, lam, family = family, - sampler = "A", + sampler = "adaptMCMC", sigma=sigma, level=level, burnin=1000, @@ -114,8 +114,8 @@ collect_results = function(n,p,s, nsim=100, level=0.9, } } -set.seed(1) -collect_results(n=100, p=20, s=0, lam=0.8) +#set.seed(1) +collect_results(n=500, p=200, s=0, lam=0.8) #test_randomized_lasso() #test_KKT() From 291aa666555952c41503df8cff7662f21d7f9a71 Mon Sep 17 00:00:00 2001 From: Jelena Markovic Date: Fri, 10 Nov 2017 15:24:23 -0800 Subject: [PATCH 395/493] logistic solver --- selectiveInference/R/funs.randomized.R | 62 ++++++++++++++++++++++++++ tests/randomized/test_instances.R | 27 ++++++++--- 2 files changed, 83 insertions(+), 6 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 5be7938..b94ee53 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -544,8 +544,70 @@ randomizedLassoInf = function(X, } +solve_logistic=function(X, y, lam, + ridge_term, + perturb, + niters=5, + max_iter=100, # how many iterations for each optimization problem + kkt_tol=1.e-4, # tolerance for the KKT conditions + parameter_tol=1.e-8, # tolerance for relative convergence of parameter + objective_tol=1.e-8, # tolerance for relative decrease in objective + objective_stop=FALSE, + kkt_stop=TRUE, + parameter_stop=TRUE){ + + n=nrow(X); p=ncol(X) + soln = rep(0, p) + ever_active = rep(0, p) + nactive = as.integer(0) + + pi_fn = function(beta){ + print(length(as.vector(beta))) + print(dim(X)) + temp = X %*% as.vector(beta) + return(as.vector(exp(temp)/(1+exp(temp)))) # n-dimensional + } + + for (i in 1:niters){ + print(paste("iteration ", i)) + pi_vec = pi_fn(soln) + rootW = diag(sqrt(as.vector(pi_vec*(1-pi_vec)))) + weighted_X = rootW %*% X + Xsoln = weighted_X %*% soln + gradient = -t(X)%*%(y-pi_vec)-perturb + linear_func = gradient-t(weighted_X) %*% weighted_X %*% as.vector(soln) + gradient = gradient/n + linear_func = linear_func/n + print(length(gradient)) + print(length(linear_func)) + + result = solve_QP_wide(weighted_X, # design matrix + lam / n, # vector of Lagrange multipliers + ridge_term / n, # ridge_term + max_iter, + soln, + linear_func, + gradient, + Xsoln, + ever_active, + nactive, + kkt_tol, + objective_tol, + parameter_tol, + p, + objective_stop, # objective_stop + kkt_stop, # kkt_stop + parameter_stop) # param_stop + #soln = result$soln + #print(length(soln)) + print(paste("soln", length(soln))) + } + return(soln) +} + + diff --git a/tests/randomized/test_instances.R b/tests/randomized/test_instances.R index 8155e5f..35136c2 100644 --- a/tests/randomized/test_instances.R +++ b/tests/randomized/test_instances.R @@ -35,7 +35,7 @@ get_instance = function(n, p, s, sigma=1, rho=0, signal=6, family="gaussian", test_randomized_lasso = function(n=100,p=200,s=0){ set.seed(1) - data = gaussian_instance(n=n,p=p,s=s, rho=0.3, sigma=3) + data = get_instance(n=n,p=p,s=s, rho=0.3, sigma=1, family="binomial") X=data$X y=data$y lam = 2. @@ -47,6 +47,24 @@ test_randomized_lasso = function(n=100,p=200,s=0){ print(result$observed_opt_state) # compared with python code } +test_randomized_logistic = function(n=100,p=20,s=0){ + set.seed(1) + data = get_instance(n=n,p=p,s=s, rho=0.3, sigma=1, family="binomial") + X=data$X + y=data$y + lam = 1.2 + noise_scale = 0.5 + ridge_term = 1./sqrt(n) + set.seed(1) + perturb = rnorm(p)*noise_scale + result = selectiveInference:::solve_logistic(X,y,lam, ridge_term, perturb) + print(result$soln) + print(length(which(result$soln!=0))) +} + +test_randomized_logistic() + + test_KKT=function(){ set.seed(1) n=200 @@ -69,7 +87,6 @@ test_KKT=function(){ } - collect_results = function(n,p,s, nsim=100, level=0.9, family = "binomial", condition_subgrad=FALSE, lam=1.2){ @@ -114,8 +131,6 @@ collect_results = function(n,p,s, nsim=100, level=0.9, } } -#set.seed(1) -collect_results(n=500, p=200, s=0, lam=0.8) -#test_randomized_lasso() -#test_KKT() +set.seed(1) +collect_results(n=100, p=20, s=0, lam=0.8) From bb5fe6bfeb99bfedb05b08c71f3e6da5093f0ca2 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Fri, 10 Nov 2017 15:56:21 -0800 Subject: [PATCH 396/493] bug fixes to logistic solver --- selectiveInference/R/funs.randomized.R | 48 +++++++++++++++++--------- 1 file changed, 32 insertions(+), 16 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index b94ee53..ec4fa6b 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -63,7 +63,7 @@ randomizedLasso = function(X, linear_func = (- t(X) %*% y - perturb_) / n gradient = 1. * linear_func - ever_active = rep(0, p) + ever_active = as.integer(rep(0, p)) nactive = as.integer(0) result = solve_QP_wide(X, # design matrix @@ -544,24 +544,31 @@ randomizedLassoInf = function(X, } -solve_logistic=function(X, y, lam, - ridge_term, - perturb, - niters=5, - max_iter=100, # how many iterations for each optimization problem - kkt_tol=1.e-4, # tolerance for the KKT conditions - parameter_tol=1.e-8, # tolerance for relative convergence of parameter - objective_tol=1.e-8, # tolerance for relative decrease in objective - objective_stop=FALSE, - kkt_stop=TRUE, - parameter_stop=TRUE){ +solve_logistic=function(X, + y, + lam, + ridge_term, + perturb, + niters=5, + max_iter=100, # how many iterations for each optimization problem + kkt_tol=1.e-4, # tolerance for the KKT conditions + parameter_tol=1.e-8, # tolerance for relative convergence of parameter + objective_tol=1.e-8, # tolerance for relative decrease in objective + objective_stop=FALSE, + kkt_stop=TRUE, + parameter_stop=TRUE){ n=nrow(X); p=ncol(X) soln = rep(0, p) - ever_active = rep(0, p) + ever_active = as.integer(rep(0, p)) nactive = as.integer(0) - pi_fn = function(beta){ + lam = as.numeric(lam) + if (length(lam) == 1) { + lam = rep(lam, p) + } + + pi_fn = function(X, beta){ print(length(as.vector(beta))) print(dim(X)) temp = X %*% as.vector(beta) @@ -570,7 +577,7 @@ solve_logistic=function(X, y, lam, for (i in 1:niters){ print(paste("iteration ", i)) - pi_vec = pi_fn(soln) + pi_vec = pi_fn(X, soln) rootW = diag(sqrt(as.vector(pi_vec*(1-pi_vec)))) weighted_X = rootW %*% X Xsoln = weighted_X %*% soln @@ -582,6 +589,7 @@ solve_logistic=function(X, y, lam, print(length(gradient)) print(length(linear_func)) + print(paste("soln pre", length(soln))) result = solve_QP_wide(weighted_X, # design matrix lam / n, # vector of Lagrange multipliers ridge_term / n, # ridge_term @@ -600,11 +608,19 @@ solve_logistic=function(X, y, lam, kkt_stop, # kkt_stop parameter_stop) # param_stop + + pi_vec = pi_fn(X, soln) + gradient = -t(X)%*%(y-pi_vec)-perturb + print(c("gradient", gradient)) + print(c("soln", soln)) + print(c("lam", lam)) + print(c("nactive", nactive)) + print(c("ever_active", ever_active)) #soln = result$soln #print(length(soln)) print(paste("soln", length(soln))) } - return(soln) + return(result) } From 98e76899192d524fac3daed0c2189158e29a66a6 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Fri, 10 Nov 2017 16:06:08 -0800 Subject: [PATCH 397/493] smaller lambda --- tests/randomized/test_instances.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/randomized/test_instances.R b/tests/randomized/test_instances.R index 35136c2..2572e3b 100644 --- a/tests/randomized/test_instances.R +++ b/tests/randomized/test_instances.R @@ -52,7 +52,7 @@ test_randomized_logistic = function(n=100,p=20,s=0){ data = get_instance(n=n,p=p,s=s, rho=0.3, sigma=1, family="binomial") X=data$X y=data$y - lam = 1.2 + lam = 0.5 noise_scale = 0.5 ridge_term = 1./sqrt(n) set.seed(1) @@ -132,5 +132,5 @@ collect_results = function(n,p,s, nsim=100, level=0.9, } set.seed(1) -collect_results(n=100, p=20, s=0, lam=0.8) +#collect_results(n=100, p=20, s=0, lam=0.8) From 1a27dc830ce1e9f2077f971ac1ad5c009bf8e03b Mon Sep 17 00:00:00 2001 From: Jelena Markovic Date: Fri, 10 Nov 2017 16:31:17 -0800 Subject: [PATCH 398/493] logistic not working well --- selectiveInference/R/RcppExports.R | 35 +++++++++++++ selectiveInference/R/funs.randomized.R | 68 ++++++++++++++++---------- tests/randomized/test_instances.R | 6 +-- 3 files changed, 79 insertions(+), 30 deletions(-) create mode 100644 selectiveInference/R/RcppExports.R diff --git a/selectiveInference/R/RcppExports.R b/selectiveInference/R/RcppExports.R new file mode 100644 index 0000000..e927a3a --- /dev/null +++ b/selectiveInference/R/RcppExports.R @@ -0,0 +1,35 @@ +# Generated by using Rcpp::compileAttributes() -> do not edit by hand +# Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 + +solve_QP <- function(Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, parameter_tol, max_active, kkt_stop, objective_stop, param_stop) { + .Call('selectiveInference_solve_QP', PACKAGE = 'selectiveInference', Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, parameter_tol, max_active, kkt_stop, objective_stop, param_stop) +} + +solve_QP_wide <- function(X, bound, ridge_term, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, parameter_tol, max_active, kkt_stop, objective_stop, param_stop) { + .Call('selectiveInference_solve_QP_wide', PACKAGE = 'selectiveInference', X, bound, ridge_term, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, parameter_tol, max_active, kkt_stop, objective_stop, param_stop) +} + +update1_ <- function(Q2, w, m, k) { + .Call('selectiveInference_update1_', PACKAGE = 'selectiveInference', Q2, w, m, k) +} + +downdate1_ <- function(Q1, R, j0, m, n) { + .Call('selectiveInference_downdate1_', PACKAGE = 'selectiveInference', Q1, R, j0, m, n) +} + +log_density_gaussian_ <- function(noise_scale, internal_linear, internal_state, optimization_linear, optimization_state, offset) { + .Call('selectiveInference_log_density_gaussian_', PACKAGE = 'selectiveInference', noise_scale, internal_linear, internal_state, optimization_linear, optimization_state, offset) +} + +log_density_gaussian_conditional_ <- function(noise_scale, optimization_linear, optimization_state, offset) { + .Call('selectiveInference_log_density_gaussian_conditional_', PACKAGE = 'selectiveInference', noise_scale, optimization_linear, optimization_state, offset) +} + +log_density_laplace_ <- function(noise_scale, internal_linear, internal_state, optimization_linear, optimization_state, offset) { + .Call('selectiveInference_log_density_laplace_', PACKAGE = 'selectiveInference', noise_scale, internal_linear, internal_state, optimization_linear, optimization_state, offset) +} + +log_density_laplace_conditional_ <- function(noise_scale, optimization_linear, optimization_state, offset) { + .Call('selectiveInference_log_density_laplace_conditional_', PACKAGE = 'selectiveInference', noise_scale, optimization_linear, optimization_state, offset) +} + diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index ec4fa6b..bf958ea 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -58,15 +58,17 @@ randomizedLasso = function(X, stop("Lagrange parameter should be single float or of length ncol(X)") } - soln = rep(0, p) - Xsoln = rep(0, n) - linear_func = (- t(X) %*% y - perturb_) / n - - gradient = 1. * linear_func - ever_active = as.integer(rep(0, p)) - nactive = as.integer(0) - - result = solve_QP_wide(X, # design matrix + + if (family=="gaussian"){ + soln = rep(0, p) + Xsoln = rep(0, n) + linear_func = (- t(X) %*% y - perturb_) / n + + gradient = 1. * linear_func + ever_active = as.integer(rep(0, p)) + nactive = as.integer(0) + + result = solve_QP_wide(X, # design matrix lam / n, # vector of Lagrange multipliers ridge_term / n, # ridge_term max_iter, @@ -83,7 +85,21 @@ randomizedLasso = function(X, objective_stop, # objective_stop kkt_stop, # kkt_stop parameter_stop) # param_stop - + } else if (family=="binomial"){ + result = solve_logistic(X, + y, + lam, + ridge_term, + perturb_, + niters=5, + max_iter=max_iter, # how many iterations for each optimization problem + kkt_tol=kkt_tol, # tolerance for the KKT conditions + parameter_tol=parameter_tol, # tolerance for relative convergence of parameter + objective_tol=objective_tol, # tolerance for relative decrease in objective + objective_stop=objective_stop, + kkt_stop=kkt_stop, + parameter_stop=parameter_stop) + } sign_soln = sign(result$soln) unpenalized = lam == 0 @@ -453,7 +469,7 @@ randomizedLassoInf = function(X, observed_internal = c(observed_target, t(X_minusE) %*% (y-X_E%*% observed_target)) } else if (family == "binomial") { glm_y = glm(y~X_E-1) - sigma_resid = sqrt(sum(resid(glm_y)^2) / glm_y$df.resid) + sigma_resid = 1 observed_target = as.matrix(glm_y$coefficients) temp = X_E%*%observed_target pi_vec = exp(temp)/(1+exp(temp)) @@ -484,7 +500,6 @@ randomizedLassoInf = function(X, cov_target_internal[,i], internal_transform) - # changing dimension of density evalutaion if ((condition_subgrad == TRUE) & (nactive < p)) { @@ -569,14 +584,14 @@ solve_logistic=function(X, } pi_fn = function(X, beta){ - print(length(as.vector(beta))) - print(dim(X)) + #print(length(as.vector(beta))) + #print(dim(X)) temp = X %*% as.vector(beta) return(as.vector(exp(temp)/(1+exp(temp)))) # n-dimensional } for (i in 1:niters){ - print(paste("iteration ", i)) + #print(paste("iteration ", i)) pi_vec = pi_fn(X, soln) rootW = diag(sqrt(as.vector(pi_vec*(1-pi_vec)))) weighted_X = rootW %*% X @@ -586,10 +601,9 @@ solve_logistic=function(X, linear_func = gradient-t(weighted_X) %*% weighted_X %*% as.vector(soln) gradient = gradient/n linear_func = linear_func/n - print(length(gradient)) - print(length(linear_func)) - - print(paste("soln pre", length(soln))) + #print(length(gradient)) + #print(length(linear_func)) + #print(paste("soln pre", length(soln))) result = solve_QP_wide(weighted_X, # design matrix lam / n, # vector of Lagrange multipliers ridge_term / n, # ridge_term @@ -609,16 +623,16 @@ solve_logistic=function(X, parameter_stop) # param_stop - pi_vec = pi_fn(X, soln) - gradient = -t(X)%*%(y-pi_vec)-perturb - print(c("gradient", gradient)) - print(c("soln", soln)) - print(c("lam", lam)) - print(c("nactive", nactive)) - print(c("ever_active", ever_active)) + #pi_vec = pi_fn(X, soln) + #gradient = -t(X)%*%(y-pi_vec)-perturb + #print(c("gradient", gradient)) + #print(c("soln", soln)) + #print(c("lam", lam)) + #print(c("nactive", nactive)) + #print(c("ever_active", ever_active)) #soln = result$soln #print(length(soln)) - print(paste("soln", length(soln))) + #print(paste("soln", length(soln))) } return(result) } diff --git a/tests/randomized/test_instances.R b/tests/randomized/test_instances.R index 2572e3b..92071dd 100644 --- a/tests/randomized/test_instances.R +++ b/tests/randomized/test_instances.R @@ -62,7 +62,7 @@ test_randomized_logistic = function(n=100,p=20,s=0){ print(length(which(result$soln!=0))) } -test_randomized_logistic() +#test_randomized_logistic() test_KKT=function(){ @@ -102,7 +102,7 @@ collect_results = function(n,p,s, nsim=100, level=0.9, result = selectiveInference:::randomizedLassoInf(X, y, lam, family = family, - sampler = "adaptMCMC", + sampler = "norejection", #"adaptMCMC", sigma=sigma, level=level, burnin=1000, @@ -132,5 +132,5 @@ collect_results = function(n,p,s, nsim=100, level=0.9, } set.seed(1) -#collect_results(n=100, p=20, s=0, lam=0.8) +collect_results(n=100, p=20, s=0, lam=0.8) From aa6b5b7c611ab6b543d3cdfe8b2b60743e38dc2c Mon Sep 17 00:00:00 2001 From: Jelena Markovic Date: Fri, 10 Nov 2017 17:50:07 -0800 Subject: [PATCH 399/493] randomized logistic working --- selectiveInference/R/funs.randomized.R | 59 +++++++++----------------- tests/randomized/test_instances.R | 8 ++-- 2 files changed, 24 insertions(+), 43 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index bf958ea..2aeeee6 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -58,7 +58,6 @@ randomizedLasso = function(X, stop("Lagrange parameter should be single float or of length ncol(X)") } - if (family=="gaussian"){ soln = rep(0, p) Xsoln = rep(0, n) @@ -128,7 +127,7 @@ randomizedLasso = function(X, I = inactive_set X_E = X[,E] X_I = X[,I] - + print(c("nactive", length(E))) if (length(E)==0){ return(list(active_set=c())) } @@ -136,11 +135,7 @@ randomizedLasso = function(X, if (family=="binomial"){ unpen_reg = glm(y~X_E-1, family="binomial") unpen_est = unpen_reg$coefficients - pi_fn = function(beta){ - temp = X_E %*% as.matrix(beta) - return(as.vector(exp(temp)/(1+exp(temp)))) # n-dimensional - } - pi_vec = pi_fn(unpen_est) + pi_vec = pi_fn(X_E, unpen_est) W_E = diag(pi_vec*(1-pi_vec)) } else if (family=="gaussian"){ W_E = diag(rep(1,n)) @@ -200,10 +195,14 @@ randomizedLasso = function(X, # density for sampling optimization variables - observed_raw = -t(X) %*% y + if (family=="binomial"){ - beta_E = result$soln[active_set] - observed_raw = observed_raw + t(X)%*%pi_fn(beta_E) - L_E %*% beta_E + #beta_E = result$soln[active_set] + #observed_raw = observed_raw + t(X) %*% pi_fn(beta_E) - L_E %*% beta_E + unpen_est = as.vector(glm(y~X_E-1, family="binomial")$coefficients) + observed_raw = -t(X) %*% (y-pi_fn(X_E, unpen_est))-L_E %*% unpen_est + } else if (family=="gaussian"){ + observed_raw = -t(X) %*% y } inactive_lam = lam[inactive_set] inactive_start = sum(unpenalized) + sum(active) @@ -417,7 +416,7 @@ randomizedLassoInf = function(X, active_set = lasso_soln$active_set nactive = length(active_set) - + print(c("nactive", nactive)) if (nactive==0){ return (list(active_set=active_set, pvalues=c(), ci=c())) } @@ -468,11 +467,10 @@ randomizedLassoInf = function(X, W_E = diag(rep(1,n)) observed_internal = c(observed_target, t(X_minusE) %*% (y-X_E%*% observed_target)) } else if (family == "binomial") { - glm_y = glm(y~X_E-1) + glm_y = glm(y~X_E-1, family="binomial") sigma_resid = 1 - observed_target = as.matrix(glm_y$coefficients) - temp = X_E%*%observed_target - pi_vec = exp(temp)/(1+exp(temp)) + observed_target = as.vector(glm_y$coefficients) + pi_vec = pi_fn(X_E, observed_target) observed_internal = c(observed_target, t(X_minusE) %*% (y-pi_vec)) W_E=diag(as.vector(pi_vec *(1-pi_vec))) } @@ -558,6 +556,10 @@ randomizedLassoInf = function(X, return(list(active_set=active_set, pvalues=pvalues, ci=ci)) } +pi_fn = function(X, beta){ + temp = X %*% as.matrix(beta) + return(as.vector(exp(temp)/(1+exp(temp)))) # n-dimensional +} solve_logistic=function(X, y, @@ -578,20 +580,12 @@ solve_logistic=function(X, ever_active = as.integer(rep(0, p)) nactive = as.integer(0) - lam = as.numeric(lam) - if (length(lam) == 1) { + lam = as.numeric(lam) + if (length(lam) == 1) { lam = rep(lam, p) - } - - pi_fn = function(X, beta){ - #print(length(as.vector(beta))) - #print(dim(X)) - temp = X %*% as.vector(beta) - return(as.vector(exp(temp)/(1+exp(temp)))) # n-dimensional } for (i in 1:niters){ - #print(paste("iteration ", i)) pi_vec = pi_fn(X, soln) rootW = diag(sqrt(as.vector(pi_vec*(1-pi_vec)))) weighted_X = rootW %*% X @@ -601,9 +595,7 @@ solve_logistic=function(X, linear_func = gradient-t(weighted_X) %*% weighted_X %*% as.vector(soln) gradient = gradient/n linear_func = linear_func/n - #print(length(gradient)) - #print(length(linear_func)) - #print(paste("soln pre", length(soln))) + result = solve_QP_wide(weighted_X, # design matrix lam / n, # vector of Lagrange multipliers ridge_term / n, # ridge_term @@ -622,17 +614,6 @@ solve_logistic=function(X, kkt_stop, # kkt_stop parameter_stop) # param_stop - - #pi_vec = pi_fn(X, soln) - #gradient = -t(X)%*%(y-pi_vec)-perturb - #print(c("gradient", gradient)) - #print(c("soln", soln)) - #print(c("lam", lam)) - #print(c("nactive", nactive)) - #print(c("ever_active", ever_active)) - #soln = result$soln - #print(length(soln)) - #print(paste("soln", length(soln))) } return(result) } diff --git a/tests/randomized/test_instances.R b/tests/randomized/test_instances.R index 92071dd..7ea756c 100644 --- a/tests/randomized/test_instances.R +++ b/tests/randomized/test_instances.R @@ -89,9 +89,9 @@ test_KKT=function(){ collect_results = function(n,p,s, nsim=100, level=0.9, family = "binomial", - condition_subgrad=FALSE, lam=1.2){ + condition_subgrad=TRUE, lam=1.2){ - rho=0.3 + rho=0. sigma=1 sample_pvalues = c() sample_coverage = c() @@ -102,7 +102,7 @@ collect_results = function(n,p,s, nsim=100, level=0.9, result = selectiveInference:::randomizedLassoInf(X, y, lam, family = family, - sampler = "norejection", #"adaptMCMC", + sampler = "adaptMCMC", #"norejection", # sigma=sigma, level=level, burnin=1000, @@ -132,5 +132,5 @@ collect_results = function(n,p,s, nsim=100, level=0.9, } set.seed(1) -collect_results(n=100, p=20, s=0, lam=0.8) +collect_results(n=100, p=20, s=0, lam=0.5) From f3f155e081451917caf99431eccdd7866f308935 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Sat, 11 Nov 2017 12:50:36 -0800 Subject: [PATCH 400/493] BF: rob's bug with nactive=p-1 --- selectiveInference/R/funs.randomized.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index ec4fa6b..cd6c33b 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -325,7 +325,7 @@ conditional_density = function(noise_scale, lasso_soln) { p = length(observed_opt_state) if (nactive < p) { - beta_offset = beta_offset+(opt_linear[,(nactive+1):p] %*% observed_opt_state[(nactive+1):p]) + beta_offset = beta_offset+(opt_linear[,(nactive+1):p,drop=FALSE] %*% observed_opt_state[(nactive+1):p]) } opt_transform = list(linear_term=B, offset_term = beta_offset) @@ -487,7 +487,7 @@ randomizedLassoInf = function(X, # changing dimension of density evalutaion - if ((condition_subgrad == TRUE) & (nactive < p)) { + if ((condition_subgrad == TRUE) & (nactive < p-1)) { target_opt_linear = cbind(target_transform$linear_term, opt_transform$linear_term) reduced_target_opt_linear = chol(t(target_opt_linear) %*% target_opt_linear) target_linear = reduced_target_opt_linear[,1] From 67e8e2926bc43773ad0fc6cfd0b3603bc59c6c1f Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Sat, 11 Nov 2017 12:57:53 -0800 Subject: [PATCH 401/493] removing Rcpp file, few edits to randomized funs --- selectiveInference/R/funs.randomized.R | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 4f8347b..29b4a9f 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -127,7 +127,7 @@ randomizedLasso = function(X, I = inactive_set X_E = X[,E] X_I = X[,I] - print(c("nactive", length(E))) + if (length(E)==0){ return(list(active_set=c())) } @@ -135,7 +135,7 @@ randomizedLasso = function(X, if (family=="binomial"){ unpen_reg = glm(y~X_E-1, family="binomial") unpen_est = unpen_reg$coefficients - pi_vec = pi_fn(X_E, unpen_est) + pi_vec = logistic_fitted(X_E, unpen_est) W_E = diag(pi_vec*(1-pi_vec)) } else if (family=="gaussian"){ W_E = diag(rep(1,n)) @@ -195,12 +195,9 @@ randomizedLasso = function(X, # density for sampling optimization variables - if (family=="binomial"){ - #beta_E = result$soln[active_set] - #observed_raw = observed_raw + t(X) %*% pi_fn(beta_E) - L_E %*% beta_E unpen_est = as.vector(glm(y~X_E-1, family="binomial")$coefficients) - observed_raw = -t(X) %*% (y-pi_fn(X_E, unpen_est))-L_E %*% unpen_est + observed_raw = -t(X) %*% (y-logistic_fitted(X_E, unpen_est))-L_E %*% unpen_est } else if (family=="gaussian"){ observed_raw = -t(X) %*% y } @@ -416,7 +413,7 @@ randomizedLassoInf = function(X, active_set = lasso_soln$active_set nactive = length(active_set) - print(c("nactive", nactive)) + if (nactive==0){ return (list(active_set=active_set, pvalues=c(), ci=c())) } @@ -470,7 +467,7 @@ randomizedLassoInf = function(X, glm_y = glm(y~X_E-1, family="binomial") sigma_resid = 1 observed_target = as.vector(glm_y$coefficients) - pi_vec = pi_fn(X_E, observed_target) + pi_vec = logistic_fitted(X_E, observed_target) observed_internal = c(observed_target, t(X_minusE) %*% (y-pi_vec)) W_E=diag(as.vector(pi_vec *(1-pi_vec))) } @@ -556,7 +553,7 @@ randomizedLassoInf = function(X, return(list(active_set=active_set, pvalues=pvalues, ci=ci)) } -pi_fn = function(X, beta){ +logistic_fitted = function(X, beta){ temp = X %*% as.matrix(beta) return(as.vector(exp(temp)/(1+exp(temp)))) # n-dimensional } @@ -586,7 +583,7 @@ solve_logistic=function(X, } for (i in 1:niters){ - pi_vec = pi_fn(X, soln) + pi_vec = logistic_fitted(X, soln) rootW = diag(sqrt(as.vector(pi_vec*(1-pi_vec)))) weighted_X = rootW %*% X Xsoln = weighted_X %*% soln From 86cffd63251d66c707b7ff827b0972e2c63d2161 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Sun, 12 Nov 2017 12:47:35 -0800 Subject: [PATCH 402/493] WIP: separating conditional density, and the lasso soln as argument to randomizedLassoInf --- selectiveInference/R/funs.randomized.R | 219 +++++++++++-------------- 1 file changed, 95 insertions(+), 124 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 29b4a9f..a047146 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -215,39 +215,60 @@ randomizedLasso = function(X, return(-Inf) } - use_C_code = TRUE - if (!use_C_code) { - A = opt_transform$linear_term %*% opt_state + observed_raw + opt_transform$offset_term - D = -apply(A^2, 2, sum) / noise_scale^2 - } else { - D = log_density_gaussian_conditional_(noise_scale, - opt_transform$linear_term, - as.matrix(opt_state), - observed_raw + opt_transform$offset_term) - } + D = log_density_gaussian_conditional_(noise_scale, + opt_transform$linear_term, + as.matrix(opt_state), + observed_raw + opt_transform$offset_term) + return(D) } - return(list(active_set = active_set, - inactive_set = inactive_set, - unpenalized_set = unpenalized_set, - sign_soln = sign_soln, - optimization_transform = opt_transform, - internal_transform = internal_transform, - log_optimization_density = log_optimization_density, - observed_opt_state = observed_opt_state, - observed_raw = observed_raw, - noise_scale = noise_scale, - soln = result$soln, - perturb = perturb_ + # work out conditional density and save it as well + + conditional_transform = conditional_opt_transform(noise_scale, + active_set, + observed_raw, + opt_transform$linear_term, + opt_transform$offset_term, + observed_opt_state) + constraints = matrix(0, length(active_set), 2) + constraints[,2] = Inf + conditional_transform$constraints = constraints + + # add constraints and density to the full transform + + subgrad_constraints = cbind(-lam[inactive_set], lam[inactive_set]) + constraints = rbind(constraints, subgrad_constraints) + + opt_transform$constraints = constraints + opt_transform$observed_opt_state = observed_opt_state + opt_transform$log_optimization_density = log_optimization_density + + + return(list(X=X, + y=y, + lam=lam, + family=family, + active_set=active_set, + inactive_set=inactive_set, + unpenalized_set=unpenalized_set, + sign_soln=sign_soln, + full_transform=opt_transform, + conditional_transform=opt_transform, + internal_transform=internal_transform, + observed_raw=observed_raw, + noise_scale=noise_scale, + soln=result$soln, + perturb=perturb_ )) } -sample_opt_variables = function(randomizedLASSO_obj, jump_scale, nsample=10000) { - return(MCMC(randomizedLASSO_obj$log_optimization_density, +sample_opt_variables = function(affine_transform, jump_scale, nsample=10000) { + print(affine_transform) + return(MCMC(affine_transform$log_optimization_density, nsample, - randomizedLASSO_obj$observed_opt_state, + affine_transform$observed_opt_state, acc.rate=0.2, scale=jump_scale)) } @@ -284,31 +305,18 @@ importance_weight = function(noise_scale, target_transform, observed_raw) { - use_C_code = TRUE - if (!use_C_code) { - A = (opt_transform$linear_term %*% opt_sample + - target_transform$linear_term %*% target_sample) - A = apply(A, 2, function(x) {return(x + target_transform$offset_term + opt_transform$offset_term)}) - log_num = -apply(A^2, 2, sum) / noise_scale^2 - } else { - log_num = log_density_gaussian_(noise_scale, - target_transform$linear_term, - as.matrix(target_sample), - opt_transform$linear_term, - as.matrix(opt_sample), - target_transform$offset_term + opt_transform$offset_term) - } + log_num = log_density_gaussian_(noise_scale, + target_transform$linear_term, + as.matrix(target_sample), + opt_transform$linear_term, + as.matrix(opt_sample), + target_transform$offset_term + opt_transform$offset_term) + + log_den = log_density_gaussian_conditional_(noise_scale, + opt_transform$linear_term, + as.matrix(opt_sample), + observed_raw+opt_transform$offset_term) - if (!use_C_code) { - A = opt_transform$linear_term %*% opt_sample - A = apply(A, 2, function(x) {return(x + observed_raw + opt_transform$offset_term)}) - log_den = -apply(A^2, 2, sum) / noise_scale^2 - } else { - log_den = log_density_gaussian_conditional_(noise_scale, - opt_transform$linear_term, - as.matrix(opt_sample), - observed_raw+opt_transform$offset_term) - } W = log_num - log_den W = W - max(W) return(exp(W)) @@ -320,17 +328,15 @@ get_mean_cov = function(noise_scale, linear_term, offset_term){ mean = temp %*% t(linear_term) %*% offset_term return(list(mean=mean, cov=cov)) } - - -conditional_density = function(noise_scale, lasso_soln) { - - active_set = lasso_soln$active_set - observed_raw = lasso_soln$observed_raw - opt_linear = lasso_soln$optimization_transform$linear_term - opt_offset = lasso_soln$optimization_transform$offset_term - observed_opt_state = lasso_soln$observed_opt_state +conditional_opt_transform = function(noise_scale, + active_set, + observed_raw, + opt_linear, + opt_offset, + observed_opt_state) { + nactive = length(active_set) B = opt_linear[,1:nactive,drop=FALSE] beta_offset = opt_offset @@ -363,54 +369,28 @@ conditional_density = function(noise_scale, lasso_soln) { } return(log_den) } - lasso_soln$log_optimization_density = log_condl_optimization_density - lasso_soln$observed_opt_state = observed_opt_state[1:nactive] - lasso_soln$optimization_transform = opt_transform + log_optimization_density = log_condl_optimization_density + observed_opt_state = observed_opt_state[1:nactive] + optimization_transform = opt_transform reduced_opt_transform =list(linear_term = reduced_B, offset_term = reduced_beta_offset) - return(list(lasso_soln=lasso_soln, - reduced_opt_transform = reduced_opt_transform)) + return(list(reduced_opt_transform=reduced_opt_transform, + log_optimization_density=log_condl_optimization_density, + observed_opt_state=observed_opt_state[1:nactive], + optimization_transform=opt_transform)) } -randomizedLassoInf = function(X, - y, - lam, - family=c("gaussian", "binomial"), +randomizedLassoInf = function(lasso_soln, sigma=NULL, - noise_scale=NULL, - ridge_term=NULL, condition_subgrad=TRUE, level=0.9, sampler=c("norejection", "adaptMCMC"), nsample=10000, - burnin=2000, - max_iter=100, # how many iterations for each optimization problem - kkt_tol=1.e-4, # tolerance for the KKT conditions - parameter_tol=1.e-8, # tolerance for relative convergence of parameter - objective_tol=1.e-8, # tolerance for relative decrease in objective - objective_stop=FALSE, - kkt_stop=TRUE, - parameter_stop=TRUE) + burnin=2000) { - n = nrow(X) - p = ncol(X) - - family = match.arg(family) + n = nrow(lasso_soln$X) + p = ncol(lasso_soln$X) - lasso_soln = randomizedLasso(X, - y, - lam, - family=family, - noise_scale=noise_scale, - ridge_term=ridge_term, - max_iter=max_iter, - kkt_tol=kkt_tol, - parameter_tol=parameter_tol, - objective_tol=objective_tol, - objective_stop=objective_stop, - kkt_stop=kkt_stop, - parameter_stop=parameter_stop) - active_set = lasso_soln$active_set nactive = length(active_set) @@ -418,52 +398,43 @@ randomizedLassoInf = function(X, return (list(active_set=active_set, pvalues=c(), ci=c())) } inactive_set = lasso_soln$inactive_set - - noise_scale = lasso_soln$noise_scale # set to default value in randomizedLasso - - constraints = matrix(0,nactive,2) - constraints[,2] = Inf - if (condition_subgrad==TRUE){ - condl_lasso=conditional_density(noise_scale, lasso_soln) - lasso_soln = condl_lasso$lasso_soln - cur_opt_transform = condl_lasso$reduced_opt_transform - } else{ - if (nactive Date: Sun, 12 Nov 2017 12:54:40 -0800 Subject: [PATCH 403/493] WIP: matrices not right size --- selectiveInference/R/funs.randomized.R | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index a047146..8d9b560 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -356,27 +356,21 @@ conditional_opt_transform = function(noise_scale, return(-Inf) } - use_C_code = TRUE - if (!use_C_code) { - A = reduced_B %*% as.matrix(opt_state) + reduced_beta_offset - A = apply(A, 2, function(x) {x + reduced_beta_offset}) - log_den = -apply(A^2, 2, sum) / noise_scale^2 - } else { - log_den = log_density_gaussian_conditional_(noise_scale, - reduced_B, - as.matrix(opt_state), - reduced_beta_offset) - } + log_den = log_density_gaussian_conditional_(noise_scale, + reduced_B, + as.matrix(opt_state), + reduced_beta_offset) return(log_den) } + log_optimization_density = log_condl_optimization_density observed_opt_state = observed_opt_state[1:nactive] optimization_transform = opt_transform reduced_opt_transform =list(linear_term = reduced_B, offset_term = reduced_beta_offset) - return(list(reduced_opt_transform=reduced_opt_transform, + return(list(optimization_transform=reduced_opt_transform, log_optimization_density=log_condl_optimization_density, observed_opt_state=observed_opt_state[1:nactive], - optimization_transform=opt_transform)) + optimization_transform_alt=opt_transform)) } randomizedLassoInf = function(lasso_soln, @@ -452,7 +446,7 @@ randomizedLassoInf = function(lasso_soln, target_cov = solve(t(X_E) %*% W_E %*% X_E)*sigma^2 cov_target_internal = rbind(target_cov, matrix(0, nrow=p-nactive, ncol=nactive)) internal_transform = lasso_soln$internal_transform - opt_transform = lasso_soln$optimization_transform + opt_transform = cur_opt_transform observed_raw = lasso_soln$observed_raw pvalues = rep(0, nactive) From 3487b71c03436989521c3ef96d656b24260716f5 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Sun, 12 Nov 2017 14:11:10 -0800 Subject: [PATCH 404/493] RF: randomizedLassoInf now takes a randomizedLasso soln --- selectiveInference/R/funs.randomized.R | 67 ++++++++++++++------------ 1 file changed, 36 insertions(+), 31 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 8d9b560..0196a6e 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -225,25 +225,29 @@ randomizedLasso = function(X, # work out conditional density and save it as well - conditional_transform = conditional_opt_transform(noise_scale, - active_set, - observed_raw, - opt_transform$linear_term, - opt_transform$offset_term, - observed_opt_state) + conditional_law = conditional_opt_transform(noise_scale, + active_set, + observed_raw, + opt_transform$linear_term, + opt_transform$offset_term, + observed_opt_state) constraints = matrix(0, length(active_set), 2) constraints[,2] = Inf - conditional_transform$constraints = constraints + conditional_law$constraints = constraints # add constraints and density to the full transform subgrad_constraints = cbind(-lam[inactive_set], lam[inactive_set]) constraints = rbind(constraints, subgrad_constraints) - opt_transform$constraints = constraints - opt_transform$observed_opt_state = observed_opt_state - opt_transform$log_optimization_density = log_optimization_density + # this is for conditional density of opt given data + full_law = list(sampling_transform=list(linear_term=opt_transform$linear_term, + offset_term=opt_transform$offset_term + observed_raw), + constraints=constraints, + observed_opt_state=observed_opt_state, + log_optimization_density=log_optimization_density, + importance_transform=opt_transform) return(list(X=X, y=y, @@ -253,8 +257,9 @@ randomizedLasso = function(X, inactive_set=inactive_set, unpenalized_set=unpenalized_set, sign_soln=sign_soln, - full_transform=opt_transform, - conditional_transform=opt_transform, + full_law=full_law, + #optimization_transform=opt_transform, + conditional_law=conditional_law, internal_transform=internal_transform, observed_raw=observed_raw, noise_scale=noise_scale, @@ -264,11 +269,10 @@ randomizedLasso = function(X, } -sample_opt_variables = function(affine_transform, jump_scale, nsample=10000) { - print(affine_transform) - return(MCMC(affine_transform$log_optimization_density, +sample_opt_variables = function(law, jump_scale, nsample=10000) { + return(MCMC(law$log_optimization_density, nsample, - affine_transform$observed_opt_state, + law$observed_opt_state, acc.rate=0.2, scale=jump_scale)) } @@ -315,7 +319,7 @@ importance_weight = function(noise_scale, log_den = log_density_gaussian_conditional_(noise_scale, opt_transform$linear_term, as.matrix(opt_sample), - observed_raw+opt_transform$offset_term) + observed_raw + opt_transform$offset_term) W = log_num - log_den W = W - max(W) @@ -367,10 +371,10 @@ conditional_opt_transform = function(noise_scale, observed_opt_state = observed_opt_state[1:nactive] optimization_transform = opt_transform reduced_opt_transform =list(linear_term = reduced_B, offset_term = reduced_beta_offset) - return(list(optimization_transform=reduced_opt_transform, + return(list(sampling_transform=reduced_opt_transform, log_optimization_density=log_condl_optimization_density, observed_opt_state=observed_opt_state[1:nactive], - optimization_transform_alt=opt_transform)) + importance_transform=opt_transform)) } randomizedLassoInf = function(lasso_soln, @@ -399,21 +403,21 @@ randomizedLassoInf = function(lasso_soln, sampler = match.arg(sampler) if (condition_subgrad == TRUE) { - cur_opt_transform = lasso_soln$conditional_transform + cur_law = lasso_soln$conditional_law } else { - cur_opt_transform = lasso_soln$full_transform + cur_law = lasso_soln$full_law } if (sampler == "adaptMCMC"){ - S = sample_opt_variables(cur_opt_transform, - jump_scale=rep(1/sqrt(n), length(cur_opt_transform$observed_opt_state)), nsample=nsample) + S = sample_opt_variables(cur_law, + jump_scale=rep(1/sqrt(n), length(cur_law$observed_opt_state)), nsample=nsample) opt_samples = as.matrix(S$samples[(burnin+1):nsample,,drop=FALSE]) } else if (sampler == "norejection") { opt_samples = gaussian_sampler(noise_scale, - cur_opt_transform$observed_opt_state, - cur_opt_transform$linear_term, - cur_opt_transform$offset_term, - cur_opt_transform$constraints, + cur_law$observed_opt_state, + cur_law$sampling_transform$linear_term, + cur_law$sampling_transform$offset_term, + cur_law$constraints, nsamples=nsample) opt_sample = opt_samples[(burnin+1):nsample,] } @@ -446,12 +450,13 @@ randomizedLassoInf = function(lasso_soln, target_cov = solve(t(X_E) %*% W_E %*% X_E)*sigma^2 cov_target_internal = rbind(target_cov, matrix(0, nrow=p-nactive, ncol=nactive)) internal_transform = lasso_soln$internal_transform - opt_transform = cur_opt_transform observed_raw = lasso_soln$observed_raw pvalues = rep(0, nactive) ci = matrix(0, nactive, 2) + importance_transform = cur_law$importance_transform + for (i in 1:nactive){ target_transform = linear_decomposition(observed_target[i], @@ -463,18 +468,18 @@ randomizedLassoInf = function(lasso_soln, # changing dimension of density evalutaion if ((condition_subgrad == TRUE) & (nactive < p-1)) { - target_opt_linear = cbind(target_transform$linear_term, opt_transform$linear_term) + target_opt_linear = cbind(target_transform$linear_term, importance_transform$linear_term) reduced_target_opt_linear = chol(t(target_opt_linear) %*% target_opt_linear) target_linear = reduced_target_opt_linear[,1] temp = solve(t(reduced_target_opt_linear)) %*% t(target_opt_linear) target_offset = temp %*% target_transform$offset_term target_transform = list(linear_term = as.matrix(target_linear), offset_term = target_offset) cur_linear = reduced_target_opt_linear[,2:ncol(reduced_target_opt_linear)] - cur_offset = temp %*% opt_transform$offset_term + cur_offset = temp %*% importance_transform$offset_term cur_transform = list(linear_term = as.matrix(cur_linear), offset_term = cur_offset) raw = target_transform$linear_term * observed_target[i] + target_transform$offset_term } else { - cur_transform = opt_transform + cur_transform = importance_transform raw = observed_raw } From 8796029a116615fef6beee9c20d31ebb495c6ce9 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Sun, 12 Nov 2017 14:26:31 -0800 Subject: [PATCH 405/493] DOC: exported randomizedLasso, and updated docs --- .gitignore | 4 +- selectiveInference/NAMESPACE | 3 +- selectiveInference/R/RcppExports.R | 35 ----- selectiveInference/R/funs.randomized.R | 42 +++--- selectiveInference/man/randomizedLasso.Rd | 142 +++++++++++++++++++ selectiveInference/man/randomizedLassoInf.Rd | 76 +--------- tests/randomized/test_instances.R | 10 +- 7 files changed, 177 insertions(+), 135 deletions(-) delete mode 100644 selectiveInference/R/RcppExports.R create mode 100644 selectiveInference/man/randomizedLasso.Rd diff --git a/.gitignore b/.gitignore index 863d843..3b58381 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,6 @@ **.RData **.o **.so -forLater/josh/** \ No newline at end of file +forLater/josh/** +*/R/RcppExports.R +*/src/RcppExports.cpp \ No newline at end of file diff --git a/selectiveInference/NAMESPACE b/selectiveInference/NAMESPACE index 11a834e..0fa35e1 100644 --- a/selectiveInference/NAMESPACE +++ b/selectiveInference/NAMESPACE @@ -15,7 +15,8 @@ export(lar,fs, TG.limits, TG.interval, debiasingMatrix, - randomizedLassoInf + randomizedLassoInf, + randomizedLasso ) S3method("coef", "lar") diff --git a/selectiveInference/R/RcppExports.R b/selectiveInference/R/RcppExports.R deleted file mode 100644 index e927a3a..0000000 --- a/selectiveInference/R/RcppExports.R +++ /dev/null @@ -1,35 +0,0 @@ -# Generated by using Rcpp::compileAttributes() -> do not edit by hand -# Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 - -solve_QP <- function(Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, parameter_tol, max_active, kkt_stop, objective_stop, param_stop) { - .Call('selectiveInference_solve_QP', PACKAGE = 'selectiveInference', Sigma, bound, maxiter, theta, linear_func, gradient, ever_active, nactive, kkt_tol, objective_tol, parameter_tol, max_active, kkt_stop, objective_stop, param_stop) -} - -solve_QP_wide <- function(X, bound, ridge_term, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, parameter_tol, max_active, kkt_stop, objective_stop, param_stop) { - .Call('selectiveInference_solve_QP_wide', PACKAGE = 'selectiveInference', X, bound, ridge_term, maxiter, theta, linear_func, gradient, X_theta, ever_active, nactive, kkt_tol, objective_tol, parameter_tol, max_active, kkt_stop, objective_stop, param_stop) -} - -update1_ <- function(Q2, w, m, k) { - .Call('selectiveInference_update1_', PACKAGE = 'selectiveInference', Q2, w, m, k) -} - -downdate1_ <- function(Q1, R, j0, m, n) { - .Call('selectiveInference_downdate1_', PACKAGE = 'selectiveInference', Q1, R, j0, m, n) -} - -log_density_gaussian_ <- function(noise_scale, internal_linear, internal_state, optimization_linear, optimization_state, offset) { - .Call('selectiveInference_log_density_gaussian_', PACKAGE = 'selectiveInference', noise_scale, internal_linear, internal_state, optimization_linear, optimization_state, offset) -} - -log_density_gaussian_conditional_ <- function(noise_scale, optimization_linear, optimization_state, offset) { - .Call('selectiveInference_log_density_gaussian_conditional_', PACKAGE = 'selectiveInference', noise_scale, optimization_linear, optimization_state, offset) -} - -log_density_laplace_ <- function(noise_scale, internal_linear, internal_state, optimization_linear, optimization_state, offset) { - .Call('selectiveInference_log_density_laplace_', PACKAGE = 'selectiveInference', noise_scale, internal_linear, internal_state, optimization_linear, optimization_state, offset) -} - -log_density_laplace_conditional_ <- function(noise_scale, optimization_linear, optimization_state, offset) { - .Call('selectiveInference_log_density_laplace_conditional_', PACKAGE = 'selectiveInference', noise_scale, optimization_linear, optimization_state, offset) -} - diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 0196a6e..236e350 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -9,7 +9,6 @@ randomizedLasso = function(X, family=c("gaussian","binomial"), noise_scale=NULL, ridge_term=NULL, - noise_type=c('gaussian', 'laplace'), max_iter=100, # how many iterations for each optimization problem kkt_tol=1.e-4, # tolerance for the KKT conditions parameter_tol=1.e-8, # tolerance for relative convergence of parameter @@ -36,15 +35,8 @@ randomizedLasso = function(X, noise_scale = 0.5 * sd(y) * sqrt(mean_diag) } - noise_type = match.arg(noise_type) - if (noise_scale > 0) { - if (noise_type == 'gaussian') { - perturb_ = rnorm(p) * noise_scale - } - else if (noise_type == 'laplace') { - perturb_ = rexp(p) * (2 * rbinom(p, 1, 0.5) - 1) * noise_scale - } + perturb_ = rnorm(p) * noise_scale } else { perturb_ = rep(0, p) } @@ -377,7 +369,7 @@ conditional_opt_transform = function(noise_scale, importance_transform=opt_transform)) } -randomizedLassoInf = function(lasso_soln, +randomizedLassoInf = function(rand_lasso_soln, sigma=NULL, condition_subgrad=TRUE, level=0.9, @@ -386,26 +378,26 @@ randomizedLassoInf = function(lasso_soln, burnin=2000) { - n = nrow(lasso_soln$X) - p = ncol(lasso_soln$X) + n = nrow(rand_lasso_soln$X) + p = ncol(rand_lasso_soln$X) - active_set = lasso_soln$active_set + active_set = rand_lasso_soln$active_set nactive = length(active_set) if (nactive==0){ return (list(active_set=active_set, pvalues=c(), ci=c())) } - inactive_set = lasso_soln$inactive_set - noise_scale = lasso_soln$noise_scale # set to default value in randomizedLasso + inactive_set = rand_lasso_soln$inactive_set + noise_scale = rand_lasso_soln$noise_scale # set to default value in randomizedLasso - ndim = length(lasso_soln$observed_opt_state) + ndim = length(rand_lasso_soln$observed_opt_state) sampler = match.arg(sampler) if (condition_subgrad == TRUE) { - cur_law = lasso_soln$conditional_law + cur_law = rand_lasso_soln$conditional_law } else { - cur_law = lasso_soln$full_law + cur_law = rand_lasso_soln$full_law } if (sampler == "adaptMCMC"){ @@ -422,17 +414,17 @@ randomizedLassoInf = function(lasso_soln, opt_sample = opt_samples[(burnin+1):nsample,] } - X_E = lasso_soln$X[, active_set] - X_minusE = lasso_soln$X[, inactive_set] - y = lasso_soln$y + X_E = rand_lasso_soln$X[, active_set] + X_minusE = rand_lasso_soln$X[, inactive_set] + y = rand_lasso_soln$y - if (lasso_soln$family == "gaussian") { + if (rand_lasso_soln$family == "gaussian") { lm_y = lm(y ~ X_E - 1) sigma_resid = sqrt(sum(resid(lm_y)^2) / lm_y$df.resid) observed_target = lm_y$coefficients W_E = diag(rep(1,n)) observed_internal = c(observed_target, t(X_minusE) %*% (y-X_E%*% observed_target)) - } else if (lasso_soln$family == "binomial") { + } else if (rand_lasso_soln$family == "binomial") { glm_y = glm(y~X_E-1, family="binomial") sigma_resid = 1 observed_target = as.vector(glm_y$coefficients) @@ -449,8 +441,8 @@ randomizedLassoInf = function(lasso_soln, target_cov = solve(t(X_E) %*% W_E %*% X_E)*sigma^2 cov_target_internal = rbind(target_cov, matrix(0, nrow=p-nactive, ncol=nactive)) - internal_transform = lasso_soln$internal_transform - observed_raw = lasso_soln$observed_raw + internal_transform = rand_lasso_soln$internal_transform + observed_raw = rand_lasso_soln$observed_raw pvalues = rep(0, nactive) ci = matrix(0, nactive, 2) diff --git a/selectiveInference/man/randomizedLasso.Rd b/selectiveInference/man/randomizedLasso.Rd new file mode 100644 index 0000000..fd17bfc --- /dev/null +++ b/selectiveInference/man/randomizedLasso.Rd @@ -0,0 +1,142 @@ +\name{randomizedLasso} +\alias{randomizedLasso} + +\title{ +Inference for the randomized lasso, with a fixed lambda +} +\description{ +Solve a randomly perturbed LASSO problem. +} +\usage{ +randomizedLasso(X, + y, + lam, + family=c("gaussian", "binomial"), + noise_scale=NULL, + ridge_term=NULL, + max_iter=100, + kkt_tol=1.e-4, + parameter_tol=1.e-8, + objective_tol=1.e-8, + objective_stop=FALSE, + kkt_stop=TRUE, + parameter_stop=TRUE) +} +\arguments{ + \item{X}{ +Matrix of predictors (n by p); +} + \item{y}{ +Vector of outcomes (length n) +} + \item{lam}{ +Value of lambda used to compute beta. See the above warning + Be careful! This function uses the "standard" lasso objective + \deqn{ + 1/2 \|y - x \beta\|_2^2 + \lambda \|\beta\|_1. + } + In contrast, glmnet multiplies the first term by a factor of 1/n. + So after running glmnet, to extract the beta corresponding to a value lambda, + you need to use \code{beta = coef(obj, s=lambda/n)[-1]}, + where obj is the object returned by glmnet (and [-1] removes the intercept, + which glmnet always puts in the first component) +} +\item{family}{ +Response type: "gaussian" (default), "binomial". +} +\item{noise_scale}{ +Scale of Gaussian noise added to objective. Default is +0.5 * sd(y) times the sqrt of the mean of the trace of X^TX. +} +\item{ridge_term}{ +A small "elastic net" or ridge penalty is added to ensure +the randomized problem has a solution. +0.5 * sd(y) times the sqrt of the mean of the trace of X^TX divided by +sqrt(n). +} +\item{max_iter}{ +How many rounds of updates used of coordinate descent in solving randomized +LASSO. +} +\item{kkt_tol}{ +Tolerance for checking convergence based on KKT conditions. +} +\item{parameter_tol}{ +Tolerance for checking convergence based on convergence +of parameters. +} +\item{objective_tol}{ +Tolerance for checking convergence based on convergence +of objective value. +} +\item{kkt_stop}{ +Should we use KKT check to determine when to stop? +} +\item{parameter_stop}{ +Should we use convergence of parameters to determine when to stop? +} +\item{objective_stop}{ +Should we use convergence of objective value to determine when to stop? +} +} + +\details{For \code{family="gaussian"} this function uses the "standard" lasso objective + \deqn{ + 1/2 \|y - x \beta\|_2^2 + \lambda \|\beta\|_1 + } +and adds a term + \deqn{ + - \omega^T\beta + \frac{\epsilon}{2} \|\beta\|^2_2 + } +where omega is drawn from IID normals with standard deviation +\code{noise_scale} and epsilon given by \code{ridge_term}. +See below for default values of \code{noise_scale} and \code{ridge_term}. + +For \code{family="binomial"}, the squared error loss is replaced by the +negative of the logistic log-likelihood. +} +\value{ +\item{type}{Type of coefficients tested (partial or full)} +\item{lambda}{Value of tuning parameter lambda used} +\item{pv}{One-sided P-values for active variables, uses the fact we have conditioned on the sign.} +\item{ci}{Confidence intervals} +\item{tailarea}{Realized tail areas (lower and upper) for each confidence interval} +\item{vlo}{Lower truncation limits for statistics} +\item{vup}{Upper truncation limits for statistics} +\item{vmat}{Linear contrasts that define the observed statistics} +\item{y}{Vector of outcomes} +\item{vars}{Variables in active set} +\item{sign}{Signs of active coefficients} +\item{alpha}{Desired coverage (alpha/2 in each tail)} +\item{sigma}{Value of error standard deviation (sigma) used} +\item{call}{The call to lassoInf} +} + +\references{ +Xiaoying Tian, and Jonathan Taylor (2015). +Selective inference with a randomized response. arxiv.org:1507.06739 + +Xiaoying Tian, Snigdha Panigrahi, Jelena Markovic, Nan Bi and Jonathan Taylor (2016). +Selective inference after solving a convex problem. +arxiv:1609.05609 + +} +\author{Jelena Markovic, Jonathan Taylor} + +\examples{ +set.seed(43) +n = 50 +p = 10 +sigma = 0.2 +lam = 0.5 + +X = matrix(rnorm(n*p), n, p) +X = scale(X, TRUE, TRUE) / sqrt(n-1) + +beta = c(3,2,rep(0,p-2)) +y = X\%*\%beta + sigma*rnorm(n) + +result = randomizedLasso(X, y, lam) + +} + diff --git a/selectiveInference/man/randomizedLassoInf.Rd b/selectiveInference/man/randomizedLassoInf.Rd index 351596e..b06b38e 100644 --- a/selectiveInference/man/randomizedLassoInf.Rd +++ b/selectiveInference/man/randomizedLassoInf.Rd @@ -11,63 +11,23 @@ fixed value of the tuning parameter lambda and using Gaussian randomization. } \usage{ -randomizedLassoInf(X, - y, - lam, - family=c("gaussian", "binomial"), +randomizedLassoInf(rand_lasso_soln, sigma=NULL, - noise_scale=NULL, - ridge_term=NULL, condition_subgrad=TRUE, level=0.9, sampler=c("norejection", "adaptMCMC"), nsample=10000, - burnin=2000, - max_iter=100, - kkt_tol=1.e-4, - parameter_tol=1.e-8, - objective_tol=1.e-8, - objective_stop=FALSE, - kkt_stop=TRUE, - parameter_stop=TRUE) + burnin=2000) } \arguments{ - \item{X}{ -Matrix of predictors (n by p); -} - \item{y}{ -Vector of outcomes (length n) -} - \item{lam}{ -Value of lambda used to compute beta. See the above warning - Be careful! This function uses the "standard" lasso objective - \deqn{ - 1/2 \|y - x \beta\|_2^2 + \lambda \|\beta\|_1. - } - In contrast, glmnet multiplies the first term by a factor of 1/n. - So after running glmnet, to extract the beta corresponding to a value lambda, - you need to use \code{beta = coef(obj, s=lambda/n)[-1]}, - where obj is the object returned by glmnet (and [-1] removes the intercept, - which glmnet always puts in the first component) -} -\item{family}{ -Response type: "gaussian" (default), "binomial". + \item{rand_lasso_soln}{ +A randomized lasso solution as returned by \code{randomizedLasso}. } \item{sigma}{ Estimate of error standard deviation. If NULL (default), this is estimated using the mean squared residual of the full least squares based on selected active set. } -\item{noise_scale}{ -Scale of Gaussian noise added to objective. Default is -0.5 * sd(y) times the sqrt of the mean of the trace of X^TX. -} -\item{ridge_term}{ -A small "elastic net" or ridge penalty is added to ensure -the randomized problem has a solution. -0.5 * sd(y) times the sqrt of the mean of the trace of X^TX divided by -sqrt(n). -} \item{condition_subgrad}{ In forming selective confidence intervals and p-values should we condition on the inactive coordinates of the subgradient as well? @@ -86,30 +46,6 @@ Number of samples of optimization variables to sample. \item{burnin}{ How many samples of optimization variable to discard (should be less than nsample). } -\item{max_iter}{ -How many rounds of updates used of coordinate descent in solving randomized -LASSO. -} -\item{kkt_tol}{ -Tolerance for checking convergence based on KKT conditions. -} -\item{parameter_tol}{ -Tolerance for checking convergence based on convergence -of parameters. -} -\item{objective_tol}{ -Tolerance for checking convergence based on convergence -of objective value. -} -\item{kkt_stop}{ -Should we use KKT check to determine when to stop? -} -\item{parameter_stop}{ -Should we use convergence of parameters to determine when to stop? -} -\item{objective_stop}{ -Should we use convergence of objective value to determine when to stop? -} } \details{ @@ -159,7 +95,7 @@ X = scale(X, TRUE, TRUE) / sqrt(n-1) beta = c(3,2,rep(0,p-2)) y = X\%*\%beta + sigma*rnorm(n) -result = randomizedLassoInf(X, y, lam) - +result = randomizedLasso(X, y, lam) +inf_result = randomizedLassoInf(result) } diff --git a/tests/randomized/test_instances.R b/tests/randomized/test_instances.R index 7ea756c..4fecf17 100644 --- a/tests/randomized/test_instances.R +++ b/tests/randomized/test_instances.R @@ -99,9 +99,13 @@ collect_results = function(n,p,s, nsim=100, level=0.9, data = get_instance(n=n,p=p,s=s, rho=rho, sigma=sigma, family=family) X=data$X y=data$y - result = selectiveInference:::randomizedLassoInf(X, y, - lam, - family = family, + + rand_lasso_soln = selectiveInference:::randomizedLasso(X, + y, + lam, + family=family) + + result = selectiveInference:::randomizedLassoInf(rand_lasso_soln, sampler = "adaptMCMC", #"norejection", # sigma=sigma, level=level, From b7080813a56847fbb8e21fcb501aa4b714f30f81 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Sun, 12 Nov 2017 14:26:53 -0800 Subject: [PATCH 406/493] updating C-software --- C-software | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/C-software b/C-software index 563bf1a..0b35c6e 160000 --- a/C-software +++ b/C-software @@ -1 +1 @@ -Subproject commit 563bf1aa370b55f8343693224717047f1df0d0c3 +Subproject commit 0b35c6ed8537cef9aabed526b968b1c63d2f6cb8 From cabc4d98189a21c34e306508127e47959c5fe313 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Sun, 12 Nov 2017 16:11:43 -0800 Subject: [PATCH 407/493] NF: targets can be passed to randomizedLassoInf --- selectiveInference/R/funs.randomized.R | 90 ++++++++++---------- selectiveInference/man/randomizedLassoInf.Rd | 20 +++-- 2 files changed, 61 insertions(+), 49 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 236e350..8ced6f0 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -370,7 +370,7 @@ conditional_opt_transform = function(noise_scale, } randomizedLassoInf = function(rand_lasso_soln, - sigma=NULL, + targets=NULL, condition_subgrad=TRUE, level=0.9, sampler=c("norejection", "adaptMCMC"), @@ -414,52 +414,56 @@ randomizedLassoInf = function(rand_lasso_soln, opt_sample = opt_samples[(burnin+1):nsample,] } - X_E = rand_lasso_soln$X[, active_set] - X_minusE = rand_lasso_soln$X[, inactive_set] - y = rand_lasso_soln$y - - if (rand_lasso_soln$family == "gaussian") { - lm_y = lm(y ~ X_E - 1) - sigma_resid = sqrt(sum(resid(lm_y)^2) / lm_y$df.resid) - observed_target = lm_y$coefficients - W_E = diag(rep(1,n)) - observed_internal = c(observed_target, t(X_minusE) %*% (y-X_E%*% observed_target)) - } else if (rand_lasso_soln$family == "binomial") { - glm_y = glm(y~X_E-1, family="binomial") - sigma_resid = 1 - observed_target = as.vector(glm_y$coefficients) - pi_vec = logistic_fitted(X_E, observed_target) - observed_internal = c(observed_target, t(X_minusE) %*% (y-pi_vec)) - W_E=diag(as.vector(pi_vec *(1-pi_vec))) - } - - # if no sigma given, use the estimate - - if (is.null(sigma)) { - sigma = sigma_resid - } - - target_cov = solve(t(X_E) %*% W_E %*% X_E)*sigma^2 - cov_target_internal = rbind(target_cov, matrix(0, nrow=p-nactive, ncol=nactive)) - internal_transform = rand_lasso_soln$internal_transform - observed_raw = rand_lasso_soln$observed_raw - + if (is.null(targets)) { + + X_E = rand_lasso_soln$X[, active_set] + X_minusE = rand_lasso_soln$X[, inactive_set] + y = rand_lasso_soln$y + + if (rand_lasso_soln$family == "gaussian") { + lm_y = lm(y ~ X_E - 1) + sigma_resid = sqrt(sum(resid(lm_y)^2) / lm_y$df.resid) + observed_target = lm_y$coefficients + W_E = diag(rep(1,n)) + observed_internal = c(observed_target, t(X_minusE) %*% (y-X_E%*% observed_target)) + } else if (rand_lasso_soln$family == "binomial") { + glm_y = glm(y~X_E-1, family="binomial") + sigma_resid = 1 + observed_target = as.vector(glm_y$coefficients) + pi_vec = logistic_fitted(X_E, observed_target) + observed_internal = c(observed_target, t(X_minusE) %*% (y-pi_vec)) + W_E=diag(as.vector(pi_vec *(1-pi_vec))) + } + + cov_target = solve(t(X_E) %*% W_E %*% X_E)*sigma_resid^2 + + targets = list(observed_target=observed_target, + cov_target=cov_target, + crosscov_target_internal=rbind(cov_target, matrix(0, nrow=p-nactive, ncol=nactive))) + + } + + importance_transform = cur_law$importance_transform + internal_transform=rand_lasso_soln$internal_transform + observed_raw=rand_lasso_soln$observed_raw + pvalues = rep(0, nactive) ci = matrix(0, nactive, 2) - importance_transform = cur_law$importance_transform - for (i in 1:nactive){ - target_transform = linear_decomposition(observed_target[i], + target_transform = linear_decomposition(targets$observed_target[i], observed_internal, - target_cov[i,i], - cov_target_internal[,i], + targets$cov_target[i,i], + targets$crosscov_target_internal[,i], internal_transform) # changing dimension of density evalutaion if ((condition_subgrad == TRUE) & (nactive < p-1)) { + + # A description of why we do this might help + target_opt_linear = cbind(target_transform$linear_term, importance_transform$linear_term) reduced_target_opt_linear = chol(t(target_opt_linear) %*% target_opt_linear) target_linear = reduced_target_opt_linear[,1] @@ -469,13 +473,13 @@ randomizedLassoInf = function(rand_lasso_soln, cur_linear = reduced_target_opt_linear[,2:ncol(reduced_target_opt_linear)] cur_offset = temp %*% importance_transform$offset_term cur_transform = list(linear_term = as.matrix(cur_linear), offset_term = cur_offset) - raw = target_transform$linear_term * observed_target[i] + target_transform$offset_term + raw = target_transform$linear_term * targets$observed_target[i] + target_transform$offset_term } else { cur_transform = importance_transform raw = observed_raw } - target_sample = rnorm(nrow(as.matrix(opt_samples))) * sqrt(target_cov[i,i]) + target_sample = rnorm(nrow(as.matrix(opt_samples))) * sqrt(targets$cov_target[i,i]) pivot = function(candidate){ @@ -485,16 +489,16 @@ randomizedLassoInf = function(rand_lasso_soln, cur_transform, target_transform, raw) - return(mean((target_sample + candidate < observed_target[i]) * weights)/mean(weights)) + return(mean((target_sample + candidate < targets$observed_target[i]) * weights)/mean(weights)) } rootU = function(candidate){ - return (pivot(observed_target[i]+candidate)-(1-level)/2) + return (pivot(targets$observed_target[i]+candidate)-(1-level)/2) } rootL = function(candidate){ - return(pivot(observed_target[i]+candidate)-(1+level)/2) + return(pivot(targets$observed_target[i]+candidate)-(1+level)/2) } pvalues[i] = pivot(0) @@ -502,12 +506,12 @@ randomizedLassoInf = function(rand_lasso_soln, line_max = 10*sd(target_sample) if (rootU(line_min)*rootU(line_max)<0){ - ci[i,2] = uniroot(rootU, c(line_min, line_max))$root+observed_target[i] + ci[i,2] = uniroot(rootU, c(line_min, line_max))$root + targets$observed_target[i] } else{ ci[i,2]=line_max } if (rootL(line_min)*rootL(line_max)<0){ - ci[i,1] = uniroot(rootL, c(line_min, line_max))$root+observed_target[i] + ci[i,1] = uniroot(rootL, c(line_min, line_max))$root + targets$observed_target[i] } else{ ci[i,1] = line_min } diff --git a/selectiveInference/man/randomizedLassoInf.Rd b/selectiveInference/man/randomizedLassoInf.Rd index b06b38e..5ecee24 100644 --- a/selectiveInference/man/randomizedLassoInf.Rd +++ b/selectiveInference/man/randomizedLassoInf.Rd @@ -12,7 +12,7 @@ randomization. } \usage{ randomizedLassoInf(rand_lasso_soln, - sigma=NULL, + targets=NULL, condition_subgrad=TRUE, level=0.9, sampler=c("norejection", "adaptMCMC"), @@ -20,13 +20,21 @@ randomizedLassoInf(rand_lasso_soln, burnin=2000) } \arguments{ - \item{rand_lasso_soln}{ +\item{rand_lasso_soln}{ A randomized lasso solution as returned by \code{randomizedLasso}. } -\item{sigma}{ -Estimate of error standard deviation. If NULL (default), this is estimated -using the mean squared residual of the full least squares based on -selected active set. +\item{targets}{ +If not NULL, should be a list with entries \code{observed_target, cov_target, crosscov_target_internal}. +The \code{observed_target} should be (pre-selection) asymptotically Gaussian around targeted +parameters. The quantity \code{cov_target} should be an estimate of the (pre-selection) covariance +of \code{observed_target}. Finally, \code{crosscov_target_internal} should be an estimate of +the (pre-selection) covariance of \code{observed_target} and the internal representation of the +data of the LASSO. For both \code{"gaussian"} and \code{"binomial"}, this is the vector + \deqn{ +\hat{\beta}_{E,MLE}, X_{-E}^T(y - \mu(X_E\hat{\beta}_{E,MLE})) + } +For example, this cross-covariance could be estimated by jointly bootstrapping the target +of interest and the above vector. } \item{condition_subgrad}{ In forming selective confidence intervals and p-values should we condition From c9d9ed18faf39daf100fe87f71ce0a850544236f Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Sun, 12 Nov 2017 21:36:49 -0800 Subject: [PATCH 408/493] BF: unused sigma argument in test --- tests/randomized/test_instances.R | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/randomized/test_instances.R b/tests/randomized/test_instances.R index 4fecf17..a2755e1 100644 --- a/tests/randomized/test_instances.R +++ b/tests/randomized/test_instances.R @@ -107,7 +107,6 @@ collect_results = function(n,p,s, nsim=100, level=0.9, result = selectiveInference:::randomizedLassoInf(rand_lasso_soln, sampler = "adaptMCMC", #"norejection", # - sigma=sigma, level=level, burnin=1000, nsample=5000, From b86e1a48be75d0760360bfc15b1a705e423f1547 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Sun, 12 Nov 2017 21:44:38 -0800 Subject: [PATCH 409/493] slightly bigger sampler for logistic --- tests/randomized/test_instances.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/randomized/test_instances.R b/tests/randomized/test_instances.R index a2755e1..b3617e6 100644 --- a/tests/randomized/test_instances.R +++ b/tests/randomized/test_instances.R @@ -135,5 +135,5 @@ collect_results = function(n,p,s, nsim=100, level=0.9, } set.seed(1) -collect_results(n=100, p=20, s=0, lam=0.5) +collect_results(n=500, p=200, s=0, lam=1.) From 306010050ae814ed665984ddc17515b76ca74177 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Sun, 12 Nov 2017 21:45:29 -0800 Subject: [PATCH 410/493] possibility of different randomization scales for binomial, gaussian --- .gitignore | 5 ++++- selectiveInference/R/funs.randomized.R | 6 +++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 3b58381..46dc0e2 100644 --- a/.gitignore +++ b/.gitignore @@ -8,4 +8,7 @@ **.so forLater/josh/** */R/RcppExports.R -*/src/RcppExports.cpp \ No newline at end of file +*/src/RcppExports.cpp +*~ +*/*~ +*/*/*~ \ No newline at end of file diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 8ced6f0..159956c 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -32,7 +32,11 @@ randomizedLasso = function(X, # default noise level if (is.null(noise_scale)) { - noise_scale = 0.5 * sd(y) * sqrt(mean_diag) + if (family == "gaussian") { + noise_scale = 0.5 * sd(y) * sqrt(mean_diag) + } else if (family == "binomial") { + noise_scale = 0.5 * sd(y) * sqrt(mean_diag) + } } if (noise_scale > 0) { From 08294ca51ba3f5e2d974bf6aa50e9ac52229d234 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Sun, 12 Nov 2017 22:01:51 -0800 Subject: [PATCH 411/493] DOC: fixing Rd files for return values --- selectiveInference/R/funs.randomized.R | 3 +- selectiveInference/man/randomizedLasso.Rd | 30 +++++++++++--------- selectiveInference/man/randomizedLassoInf.Rd | 24 ++++++---------- 3 files changed, 25 insertions(+), 32 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 159956c..504d7ac 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -254,7 +254,6 @@ randomizedLasso = function(X, unpenalized_set=unpenalized_set, sign_soln=sign_soln, full_law=full_law, - #optimization_transform=opt_transform, conditional_law=conditional_law, internal_transform=internal_transform, observed_raw=observed_raw, @@ -520,7 +519,7 @@ randomizedLassoInf = function(rand_lasso_soln, ci[i,1] = line_min } } - return(list(active_set=active_set, pvalues=pvalues, ci=ci)) + return(list(targets=targets, pvalues=pvalues, ci=ci)) } logistic_fitted = function(X, beta){ diff --git a/selectiveInference/man/randomizedLasso.Rd b/selectiveInference/man/randomizedLasso.Rd index fd17bfc..1f69f71 100644 --- a/selectiveInference/man/randomizedLasso.Rd +++ b/selectiveInference/man/randomizedLasso.Rd @@ -96,20 +96,22 @@ For \code{family="binomial"}, the squared error loss is replaced by the negative of the logistic log-likelihood. } \value{ -\item{type}{Type of coefficients tested (partial or full)} -\item{lambda}{Value of tuning parameter lambda used} -\item{pv}{One-sided P-values for active variables, uses the fact we have conditioned on the sign.} -\item{ci}{Confidence intervals} -\item{tailarea}{Realized tail areas (lower and upper) for each confidence interval} -\item{vlo}{Lower truncation limits for statistics} -\item{vup}{Upper truncation limits for statistics} -\item{vmat}{Linear contrasts that define the observed statistics} -\item{y}{Vector of outcomes} -\item{vars}{Variables in active set} -\item{sign}{Signs of active coefficients} -\item{alpha}{Desired coverage (alpha/2 in each tail)} -\item{sigma}{Value of error standard deviation (sigma) used} -\item{call}{The call to lassoInf} +\item{X}{Design matrix.} +\item{y}{Response vector.} +\item{lam}{Vector of penalty parameters.} +\item{family}{Family: "gaussian" or "binomial".} +\item{active_set}{Set of non-zero coefficients in randomized solution that were penalized. Integers from 1:p.} +\item{inactive_set}{Set of zero coefficients in randomized solution. Integers from 1:p.} +\item{unpenalized_set}{Set of non-zero coefficients in randomized solution that were not penalized. Integers from 1:p.} +\item{sign_soln}{The sign pattern of the randomized solution.} +\item{full_law}{List describing sampling parameters for conditional law of all optimization variables given the data in the LASSO problem.} +\item{conditional_law}{List describing sampling parameters for conditional law of only the scaling variables given the data and the observed subgradient in the LASSO problem.} +\item{internal_transform}{Affine transformation describing relationship between internal representation of the data and the data compontent of score of the likelihood at the unregularized MLE based on the sign_vector (a.k.a. relaxed LASSO).} +\item{observed_raw}{Data component of the score at the unregularized MLE.} +\item{noise_scale}{SD of Gaussian noise used to draw the perturbed objective.} +\item{soln}{The randomized solution. Inference is made conditional on its sign vector (so no more snooping of this value is formally permitted.) +If \code{condition_subgrad == TRUE} when sampling, then we may snoop on the observed subgradient.} +\item{perturb}{The random vector in the linear term added to the objective.} } \references{ diff --git a/selectiveInference/man/randomizedLassoInf.Rd b/selectiveInference/man/randomizedLassoInf.Rd index 5ecee24..3bffbfa 100644 --- a/selectiveInference/man/randomizedLassoInf.Rd +++ b/selectiveInference/man/randomizedLassoInf.Rd @@ -63,29 +63,21 @@ given a fixed value of the tuning parameter lambda. } \value{ -\item{type}{Type of coefficients tested (partial or full)} -\item{lambda}{Value of tuning parameter lambda used} -\item{pv}{One-sided P-values for active variables, uses the fact we have conditioned on the sign.} -\item{ci}{Confidence intervals} -\item{tailarea}{Realized tail areas (lower and upper) for each confidence interval} -\item{vlo}{Lower truncation limits for statistics} -\item{vup}{Upper truncation limits for statistics} -\item{vmat}{Linear contrasts that define the observed statistics} -\item{y}{Vector of outcomes} -\item{vars}{Variables in active set} -\item{sign}{Signs of active coefficients} -\item{alpha}{Desired coverage (alpha/2 in each tail)} -\item{sigma}{Value of error standard deviation (sigma) used} -\item{call}{The call to lassoInf} +\item{targets}{A list with entries \code{observed_target, cov_target, crosscov_target_internal}. See argument description above.} +\item{pvalues}{P-values testing hypotheses that each specific target is 0.} +\item{ci}{Confidence interval for parameters determined by \code{targets}.} } \references{ -Xiaoying Tian, and Jonathan Taylor (2015). +Jelena Markovic and Jonathan Taylor (2016). +Bootstrap inference after using multiple queries for model selection. arxiv.org:1612.07811 + +Xiaoying Tian and Jonathan Taylor (2015). Selective inference with a randomized response. arxiv.org:1507.06739 Xiaoying Tian, Snigdha Panigrahi, Jelena Markovic, Nan Bi and Jonathan Taylor (2016). Selective inference after solving a convex problem. -arxiv:1609.05609 +arxiv.org:1609.05609 } \author{Jelena Markovic, Jonathan Taylor} From 194dddaf5ed8417b29cb259dc61f739eca1dca62 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Mon, 13 Nov 2017 23:10:57 -0800 Subject: [PATCH 412/493] BF: missed some drop=FALSE; RF: using glm to do the work for covariance --- selectiveInference/R/funs.randomized.R | 26 +++++++++----------------- 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 504d7ac..d5864f4 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -419,26 +419,18 @@ randomizedLassoInf = function(rand_lasso_soln, if (is.null(targets)) { - X_E = rand_lasso_soln$X[, active_set] - X_minusE = rand_lasso_soln$X[, inactive_set] + X_E = rand_lasso_soln$X[, active_set, drop=FALSE] + X_minusE = rand_lasso_soln$X[, inactive_set, drop=FALSE] y = rand_lasso_soln$y - if (rand_lasso_soln$family == "gaussian") { - lm_y = lm(y ~ X_E - 1) - sigma_resid = sqrt(sum(resid(lm_y)^2) / lm_y$df.resid) - observed_target = lm_y$coefficients - W_E = diag(rep(1,n)) - observed_internal = c(observed_target, t(X_minusE) %*% (y-X_E%*% observed_target)) - } else if (rand_lasso_soln$family == "binomial") { - glm_y = glm(y~X_E-1, family="binomial") - sigma_resid = 1 - observed_target = as.vector(glm_y$coefficients) - pi_vec = logistic_fitted(X_E, observed_target) - observed_internal = c(observed_target, t(X_minusE) %*% (y-pi_vec)) - W_E=diag(as.vector(pi_vec *(1-pi_vec))) + if (rand_lasso_soln$family == 'gaussian') { + glm_y = glm(y ~ X_E-1) + } else if (rand_lasso_soln$family == 'binomial') { + glm_y = glm(y ~ X_E-1, family=binomial()) } - - cov_target = solve(t(X_E) %*% W_E %*% X_E)*sigma_resid^2 + observed_target = as.vector(glm_y$coefficients) + observed_internal = c(observed_target, t(X_minusE) %*% (y - fitted(glm_y))) + cov_target = vcov(glm_y) targets = list(observed_target=observed_target, cov_target=cov_target, From b26e1523d3e3333975cdfdfe9875ad95fbc69778 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Mon, 13 Nov 2017 23:14:08 -0800 Subject: [PATCH 413/493] function imports --- selectiveInference/NAMESPACE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selectiveInference/NAMESPACE b/selectiveInference/NAMESPACE index 0fa35e1..976a667 100644 --- a/selectiveInference/NAMESPACE +++ b/selectiveInference/NAMESPACE @@ -42,7 +42,7 @@ import(intervals) import(survival) importFrom("graphics", abline, axis, matplot) importFrom("stats", dnorm, lsfit, pexp, pnorm, predict, - qnorm, rnorm, sd, uniroot, dchisq, model.matrix, pchisq, resid) + qnorm, rnorm, sd, uniroot, dchisq, model.matrix, pchisq, resid, binomial, fitted) importFrom("stats", "coef", "df", "lm", "pf") importFrom("stats", "glm", "residuals", "vcov") importFrom("stats", "rbinom", "rexp") From 9de1b7c4f7b9544262a7168d1717241841742888 Mon Sep 17 00:00:00 2001 From: tibs Date: Tue, 14 Nov 2017 21:25:27 -0800 Subject: [PATCH 414/493] rob chanegd NAMESPACE --- selectiveInference/NAMESPACE | 1 + 1 file changed, 1 insertion(+) diff --git a/selectiveInference/NAMESPACE b/selectiveInference/NAMESPACE index 11a834e..f6854c5 100644 --- a/selectiveInference/NAMESPACE +++ b/selectiveInference/NAMESPACE @@ -15,6 +15,7 @@ export(lar,fs, TG.limits, TG.interval, debiasingMatrix, + randomizedLasso, randomizedLassoInf ) From 5ea21ba722b8ff590d69b5353c6713ec84bcfd37 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 16 Nov 2017 15:31:05 -0800 Subject: [PATCH 415/493] check for failure to fit relaxed estimator --- selectiveInference/R/funs.randomized.R | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index d5864f4..0f29f61 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -432,6 +432,10 @@ randomizedLassoInf = function(rand_lasso_soln, observed_internal = c(observed_target, t(X_minusE) %*% (y - fitted(glm_y))) cov_target = vcov(glm_y) + if (sum(is.na(observed_target)) > 0) { + stop("unregularized (relaxed) fit has NA values -- X[,active_set] likely singular") + } + targets = list(observed_target=observed_target, cov_target=cov_target, crosscov_target_internal=rbind(cov_target, matrix(0, nrow=p-nactive, ncol=nactive))) From 84cb2cbb3c8eb1b115c7468eb1f1decf3d11d118 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 16 Nov 2017 19:23:19 -0800 Subject: [PATCH 416/493] BF: trying not to form large matrices --- selectiveInference/R/funs.randomized.R | 141 ++++++++++++++----------- 1 file changed, 81 insertions(+), 60 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 0f29f61..a50993e 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -7,6 +7,7 @@ randomizedLasso = function(X, y, lam, family=c("gaussian","binomial"), + condition_subgrad=TRUE, noise_scale=NULL, ridge_term=NULL, max_iter=100, # how many iterations for each optimization problem @@ -122,7 +123,6 @@ randomizedLasso = function(X, E = c(unpenalized_set, active_set) I = inactive_set X_E = X[,E] - X_I = X[,I] if (length(E)==0){ return(list(active_set=c())) @@ -137,9 +137,8 @@ randomizedLasso = function(X, W_E = diag(rep(1,n)) } - L_E = t(X) %*% W_E %*% X[,E] - - coef_term = L_E + L_E = t(X_E) %*% W_E %*% X + coef_term = t(L_E) signs_ = c(rep(1, sum(unpenalized)), sign_soln[active]) @@ -148,23 +147,29 @@ randomizedLasso = function(X, if (length(signs_) == 1) { coef_term = coef_term * signs_ } else { - coef_term = coef_term %*% diag(signs_) # scaligns are non-negative + coef_term = coef_term %*% diag(signs_) # scalings are non-negative } if (sum(inactive) > 0) { - subgrad_term = matrix(0, p, sum(inactive)) # for subgrad - for (i in 1:sum(inactive)) { - subgrad_term[inactive_set[i], i] = 1 - } - - linear_term = cbind(coef_term, - subgrad_term) + if (condition_subgrad == FALSE) { + subgrad_term = matrix(0, p, sum(inactive)) # for subgrad + for (i in 1:sum(inactive)) { + subgrad_term[inactive_set[i], i] = 1 + } + linear_term = cbind(coef_term, + subgrad_term) + } else { + linear_term = coef_term + } } else { linear_term = coef_term } offset_term = rep(0, p) offset_term[active] = lam[active] * sign_soln[active] + # if conditional_subgrad == FALSE, linear_term will have E columns + # otherwise it will have p columns + opt_transform = list(linear_term=linear_term, offset_term=offset_term) @@ -178,32 +183,37 @@ randomizedLasso = function(X, active_term = -L_E # for \bar{\beta}_E if (sum(inactive) > 0) { - inactive_term = -subgrad_term - linear_term = cbind(active_term, - inactive_term) + if (condition_subgrad == FALSE) { + inactive_term = -subgrad_term + linear_term = cbind(active_term, + inactive_term) + } else { + linear_term = active_term + } } else { linear_term = active_term } offset_term = rep(0, p) - internal_transform = list(linear_term = linear_term, - offset_term = offset_term) + + # if conditional_subgrad == FALSE, linear_term will have E columns + # otherwise it will have p columns + + internal_transform = list(linear_term=linear_term, + offset_term=offset_term) # density for sampling optimization variables if (family=="binomial"){ unpen_est = as.vector(glm(y~X_E-1, family="binomial")$coefficients) - observed_raw = -t(X) %*% (y-logistic_fitted(X_E, unpen_est))-L_E %*% unpen_est + observed_raw = -as.vector((y-logistic_fitted(X_E, unpen_est)) %*% X) - L_E %*% unpen_est } else if (family=="gaussian"){ - observed_raw = -t(X) %*% y + observed_raw = -as.vector(y %*% X) } inactive_lam = lam[inactive_set] inactive_start = sum(unpenalized) + sum(active) active_start = sum(unpenalized) - - # XXX only for Gaussian so far - log_optimization_density = function(opt_state) { if ((sum(abs(opt_state[(inactive_start + 1):p]) > inactive_lam) > 0) || @@ -221,30 +231,39 @@ randomizedLasso = function(X, # work out conditional density and save it as well - conditional_law = conditional_opt_transform(noise_scale, - active_set, - observed_raw, - opt_transform$linear_term, - opt_transform$offset_term, - observed_opt_state) - constraints = matrix(0, length(active_set), 2) - constraints[,2] = Inf - conditional_law$constraints = constraints + if (condition_subgrad == TRUE) { + + constraints = matrix(0, length(active_set), 2) + constraints[,2] = Inf + + conditional_law = conditional_opt_transform(noise_scale, + active_set, + inactive_set, + observed_subgrad, + observed_raw, + opt_transform$linear_term, + opt_transform$offset_term, + observed_opt_state) + conditional_law$constraints = constraints + law = conditional_law + } else { - # add constraints and density to the full transform + constraints = matrix(0, length(active_set), 2) + constraints[,2] = Inf - subgrad_constraints = cbind(-lam[inactive_set], lam[inactive_set]) - constraints = rbind(constraints, subgrad_constraints) - - # this is for conditional density of opt given data + subgrad_constraints = cbind(-lam[inactive_set], lam[inactive_set]) + constraints = rbind(constraints, subgrad_constraints) - full_law = list(sampling_transform=list(linear_term=opt_transform$linear_term, - offset_term=opt_transform$offset_term + observed_raw), - constraints=constraints, - observed_opt_state=observed_opt_state, - log_optimization_density=log_optimization_density, - importance_transform=opt_transform) + full_law = list(sampling_transform=list(linear_term=opt_transform$linear_term, + offset_term=opt_transform$offset_term + observed_raw), + constraints=constraints, + observed_opt_state=observed_opt_state, + log_optimization_density=log_optimization_density, + importance_transform=opt_transform) + law = full_law + } + print(active_set) return(list(X=X, y=y, lam=lam, @@ -253,13 +272,13 @@ randomizedLasso = function(X, inactive_set=inactive_set, unpenalized_set=unpenalized_set, sign_soln=sign_soln, - full_law=full_law, - conditional_law=conditional_law, + law=law, internal_transform=internal_transform, observed_raw=observed_raw, noise_scale=noise_scale, soln=result$soln, - perturb=perturb_ + perturb=perturb_, + condition_subgrad=condition_subgrad )) } @@ -330,6 +349,8 @@ get_mean_cov = function(noise_scale, linear_term, offset_term){ conditional_opt_transform = function(noise_scale, active_set, + inactive_set, + observed_inactive_subgrad, observed_raw, opt_linear, opt_offset, @@ -337,20 +358,21 @@ conditional_opt_transform = function(noise_scale, nactive = length(active_set) - B = opt_linear[,1:nactive,drop=FALSE] + B = opt_linear beta_offset = opt_offset p = length(observed_opt_state) if (nactive < p) { - beta_offset = beta_offset+(opt_linear[,(nactive+1):p,drop=FALSE] %*% observed_opt_state[(nactive+1):p]) + beta_offset[inactive_set] = beta_offset[inactive_set] + observed_inactive_subgrad } opt_transform = list(linear_term=B, - offset_term = beta_offset) + offset_term=beta_offset) reduced_B = chol(t(B) %*% B) beta_offset = beta_offset + observed_raw reduced_beta_offset = solve(t(reduced_B)) %*% (t(B) %*% beta_offset) log_condl_optimization_density = function(opt_state) { + if (sum(opt_state < 0) > 0) { return(-Inf) } @@ -364,7 +386,7 @@ conditional_opt_transform = function(noise_scale, log_optimization_density = log_condl_optimization_density observed_opt_state = observed_opt_state[1:nactive] - optimization_transform = opt_transform + reduced_opt_transform =list(linear_term = reduced_B, offset_term = reduced_beta_offset) return(list(sampling_transform=reduced_opt_transform, log_optimization_density=log_condl_optimization_density, @@ -397,22 +419,21 @@ randomizedLassoInf = function(rand_lasso_soln, sampler = match.arg(sampler) - if (condition_subgrad == TRUE) { - cur_law = rand_lasso_soln$conditional_law - } else { - cur_law = rand_lasso_soln$full_law - } + law = rand_lasso_soln$law + if (condition_subgrad != soln$condition_subgrad) { + stop("condition_subgrad does not agree with value when randomizedLasso was solved -- sampler not properly specified") + } if (sampler == "adaptMCMC"){ - S = sample_opt_variables(cur_law, + S = sample_opt_variables(law, jump_scale=rep(1/sqrt(n), length(cur_law$observed_opt_state)), nsample=nsample) opt_samples = as.matrix(S$samples[(burnin+1):nsample,,drop=FALSE]) } else if (sampler == "norejection") { opt_samples = gaussian_sampler(noise_scale, - cur_law$observed_opt_state, - cur_law$sampling_transform$linear_term, - cur_law$sampling_transform$offset_term, - cur_law$constraints, + law$observed_opt_state, + law$sampling_transform$linear_term, + law$sampling_transform$offset_term, + law$constraints, nsamples=nsample) opt_sample = opt_samples[(burnin+1):nsample,] } @@ -429,7 +450,7 @@ randomizedLassoInf = function(rand_lasso_soln, glm_y = glm(y ~ X_E-1, family=binomial()) } observed_target = as.vector(glm_y$coefficients) - observed_internal = c(observed_target, t(X_minusE) %*% (y - fitted(glm_y))) + observed_internal = c(observed_target, as.vector((y - fitted(glm_y)) %*% X)[inactive_set]) cov_target = vcov(glm_y) if (sum(is.na(observed_target)) > 0) { From 488016f2e7b9cf0a88d416c71a501ddb66b5013a Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 16 Nov 2017 19:35:17 -0800 Subject: [PATCH 417/493] BF: wrong variable name --- selectiveInference/R/funs.randomized.R | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index a50993e..37183ec 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -263,7 +263,6 @@ randomizedLasso = function(X, law = full_law } - print(active_set) return(list(X=X, y=y, lam=lam, @@ -398,7 +397,7 @@ randomizedLassoInf = function(rand_lasso_soln, targets=NULL, condition_subgrad=TRUE, level=0.9, - sampler=c("norejection", "adaptMCMC"), + sampler=c("adaptMCMC", "norejection"), nsample=10000, burnin=2000) { @@ -420,7 +419,7 @@ randomizedLassoInf = function(rand_lasso_soln, sampler = match.arg(sampler) law = rand_lasso_soln$law - if (condition_subgrad != soln$condition_subgrad) { + if (condition_subgrad != rand_lasso_soln$condition_subgrad) { stop("condition_subgrad does not agree with value when randomizedLasso was solved -- sampler not properly specified") } From 6ccebc139e92f3a554b324b4edb5a70be1a8dbfd Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 16 Nov 2017 19:38:07 -0800 Subject: [PATCH 418/493] BF: variable name --- selectiveInference/R/funs.randomized.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 37183ec..69bc0b4 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -425,7 +425,7 @@ randomizedLassoInf = function(rand_lasso_soln, if (sampler == "adaptMCMC"){ S = sample_opt_variables(law, - jump_scale=rep(1/sqrt(n), length(cur_law$observed_opt_state)), nsample=nsample) + jump_scale=rep(1/sqrt(n), length(law$observed_opt_state)), nsample=nsample) opt_samples = as.matrix(S$samples[(burnin+1):nsample,,drop=FALSE]) } else if (sampler == "norejection") { opt_samples = gaussian_sampler(noise_scale, @@ -462,7 +462,7 @@ randomizedLassoInf = function(rand_lasso_soln, } - importance_transform = cur_law$importance_transform + importance_transform = law$importance_transform internal_transform=rand_lasso_soln$internal_transform observed_raw=rand_lasso_soln$observed_raw From f7a222d76535ffd0e43ae3b1339827cc7b6d1ff2 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 16 Nov 2017 19:46:32 -0800 Subject: [PATCH 419/493] BF: don't form X_minusE, make a shortcut for X --- selectiveInference/man/randomizedLassoInf.Rd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selectiveInference/man/randomizedLassoInf.Rd b/selectiveInference/man/randomizedLassoInf.Rd index 3bffbfa..78de601 100644 --- a/selectiveInference/man/randomizedLassoInf.Rd +++ b/selectiveInference/man/randomizedLassoInf.Rd @@ -15,7 +15,7 @@ randomizedLassoInf(rand_lasso_soln, targets=NULL, condition_subgrad=TRUE, level=0.9, - sampler=c("norejection", "adaptMCMC"), + sampler=c("adaptMCMC", "norejection"), nsample=10000, burnin=2000) } From ff4ed8aef3241711c2933c8fe77a825893559f2d Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 16 Nov 2017 23:01:20 -0800 Subject: [PATCH 420/493] timing script runs now -- needs testing to see if anything broken --- selectiveInference/R/funs.randomized.R | 59 +++++++++++++++----------- tests/randomized/test_instances.R | 3 +- 2 files changed, 36 insertions(+), 26 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 69bc0b4..e61e50b 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -138,7 +138,8 @@ randomizedLasso = function(X, } L_E = t(X_E) %*% W_E %*% X - coef_term = t(L_E) + L_E = t(L_E) + coef_term = L_E signs_ = c(rep(1, sum(unpenalized)), sign_soln[active]) @@ -395,7 +396,6 @@ conditional_opt_transform = function(noise_scale, randomizedLassoInf = function(rand_lasso_soln, targets=NULL, - condition_subgrad=TRUE, level=0.9, sampler=c("adaptMCMC", "norejection"), nsample=10000, @@ -406,10 +406,11 @@ randomizedLassoInf = function(rand_lasso_soln, p = ncol(rand_lasso_soln$X) active_set = rand_lasso_soln$active_set - nactive = length(active_set) + unpenalized_set = rand_lasso_soln$unpenalized_set + nactive = length(c(active_set, unpenalized_set)) if (nactive==0){ - return (list(active_set=active_set, pvalues=c(), ci=c())) + return (list(active_set=active_set, unpenalized_set=unpenalized_set, pvalues=c(), ci=c())) } inactive_set = rand_lasso_soln$inactive_set noise_scale = rand_lasso_soln$noise_scale # set to default value in randomizedLasso @@ -419,9 +420,6 @@ randomizedLassoInf = function(rand_lasso_soln, sampler = match.arg(sampler) law = rand_lasso_soln$law - if (condition_subgrad != rand_lasso_soln$condition_subgrad) { - stop("condition_subgrad does not agree with value when randomizedLasso was solved -- sampler not properly specified") - } if (sampler == "adaptMCMC"){ S = sample_opt_variables(law, @@ -437,19 +435,24 @@ randomizedLassoInf = function(rand_lasso_soln, opt_sample = opt_samples[(burnin+1):nsample,] } - if (is.null(targets)) { + # compute internal representation of the data - X_E = rand_lasso_soln$X[, active_set, drop=FALSE] - X_minusE = rand_lasso_soln$X[, inactive_set, drop=FALSE] - y = rand_lasso_soln$y + X_E = rand_lasso_soln$X[, c(active_set, unpenalized_set), drop=FALSE] + + y = rand_lasso_soln$y + X = rand_lasso_soln$X + + if (rand_lasso_soln$family == 'gaussian') { + glm_y = glm(y ~ X_E-1) + } else if (rand_lasso_soln$family == 'binomial') { + glm_y = glm(y ~ X_E-1, family=binomial()) + } + + observed_internal = c(as.vector(glm_y$coefficients), as.vector((y - fitted(glm_y)) %*% X)[inactive_set]) + + if (is.null(targets)) { - if (rand_lasso_soln$family == 'gaussian') { - glm_y = glm(y ~ X_E-1) - } else if (rand_lasso_soln$family == 'binomial') { - glm_y = glm(y ~ X_E-1, family=binomial()) - } observed_target = as.vector(glm_y$coefficients) - observed_internal = c(observed_target, as.vector((y - fitted(glm_y)) %*% X)[inactive_set]) cov_target = vcov(glm_y) if (sum(is.na(observed_target)) > 0) { @@ -471,21 +474,29 @@ randomizedLassoInf = function(rand_lasso_soln, for (i in 1:nactive){ - target_transform = linear_decomposition(targets$observed_target[i], - observed_internal, - targets$cov_target[i,i], - targets$crosscov_target_internal[,i], - internal_transform) + pre_nuisance = observed_internal - (targets$crosscov_target_internal[,i] * + targets$observed_target[i] / + targets$cov_target[i,i]) + + nuisance = internal_transform$linear_term %*% pre_nuisance[1:nactive] + nuisance[inactive_set] = nuisance[inactive_set] + pre_nuisance[(nactive+1):p] + + pre_linear_term = targets$crosscov_target_internal[,i] / targets$cov_target[i,i] + linear_term = rep(0, p) + linear_term = internal_transform$linear_term %*% pre_linear_term[1:nactive] + linear_term[inactive_set] = linear_term[inactive_set] + pre_linear_term[(nactive+1):p] + target_transform = list(linear_term=linear_term, + offset_term=nuisance + internal_transform$offset_term) # internal_transform$offset_term is 0... # changing dimension of density evalutaion - if ((condition_subgrad == TRUE) & (nactive < p-1)) { + if ((rand_lasso_soln$condition_subgrad == TRUE) & (nactive < p-1)) { # A description of why we do this might help target_opt_linear = cbind(target_transform$linear_term, importance_transform$linear_term) reduced_target_opt_linear = chol(t(target_opt_linear) %*% target_opt_linear) - target_linear = reduced_target_opt_linear[,1] + target_linear = reduced_target_opt_linear[,1,drop=FALSE] temp = solve(t(reduced_target_opt_linear)) %*% t(target_opt_linear) target_offset = temp %*% target_transform$offset_term target_transform = list(linear_term = as.matrix(target_linear), offset_term = target_offset) diff --git a/tests/randomized/test_instances.R b/tests/randomized/test_instances.R index b3617e6..c63e88b 100644 --- a/tests/randomized/test_instances.R +++ b/tests/randomized/test_instances.R @@ -109,8 +109,7 @@ collect_results = function(n,p,s, nsim=100, level=0.9, sampler = "adaptMCMC", #"norejection", # level=level, burnin=1000, - nsample=5000, - condition_subgrad=condition_subgrad) + nsample=5000) if (length(result$active_set)>0){ true_beta = data$beta[result$active_set] coverage = rep(0, nrow(result$ci)) From 9b9c7b2de47fb7bd0933ee66b68aad1204736f27 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 16 Nov 2017 23:13:52 -0800 Subject: [PATCH 421/493] DOC: fixed to pass check, as.vector for y --- selectiveInference/R/funs.randomized.R | 5 +++-- selectiveInference/man/randomizedLasso.Rd | 7 +++++++ selectiveInference/man/randomizedLassoInf.Rd | 6 ------ tests/randomized/test_instances.R | 1 + 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index e61e50b..0f1ac1d 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -21,7 +21,8 @@ randomizedLasso = function(X, family = match.arg(family) n = nrow(X); p = ncol(X) - + y = as.vector(y) + mean_diag = mean(apply(X^2, 2, sum)) # default ridge term @@ -58,7 +59,7 @@ randomizedLasso = function(X, if (family=="gaussian"){ soln = rep(0, p) Xsoln = rep(0, n) - linear_func = (- t(X) %*% y - perturb_) / n + linear_func = (- y %*% X - perturb_) / n gradient = 1. * linear_func ever_active = as.integer(rep(0, p)) diff --git a/selectiveInference/man/randomizedLasso.Rd b/selectiveInference/man/randomizedLasso.Rd index 1f69f71..bd91cd9 100644 --- a/selectiveInference/man/randomizedLasso.Rd +++ b/selectiveInference/man/randomizedLasso.Rd @@ -12,6 +12,7 @@ randomizedLasso(X, y, lam, family=c("gaussian", "binomial"), + condition_subgrad=TRUE, noise_scale=NULL, ridge_term=NULL, max_iter=100, @@ -44,6 +45,12 @@ Value of lambda used to compute beta. See the above warning \item{family}{ Response type: "gaussian" (default), "binomial". } +\item{condition_subgrad}{ +In forming selective confidence intervals and p-values should we condition +on the inactive coordinates of the subgradient as well? +Default is TRUE. This determines the form of \code{law} -- which +is used for sampling later. +} \item{noise_scale}{ Scale of Gaussian noise added to objective. Default is 0.5 * sd(y) times the sqrt of the mean of the trace of X^TX. diff --git a/selectiveInference/man/randomizedLassoInf.Rd b/selectiveInference/man/randomizedLassoInf.Rd index 78de601..f860188 100644 --- a/selectiveInference/man/randomizedLassoInf.Rd +++ b/selectiveInference/man/randomizedLassoInf.Rd @@ -13,7 +13,6 @@ randomization. \usage{ randomizedLassoInf(rand_lasso_soln, targets=NULL, - condition_subgrad=TRUE, level=0.9, sampler=c("adaptMCMC", "norejection"), nsample=10000, @@ -36,11 +35,6 @@ data of the LASSO. For both \code{"gaussian"} and \code{"binomial"}, this is the For example, this cross-covariance could be estimated by jointly bootstrapping the target of interest and the above vector. } -\item{condition_subgrad}{ -In forming selective confidence intervals and p-values should we condition -on the inactive coordinates of the subgradient as well? -Default is TRUE. -} \item{level}{ Level for confidence intervals. } diff --git a/tests/randomized/test_instances.R b/tests/randomized/test_instances.R index c63e88b..883585e 100644 --- a/tests/randomized/test_instances.R +++ b/tests/randomized/test_instances.R @@ -110,6 +110,7 @@ collect_results = function(n,p,s, nsim=100, level=0.9, level=level, burnin=1000, nsample=5000) + print(result$active_set) if (length(result$active_set)>0){ true_beta = data$beta[result$active_set] coverage = rep(0, nrow(result$ci)) From 74a2ab5128c6a2e247f38cd75abca122d431fddc Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 16 Nov 2017 23:17:59 -0800 Subject: [PATCH 422/493] active_set not returned -- just targets --- tests/randomized/test_instances.R | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/tests/randomized/test_instances.R b/tests/randomized/test_instances.R index 883585e..1b58986 100644 --- a/tests/randomized/test_instances.R +++ b/tests/randomized/test_instances.R @@ -110,9 +110,8 @@ collect_results = function(n,p,s, nsim=100, level=0.9, level=level, burnin=1000, nsample=5000) - print(result$active_set) - if (length(result$active_set)>0){ - true_beta = data$beta[result$active_set] + if (length(result$pvalues)>0){ + true_beta = data$beta[rand_lasso_soln$active_set] coverage = rep(0, nrow(result$ci)) for (i in 1:nrow(result$ci)){ if (result$ci[i,1]true_beta[i]){ From f127d6fa9932b784a74a66d5fd411acf0356cf5c Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 16 Nov 2017 23:49:33 -0800 Subject: [PATCH 423/493] DOC: changing comment --- selectiveInference/R/funs.randomized.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 0f1ac1d..53fa058 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -169,7 +169,7 @@ randomizedLasso = function(X, offset_term = rep(0, p) offset_term[active] = lam[active] * sign_soln[active] - # if conditional_subgrad == FALSE, linear_term will have E columns + # if conditional_subgrad == TRUE, linear_term will have E columns # otherwise it will have p columns opt_transform = list(linear_term=linear_term, From 693a138402702c40b51bb97574c51eb918fffbb0 Mon Sep 17 00:00:00 2001 From: Jelena Markovic Date: Fri, 17 Nov 2017 16:32:01 -0800 Subject: [PATCH 424/493] signs changed --- selectiveInference/R/funs.randomized.R | 6 +++--- tests/randomized/test_instances.R | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 53fa058..905bb5c 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -7,7 +7,7 @@ randomizedLasso = function(X, y, lam, family=c("gaussian","binomial"), - condition_subgrad=TRUE, + condition_subgrad=TRUE, noise_scale=NULL, ridge_term=NULL, max_iter=100, # how many iterations for each optimization problem @@ -480,12 +480,12 @@ randomizedLassoInf = function(rand_lasso_soln, targets$cov_target[i,i]) nuisance = internal_transform$linear_term %*% pre_nuisance[1:nactive] - nuisance[inactive_set] = nuisance[inactive_set] + pre_nuisance[(nactive+1):p] + nuisance[inactive_set] = nuisance[inactive_set] - pre_nuisance[(nactive+1):p] pre_linear_term = targets$crosscov_target_internal[,i] / targets$cov_target[i,i] linear_term = rep(0, p) linear_term = internal_transform$linear_term %*% pre_linear_term[1:nactive] - linear_term[inactive_set] = linear_term[inactive_set] + pre_linear_term[(nactive+1):p] + linear_term[inactive_set] = linear_term[inactive_set] - pre_linear_term[(nactive+1):p] target_transform = list(linear_term=linear_term, offset_term=nuisance + internal_transform$offset_term) # internal_transform$offset_term is 0... diff --git a/tests/randomized/test_instances.R b/tests/randomized/test_instances.R index 1b58986..fd39015 100644 --- a/tests/randomized/test_instances.R +++ b/tests/randomized/test_instances.R @@ -106,7 +106,7 @@ collect_results = function(n,p,s, nsim=100, level=0.9, family=family) result = selectiveInference:::randomizedLassoInf(rand_lasso_soln, - sampler = "adaptMCMC", #"norejection", # + sampler = "norejection", #"adaptMCMC", # level=level, burnin=1000, nsample=5000) @@ -134,5 +134,5 @@ collect_results = function(n,p,s, nsim=100, level=0.9, } set.seed(1) -collect_results(n=500, p=200, s=0, lam=1.) +collect_results(n=100, p=20, s=0, lam=1.) From e811fd5f85502b3a80bb50ff199a454e2913ff74 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Fri, 17 Nov 2017 18:26:48 -0800 Subject: [PATCH 425/493] adding names to pvalues and ci --- selectiveInference/R/funs.randomized.R | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 905bb5c..021c95f 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -398,7 +398,7 @@ conditional_opt_transform = function(noise_scale, randomizedLassoInf = function(rand_lasso_soln, targets=NULL, level=0.9, - sampler=c("adaptMCMC", "norejection"), + sampler=c("norejection"), nsample=10000, burnin=2000) { @@ -460,6 +460,12 @@ randomizedLassoInf = function(rand_lasso_soln, stop("unregularized (relaxed) fit has NA values -- X[,active_set] likely singular") } + if (!is.null(colnames(X))) { + names(observed_target) = colnames(X)[rand_lasso_soln$active_set] + } else { + names(observed_target) = rand_lasso_soln$active_set + } + targets = list(observed_target=observed_target, cov_target=cov_target, crosscov_target_internal=rbind(cov_target, matrix(0, nrow=p-nactive, ncol=nactive))) @@ -473,6 +479,9 @@ randomizedLassoInf = function(rand_lasso_soln, pvalues = rep(0, nactive) ci = matrix(0, nactive, 2) + names(pvalues) = names(targets$observed_target) + rownames(ci) = names(targets$observed_target) + for (i in 1:nactive){ pre_nuisance = observed_internal - (targets$crosscov_target_internal[,i] * From f0dc1961d7f08fc0a9ed6ef39095796a094a85c9 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Fri, 17 Nov 2017 20:10:38 -0800 Subject: [PATCH 426/493] burnin for noreject sampler --- selectiveInference/R/funs.sampler.R | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/selectiveInference/R/funs.sampler.R b/selectiveInference/R/funs.sampler.R index 3f7f5fd..6c433a2 100644 --- a/selectiveInference/R/funs.sampler.R +++ b/selectiveInference/R/funs.sampler.R @@ -4,7 +4,8 @@ log_concave_sampler = function(negative_log_density, grad_negative_log_density, constraints, observed, - nsamples){ + nsamples, + burnin){ #print(constraints) constraints = as.matrix(constraints) dim = nrow(constraints) @@ -65,11 +66,13 @@ log_concave_sampler = function(negative_log_density, } state = list(pos=observed, velocity = update_velocity()) - samples = matrix(0, nrow = nsamples, ncol = dim) + samples = matrix(0, nrow = nsamples - burnin, ncol = dim) for (i in 1:nsamples){ #print(paste("pos", toString(state$pos))) #print(paste("velocity", toString(state$velocity))) - samples[i,]=state$pos + if (i > burnin) { + samples[i - burnin,]=state$pos + } state = compute_next(state) } return (samples) @@ -80,7 +83,8 @@ gaussian_sampler = function(noise_scale, linear_term, offset_term, constraints, - nsamples){ + nsamples=10000, + burnin=2000){ negative_log_density = function(x) { recon = linear_term %*% x+offset_term @@ -95,5 +99,6 @@ gaussian_sampler = function(noise_scale, grad_negative_log_density, constraints, observed, - nsamples)) + nsamples, + burnin)) } From 5303a72ede612d9a9c291529c81117f2b750c190 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Fri, 17 Nov 2017 20:16:07 -0800 Subject: [PATCH 427/493] removing print statement --- selectiveInference/R/funs.randomized.R | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 021c95f..e1498a8 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -432,7 +432,8 @@ randomizedLassoInf = function(rand_lasso_soln, law$sampling_transform$linear_term, law$sampling_transform$offset_term, law$constraints, - nsamples=nsample) + nsamples=nsample, + burnin=burnin) opt_sample = opt_samples[(burnin+1):nsample,] } From 657c69d8e9bd2d84d0cc9e167200f67c2bb88f98 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Fri, 17 Nov 2017 20:17:24 -0800 Subject: [PATCH 428/493] BF: burnin now handled in samples --- selectiveInference/R/funs.randomized.R | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index e1498a8..b82d225 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -427,14 +427,13 @@ randomizedLassoInf = function(rand_lasso_soln, jump_scale=rep(1/sqrt(n), length(law$observed_opt_state)), nsample=nsample) opt_samples = as.matrix(S$samples[(burnin+1):nsample,,drop=FALSE]) } else if (sampler == "norejection") { - opt_samples = gaussian_sampler(noise_scale, - law$observed_opt_state, - law$sampling_transform$linear_term, - law$sampling_transform$offset_term, - law$constraints, - nsamples=nsample, - burnin=burnin) - opt_sample = opt_samples[(burnin+1):nsample,] + opt_sample = gaussian_sampler(noise_scale, + law$observed_opt_state, + law$sampling_transform$linear_term, + law$sampling_transform$offset_term, + law$constraints, + nsamples=nsample, + burnin=burnin) } # compute internal representation of the data From 42d31aade71fda39f944fd1f89fe3fdbf7ae8524 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Tue, 21 Nov 2017 10:59:02 -0800 Subject: [PATCH 429/493] updating C-software --- C-software | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/C-software b/C-software index 0b35c6e..fc60f47 160000 --- a/C-software +++ b/C-software @@ -1 +1 @@ -Subproject commit 0b35c6ed8537cef9aabed526b968b1c63d2f6cb8 +Subproject commit fc60f471ecd5fc40b822ee36d46b1a5aaf7ce7e8 From a9820894384ce0b5a78fa728838617e1a4473316 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Tue, 21 Nov 2017 10:59:12 -0800 Subject: [PATCH 430/493] speeding up root finding --- selectiveInference/R/funs.randomized.R | 50 ++++++++++++++++++-------- 1 file changed, 36 insertions(+), 14 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index b82d225..afd71fe 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -427,15 +427,15 @@ randomizedLassoInf = function(rand_lasso_soln, jump_scale=rep(1/sqrt(n), length(law$observed_opt_state)), nsample=nsample) opt_samples = as.matrix(S$samples[(burnin+1):nsample,,drop=FALSE]) } else if (sampler == "norejection") { - opt_sample = gaussian_sampler(noise_scale, - law$observed_opt_state, - law$sampling_transform$linear_term, - law$sampling_transform$offset_term, - law$constraints, - nsamples=nsample, - burnin=burnin) + opt_samples = gaussian_sampler(noise_scale, + law$observed_opt_state, + law$sampling_transform$linear_term, + law$sampling_transform$offset_term, + law$constraints, + nsamples=nsample, + burnin=burnin) } - + # compute internal representation of the data X_E = rand_lasso_soln$X[, c(active_set, unpenalized_set), drop=FALSE] @@ -521,14 +521,36 @@ randomizedLassoInf = function(rand_lasso_soln, target_sample = rnorm(nrow(as.matrix(opt_samples))) * sqrt(targets$cov_target[i,i]) + # weight in the numerator is of the form + # -1/(2 noise_scale^2)\|Do + q + P(t+\theta)\|^2_2 + # with D=importance_transform$linear_term + # q=target_transform$offset_term + cur_transform$offset_term + # P=target_transform$linear_term + + # weight in the denominator is of the form + # -1/(2 noise_scale^2)\|Do + q_D\|^2_2 + # with D=importance_transform$linear_term + # q_D = observed_raw + cur_transform$offset_term + + # reference measure just is the ratio at \theta=0 + # sufficient statistic is linear term in \theta + + sufficient_statistic = - cur_transform$linear_term %*% t(opt_samples) + sufficient_statistic = apply(sufficient_statistic, 2, + function(x) {return(x - target_transform$offset_term - cur_transform$offset_term)}) + sufficient_statistic = t(target_transform$linear_term) %*% sufficient_statistic / noise_scale^2 + + reference_measure = importance_weight(noise_scale, + t(as.matrix(target_sample)), + t(opt_samples), + cur_transform, + target_transform, + raw) + pivot = function(candidate){ - weights = importance_weight(noise_scale, - t(as.matrix(target_sample) + candidate), - t(opt_samples), - cur_transform, - target_transform, - raw) + weights = reference_measure * exp(candidate * sufficient_statistic) + weights = weights / max(weights) return(mean((target_sample + candidate < targets$observed_target[i]) * weights)/mean(weights)) } From a5208c68bd3fc4bf5f8f0e5b499134aa87908037 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Tue, 21 Nov 2017 11:21:57 -0800 Subject: [PATCH 431/493] trying to speed up importance weights -- broke it? --- selectiveInference/R/funs.randomized.R | 49 ++++++++++++++------------ 1 file changed, 27 insertions(+), 22 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index afd71fe..69eeed1 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -500,24 +500,27 @@ randomizedLassoInf = function(rand_lasso_soln, # changing dimension of density evalutaion - if ((rand_lasso_soln$condition_subgrad == TRUE) & (nactive < p-1)) { - - # A description of why we do this might help - - target_opt_linear = cbind(target_transform$linear_term, importance_transform$linear_term) - reduced_target_opt_linear = chol(t(target_opt_linear) %*% target_opt_linear) - target_linear = reduced_target_opt_linear[,1,drop=FALSE] - temp = solve(t(reduced_target_opt_linear)) %*% t(target_opt_linear) - target_offset = temp %*% target_transform$offset_term - target_transform = list(linear_term = as.matrix(target_linear), offset_term = target_offset) - cur_linear = reduced_target_opt_linear[,2:ncol(reduced_target_opt_linear)] - cur_offset = temp %*% importance_transform$offset_term - cur_transform = list(linear_term = as.matrix(cur_linear), offset_term = cur_offset) - raw = target_transform$linear_term * targets$observed_target[i] + target_transform$offset_term - } else { - cur_transform = importance_transform - raw = observed_raw - } +# if ((rand_lasso_soln$condition_subgrad == TRUE) & (nactive < p-1)) { + +# # A description of why we do this might help + +# target_opt_linear = cbind(target_transform$linear_term, importance_transform$linear_term) +# reduced_target_opt_linear = chol(t(target_opt_linear) %*% target_opt_linear) +# target_linear = reduced_target_opt_linear[,1,drop=FALSE] +# temp = solve(t(reduced_target_opt_linear)) %*% t(target_opt_linear) +# target_offset = temp %*% target_transform$offset_term +# target_transform = list(linear_term = as.matrix(target_linear), offset_term = target_offset) +# cur_linear = reduced_target_opt_linear[,2:ncol(reduced_target_opt_linear)] +# cur_offset = temp %*% importance_transform$offset_term +# cur_transform = list(linear_term = as.matrix(cur_linear), offset_term = cur_offset) +# raw = target_transform$linear_term * targets$observed_target[i] + target_transform$offset_term +# } else { +# cur_transform = importance_transform +# raw = observed_raw +# } + + cur_transform = importance_transform + raw = observed_raw target_sample = rnorm(nrow(as.matrix(opt_samples))) * sqrt(targets$cov_target[i,i]) @@ -546,13 +549,15 @@ randomizedLassoInf = function(rand_lasso_soln, cur_transform, target_transform, raw) + log_reference_measure = log(reference_measure) pivot = function(candidate){ - - weights = reference_measure * exp(candidate * sufficient_statistic) - weights = weights / max(weights) + # instead of uniroot -- maybe use newton? + exp_arg = candidate * sufficient_statistic + log_reference_measure + exp_arg = exp_arg - max(exp_arg) + weights = exp(exp_arg) + #weights = pmax(pmin(weights, 1e50), 1e-50) return(mean((target_sample + candidate < targets$observed_target[i]) * weights)/mean(weights)) - } rootU = function(candidate){ From d3bbf073ad82ce7931a3f4660ccefcd7143029b6 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Tue, 21 Nov 2017 11:26:35 -0800 Subject: [PATCH 432/493] using the cholesky as before to see if it helps --- selectiveInference/R/funs.randomized.R | 39 ++++++++++++-------------- 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 69eeed1..fede50a 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -500,27 +500,24 @@ randomizedLassoInf = function(rand_lasso_soln, # changing dimension of density evalutaion -# if ((rand_lasso_soln$condition_subgrad == TRUE) & (nactive < p-1)) { - -# # A description of why we do this might help - -# target_opt_linear = cbind(target_transform$linear_term, importance_transform$linear_term) -# reduced_target_opt_linear = chol(t(target_opt_linear) %*% target_opt_linear) -# target_linear = reduced_target_opt_linear[,1,drop=FALSE] -# temp = solve(t(reduced_target_opt_linear)) %*% t(target_opt_linear) -# target_offset = temp %*% target_transform$offset_term -# target_transform = list(linear_term = as.matrix(target_linear), offset_term = target_offset) -# cur_linear = reduced_target_opt_linear[,2:ncol(reduced_target_opt_linear)] -# cur_offset = temp %*% importance_transform$offset_term -# cur_transform = list(linear_term = as.matrix(cur_linear), offset_term = cur_offset) -# raw = target_transform$linear_term * targets$observed_target[i] + target_transform$offset_term -# } else { -# cur_transform = importance_transform -# raw = observed_raw -# } - - cur_transform = importance_transform - raw = observed_raw + if ((rand_lasso_soln$condition_subgrad == TRUE) & (nactive < p-1)) { + + # A description of why we do this might help + + target_opt_linear = cbind(target_transform$linear_term, importance_transform$linear_term) + reduced_target_opt_linear = chol(t(target_opt_linear) %*% target_opt_linear) + target_linear = reduced_target_opt_linear[,1,drop=FALSE] + temp = solve(t(reduced_target_opt_linear)) %*% t(target_opt_linear) + target_offset = temp %*% target_transform$offset_term + target_transform = list(linear_term = as.matrix(target_linear), offset_term = target_offset) + cur_linear = reduced_target_opt_linear[,2:ncol(reduced_target_opt_linear)] + cur_offset = temp %*% importance_transform$offset_term + cur_transform = list(linear_term = as.matrix(cur_linear), offset_term = cur_offset) + raw = target_transform$linear_term * targets$observed_target[i] + target_transform$offset_term + } else { + cur_transform = importance_transform + raw = observed_raw + } target_sample = rnorm(nrow(as.matrix(opt_samples))) * sqrt(targets$cov_target[i,i]) From a784aa40a0329cf632cc3b40e786b0e675fcad4a Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Tue, 21 Nov 2017 11:35:45 -0800 Subject: [PATCH 433/493] looking at other way to compute sufficient_stat --- selectiveInference/R/funs.randomized.R | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index fede50a..76a48f2 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -548,6 +548,20 @@ randomizedLassoInf = function(rand_lasso_soln, raw) log_reference_measure = log(reference_measure) + alt_measure = importance_weight(noise_scale, + t(as.matrix(target_sample) + 0.1 * sqrt(targets$cov_target[i,i])), + t(opt_samples), + cur_transform, + target_transform, + raw) + sufficient_statistic2 = (log(alt_measure) - log_reference_measure) / (0.1 * sqrt(targets$cov_target[i,i])) + sufficient_statistic = as.vector(sufficient_statistic) + sufficient_statistic2 = as.vector(sufficient_statistic2) + print(dim(as.vector(sufficient_statistic))) + print(dim(as.vector(sufficient_statistic2))) + print(max(sufficient_statistic - sufficient_statistic2)) + print(cor(sufficient_statistic, sufficient_statistic2)) + pivot = function(candidate){ # instead of uniroot -- maybe use newton? exp_arg = candidate * sufficient_statistic + log_reference_measure From c3936c16099f4f27082ff7756b980ba760c0f7b1 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Tue, 21 Nov 2017 11:37:07 -0800 Subject: [PATCH 434/493] removing print statements --- selectiveInference/R/funs.randomized.R | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 76a48f2..70ad818 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -548,26 +548,11 @@ randomizedLassoInf = function(rand_lasso_soln, raw) log_reference_measure = log(reference_measure) - alt_measure = importance_weight(noise_scale, - t(as.matrix(target_sample) + 0.1 * sqrt(targets$cov_target[i,i])), - t(opt_samples), - cur_transform, - target_transform, - raw) - sufficient_statistic2 = (log(alt_measure) - log_reference_measure) / (0.1 * sqrt(targets$cov_target[i,i])) - sufficient_statistic = as.vector(sufficient_statistic) - sufficient_statistic2 = as.vector(sufficient_statistic2) - print(dim(as.vector(sufficient_statistic))) - print(dim(as.vector(sufficient_statistic2))) - print(max(sufficient_statistic - sufficient_statistic2)) - print(cor(sufficient_statistic, sufficient_statistic2)) - pivot = function(candidate){ # instead of uniroot -- maybe use newton? exp_arg = candidate * sufficient_statistic + log_reference_measure exp_arg = exp_arg - max(exp_arg) weights = exp(exp_arg) - #weights = pmax(pmin(weights, 1e50), 1e-50) return(mean((target_sample + candidate < targets$observed_target[i]) * weights)/mean(weights)) } From b2f51ec16bf67e1f5cd93b01dd572161a40ea91b Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Tue, 21 Nov 2017 13:44:51 -0800 Subject: [PATCH 435/493] computing sufficient stat directly from importance weight --- selectiveInference/R/funs.randomized.R | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 70ad818..3134924 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -535,24 +535,27 @@ randomizedLassoInf = function(rand_lasso_soln, # reference measure just is the ratio at \theta=0 # sufficient statistic is linear term in \theta - sufficient_statistic = - cur_transform$linear_term %*% t(opt_samples) - sufficient_statistic = apply(sufficient_statistic, 2, - function(x) {return(x - target_transform$offset_term - cur_transform$offset_term)}) - sufficient_statistic = t(target_transform$linear_term) %*% sufficient_statistic / noise_scale^2 - reference_measure = importance_weight(noise_scale, t(as.matrix(target_sample)), t(opt_samples), cur_transform, target_transform, raw) + + alternative_measure = importance_weight(noise_scale, + t(as.matrix(target_sample) + 0.1 * sqrt(targets$cov_target[i,i])), + t(opt_samples), + cur_transform, + target_transform, + raw) + log_reference_measure = log(reference_measure) + sufficient_stat = (log(alternative_measure) - log_reference_measure) / (0.1 * sqrt(targets$cov_target[i,i])) pivot = function(candidate){ - # instead of uniroot -- maybe use newton? - exp_arg = candidate * sufficient_statistic + log_reference_measure - exp_arg = exp_arg - max(exp_arg) - weights = exp(exp_arg) + arg_ = candidate * sufficient_stat + log_reference_measure + arg_ = arg_ - max(arg_) + weights = exp(arg_) return(mean((target_sample + candidate < targets$observed_target[i]) * weights)/mean(weights)) } From 05ab77182980f8488e49720448fd49292f1364db Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Tue, 21 Nov 2017 13:45:10 -0800 Subject: [PATCH 436/493] rob's nonnull test -- needs work to run with master --- tests/randomized/nonnull.R | 159 +++++++++++++++++++++++++++++++++++++ 1 file changed, 159 insertions(+) create mode 100644 tests/randomized/nonnull.R diff --git a/tests/randomized/nonnull.R b/tests/randomized/nonnull.R new file mode 100644 index 0000000..660ebc4 --- /dev/null +++ b/tests/randomized/nonnull.R @@ -0,0 +1,159 @@ + + +library(glmnet) +#library(R.utils) +#library(truncnorm) +library(selectiveInference) + +#source("/Users/tibs/Dropbox/git/R-software/selectiveInference-currentCRAN/R/funs.fixed.R") +source("funs.fixed.R") + +#source("/Users/tibs/Dropbox/git/R-software/selectiveInference-currentCRAN/R/funs.inf.R") +source("funs.inf.R") + + +source("myfuns.R") + +pinv=solve + + +options(error=dump.frames) +set.seed(32103) +nsim=100 + + + + +dorand=T + +#type="full" +type="partial" + +n=100 +p=12 + +verbose=F +sign=rep(NA,p) +ci=ci0=ci2=ci4=ci5=ci6=vlims0=array(NA,c(p,2,nsim)) + +betaall=matrix(NA,nsim,p) +btruepart=matrix(NA,p,nsim) +betastarall=sestarall=array(NA,c(nsim,p,nboot)) +aall=acterr=rep(NA,nsim) +mc2=matrix(NA,nsim,p) +x=matrix(rnorm(n*p),n,p) +#x=matrix(rnorm(n*p),n,p)+scale(matrix(rnorm(n),n,p),F,sign(rnorm(p))) +x=scale(x,T,T)/sqrt(n-1) +sigma=1 +alpha=.1 +zalpha=-qnorm(alpha/2) + + + +lam=.03 / sqrt(5) #n=20 p=12 + +btrue=c(1,4,-4,rep(0,p-3)) #n=20 p=12 + + +seeds=sample(1:99999,size=nsim) + +for(ii in 1:nsim){ + set.seed(seeds[ii]) + cat(ii) + mutrue=x%*%btrue + y=mutrue+sigma*rnorm(n) + y=y-mean(y) + if(p>1){ + a=glmnet(x,y,standardize=F) + beta=as.numeric(coef(a,s=lam,exact=T,x=x,y=y))[-1] + } + if(p==1){ + coef=lsfit(x,y)$coef[2] + beta=sign(coef)*(abs(coef)-n*lam)*(abs(coef)>n*lam) + } + if(sum(beta!=0)>0){ + + + betaall[ii,]=beta + a=lsfit(x[,beta!=0],y) + aa=ls.diag(a) + bhat=a$coef[-1] + bhat0=a$coef[1] + act=which(beta!=0) + se=aa$std.err[-1] + btruepart[,ii]=0 + btruepart[act,ii]=lsfit(x[,act,drop=F],mutrue)$coef[-1] +#naive intervals + ci0[beta!=0,1,ii]=bhat-zalpha*se + ci0[beta!=0,2,ii]=bhat+zalpha*se + + #bonf-adj naive + alpha4=alpha/p + zalpha4=-qnorm(alpha4/2) + ci4[beta!=0,1,ii]=bhat-zalpha4*se + ci4[beta!=0,2,ii]=bhat+zalpha4*se + +#lee et al intervals +lee=foo(x,y,beta,lam*n,alpha,type=type) + ci[,,ii]=lee$ci + + #randomized + if(dorand){ + rand_lasso_soln = randomizedLasso(x, y, n*lam) + junk=randomizedLassoInf(rand_lasso_soln, nsample=5000, burnin=1000) + ci5[rand_lasso_soln$act,1,ii]=junk$ci[,1] + ci5[rand_lasso_soln$act,2,ii]=junk$ci[,2] +} + +}} + + + + +if(type=="partial") btrue=btruepart + +mc0=mean(ci0[,1,]>btrue | ci0[,2,]btrue | ci[,2,]btrue | ci4[,2,]btrue | ci5[,2,] Date: Tue, 21 Nov 2017 14:11:16 -0800 Subject: [PATCH 437/493] rob's nonnull test --- tests/randomized/nonnull.R | 251 +++++++++++++++++-------------------- 1 file changed, 115 insertions(+), 136 deletions(-) diff --git a/tests/randomized/nonnull.R b/tests/randomized/nonnull.R index 660ebc4..6651ed7 100644 --- a/tests/randomized/nonnull.R +++ b/tests/randomized/nonnull.R @@ -1,159 +1,138 @@ - - -library(glmnet) -#library(R.utils) -#library(truncnorm) library(selectiveInference) - -#source("/Users/tibs/Dropbox/git/R-software/selectiveInference-currentCRAN/R/funs.fixed.R") -source("funs.fixed.R") - -#source("/Users/tibs/Dropbox/git/R-software/selectiveInference-currentCRAN/R/funs.inf.R") -source("funs.inf.R") - - -source("myfuns.R") - -pinv=solve - - -options(error=dump.frames) set.seed(32103) -nsim=100 +# parameters +n=20; p=12; nsim=50 +sigma=1; alpha=.1; lam=0.04 +# design -dorand=T +X=matrix(rnorm(n*p),n,p) +X=scale(X,TRUE,TRUE) / sqrt(n-1) -#type="full" -type="partial" +# truth -n=100 -p=12 +btrue=c(1,4,-4,rep(0,p-3)) -verbose=F sign=rep(NA,p) ci=ci0=ci2=ci4=ci5=ci6=vlims0=array(NA,c(p,2,nsim)) betaall=matrix(NA,nsim,p) btruepart=matrix(NA,p,nsim) -betastarall=sestarall=array(NA,c(nsim,p,nboot)) -aall=acterr=rep(NA,nsim) mc2=matrix(NA,nsim,p) -x=matrix(rnorm(n*p),n,p) -#x=matrix(rnorm(n*p),n,p)+scale(matrix(rnorm(n),n,p),F,sign(rnorm(p))) -x=scale(x,T,T)/sqrt(n-1) -sigma=1 -alpha=.1 zalpha=-qnorm(alpha/2) - -lam=.03 / sqrt(5) #n=20 p=12 - -btrue=c(1,4,-4,rep(0,p-3)) #n=20 p=12 - - -seeds=sample(1:99999,size=nsim) +seeds=sample(1:99999, size=nsim) for(ii in 1:nsim){ set.seed(seeds[ii]) - cat(ii) - mutrue=x%*%btrue - y=mutrue+sigma*rnorm(n) - y=y-mean(y) - if(p>1){ - a=glmnet(x,y,standardize=F) - beta=as.numeric(coef(a,s=lam,exact=T,x=x,y=y))[-1] + mutrue = X%*%btrue + y = mutrue+sigma*rnorm(n) + y = y - mean(y) + + if (p>1) { + G = glmnet(X,y,standardize=FALSE) + beta=as.numeric(coef(G, s=lam, exact=TRUE, x=X, y=y))[-1] + } else if (p==1) { + coef=lsfit(x,y)$coef[2] + beta=sign(coef)*(abs(coef)-n*lam)*(abs(coef)>n*lam) } - if(p==1){ - coef=lsfit(x,y)$coef[2] - beta=sign(coef)*(abs(coef)-n*lam)*(abs(coef)>n*lam) + + # any active + if (sum(beta!=0) > 0){ + betaall[ii,]=beta + a=lsfit(X[,beta!=0], y) + aa=ls.diag(a) + bhat=a$coef[-1] + bhat0=a$coef[1] + act=which(beta!=0) + se=aa$std.err[-1] + btruepart[,ii]=0 + btruepart[act,ii]=lsfit(X[,act,drop=F],mutrue)$coef[-1] + + #naive intervals + ci0[beta!=0,1,ii]=bhat-zalpha*se + ci0[beta!=0,2,ii]=bhat+zalpha*se + + #bonf-adj naive + alpha4=alpha/p + zalpha4=-qnorm(alpha4/2) + ci4[beta!=0,1,ii]=bhat-zalpha4*se + ci4[beta!=0,2,ii]=bhat+zalpha4*se + + #lee et al intervals + lee = fixedLassoInf(X, + y, + beta, + lam*n, + alpha=alpha, + family='gaussian', + type='partial', + sigma=sigma) + ci_lee = matrix(NA, p, 2) + ci_lee[lee$vars,] = lee$ci + ci[,,ii] = ci_lee + + #randomized + + rand_lasso_soln = randomizedLasso(X, y, n*lam, noise_scale=0.5*sigma, ridge_term=0.5*sigma/sqrt(n)) + rand_E = rand_lasso_soln$active_set + X_rand_E = X[,rand_E,drop=FALSE] + rand_target = coef(glm(y~X_rand_E-1)) + cov_rand_E = solve(t(X_rand_E) %*% X_rand_E) * sigma^2 + cross_cov = matrix(0, p, length(rand_E)) + cross_cov[1:length(rand_E),1:length(rand_E)] = cov_rand_E + targets = list(observed_target=rand_target, + cov_target=cov_rand_E, + crosscov_target_internal=cross_cov) + rand_inf = randomizedLassoInf(rand_lasso_soln, nsample=5000, burnin=1000, targets=targets) + ci5[rand_lasso_soln$act,1,ii] = rand_inf$ci[,1] + ci5[rand_lasso_soln$act,2,ii] = rand_inf$ci[,2] } - if(sum(beta!=0)>0){ - - - betaall[ii,]=beta - a=lsfit(x[,beta!=0],y) - aa=ls.diag(a) - bhat=a$coef[-1] - bhat0=a$coef[1] - act=which(beta!=0) - se=aa$std.err[-1] - btruepart[,ii]=0 - btruepart[act,ii]=lsfit(x[,act,drop=F],mutrue)$coef[-1] -#naive intervals - ci0[beta!=0,1,ii]=bhat-zalpha*se - ci0[beta!=0,2,ii]=bhat+zalpha*se - - #bonf-adj naive - alpha4=alpha/p - zalpha4=-qnorm(alpha4/2) - ci4[beta!=0,1,ii]=bhat-zalpha4*se - ci4[beta!=0,2,ii]=bhat+zalpha4*se - -#lee et al intervals -lee=foo(x,y,beta,lam*n,alpha,type=type) - ci[,,ii]=lee$ci - - #randomized - if(dorand){ - rand_lasso_soln = randomizedLasso(x, y, n*lam) - junk=randomizedLassoInf(rand_lasso_soln, nsample=5000, burnin=1000) - ci5[rand_lasso_soln$act,1,ii]=junk$ci[,1] - ci5[rand_lasso_soln$act,2,ii]=junk$ci[,2] -} - -}} - - - - -if(type=="partial") btrue=btruepart - -mc0=mean(ci0[,1,]>btrue | ci0[,2,]btrue | ci[,2,]btrue | ci4[,2,]btrue | ci5[,2,]btruepart[,1:ii] | ci0[,2,1:ii]btruepart[,1:ii] | ci[,2,1:ii]btruepart[,1:ii] | ci4[,2,1:ii]btruepart[,1:ii] | ci5[,2,1:ii] Date: Tue, 21 Nov 2017 14:15:30 -0800 Subject: [PATCH 438/493] no longer need second cholesky --- selectiveInference/R/funs.randomized.R | 29 +++++--------------------- 1 file changed, 5 insertions(+), 24 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 3134924..48d10f2 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -498,26 +498,7 @@ randomizedLassoInf = function(rand_lasso_soln, target_transform = list(linear_term=linear_term, offset_term=nuisance + internal_transform$offset_term) # internal_transform$offset_term is 0... - # changing dimension of density evalutaion - - if ((rand_lasso_soln$condition_subgrad == TRUE) & (nactive < p-1)) { - - # A description of why we do this might help - - target_opt_linear = cbind(target_transform$linear_term, importance_transform$linear_term) - reduced_target_opt_linear = chol(t(target_opt_linear) %*% target_opt_linear) - target_linear = reduced_target_opt_linear[,1,drop=FALSE] - temp = solve(t(reduced_target_opt_linear)) %*% t(target_opt_linear) - target_offset = temp %*% target_transform$offset_term - target_transform = list(linear_term = as.matrix(target_linear), offset_term = target_offset) - cur_linear = reduced_target_opt_linear[,2:ncol(reduced_target_opt_linear)] - cur_offset = temp %*% importance_transform$offset_term - cur_transform = list(linear_term = as.matrix(cur_linear), offset_term = cur_offset) - raw = target_transform$linear_term * targets$observed_target[i] + target_transform$offset_term - } else { - cur_transform = importance_transform - raw = observed_raw - } + # compute sufficient statistic for root finding target_sample = rnorm(nrow(as.matrix(opt_samples))) * sqrt(targets$cov_target[i,i]) @@ -538,16 +519,16 @@ randomizedLassoInf = function(rand_lasso_soln, reference_measure = importance_weight(noise_scale, t(as.matrix(target_sample)), t(opt_samples), - cur_transform, + importance_transform, target_transform, - raw) + observed_raw) alternative_measure = importance_weight(noise_scale, t(as.matrix(target_sample) + 0.1 * sqrt(targets$cov_target[i,i])), t(opt_samples), - cur_transform, + importance_transform, target_transform, - raw) + observed_raw) log_reference_measure = log(reference_measure) sufficient_stat = (log(alternative_measure) - log_reference_measure) / (0.1 * sqrt(targets$cov_target[i,i])) From 2150080ca850e3ec57671d452de725f7f9a3d9fb Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Wed, 22 Nov 2017 09:38:59 -0800 Subject: [PATCH 439/493] rewriting sufficient stat to avoid NaN --- selectiveInference/R/funs.randomized.R | 41 ++++++++++++++++---- selectiveInference/man/randomizedLassoInf.Rd | 2 +- 2 files changed, 34 insertions(+), 9 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 48d10f2..2d4fc3b 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -338,7 +338,9 @@ importance_weight = function(noise_scale, W = log_num - log_den W = W - max(W) - return(exp(W)) + W = exp(W) + W = W / sum(W) + return(W) } get_mean_cov = function(noise_scale, linear_term, offset_term){ @@ -398,7 +400,7 @@ conditional_opt_transform = function(noise_scale, randomizedLassoInf = function(rand_lasso_soln, targets=NULL, level=0.9, - sampler=c("norejection"), + sampler=c("norejection", "adaptMCMC"), nsample=10000, burnin=2000) { @@ -496,7 +498,7 @@ randomizedLassoInf = function(rand_lasso_soln, linear_term = internal_transform$linear_term %*% pre_linear_term[1:nactive] linear_term[inactive_set] = linear_term[inactive_set] - pre_linear_term[(nactive+1):p] target_transform = list(linear_term=linear_term, - offset_term=nuisance + internal_transform$offset_term) # internal_transform$offset_term is 0... + offset_term=as.vector(nuisance + internal_transform$offset_term)) # internal_transform$offset_term is 0... # compute sufficient statistic for root finding @@ -505,17 +507,31 @@ randomizedLassoInf = function(rand_lasso_soln, # weight in the numerator is of the form # -1/(2 noise_scale^2)\|Do + q + P(t+\theta)\|^2_2 # with D=importance_transform$linear_term - # q=target_transform$offset_term + cur_transform$offset_term + # q=target_transform$offset_term + importance_transform$offset_term # P=target_transform$linear_term # weight in the denominator is of the form # -1/(2 noise_scale^2)\|Do + q_D\|^2_2 # with D=importance_transform$linear_term - # q_D = observed_raw + cur_transform$offset_term + # q_D = observed_raw + importance_transform$offset_term # reference measure just is the ratio at \theta=0 # sufficient statistic is linear term in \theta + den = importance_transform$linear_term %*% t(opt_samples) + observed_raw + importance_transform$offset_term + + num1 = (importance_transform$linear_term %*% t(opt_samples) + + target_transform$linear_term %*% t(as.matrix(target_sample)) + + importance_transform$offset_term + + target_transform$offset_term) + num2 = (importance_transform$linear_term %*% t(opt_samples) + + target_transform$linear_term %*% t(as.matrix(target_sample) + 1) + + importance_transform$offset_term + + target_transform$offset_term) + + suff_stat2 = -apply(num2^2 - num1^2, 2, sum) / (2 * noise_scale^2) + suff_stat2 = suff_stat2 + reference_measure = importance_weight(noise_scale, t(as.matrix(target_sample)), t(opt_samples), @@ -533,6 +549,9 @@ randomizedLassoInf = function(rand_lasso_soln, log_reference_measure = log(reference_measure) sufficient_stat = (log(alternative_measure) - log_reference_measure) / (0.1 * sqrt(targets$cov_target[i,i])) + print(cor(as.vector(suff_stat2), as.vector(sufficient_stat))) + print(summary(lm(as.vector(suff_stat2) ~ as.vector(sufficient_stat)))) + pivot = function(candidate){ arg_ = candidate * sufficient_stat + log_reference_measure arg_ = arg_ - max(arg_) @@ -549,9 +568,15 @@ randomizedLassoInf = function(rand_lasso_soln, } pvalues[i] = pivot(0) - line_min = -10*sd(target_sample) - line_max = 10*sd(target_sample) - + line_min = -10*sd(target_sample) + targets$observed_target[i] + line_max = 10*sd(target_sample) + targets$observed_target[i] + + print(min(log_reference_measure)) + print(max(log_reference_measure)) + print(min(sufficient_stat)) + print(max(sufficient_stat)) + print(rootU(line_min)) + print(rootU(line_max)) if (rootU(line_min)*rootU(line_max)<0){ ci[i,2] = uniroot(rootU, c(line_min, line_max))$root + targets$observed_target[i] } else{ diff --git a/selectiveInference/man/randomizedLassoInf.Rd b/selectiveInference/man/randomizedLassoInf.Rd index f860188..e7f94b1 100644 --- a/selectiveInference/man/randomizedLassoInf.Rd +++ b/selectiveInference/man/randomizedLassoInf.Rd @@ -14,7 +14,7 @@ randomization. randomizedLassoInf(rand_lasso_soln, targets=NULL, level=0.9, - sampler=c("adaptMCMC", "norejection"), + sampler=c("norejection", "adaptMCMC"), nsample=10000, burnin=2000) } From bb910dcd0f18b76708d19fcb86bd84009690bc14 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Wed, 22 Nov 2017 09:39:18 -0800 Subject: [PATCH 440/493] removing debug statements --- selectiveInference/R/funs.randomized.R | 9 --------- 1 file changed, 9 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 2d4fc3b..cbdd1bf 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -549,9 +549,6 @@ randomizedLassoInf = function(rand_lasso_soln, log_reference_measure = log(reference_measure) sufficient_stat = (log(alternative_measure) - log_reference_measure) / (0.1 * sqrt(targets$cov_target[i,i])) - print(cor(as.vector(suff_stat2), as.vector(sufficient_stat))) - print(summary(lm(as.vector(suff_stat2) ~ as.vector(sufficient_stat)))) - pivot = function(candidate){ arg_ = candidate * sufficient_stat + log_reference_measure arg_ = arg_ - max(arg_) @@ -571,12 +568,6 @@ randomizedLassoInf = function(rand_lasso_soln, line_min = -10*sd(target_sample) + targets$observed_target[i] line_max = 10*sd(target_sample) + targets$observed_target[i] - print(min(log_reference_measure)) - print(max(log_reference_measure)) - print(min(sufficient_stat)) - print(max(sufficient_stat)) - print(rootU(line_min)) - print(rootU(line_max)) if (rootU(line_min)*rootU(line_max)<0){ ci[i,2] = uniroot(rootU, c(line_min, line_max))$root + targets$observed_target[i] } else{ From b01a0af84a627aa42ab48214fd2bcf0fb412cdaa Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Wed, 22 Nov 2017 09:45:11 -0800 Subject: [PATCH 441/493] BF: finished new sufficient stat --- selectiveInference/R/funs.randomized.R | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index cbdd1bf..4e3ecb0 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -529,25 +529,25 @@ randomizedLassoInf = function(rand_lasso_soln, importance_transform$offset_term + target_transform$offset_term) - suff_stat2 = -apply(num2^2 - num1^2, 2, sum) / (2 * noise_scale^2) - suff_stat2 = suff_stat2 - + sufficient_stat = -apply(num2^2 - num1^2, 2, sum) / (2 * noise_scale^2) + reference_measure = importance_weight(noise_scale, t(as.matrix(target_sample)), t(opt_samples), importance_transform, target_transform, observed_raw) + log_reference_measure = log(reference_measure) + +# alternative_measure = importance_weight(noise_scale, +# t(as.matrix(target_sample) + 0.1 * sqrt(targets$cov_target[i,i])), +# t(opt_samples), +# importance_transform, +# target_transform, +# observed_raw) - alternative_measure = importance_weight(noise_scale, - t(as.matrix(target_sample) + 0.1 * sqrt(targets$cov_target[i,i])), - t(opt_samples), - importance_transform, - target_transform, - observed_raw) - log_reference_measure = log(reference_measure) - sufficient_stat = (log(alternative_measure) - log_reference_measure) / (0.1 * sqrt(targets$cov_target[i,i])) +# sufficient_stat = (log(alternative_measure) - log_reference_measure) / (0.1 * sqrt(targets$cov_target[i,i])) pivot = function(candidate){ arg_ = candidate * sufficient_stat + log_reference_measure From 62d5cbcc7bdfd02aef58cfd78f786dbadc5e69f5 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Wed, 22 Nov 2017 09:45:20 -0800 Subject: [PATCH 442/493] two new timing scripts --- tests/randomized/timing.R | 28 ++++++++++++++++++++++++++++ tests/randomized/timing_smaller.R | 26 ++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 tests/randomized/timing.R create mode 100644 tests/randomized/timing_smaller.R diff --git a/tests/randomized/timing.R b/tests/randomized/timing.R new file mode 100644 index 0000000..787152b --- /dev/null +++ b/tests/randomized/timing.R @@ -0,0 +1,28 @@ +library(selectiveInference) +library(glmnet) +set.seed(32) + +n=6000; p=50000 + +coverage = c() +for (i in 1:100) { +print("creating X") +print(system.time(x <- matrix(rnorm(n*p),n,p))) +print(system.time(x <- scale(x,T,T)/sqrt(n-1))) +print('running glmnet') +y=rnorm(n) +print(system.time(G <- glmnet(x,y,intercept=F,standardize=F))) +lam=G$lam[5] #for p< 1000 +lam=G$lam[10] #for p=1000 +lam=G$lam[2] #for p=50,000 +print("solving randomized LASSO") +print(system.time(rand_lasso <- randomizedLasso(x, y, n*lam))) +print(rand_lasso$active_set) +print("inference for randomizedLasso") +tim=system.time(rand_lasso_inf<-randomizedLassoInf(rand_lasso, sampler='norejection', nsample=20000, burnin=10000))[1] +print(rand_lasso_inf$pvalues) +print(names(rand_lasso_inf$pvalues)) +print(rand_lasso_inf$ci) +coverage = c(coverage, (rand_lasso_inf$ci[,1] <= 0) * (rand_lasso_inf$ci[,2] >= 0)) +print(mean(coverage)) +} \ No newline at end of file diff --git a/tests/randomized/timing_smaller.R b/tests/randomized/timing_smaller.R new file mode 100644 index 0000000..53ff6e7 --- /dev/null +++ b/tests/randomized/timing_smaller.R @@ -0,0 +1,26 @@ +library(selectiveInference) +library(glmnet) +set.seed(32) + +# smaller data sets +n=500; p=4000 + +coverage = c() +for (i in 1:100) { +print("creating X") +print(system.time(x <- matrix(rnorm(n*p),n,p))) +print(system.time(x <- scale(x,T,T)/sqrt(n-1))) +print('running glmnet') +y=rnorm(n) +print(system.time(G <- glmnet(x,y,intercept=F,standardize=F))) +lam=G$lam[5] #for p< 1000 +lam=G$lam[10] #for p=1000 +lam=G$lam[2] #for p=50,000 +print("solving randomized LASSO") +print(system.time(rand_lasso <- randomizedLasso(x, y, n*lam))) +print("inference for randomizedLasso") +print(system.time(rand_lasso_inf<-randomizedLassoInf(rand_lasso, sampler='norejection', nsample=15000, burnin=10000))) +print(rand_lasso_inf$ci) +coverage = c(coverage, (rand_lasso_inf$ci[,1] <= 0) * (rand_lasso_inf$ci[,2] >= 0)) +print(mean(coverage)) +} \ No newline at end of file From c9dffae9d3820f20be69527f33629fee98d9f664 Mon Sep 17 00:00:00 2001 From: Jelena Markovic Date: Sun, 26 Nov 2017 15:48:50 -0800 Subject: [PATCH 443/493] added randomized debiased --- selectiveInference/R/funs.fixed.R | 20 ++-- selectiveInference/R/funs.randomized.R | 143 ++++++++++++++++++------- tests/randomized/test_instances.R | 14 ++- 3 files changed, 123 insertions(+), 54 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 5df84d3..64dd026 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -318,20 +318,20 @@ debiasingMatrix = function(Xinfo, # could be X or t(X) %*% X / n d is_wide, nsample, rows, - verbose=FALSE, - bound=NULL, # starting value of bound - linesearch=TRUE, # do a linesearch? - scaling_factor=1.5, # multiplicative factor for linesearch - max_active=NULL, # how big can active set get? - max_try=10, # how many steps in linesearch? - warn_kkt=FALSE, # warn if KKT does not seem to be satisfied? - max_iter=50, # how many iterations for each optimization problem + verbose=FALSE, + bound=NULL, # starting value of bound + linesearch=TRUE, # do a linesearch? + scaling_factor=1.5, # multiplicative factor for linesearch + max_active=NULL, # how big can active set get? + max_try=10, # how many steps in linesearch? + warn_kkt=FALSE, # warn if KKT does not seem to be satisfied? + max_iter=50, # how many iterations for each optimization problem kkt_stop=TRUE, # stop based on KKT conditions? parameter_stop=TRUE, # stop based on relative convergence of parameter? - objective_stop=TRUE, # stop based on relative decrease in objective? + objective_stop=TRUE, # stop based on relative decrease in objective? kkt_tol=1.e-4, # tolerance for the KKT conditions parameter_tol=1.e-4, # tolerance for relative convergence of parameter - objective_tol=1.e-4 # tolerance for relative decrease in objective + objective_tol=1.e-4 # tolerance for relative decrease in objective ) { diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 4e3ecb0..d7be44a 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -268,7 +268,7 @@ randomizedLasso = function(X, return(list(X=X, y=y, lam=lam, - family=family, + family=family, active_set=active_set, inactive_set=inactive_set, unpenalized_set=unpenalized_set, @@ -397,8 +397,105 @@ conditional_opt_transform = function(noise_scale, importance_transform=opt_transform)) } +set.target.and.internal = function(rand_lasso_soln, type){ + + # compute internal representation of the data + y = rand_lasso_soln$y + X = rand_lasso_soln$X + p=ncol(X); n=nrow(X); + active_set = rand_lasso_soln$active_set + unpenalized_set = rand_lasso_soln$unpenalized_set + nactive = length(c(active_set, unpenalized_set)) + inactive_set = rand_lasso_soln$inactive_set + + X_E = rand_lasso_soln$X[, c(active_set, unpenalized_set), drop=FALSE] + + if (rand_lasso_soln$family == 'gaussian') { + glm_y = glm(y ~ X_E-1) + } else if (rand_lasso_soln$family == 'binomial') { + glm_y = glm(y ~ X_E-1, family=binomial()) + } + + observed_internal = c(as.vector(glm_y$coefficients), as.vector((y - fitted(glm_y)) %*% X)[inactive_set]) + + if (type=="partial"){ + + observed_target = as.vector(glm_y$coefficients) + cov_target = vcov(glm_y) + + if (sum(is.na(observed_target)) > 0) { + stop("unregularized (relaxed) fit has NA values -- X[,active_set] likely singular") + } + + crosscov_target_internal=rbind(cov_target, matrix(0, nrow=p-nactive, ncol=nactive)) + } + + if (type=="full"){ + + lasso.est = rand_lasso_soln$soln + X_active = X[, active_set] + X_inactive = X[, inactive_set] + + if (n 0) { - stop("unregularized (relaxed) fit has NA values -- X[,active_set] likely singular") - } - - if (!is.null(colnames(X))) { - names(observed_target) = colnames(X)[rand_lasso_soln$active_set] - } else { - names(observed_target) = rand_lasso_soln$active_set - } - - targets = list(observed_target=observed_target, - cov_target=cov_target, - crosscov_target_internal=rbind(cov_target, matrix(0, nrow=p-nactive, ncol=nactive))) - - } - + targets.and.internal = set.target.and.internal(rand_lasso_soln, type) + targets = targets.and.internal$targets + observed_internal = targets.and.internal$observed_internal + importance_transform = law$importance_transform internal_transform=rand_lasso_soln$internal_transform observed_raw=rand_lasso_soln$observed_raw diff --git a/tests/randomized/test_instances.R b/tests/randomized/test_instances.R index fd39015..1c1688b 100644 --- a/tests/randomized/test_instances.R +++ b/tests/randomized/test_instances.R @@ -85,11 +85,13 @@ test_KKT=function(){ #print(result$perturb) print(opt_linear %*% observed_opt_state+opt_offset+result$observed_raw-result$perturb) ## should be zero } - + collect_results = function(n,p,s, nsim=100, level=0.9, - family = "binomial", - condition_subgrad=TRUE, lam=1.2){ + family = "gaussian", + condition_subgrad=TRUE, + type="full", + lam=1.2){ rho=0. sigma=1 @@ -103,9 +105,11 @@ collect_results = function(n,p,s, nsim=100, level=0.9, rand_lasso_soln = selectiveInference:::randomizedLasso(X, y, lam, - family=family) - + family=family, + condition_subgrad=condition_subgrad) + result = selectiveInference:::randomizedLassoInf(rand_lasso_soln, + type=type, sampler = "norejection", #"adaptMCMC", # level=level, burnin=1000, From e90c9a6e0abf8b735ff436309ba6bde3a2721655 Mon Sep 17 00:00:00 2001 From: Jelena Markovic Date: Mon, 27 Nov 2017 10:21:59 -0800 Subject: [PATCH 444/493] back to targets --- selectiveInference/R/funs.randomized.R | 21 +++++++++++++-------- tests/randomized/test_instances.R | 4 +++- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index d7be44a..019da4b 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -136,8 +136,12 @@ randomizedLasso = function(X, W_E = diag(pi_vec*(1-pi_vec)) } else if (family=="gaussian"){ W_E = diag(rep(1,n)) + unpen_reg = glm(y ~ X_E-1) } + observed_internal = c(as.vector(unpen_reg$coefficients), as.vector((y - fitted(unpen_reg)) %*% X)[inactive_set]) + + L_E = t(X_E) %*% W_E %*% X L_E = t(L_E) coef_term = L_E @@ -275,6 +279,7 @@ randomizedLasso = function(X, sign_soln=sign_soln, law=law, internal_transform=internal_transform, + observed_internal=observed_internal, observed_raw=observed_raw, noise_scale=noise_scale, soln=result$soln, @@ -397,7 +402,7 @@ conditional_opt_transform = function(noise_scale, importance_transform=opt_transform)) } -set.target.and.internal = function(rand_lasso_soln, type){ +set.target = function(rand_lasso_soln, type){ # compute internal representation of the data y = rand_lasso_soln$y @@ -416,8 +421,6 @@ set.target.and.internal = function(rand_lasso_soln, type){ glm_y = glm(y ~ X_E-1, family=binomial()) } - observed_internal = c(as.vector(glm_y$coefficients), as.vector((y - fitted(glm_y)) %*% X)[inactive_set]) - if (type=="partial"){ observed_target = as.vector(glm_y$coefficients) @@ -490,12 +493,12 @@ set.target.and.internal = function(rand_lasso_soln, type){ targets = list(observed_target=observed_target, cov_target=cov_target, crosscov_target_internal=crosscov_target_internal) - return(list(targets=targets, observed_internal=observed_internal)) + return(targets) } randomizedLassoInf = function(rand_lasso_soln, - type="partial", + targets=NULL, level=0.9, sampler=c("norejection", "adaptMCMC"), nsample=10000, @@ -535,9 +538,11 @@ randomizedLassoInf = function(rand_lasso_soln, burnin=burnin) } - targets.and.internal = set.target.and.internal(rand_lasso_soln, type) - targets = targets.and.internal$targets - observed_internal = targets.and.internal$observed_internal + if (is.null(targets)){ + targets=set.target(rand_lasso_soln, type="partial") + } + + observed_internal = rand_lasso_soln$observed_internal importance_transform = law$importance_transform internal_transform=rand_lasso_soln$internal_transform diff --git a/tests/randomized/test_instances.R b/tests/randomized/test_instances.R index 1c1688b..355dcfb 100644 --- a/tests/randomized/test_instances.R +++ b/tests/randomized/test_instances.R @@ -108,8 +108,10 @@ collect_results = function(n,p,s, nsim=100, level=0.9, family=family, condition_subgrad=condition_subgrad) + targets=selectiveInference:::set.target(rand_lasso_soln,type=type) + result = selectiveInference:::randomizedLassoInf(rand_lasso_soln, - type=type, + targets=targets, sampler = "norejection", #"adaptMCMC", # level=level, burnin=1000, From 049a7ee7aab2574279007aee51b1f3fbece3e8a2 Mon Sep 17 00:00:00 2001 From: Jelena Markovic Date: Tue, 28 Nov 2017 16:35:38 -0800 Subject: [PATCH 445/493] cross cov was wrong --- selectiveInference/R/funs.randomized.R | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 019da4b..c03ceee 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -113,6 +113,7 @@ randomizedLasso = function(X, observed_unpen = result$soln[unpenalized] observed_subgrad = -n*result$gradient[inactive] + print(c("nactive", length(active_set))) if (sum(abs(observed_subgrad)>lam[inactive]*(1.001)) > 0){ stop("subgradient eq not satisfied") } @@ -457,10 +458,10 @@ set.target = function(rand_lasso_soln, type){ htheta = selectiveInference:::debiasingMatrix(Xordered, is_wide, n, 1:nactive) ithetasigma = (GS-((htheta%*%t(Xordered)) %*% Xordered)/n) } - M_active <- ((htheta%*%t(Xordered))+ithetasigma%*%FS%*%hsigmaSinv%*%t(X_active))/n M_inactive = (htheta[, (nactive+1):p]%*%t(X[,inactive_set])/n) #+ithetasigma_inactive%*%FS%*%hsigmaSinv%*%t(X_active))/n) + M_inactive_full = htheta[, (nactive+1)] } else{ pseudo_invX = pinv(crossprod(X)) @@ -474,14 +475,14 @@ set.target = function(rand_lasso_soln, type){ #M_inactive = (pseudo_invX[,inactive_set] %*% t(X_inactive))[active_set,] #print(M_inactive[,1:10]) - print(c("M_active size", dim(M_active))) - print(c("M_inactive size", dim(M_inactive))) + #print(c("M_active size", dim(M_active))) + #print(c("M_inactive size", dim(M_inactive))) residuals = y-X%*%lasso.est scalar = 1 #sqrt(n) observed_target = lasso.est[active_set]+scalar*M_active %*% residuals cov_target = vcov(glm_y) + scalar^2*M_inactive %*% t(M_inactive) - crosscov_target_internal = rbind(vcov(glm_y), scalar*t(M_inactive)) - print(c("dim",dim(crosscov_target_internal))) + crosscov_target_internal = rbind(vcov(glm_y), scalar*t(X_inactive) %*% t(M_inactive)) + } if (!is.null(colnames(X))) { @@ -555,11 +556,10 @@ randomizedLassoInf = function(rand_lasso_soln, rownames(ci) = names(targets$observed_target) for (i in 1:nactive){ - - pre_nuisance = observed_internal - (targets$crosscov_target_internal[,i] * + pre_nuisance = observed_internal - (as.vector(targets$crosscov_target_internal[,i]) * targets$observed_target[i] / targets$cov_target[i,i]) - + nuisance = internal_transform$linear_term %*% pre_nuisance[1:nactive] nuisance[inactive_set] = nuisance[inactive_set] - pre_nuisance[(nactive+1):p] @@ -637,7 +637,7 @@ randomizedLassoInf = function(rand_lasso_soln, pvalues[i] = pivot(0) line_min = -10*sd(target_sample) + targets$observed_target[i] line_max = 10*sd(target_sample) + targets$observed_target[i] - + if (rootU(line_min)*rootU(line_max)<0){ ci[i,2] = uniroot(rootU, c(line_min, line_max))$root + targets$observed_target[i] } else{ From df37d54bb57fde65fb2feda5e1b08df54de08844 Mon Sep 17 00:00:00 2001 From: Jelena Markovic Date: Tue, 28 Nov 2017 19:57:51 -0800 Subject: [PATCH 446/493] changed pivot --- selectiveInference/R/funs.randomized.R | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index c03ceee..839529d 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -623,7 +623,8 @@ randomizedLassoInf = function(rand_lasso_soln, arg_ = candidate * sufficient_stat + log_reference_measure arg_ = arg_ - max(arg_) weights = exp(arg_) - return(mean((target_sample + candidate < targets$observed_target[i]) * weights)/mean(weights)) + p = mean((target_sample + candidate < targets$observed_target[i]) * weights)/mean(weights) + return(2*min(p, 1-p)) } rootU = function(candidate){ From ca4a341a2b984b8fcf90557a1148cd89e6b4c82c Mon Sep 17 00:00:00 2001 From: Jelena Markovic Date: Thu, 30 Nov 2017 13:02:56 -0800 Subject: [PATCH 447/493] added twosided pivots option and constructing ci and pvalues as options --- selectiveInference/R/funs.randomized.R | 70 ++++++++++++++++++-------- tests/randomized/test_instances.R | 4 +- 2 files changed, 52 insertions(+), 22 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 839529d..5d9f42c 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -403,7 +403,10 @@ conditional_opt_transform = function(noise_scale, importance_transform=opt_transform)) } -set.target = function(rand_lasso_soln, type){ +set.target = function(rand_lasso_soln, + type, + construct_pvalues=NULL, + construct_ci=NULL){ # compute internal representation of the data y = rand_lasso_soln$y @@ -494,16 +497,28 @@ set.target = function(rand_lasso_soln, type){ targets = list(observed_target=observed_target, cov_target=cov_target, crosscov_target_internal=crosscov_target_internal) - return(targets) + + if (is.null(construct_ci)){ + construct_ci=rep(1,nactive) + } + if (is.null(construct_pvalues)){ + construct_pvalues=rep(1, nactive) + } + + + return(list(targets=targets, + construct_ci=construct_ci, + construct_pvalues=construct_pvalues)) } randomizedLassoInf = function(rand_lasso_soln, - targets=NULL, + full_targets=NULL, level=0.9, sampler=c("norejection", "adaptMCMC"), nsample=10000, - burnin=2000) + burnin=2000, + alternative = c("two-sided", "greated", "less")) { n = nrow(rand_lasso_soln$X) @@ -539,10 +554,14 @@ randomizedLassoInf = function(rand_lasso_soln, burnin=burnin) } - if (is.null(targets)){ - targets=set.target(rand_lasso_soln, type="partial") + if (is.null(full_targets)){ + full_targets=set.target(rand_lasso_soln, type="partial") } + targets=full_targets$targets + construct_ci=full_targets$construct_ci + construct_pvalues = full_targets$construct_pvalues + observed_internal = rand_lasso_soln$observed_internal importance_transform = law$importance_transform @@ -624,7 +643,7 @@ randomizedLassoInf = function(rand_lasso_soln, arg_ = arg_ - max(arg_) weights = exp(arg_) p = mean((target_sample + candidate < targets$observed_target[i]) * weights)/mean(weights) - return(2*min(p, 1-p)) + return(p) } rootU = function(candidate){ @@ -634,23 +653,34 @@ randomizedLassoInf = function(rand_lasso_soln, rootL = function(candidate){ return(pivot(targets$observed_target[i]+candidate)-(1+level)/2) } - - pvalues[i] = pivot(0) - line_min = -10*sd(target_sample) + targets$observed_target[i] - line_max = 10*sd(target_sample) + targets$observed_target[i] - if (rootU(line_min)*rootU(line_max)<0){ - ci[i,2] = uniroot(rootU, c(line_min, line_max))$root + targets$observed_target[i] - } else{ - ci[i,2]=line_max + if (construct_pvalues[i]==1){ + pvalues[i] = pivot(0) + if (alternative=="two-sided"){ + pvalues[i] = 2*min(pvalues[i], 1-pvalues[i]) + } else if (alternative=="greater"){ + pvalues[i]= 1-pvalues[i] + } } - if (rootL(line_min)*rootL(line_max)<0){ - ci[i,1] = uniroot(rootL, c(line_min, line_max))$root + targets$observed_target[i] - } else{ - ci[i,1] = line_min + + if (construct_ci[i]==1){ + + line_min = -10*sd(target_sample) + targets$observed_target[i] + line_max = 10*sd(target_sample) + targets$observed_target[i] + + if (rootU(line_min)*rootU(line_max)<0){ + ci[i,2] = uniroot(rootU, c(line_min, line_max))$root + targets$observed_target[i] + } else{ + ci[i,2]=line_max + } + if (rootL(line_min)*rootL(line_max)<0){ + ci[i,1] = uniroot(rootL, c(line_min, line_max))$root + targets$observed_target[i] + } else{ + ci[i,1] = line_min + } } } - return(list(targets=targets, pvalues=pvalues, ci=ci)) + return(list(full_targets=full_targets, pvalues=pvalues, ci=ci)) } logistic_fitted = function(X, beta){ diff --git a/tests/randomized/test_instances.R b/tests/randomized/test_instances.R index 355dcfb..bb2c66a 100644 --- a/tests/randomized/test_instances.R +++ b/tests/randomized/test_instances.R @@ -108,10 +108,10 @@ collect_results = function(n,p,s, nsim=100, level=0.9, family=family, condition_subgrad=condition_subgrad) - targets=selectiveInference:::set.target(rand_lasso_soln,type=type) + full_targets=selectiveInference:::set.target(rand_lasso_soln,type=type) result = selectiveInference:::randomizedLassoInf(rand_lasso_soln, - targets=targets, + full_targets=full_targets, sampler = "norejection", #"adaptMCMC", # level=level, burnin=1000, From c9a77521b27a124cdfd569de2df5fc04b5e4adec Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Mon, 12 Feb 2018 17:08:25 -0800 Subject: [PATCH 448/493] including conditional mean and covariance --- selectiveInference/R/funs.randomized.R | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 53fa058..cd02200 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -186,7 +186,7 @@ randomizedLasso = function(X, if (sum(inactive) > 0) { if (condition_subgrad == FALSE) { - inactive_term = -subgrad_term + inactive_term = subgrad_term linear_term = cbind(active_term, inactive_term) } else { @@ -279,7 +279,8 @@ randomizedLasso = function(X, noise_scale=noise_scale, soln=result$soln, perturb=perturb_, - condition_subgrad=condition_subgrad + condition_subgrad=condition_subgrad, + ridge_term=ridge_term )) } @@ -370,8 +371,12 @@ conditional_opt_transform = function(noise_scale, offset_term=beta_offset) reduced_B = chol(t(B) %*% B) beta_offset = beta_offset + observed_raw + reduced_beta_offset = solve(t(reduced_B)) %*% (t(B) %*% beta_offset) - + + cond_cov = solve(t(B) %*% B) * noise_scale^2 + cond_mean = - cond_cov %*% t(B) %*% beta_offset / noise_scale^2 + log_condl_optimization_density = function(opt_state) { if (sum(opt_state < 0) > 0) { @@ -392,7 +397,9 @@ conditional_opt_transform = function(noise_scale, return(list(sampling_transform=reduced_opt_transform, log_optimization_density=log_condl_optimization_density, observed_opt_state=observed_opt_state[1:nactive], - importance_transform=opt_transform)) + importance_transform=opt_transform, + cond_cov=cond_cov, + cond_mean=cond_mean)) } randomizedLassoInf = function(rand_lasso_soln, From 6d829966ae4d7a01f2e0a1d35f3227493af0cd35 Mon Sep 17 00:00:00 2001 From: Jelena Markovic Date: Tue, 20 Mar 2018 00:05:33 -0700 Subject: [PATCH 449/493] added full code --- selectiveInference/R/funs.full.high.dim.R | 528 ++++++++++++++++++++ tests/high_dim_full/test_lasso.R | 74 +++ tests/high_dim_full/test_linear_contrasts.R | 108 ++++ tests/high_dim_full/test_logistic.R | 115 +++++ 4 files changed, 825 insertions(+) create mode 100644 selectiveInference/R/funs.full.high.dim.R create mode 100644 tests/high_dim_full/test_lasso.R create mode 100644 tests/high_dim_full/test_linear_contrasts.R create mode 100644 tests/high_dim_full/test_logistic.R diff --git a/selectiveInference/R/funs.full.high.dim.R b/selectiveInference/R/funs.full.high.dim.R new file mode 100644 index 0000000..ffbc63c --- /dev/null +++ b/selectiveInference/R/funs.full.high.dim.R @@ -0,0 +1,528 @@ + +family_label = function(loss){ + if (loss=="ls"){ + return("gaussian") + } else if (loss=="logit"){ + return("binomial") + } +} + +# solves full lasso problem via glmnet +solve_problem_glmnet = function(X, y, lambda, penalty_factor, loss){ + if (is.null(lambda)){ + cv = cv.glmnet(x=X, y=y, family=family_label(loss), penalty.factor=penalty_factor, intercept=FALSE, thresh = 1e-12) + beta_hat = coef(cv, s="lambda.min") + } + else { + lasso = glmnet(x=X, y=y, family=family_label(loss), penalty.factor=penalty_factor,alpha=1, + standardize=FALSE, intercept=FALSE, thresh = 1e-20) + beta_hat = coef(lasso, s=lambda) + } + return(beta_hat[-1]) +} + +# solves full group lasso problem via gglasso +solve_problem_gglasso = function(X, y, groups, lambda, penalty_factor, loss){ + if (is.null(lambda)){ + cv <- cv.gglasso(x=X, y=y, group=groups, loss=loss, pf=penalty_factor, intercept=FALSE, eps=1e-12) + beta_hat = coef(cv, s="lambda.min") + } + else { + # gglasso for logit loss needs the response to be in {-1,1} + if (loss=="logit"){ + y_pm1 = rep(y) + y_pm1[which(y==0)]=-1 + } else if (loss=="ls"){ + y_pm1 = rep(y) + } + m <- gglasso(x=X, y=y_pm1, group=groups, loss=loss, pf=penalty_factor, intercept = FALSE, eps=1e-20) + beta_hat = coef(m, s=lambda) + } + #which(beta_hat!=0) + #beta_hat[which(beta_hat!=0)] + return(beta_hat[-1]) +} + +# solves the restricted problem +solve_restricted_problem = function(X, y, groups, group, lambda, penalty_factor, loss, algo){ + ngroups = length(unique(groups)) + if ((ngroupsradius +truncation_set = function(X, y, Qbeta_bar, Q, Q_sq, target_cov, sigma_est, group, target_stat, + groups, lambda, penalty_factor, loss, algo){ + + if (algo=="Q"){ + penalty_factor_rest = rep(penalty_factor) + penalty_factor_rest[group] = 10^10 + restricted_soln = solve_problem_Q(Q_sq, Qbeta_bar, lambda, penalty_factor=penalty_factor_rest) + } else { + restricted_soln = solve_restricted_problem(X, y, groups, group, lambda, penalty_factor=penalty_factor, + loss=loss, algo=algo) + } + #print("restricted soln") + #print(restricted_soln) + n = nrow(X) + p = length(Qbeta_bar) + I = diag(p) * sigma_est^2 + group_vars = which(groups==group) + nuisance = (Qbeta_bar - I[,group_vars] %*% solve(target_cov) %*% target_stat)/n + center = nuisance[group_vars] - (Q[group_vars,] %*% restricted_soln/n) + radius = penalty_factor[group]*lambda + return(list(target_cov=target_cov, center=center*n, radius=radius*n)) +} + + +linear_contrast = function(i, target_stat, target_cov, sigma_est,center, radius){ + target_cov_inv = solve(target_cov) + target_stat_scaled = target_cov_inv %*% target_stat + I=diag(length(target_stat)) * sigma_est^2 + nuisance = target_stat_scaled - I[,i]*target_stat[i]/target_cov[i,i] + new_center = center[i]+ nuisance[i] + new_radius = sqrt(max(radius^2-norm(nuisance[-i])^2,0)) + return(list(target_cov=target_cov[i,i], center=new_center, radius=new_radius)) +} + +# the pvalue if prob(Z>obs given |sigma_est^2/variance * Z+center|>radius) +# where Z~N(param, variance) +test_TG = function(param, observed, variance, sigma_est, center, radius, alt){ + st.error = sqrt(variance) + lower = variance*(-center-radius)/(sigma_est^2) + upper = variance*(-center+radius)/(sigma_est^2) + if (observed<=lower){ + case=1 + num = pnorm(upper, mean=param, sd=st.error, lower.tail = FALSE)+pnorm(lower, mean=param, sd=st.error)-pnorm(observed, mean=param, sd=st.error) + } else if (observed>=upper){ + case=2 + num = pnorm(observed, mean=param, sd=st.error, lower.tail = FALSE) + } else{ + case=3 + num = pnorm(upper, mean=param, sd=st.error, lower.tail = FALSE) + return(NULL) + #stop("observation in the unallowed range") + } + den = pnorm(upper, mean=param, sd=st.error, lower.tail = FALSE)+pnorm(lower, mean=param, sd=st.error) + pivot = num/den + if (alt=="two-sided"){ + return(2*pmin(pivot, 1-pivot)) + } else if (alt=="upper"){ + return(pivot) + } else if (alt=="lower"){ + return(1-pivot) + } +} + + +# returns P(Z > z | z in union of intervals) +tnorm.union.surv = function(z, mean, sd, intervals, bits = NULL){ + # intervals is a I x 2 matrix of disjoint intervals where the first column contains the lower endpoint + + pval = matrix(NA, nr = dim(intervals)[1], nc = length(mean)) + for(jj in 1:dim(intervals)[1]){ + if(z <= intervals[jj,1]){ + pval[jj,] = 1 + }else if(z >= intervals[jj,2]){ + pval[jj,] = 0 + }else{ + pval[jj,] = selectiveInference:::tnorm.surv(z, mean, sd, intervals[jj,1], intervals[jj,2], bits = bits) + } + } + + ww = matrix(NA, nr = dim(intervals)[1], nc = length(as.vector(mean))) + for(jj in 1:dim(intervals)[1]){ + ww[jj,] = pnorm(intervals[jj,2], mean = mean, sd = sd) - pnorm(intervals[jj,1], mean = mean, sd = sd) + } + + ww = ww%*%diag(as.vector(1/apply(ww,2,sum)), nrow=ncol(ww)) + + pval = apply(pval*ww,2,sum) + + return(as.numeric(pval)) +} + +create_tnorm_interval = function(z, sd, alpha, intervals, gridrange=c(-20,20), gridpts = 10000, + griddepth = 2, bits = NULL){ + + grid = seq(gridrange[1]*sd,gridrange[2]*sd,length=gridpts) + fun = function(x) { return(tnorm.union.surv(z, x, sd, intervals, bits)) } + + int = selectiveInference:::grid.search(grid, fun, alpha/2, 1-alpha/2, gridpts, griddepth) + #print(int) + return(int) +} + +selective_CI = function(observed, variance, sigma_est, center, radius, + alpha=0.1, gridrange=c(-20,20), gridpts=10000, griddepth=2){ + + pivot = function(param){ + return(test_TG(param, observed, variance, sigma_est, center, radius, alt="upper")) + } + st.error = sqrt(variance) + param_grid = seq(observed+gridrange[1] * st.error, observed+gridrange[2] * st.error, length=gridpts) + interval = selectiveInference:::grid.search(param_grid, pivot, alpha/2, 1-alpha/2, gridpts, griddepth) + return(interval) +} + + +norm = function(x){sqrt(sum(x*x))} + + +pvalue_naive_linear = function(observed, variance){ + pval = pnorm(observed, mean=0, sd = sqrt(variance), lower.tail = FALSE) + return(2*min(pval, 1-pval)) +} + +naive_CI = function(observed, variance, alpha=0.1){ + quantile = abs(qnorm(alpha/2, mean=0, sd = 1)) + st.error = sqrt(variance) + interval = c(observed - st.error*quantile, observed + st.error*quantile) + return(interval) +} + + +# theoretical lambda for glmnet +# glmnet solves: 1/2n*\|y-X\beta\|_2^2+\lambda_1\|\beta\|_1 +theoretical.lambda = function(X, loss="ls", sigma=1){ + n = nrow(X); p = ncol(X) + nsamples= 1000 + if (loss=="ls"){ + empirical = apply(abs(t(X) %*% matrix(rnorm(n*nsamples), nrow=n)), 2, max) + } else if (loss=="logit"){ + empirical = apply(abs(t(X) %*% matrix(sample(c(0,1), n*nsamples, replace = TRUE), nrow=n)), 2, max) + } + lam = mean(empirical)*sigma/n + return(lam) +} + + +compute_coverage = function(ci, beta){ + nactive=length(beta) + coverage_vector = rep(0, nactive) + for (i in 1:nactive){ + if (beta[i]>=ci[1,i] && beta[i]<=ci[2,i]){ + coverage_vector[i]=1 + } + } + return(coverage_vector) +} + + + +gradient = function(X,y,beta,loss){ + fit = X %*% beta + if (loss=="logit"){ + fit=exp(fit)/(1+exp(fit)) + } + return(-t(X)%*%(y-fit)) +} + +hessian = function(X, beta, loss){ + if (loss=="logit"){ + fit = X%*%beta + W=diag(as.vector(exp(fit)/((1+exp(fit))^2))) + } else if (loss=="ls"){ + W=diag(nrow(X)) + } + return(t(X) %*% W %*% X) +} + +mle=function(X,y,loss){ + reg = glm(y~X-1, family=family_label(loss)) + return(reg$coefficients) +} + +approximate = function(X, active_set){ + n=nrow(X) + p=ncol(X) + nactive=length(active_set) + inactive_set=setdiff(1:p, active_set) + X_active = X[, active_set] + X_inactive = X[, inactive_set] + + Xordered = X[,c(active_set,inactive_set,recursive=T)] + hsigmaS = 1/n*(t(X_active)%*%X_active) # hsigma[S,S] + hsigmaSinv = ginv(hsigmaS) # generalized inverse solve(hsigmaS) # + FS = rbind(diag(nactive),matrix(0,p-nactive,nactive)) + GS = cbind(diag(nactive),matrix(0,nactive,p-nactive)) + hsigma = 1/n*(t(Xordered)%*%Xordered) + is_wide = n < (2 * p) + + if (!is_wide) { + hsigma = 1/n*(t(Xordered)%*%Xordered) + htheta = selectiveInference:::debiasingMatrix(hsigma, is_wide, n, 1:nactive) + ithetasigma = (GS-(htheta%*%hsigma)) + } else { + htheta = selectiveInference:::debiasingMatrix(Xordered, is_wide, n, 1:nactive) + ithetasigma = (GS-((htheta%*%t(Xordered)) %*% Xordered)/n) + } + M_active <- ((htheta%*%t(Xordered))+ithetasigma%*%FS%*%hsigmaSinv%*%t(X_active))/n + #M_inactive = (htheta[, (nactive+1):p]%*%t(X[,inactive_set])/n) + #M=matrix(nrow=p, ncol=n) + #M[active_set, ]= M_active + #M[inactive_set, ]=matrix(0,nrow=length(inactive_set), ncol=n) + return(M_active) +} + +estimate_sigma = function(X, y, beta_hat_cv){ + n=nrow(X) + p=ncol(X) + if (np){ + Q=hessian(X, soln, loss=loss) + Qi=solve(Q) + Q_sq = W_root %*% X + #beta_bar = mle(X,y,loss=loss) + #print("mle") + #print(mle(X,y,loss=loss)) + beta_bar = soln - Qi %*% gradient(X,y,soln, loss=loss) + #beta_bar = (soln - Qi %*% gradient(X,y,soln, loss=loss)+mle(X,y,loss))/2 + #print("one step") + #print(beta_bar) + Qbeta_bar = Q%*%soln - gradient(X,y,soln, loss=loss) + beta_barE = beta_bar[active_set] + QiE = Qi[active_set, active_set] + } else{ + + M_active = approximate(W_root %*% X, active_set) ## this should be the active rows of \Sigma_i (W^{1/2} X)^T + Q = hessian(X, soln, loss) + Q_sq = W_root %*% X + QiE = M_active %*% t(M_active) + beta_barE = soln[active_set] + M_active %*% diag(as.vector(1/diagonal)) %*% residuals + Qbeta_bar = Q%*%soln-gradient(X,y,soln,loss=loss) + } + + return(list(Q=Q, Q_sq=Q_sq, Qbeta_bar=Qbeta_bar, QiE=QiE, beta_barE=beta_barE)) +} + + + +inference_group_lasso = function(X, y, soln, groups, lambda, penalty_factor, sigma_est, + loss, algo, construct_ci){ + + active_vars = which(soln!=0) + print("active_vars") + print(active_vars) + if (length(active_vars)==0){ + return(list(pvalues=NULL, naive_pvalues=NULL)) + } + active_groups = unique(groups[active_vars]) + nactive_groups = length(active_groups) + print(c("nactive groups", nactive_groups)) + + setup_params = get_QB(X=X, y=y, soln=soln, active_set=active_vars, loss=loss) + Q=setup_params$Q + Q_sq=setup_params$Q_sq + QiE=as.matrix(setup_params$QiE) + beta_barE = setup_params$beta_barE + Qbeta_bar = setup_params$Qbeta_bar + + QiE = QiE * sigma_est^2 + + pvalues = NULL + naive_pvalues = NULL + selected_vars=NULL + sel_intervals = NULL + naive_intervals= NULL + + + for (i in 1:nactive_groups){ + group=active_groups[i] + group_vars = which(groups==group) + cat("selected group:", group_vars, "\n") + + group_varsE = match(group_vars, active_vars) + target_stat = beta_barE[group_varsE] + target_cov = as.matrix(QiE)[group_varsE,group_varsE] + + TS = truncation_set(X=X, y=y, Qbeta_bar=Qbeta_bar, Q=Q, Q_sq=Q_sq, target_cov=target_cov, sigma_est=sigma_est, + group=group, target_stat=target_stat, groups=groups, lambda=lambda, + penalty_factor=penalty_factor, loss=loss, algo=algo) + center = TS$center + radius = TS$radius + + #print(c("center", center)) + #print(c("radius", radius)) + + if (length(target_stat)>1){ + for (i in 1:length(target_stat)){ + LC = linear_contrast(i=i, target_stat=target_stat, target_cov=target_cov, + sigma_est=sigma_est, center=center, radius=radius) + lower = target_cov[i,i]*(-LC$center-LC$radius)/(sigma_est^2) + upper = target_cov[i,i]*(-LC$center+LC$radius)/(sigma_est^2) + + if (target_stat[i]<=lower | target_stat[i]>=upper) + { + intervals = matrix(nrow=2, ncol=2) + intervals[1,] = c(-Inf, lower) + intervals[2,] = c(upper, Inf) + pval = tnorm.union.surv(target_stat[i], mean=0, sd=sqrt(target_cov[i,i]), intervals) + #pval = test_TG(0, target_stat[i], target_cov[i,i], sigma_est, center, radius, alt="two-sided") + pval = 2*min(pval, 1-pval) + print(c("pval", pval)) + pvalues = c(pvalues, pval) + + naive_pval = pvalue_naive_linear(target_stat[i], target_cov[i,i]) + naive_pvalues = c(naive_pvalues, naive_pval) + + selected_vars = c(selected_vars, group_vars[i]) + + if (construct_ci){ + sel_int = create_tnorm_interval(z=target_stat[i], sd=sqrt(target_cov[i,i]), alpha=0.1, intervals=intervals) + #print(c("tg intervals", sel_int)) + #sel_int = selective_CI(target_stat, target_cov, sigma_est, center, radius) + #print(c("jelena int", sel_int)) + naive_int = naive_CI(target_stat[i], target_cov[i,i]) + cat("sel interval", sel_int, "\n") + cat("naive interval", naive_int, "\n") + sel_intervals = cbind(sel_intervals, sel_int) + naive_intervals = cbind(naive_intervals, naive_int) + } + } else{ + print("observation not within the truncation limits!") + } + } + } else{ + + lower = target_cov*(-center-radius)/(sigma_est^2) + upper = target_cov*(-center+radius)/(sigma_est^2) + + if (target_stat<=lower | target_stat>=upper) + { + intervals = matrix(nrow=2, ncol=2) + intervals[1,] = c(-Inf, lower) + intervals[2,] = c(upper, Inf) + pval = tnorm.union.surv(target_stat, mean=0, sd=sqrt(target_cov), intervals) + #pval = test_TG(0, target_stat, target_cov, sigma_est, center, radius, alt="two-sided") + pval = 2*min(pval, 1-pval) + print(c("pval", pval)) + pvalues = c(pvalues, pval) + + selected_vars = c(selected_vars, group_vars) + + naive_pval = pvalue_naive_linear(target_stat, target_cov) + naive_pvalues = c(naive_pvalues, naive_pval) + + if (construct_ci){ + sel_int = create_tnorm_interval(z=target_stat, sd=sqrt(target_cov), alpha=0.1, intervals=intervals) + #print(c("tg intervals", sel_int)) + #sel_int = selective_CI(target_stat, target_cov, sigma_est, center, radius) + #print(c("jelena int", sel_int)) + naive_int = naive_CI(target_stat, target_cov) + cat("sel interval", sel_int, "\n") + cat("naive interval", naive_int, "\n") + sel_intervals = cbind(sel_intervals, sel_int) + naive_intervals = cbind(naive_intervals, naive_int) + } + } else{ + print("observation not within the truncation limits!") + } + + } + + + #reference = get_reference(center, radius, target_stat, solve(target_cov)) + #samples = sampling(target_cov, reference, center, radius, n=nrow(X), nsample=nsample) + #tilting_weights = compute_tilting_weights(reference, solve(target_cov), samples) + #pvalues[i] = weighted_pvalue(samples, tilting_weights, target_stat) + #naive_pvalues[i] = p_value(mvrnorm(n=nsample, mu=rep(0, length(target_stat)), Sigma = target_cov), target_stat) + #print(c("sampling", pvalues[i])) + } + + return(list(pvalues=pvalues, naive_pvalues=naive_pvalues, active_vars=selected_vars, + sel_intervals = sel_intervals, naive_intervals=naive_intervals)) +} + + + + + + diff --git a/tests/high_dim_full/test_lasso.R b/tests/high_dim_full/test_lasso.R new file mode 100644 index 0000000..1f43b95 --- /dev/null +++ b/tests/high_dim_full/test_lasso.R @@ -0,0 +1,74 @@ +library(gglasso) +library(MASS) +library(selectiveInference) +library(glmnet) +#source("/Users/Jelena/GitHub Jelena/full/code/group_lasso_fns.R") + +test_high_dim_lasso = function(nrep=10){ + + set.seed(1) + loss="ls" + construct_ci=TRUE + n=100 + p=300 + penalty_factor = rep(1, p) + + pvalues = NULL + naive_pvalues = NULL + sel_intervals=NULL + naive_intervals=NULL + sel_coverages=NULL + naive_coverages=NULL + sel_lengths=NULL + naive_lengths=NULL + + for (i in 1:nrep){ + X=matrix(rnorm(n*p), nrow=n) + beta = rep(0,p) + #beta[1:10]=1 + y = X%*%beta+rnorm(n) + + CV = cv.glmnet(X, y, standardize=FALSE, intercept=FALSE, family=selectiveInference:::family_label(loss)) + # print(CV$lambda.min) + # lambda via randomized cv + # lambda = CV$lambda[which.min(CV$cvm+rnorm(length(CV$cvm))/sqrt(n))] + # sigma via Reid et al. + sigma_est=selectiveInference:::estimate_sigma(X,y,coef(CV, s="lambda.min")[-1]) + print(c("sigma est", sigma_est)) + # theoretical lambda + lambda = 0.8*selectiveInference:::theoretical.lambda(X, loss, sigma_est) + + soln = selectiveInference:::solve_problem_glmnet(X, y, lambda, penalty_factor=penalty_factor, loss=loss) + #soln = solve_problem_gglasso(X, y, groups=1:ncol(X), lambda, penalty_factor=penalty_factor, loss=loss) + PVS = selectiveInference:::inference_group_lasso(X, y, soln, groups=1:ncol(X), lambda=lambda, penalty_factor=penalty_factor, + sigma_est, loss=loss, algo="Q", construct_ci = construct_ci) + active_vars=PVS$active_vars + pvalues = c(pvalues, PVS$pvalues) + naive_pvalues = c(naive_pvalues, PVS$naive_pvalues) + sel_intervals = cbind(sel_intervals, PVS$sel_intervals) + naive_intervals = cbind(naive_intervals, PVS$naive_intervals) + + if (length(pvalues)>0){ + plot(ecdf(pvalues)) + lines(ecdf(naive_pvalues), col="red") + abline(0,1) + } + if (construct_ci && length(active_vars)>0){ + + sel_coverages=c(sel_coverages, selectiveInference:::compute_coverage(PVS$sel_intervals, beta[active_vars])) + naive_coverages=c(naive_coverages, selectiveInference:::compute_coverage(PVS$naive_intervals, beta[active_vars])) + sel_lengths=c(sel_lengths, mean(PVS$sel_intervals[2,]-PVS$sel_intervals[1,])) + naive_lengths=c(naive_lengths, mean(PVS$naive_intervals[2,]-PVS$naive_intervals[1,])) + print(c("selective coverage:", mean(sel_coverages))) + print(c("naive coverage:", mean(naive_coverages))) + print(c("selective length:", mean(sel_lengths))) + print(c("naive length:", mean(naive_lengths))) + } + + } + + return(list(pvalues=pvalues, naive_pvalues=naive_pvalues)) +} + +test_high_dim_lasso() + diff --git a/tests/high_dim_full/test_linear_contrasts.R b/tests/high_dim_full/test_linear_contrasts.R new file mode 100644 index 0000000..e3bee64 --- /dev/null +++ b/tests/high_dim_full/test_linear_contrasts.R @@ -0,0 +1,108 @@ +library(gglasso) +library(MASS) +library(selectiveInference) +library(glmnet) +#.libPaths("/Users/Jelena/anaconda/lib/R/library") +#.libPaths("/Library/Frameworks/R.framework/Versions/3.4/Resources/library") +#source("/Users/Jelena/GitHub Jelena/full/code/group_lasso_fns.R") + + +gaussian_instance = function(n, p, s, sigma=1, rho=0, snr=7, + random_signs=TRUE, scale=FALSE, center=FALSE){ + X = sqrt(1-rho)*matrix(rnorm(n*p),n) + sqrt(rho)*matrix(rep(rnorm(n), p), nrow = n) + if (scale==TRUE){ + X = scale(X) + X = X/sqrt(n) + } + beta = rep(0, p) + beta[1:s]=snr + if (random_signs==TRUE && s>0){ + signs = sample(c(-1,1), s, replace = TRUE) + beta[1:s] = beta[1:s] * signs + } + beta=sample(beta) + y = X %*% beta + rnorm(n)*sigma + result <- list(X=X,y=y,beta=beta) + return(result) +} + + +test_group_lasso = function(nrep=10){ + + set.seed(1) + loss="ls" + construct_ci=TRUE + n=500 + p=100 + s=10 + ngroups=50 + lambda=60/n + snr=0.3 + groups = rep(1:ngroups,each=p/ngroups) + group_sizes = rep(p/ngroups,ngroups) + penalty_factor = rep(1, length(group_sizes)) + + + pvalues = NULL + naive_pvalues = NULL + sel_intervals=NULL + naive_intervals=NULL + sel_coverages=NULL + naive_coverages=NULL + sel_lengths=NULL + naive_lengths=NULL + + + for (i in 1:nrep){ + data = gaussian_instance(n,p,s, snr=snr) + X=data$X + y=data$y + beta=data$beta + #print("beta") + #print(which(beta!=0)) + CV = cv.glmnet(X, y, standardize=FALSE, intercept=FALSE, family=selectiveInference:::family_label(loss)) + sigma_est=selectiveInference:::estimate_sigma(X,y, coef(CV, s="lambda.min")[-1]) + print(c("sigma est", sigma_est)) + + soln = selectiveInference:::solve_problem_gglasso(X, y, groups, lambda, penalty_factor=penalty_factor, loss=loss) + PVS = selectiveInference:::inference_group_lasso(X,y, soln,groups, lambda=lambda, penalty_factor=penalty_factor, + sigma_est=sigma_est, loss=loss, algo="glmnet", construct_ci = construct_ci) + + active_vars = PVS$active_vars + print("active_vars") + print(active_vars) + null_active_vars = match(which(beta==0), active_vars) + null_active_vars = null_active_vars[!is.na(null_active_vars)] + print("null_active_vars") + print(null_active_vars) + + if (length(null_active_vars)>0){ + print(PVS$pvalues) + print(PVS$pvalues[null_active_vars]) + print(PVS$naive_pvalues[null_active_vars]) + pvalues = c(pvalues, PVS$pvalues[null_active_vars]) + naive_pvalues = c(naive_pvalues, PVS$naive_pvalues[null_active_vars]) + plot(ecdf(pvalues)) + lines(ecdf(naive_pvalues), col="red") + abline(0,1) + } + + if (construct_ci && length(active_vars)>0){ + + sel_coverages=c(sel_coverages, selectiveInference:::compute_coverage(PVS$sel_intervals, beta[active_vars])) + naive_coverages=c(naive_coverages, selectiveInference:::compute_coverage(PVS$naive_intervals, beta[active_vars])) + sel_lengths=c(sel_lengths, mean(PVS$sel_intervals[2,]-PVS$sel_intervals[1,])) + naive_lengths=c(naive_lengths, mean(PVS$naive_intervals[2,]-PVS$naive_intervals[1,])) + print(c("selective covarage:", mean(sel_coverages))) + print(c("naive coverage:", mean(naive_coverages))) + print(c("selective length:", mean(sel_lengths))) + print(c("naive length:", mean(naive_lengths))) + } + + } + + return(list(pvalues=pvalues, naive_pvalues=naive_pvalues)) +} + + +test_group_lasso() diff --git a/tests/high_dim_full/test_logistic.R b/tests/high_dim_full/test_logistic.R new file mode 100644 index 0000000..06b0186 --- /dev/null +++ b/tests/high_dim_full/test_logistic.R @@ -0,0 +1,115 @@ +#library(gglasso) +library(MASS) +library(selectiveInference) +library(glmnet) +#source("/Users/Jelena/GitHub Jelena/full/code/group_lasso_fns.R") + + +logistic_instance = function(n, p, s, sigma=1, rho=0, snr=7, + random_signs=TRUE, scale=FALSE, center=FALSE){ + + X = sqrt(1-rho)*matrix(rnorm(n*p),n) + sqrt(rho)*matrix(rep(rnorm(n), p), nrow = n) + if (scale==TRUE){ + X = scale(X) + X = X/sqrt(n) + } + beta = rep(0, p) + beta[1:s]=snr + if (random_signs==TRUE && s>0){ + signs = sample(c(-1,1), s, replace = TRUE) + beta[1:s] = beta[1:s] * signs + } + beta=sample(beta) + mu = X %*% beta + prob = exp(mu)/(1+exp(mu)) + y = rbinom(n, 1, prob) + + result <- list(X=X,y=y,beta=beta) + return(result) +} + + +test_logistic = function(nrep=10){ + + set.seed(1) + loss="logit" + construct_ci=TRUE + n=300 + p=50 + s=10 + + snr=2/sqrt(n) + + penalty_factor = rep(1, p) + + pvalues = NULL + naive_pvalues = NULL + sel_intervals=NULL + naive_intervals=NULL + sel_coverages=NULL + naive_coverages=NULL + sel_lengths=NULL + naive_lengths=NULL + + + for (i in 1:nrep){ + #data = logistic_instance(n, p, s, snr=snr) + #X=data$X + #y=data$y + #beta=data$beta + X = matrix(rnorm(n*p),n) + beta=rep(0,p) + beta[1:s]=snr + mu = X %*% beta + prob = exp(mu)/(1+exp(mu)) + y=rbinom(n,1, prob) + + print("beta") + print(which(beta!=0)) + + lambda=10/n + #lambda = 0.7*selectiveInference:::theoretical.lambda(X, loss, sigma=1) + + soln = selectiveInference:::solve_problem_glmnet(X, y, lambda, penalty_factor=penalty_factor, loss=loss) + + PVS = selectiveInference:::inference_group_lasso(X,y, soln, groups=1:ncol(X), lambda=lambda, penalty_factor=penalty_factor, + sigma_est=1, loss=loss, algo="glmnet", construct_ci = construct_ci) + + active_vars = PVS$active_vars + print("active_vars") + print(active_vars) + null_active_vars = match(which(beta==0), active_vars) + null_active_vars = null_active_vars[!is.na(null_active_vars)] + #print("null_active_vars") + #print(null_active_vars) + + if (length(null_active_vars)>0){ + pvalues = c(pvalues, PVS$pvalues[null_active_vars]) + naive_pvalues = c(naive_pvalues, PVS$naive_pvalues[null_active_vars]) + plot(ecdf(pvalues)) + lines(ecdf(naive_pvalues), col="red") + abline(0,1) + } + + if (construct_ci && length(active_vars)>0){ + + sel_coverages=c(sel_coverages, selectiveInference:::compute_coverage(PVS$sel_intervals, beta[active_vars])) + naive_coverages=c(naive_coverages, selectiveInference:::compute_coverage(PVS$naive_intervals, beta[active_vars])) + + #sel_coverages=c(sel_coverages, compute_coverage(PVS$sel_intervals[,null_active_vars], rep(0, length(null_active_vars)))) + #naive_coverages=c(naive_coverages,compute_coverage(PVS$naive_intervals[,null_active_vars], rep(0, length(null_active_vars)))) + + sel_lengths=c(sel_lengths, mean(PVS$sel_intervals[2,]-PVS$sel_intervals[1,])) + naive_lengths=c(naive_lengths, mean(PVS$naive_intervals[2,]-PVS$naive_intervals[1,])) + print(c("selective coverage:", mean(sel_coverages))) + print(c("naive coverage:", mean(naive_coverages))) + print(c("selective length:", mean(sel_lengths))) + print(c("naive length:", mean(naive_lengths))) + } + } + + return(list(pvalues=pvalues, naive_pvalues=naive_pvalues)) +} + +test_logistic() + From 47d26d53a622ec81be7681134b22a1cff9c87385 Mon Sep 17 00:00:00 2001 From: Jelena Markovic Date: Tue, 20 Mar 2018 20:45:27 -0700 Subject: [PATCH 450/493] comparisons --- liu_full.rds | Bin 0 -> 9781 bytes selectiveInference/R/funs.full.high.dim.R | 64 +- selectiveInference/src/debias.h | 79 +++ selectiveInference/src/matrixcomps.c | 266 ++++++++ selectiveInference/src/matrixcomps.h | 12 + selectiveInference/src/quadratic_program.c | 441 +++++++++++++ .../src/quadratic_program_wide.c | 597 ++++++++++++++++++ selectiveInference/src/randomized_lasso.c | 411 ++++++++++++ selectiveInference/src/randomized_lasso.h | 54 ++ tests/comparisons/lee_full.rds | Bin 0 -> 23430 bytes tests/comparisons/liu_full.rds | Bin 0 -> 9781 bytes tests/comparisons/plot_coverages.R | 38 ++ tests/lee_high_dim_full/test_lee_full.R | 73 +++ .../test_linear_contrasts.R | 0 .../test_liu_full.R} | 51 +- .../test_logistic.R | 0 16 files changed, 2050 insertions(+), 36 deletions(-) create mode 100644 liu_full.rds create mode 100644 selectiveInference/src/debias.h create mode 100644 selectiveInference/src/matrixcomps.c create mode 100644 selectiveInference/src/matrixcomps.h create mode 100644 selectiveInference/src/quadratic_program.c create mode 100644 selectiveInference/src/quadratic_program_wide.c create mode 100644 selectiveInference/src/randomized_lasso.c create mode 100644 selectiveInference/src/randomized_lasso.h create mode 100644 tests/comparisons/lee_full.rds create mode 100644 tests/comparisons/liu_full.rds create mode 100644 tests/comparisons/plot_coverages.R create mode 100644 tests/lee_high_dim_full/test_lee_full.R rename tests/{high_dim_full => liu_high_dim_full}/test_linear_contrasts.R (100%) rename tests/{high_dim_full/test_lasso.R => liu_high_dim_full/test_liu_full.R} (59%) rename tests/{high_dim_full => liu_high_dim_full}/test_logistic.R (100%) diff --git a/liu_full.rds b/liu_full.rds new file mode 100644 index 0000000000000000000000000000000000000000..e1499ba842759d56034e5734ff762dd37d84401c GIT binary patch literal 9781 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 + signs = sample(c(-1,1), s, replace = TRUE) + beta[1:s] = beta[1:s] * signs + } + + beta=sample(beta) + y = X %*% beta + rnorm(n)*sigma + result <- list(X=X,y=y,beta=beta) + return(result) +} + + family_label = function(loss){ if (loss=="ls"){ return("gaussian") @@ -389,14 +433,12 @@ inference_group_lasso = function(X, y, soln, groups, lambda, penalty_factor, sig loss, algo, construct_ci){ active_vars = which(soln!=0) - print("active_vars") - print(active_vars) + if (length(active_vars)==0){ return(list(pvalues=NULL, naive_pvalues=NULL)) } active_groups = unique(groups[active_vars]) nactive_groups = length(active_groups) - print(c("nactive groups", nactive_groups)) setup_params = get_QB(X=X, y=y, soln=soln, active_set=active_vars, loss=loss) Q=setup_params$Q @@ -429,9 +471,6 @@ inference_group_lasso = function(X, y, soln, groups, lambda, penalty_factor, sig center = TS$center radius = TS$radius - #print(c("center", center)) - #print(c("radius", radius)) - if (length(target_stat)>1){ for (i in 1:length(target_stat)){ LC = linear_contrast(i=i, target_stat=target_stat, target_cov=target_cov, @@ -447,7 +486,6 @@ inference_group_lasso = function(X, y, soln, groups, lambda, penalty_factor, sig pval = tnorm.union.surv(target_stat[i], mean=0, sd=sqrt(target_cov[i,i]), intervals) #pval = test_TG(0, target_stat[i], target_cov[i,i], sigma_est, center, radius, alt="two-sided") pval = 2*min(pval, 1-pval) - print(c("pval", pval)) pvalues = c(pvalues, pval) naive_pval = pvalue_naive_linear(target_stat[i], target_cov[i,i]) @@ -457,12 +495,10 @@ inference_group_lasso = function(X, y, soln, groups, lambda, penalty_factor, sig if (construct_ci){ sel_int = create_tnorm_interval(z=target_stat[i], sd=sqrt(target_cov[i,i]), alpha=0.1, intervals=intervals) - #print(c("tg intervals", sel_int)) #sel_int = selective_CI(target_stat, target_cov, sigma_est, center, radius) - #print(c("jelena int", sel_int)) naive_int = naive_CI(target_stat[i], target_cov[i,i]) - cat("sel interval", sel_int, "\n") - cat("naive interval", naive_int, "\n") + #cat("sel interval", sel_int, "\n") + #cat("naive interval", naive_int, "\n") sel_intervals = cbind(sel_intervals, sel_int) naive_intervals = cbind(naive_intervals, naive_int) } @@ -483,7 +519,7 @@ inference_group_lasso = function(X, y, soln, groups, lambda, penalty_factor, sig pval = tnorm.union.surv(target_stat, mean=0, sd=sqrt(target_cov), intervals) #pval = test_TG(0, target_stat, target_cov, sigma_est, center, radius, alt="two-sided") pval = 2*min(pval, 1-pval) - print(c("pval", pval)) + #print(c("pval", pval)) pvalues = c(pvalues, pval) selected_vars = c(selected_vars, group_vars) @@ -497,8 +533,8 @@ inference_group_lasso = function(X, y, soln, groups, lambda, penalty_factor, sig #sel_int = selective_CI(target_stat, target_cov, sigma_est, center, radius) #print(c("jelena int", sel_int)) naive_int = naive_CI(target_stat, target_cov) - cat("sel interval", sel_int, "\n") - cat("naive interval", naive_int, "\n") + #cat("sel interval", sel_int, "\n") + #cat("naive interval", naive_int, "\n") sel_intervals = cbind(sel_intervals, sel_int) naive_intervals = cbind(naive_intervals, naive_int) } diff --git a/selectiveInference/src/debias.h b/selectiveInference/src/debias.h new file mode 100644 index 0000000..da27467 --- /dev/null +++ b/selectiveInference/src/debias.h @@ -0,0 +1,79 @@ +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ + +void multiply_by_2(double *X, int nval); + +int solve_qp(double *nndef_ptr, /* A non-negative definite matrix */ + double *linear_func_ptr, /* Linear term in objective */ + double *nndef_diag_ptr, /* Diagonal of nndef */ + double *gradient_ptr, /* nndef times theta */ + int *ever_active_ptr, /* Ever active set: 1-based */ + int *nactive_ptr, /* Size of ever active set */ + int nfeature, /* How many features in nndef */ + double bound, /* feasibility parameter */ + double *theta, /* current value */ + double *theta_old, /* previous value */ + int maxiter, /* max number of iterations */ + double kkt_tol, /* precision for checking KKT conditions */ + double objective_tol, /* precision for checking relative decrease in objective value */ + double parameter_tol, /* precision for checking relative convergence of parameter */ + int max_active, /* Upper limit for size of active set -- otherwise break */ + int kkt_stop, /* Break based on KKT? */ + int objective_stop, /* Break based on convergence of objective value? */ + int param_stop); /* Break based on parameter convergence? */ + +int check_KKT_qp(double *theta, /* current theta */ + double *gradient_ptr, /* nndef times theta + linear_func */ + int nrow, /* how many rows in nndef */ + double bound, /* Lagrange multipler for \ell_1 */ + double tol); /* precision for checking KKT conditions */ + +int solve_wide(double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX/ncase = nndef */ + double *X_theta_ptr, /* Fitted values */ + double *linear_func_ptr, /* Linear term in objective */ + double *nndef_diag_ptr, /* Diagonal entries of non-neg def matrix */ + double *gradient_ptr, /* X^TX/ncase times theta + linear_func*/ + int *need_update_ptr, /* Keeps track of updated gradient coords */ + int *ever_active_ptr, /* Ever active set: 1-based */ + int *nactive_ptr, /* Size of ever active set */ + int ncase, /* How many rows in X */ + int nfeature, /* How many columns in X */ + double *bound_ptr, /* Lagrange multipliers */ + double ridge_term, /* Ridge / ENet term */ + double *theta_ptr, /* current value */ + double *theta_old_ptr, /* previous value */ + int maxiter, /* max number of iterations */ + double kkt_tol, /* precision for checking KKT conditions */ + double objective_tol, /* precision for checking relative decrease in objective value */ + double parameter_tol, /* precision for checking relative convergence of parameter */ + int max_active, /* Upper limit for size of active set -- otherwise break */ + int kkt_stop, /* Break based on KKT? */ + int objective_stop, /* Break based on convergence of objective value? */ + int param_stop); /* Break based on parameter convergence? */ + +int check_KKT_wide(double *theta_ptr, /* current theta */ + double *gradient_ptr, /* X^TX/ncase times theta + linear_func*/ + double *X_theta_ptr, /* Current fitted values */ + double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX/ncase = nndef */ + double *linear_func_ptr, /* Linear term in objective */ + int *need_update_ptr, /* Which coordinates need to be updated? */ + int nfeature, /* how many columns in X */ + int ncase, /* how many rows in X */ + double *bound_ptr, /* Lagrange multiplers for \ell_1 */ + double ridge_term, /* Ridge / ENet term */ + double tol); /* precision for checking KKT conditions */ + +void update_gradient_wide(double *gradient_ptr, /* X^TX/ncase times theta + linear_func */ + double *X_theta_ptr, /* Current fitted values */ + double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX/ncase = nndef */ + double *linear_func_ptr, /* Linear term in objective */ + int *need_update_ptr, /* Which coordinates need to be updated? */ + int nfeature, /* how many columns in X */ + int ncase); /* how many rows in X */ + + +#ifdef __cplusplus +} /* extern "C" */ +#endif /* __cplusplus */ diff --git a/selectiveInference/src/matrixcomps.c b/selectiveInference/src/matrixcomps.c new file mode 100644 index 0000000..b7e8bbc --- /dev/null +++ b/selectiveInference/src/matrixcomps.c @@ -0,0 +1,266 @@ +#include + +// Matrices are stored as vectors, in column-major order + +// Givens rotation of a and b, stored in c and s +void givens(double a, double b, double *c, double *s) { + if (b==0) { + *c = 1; + *s = 0; + } + else { + if (fabs(b)>fabs(a)) { + double t = -a/b; + *s = 1/sqrt(1+t*t); + *c = (*s)*t; + } + else { + double t = -b/a; + *c = 1/sqrt(1+t*t); + *s = (*c)*t; + } + } +} + +// Givens rotation applied to rows i1 and i2 of the m x n +// matrix A, on the subset of columns j1 through j2 +void rowrot(double *A, int i1, int i2, int m, int n, int j1, int j2, double c, double s) { + int j; + double t1,t2; + for (j=j1; j<=j2; j++) { + t1 = A[i1+j*m]; + t2 = A[i2+j*m]; + A[i1+j*m] = c*t1-s*t2; + A[i2+j*m] = s*t1+c*t2; + } +} + +// Givens rotation applied to columns j1 and j2 of the m x n +// matrix A, on the subset of rows i1 through i2 +void colrot(double *A, int j1, int j2, int m, int n, int i1, int i2, double c, double s) { + int i; + double t1,t2; + for (i=i1; i<=i2; i++) { + t1 = A[i+j1*m]; + t2 = A[i+j2*m]; + A[i+j1*m] = c*t1-s*t2; + A[i+j2*m] = s*t1+c*t2; + } +} + +// Downdate the QR factorization after deleting column j0, +// where Q1 is m x n and R is n x n. The other part of +// the Q matrix, Q2 m x (m-n), isn't needed so it isn't +// passed for efficiency +void downdate1(double *Q1, double *R, int j0, int m, int n) { + int j; + + double c,s; + for (j=j0+1; j=1; j--) { + // Compute the appropriate c and s + givens(w[j-1],w[j],&c,&s); + + // Pre-multiply w + rowrot(w,j-1,j,k,1,0,0,c,s); + + // Post-multiply Q2 + colrot(Q2,j-1,j,m,k,0,m-1,c,s); + } +} + +// Downdate the QR factorization after deleting the first row, +// where Q is m x m and R is m x n +void downdate2(double *Q, double *R, int *mp, int *np) { + int m,n,i; + m = *mp; + n = *np; + + double c,s; + for (i=m-1; i>=1; i--) { + // Compute the appropriate c and s + givens(Q[(i-1)*m],Q[i*m],&c,&s); + + // Post-mutiply Q + colrot(Q,i-1,i,m,m,0,m-1,c,s); + + // Pre-multiply R + if (i<=n) rowrot(R,i-1,i,m,n,i-1,n-1,c,s); + } +} + +// Update the QR factorization after adding the last row, +// where Q is m x m and R is m x n. For efficiency, Q is not +// passed, and only the first row of R is passed. Not counting +// its first row, the first q columns of R are zero +void update2(double *y, double *D, double *r, int *mp, int *np, int *qp) { + int m,n,q,j; + m = *mp; + n = *np; + q = *qp; + + double c,s; + for (j=0; j=0; i--) { + for (j=i; j0) { + d = n-m; + } + + double c,s; + for (i=r-k-1; i>=0; i--) { + for (j=i; j=0; i--) { + // Compute the appropriate c and s + givens(R[i+(i+q+1)*m2],R[i+(i+q)*m2],&c,&s); + + // Post-multiply R + colrot(R,i+q+1,i+q,m2,n,0,i,c,s); + + // Post-multiply D + colrot(A,i+q+1,i+q,m1,n,0,m1-1,c,s); + + // Pre-multiply y + rowrot(y,i+q+1,i+q,n,1,0,0,c,s); + } +} + +// Make the R factor upper triangular, by Givens rotating +// its columns and rows, appropriately. Here A is m1 x n, +// Q is m2 x m2, and R is m2 x n with rank(R) = n-q-1. The +// first q columns of R are zero. The kth row of R is the +// last row with a zero element on the diagonal +void maketri4(double *y, double *A, double *Q, double *R, int *m1p, int *m2p, int *np, int *qp, int *kp) { + int m1,m2,n,q,k,i,j; + m1 = *m1p; + m2 = *m2p; + n = *np; + q = *qp; + k = *kp; + + double c,s; + + // First rotate the columns + for (i=k-1; i>=0; i--) { + // Compute the appropriate c and s + givens(R[i+(i+q+1)*m2],R[i+(i+q)*m2],&c,&s); + + // Post-multiply R + colrot(R,i+q+1,i+q,m2,n,0,i,c,s); + + // Post-multiply D + colrot(A,i+q+1,i+q,m1,n,0,m1-1,c,s); + + // Pre-multiply y + rowrot(y,i+q+1,i+q,n,1,0,0,c,s); + } + + // Next rotate the rows + for (j=k+q+1; j // for fabs + +// Find an approximate row of \hat{nndef}^{-1} + +// Solves a dual version of problem (4) of https://arxiv.org/pdf/1306.3171.pdf + +// Dual problem: \text{min}_{\theta} 1/2 \theta^T \Sigma \theta - l^T\theta + \mu \|\theta\|_1 +// where l is `linear_func` below + +// This is the "negative" of the problem as in https://gist.github.com/jonathan-taylor/07774d209173f8bc4e42aa37712339bf +// Therefore we don't have to negate the answer to get theta. +// Update one coordinate + +double objective_qp(double *nndef_ptr, /* A non-negative definite matrix */ + double *linear_func_ptr, /* Linear term in objective */ + int *ever_active_ptr, /* Ever active set: 0-based */ + int *nactive_ptr, /* Size of ever active set */ + int nrow, /* how many rows in nndef */ + double bound, /* Lagrange multipler for \ell_1 */ + double *theta_ptr) /* current value */ +{ + int irow, icol; + double value = 0; + double *nndef_ptr_tmp = nndef_ptr; + double *linear_func_ptr_tmp = linear_func_ptr; + double *theta_row_ptr, *theta_col_ptr; + int *active_row_ptr, *active_col_ptr; + int active_row, active_col; + int nactive = *nactive_ptr; + + theta_row_ptr = theta_ptr; + theta_col_ptr = theta_ptr; + + for (irow=0; irow 0) && (fabs(gradient + bound) > tol * bound)) { + return(0); + } + else if ((*theta_ptr_tmp < 0) && (fabs(gradient - bound) > tol * bound)) { + return(0); + } + } + else { + if (fabs(gradient) > (1. + tol) * bound) { + return(0); + } + } + } + + return(1); +} + +int check_KKT_qp_active(int *ever_active_ptr, /* Ever active set: 0-based */ + int *nactive_ptr, /* Size of ever active set */ + double *theta_ptr, /* current theta */ + double *gradient_ptr, /* nndef times theta + linear_func */ + int nfeature, /* how many features in nndef */ + double bound, /* Lagrange multipler for \ell_1 */ + double tol) /* precision for checking KKT conditions */ +{ + // First check inactive + + int iactive; + double *theta_ptr_tmp; + double gradient; + double *gradient_ptr_tmp; + int nactive = *nactive_ptr; + int active_feature; + int *active_feature_ptr; + + for (iactive=0; iactive 0) && (fabs(gradient + bound) > tol * bound)) { + return(0); + } + else if ((*theta_ptr_tmp < 0) && (fabs(gradient - bound) > tol * bound)) { + return(0); + } + + } + else { + if (fabs(gradient) > (1. + tol) * bound) { + return(0); + } + } + } + + return(1); +} + + +double update_one_coord_qp(double *nndef_ptr, /* A non-negative definite matrix */ + double *linear_func_ptr, /* Linear term in objective */ + double *nndef_diag_ptr, /* Diagonal of nndef */ + double *gradient_ptr, /* nndef times theta + linear_func */ + int *ever_active_ptr, /* Ever active set: 1-based */ + int *nactive_ptr, /* Size of ever active set */ + int nfeature, /* How many features in nndef */ + double bound, /* feasibility parameter */ + double *theta_ptr, /* current value */ + int coord, /* which coordinate to update: 0-based */ + int is_active) /* Is this coord in ever_active */ +{ + + double delta; + double linear_term = 0; + double value = 0; + double old_value; + double *nndef_ptr_tmp; + double *gradient_ptr_tmp; + double *theta_ptr_tmp; + int icol = 0; + + double *quadratic_ptr = ((double *) nndef_diag_ptr + coord); + double quadratic_term = *quadratic_ptr; + + gradient_ptr_tmp = ((double *) gradient_ptr + coord); + linear_term = *gradient_ptr_tmp; + + theta_ptr_tmp = ((double *) theta_ptr + coord); + old_value = *theta_ptr_tmp; + + // The coord entry of gradient_ptr term has a diagonal term in it: + // nndef[coord, coord] * theta[coord] + // This removes it. + + linear_term -= quadratic_term * old_value; + + // Now soft-threshold the coord entry of theta + + // Objective is t \mapsto q/2 * t^2 + l * t + bound |t| + // with q=quadratic_term and l=linear_term + + // With a negative linear term, solution should be + // positive + + if (linear_term < -bound) { + value = (-linear_term - bound) / quadratic_term; + } + else if (linear_term > bound) { + value = -(linear_term - bound) / quadratic_term; + } + + // Add to active set if necessary + + if ((is_active == 0) && (value != 0)) { + update_ever_active_qp(coord, ever_active_ptr, nactive_ptr); + } + + // Update the linear term + + if (fabs(old_value - value) > 1.e-6 * (fabs(value) + fabs(old_value))) { + + delta = value - old_value; + nndef_ptr_tmp = ((double *) nndef_ptr + coord * nfeature); + gradient_ptr_tmp = ((double *) gradient_ptr); + + for (icol=0; icol 0)) { + break; + } + old_value = new_value; + } + + } + + // Check size of active set + + if (*nactive_ptr >= max_active) { + break; + } + + } + return(iter); +} + diff --git a/selectiveInference/src/quadratic_program_wide.c b/selectiveInference/src/quadratic_program_wide.c new file mode 100644 index 0000000..ce7284b --- /dev/null +++ b/selectiveInference/src/quadratic_program_wide.c @@ -0,0 +1,597 @@ +#include // for fabs + +// Find an approximate row of \hat{nndef}^{-1} + +// Solves a dual version of problem (4) of https://arxiv.org/pdf/1306.3171.pdf + +// Dual problem: \text{min}_{\theta} 1/2 \|X\theta\|^2/n + l^T\theta + \mu \|\theta\|_1 + \frac{\epsilon}{2} \|\theta\|^2_2 +// where l is `linear_func` below + +// This is the "negative" of the problem as in https://gist.github.com/jonathan-taylor/07774d209173f8bc4e42aa37712339bf +// Therefore we don't have to negate the answer to get theta. +// Update one coordinate + +// Throughout X is a design matrix + +double objective_wide(double *X_theta_ptr, /* Fitted values */ + double *linear_func_ptr, /* Linear term in objective */ + int *ever_active_ptr, /* Ever active set: 0-based */ + int *nactive_ptr, /* Size of ever active set */ + int ncase, /* how many rows in X */ + int nfeature, /* how many columns in X */ + double *bound_ptr, /* Lagrange multiplers for \ell_1 */ + double ridge_term, /* Ridge / ENet term */ + double *theta_ptr) /* current value */ +{ + int icase, iactive; + double value = 0; + double *bound_ptr_tmp; + double *X_theta_ptr_tmp = X_theta_ptr; + double *linear_func_ptr_tmp = linear_func_ptr; + double *theta_ptr_tmp; + int *active_feature_ptr; + int active_feature; + int nactive = *nactive_ptr; + + // The term \|X\theta\|^2_2/n, with n=ncase + + for (icase=0; icase 0) && (fabs(gradient + ridge_term * (*theta_ptr_tmp) + bound) > tol * bound)) { + return(0); + } + else if ((*theta_ptr_tmp < 0) && (fabs(gradient + ridge_term * (*theta_ptr_tmp) - bound) > tol * bound)) { + return(0); + } + + } + else if (bound != 0) { + if (fabs(gradient) > (1. + tol) * bound) { + return(0); + } + } + } + + return(1); +} + +int check_KKT_wide_active(int *ever_active_ptr, /* Ever active set: 0-based */ + int *nactive_ptr, /* Size of ever active set */ + double *theta_ptr, /* current theta */ + double *gradient_ptr, /* X^TX/ncase times theta + linear_func*/ + double *X_theta_ptr, /* Current fitted values */ + double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX/ncase = nndef */ + double *linear_func_ptr, /* Linear term in objective */ + int *need_update_ptr, /* Which coordinates need to be updated? */ + int ncase, /* how many rows in X */ + int nfeature, /* how many columns in X */ + double *bound_ptr, /* Lagrange multipliers for \ell_1 */ + double ridge_term, /* Ridge / ENet term */ + double tol) /* precision for checking KKT conditions */ +{ + // First check inactive + + int iactive; + double *theta_ptr_tmp; + double *bound_ptr_tmp; + double bound; + double gradient; + int nactive = *nactive_ptr; + int active_feature; + int *active_feature_ptr; + + for (iactive=0; iactive 0) && (fabs(gradient + ridge_term * (*theta_ptr_tmp) + bound) > tol * bound)) { + return(0); + } + else if ((*theta_ptr_tmp < 0) && (fabs(gradient + ridge_term * (*theta_ptr_tmp) - bound) > tol * bound)) { + return(0); + } + + } + else if (bound != 0) { + if (fabs(gradient) > (1. + tol) * bound) { + return(0); + } + } + } + + return(1); +} + +double update_one_coord_wide(double *X_ptr, /* A design matrix*/ + double *linear_func_ptr, /* Linear term in objective */ + double *nndef_diag_ptr, /* Diagonal of nndef */ + double *gradient_ptr, /* X^TX/ncase times theta + linear_func*/ + int *ever_active_ptr, /* Ever active set: 1-based */ + int *nactive_ptr, /* Size of ever active set */ + double *X_theta_ptr, /* X\theta -- fitted values */ + int *need_update_ptr, /* Whether a gradient coordinate needs update or not */ + int ncase, /* How many rows in X */ + int nfeature, /* How many rows in X */ + double *bound_ptr, /* Lagrange multipliers */ + double ridge_term, /* Ridge / ENet term */ + double *theta_ptr, /* current value */ + int coord, /* which coordinate to update: 0-based */ + int is_active) /* Is this coord in ever_active */ +{ + + double delta; + double linear_term = 0; + double value = 0; + double old_value; + double *X_ptr_tmp; + double *X_theta_ptr_tmp; + int *need_update_ptr_tmp; + double *theta_ptr_tmp; + double *bound_ptr_tmp; + double bound; + int ifeature, icase; + + double *diagonal_ptr = ((double *) nndef_diag_ptr + coord); + double diagonal_entry = *diagonal_ptr; + + linear_term = compute_gradient_coord(gradient_ptr, X_theta_ptr, X_ptr, linear_func_ptr, need_update_ptr, coord, ncase, nfeature); + + theta_ptr_tmp = ((double *) theta_ptr + coord); + old_value = *theta_ptr_tmp; + + bound_ptr_tmp = ((double *) bound_ptr + coord); + bound = *bound_ptr_tmp; + + // The coord entry of gradient_ptr term has a diagonal term in it: + // (X^TX)[coord, coord] * theta[coord] / ncase + // This removes it. + + linear_term -= diagonal_entry * old_value; + + // Now soft-threshold the coord entry of theta + + // Objective is t \mapsto (q+eps)/2 * t^2 + l * t + bound |t| + + // with q=diagonal_entry and l=linear_term and eps=ridge_Term + + // With a negative linear term, solution should be + // positive + + if (linear_term < -bound) { + value = (-linear_term - bound) / (diagonal_entry + ridge_term); + } + else if (linear_term > bound) { + value = -(linear_term - bound) / (diagonal_entry + ridge_term); + } + + // Add to active set if necessary + + if ((is_active == 0) && (value != 0)) { + update_ever_active_wide(coord, ever_active_ptr, nactive_ptr); + } + + // Update X\theta if changed + + if (fabs(old_value - value) > 1.e-6 * (fabs(value) + fabs(old_value))) { + + // Set the update_gradient_ptr to 1 + + need_update_ptr_tmp = need_update_ptr; + for (ifeature=0; ifeature 0)) { + break; + } + old_value = new_value; + } + } + + // Check size of active set + + if (*nactive_ptr >= max_active) { + break; + } + + } + return(iter); +} + diff --git a/selectiveInference/src/randomized_lasso.c b/selectiveInference/src/randomized_lasso.c new file mode 100644 index 0000000..5729408 --- /dev/null +++ b/selectiveInference/src/randomized_lasso.c @@ -0,0 +1,411 @@ +#include // for fabs +#include + +// Augmented density for randomized LASSO after +// Gaussian randomization + +// Described in https://arxiv.org/abs/1609.05609 + +// Gaussian is product of IID N(0, noise_scale^2) density +// Evaluated at A_D D + A_O O + h + +// Laplace is product of IID Laplace with scale noise_scale +// Also evaluated at A_D D + A_O O + h + +// Matrices are assumed in column major order! + +double log_density_gaussian(double noise_scale, // Scale of randomization + int ndim, // Number of features -- "p" + int ninternal, // Dimension of internal data representation often 1 + int noptimization, // Dimension of optimization variables -- "p" + double *internal_linear, // A_D -- linear part for data + double *internal_state, // D -- data state + double *optimization_linear, // A_O -- linear part for optimization variables + double *optimization_state, // O -- optimization state + double *offset) // h -- offset in affine transform -- "p" dimensional +{ + int irow, icol; + double denom = 2 * noise_scale * noise_scale; + double value = 0; + double reconstruction = 0; + double *offset_ptr; + double *internal_linear_ptr; + double *internal_state_ptr; + double *optimization_linear_ptr; + double *optimization_state_ptr; + + for (irow=0; irow{`=4G2QnrS5*mHn+n^PweT>FlO%uCDd-y9 zsrgYQ6%T6hk{`HK311E=yiq;3g2zo68Q~Z5gxu)hnO4W!G1(MoN+)Y(X3@aSBIk{7Cyhd3P@3c{ z>s}mNd3Pl7njAFPrDJkS5pVyg)V1x2|HPLX~Js22beWw$L z3Tx8F@45}ar&~CCL};K#VMk`ARWEMIdCdFc^HpeTkqGXmJB~Y91yZ@Cj^kTG&+ah2 zdyMnwcB==FR6;vV8Q*nMSzPRd{qiXbVPH%q`t~+Ah)8o(ey8yay8M^}C(nMv&6Wpp z`uEpDWB65jwTcBiUgYNq8X?-hHlJ_S6kJsQFvuA9LYukMYvITAv{C#X+80g-YBW-f)zL z$^jSMZT&vK{UL5iIbACgdks6-$R$2#sKh<=GXDMBcyP6ek)`^13%nt*B$!-i0cF49 zMpj%;;a&ypmErM&IB!DP|0aJpZdqr!xYP9wq)b0o+J7n?*VnDzwz_Z%+OH@m?eQPN zjrRKX&if2uYMb_AchgEsyr#|u_TKF3lsVD>4i z@^b9pALYc>RT|N(Y+*#TkGGlqgWYER>Emnk~yeqA{WJ*P@6 zmBsJF2&r&VX~4iA^`ZAzK$HvVx4-m<7|bzftk|=e9^-edp4qwbN16~wO*reewiS2H z71_3sxFWH*mp{#hYjN40gVtvq$&rkjjk4Z@ueevJq+S0?3=*CEVr+F}91nk%4Tx>b zg|(;AIXhMQp&Y#YNE~+{!P^^bvFdjS5mEP+De_)e@(k5vDxg6^ulrZe@)4S>dUs+j}Y9OAu8;jv}tRiA%oIuo}u-gDL%pi!#R_;-Zql z9oD?ONJ3FkGjii1t|23D?8?ip%96kKwJ*@~>Eh5E7C$_tYoeT3#g1sge(tl4zKm-{_}*0h z65I6O@<-|6y|G7O@qq2Vw#f`U@)DFqzqG?>UmL>>prb-RFZ&9>)zyNdh56jb*#~SUxt~XZ^|{2Rd|N1aW<~S0w!Xi)^>*k z{yOHuKCToBBOY9D%_TYUGOyN<$$P9g%rrZUT7YXwIN1vv3ey?YJf$%38m+=&hV%>JD z7(_0#x5s@-@^^d^CfU8=44o!Nc}8Qd;dl3`O{ct^VX-Y;s_H7nllXE<192W!7nYPe zeAaQN-RxD4bM{CIMJkdtH4r4&=EqTaAsBWwoa6J0CMdR8TD5#Nhp64X`|eoE;bwml zjZy0kn0S^&ncKr>w=Ihhy1IOMiIfX)tmr4qy%Vp^Tn*v5%8$Pce>}R| z>?lD`E8AsKy9{*^6$R|%>KRe|O^DN`G`hjB8ikE6j}%jI$CNW;fPh_JQP>XYp@;Xh-|goc)aG zMuO)u0=;nG{D~{^fn?Ch?!j%|=Yh*VWnWgSm_;1V3XE<|)!?p=4|Y>gvLLc`V`uHz z-{bYl*W3x^Bk8ygWv$`bgxH$|LA$3NNIitU;G)>Y7!Gn}L zLak{KuRWcXskSVh`ut^&oroGton-NyZ9PbkUo|h96^?+ZDZBR{6dw|7Bo}#|IE|6u zD>s#vyN&QVyD;d)Y7Sy{dag5(Vnax;D9|L>WWf@@wwaadOH5EV=im776=v!$+UxV$ z;JMM7`sl;~B$|~`lKR4qASry9d9b|zdJhP8drZyX!7rh0rHvP0)>d?`tZ6@R=TN9l4d@#0ogw(w>i7huk07?8kZbqkPY^6zp%KSM`;b67 z)5~+dh+x$Dm9Ze!2Ez=wr^V8L65P#S#rB#+L;Kvk;~wmc7c6QQ+-^Mm9S_s?ImB=f z)M-chCQsQwru68+<5+$Z&*sU8io85dLqxjoJT>zk7^tRwvx`d$XML0z^SoyV1Bu~v zGx3tREL`0+PSFS&&F^-;e58rHbGNr>`iev6Eg{;848XlRBy}^V7$E&U>#e8bhw#9| zj+E6v7Wi4UviA-74E|ywGq zMMe#pLH2dPi)4cQ1?7aH_*tmw)PMU?B@EYuR{7|2n8Pq{&`m#o4%`tRw5$FK8Pshr zC7o-J!c}%Tl}uBIVI^m3tkqipCvM$y`N2jujGRBho$8;CE7rCegprFu^Wt$qmlPjd z>10HbzU??vjtJvc5rtDm6so;z4XlmDo^H9+0^LYKl7<8UF$b2m+0ryP4&M|b*ho7bo z3$stp;T{pei!3V3Fxt(^?vSO2f1NL5uC0lNy5YpGZ>|&geZaME=f|6%`D$%#zurAu zEoa>qg?M4@)sH<(S@ZaVVGw$Eo*YI_c}qXPOoLJDaU(h2P51pS&%qgPXTiiub7R!0Bf@R=&Pm#jRD%yRLPxLH$_m z^BPKB+%1{N*FZI@U?N=8glAeN~=2jXo}qHoF0dJ zFNBQGXZAsc&LQP`zkJ+Z$eaIUJAy*q`*wzR8F8=O>jJHWCLp@WV%Tk2acBSY?OK9| zVPSAX*_UyArFg?z8Uz>sdr!Y&CY2~hXQn>-A|H?suh zdY|IzJ8~DEEboI+2i|0dNpYOblS`#V?rl8%yC29>!|0_#dx&L zCeTzr1%5fM*L5!^;O_L0Rw=Szs9(M5Gj}5qdw%g;EBrAEJbYT(uWjD^)2RhUVv^7u08hJTSOXw~ex2ouUr&yYPl4TT2OtJzzBAj-*eDr|QS z5R|`c5)Ew$7|qQQ?06TAN9>#i2TOm)%a)(J-l`Vim0fbXoAtIJ8b*`s)N8l!>O$5z z1Ll)3FZb1AAf^kiT+l5!c##W69({a%TC0Vi6y%i-<*M_})qCt;KlZ zX#<7hE=%ZK9;cBx$%1D!=Q*xaaQ1bkL;pD42-Pz zu8m#By*?kKO$L{thwZMLrQHrZ60)5umfHpDoF0bW{OpWp72Y)!xthbTw(on2cUa(; z`w(?iY${Cn-hQ*qz6wvgcG3~?JhCcPz9^8Q&s`mG?LdWx+n&DO3a0Ab&=2DqM zFmc}X1Rr+_F6lk$LGSS%hHmiHc-e>IR*E`_rEmN&s;>XiSMUuU&)&D)AgdGd4Or?^ ztyFMrUHQ=gkJ~MHlyfh87yU8l z$=MQead;9Bx;I@mT-XC0?|e?y<%Ywn#HHFoo9i&_bK~tE{1|`#38AZ*UNHVtt~+|@ z18(-ZtDzlB34^-(3a%Oeo(}$1b%LQD(a}$A8@_4tSPl#CvGg5s{I1 zs4p~7T`-^3RVRWlGQCURbUYbJ!TFcAORU&bTy#F~Ka+VSZO*Dl<6FK|qA?VA;slAVO!F))8rsVa0+#BflOo8SCjPjlOcGRnxpijv8vH$5Cs2!4~ z@VcsndvvH?I;aUBO!%eo%h`sqi!&%%ZDe)7)L~)^L-6?CeSI+VT8w^1y#W8bGqaQs;kbF;Yly3`u351|d><#iRV~us zfdl7W?|eLsNDfh05^UmxoOt0Ew*+5AwW{mrsdjd=zu({QDa?M;g$tEB$F`<_MVt@1 zR>fQo5n@kcerdk@469#)oNn_TgppV6rVXZEoBgK}CHZi1ts7DGJRTwZ{h<7|ezIaC zY}&KLvzJXNpJ_F0{D!c#K-oj)HWKsRHA z$KZ$op5CV&oXyYzwI4%{Mkx#8F0VeXwHNzg0Ns9U7S5073M*UXpSQz|wCzyfrC_HcA6=>oqr^}EmZ#KY+8EF)`6A%aHNez`-p4Td}}`2

LV<>r)79kDwI>hB3pg0FDGAjSQK3v|^4TT2d?F5_vKFzMY# z-cW<*4MKM`oD_#4#lV-fsUifm&;X6v0Y~WNJ!W@n#U{ za6yH2;Q1mA++W@)e7>?9${$h@LGf(3YrJ5_SEma;3^u2RimBk4b;qmQQthG5nZc}G zkQX;nB^gj|2t)4)dj5hPU-8*%p%Eg>e9)T~@9JTS@yNmvw@3ytNPXwOVJET(8D6gi zBqHRY-(9!ClyeI%`6(Z+%%}7Fd`QJzYo3IAcymfWY4pR8@jmj5W->ewe0*i>ks7&nSIe7WF#3N{?~?C#m}1h4R<%YARW23_krh_%ccctC76Y>mkRerU%U=)C-a zhgn9OH`0EO4kGoEbN=>(^Vu$Z#^)X6H%ARb>x@+5$NW3 z?mxHx3~s7pJf7s$50h)TqlpjWaWDBRzm>Qbi24LOwm8gzXKZZR}UDC2RZ#|n5+g~scs+61B(M9;||P!kk64}uxZ z-os>RX8G-oc0A`xn{)K~JD7U6`+6N;5j#P_nOj_4Y$V%Q&i#uc%2- zP`F*7?ec~paSTl|SwEQOtFXagodo?h?sMtdyokO&|L#q$mjp$VhXQPIgNe&`I~3{G2*G4h zlh%iMI6C;|iy7-AC}Jy%PRTrkB)6w8IrfXzsFExv<@1Jj6c7s zh{4^>*KBVs?uP}s2$>DFE(JCHp__KdAik{s;h-S^mtt-|@xBhhsjU z>)a8qr$)S_^%DLi`#5fFzcrGwOddRVWjp*z9hl>D`3B4Hr;=~{Y{h-gR0>5#HeljJ zG_9_p6I2_#xUY2N4Q%}AtK9cg9e;apnDgNcF&Iitxi=jBgP_R|HjEWfgLz@fht4sk z1nY-AUb-}yh~!Zu$1FLEIWFnQ=c#58S2D+`&4BSo1u?YA%#D|>-ebV zj?+Q-W%K>QX{}tG`q1X!u|jzyWSBWzwo{QHYucE-;YR@jjZ94kytoN!pBLI8AERJ~ zd2IaW$4dm$MD)+x%#%<=B`oX`BTLY8E3xJ%dB9++E)_+7C5~?mjb`@#4#Pux8y=)z z+8oc1NfBJh;cp0*H(`t|RV%QzbE{iTaz37NnjWfUd?6BwwR zBSIH6ac|Pkq-_^D5ncU;XwhH*UJ35h3O=BTe_%m6&Hg65(E>ZWZic{cW1yA(+rxOY zI{7doB?t5xJ>Nz0AQrD2ex}YJc@FwU_4@_w>G5Q9DDAH2w9vd;Gyzzb2)0{VRvxE1 zp`S5)!6xlJ9-y^1U(hgu=~M^Lz7S4=GCb5jNL&h$&vw^cTII#vH&=%m9wEfR5@j4? zH;Wg!Lp}|>(1#u|&q;HmH9YAs>bKQY5n5eX*!m82LAjnRY`J3$g@pHUM=#)&M*XOWfh6dD@oY-zf->I7XE9*n+6uG! zizkBd5jen;vuji!>ZK#6FC_cm{u7@bC!cqP!5+Qm4Co--VOVZdRxgIBJ$EPVbe`bO zq_F5~vQAKA9b(?seiTogdONsBH5lKjzWzp3D~n)%k-zWFS1srj7@N#8BE>^{7j{6F z1@xY@e|AZe3Qr-gVT*w}93>T0vHJuQ9`!W3_>$uh%)WRh;9Zsvzglv3DrsIotfa>h zuRUkRz1KTOqT9c3;u}c^@y3y10Op^!Bp&{936D2)*pC#t!`Siq%g+*(am}*NRh`@~ z&=+fb=NPFfUVZ?AWacN}=bCMA!jAzwDgIEY6rLbXxqbIf*`35|?490ToW_X!d_q)N zY9pk_ID7ln^}@=P=UH`)90cj})TUi0RAK45~y?Tym4-CXI{{l(Ce%!tv_#Yfifo_#A`M!mvxXEW_ornG>EQBcD z9hIjhNTuW68<5XJqv{rxbkQP$PWkbvTHbJ|%f6aeeNF{$2v5!|PdUK&C|*~6vKv=s zI?^r$_QJ&O8wZjnTd`Bl+d|caI2ey=CbPS@3-?}B*hVX_k2w4L7aZwx;#7(h1Rkq=(*9m97aDX@MXB1@@Q}3& ziI0>wBA*)hB-Ok^@CuaBI!Yo$sa7rc;6@!D%u;yr%c2vJkr+i6oCUn{nx41S)D6)e zkU8?=(muRCqZie2KkN7TUUip3W)DGmclgQ#LkWxzW&8OsxZu8I%NWYzGB7Rwnjt2x z9e1%UQBI$rfkn|UFQIB1T;TT1$?W16nA~SybtP>X2$h?I3x1WG_jAd2`XXh`J72M5*EjdqpT*8Arv*N2rst}Y@cJWWJl-VW${}|E29o0S zyhYOq>Y?>Z;X4yyIgQFQ$4?W|{5W>M^wdLKeTpGgH*Ilw%d6`wZF@H3ofR|f`kJ>w zh;7MMg@aWM_e);sX5e2!0zV}7Crvg$)5=&IHFwh{UQlzika%#-!4xxZmLWwOBt`{& zcMD!bLMQywop)5@+=^Xi-e;)(CB7-Ad(B`$Dn^h!_)z1J+6yz?ls+A)pYd?C_Q~W| z&o||ZUI|}ksMvh}n_!+EUh50|fkXliUf*>@3Ad!(e5oT7fJARjH1berY|8JlxgCCh z>@-165n?CmRt}vaSzK3`gb9%n1NGW7&tWhuK|Ca=jG&R#dwyKf2A0ObL z@Y0I}QRN&qPDqa=NSfL;CCo?=eOd6(5|=l@lrqv`HI>=8(3vI_F|jKE)H^B9Mlo*~*T z4Kpk$C-9`+Ed%o%yAb^pc^6yeKD=~X*{_3a4d%LMg6?$L64b937eZyuBN{!?fW;CI zg6{iqp3iwhuy7{Tv4H5r18FR>h0-sP)cj*Xar1Ws?K3@wJOdJ_ziO4mU$BC^YAXZz z$$1djfnS|A_ag`@!MmUQtOQ}sg-55sNej;~?`-JRypKqWMZ90Ra}pHZ(l!$o+=x2= zs8I5YB0`)4H{CpA3QMC|OzE}T2$JeNlf>%}5KYXi*%1Y0g0ir0iR3rll4?AmU#FNQ zXnv}@&Ya|j#fLGy<2(v@rFQS?`ve2TpLvKPTv>&naWDMkoIyb!T)&csJ^pT_esXWZTllf#JB zHdSWXc7iwEHGM34J9w@2Hy)J|Bgl0e^7h)Vz{n_XZ>gfp=KQPvvNH==KE%}%_v+<3 zrx0_#TV&60Fu@Y>R?Rzt3A%q3iF`RUL6CCk?GEH3gWgE$&WB91cv^gz{k+;M=)EAk zd)#RoA)?puaP{+d=t^{((^rba<4+~hMRky6C6(0=xPBt4$<887UfpGKUcO(wT9#PIry4@r*M zDLC)+R+hba*^r|fS{Lbm5HN89=~dv6Awy_#s@+kX?WPua6_OFtw8 z&dc;{ch|-}=WPzV@V&=fUgncQ``8fw?zJDYakhj=R&ImJ;e6~}7`nG0=_rgv6z$}` za^uhQ*A}0bw*J{Trz~)&*XI+#a6{&3LfZR%^tv62N_o(`>VS z!}_m^OX5oe+1wr6BbvY2e$bFYU}i396W_ZSO;jwLKz`3rt`XRYU@sJIbyS|#Fj!TOu^D{tS5>trhWi+qX;Np-i$Yd6!ZLKa(O zP24u+P3SBBo7X@SC7mxhque?Ek4bp$E!8NQf) zE(9rFH1t!tF`M!x?Ipxx@3J7Ck~3~jDPFkA=v3ZuE?&egS)atP{)ph9XvuhXa0I%- zZ}^f#%0rWXNzBCO>qvA+`B6rw7{O`t^6NRrCa8OWZMVDS;Fw`A?N?_nvuwk|;nR+y(#eRad~}bP#5_(_eT>XU?NmxlRPRMYUS&StXddt)Z?hMFMF`$JE!_SCMo%X)BHQ zZGwX9@rS(7?a=w=5}#+gDpXU7eD0t=i3DE$u*M0sxJl^SeerB6nCV!YGukVF$7o`@ zS-eUR=e;J1d+u&{lKe46(eLxwoO#e01v?FRRnIcb{OSzi);@jZwbmNJMlwaWOmP`{ zt=nIDJuSwa7f9-pc{C8mDI2pvr&5B8#pQ6Hz+0H2N`B$SX@SQTo+#BidqEp*T4;t~ zAZ~qnN~vRMKaB3XLg6%%k5~9P#IjY{pr`idMK+{~XRlYApXQf>`CVoQ0_ueE$d_#) z?oHdF?hr%66Xq~HXlWkhbg~FmqR7wqTr|SP`a9O{3I)QnVNQtfYePKs^4LzT(Jj!$ z#{%yRQqgsSJNtvSDKkq-rE(yKwAAS%7qnN zIkosQ21sG@Eves(>rUJfV;s%S2D>AM^4{+_JD_%Ob;xKB{TklsUgjWKAN`b8$ z>J?c;Up_vA6J+>wnVR`vSn=HZh434AXyC!HewGP*jU?xev-7|Wk57>VoAtmzp*BCq zMLs-Q+H>ynwmz7YI>zPo=oIc|4^)Y?YlkuSTkb#EB=AT$_3KdgM);wmm)F0W0*}cG zdZlfAfkH)@V=7^%a7VCg=BxQ37|EreN)P);u*#h;ZyTS6$^c$r>kez&7t1DHwZH-e zbrwsEUk!1e@$jwSbz5jB<5ro^OUK=ZS11+dL|~GpRdY4$Bp!)$AwSe02;GhKgEXZg zcw_~oy)m!MUFnB`hKsf=UzQ?}9f~CG@FetA z!_57_zV07J1nG^;_B~aSFidhxr%;v?k7SCy{hD?cQMcdZ(GB+_n7zG>>{YrDWzrU7 z(jBvSg@llPAXWk0SM+XN=M^HTe)hApzWe~)Nqb)pnD7$x7EG>p>J(uqvctaRh5;UN zIALqLY=tPJ?RI{44#bOeT%x}Hb})P`Y+=^H2haK|ht_d_hi1va(DCx;c)Z!1fzj*? z&h}D^G?UiAQ^JYY%U$^pzauPh@BT?pe6k{!=DLVz9QLd%eNcpWZWU2Gm06hF;j+P+ zVvXk`w&`0TNgV(3v*?-E2?PaAUg%vnal}I_d!FW60q&~NUOtmAgE&5v1k9WwBj~RZ zOt0cIV7P2B?9ToB1c}7j)nok8FyVLnWFlJ~Ud{G!SurVxWu2aj{;667Dfyn(`|nc_ zePE)5#zYaG3bFQI8uLY@9G^TIHLnr0b=#j4b{;Slw)ROcei09fijPYVOTh3$ij6QS z9vsC@I_#%143p*#$+`2Qgs=dy+uHODbpIUhWEglvkQ(kNdw=x}G>$i^F^r}VqyYxi zT_1&Ea%gwXiC1PgBgL-Ldop=5J|LfMEp%o23LELn^G|X|Hut-ZI|2GC{S&xree}_s z{t6QFUOYA|V2|r%oQPpJW0-Efap<}P!V|^qQr6E65&zTDlMioZ5F+tx$!>aw5VfL( z|L#R|+@^Hn`^1AR#AJFlb=zk>yqek`MU`uYBzR|c9+xL@)8(`3eK$AvZ#?mZlIe}- zcEozU{#DW#&!#<-Wv|#7ZZB=_H+@Bkk88`BHp>US7<*nvu;YT83rYNy%COAShsX4K z2$HwkZ`5RLK_b4BRC~jEaQy`mVe*lmoBQ#%Aj9W3-*)`Hc#NPF!R+DYanML<-Ie7) zLa>hr2ktDm^LxA`36l62JT4fdT-02?X@B1WpUD=^mxx|F)&9GkA|a44Os2wq0eTgm zzhU}_Hto&N`)XL`^#ZScDpI(DQX#J)kKCxT0uPp4cyQW#9!bdGp*k6L0>`Qw-iP-T zoA&UfN9bZP8t5t9I zH#(S{noab{U*fY$MKcD68P84o8XRTgsxKrHLT6aATqgjA^710|V~Yuqj`tLDk+)z& z(eJ{sZO)tRUwW_7&QU(cbB_k5ONu5D75ReNu2+S4Wn9UN=|~;oIh_|%WHU%`>fQb{ z($R^?Z#13M6W1nK9vr9^ySfkOi6n${#^bk#Ws-SgVfmMM>c`y6xL~08 zDw&hO=6J2$jrx9)BLpVv`42~5{f<}kPi}LwR74CZ`_@AJAPd49=+TLaQq5EVZ zo^7KiEq`(trUY*2#C(n?NaTtoRSpgz>aB;l9~7n%A~zP~%qe1^X~27Azr<~VG%Z`+7ncO%#(+kv0Al2KJYai>@ooF&_-s6?zDw>Bc+bAI}U-rfR2h{ox6MQPU(>TnDoDJqd{Tm-hp8PM6U<%z)Jzy@7|l+&Jl3 zzVP@sGh!1rJ$%Eb758&q@-8DKAd~X7>At{Uc(6mgL}uGp=v(~q$>9two;U0(@j#g{ z$eY>9xbp)Z9`56`er5q{a*JKNd${nlgnN7!Xd$w3{fmap+PLS@WFac^C4M?;elB4Mq!4H7ZJS^E>BQ#y9QbYtN8h2zhmST6d}{6&PwjT^Q*((~ZO zeIc?QrE5@pV^6)vMi)V1xAOGD&P@JdUa};=`r9g(;Sa;HSLJ@77bZ`;WvWZpWWab*Gu>oW+J&; zh#HTR?2MPD`hgf)r&2yPF~K*hH!qdFXAqTj=)yTgKggvvR8D6sL6o(fJf~MV2$qP8 zuC{sQ(EI-O#}aA@JZwuA@DiQ3shw(F0_o@>NN#^m1!aVMFF{*q+9SbY^ zG2x+CKHxsjCqqr=J|M~s>g~-|*YPrmYJP*60<29&xx!A+Ry|cUcjM3dv=7F7-+ZpG;@+Iqr>kA6h>SAk z)*TOhJiJ$YaL>hemk$dh2Cr+Iy4vKnzDHuArGcLLYA zf7IcVW<%^Lvx#@zWC(UnpVN1=tZ_+F!q%*_vjk08!j!SIC*nL7evjr^3I5f7Bl4QS zcO*#4PRg*+OE8KJH;%7)<3^tp#iw7F@OsL<@e#RQoBpQJd%trz<_UE1y}aZ&K8~kL z()Ur+7Qkrvo@?ZMUvc}R1I;?8mtk7A;>rglX54cV;%}|`Km$kdE0NG0xG#4#+p;$Y zS{^Iv)SP&RN1ZAJm{M*+@im_8QKK$AqIoo3{_J5~dMjSj@tWvnd?n>EU$Hn?2R#nU zMW2;z|F8#fvx{s)xz3wu+S4`~GiP3G##?>+g8UqhUfr~x)IRalsO!1S@?jOV5yRpi zo8!|oRJNnf+6>m7N;edxa^O}@_bzTrE<|pnV~n1d;Mr`Ez?~n9;m3uHg|x+R+_}5 zcL%H3$VCAUuU0oxg&@{7$J^V_9>AU38gfM$xnY{zg(|Nj396}IHW}V&LwxjReR_%e zai4F(^iCmpXg6W~Zn?pZe->p4&?c$Dz{#H<%nD5i!K16I)ba>QQg)tf+F^=+9=v*w z;hQ;PSho(YeCL3NG_Y&xfidXma>|l3w8xz;-^Ut76=6bDIz+%~4p(e^F=b)Sgf>T# z#^Q~8gm|lsTkd2Jt~$4dwhyKdEUU9FlKOnO$fwXe;CV3)GyU1MRzwSZ>4y#Xo`}R< zX7)VSlU!j@`Hqm08^*;eJMP9?OTnuB%R-(##stZo5R@}>&4Cy#KU=-CPvc-_mF>~=^T*5nOntVDMOubwPDV^t@@mZFVV7q zcft(+^5pa}V;M$N#^M!MZ@uSDf!14|eo`$pgUHId+q z3zJ^Gd=+ZHbn6V2Kf{xielnU5U18~cZBnM`L)`Vb^u|W`I1K8WQk>eCiQAK3*k3Mo zM8d+3pGPL#@lUCB<;758#Q(lzx76u}_%l@qTi#eJ;uxSFHuhx0Kg;{OE;1>>P|gF3 zhgIyG`%{Vl?eG&=#2q4|SD#)yipVS25-hJf5v2O`KOI$cphN%pK9R~l@0ZhD?psl( zUc`%EAMvUW1N5r2RBxr{!fkSae96!5!BEPsb8Wg|xMA4sa|+EUVhGLst}7*vr;Eyu zncmZepQ(2rL{D_49cP_R3oKko!?Lq^OoHcY>yOOcalH-xw-R`1T?zg{> zNA@3V!HXnwL2(XgupteByjm}Cy5#xsd%gs$?2bA@*42XNT4m$gRqrE8&zIu8Zya%l z{A2m7=wxV99`m;EF(lZQ+CLuOdk$9^|5!R;cAucUp;k4#@(RAu%BJ2toQtP_WEOY{ zmBQ>}t(ikzy#&b+-4wod6}qmR^36K3pP+56eeB?ui%8Q_UNsu*#4}dh?{ZI0Aj-3q z;uP%;xJR_d_+ffHEGc-|`9xc9lDGlzoQzUGst#dp+^U zr35nTWlcoIPFz3t;yvWwH0Gncrwo%7NiXjI*uXz`))(+U8G_MI2iF&Vl;Hv6l7X_x z&oEg|CAd3`7xz6P;V$^h3KPSZU-K>15F}sxOD1nd!A!pVR|9Q5+#co2y6^oS7-Ib8 zJk-sO3u6Q=e6D4~(ic0YciX3MKUcSphFTCT*T0$aY~#fBR4o;+R-#}o?;QVI0cyNp zI1pl^+6{Ab0q^D_juSkmZbs)W=RvCGV6t&(0Tq0X=;MuePh)(?(fjFJ9=IE z$7j4?J-~P+!WMeuR%vfqujB60YU|*K8!&rJ&!1h$7Wchg{=!il4=WCZLa}8>al1E@ z>2~#1s1J?Y8auupPqgOwt zAff%u$uC~M`kOJ5{L4>L{Eruf)Nj82`^EGx&+x}`{NIfKLI2hA|Fi7)M{@sH_5N-B zzeoR3{rcC^zt!%4)^YyNw)g+?e-8c!{dd><@0Ir-WzRpGoPVp{f35!iYCHege z_21pE|6TbX^q(c~KU)6(<^N~$Kj`0D@9)unw0(ao_diSD|LOb>`rk#*e^i0h?|M%j}|8D;LXXSs;Ka1SI*Y4kI=ij#fNAmt2{jbXVU)B4M^#471|48mXlJlR1 z1OHk*|GV%%=)c;I|I_#%^j~eq|KI)j*Vg;5vh#nn{2$f-XXXD^yZ@H{Uj9F#f0lm! zSKIf`wm$y5_2b{G=Wpr1s(=58{-f6IKdb-#QTu=Mi^nx!=6| zb65#qlYjIv8PWRRTUxU+gvq3e-iv}5Nf>l~;CJvuoX0hiN>nWn_tciI8#W9`BIo6; z&_`CVdfOH^ZQF-ve~=bax*`}7l6)%`O$ME(Ufdpv`~XeU&J`}YMX-G6v{gL7JeCa}F=dVcUdZwn!dTkes z$@*9auLeOY_wKWj*2U0i68tsx2N(1$*ykQ2uY&HKVNdv!DWLnYc88EbFN~HqG@Lwl z9y-2ZE*-Wl(0xCV!{*#481n&t8-V0J@gUZ596CcC7cZDj!jOAQ2=hZrn0@(cr~iBf z^amRepC0wYg2kSSlLcDPm*=YP-BS+ZA4N06I`2Wd2yJ*wQy}zQV-k1WKMTLU8L8qL*mv$R`^v!p7o5h3Xv){2!`{_L+8`8HC_^f1w&qrn+x^OcgJMD!l)bi9!Hqgd?SH@UuJ51*~X9pCCx|nUCkc< zbDsPyN6N*z`a(5po9QjP>*t3}4F6vJzqD7fmp-_7jq6`sU%X_ISL#Izl6ighWIts9 z65p0kb%-wxQQl}Hr3@590qwqk?VK)s6 zpEbj*_J-9FfzL?7TdUjYWhtzdN-B+VH*D(R(dbC1h`NQy8*V6EWfakF*DFA}=}01PbtAyk9#POnzGo4>1nZwI_onksZpsmx@#uG%4?!e@$|Ay# zHoqQ(_=k?Bybaj=`ZnS#&*)}5?7f+$OxeLB>XCrxU;ixqxT6cPyw3ml?*7tdIjze< zE`NOrSVjIq-|Z@p81KD15(SGeS6$X+Hph+_-imoeRJ}l)lYH#4UDSxJHFnna5;LsW zJC@O%JPeCVYs&16KM?7a-S&!ia$s_gM(PK%*NCFALrd*NA}lv*-W3ZhMk3x@4y7J; zLuA#_yBDl85&8Vl1%o*=o)YZ)p?NcsIvUlDvo2_Q8 zE^!fYJm_*?*^`H8vY*y-rW+#q$YYh^(YImIv0&Q?lN4CG+-l*z^c_*Pq+D-_N=DMU zfj8=e+Y$8{_s1`)bP>f3vxUCINm$w4zW#}<7?EbaY~kylL3}i%LL&4fh@VZVh+Enf z)^@&p7G)%fghoRrGuIqpm7);W#fBor*EBI|vkwuiR)9mVffHiBvQu|gVyebD$*Y#!AjH~7rt@Zy7V(ygJ#tWZg=m|{$8R(KL^QU~ z^!D>z_+y?xf3u~oZ(BJG7w%ai=@(4iwu_6Q zy$`)b%y+husKMa6YUPV-{?OOC&QyFv59Z!?yN74eLZ8(U8!oC&=ejIM>RyqS?{O9>Ui0Z&1Dfg~|TcXe>m9tn8dl1@$3r2%t&LWc9I{p+b zcNk;6awy6}61rvHGn-r}gdWY^c4lfq(8t4_z=}=a7vC?5X%iI~YOf!DJ1q}GvyMA7 zt)9bLI;o9_`CI5G<(j@_t^)%MXHAtKxxt8@3$I8WISj@M*_7RHLnI24eO~MPVCJG1 zr$L7Xj1-iwzhrQL-k_m;syJ7eJ|31LFdqqHjJok%y6w=vzJ7{Rwiadz(${({$zgn3 zjquxi8|caVrcK3A0-f5yA?YLeNFa1F5t;)2#1m5;%iNq&Bz|RE?7I*VSn?}0d40YH zR+?3=9T2~bc-e0GE_22pngfNoZJobyuIU+}@{9&id=JRb8L&l+6eqS9o5~<^|Jxtv z49+9AUrzGOTnJGFGap#JyAM$>y~=O)N=94zsUJ%xeutHVEDmqGW?{yP z{OYhS3v?A&4y>06!Qktd?c!C=u#lRiDf4DK3@6QqbfS60+n2O0;2;SsG7onRq+WnY zvF+*~_B+DL!sm~MEo86(GG!Em0E}8J(tce4m^A+Q!gc%%BB7S1*gvZZb9PtmDTJJb zg&W2$N}d{I=s7I8e$WK^k{gs&wd)X*q&t7h(Q=rn2!Glt7Y5SKf-T3% zJ-J{?*+H6(tQN-lUnPzlu7~xPwBHLvW?%(}kydx6v2FbP<`N9*YHH{jil$ztIc& z8U_Zw3VitO=Znp`1M7(7W{p~^*9VxHjc*uIxs4cDj;`3&AXsdoCOfc@@Vj4`g%a0( z#{-PXi;k=nuz0}Rwp~IGk$tRu;L3IkrY*(?6mxuGT-q&W=A94BSJc|?xcL+oO$X&Q zwS^FqbVpL{7d==HwET7Rg%C_v$%Mc3UPtWNg}lt3!LV}ogUd%vgjku{KgLa^Az3E_ zjgilSh(Hp>QqwbN^Dl*u71I8gW+ad>OOIgZOTZHi~N9+Qgl;@eGR5 z3&VfT+fswWdGoIktK}0umu4Sw@>5tZPnCya9EQ%Guyvv_rM$DjG$ zI){RacW$OhEH7G%pZ$sG7YYULOKip$FzRaS;b{~FBfd3f=UfUAsS+Jcol_|y9lN?Z z+mi{Cf<9!YQ&VB}5~0w%r5jclk#>KT0HRef)=kKI0h2DrKVEtLJKkM=CJ`k&3Cl`n zM2goA!@|~tp{^z|n6*%(`oOFBdtamT-o6wEizyKqcRq~5sO-q)6Fkz0DfXbi-ABGK zoTwQPStbDs>Fo(y=N=-)iVFIxTgwnvF;~QchsP1A!zZtE&tD)0$=y-E9wj60L#Ll* z_Pj*&&#kzGXX#*eeL(*vAq%7LL`m<->Os#DCGV>6W*D>Ws(Nr+3VJ>oMWn@3z{;u5 zcWu-&U{XO@RE$psdcRtf{IJ>${B8Xxzcss{r zH_ZN^qk6He8fJa>qysK@z0X)q!WiDEoLy9$$>DYTMy!@uXX zU|sv(P(-fA;*;Qe6DEQu-g}p_A_l6uhpk^s5S@XxZQ$~?Kj*XNVsnZ?I^sV^VQrxK z6H)6I4f?x$M*R0|95}Z&BZjn2DY}u}NYJOzGUnYFlIXeovrAa(FY&2}#mh+J`E^)& zy&kc3ODf{t^59d1z!lh7G`<{v|J6T?Z?|V%zi-_cjW~x?6~c*h#B!U%F#TCLlG=AN zUwF4VBH1;fB>2J$Hoo+;)V*6kQt^co=_(;e!g=6Ji&`;~QZ1=GESUWlxdLf8OK*Zv;$fRo{%@G(ucL<|LmhC4S>~+J)NHbeN1a zI7&jvfJm=iw7w)uikNj(SyyDHH~q*UpLFA;EkCStH;>{>GZ>E!PF_082^%^uj%{UT zN4z^E0{z|hAeMOphxQ?!!b5q) zP@2tlRq_p@KD5R8u>cLsn95LbCnUglrP2QBX<5YMXfw6Y;fcsOw(M3vx`4Qu-Zpn{ zsfQJ7V833a1FMTrtaSSrqKU3gek^(jQJP%pyR^FqQJg=oa@K7EW=EpKs}$Q|S(Z%o zOj#W))$-;QyO1J5vSEsb6Gn(RMR$IC+!A69(iwb_U4i8Hp0MN24?>K6O`7YXUt!_e zu9^G+5tz+#ycKL9hUgBJ+v{C?g+yD!{P?eNA{qsAJ=M%i#PPV{n$`hNL@k)onS1RQ zV%%$1#S+jDYZO%-@kbpHiK#Cc{rWAKb`aY$PXuj_ADN|xpnLWtVs6(rO1HHB+jR>o z`@6djNx37ocSPNtFa3xsbVJLD=Ff8@ZtK{a^N>DXpI^DFDt7~YFWNJQ7a zTRrA4c))NwDY)AY{*u4NpHeA3Ga889Jz0`ZO0x_Sr?u^*F50U)X8Y~&M<@Y(aA=0kn0%By&b0J1fAPOzFq&j{x zM8~(a){{mGvC+Nx+PNheQNLyjNSxk*xMvvmm)yRF*!P&p9Qu)nwp`B>u5#x`4CiKh z@HaqIU&^#nbS@&6s}F`;Sws-ML7ts|L?hx7&M&H38%I(m$6E9ka}h^wqp3$#D`I!g z_V%D#L~M_BZe?ueMWV+TEjlZE5w97E#2!vAL^i!#dh5*>#NeuM(^Z5EadN#(Yq)BN z$mDY?j^J#>o9_~L;)f2R({xt3=Cb+kAQ8)0rchnl3Bh=^2q71e)~ynnS`nS13n z7G;}X4@MMJTm#e=Ie)i4b9Ng`e}DiI{`hK)+3w-rt;foD(=*TVBH}#LY;!A2196^= zQe1MDKpIJnVawk)e{Kc|^ho=h3DQO!ITg-7?MD#T&S9(Cvr0%*AXnd=#}09&ap#DC z$UvM#|5gne0*Svvg~wgaY~sY!z7jt-p>v3Hhw@YYtGY;lj@^2xmKw2T1>4T;ypHIO zEe2^l6ohpvYS-X(A;fdzgPpaq528Fn7JqPZ7^V!!M88UJhgBt~3IBjT#2`3kdSF@! zNk_d?4ED)EGcE=l^p9V_Wz8?KKZ9OA0_#hc<1B? z6$`}iWVGE^)f;hLDtG*Hs|xX%NZ-0=u?X`g(%iWzBwW+bgz2eP&&XsCL_XXYE~3{6b3B?ms!2tD>kExG?|g-5L?uq{bZ3RB(MI3v_m3d* zrZwwe6$_X>gWg`!;)adSobX{ZjJl_3uP21HINrf1u^trq8f$C=9!VVspT+N=$E4TC=ju6w>)dw zItIf6vN7z|y)Z4~LaV260hW|c6a@zk!@{1pxdfvKm_M2xxLrE}kx-0AHSG+Ah4-}9 zG>zM!FDho+r-N5u!ibg0_!k=t?#ZX8Yug2LR&S@KdSqcfd80&+`5Vl*Rh!<4xCx8h zB!^D4*CDcP@^>z3J%SmBuj0XSgD}l`wZq`?I82d}MOI!9LDX}V_TwiK5L3lo;`aTk zh%fwTwVH|zBIDntEZmTU=-qE*9lNHCICz0?hwc@`;6)MieNh&Xy;Ei?3}}QE?hknZ z<=0^(Vf#Yiky}VOSB~>h%Wr&qTC?%=-0$;d!@WcX4||xaIr`H4kQx%DDmwO_J05ZM zO&Y=WSj5UA$hYVHV?;y4u0<+x0?~UaU(+UgfVd9cAUSt12hnz1&^1+4L9B;))lx0K zz|zs+n;j2@U~*QLU^!lmL~;Wdb~tZA6t>KhvGgj4j(k*s$>q?W>u12>OxMj*f8PH_ z4hTQG4zPIfr^|=0!AST~w6N*r4kYC?!olEk9ke(`Ql0ZMNgQ9JbfH zP3Z5fQ&`n4%1ADJgd|c|d(tSk{@wLVBWlZBb$Jj8+}L(qjmzLqe7DH+md*Z-gq7M< zxrXRB<*vKI_}e`JNHS}3Z?(%NP9Tv_5%*WWef)F%hte--C!PC;I3-eECndg507-lc zeHwbH_)q;8Z-iIj*GTw;UJ3O^8xkhBJk31ijaax!7>U}ozblV}eO2WA+zVJzPw$#? zutt-u?QUWu4C*HFl*4?wq-KKU(?7*bPSzabYe{$Eag!%-uRq;Tw+qTz;oL+Q$ zX#*FM4i36LEpiHpv^2-C6zkEY|{w3|M8zw+A7nXYEf(D~yr2vYyoApCSLq zum8~RWUGXP+PhW6p7>bkjL#1ws=a+*hG01&y=P8$=EX-?=M~&}=EZLuc;!hmdA%7% za^tDazR-XTi~S$uUOa@gJ5~onk1fLrJGc2B33tR}mvuI4lmSt-=8KmZ*C6f%T^3sY zm#|W{8k5C$6jpi?6=j->VP@v>VR1bUSk}0*I=8(6QI>5DpRM}yo@K*T)Ui_V2@<6{ zACpW@iRgPZ1Ea2}A;z#Dro_NiBtE>OL1vT(k=6H4(@HPFf|89~25m7SWxXcfcUKIt zopUYExR?cl^8#D1A6bEgE33N} zIYjex&l!)J6MwFY-D1m(!z?h(NQ-~)C?iUpmFS0DQ80U|f^pvsKSVkqFkBm52P>?* z`}PkmAsR^b7XI1{lVTSV(r_qD$!|?P`1yByq3hL(uaqOkikp!k3%e1;z(f1AMi<1U z;8D3!X@MwN<<~xPpGFib?_;XXV-Wjx_8`gENibPi-Yu)~6y|xeIlP5b5Sg|#q%L4Y ze^xf>@RwJJB!(yW?qUksp(_~fNUe#)X47X>H7{<~mp9Sbk}s)-D2&72H)@_hr0UYV>Bc!o z$(rQS+}k%uIiyf-52XQ{2jv{18l2yH!FdiA?}r^$kZ(d%u4|-Q+FrxL-IKr0 z+h@Y6T)m!MTms@OmN?u;Qj1vKO72Z8D8jNpf3Ja+2I8gbkWMQKf$0-XBXdkGFnK2I zR8mDI5@PfD+&0(q`+S_CZKNRx^ZtB%b`=V+@WZ*_juspAEnOpxy_<~0&-6dc6-9`} z?8_y+Dt+j;TkkW}Ekq=CjlZ;H-C@Is%;brUDk7B`eIRJ@8@!{`J_p)k#I5sDMD^{v3){Ik zM4q^Q(#rD~qTJujarORQ#96v8SkiV0F|#$!bUz+Oq-V4JWP+~191=g_veg&S=5`+1 zMe+N*Ha0x9{9FabhM%#PkKKmpzL$!HCJY>rx4w1NtrNSU6@s@ z)YN`)0#@0#iTos^L1a@jFAP^d!OC84rjnDBh)O>9<)`6Sh+oExF?+xTR-Tt>Rajnx z^}~w+{UZqG96m7w?4p9%prK3NFprokuiE>vMj{gT=|}9BRbeeBxuEU*C?Xf>_|n96 z6o&oGG_MAWz*?1~q>Ab?3}5+KZ&x7lH$O{3X=icO(((5L%kLNY|IB1`w6r~Y+0Mz* t;iiSH+^&NgVQT-wJsJlI0j!ztMJTv!s6u*BB#YtxUFJ zXOQP5ESk*bn^`~fqw2psc8KOx`Sw~6IPJd)t!v(V&F`JreD;}k=@oZ4aWmdJ>byMt zFQ1GGlAy-o!(xt(juei+eo;75{0e^b;=9MC_CB<>+!Kj%KOOqJFe8LGn+Twd%t}J( zQ-V=&Z=fNT6VGrQq88m#>kYMKUCG#N*%i<;n-p_Gq4(o9N9F@bPDPf>5(_4?t&X+t z=t{pKd|Vj)MQvf37F^t2Ks+s0UIlIWu-ZSZ8HTl>>{k^Rc^Sk7mHl}Xedqw%MI7W& zJkj>Gk?{~6J$a9rXmQgy>UdsvZmN-sCh3%f{-9Bqu6e4$*@qxJQG6$V@}|2&u;$05 z$)y=6E)ekYTYE#NwNuqizH#=ADkOjxkW{wFurm$mGecJ&1MVev zw_jMeUkQOeaZ*3^w4<~-_v_dU9wU`~ZTDa8V^~04eTkFwE37|=YG3G9MJsrJEqUtB z1M@4oyK3Vrgoo~;Iw(lUE@yn+Q55o~dAdw5uc1t5xv)xtZ?xxwTv$yl8hu0>Or(cm zZ8-B!W&@OI<`7yZ-QA`=T@-tLa@1qjVWEAKTnh&(gJ{M>Bc-+cvi;h@SLdpintL3j z9x4WoVAHfJ(?5C%(KqUZ)Aca84_jGldp<&%eWOcqKlYLE43i#X*uCkLhtsN@cWBbO zm3q+XCBlYBh=R~D-xR_={6epj3hi1!#S+^5f>bmolO>ZS z#9-=bBC$({7Vje*z+Pz=e!3)@+WExUBEsQA2-ZqY(({h;OQB8<_vk2Pj>4m5p1SzZ zN1jub&F{1I=}+=BPSt?~Ms`L-f6~0#U@v_-Zl>@A@TA$!L8TsrZi7gF&T0)Of?3K+ z3k|hMF@St+QxJPGXUy-9R`)D8@w4A^1VV-0c?^Z=QHa4b+FH`tDyl55gy5x#DelTT z$uB*gd$`xgz2`F$v5H{Wd7_toAJ$>`unwCtP1jS~XGU;S9JD>5NXumUxD=?9c0bjs&NUy8+mv#YANBCI>mvv^&he6)qoq4vEfh73`K;n$-o{Mr|V z_bqPDkEp{AL zsvnkH&_w!3A|4j?GY(cMe8VNiZjkdPp$Er=1jx?OgaJohhCJy$zR#GT;pMZ53E?l< zcmdsf3^j|2hlo;rvl5EI6yXB)KyP3o(R;)1pR9lG9)A13MWWd^7X-cookJt@QA#6Q zFCsFAmgtFOtUn;puDlhhW7NwyqC0DW@Xd52MWa zjQydqz138o^DFu=!-x!3j14n1`dwR5ra(9VCPqSn;B=YxdCq=aDmSyh?XEYa5sZ{h z)!`^)?LytwtT|qSgeMBtx~8?h$i51P6Ukd+eCO$+CKd;Q?ZAKnV==8rG6PuWvbAKW z8ft5Spy@8&qvi89y}Y=slc-zF>`JKX@7x(G)fWWH?(w*z94x%o^u@!1Ngo!)d!iVd zE4n}BB%(Hvw!fo63a8I}0s6h3>%D%DSa(DnNhr=XbibC?tM^24rOo|wgIoddkayO$ zFb^?mlwW@(KAvzDNswz+TlQbTb2{`ldBKyD9Si&NyA)zYPqineIk8A#A5>+VI=LW- zN4OhzSi!Xti_Bh-Tnzztkt9ByvfF3q*C~+?Lrw~_zPlf>E%?(U)!RG4-v=}jGjHJ* zxs3_%nwL%6Zo6eg_jxcuBy+f>UmFouyQ|iJ)=p}|*q&oT07M`cs$iIGHp$MoPPlId z-krcOFT2$N4KxB0qiZ0-eF^y@D6XrRu_i!&oM8j>KHJ>D;SecWbY36)$cqd;<)q*h z_dv#vDnU8;hBG)(zsYpt-$tk0UF8qz5hWAxT0U@Bg&S03sAk*MQYz z&Y|~4flVYtx>>tWG`|qf?6I8%9 zoIPIjlCVontWe+0c^zvBSkN|0BgE%IloPse{OF<e&c_Yi2_ggr>k)dN6BUPe1 zzOGNl;1B9%dPub-BV&KcF)sk1^DLpH|4C~qE7lHA^JXHaK3Z^vvv4r+Kyr)3=piB>EH4! zRRFySnmctr{+#o{KAjn>m{U?{EO)iA&1mhY@l2Pc+-Wa*mWq+T!vP@p&4OZFY%?hN zJDya$W9frI7_J6QKW7U9k0u1Ow%vq{Nh;+GC;zZM3AiFTXFCjPv987L31?S5Q!InOa8O%NB65?+gp zT&ttpuI@ys-<)?l$lV7^J-5Y?csqwmWYcHT_x}V(9~}A+nHGRni4u3aHM#JLS!T7f z^gdpUTo^rPM}lU%rw5s}QL@+#)Q}En?TLTR>?PkuNq+%bTDd43v`V6^ta&!RrB13i zeaA#h^7DTC#v0YQTbn8J(oMtIqwoN+*D(w5H+G)~p`}V z7#C~tuI`ea3G>>D-ga;%stYl}4zz`Ul=Mh_D!zn1$tca&)eAGX6bAmZC})oD6Djk^ zw9~E=2JNlfspfhp2iQooqrhR-R#=P|-%D>Yhg+ieEl76a0?w=XU-GjHgSecWsxu#@m|w?Ld|Tg*#X*ra#fmnIWvble)aWWToyTi00&R|$ z9I2{yjifk_1o>QyyW0KlzleRqNl%%fYMyEZL?@StNn~U_+Fh(wH%@nY zyrH|lHLbX`Jp+>$iK>X)Szx{zX?K}0bta1?*9*AyZRLefU9O@#eFnXZw{Qr5`)A6P zuu)@|^Yx8^TB&{#rv9-SG#&@6z_5t^Lhal)%MTRewhPr}knb}l3%$?LYb$J*g>4rb zb}JPO$JzSYzrbA~_CA=krwlA`)=zDR^X$Ufq^~zdPH6dSl>LWQ!Uu84L%9>ytFh+lMP6iukpNO1jgXparg z!C)o{g8Y)L3~~rFNmr+r@r)(CJe4?hBX{-cD2^3jtEs(GOf8&o-i_cI;V(MVy&E$# z3O`)GL7W_>W&vHZsa=>7MmfB`W zwloK05`+q>j-caFB7K{|m-c2Pa@6<@e(3Gf)gwC|`OjX+asr$4P0;b@9E9S^YMNw}b`*|Iw9wrdo$iUZD?#}4eDG=phYgYj^hN!`}KNkGI z`iKuw)(DHQ|3cMv9gPd7ih25`yKC@uDrEob`O=40nGTxsRW|W{5Z}3K{~IOk0#~k; zGQV+XP(-+y|EN4+8_Y3Px4#gnA2K0sj4KD$%}UcKN8C|b79{WVi+?8$;{S>t<_x{* z`%$10%}Gyt0cOOgZ7zu$Moz3SV_={QNJMEluNSdEGNJ2fDy#+?eDDlEC;qA|7Hex5 zoT=blA3*{$(5`y!FYL=EXk%X2f`bv3dUzMehLHs7CMDTO1+S;c479z12Oh1w&!gPT zu8jzS7KsvAa@sM-6JLR4(?@z9ru;Okg`It3$PTv7<6rn|)8uOd{dY!=RY0WC29MVl zQndx*$dTj;JU#9Iu_7VqG|kKK@>4I6i_`n>zp0qfJk5N}tAB_~*~PKJ1QJP4!$rM5Yf#W*Bof%lD8xB>=Tb#? zU|`9D#05W>$q6k@$HQrGbE4c(+cMEoMS#>s z?ysU<^%43ag2G2@UmC28o*ZEl{ty;U>$=OYP9U?H*eauCuC%KGR*!6B3j6)iW$i>m z+Mmy|$m_QwVE^~BvN|a$GQ9c<|E?hdK<8$*cT2JcjMaMKlASPgBJd z2cfwC=}sWu>d%$`g}d^$A1)rBx#HIeYAhze{?t-9zLGrwWqKciv?<=eMsNe#%qF=ZD z(XOEmTf+^dvSUE3oPNioNRwN#v_DvvY}2z?v%=KRSwSZuCiBy; z9|}LqDWaQXF0_CKr5mHF zmBv|X5tk~99g5lvi0+fRbH8w2o{|w)$8A6RM}<(boWMj|-h%&@)ngiQ!oM(*bVi4} z45IZlacfm4cfDcH7dPx`d{Py-o3M=f03ik_!k2|P*m2HWaw2R*QEktR#i3z;DR+v9 z2faeQ8U8h3^Ayw>Z2qZ3Ilx9)zFDqQz?v~rADQq2msC#o52s=BaJXprdO3i#x_d3f zJpwA|OTX_zA2wW=zZRGAW!f7Z9%`mkcQ`}`a&1HTU{;EGieVh6 z1==iY#a+6kCYzI#(WImVdxs6k0ICd%Hh^RZT2f{1>%Z?BF6VL|yM5uIX`dyv@~a{s zbSY3|=hljeoIRi87Yy(c>dZS?f@0W{@ko7aIQ-izMgcUFSG$DFcskS;bn2VfCRtYa z)+MScB%uIj9eg(!I)y+NfqV2PxdyZne54gsWl`b0RnhFkPeO`~4*40U&7ZZ(xk7b? zr1WcA(-gw5ITH!3|Ir>Ut-hr*=1($Bchki@*Zmns`W0b5*Y7)uS9(l8UiE!Q;SbH1 zR8&^56@K-%>o3Sp{gJvWOp|o0Pl$}u6WPhrlK0yUGqPyni?9hx=3(m3a$Hf@F@-@1 z^=?1r+y`jtRdUMt@J~|89j4S#k69i9w^jdrWC@zo9oU{jLRs5eQ17hAW8CU6bPm8b zXs&K^*60F0ExE=RcL>5;6&I4I&0#GB9-PP?bo7FIIn30NY&ggq^)+%crb7#(P~PVM zs@YCPc%Gc6996UjLGjaL(d8UgeH#COQR^HD08NUsc&#Fid1_EixX{jx(?#k8@Kw~z zysGmw%X>3Bxn(K3m!9yJsM`qE74;sKpE4os@ad<-JdQ5zKNiSwTQoEf)|hICOdGT0 z+XJ;e+#k_{Jl21rFnO55M`?I&*bP76f(8&zwr;nl$#II{-cb z*$yb^*6!KoeQ6_F#F9(&(-f}o$e(eDA7^+gCk2_PY8u*YW$5mTWOm0DKI(s_x1D*17ypB#kZQFq}izM3R_Sw>krIZW^Z;dl73;Io%lc zw|~%wQs}vpIA|hsx)#;F323DH-?*5bDO&j<|MWKe!2kK9`mdVR80G7b!8J-wxUdf! zjUqo|ZQW3pn0?A+HtOsyQ)*e0`I5ETPHz~^`p_FIC08Owc?gPX#Qvi^s_Fcaani=q z3H@|7^JYL>{F1g7#6_Kd1$J^=A%&Gbu<%StvI_}Mmtz~`slH)atX#zF!d8e2T-%vS|_B?&q0=f>wRWnf`7-9w#p3AlL2N z(=>L+Tyh-yhJ$UgMw9X{dz208aqZGLYt1c(+JMRk4wp5x{wF9VXSZ~{1TtjX8Kho^cDJYZIBA!)&3QQmyG{(;}NYL2W_0q zCF7(gTDqp!eK-gAAOL5hS1e9ZCv}Joph?BekMDH3$rN@&ih_hm`3WR~YCSF%D?{HN z$|v)Ds$oN4d1&8)1M#`y{G90oCwrT0dkgspF}m?y5FZGq#nw&RS{LWnU^iXsoI_osAN#hlRu7tOZ?YnCr6d(@gj1Li=XN+%w>8Ydsj!`6zQD~jz-hbel@Ll zY^r|al^{4+lFYvX69U^j3@&a1kq4fp1vZYf;&Uo6$Zc4A&4Eh+szc8_WW+t5We^iV z<#%VokL^%)-C#fUr&Gnkhz?~l3u9tP&FNMy!!6lUpmQD@FH~_~7o}dMl#g&L;hR~y z#Y?;uOy6yp9ZYp;$}Su`mAOw@_5i|GfC_D%{`&h+mlN>4zLTTns$>I3sU!c;xJ)nE zV^es(Am9#GA|Pv3Uim2-Bb6s~_JF&b1ri+cosSBV0h5y#s4z*&d@VgS9#4Z-1gX|P z9a)J$*pI7c6SN}UBH04VL}eNSh^cp1bl{A~ui?2CE~J+l7w*9GN5D>-o4(uD`YXG~ zFP6LJBHUbOkLJZii8+4G`bZc~NU@8bzwb#%(rv?*wWcTw9}!GVo*RG2H5GraE3A@9 zlG`6vQD@d%zHBvOBM}CP#zW~|9PuDIl;1DyUnrjHhC8}&YZL_{Gwl#f!$JVw*l#O# z@si@bq`KzcA_sAFP@HO(q-7W2NqGJqfhAgZX76cT)WllC>*O+mQ5+j{h2yA>(hUYuDgRnUw$;O3e>qz= zCWI8}t{Z6KvJW0^GyiE#u33B)eUD%PZw7f=J_d%qEgCwIZ#qjO=C0Gd z{_sKEbB3l4=h@kE?|C_V)I@qByFXIzfyiNF-0`k{(K^QL4;W!mCe>^sblRiY2uTaP zWkkN9wcVz9oNKL7(a4&FvIVM8LU8x{vOYb-N4C&Gi1qYjlWuz&&M?1_E+=PpJb2); zy71NIiuQg~Y8f&b%VgJl&!5Z?ASwlmHiT_ho0GXyT$0*$rc2-M#E=;99cl6{-|acS z(viAP^Gta60=^qwbV73-x%gPTbpGm9GmqiG1@M4rEb zEZNH@Aa}zvR|q^W7FTU#B54U}KCF`e5c&Bcv%3>1V_{SdQ^Eo86?xZ=9vtZ!9>beI zIj@LGdq;vC*O<`1Q{NMdh!!9LdJJbG7e7|ysbmJw>5%GlizDw=Y^{Wf<|VSKgyuE<{b4 zUrlKajdolVTUGJA+J}Na`M~L<<>WR6`yj~d~cd26D3|onE56pFWBd5e6o?kjG)d$3Dw#N4B&Lxo- z7N!sK4F%BDbI~aAWTM*#iedcOM`9Llv|mAC zp19#{L&eUhlK_LUn%#@sksoAUqdNZWFDB{j(Y+&IP}r5r<~){c0!ZuUrFMV|9o_8$ z>J|hNQS{=!hW-#{>*{x|I|KFr`-Gd4U5Z6Prgj&9l==eGJYRS4);t#URM7w7q=Sz< zdApo&_L}!;c4X13&5s$%=So3e76SbY@04mdo2Hrnh>vw*d~p;|zxePB{Py$rzXu+4 z&6xtjBk&bMx>KLU^OqN~B1}_!>W+Sr#e(08xD+ojq&}$_ZOvZ_WpGAT_;|_js<|w` zNd+M-{t&m{CgGEFqJH@>cJe9(o)E6{ZNbB@6UQA?MVF2m%vYzV3XG2Kf3$cBVdn?M z2^xL#u$8(BlUB(lzQc}nnlVQ!^glWgr~ZtCkf&-=q-;aXgIMwvy5R$Q@pq1|5puL` zxsvwyHfp%Q=5MqjriWFfr7dcu6<28Z(pQ}GN?OE|#Mqza5&o-%d*wOb56z_qCY&UR z{sb$SxU^%Fl?{4&k~A(ZWV-uxP4wuw&{*LYkR?kP*#*Fj6B{Vzj9^i9>L#u@eEP9u z-i+ZzULiryKMFUe^ZQ6EwKN)ErsY#W0Olg4xXVXoUwCZWli)himaWAX>dMncR zY^u4r=5a@VpEDqq?9$XZg_m&e6P_C650ai4trUxU#!I~dkmMTjm!b0JmDGPNp0zO* zPn0;3M^uQo{cQY6JJ_rHXRW3H*hNAjmy9mKHk*DS+Edfl3+ABQr%q+xLE_c0;UtNd zujJRM*IKx<^lv(JpB~L_bXeG^UBM|%7QCpeFCl%Q^-5;`&q>K-N9nkWFdOq7n5*P-IIO7q@M zNPQlksjIic3XDMOU->B!=_PeKRfs6|7l~ilw2#53;Ug5hkGS4Rf|tk<&$~yBR&xEM zx>lQ^Ve^SoLa>Mgjghtod&sDwHnT|SDmJQc3jQ1Zu6*=Aqj$#ZIoz~ng;O7yu`l6U zHL0FQuUxk8_d@_(m^j&7&VQ2k8Mf>NZXUbwjb^*j@XXl*x2-mQ@))hI*(;Tg?)A$@ zvvoDWSFj%?zA}ATlebFdD! z3EvthNnq}OMYzBjMCv1Y8W$P9$s{%tfb;rM0Kn`xubH|g-bd8@eW1E}7snY_p5Kj{ z(C7)h7tq)4RMd<&d;Ao0V$iLjprw5NeNFrBW}vIMh+a)fGvLJ3L?=QdQUPEa=MAL) zYwRsCCbNI5g>@}j3m(u-d4Kr#xv0d(_44Hxe7U2K+bb2O;w!A}y>9M5X3TLpSBCJ6 zp8%6O^3H`j&Yw4U2HxSYs;zGnY%^l=_YTtU!`22ceVz^6B_+#TL<{~D#LI^-xrEGh zC(5ckEdI+rs7G_*WVt=lAiAr0KeRZ1pjd68CoHgE4>zZTDrVr`&PKOFeR>0&7RE#X zpJ2A^_7-OW{_TPYBEgRDRM0+R?C`&L+&8R(pfMR}ON_QITA51+-+Tg&2`b&|Mhf&%rW3=GL^4V@Xd=3ZEf{!>@YVt{fQTf$b+mc$u&F&7B>`eJ3?|}(3TC_k_ z$I(t65%C*h&~hLsOw&xCdLW4uciJ^O#Zfb-XYk*50XF_K{~$%dd9v23*5W}=$_0@? z&C~>QB&;Fi89uMmS=&F^Cp|qF3*Bxyf4i~#3Dbe13cnvL)W?!k+M3JptYMo(dw;*$ zCa+bSxdxH#Y&wcAc*w%%)Ts+)V^hc=Hsu@zem@N%Oi}OqN1RacMm{;=(-&z^n@MzZ zP=4GTQY1EQPt?X~$;>$HO=~2^v-#5v-d^JC882q8RIyB*q$;0^Ms6^n-h>#cJ$hPk zYTpH-d!x1W>!T~b+2ZeO4L5>2_hT!8%aJ>p7!MYc;}3UGLBWkuKFwx`TI;dL2>cAA z_SM4zZaCi}A!#Qs+Igobp@ED5eqQTWoeeV#0o|2^fWyHGzLyv!_c2`%P64c&=$Z=Z z_vMisqc5t^;jwr|;G}|=J<+Wq3`=~alxf77!wjI*>E%0#BJ#u6>tJpWpRY|6z-x}v z8=NId^f>)7L0N&iK?g;GI2Z>AowXtLj#c5(fHnOiSMRVnBRnZpK`A=Q%WPce|1&{#oI>aY%pWUO+){_E?k9R*V*OsSwqs#E@5)TV9uR1}cbEq2=q< z6%PN~6A)7E!vNPp?E*0DQ5D#_~?)X#A%$}gU=YC)5PyQJqx zEvku9unA|pML&fk9l_VUMtF5j!Fhf0$wS1o{PRJ{q)uB=YKAa40PqB z@Y&p#+_fi4wh-;k=hveRMa@$O{Mi$se}GtM{lwS6#4MPHHJj6}=2{Yc^{(ED)XSYo zLKH#{@U&i2)2K82WJi%s#7&&rQ#nv?(i5Y|1r{UGrjKy00!w{{`4?}trX3=FCO>|k zmUUeEL8s87N|Y86iVn0_O_2ra3Vq_CnpzOV{L2wmpwmz zf#bb;cfC_nzEe+ay;r_I>5V{V$d2B(rr+IO)MsvC zL2vEDuk9wV;L}IR#CNTk_Zh0oV3GWO*jun?pX7gyNAI8Cbe^xadM|?wH{W{q-di8v zOy1vXPj8loU-hP7l6mjJr=Q;;&}YTH2gA#E8&lX!*V|?9d$3{tYxV7Efxz_p(rqxs zd;1Kmp6oxIo_AE&gROUGWyU(*pWP1FHOG1ZxdnNsHx&{|lYZi6;qH;286yxUXoAy>8HyDCENh*O)2HAP^f&CHjH!a%87cPEg2INa;#uYl9Y<(szEh5r+lRtUkA?-$xH2JfHRa7CiCvcfCe;9T~wvG*Rst3})i{jK*iDh;)~a zP*gP%c#p7?;Ui+3kOw~3>#0*`kXpX0mi7WL1{RSS_535m+dwAkxtfa`GSRQFQGn{6 z_?SM3my{^F2 zZ|{lK_q8PbVd&MNDTt6|<0YC_g8TbVF%V91t(W^I&m%$NTo61X$P!EOj8UBVmo@)P z7imd|9C>Y8M+)1(saQ_{F0Dk<+Czbd+lt>Z4@1}NpRf9IN=OjtX1;2WOd_Ja_RN6V zt23#nmj|r=NF8{l^4@TljL70&o?fNSVs_2Ey1r$N=<5W-iOVk^*yhs;W zx$nxrfbaBdPq!jR)W^7V8SlT0N@@Lc#I>7lUel{mI$BPufZXhR$E9liJjX2jHydXX zVB8edN#AfaSL*m`AY~t1v+iR=c}(JfRD`8vzJ50}oKoAwUBt5!^w5e4RiTKp&)#QK=UioU!Q-;eb3d+x<+UayqokPmT2Z^%O%Lu_!r825a;eMLz= zBH+{|rd`|$X}B_sg8_QA0JBeTLE`sH`j5IeR@fFFBDC@r;LLZ<^%r2JskhYt`&vxMHY7Xv6;G8RO;1&08r zGk7~D$b)K&PBL@ezaO)B^f2n=z>&57=H(nVBmgoH!XODA8eS>ugRD%cNPYT3e#T(} zUv?BEWD`rvtvn=zv;G&+>ze68LyavSgJQOs=Vz2T4D*J|vO47c_QP1;N5e~OKJ1*7 zDsIhZBP^j-OobRv$#<78+&RMi(99Ax?xBYan-Wtv@mJ6=thjbSgL0YWeF>Mar%31Z z?;mcizlU~| zpHMguZ@hmrPJx{Bdg+5T{R5Eh1aBPW^+hip9czCrLE>hl#?VVS1(vRx zu%>uW*dzGMqo@E9{+;!RFS6W_7EJ&he+>23d*b?EzSFT@CPGroYp)7&68@T+I zD{N~eqXQUMunzYXqDVHe#P;_d49iFVseR%yV7du}Ldq1^QmD?4m<1D_<6(I;^0u5O z;PQJz%1rom(CBbk9GMtWUgvUmYn)EH=G>^&}sKYP7kAj)olig&ykR9R756 zxA>EPWf`Lm1nLxZmCgq!3K9=TU`#2Ljss07wMe{KsmTmh2=&f*&F^+L zigUZd8+y|BRJ_JR3oE&HQxV3c;wp&OW%v(_$;`Yj7CD;W->~#GU!jT8PY5rD~{M@(s9`20m2#0@Fkv3HarG6g#(kLe! ztaxJOgjs2st%&jH-_~HEl?U--zV{?Tp9KQL|9v1mxDF6c6NSHHdTU0cwl-_2_;*t> zfe8{3@eJCc#cqkw-OArJBMoYkfA4+{Bz?RdbD2b#n8CahzL*e)D>FOjGc>}~7gzaF z;+BtOPr8xm?ulerAF9=hOaY#&@delQ;VA@IonJgj!bi?_lEKiNXdLg+F;Yja!WMM~ zz83vHMq`5x&u?%~ZefaaKbgIxT(-vB7;pzTbZYCSp;%QG%N}egnyqX60_b22eOF`* zmHBOKwp2OUN@j7o_?*FI*7L!B13?X=XABNNER`cqiM3Tq81%3ABU7-%_hkKn8@_X) z_FxMd4TeOei!z@9w9J#`3Ihq!wM#Rp`eyi?D${n=8M^pb#@X`ANH}Zt&Adl3N6M%1 zFIz57$Uh7_U6#Ta&6F69tQ`OPu1M!2-_ASiRCD#pn|~*gkfaQSQg)lCo$7Wz3bTUA zOC9AB)CNX5IzwF~i$lJDqiXEy#@M6n3HwBL1dKGb`95ETL8t{_d(?#EzJHDVIJO#c zO)^uiOu|D&@M-LAMfk(<26+&cF$r+T@eR6Wi_abKP3LM+i7G?gPx3Nn9cA^cee43t zD%JU~%>Bg}Wt$G!WMzJo`|$BwiQ|+XXxth#T3c=KpD4Ao*0qRP*OC*F*fqZXa46fV z^sdwf?=Qc~80ttr&&m1N2Dg=XW>NY&M5mcbY(t~=!R;i09{L3VG+XE@N`C??hG3JZ}#gxp_*}| z%$r*w+%LutLE?VYSgA}gTY!cD;qqI<{rL~^o-e!<;5Ot)lUW#(kH6XGcZnvhP0B2f z0;@wV%g;Tfd6%~r{AMd-W10y#h_5_5p(Ip8?HI_oW7MPtE^Dm@%_UevnTBV#&*wnS zj_ta?w#WuW^;4a)AySL?RgGM`VYAtFOF)?ZCdS3P>xd=F@nNjMGD$gbr9S9BA`I@U zXBANmU0Y(PKCCh-X2S)Z`%*o2I4-1(MeRNqXAAAm2 z8;G~EF5ACbB!D#?;@C5H+*s$m`zXaY|}C{a}Ih z&#QH@=Ud1H(?oU7W|XV05V=JaGeEBQ7mz2Zowio`$W3CIR)>P37dDtLpO()hzWn{4 z1vF3*13W??32D!S^KiK*9>UB@Jn7DBKbT;n$$yR{d2K=CUpX0`LysRx@8jWUh(!Rn zgv{5S>-R$;KZtxy;1B7WZ{vD1xC5T{dWvi*yLl$y-qtZOs?r zxS8O!zp7c&S4}^D6Cp}Tp4+#&@B&TDLH_qeG!5|*V+pS&xGfyI6S~t;A%1fII^SAF z8lDg?C9Vw-5OU4JdNGB-L8e!PIrl1*f^57R|M`PhaX^A@>7@{L)@RWf-Rz*{_pY)<-VL)khBb#<~l=id^K*(O)B?=AuM9b17Z z8|SSww3KfRquPJx)@CnpkdToyMpJ1bIS+Z*E>lbW-Ua?=PW+f%Ar|R{BbDn*5!@d^ z)3r;VMu0kx^~&hh&`n_svBWO!P@Ert$(dllXc7mF`x@mXduT57PE_jhgs69^6<6We znUZDQ9wFRMexKQuJQDj(-LdWrwaczOaOR7ISxirSrXeHFSJ6E$UWWqs+l|u%HA4g- zk-I^a$%Clp<(Lg)e;(3LcYSB$GWKnQUmof&p2+J49Lx!P!%~3-twJjYgkWpWjV_;4 z^Vcs2eo9hkSdu}dS*>K%9?d{X&R@A^|FXY*^9!N|Ga4v5iw)iQObpf+a4d(^q*#a@ zj^Z9C|Gpq4kT+u&zQJ2>H7}`?nKYmI4*F89gIV|cW?|K-zMzT#tJh)4UqU4GdP@5O zNO=@;JOSebxKqdLw=i!7{6JxEPQ0ar_cYtZy}bM5Nui@75>P+HTb7xBAn>W&OhnsT zf9F`1wC{&7r~VlHoy}H~IQF3L`FxiA;!hZGYof4=i3#qsz=in%s~x^iF6T5bh9us1 ziEOzH4bfPT@d;SXz->WYJM-5yWjNYX<#$1d`Fm34t03cm(xXUKc`q5*gaU_Dyej6z z$tE}QFAAwM$Jc#|Y!rmIknZOYJJQWvx*re8SXMvg1?O6Qu2%dmf4<9LH~3cFx08t@ zMIPW^I4Vz$wv&d;k}Lns51W+|^Yoo3>+|RKUS8O_PxwxnC@%fe z!t6miK<#b65`k2B=StSHo&!tV2IG^w0v ze88j&(tcoRy_=UYx8sZOUcM(2H^(|vhjY<@QuBLqEk~ILT@|iI*J_A&pZ3Dhq#liT zmE`(a;*_LKLm3Z0TC~x!EVWOpncwRD-Pd>ih8NycA??3#4m}|Pg~#ypji}jHx50jwVSa}o3 zz&$5a->rg=6500W9$!=afEj$Hz{+%xHoQ3N*T3>tgI;Nn}Lq;K>yVk!Yy8%&tK z90R1iau*|pEh6Li;ua{~Vk8e$(lRk^Ow^{OeL91Q?j?xNK=DDZMR zXaPGpTyAP<%hdNf%CwDnBnB>3X0~+)Jx98|P;u-L&JDMRkuRiZ{6vg@oi|7AY;w_t zUXxOZ<36xfRpWR%(_=#CupIM9HwSkfNoTso->;`XfewxwJML_WU5gU}n{57?U8(vd z?Gt}Z>SG+9&Z`6Rq{5hQh3P_0_7<9NSkXyknS=%W1I!m{xf@)dqrpA<6d&>~HP6p$ zfyV`9w*TF-4$ghFD&mxYw2iT%nXkcx3mIC>34{Wm_l-}9RYnNPn4}0;pwf;r<3g3@e|&xE%Z&{N|6`Y3AYHPGi8mV1cSHGM;S~xl3oMhN0j36C!us2m^ z82xgX_tYMtL6|q2<;)OFrfEeUjKf4)IOpi3aK1?@Cz=AeUy!3-yz%F9?=X?S^bz;o zPP>Z?vUcwa2heDn_VvzRFl8_+I(I;+^Q7{cGp84McMI7(6=vhEF|ehSQs32>N7Ws9 zVJ4rG(8`D@`l-D@?ZzLt>M_D;iq?M*Hh4{K2N9i9($6&<5t!)q9K=J?@6ToHok1EK zpjEsXXPO?Lhw+}Os7T@F=}C{6!X@3*N1;Y)4fmwfm&@*5peW38;2Odcjd|eOU7d^G zp_oa>`}Z@=TiJB4t(r5<58F@i-bV6ch^QYki4cJS{uBSB?JT?E;I%M{ySp=#;-$FT z;85J1L5oXqA1Lk=hvM)S3dLn`cZ$0V?(Tzg`zP+o=d6{id`ZrE_70N(t)x!{U~A7j z6+>pFV=)xxa}?v~Uz`|DdE)B{rqKnPqN}SV<(LY1iqW7g1HIDFr=Nm;_KtrGL~k?V zqT3OVd7dAC<}%|nQgpP*5p*Kdb@sFQ(e6Z}qrgX>1xJOwx;wLiG#XN;%*ZszXYNeB z6mur+EJMjY&}fgv*1kkrxU2^z-I!Bweb#pG2s(_hf9cX0)~AVha_`HHzS#&N z&mC@dctigo-gL-%fh*hM;6=pFhf=U*GLZc&s8ALX;2(O;i(3BM4FoPcM83@dsn|8C zNj5)vw(8>ZC)qSH5P_z#J@*ywPuLd`U+X#f_kXjj_Z-7cWv? zv{#vV@`jIh=Z#4Y$zOjjwPGB0afq2iKvF8XmLpU@wmA#T?Vk#isI1BP%iE2E>_ z{J}PAIxHBZUFO&98&uPyrPa>g^y9Cqw7V)@Qh~4j291#`G*a+j*YB@Q0ds77B+LRS zID8biQlNfR^G6B@hu;q8XbhI=&uK48E~-4IS$$9p#o*er@eK`d6ORb3d{2Rl$;Uehm4J+QmSNc z;#4H7pMp^i3>zd2#*4j;{JfgUR*K-GLH?}8vjtWI*H*O`1QddgC&PJn_m_$)ZyuJ7 z@VAFDZAx2fA$O9-+_GiFKXUsvTwHNwh2E;qjZfm_q&571S)J(u2!BMdHeldgJ?n0` zO^zoG`iGR>q6<)*ejw}n&7R~l^%CCt1Fa}7K8He|DS{gjn!S%(PWQq(R-@V%xS3zv zt~l9?KP~;Md`~A=eOZCPK`Rxmp`LNR345+Ls{A0n36&x$fN?>}W1LUDpsA|0Z!*HQ zG^#Cjg%tpO`p{CQf^HpdBvGeY2Df(KGH(Pm(pcLLiJNWq?UtxqPU}9vxbQ~0?84te zeL`98@2*o|W>WkUt7wn>^c_d~HlFOGXrd|U><^?}buP>*HoD=A4d@r%JnSgq4~tDN zb28~SQnZ|Z&)wT+W#-t$%qvcpHLi{9NN078hIQD+ zTJJwo9ww4(??rd1{|+eK-B0A^^m+A2F%lA)`<;+Tc%ueCdp5Jzq?cc~>623(`T5r( z@7R9_UXOGru{2io1kv_?5Oa~8cJY7s-0dCI-Y_Sy`==@?;xr!Xt?SJVM^q6F%KT85 zD92q)^M*E2wl;b4tExQ|uOp0jX9ynvD!N7v5?WD;MzUDGrF<^XoV+%Y?ot9g-Vu|> zxF9E?>B%LWwcv_14w!xuD(v2#DJf^7mfx$U{^}DWF10aP3BnB_F7l?z@uh2{ul$v=x8VdV_3f62pj?C8sm&Nu@+5P#anbxC(zH> z_@*9A0FOATDow9kWyD5#js~|>)i)Pk`~D%5$u5EHB}$3#ip{!58T9163WJaIq5Hr= zfrZYCoN!mdHg=SS6gAa6b*AsRx<>c`3{E_;`9d%KLsksmj=VWenNRRU7SU1*MP?q z&$3+%1OL@&>(m6LFP+vvKo>FD&3iKD*^2o33K^x_W)enq7bsC ze9!&!q^m{^-7jAVpOh#tRcHoY_ZSW^nLbJthTy*c94JM?TJ9s*`f{z_2Hh_y!imrW zL6C$a5N~UJPu~O8UN|^}Y#1Mg3NHu=9kff5>u)J^@3fb_Z`=vI>Y!u}9zIy7_4TZKd_O_GO=AoDdXmTV9 zQ;Ba7Jl?}?X*c~k&EJwVSlxk?WvWS&pFM~7Wkmpu(A5mgm*}LDw71oM-d$?^us0m5 zrNJiYkSM)X#lI$0eiev-Np-wEzHriOn6ZL{8da;Qx9(YxA1JT;R@tA^oL6Ov{+Toy zrjS(+mutSIzz(g;{4^T0bRmScZ}mz;x98GZQ^U9ypbx-U$X?F9M1m{t@<|&s@W&2I zWeGv2eHdh#U)1r9czaD^>$P`vx<>b8KH`VjoD6Y#^3<&K!^}r79k(KT-;qdj zLqXZxK&$w3d}jQH<93^eMq`bpx0wiL zyx((K8C3?d{7EHMPSiG-b8A}v#X#0?a4Y`Y4>7MXK_bX^ah z6LWq@RyMxQE12^>2!Cv>^-I8Kqae4F4|GFDnU^FjP?p4F;!UQzljmX&5G~a8y&Y&_{T%%(mMn}M0;rK5_$J0*AT1A$Fv#$6*p73Z9$C{ zVAF5et{`3T*`?Ws_D8yE{#x*nvHYOE{mrCce|9wO78<&22TG%Z6X`0T!&-0_@|}`- ze>cH_$&2p$E@o~N?XM)AVlQy5A`*6)T&x>wf@I$b{Yw1AQ2EQ;*lPy9u=|w( z$>Z-A8Cgc9A*N*8UhNWa@!6n_&pu^{cQhu2Djhq)xM|dVI;AZkIecB&XBCWL64|-l z)kN?X8p|=NP_h^=`QjnepCK=HFP5dA$j1JenOipfD7%TJDkh|fQgUM*%gn3-Q{@=A zGl{EGm2{GU`wajrchaw?hxw96a`>%1ZP3Dv?ymtW5aJ)4oOisIp(U50mVf#v&@!f< zO2!6|V#L}-Si@epIuCXO2bXdAxblzdcY4)Ayv<&ookN4RN(y2DO;&hE>{;#anT69QL{?H5SB zCw_bj3<}+r2XkhMgx^x1Kc1b<2KR9?KOY`Ov?0j|xr-bx_WyNSeX6h4)G zeC17IB3oeaw^7$RW2!f)SDHE@IT33WL23NU7GwOnf-bhsI7#Gk7W`tzGQy9GTJW3M zCezqnCX56Jor_$i|`f@OKCWmfKIMVmbipQ?8>zL6& z!5RP&vW;ICV*VtqQ~ui#`8F_1&hZJQ41%2hvXjokE0+E#r3zR6cFrgKXZtj>f9=-U zfBHQA`UG#aQ$o?@PUqS&zWK6(Yyy(biLwet5(D{ct<H$SbjKVz z20PZfxGJ|7HdXyW@(uC>QX9MDn`evvg50Wp#q0Y@=d$_VrZl(kwPF1jwXA23<@wLW zhTH#wuP)9>3rw;x(8#NC%zQ^jj${oEC5^kcKLT@tAFJ~l1%sbZXd4gLY(vtEhO#)U z&hXE+f3zytNci-0Rv#`@Q}H^UB;!Y%YItwl=``Ygi~7r_2@9$~40C$yFz+Xy9hwyT zzWUWsL*a}o-h|OIN@kC;@zYbVcot2M5|x5%gJtN;I^u!4RO6LgPmZ?sNPQAP#UfTm z;(fNLuv4%?!hbu)ZY<35`z?c8oMN_LV9alglW=5xsYBA4G!}E2<7AFWa(rQ2CipRe z7VYL@lwz5Q6o?3w>>>h1JzI%YR3;?qbe#uC@&;^0h4<1y8GkhvvOIY|=PEGkF6Tb7 zt-zl!dDVMMkjymYd#e#bw#dfAfpUk&90L`viQ{4ES{!ApW_n-41tP8G1kZU*1mjnXvP+)u8ycV zD%j{*V<=->T|Zm6g+Iidia!07P-Io8m!T$D4__FQctZ4UJ!eVMs&baiGuPhK>^oA2 zWL+ha?Ne-oa_JCZDDM6j(2Dtv_DUcy>YTMfeXWne<fSx2x>D6@T7%1fH%1po$3C=VJkxh&(tkC`k-_;N{EB?vZM3~+MqsGv= z0LaLTki2@ zK3I+=4!1&J9Mk`6MjO64v-I>NYGktLq(MHZrqspGSG^1sPec~s+QY4Jm9o=sz#W(g zI_CqI`>^sX>9N(0JHdfI5M1AEO=nO1;WzP4y;GR_t=iT|{vCW7lkmCze`CxI<(~Cf zo*o~*PAle>axJPmof&jFh~7jU33t_=9N1~wOz(=!`;uX=_4C{hKqE(`HPHPasvmUM z3U@FwFf>Sw9%aWON7O0$!J#*s=mkX49U7ha-^)LF!=P;xaDn)P7Y#&LWebcAQYD+h zw=77`i(4adVKHgF2x3mV#5+M!r7Kk7SQL}z2jwW+6DiyXqh4hP9pkHOwXU|=1frfD z4_qJ6t=l@P@564-nyST)Ue)h4Sj+Y{F{Y@C7hZl17s5YnMpa3(&QUF7uXK0kL3|9} z>tMRW1hI4xf84)+7R15o42oB0l{Rbk~VU;U&yO3NHoh8Y=}Ww-FO^;wu@Nw=ANmC>O^`-ajVqyw!U}66xBnOoaZ;^)wAiBl7;9Uc zabP2fKOe}BCrIQJ`Lqay9)kK%_>A3I)@$i(1$UhJdXf^d9T`+)7ZwY&#o0iQr+5I@ zasR|69`(Cvqca2IieT4^-K--^w=yhnzR{+e;HC>W=akf5dO+73SKVSKIO*U#Muao| z>Gx{D5dEP#X)i?J{YqC`j`bHg7&D>}2yTIj4yr%s)>|>>(UL_b60Zw=jw1Uy6I1U- zruN#pp~d*hP!#<+Xw~XC`pZ3=p(@2hamXJn6Y`B0x`A{mkJ12ww2iJM_qPc2TcnD3 zmON|Vp+GG(-9*2=+;Zdsm$R_yzR6?m4_nNYJ#J;88`In|LR`U@0 zt`@7U#<{fkT6y}y$lSWBy%v->GNLEFF|*gZQ~P`vB8Qoemv8Rs9|DUvziW@{0}Oj+ z_rLjNQ=!5BbQetV4$aJ}4_B2qVOMaSIB#%eEanC5~aR{ibMc02o%!b=BP5)FF*+1Rf-H0tz zENUApwrfzY318&2xu=~*UwE5$wnKlsO$OG{Zog!K*RLc#Df)+)IK=KzgTK?LM?yJz z?+j#q5S)3$KZmJ_qqA%@z67MT?xmuyk&JV@-jxv2O+>jf zj0e_#F!x%@`raSox$^d@togkJg>iX881uIREW5()@{Dg~OqZ$eBwbAE*C}tB=FyaX zkDftR^$y*KrPLr}$3ywee*Q!&4-}Fy?Nk*f`}q)V9n2?nMH>!rkJ3e zC&9RUt#zaf*ziQy!lRYWtg)N7w~DBM}-tiQ-(-_jiQuMLbGSn2qPK4XwX14FA78F ztE*D{5S6QOMf>98JV4HOh3|w1OZz6Qjh*pXc(g0vJeERhN==!*?yZ zGNZv0^}u2pZMSNjxb zE0%tx@j#yGKuF!~!t$=W{Wpk{h1ltB za!s^{EjW$!X=5)N@v7OovUQ*H15Qv{z=w;lx}0C8G^}e03ZiStH)f_)8%(#9eE%DQuF;;Od^_rNy%Q=1HBE9A@qJ8ZqBxQS!{%Lm#PiJdZcSZC`)~ zf&PY;m@kc~tP9zREB3Gb%%JABP!%0y?2Biqwbv5?djm%%ljq-I$uA#URUn4&s&h;e zyVIP{jVT_| zmzx9MeAx>?iE4a zap)u{R-s2UtF)J~Iv9UbID-scdJ3WA+(Uc(5B7WNMuq94X$O*iip8;`1O?!ITpFQs zg~T?}VH_gOVIPx}M#f#Fd{IA-DT?(-y8OjW zm=FM|Upy2-prQBbqOBhd2szMYGY}IyZ&cw}lNawbNPuy0UI(*@L+V#md4ZZ?glI!h znCaLnBhhb%;kn}hGe7pUPXrY)Gwq-IK_9EX<0JoJAA0*!5gqNGH+(cJ z3O|<}<$;`#roay0oYRP8WJp-f4=E^O$|bH_tF_5jND#A&DFw~K-p|WLUKGnNhL-)= zETB`v!s(C7$#HqUW9ZZ!`)Ei+n=`L9_}JGpwr!lGG5^j+fp_TsebiM)_V$A)nHZsI z==@l)%C+WWKP$7kf1$U`1g%EuBFM9mK(d9yxrr$&6`+}+es}{hDC3-d(B53lINV85 zuI?H1>;6%#eF&-w?=1PRR_uA-{6#Qhx^NR;!KfjZwzm?_*S{cCTaJL@%S&z9A^^?~ zhx-RC;|@>pq=^7jL-}N8?eMVMffb<4UDE~yW&SZ@P%dmoPoppIwTJwx;wO)j>aL;s3h(zKAk)O26{WKXX(sA{Ga#H|zv36eTiTSdfCF zv(wW9i6$XMt&k9&Z$_hqsP9(B`;vmY7uW~eU|MWmX#b=1)0d=hl0;Dp5p0i}I!yPG zb6cPjpLdxpeCnR(N_luEO29%z3nxtV!C3Q8(i4#8?x&*GH7={v8L5tBpz-JSPfKO| z>S0$bMJWTwZO$?;K98w;Y0}K*C&fO?1zfyqZGRw*pD7yM{^rLSjmJNk5K5kvGfI3cCogVVJT+2E(exnx?97IxLXM@@27&^40gizqPp`Tw2mQY_~^~M+J#Zw}mUl~FzT437{jnBQ8y!l;$ zNZ%{ooe7?<=k!FGZ|~S#8^}Tpte|y#e`|-|8Fyw)Izxc&wC5Ta6qaqDc%6O6P=0Ut zF^1!J4UEW)Z<;Jt0AMPkZ|AUT^dzkAh-j7+cDWd12x!D77kPhnXzCF=_Z#S7dUt0XUUN!th@xZ zT7I$U+7US^k2Tp>@uvbsz5Z8L$bzJEKgF=Rs&0`MF~F zaSeOa!{1-b94uJjNzx4b##{1yAg0i-IQLTTB85|*SroOIkDc5iLFg!d*1oWlEf(^g zK0)0z;ejBR_C14gev8h6b-%=`rR+kq>pvD86zm?$t!glyKZyI5toY^lWG)w*NYW z5aitBPa5j20_z-Gq z(UaHw+*oGSc!{Iabz=+Ah030t2o2-MDJV1XOQ&>Ot3Y%8gC8HJ6Bmq5rflEM$W{jw zdHeCtu1@`NQ*CnhQZTXLBFI6-G?2M}4L8%EOG7LQ*X1hEKnrR)=~c_>%}VeO2g|?f zb|JQDDGfY(LmJDAwVNYV)k!7;0lD3|aHB@$tSsO31wSc=Iue4x z5#=@`zDJ&1QA^6#dZx8fzC+lSk4?*#ujh~ol~!!O%Bu%A8+r865n-RT-37vKV#k>$ zMxE~jt)|Li1r~S7Z?{#Fs-LvQ=7qm8E>O-s&Tiu$s1e_GzC}#;pz(Q=4STY2=BQ~CiCjYYsgf%bZdX%Kq!=wEqJN+Hj=SosP0?iyn&c?vxtPe3^_;wS45{AI}|gin5nE`x`U_ z09JWVteG?tGxM{xlITG`w0VPs7Ut{V-~Q{ladM!-6LR8zw$Y>hqG|H2%i5blqi(N# zY_U?BC7^>1M6*&9@?FFz_bd^STdKtFowyL>++_1f4W*Ue zb0aE{5T(zCzuhCwNs7KHC{ncFL7k%_`>Den54pm-G?GoQ*Nn>Ui>MRLkFFW8HA?&Z)H*B_Y`{Q*dY5tFUcyrtqXc11OK^G}-sbBpfKnC%< z;ptoSb2;-5-j?@;NuA(oW;WqMhgi*gRHg`t1SEvXq{yY{v8WctsL&mliZ=N1nm=-$ zJZiV|!LW6L`tefmATT~pj=k%V|LFqq-8n->!)oZ ztk|+_`RGO6><>@xc%Hq88wRfI_2_SE2EnkQSig5pLDUHXR5sJALAnU7hMz8rA6e6N zH-1=EK4xU(NIVDJ(%ECb*+1P&e$pn@eL;iXpk%7yLW3#{!sY0(dSO)9(j6nmi~i|k zXyA)qlj*UBcs9JgB361-MXCND8)p}bjmwoi&RcJy0_YEw?o0_&{r2bY9XeBnbt5*F zb!Xt*K+Cqyo*YHw$v8>BwA5QnJY?112%a2)q9w@$2@y{x>!=mzfaJh&-9%~}=G6)A zg8%-biFbB@f?qv9A9pat}#J< zE5C=DIu-$DmBQJ8JjAc{0R2y8$)Bh~k{dr{r44olW9A$ERQI4rp4H2>mG%n;_r0_f zv4t|nwh!3px&KQKHd&+*W%oZl(769k3u9OvugL97H6!a2a(B1F#h&*#|jp;4dJ%Nsm*@K~kWq##t=@(m}Bont6W>RT1m&-aA=_&W-bcgh=L+P*x0dN+{< zhg^hZj9>Rc^ZqEdHf`DR6%lhJp4V|p%eK%mlEZZIOg(9nNXtB}HWq1&;~5w< zcZtA99*X1%HsI#V5sxw~#=SzPq9C3!F^wF@J{;6OgDc2e^?k$wtW1(KVto4xWv;_Q z=6?GrrDRE;cpw4pQPN^p%OeTK)rD8Wr_COkMDbP%U)9!hq^LC|L#HQc3BJ2M7U z4?%6`v(^(zWpeo@&IboFWDNq(X7)NtNO z+e}PVAx#3)F~`q2JZn4bovHM3=8N2Z8091;;EniVoh+IRFt71EVDn`P$g9Q>^A*@* zS=20FDqtbLN%iNMBu-fDkC8}+{q&T36a8q;g!+e0g4`LF&}-H8VTz>;><3-XWuY$u zy7|?-^&e0*4777pQT5P|DNBqyxhT*X7G0QsD)E1ilO8In)D*HG1+CB37*e!|a66jT z)xujVot3R2?}5RgLeDNu@6|5+2M@9D)g2=Nm3`PEq$lr*?;LlDJO7^n{=Ku&g+Km$ zv621;+j*Z`g}$v^fyQC5!7EVw`=a>!#o!fe5C&O?!4jUUV|Kt#XF>0e4@R)(YO#%f z$Cuyn8GLaynSB5rGa`OpIRIC`=ch5fAG*JI?>yTa%)awZym+6ST*U84(7u-kyxR=C zLI!Uj39#yw>Mp*wuKjl-*vUo5MgE=Wd->gieEv>#;2S9Z1{D7crlfiGUVNo}eF6J* zye&81RCk_twZ6GfUw|&lyxwM?Rst#~zODPLqC{YvtDZ)u z!nFh4ZgLmbfY<-BV>A-jVaI*R5y|D8GP%)fwTjrTVp``x)+s=AC~;%0Hl{)>wg!{n zUU0jHM8$p-3f}4sDr)R_h{DovmNhfdZgQOLij6296Z30Eo^}tOa7m-l5`Ki}1GL%L z#N72~fmoy^$0qM0?&Q1+>T$FWkqbULQWg`fW)&Y|f?GyG@-b%r(rr6oeriaKY1rR^ zQjGpqEvJ*pM0h&MAS2~RCqUH?J~3A>Cam?fl0cOss!g$RK}^#sIH&p+0R1OgH1Dca zjSqTo;O?N;vqXGg@{7#FXE1dXdE+l>9tPlb^GFu}MluY+`d*%hgRq4*kPnt6c14u9 z>hf)YcUe#m+8N~lB7`fXd&ls{z%r;pB3r#XHZZ3Yj{MJr}Q&2-ORfdU}>rp*xC1ivjm z#8vIcS8)9`1&l_4aJ2sT7IqF<;|I>KUX@wjX@vrdGm;m%4 z3m9UZLB6y!IrE$!1$Ka^-uAc%@Ulcasl|d2qUmy*L%iUlSgw+XwU8pVk9YH^lM#(e zz75LJ&;iPn{f$Wiv3E}`Hz1i^!6AfhUk18DLu~09a;|)cF8%Xo5^zP}gTz}bVb=KF zCu)l%{AvgqlB})=jx_2JoK?qBez+HNr?x~&yG-nV4YaNml_^? zW~z!5#GnAUYh=k#7y&vE3s&Ep@(I5Gb9Jv4#*)xh)~N8Z0C2T)((P`A3NYRw=-fSm zC=-u@yTZTd9Bh#T#J-f|&aGqkZ2zXp+ZhKw{f4*%xnOU8qfAfBqv$P=-otds zaO(zxC>tt2qK@?i@`=Qw2aC*CsQQUuBeg0$^>MTZAAoQF=5|y2V1xjx@#=MsFP#5MvsHgP;C%eY9hfF&f{FTq`d0O`1EC5&B2z0l4b zQa93I+Z?uDFpkJh{Ptft&k* zkS<&p32H@!UW2)7=f{W*>fp=`hMn^c{3yyhp3t=y_%3A7&^QCSj3-puf2F3~4mKk! zQ-Pv6bkQ=K!wYDxYM+n6N7ba?DJ+X1*ew5dPv{E3h_VNLmUV4JoL=7Ptu9Ff28cBV zC0>#Pjy%|XUK!y`QydA}dMKk(Mt-u3WSAeOV(W!wh~TkNeh;!Xzf-(jcF7<^{kZ7G z!!gKpw;wlhS83TX*uy?|rbU*f8*J;hRtv?B668NtT9SpNGrDNx9#g#07hiu*F7U*$Z6Yw=hJ}U@?LO#mR=_jg-fW=0Sk(CC zsd#fppw79{glF^Y0~d}`Z!55n2_|1)y@i#)VR4v*?K7ktUGsc}OTF)RC@Gu_)5P&tri*^QfY z)q8x{3K|&v{#BeSzX&OHyE%pp$r;dU;wN#3(0AtP!293iR|M;7_vN^K1~Myyqx7Qy zy(|-RX1A{-UmlkN?+^D{#vW=0TwMZ}yUa%m_UiXWCUa$iUYzzGSwhec{O1F2+ zh-f8J-S^RuDJf3pS4Boxu#d3t%@QsqfSRlAh8M1Fy)IQOq@C1=)@5?!!3&Txz0_zX ziFiFNu6s^_(~bH(H#ltCb1C$uAn%8er06Ss^Sb0$D?f`v;|#C4Oky*Ey&BSF7Dl(+*i_@gZ8B0M;5ViAm zZ_iXDn>o7hH1N0o<1Mv3kGknF$#03lYf0@D+nZ{8fQQz6zl-@}=Y7n%i47_iZYwJ7 z*#W#^$%dBs4uNCWEOj4}H9W}Kw#|(b4~@fXAh1Ia<$-7NMf}AUX(ijdx35{hAoKI- z^XJb9L=aSSfln_XhZb!;rB`rx_qzW7q%v?)?pXj@5KR)BfOW=!2^uB)I}zG9^c?jVNT9NM^^R9bb<0$V+4yh zm%H66g#vQIwrm=I_)5+3o6b}LtXHf~s}4V8X89M)wLtrj({KO%`L7+z)%|zMCK+0) z$(2RwW9gD`+tTp$`jKgu_q*t;S{juFpD&%oZ7N#=_o*KA$2$ z5z}?MyR4r~qkZ0geFTU!xma#gpgc^VCTM1K1aIFpyiH`d13S-!n*9z1lE&?{v=&K% z0iM^QY`Y(l@Yqv_c76X z4!021wpabGGG*gdvF~@DFE;5e%~+cbp+0jDB*8?+!6Gi^aa&?ySyBA(0|G8dEd8if zXL=406zHJqYpz`?_W}nfAyYli8{xmy=OrX^k!qeUtAI;>Pm2OoTZ6DPbC7Qw<;8Fm!*N;YUW%s^Byt z7F?Ne=1K_SNg@=+vJy9h^TiI_ak@e%$ahOr#`42#h*wKk3!+Eht@MhvNpS-{Haj@v zb|R`LkSdht4*E4eA>W1|4X6 zTb=XZ{l_|f|HV>tzD2El$d4G$qSEUC5(QT{ZL@q5jJFw{KrQI>A5MR`!V-Z5Vrt>f zTLE^8;Cg;ZbzPiG;;zg%by4->Mp_AMN4S|&$+wy>ab4$v0QM^%0tGe% zoyiCqL|-3h0uG@IAS?eNz>64u$F2&MS`WR?OzozM9N!s0>#$Pu3w5XOptCt%S;=oqk~To8(A+(fr}evSE#xj;3Om; zrJXz)OjI&^$(=T#z>q&}K%I+z_${e_FU&kaJcr48+HWE#{VMV>nu^}*{VdC;HF2zW z7u&!4Ny)*f*Sq0{G!Z`?R%Oeh9+GFlZO z+>cox*dl)S(f*8%L>;`w$+m1p2p6DHbrsFt30dkr(1qdbl`PSu^~P)*1wfoDV61_Q z`e6+A^?HEg-&chPV676$it5nc4vG1w0nV!#KjPnS?!aH^5fwhh}!n9TDq}11xYh{Et=gj?DodS;Vb) zVh6UQXf_R_$z-^Uy9m&IJvpAm;W+HqGTcV8h$&++uJ(WZKjZ`?3SJ&MkZFVO=vPj| zd=)wH^5YvsxB8w^6RsoV5@&(pLmHKTJJ6*4A3P&F84wbDIrB`YXT|&tV~gV%L;PZ3 zeH66V0C~e-t(TVVK@RgviP3lg41C9wseM#{V-lNKFcp~DtB3-yAi@WjhLtWc&YE|ucnLC(a zdD)GN4Atho%xSOF7_%WRmkG(_6(Kq8Nk%)`Ay?`G{{-hJZ9n|i zIbEcY8HZo}qV2^wVI>R(da6@#8RPb2Gd11A$PoY)7{Lb3l_&smPz@hV`VL_GWAp3~L zv$$?H9=MlmwlK9V&5Nw+b|Dc2#YcMx7te7T@ai_IT>sNKNUWgfoVU=aZ>rrcw7Qvz z#@jOXjAxFa;6LulGp_$SYV(IAo}kw?q?)KdHrS)>@!W?QGiqivaeuuEVdVxInCLMV z-0R!a)`U6x&HHpCCIJI(kR$@!LeRQqsNdf2=YAE!Lk6A@cike8!1F3;RPc;O zoZy`t`d)}GnAl-AIgV&vCT?*Rhpg)oW|=y-1qG(nA3`@ZG5gm5xcBAS08tDKF!Y}> zYAWM_u>l^9Jgf@T#$}S1$fGI35PLPvTdF`=Z z>uJcJl(&Vrt%d%dn;`+-r-gC(^X}uohCufnjEJ!?tlSqD{Xk=RDLYMbV9vsSe?(%g z`mZ+@?!B2pI6DF#o%&?~VfkO#3e4})9BU;N{vt)$AUIginhCnzp3z0@!*?@%)ch}{ zHlPFQwk&yqzA5hf#Zv`@xO;!U|HeU9B{#27l70nmcl(rdqxcE8!n+?&^#M`R^ATHV zfC^3Ih8+>KY9Wd$z~eJQs}NdO4_n%RFSL_3-fzIzOo(e(Ww*Su-tRoG{Y|$i+f@Cm zK8zAp87VrIE{jF$I|h}r47PW*O--33Vg4Wy+nit#uwOdX{g^{Trg>lbiK_Rwb=wHK zG71D}RAV0LT6)%u9*rpqVI_WzCk4f=qexlBWo@%L2Ii6fagodgmN>m%{lM%qVJkkK z;f#Biee?haMO+d0RG{9r;^PHefWCDw!9Aq-vy(AR^q9dpwQ!--Pb-~JThs$n|8+)e z@#Bw#26BtOS^#m{TU*=F`(Tp!6{oALa2eB7M}Ofn^IW2e(istsRwi60Y$k&nf_|+x zd(vEr`da>^;)9ncy!n0>#E2DsFC>&daJv;IZ|t6egy;2x_!AaqPC#dE!`vq0FC)a~ z|8i=5o^dcAZY&-QPZ>3mbWl<^`s|+UYnL8+B)>`AaEc-7#3hoc#Z}ZWVVK?dno10R zbf6e!DpygBV?>bM((mIz=KxUTi9)_ba^orOckte%)x249F?lvqm(io+J64ndlU-(q zOnTrIm-U^%{}hUl>JGA*S*-r8w$BG(vq!=FZY-h1D>c&P1hQCWK+90h1AE-o>0Vj) z;j8}pb(DS$$2Q{kfYERcx;G%yJWzh^ogB}hglsKs8#v-)XMdK8`BCEetBaZnpw;N+ ztMO;#-jM*cE7&NIQ+G#$`**j;*i+`xP5-sw*~0@-;)sX+o2%61gY z0MU-=57@v>Vj~G-7lPA!)y@EHr)1{$r#GwG^a^?lt(2ofUqxz|*0ay>UN9 zg!JknUg?jXR|>?LC*>XHa2DW{VE;GP28uNkl{4B>pZ59$o>=*VyM)qT1LaVmPY+&z zl)r6Cn*h#6nvNR(1osg9M@`Fb;rqmVX17ovhNq%E=j5&z{7GNoI3V;ckuLn%yO)q_ z4fA*>O$&a;Ygr-vf}OQlW{X&qxvC6uhxuVT|2H*EG{x%2{_Qms2Zf?Q^WLTq&2yO(XNwv$VMu?IIR= z?F9&7p5L$~Ox?^MAPpRdv#~+W%u<-%v=ju7oeRP(QhntJU(<1aY4LQl!aS#gtGYhs zNvaIpK4`qctD+tzvhfONZKJMqGEK0Kb(!_{sx8=m$M$PrZB4NAM?3+jL`ialre0Q# zjx^~7f1!g&d}9gaa2(RbF*}iTHjddKjJUfaZj{k`)gG2Gbs>(v3MhXb!iIhE>lU8z zWpYTzj$i`?+AYq7)fQu}`qthRMS9m9JbdcOTxcgec>8E;XKQ%fy%4$JRc4d_LoCNJ z=q^a_Y54@${(E))fshjr-eu<@$S^3niPHrWmwrzgvQd!iIU@?YxG!env z1l4hUOnrEAdbdHxfT`_~qeEST1e_L3B&G|buVexB(x_unr(MPla3 zn1|7di_e{%k%RgsG{$axb1%9?ex-E?w;M(;-d{5N4(R8|`jVZQF?=%~I>m7078G=7 zV?Tv$iJx>)bF3!j`)nhV%4|5CBanc2nwo`2osX5f9`Pg2qV9D_=|l! z&EhQd59fb(#BY^Q+gTZR?%OT2tju;#1AhK zw4E7IxK@qLA!uY)&igRV<132xO7#cL$`WzyaGCj{N3L7Lir`-3qSxog!}4(>LQ;zB zm!0m!N_DSG+1>G$FAuEO?0)3s1*4Z5X%mHZ&0C%MX@5ph2=|$U>T{$wm8P)YG5t;o zDu%9q{Ol6MdXva)_Z8H2TICO7iTS{)_#c|0b-8x(X^bX;<{(~Cs;>gK=@({fnO|0n zVOR_wKi{bD`*td4_$n}j2b=_LJO>4Jl^#4d!B#sPYb!lz7KJBo^bfw#Jl9^FB+8Ca$rSY=YD zqKqiK<3nGU1~Hr@9(Fu!3^git9G*WuV%b`dP}zkrZ9TBT3S>9LtwfJjjP?2=G>TJB zjA_>8ezPy0xZ7)|{xP+}s#oo`VHqq=uZ-DrB6jpR9f_D_5%DGFXDAs~x~cQzmHeX} zJyVz*dlZsAF_43zJ#PG9cNc?E9lAac_rCx)CCJ*VijdcTsYaV!AGF*>74K|zgsQL} zaQiNU{AW313$OHX`}>EUtL>N3qghuJ7AS(ootaV|?{|Uo7(HX8=QX77R(wD8L?548 zqnuyA8o_9i%Q|)=2~eMt6K4Oau;Mz}4!`eE4&;#Xou1d?OR1 z=))lRq$cgyH!%0EFB#3Dqsob2e9URO>%(L9IYaIP$R=^coXH}TP_<-@p_BTd`UiQtRlHU+!c z@!)oU3h!kSC|M(WC3VkWtXI6^5TQS(+3T0ocg}$FoNJ$)G6f%3zO2?tUXQy6+VZTK zNuXKR&`wA*fU4DWXG6?NP~G}Eq8SK&QP(3&TV8{wcn7_VRGju6&Fn+>6PO zs=(m$S+hs>OXxp8&0wG%fGN0}Xt_$_(-y_!rfi%T&kOr`sWKTu%#X8*wl1Q}=ljpR zG7pqb2$*i?s>cXt*X%Bdt@z05`L)uC*bnQpJ)%n~7)e^%Bctzzr|nlzoLGk@Y6IJy zjY4R%n;(1Nu7c@#MFodbi)g>Mdi5D0drXP_Tr?j!inMpOFJC{9!4UtQONr73cq^Gf z6WCmd#@6!5R5pK%)17LNx~`57X}@yYZfp$x_heNtHHK^Bd3D6_>=HQaoLjHz*sNB~4(1bl`t);AzF0J?oD7^58NrD4Cbt9E2QgULV;3?OhVB*qkE~yHqO2#aTW^gZ zy6VP_5NoGe`+_NrSj?b(blc(Pn@Mp&)~`841l82>8~! zerYYr9p_XuZt!9HBa_L!Q9{3bCUag1%SM3fquIwvbr{$=Tt?a1h^{jUyJQxrXr?}x z&+25u$U#BT*q?_GOC>q%vgJS_DPQoKC?~S6XnmSzQbW79ROUwIW_0FK@Onc9BC=H~ z9z^~1em104`CbBOCEXEz6hd#lyYfSms)^Ax58fC|=RvKtFU`q_gq*otHe(Gdv@*ZH zH|M7rN- zyw3$t7r9T4NsFWIqe`-)t1)UafllvgBnZ1M7Hl>``kiBC6{&UL&9T$& zO!|h;u1$@G>Qp$&mQu~5Na)(pXnVgv6y19@V>35qV34sXywy$*wtV9p8wh-+o;^2x zG`<3pKhiILlx;wuyp71yLliJphw8TL3?bi)+u(4`Fe!c7qvcpamoUPzD0b;pZ`Zn0xfh+(Vgb}52S zz5Vr0cLd5iTKy$`Nf_qcYpEtbh3L{(at34+diqUqOjBM$pvMCvlVD~+b2Lh(x4p(0LD z{gq5!uCqj;s0fQ`?*R<0CF#P$(30%lz@g_~HWGDDY`62tn}R5l<91InCG^jm>uL*CThZI$vOl6_3C-%%b!v6l z2yW-STuM8E&UI7g*1M3=rs?)%dy^TA7(*Bp)=OccjVo4#z^(E^?I!PQ705XsGQ9p9 z875NK9!W2fkgzDP?AW>nQ|=ZF7teFy<8!@hQNnC!<8IXExon0}ao0}=U)UgNw%q-L zKN(etoE&4*Cs17Xkt)9LIBur$?waKy>X%5zzMfOhFvioP(M+1Xs6$-q9iJ%GdB2whpi*KB@dA}y)*iqq^2Er4c3ka zCQck7VPNu#Z+E%YFcZ8+Of-9Y9meLa|KhO<$57IxC#GdJsB_MntI0lxcNX$V+pLKE zbY^nd|0@Yonw!6cpZpA4$;x+H`$F)tBiy=R=XXpW&K0B^;YHNv=F&Gl~Ax6O%!w zv`~9e_x_*|v4Z|y#Zw2vxsI$8IfN$`!o*U$U^hc@^=0@8U~c~wm0}4Kv%WtK2qT*g3`$g zHItDjys^d;rm^si_n+4_^~39jEPM*J*U;K3pWc-C3~#rY>JD>R!C4GzIWPP~bF#<7 zMuG5E-Q&9NP;0D4?z#XW=T-Lf4vr743J2(Ri7; zh;vL2n>J}mG}Tm~fP1YfX^4ut?45>__XNyPS*YrNDTapD z8qOf*&*;z5Sgxy8AmSTwnS*r-8q>!tni-8zyGi-?FZbi9e0p55>W&JWc5dL_pP38l z%n9bVzIiBp?)B@)%LI(C4;@QcNJ5iPxm`?>JEr$ai0eEt!jzVB{!@)?ofKn3^xx&0O zOq`Hl3Y4EiSD0PB!-Zz_+A=18iDE*Lx$$;If?xNkJGgq;_rYU*R?e|oWDG61%oIIh zLZju~pCnZg^xr&x@J=?+Vq#sbYIGG-QO1k?yXny%FD)C*bOx>GY!{dN6EI-G;m&(7 z9%Z^*w;uZw@rzJ@caBU#W=ONkU1J8YI6q(6NwkOjyN>JRYT~0R#YWRO64MqRL)UbS zAaWzkIrDBL#@&uqiu((Kc24!+;_CpEh45tes65B}@q}(6x+qNhna3=I79(=}DqZWG zK8CsdWY#gvK|gnc#gW4#4D#`4(yvHBcZb6DN~Kfi^j~LnLqHReA@6h=ZHf8l$?uyo zvN4vLxjNKO8`ZfbXBkK5(QxCQV_Z=w2I*;Ao@|UnvtVnLxw9O)+v3XjdQ(u2`}M2q z>o7E4yq-Na8Y9B)J0exW@vh{?DpOk(B%3(iR&gQt_T_xZ@vBGCC+B0)C*O}oU#+!y zDQ(E9jh3QgmBDmz)L90ea`fjaj0kv(!T03y=A@x7c%MH_&e{1Et>%~BixwthaBkpa zibET$JZ$1Jx$|N3t;3B{OhTu^VY#SG3G_Z)qA1*3hjPYgj!wEApjiHFNnX;2_rbdI z=s+@tL#-{>uXzQU)8?d{-`7yjaR2E#b==o`nxCGp@wXaIq6oj^)S3jw^OCcaD zn7_Z3jH$DE6u)dyjEv?z<0w-`%77F{gPJ}J*E#JU&L;dDxR}84jRM7&v(EkVBz&0j z5%s3~h~{HHBmUpMVO0J1)gEgu46(=7)SK6$)1;g=ZmS>^&BH@jsYE^Uqo#GH+{8U6 z&)w8KGFq(59_{H%L08As?mctB=xzIgnZ0i4Yp&VW*3*vh2eb}4FIiMeSY6!R=8K;A zAfF`Xbr?OHb)L7N0KHZz)Ao!N=yQ_^N#A_{nNv{DShHR~xLa4I`5|FUn^?2L4q+Z&+&CG2qhCrt;GlUHuhsn^^ZiN8ej|hD5xWWzQyP zX@PRpN?o@n8qElZ|2!cL!=$5>4H+b4y*zQknCUwvZ*3L&;@W{>SEdJA%h8ySm}^xP zUXKsrciDZXtq6VSDlAJc^so1(iTZ-7{Kc}U2mjZ(q_y~*~(&;*A|lcr|?{vzSK0BlS|_7&bBnKCGSf{Z55@ zwh5WB(;t;;opO30_~Ph~*pZU&NUPdqee@^^UhFI7ZV=C99^SloQk#Ub_4|D}-CE&r z(o(qJPY=@pT#iRJy+ETwaiw9VH_}RbDg)kUYP1l_ z1zmC`kt9?|h=;!FXF!td!5+ESKk+)(*S>P81!b!?9O0@BK)Ug(#5Yg4aGx*9z|oK- zJ#^*w{xc*JI>gkj*!@&QU%vk z5?n>aZ)L3@;nqcsQjdU3c)_ciV9H8?)u-(qKcb2JVW+=fn9+hdYx;slE(e&KN8LF~ z-HFPDLos1UoZx%ylJ%1t#sh?$TOo>P=I}OnqhWcoWYhavK>5 z2ibqoR@h_Bd!wt252Vn^)-1;G^Er(6*amfGkx^OqlEO>AY{{6dI{ z6zhoaBzVtAZ^l%I6ke4!C_QmpM8@!Cs(G6>GW=e5_^sEKE`M{x%7p0W^h^Ep*6jq| zZ}D8kKT~RqN)9R0>>=zaHga zXak!t!?QQ}?kGGmHX$`p1M~E0)v9XF2 z^+}LZ@LwuOAmOTDWB5Te3JRWmupZXg1yA)ZSuepx?3d6NU)MLBAmdS)b4zArABCBTd9z@3vUfk^$C;CC^-X4j7K$|A}PIjX1^bR~J zr~})%Gwc51rLm8gg~XV);8Vft+lSQ7pnvje{Uv&Fge^H%Y3GFqA-)+jPTsrNKz9Zgv{!O%yF^0%+`{atF*QUepX&;2w?n@6gIscpFX~Rq zzNU2y;=S~V>Koi~$csAA_nEAZ`twYa!5Wzelzy`*lZaDs4&(Cn2Xq)_TN%^!s}-Y- zIZNl5mJs4={*r3uiFakEzMnqEhJf_O^v6X0=DaO+*tRT*PTG-@t!FRbjCHA!m{mEF z70-#T*W*DDT^%!}nu6eyeHlSKPw$1@l?Eo{)K&yV|=EMC1tJx-AB-Q2w*2z@sn7Q|~+ zVEC}VV0iKq@vt)PD^tnQ4wLtFEvc?&6LYuyI7k@ z=u!IFuKL1xoc) z1at_7>R%T?(056}19c?WqWY`i#aW@`2xEI&7mzHYmNT4Mim_Km*EYf?}TjKb5 zFzg#9PWPFDqA%ZnT5V%Pu}5}U7Ar=FM@Mm)khKjv(W?W^&sV9jNb&5j*H_jgb^+u8{hh!PXmgFye4IhWwKI>vLp1X)_7NIq+u?6*m{NB7Jad;S| z+J_3TVWir%>#V_hbgzo76>>5`$w*@D1z|Rn-amY^F^mly45kZK1aB~UtH0tmai$*H zpZeJTH*WgK2JsVhqayT~#vS@>w0UgXb^53Vnqz-GW{~SdL)z&tBZ+-FLpk*^eCa~4J(Z-_Bm z$h&9F2%_kaQ+lOf^|n8S>_@`e0pHT&y*p6T)*i&r#|VmQ+MW#CBE0ePizAlMlMU%IlJEOZXR8(k1*WSRba``vQi-c@R@_o;A6Q4=wo`>6yAJ4SdBA{*fl#R!X;Ge%I zD@E23`nEY#QT?qmMC~P7-q>;>bx9(1)zPo;y(V#c^;j8-U)^GhZ~K9gwc1Sit71?x zlk{j_%K`5MoZ~*n6TEM&MJl7EAd1NMxB?2B(6F!Rgme)P;tih&ZQd)2+&<+?i+U7L z(nY^D5;&o{J>xWW-3G+H*T@=+i$tPQwzSg~eVjXb%YOG;6_m5c4Je*11v!XA{>M9l zcWjjNQ9twzr_O6v@ezFEk#33FMX`C*H>#OiPEg^P!D__nOhQt?zC*0aWYk?-2$yU$ zg7w-PavDs&!E*)hnF{F9*LUDpWXHnJo2C`%d^&(5IS;OVkn~oadubsJ=wv7XlB9U zeFP6bt|{lkM&M*tC51Hrg*fnGTB8__OZ%Nm*R9ffwM$7N_Y@l@3K{&~?_a9qt1 zlXBUQP~E`p(CvhN&h*OW9h*fT2hD%gS`{>@FY`a}-GFwUjwj2+`uZEndxrT=Be+59 zu%;vljV?*?Y?d>K3%MM3-jWALL?1336rRA1q7@cj)k~2R$YZrd#us+4AIO?NtV3?& zQq^zUI#}h@nr|P`Kw1cw&u?7{G$)^zF=b!H;M{_Pdh<8r2RaD*1*u~|o>E-4n2HZ~ zq%v~%MxwESZtd1Xf(Vm5Xhg{+^4mw0(OFss6(f633;yzjpftUH?WY}xRS>^8G4>Eu zb<C2BTac)et~?Tw zv)QPM?TEKZVZ_Ud!V|Zgqd?mxAn7jWfWpH+XBwOMA??OhzDb3^8Fqz}&NH>Bam}I+ z=@CbEQ0B<2v;pc=BH1SHb0X75hMPGy7kk6QI4bNU;Ayf;(ujE_bXl0Fdx`z3{&l|1 zjVl>_wmS{!s;*n4yPzJheH|AL#NJETlUe$C*C7J|nGNtN&qkR2t$3V3!s9@gr z+qhu^ysLMLn_8FQ{xxJA2_XClDL<3lL4s8>Kk!j2r zaVm)i)F&oR&oT$mM83C;rhEdvA@{`B-_pfhK0S|z^x5RyLeQQ{J@Uxu}8*yCj2+qXqZkxJmh zvjL;mH^?yJ)cAU8*hRWTs>Ldjz*%3TNzv%CQfZo5ZhbJ(zU$@Q6uh$xJ~m;`8VOz% zwIfJk$dL`=a%w+*6ZslvKd^SY&u2tj)p)V&L_yN=obW)yay(_|opSgVLf}DgUiR=j zycUlsI4Kf3Q}tbz@a`YjV6s1LD^WKKC04i}KgEd(8!pig*S4U?=o)SCE}`3RYd)B% zAR$wAC}1(w7d49_isLG$QC6g~`1tbz9;R2_F;VJ62E&aQXKfOo?)x*D7%xWMg}!Eo z3$mS$bq;DXp=RakO;X-6NTJOuDzVhyS-|cyL4=>TKUf=QA12|J?k1D%?9<5oKXy{#)a_tm62gu9v)`7pnBJma>7_*C zmQeKYn2XK7#?we;83s@92w?uA}_bcrR~3Jxa`}RX#_A!7HVgbDYp+(Vjxo z-lr?jDt+Pm(KG=>Ctpgu`hbGg_qCcFiSxK87uG1LY7Fk|h1{D&{OFS!_Q?csB95Y} z@a)@N6fgG3E=6RZ%raNA|JY+xbT;K*Z1;hU%oU5r1TJRX66sBQEQayT3Y)jF7sD@{ zW}CWQ2D-mf-nJ6)ZWvNir_mYVL-+h-(FzFHR#9QLgYY+U z4X1~nk_>pmJf}Og3@oA;kZB1qwjO8d>zucpV45pu~Qi>EJ zzdA;>4akT-?(IHeyB+0)n%X}~2NCBW7`*>nClWUMapsiBz$Mw&KcB#%lZJZn4~X&e zhNiMhelw!S?}u>r#SFv<7?9T;<-uOjDGOm@y&p$<@SQ6pBT#Rpv9%!yKBE2xrV(Uh zISrX@UgAN(lD}NxFa;HMClgJa#IT9$YndV+4X@WaE6(VLLf>j=@+)sMida~Z&MjEs zfluaUaY7fV>U{CIL#$_6*$o-PL4Abvq+1S9lt8Pyv&x)T2Z? znb0%Wq8?F=pcT*C-l0#dlcZzk{p{TTes4-T@W1~W!2f)J`uDl+?{m>v{%6GB|JbiR zrX%aX#bz?|Bw0q56|;2e=7gz_vd)D zYyWlp$M63<*Pr%3`~PYG=l(zE|I@Gk&+otDLMNm3Z*iiNx$#Gv|KHnaYBo+3A2s|} z`(JUUU-4J_?~e~NSQwZa6Y_|}M*Oq>ZDg@EHv8*)#Kt!E24=SZf8$k4dt)1e>&E{W z*ZyTRGq$*HXY!AU^KNnX2T>LY@N?Qw?e=coIEQ!!5)=$5A_{__D1s4?21En}K|rD)StJPx zNKgbtf&>9Y0R;(?RgfT2hMaTU3D}t&Odu-oIOo6T)_JGi|IWGp`R}WDtDLH}XZ5#w zdU~zt>6xz8Ya4Q4Fc@YG3kx%bndL91ysJNJS8FZ|hUp3FtKRUYQFa-cRLvcn!Z{H6 z9I#{OFG8n#oNwltB{X~?#wJbV71WjMRNuT+jK~uD$;xMJpm;+?h0V!sG_WUGmjzS1r(_xV^TY zhZ9wBJ-eh4zzieJCx{k(0jMra3R&Ja1XD$lP>|??I)YL-R98X z-H7FQp&1~%Tq(@k{uI@esj&{-%7%fnBWk^~X3!_$z1cPD6wG<#Ewxtxq8X`KUoSWX zHHT^&J?PA6$lXdz_i7FFhW`j?ua!cbwsqk*T*6@Vu92ic%4&a}<0ae+{Lp>dNA#Mo z9drou-v~{*1{0JDfi^`x)Hi2uRTKM88-3HvitWTe8Q~pm9b9< zzxmZ{cAF^FRSoc8`e=x#OdZxozHNe@JLi~p?%0ZkwYD3?PNzVfc{H3J){NcqZ+rC!)ITow7I)0|nI@FXfkRBg)?5 ztGXE{Adf@u48=zUHOt3VjNdQ<96O9Ye;WhQ*G$UB29|+*F=1)W_}On1A6DOcfoK!>c4rpis_&j3|+tR;<<|ALz5##+()_{{ebd-FSRlntq$Z;$83QFdoHj4JhGtUQg*)4T?;;mq8+mq+5 z&*M?bocx~CsuMuZRi_GX`GLCk9(Yt!;R<7)Yq#>$e1Wc>4$^aRVVK@@-@M~v2^zG- z$cSFP0`+GCPZ%BSM-8W5ERh`hf%fRk*8~ANih1=-SJrnLs0EyNuOI3~q>}q%lO7t- z5PvG;l4>m?R!}%GSLUGNg}A?Z-h0&5q-)*CZw37i4D_{2FCct~RkCg`H%X6;csXnl3h1e>P|w39Jx?9m8eU(8&V>EVPHk@A&8 z0{fx1+eVIsM;sVa=G{D{36SwHbUJr&9I)e)rSeffQCDDK$|>dZ&>uGX<&f4+L}7Sl z>`Wa)ZHqzEz2D1F%p)kLE< zbBbi&Nz@{ovGt@v6yRb)$qkWAXz0}puk)k;VEIlk&DvqmphlV5VRdEbu8x11DDo5y zCaBHW9J&s5gA=speZ#1wr*GT7iz?8?v9y2aYB(aqOg^&ge+V7+`AkkcPtd@qX_6OZ z2lU#P`J~_rp(jz(v-}hVa7DPj=qwV#pJ~69(Wwc|=k*zeL)q}g@YGLTX?CC*es$Pw zZ-Z#z7l{)4&!W;?7e4hcRfKbpJ74-%9~yt~a(7wnKm`ev)x4%BfJm9I=zZ0Qa9^BN zH&iD>S3*&R!nil;OI`cojpZl|9_G7BO1O#$s-ouBT!+w0y|IM*I##IJorswZ+ySKG z4J?jXK7h!V__@cFR_!}p+2x}GB3nBr9@^l7vi7HY)P|7|;k2ouncovA>uO%BwQCm| zC-(ac8f-&&@1vM4=e1DOMRYbSSP+JZG~7qRS=5_d3fpX(sII} z;d*;|&Dz!Rw>sG4nLG;vS6O<+y?YTc)99JOxoF5wH{z}g)j=PA1dFtB>jI9epyadw zA0oy{hO4CLL&ev&9;_A%qTaWmMF#UD)O%5aKCps1k9Mg9$(6&f4qH84x*GNSRQfl& z9)&)+cb3-HbSM`;8le)k9>^~@x=T1&qptH6<0*X3(EFUQ(M90|8f-5X7(0Cto(OLc z{Bdvwji`!Amx+FW0zs`G*7@%c?gv%&=C%~*a*BICBKa6KpY$u3GnWJGz_UvmT3rxM zx2oxBfDzQD^cFIvZlE6H1a^gwmN2BsnV6To1W}ecL{(O?HOXF& zI>2(-$vZ zI|WV08+v-J8iA_VTzD>m3$NazHz@!rl#MpNU zyCo|SX`7zmq+JeBUWmSkK6DHXb;Yjb2zw4Kt>+#;;`c?#nA3ey4#mKT)@u*;8$r#* z($>y{I2hY|*hPTL7@`vN@{=##1NyMB>CM|85zRla_JhAWwEJv7TKP;Db!)V99n&KK z?Q`Cs7N{edd)G0b9sV-j*9BqERtmA7UG;}LZ62G9491)c5InSTBqMHBi;(P3q~xH9&d0UaI)< zMnrfWbHTb$eAV704$!LH(6qzs+8b4G(V&)^-w&NFs4?B8aE;tDP}3sBT&>ts_=$ELw*~4J21?$hM;9_r5sh9fF9^Du<+}AE53dqGwWP38JM6?M@n@<%RfulkFY=yT?#fDJuiTA7GYw`QHrJwH+C{u=2zDNI4w zMf2=;d#fdLN#R>mwdwxb(_y#ox0u% zW!^Vdn#K#Dbq}wicpe?-(#M?Uw{1jCJZvf7_@{uD7^QVmh8b0Qkl!xW&j3mC{Y>}i zNkkIZ7?Mm)fQmDBqMkLWBZh1XhLczi$b|O<^G+W`N#1$OM7$VkuH4mRII$qymY$Sq7RfoC7_ zUXu?fs3C6tK$b5j^zPz)8EQ&Fr!AUHoGFEddzlJ;(~H39oAMCgyMS>1 zIS%F--teL0;q8OVEGYZE@5S!nyU?s~Nx87z``(YP`aPVa2eo)-2Z7oK`E&zlJow9WDRB!nVrdY~f^cbM>6}KX{f` z51zmB{>HQJrj6s3YtC-J$Y10y@)!Aw{6+pEf04h)U*s?He;)bU4xbD2*J$9k0&{laB8&G4DOK z#xVt^rNm^G_H)8W8q0a*92sC>Mdm2QBp9Qg)Yo+Mg)#qJeV!OEm^I?iE>sYP$>U<@ zRf1RbF#1|0Ztxw*wqnt9wWBcgQBvNxX>JuaS1>WIffjDD*< zuM+7248O8Pf|(4AdBsk%9oGO-skAD`v0R|Yty`9$T!Sgan>ME(BmxcIl_xmc0)-l{ z$j1l-G8eB8Yhw?Po2#wN4zB~Ek_~pw?J&@}(^}_+y?|koq10!P1@tK`KQ*ih(8QSL zxaX6A(%T@+CPM~NTSh=q3Q)IVUkfxBO6OQ=157x_z4~--JB+(teS6{P>iwFI zH9oP4ged`@*;&U_7<+Xop1vs$CU9ciYxu`t#%8;xUF%t3_jq} zO(3TvXT;&zfO6_6w)yz6)$x1a=;$#4RNdV7@1CW>1o1IPu6P8{f+T!L-%kOV^`(?i z*endWT|NFW@(|E%Qq(rQodCM{1}-i$JE$-_eBCtn8&KUV-0gR*_J7|s^zv~PARAcW zk`^n0QfPUtYxWb6=rYH`6gYsczKLmXe+1AcIPaashyhM}a3J(AZ`Jwkvt+Jk27>R1 zLc*9MjHKE*J;+c2(vQZfMUjJm1NVhkOEQdn!gScDHUnuiCYZOJ4s^>DUKRrn7`5To z>E^NkQs%;Rsz(8kR9i^p++Tn^scpVwvK~e@F8E%JzX6PSPd7e0t-ri3{h&j=31HqzQcn&?H<;<8x4+vKk7w?6@t zPy3j}?tTT*<4+Mk4yyun%_EjCTjYW25LVu=WCbL}9a;xSqA>iXQe15dGms9MozL@m z1N3iiVyt}nfW(@4>+3;I7|N;aPWrO?98IKrg7@NKIOL~T2J-+=;tj!RcLUJEqa^SK z*MVVty99gZ88Ci4+PG114}3H}3k(&rH80Mb1KX}EyvlmJUfw!C~7PK1byC ztiB5M?WiD1wfdCG2Gq;7=z7hA6A=o{Mx09fzlQpv1d8B~qnnzbR!VPAq1_VD_&A&!g+&n6?cC|Y z)1Oe1gmTuUu_W-49!d&+=zh$K&0}7>))vl;3wGD z-@lDXcUv!wDC-CpH;%HR3`sU!x87|~HT1Q?ZhseyW?s8tXlw~J4C63mE+?RTj&8TV zyc>;dm%e+iiVJ!63rLP1G)KMq{#+uLMWAkS+l$xt+R>QOm*`G|*Qk5TQmUqmA(~;+ z5iBoIM1+d$uY-{Yk=MMQ_Ve{b1s1t8oeQ3b<`gT<5~zoYo8Ip=*LOrD{@@2M8)eZu zqvLmKGYV06`4z`+y!=q7%QJH|$QX^)?49v^^%(W?kB6*q>!5lIyvY$3FX-Fg?I1ri z2K{y6>*p%$V2lP`88ot#@8r|;Ke4Zl1_1A5KD`hjjxQ67lDFlC8oe5PJfg_ds0{hWbwzY>9siO%J8KpLnmXyJ0P1{6u9m zxW}QWK>Q#yN{G!pXn%o*6Hz~tbS=Ek;4}KL+Zy`lIf-igaWJRfFun2C7~~`ybT|oN zfigc&nK^bDO}H=~DXPVxt{^_?`j6kyD37{pNZln=b}}ktPgO7)6MB04)Nlu?tKxEN zQ7VI)Dm}Voku{979gNlSVu9kQIngir@`p; zqYg>!pF{0K0)D+e!lD16LH_pvH8f;ODC)m9k4meg3qM#3p|>GQ+ghUQpr0~8V`J+< z1it5)H#di&_bk`sHJ=GV3cZ);$}|N;y83>b?}n(1!m?L(bt?%hgXrDMoKwNd zH0U?|kf@BMApCPT6C3Askn5M(??Z@1y|sw~Q=&$YdGmg7{opoecWJ-H7%&Ce$)e2c zQ@*IIs^RQ-TNw1d=PlwS>p=I(TwgD4X<&ShE@UOhLB86$yfl_Vz)sq;4+}V;?h^L% z)c7k zsJE*xhHB))aYIca= zfBDgI&5I~B2*d3ekRahOU-Y@qQ z`l`0}?I>?RMLkL@WKT8dlc|5aCruxRxYUT$A3RgIwqwCn_fD_D6%@P!n zJhBf)9#0-#|0oy{UKUI3vyVe@*Ph4Ta>bzji)e?ZLWfhN9BTW#A2(6H#e$&SkS9Ed8o6;@?QSmARKo;oA8s|qfJ*?>(W1}Zu&PtEux0{P|Uq0L^Ss4q1rWRA@o@>Q*~ zWmC7K!FG~Ka&jX0%P}i;_f(;g8`e~}peU4gJD9D_bqWzOM5+YDnNjq!(VSzNE|AH) zutQ;69uPzCJ5`8QBHWFFnT4`AND12-sQ*(?Xp`+x4U@RZx-sp44L;W6<+$S>!hNFeDxtjn<}Q!f?Xcz_I)H zAnjUa?Wmsy5Pi<%Fu@7j)JX9dGbJL-5IyD%oh!x7Laky zv_z!?9T%FW%Mih-Yj;5S1j;0`h%6mWLIe5APpYil;FUiA2g&dX)X%HEl(IVzUf%TD z1lJ6~Pm4GxmQV!)2e?Ul6mLN}XJCuogglVHoC)IjL_#6W!k50C;{m+*1=i4Yd63M7 z*&VGe1jI(%l<;m1sA(F@E_<*VUnoe`HlEBzBT=caBCBPC>ogq@!a74_BWf^X`oB zLQpYn$~C)z0SdR#)2Xs}M2hY9s8gGTI*F9c53AY`twgYsO(_NCJ2u_%`TPW`lyX(8 z#<5S54Zc(UnOpCN$w1lyK_JZ*K6Hvtzdp=B20_bCsgJ*@dBRaRDz3a~*R2b*F zJ1jU73L?to>hk%3PJFmcO)y|}z4w-4=&PbPB?_0{+-^dp@BNnwYmH&p%SgN`u1{rt`aJr9Q@K3v>k?QIs2Hk zBha`dLn!5nFzUF?P0)Yv1*%nUek?eA3TRT|Yi=d*LD9D>Osr-2lN*smy*`cJ>_)}_+?)rK}@(E~LDcy^nOr($VMP)+8 zeBFUQw<(}3B?j~z?m^U|u?&x?PE?|nk@=j&gQgvsk}t=%BdoYpR?}PreAsnC?vUv> zpvmWa2u*m67`L}QuDV@~nj9XNs&6`iMvbf^f?m;4mtcT&y?zaX zac@I?Kg|UFE!v>zj=T%uUMw2@nl(}TgMoT;FYyhI9zjp$Ji5*XuKE`nSZQ8wi6VGb zvWo>)_m>VQx-KVkpvsY52QX!17+}>N63q@keYj4|q_-OIq3ywUkB@kiw^p!!fin>X z4?Y~-*mwky3>ZUKGh9%K(OvhVrykJ0o%8g~oFJe}8#nGhmjyNPmOGVO<$=z$tia^7 z2W%ZZy z6>Y&HYOv!&TsIyySgft`XsbkySDDuTc<%?;MD5UPYVwG%%~L+Bq7ou2b?0|X@Id>h zu9;dwD=-ELGyVg|QEi>5N2Kr(==r)?!l&{+bhPGNW-J_o>5bJ}YK~SwId%+gi2v6e-!^cef}B#uakeF@$i^0+xTf<9((QnD zy!WN^Gd`ebJ0CDpjRfk1>?Cu^98ez}KEn}R0@N3^%w3wrK>cPWd*+QQP-d@0&fmiT zS+aeN=~)e+gkHAU7~=+1b^*Ce(>p+l;b_Ij^#Ijn3R9`&48)t?^a|c>fZ_MUT&+9w zV5p7rvUkEm7;&7uckwm`Na8U=uc2g4t(#tw|U0wU|Hy%+Cw!O+XEY1OitraB}+)31kyA@MGOFP(+m7 zOHM@qL$-utnaT=ed9v*~>kB}UyzD-t^#Z8PTNP~_Re&-VJ+l6SInWIG%@$j;fznb? z@G>S0=xZ>(&nylBnKZVQYi%VAnxpzO1aWZF$rV4@7`_SLrd^=F&Z!G59uY-Z< zPPTNO8Nd~+tlMoO0sW7wjjrU@0X{e)cM!iFaO?Ym_xe%+SD)$hYWz72hlY6YjeEmD z4_5>$SsrlZtT7hc9e}qzbCyld9f;-b8A!T@XhdEq&xwL zV`_LK)l+~sIihuW*bT6@2k(D#ECK9c%-fs>YZ%#mSaeIS9N^PLBFcl)04rsTj&nFb z|2|7s8{8ovV5zLO4_^Z=Q=fMSiydIecDcM_j(~ftS<%291$YDFOgF{LfEPdT&N^Y8%W z_9j(DhgP84=jU|>D+A@-{P`We-axV4fOm`757b7?#$=zHK((7QsFKhJN{~b4^q@SD z*p7FMtj-IP;Do(w_$t1;5Bn@Z9w<`&W6w(^fLu!vZ~KrABbD1WZBBj&!&Cc9i$vOh zDmo-#u9Xhtv`>9wRhxh$htb(O#R8-yj?}#`e1XjBcDL#<@2dZ?7rOT_A4W2->~|KI zTJ;B^%Qsc80qJ#bzLiTmkPWojJof|wDYklk@4IOrS;(Y0pEv@;PgEw)3w32Zl_l+VhR3VW?tTrYLUJpK8ptDcIKlL2A>B zM-N{BKF(>#Vq6&rgKwu^pa>wD*u2jxmw=%U_pYBMZ-QZtb?51{ ze|*_vbHl^J@#f!yR@XgjZdhEk`5U8dU|?WkU}k1wU}6R_g@FV+5c2`C5d#$1pD8>p14IlY z0{aK3G=}`qP%t29&O<>kAgJz=r^+NC!VteJ?s~B#R-BN241M?Hz`*`0#GSap0VYqh zxsO(Xz-s%;#$bR`-N~6CFbhctHC~>jfr0%?40ZVJhuUlZ7`y#A;|ona%zlFQ5osQ= z!2Zn{5I76-H!gSB-y|_ypzb8(FD&MQ;)T&65{;jU##ce*+h4hwy3*uj5}f}4Ce6YG z;xn)?Z~|%8yu{qpVjx3+0hBo*f?RGcLGi_jxdl0?P!XPj{PNTyR58Xp7^48jD26ha Xi}Q+L%%Y5ZAoULbEGc6D4g>%I^XYoW literal 0 HcmV?d00001 diff --git a/tests/comparisons/small corr/knockoff.rds b/tests/comparisons/small corr/knockoff.rds new file mode 100644 index 0000000000000000000000000000000000000000..1833fa6379c67bbfa577f043d5f3580494db4187 GIT binary patch literal 350 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�zx1(9y-TJqfi{lnIm9%D`meBL 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 VUrEQ?_It4N{{VR!ZaN8X008FttBC*r literal 0 HcmV?d00001 diff --git a/tests/comparisons/small corr/liu_full.rds b/tests/comparisons/small corr/liu_full.rds new file mode 100644 index 0000000000000000000000000000000000000000..affe4ef5e2cb81c202775cb9aae040d280f8025e GIT binary patch literal 42553 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 VR|I1gW#j{?e*jaCV*m~W003T@axnk^ literal 0 HcmV?d00001 diff --git a/tests/comparisons/small uncorr/knockoff.rds b/tests/comparisons/small uncorr/knockoff.rds new file mode 100644 index 0000000000000000000000000000000000000000..8cadde01392b6c09ad0149ef139aee621c71262b GIT binary patch literal 357 zcmV-r0h<0FiwFP!000001B>8dU|?WkU}k1wU}6R_g@FV+5c2`Ck^KV(Ft9&469i^4 z-~je_p!6e8l}SKke*wyWSQ0Dlda(p9{s2wiMTk6{{{c#0HUz|6aesvhpX zo2c^8cwuyiga-wLpNYm-LFL%wp^7o)!59TFMlqDZT%1<~V-{uP1F3%ig$F6Y4g>%I D(g>c` literal 0 HcmV?d00001 diff --git a/tests/comparisons/small uncorr/lee_full.rds b/tests/comparisons/small uncorr/lee_full.rds new file mode 100644 index 0000000000000000000000000000000000000000..d740455cef4d37094ef67b489e66317f0a7aad25 GIT binary patch literal 15719 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 literal 0 HcmV?d00001 diff --git a/tests/knockoffs/test_knockoffs.R b/tests/knockoffs/test_knockoffs.R index b40b8f6..e4b56ed 100644 --- a/tests/knockoffs/test_knockoffs.R +++ b/tests/knockoffs/test_knockoffs.R @@ -31,7 +31,7 @@ compute.knockoff = function(data, method, q=0.2, model.free=TRUE){ -test_knockoffs = function(nrep=50, n=100, p=200, s=10, rho=0.5){ +test_knockoffs = function(nrep=50, n=1000, p=2000, s=30, rho=0.5){ method = "knockoff+" snr = sqrt(2*log(p)/n) diff --git a/tests/liu_high_dim_full/cluster.R b/tests/liu_high_dim_full/cluster.R index d8a6ce3..bc4ddfb 100644 --- a/tests/liu_high_dim_full/cluster.R +++ b/tests/liu_high_dim_full/cluster.R @@ -5,8 +5,6 @@ args = commandArgs(trailingOnly=TRUE) seed = round(as.numeric(args[1])) outdir = "/scratch/users/jelenam/full/" -outdir = paste(outdir, method, "_n", n, "p", p,"_", regen, sep='') -dir.create(outdir) outfile = file.path(outdir, paste(sep="","list_result_", toString(seed), ".rda")) test_liu_full(seed, outfile) diff --git a/tests/liu_high_dim_full/single_R_run.sbatch b/tests/liu_high_dim_full/single_R_run.sbatch index f7c3008..2d8e326 100644 --- a/tests/liu_high_dim_full/single_R_run.sbatch +++ b/tests/liu_high_dim_full/single_R_run.sbatch @@ -30,7 +30,7 @@ SEED=$1 # cd to program directory -cd /home/jelenam/R-selective/tests/liu_high_dim_full +cd /home/users/jelenam/R-selective/tests/liu_high_dim_full module load R/3.4.0 From bb1f92fce464d3e3a043eda3854445f045539f73 Mon Sep 17 00:00:00 2001 From: Jelena Markovic Date: Wed, 21 Mar 2018 22:23:40 -0700 Subject: [PATCH 457/493] added cluster files for all methods --- tests/knockoffs/cluster.R | 11 ++++++ tests/knockoffs/single_R_run.sbatch | 38 +++++++++++++++++++++ tests/knockoffs/submit_R_jobs.sh | 10 ++++++ tests/knockoffs/test_knockoffs.R | 13 ++++--- tests/lee_high_dim_full/cluster.R | 11 ++++++ tests/lee_high_dim_full/single_R_run.sbatch | 38 +++++++++++++++++++++ tests/lee_high_dim_full/submit_R_jobs.sh | 10 ++++++ tests/lee_high_dim_full/test_lee_full.R | 12 ++++--- tests/liu_high_dim_full/cluster.R | 2 +- tests/liu_high_dim_full/test_liu_full.R | 4 +-- 10 files changed, 138 insertions(+), 11 deletions(-) create mode 100644 tests/knockoffs/cluster.R create mode 100644 tests/knockoffs/single_R_run.sbatch create mode 100644 tests/knockoffs/submit_R_jobs.sh create mode 100644 tests/lee_high_dim_full/cluster.R create mode 100644 tests/lee_high_dim_full/single_R_run.sbatch create mode 100644 tests/lee_high_dim_full/submit_R_jobs.sh diff --git a/tests/knockoffs/cluster.R b/tests/knockoffs/cluster.R new file mode 100644 index 0000000..352d2e8 --- /dev/null +++ b/tests/knockoffs/cluster.R @@ -0,0 +1,11 @@ +setwd(getwd()) +source("test_knockoffs.R") + +args = commandArgs(trailingOnly=TRUE) +seed = round(as.numeric(args[1])) + +outdir = "/scratch/users/jelenam/full/" +outfile = file.path(outdir, paste(sep="","knockoff_result_", toString(seed), ".rda")) + +test_knockoffs(seed, outfile, method="knockoff") + diff --git a/tests/knockoffs/single_R_run.sbatch b/tests/knockoffs/single_R_run.sbatch new file mode 100644 index 0000000..2d8e326 --- /dev/null +++ b/tests/knockoffs/single_R_run.sbatch @@ -0,0 +1,38 @@ +#!/bin/bash +# +#all commands that start with SBATCH contain commands that are just used by SLURM for scheduling +################# +#set a job name +#SBATCH --job-name=job +################# +#a file for job output, you can check job progress, append the job ID with %j to make it unique +#SBATCH --output=jobs/%j.out +################# +# a file for errors from the job +#SBATCH --error=jobs/%j.err +################# +#time you think you need; default is 2 hours +#format could be dd-hh:mm:ss, hh:mm:ss, mm:ss, or mm +#SBATCH --time=5:00:00 +################# +#SBATCH --qos=normal +#SBATCH -p normal +################# +#number of nodes you are requesting, the more you ask for the longer you wait +#SBATCH --nodes=1 +################# +#SBATCH --mem=4000 + +# You can use srun if your job is parallel +#srun R CMD BATCH ./rtest.R +# otherwise: + +SEED=$1 + +# cd to program directory +cd /home/users/jelenam/R-selective/tests/liu_high_dim_full + +module load R/3.4.0 + +Rscript cluster.R $SEED + diff --git a/tests/knockoffs/submit_R_jobs.sh b/tests/knockoffs/submit_R_jobs.sh new file mode 100644 index 0000000..4d4b4a1 --- /dev/null +++ b/tests/knockoffs/submit_R_jobs.sh @@ -0,0 +1,10 @@ +#!/bin/bash +# Setup bash job headers + +# load local environment + + +for i in {1..10} +do + sbatch single_R_run.sbatch $i +done \ No newline at end of file diff --git a/tests/knockoffs/test_knockoffs.R b/tests/knockoffs/test_knockoffs.R index e4b56ed..3ecb2e3 100644 --- a/tests/knockoffs/test_knockoffs.R +++ b/tests/knockoffs/test_knockoffs.R @@ -1,6 +1,7 @@ library(knockoff) compute.knockoff = function(data, method, q=0.2, model.free=TRUE){ + X=data$X y=data$y n = nrow(X) @@ -31,12 +32,12 @@ compute.knockoff = function(data, method, q=0.2, model.free=TRUE){ -test_knockoffs = function(nrep=50, n=1000, p=2000, s=30, rho=0.5){ +test_knockoffs = function(seed=1, outfile=NULL, method = "knockoff", + nrep=1, n=1000, p=2000, s=30, rho=0.){ - method = "knockoff+" snr = sqrt(2*log(p)/n) - set.seed(1) + set.seed(seed) FDR_sample = NULL power_sample=NULL @@ -56,8 +57,12 @@ test_knockoffs = function(nrep=50, n=1000, p=2000, s=30, rho=0.5){ } } + if (is.null(outfile)){ + outfile=paste(method, ".rds", sep="") + } + saveRDS(list(FDR_sample=FDR_sample, power_sample=power_sample, - n=n,p=p, s=s, snr=snr, rho=rho), file=paste(method, ".rds", sep="")) + n=n,p=p, s=s, snr=snr, rho=rho), file=outfile) return(list(FDR_sample=FDR_sample, power_sample=power_sample)) } diff --git a/tests/lee_high_dim_full/cluster.R b/tests/lee_high_dim_full/cluster.R new file mode 100644 index 0000000..892ff47 --- /dev/null +++ b/tests/lee_high_dim_full/cluster.R @@ -0,0 +1,11 @@ +setwd(getwd()) +source("test_lee_full.R") + +args = commandArgs(trailingOnly=TRUE) +seed = round(as.numeric(args[1])) + +outdir = "/scratch/users/jelenam/full/" +outfile = file.path(outdir, paste(sep="","lee_result_", toString(seed), ".rda")) + +test_lee_full(seed, outfile) + diff --git a/tests/lee_high_dim_full/single_R_run.sbatch b/tests/lee_high_dim_full/single_R_run.sbatch new file mode 100644 index 0000000..2d8e326 --- /dev/null +++ b/tests/lee_high_dim_full/single_R_run.sbatch @@ -0,0 +1,38 @@ +#!/bin/bash +# +#all commands that start with SBATCH contain commands that are just used by SLURM for scheduling +################# +#set a job name +#SBATCH --job-name=job +################# +#a file for job output, you can check job progress, append the job ID with %j to make it unique +#SBATCH --output=jobs/%j.out +################# +# a file for errors from the job +#SBATCH --error=jobs/%j.err +################# +#time you think you need; default is 2 hours +#format could be dd-hh:mm:ss, hh:mm:ss, mm:ss, or mm +#SBATCH --time=5:00:00 +################# +#SBATCH --qos=normal +#SBATCH -p normal +################# +#number of nodes you are requesting, the more you ask for the longer you wait +#SBATCH --nodes=1 +################# +#SBATCH --mem=4000 + +# You can use srun if your job is parallel +#srun R CMD BATCH ./rtest.R +# otherwise: + +SEED=$1 + +# cd to program directory +cd /home/users/jelenam/R-selective/tests/liu_high_dim_full + +module load R/3.4.0 + +Rscript cluster.R $SEED + diff --git a/tests/lee_high_dim_full/submit_R_jobs.sh b/tests/lee_high_dim_full/submit_R_jobs.sh new file mode 100644 index 0000000..4d4b4a1 --- /dev/null +++ b/tests/lee_high_dim_full/submit_R_jobs.sh @@ -0,0 +1,10 @@ +#!/bin/bash +# Setup bash job headers + +# load local environment + + +for i in {1..10} +do + sbatch single_R_run.sbatch $i +done \ No newline at end of file diff --git a/tests/lee_high_dim_full/test_lee_full.R b/tests/lee_high_dim_full/test_lee_full.R index 3983738..5d2184f 100644 --- a/tests/lee_high_dim_full/test_lee_full.R +++ b/tests/lee_high_dim_full/test_lee_full.R @@ -3,11 +3,11 @@ library(glmnet) # testing Lee et al type=full in high dimensional settings -- uses debiasing matrix -test_lee_full = function(nrep=50, n=100, p=200, s=10, rho=0.5){ +test_lee_full = function(seed=1, outfile=NULL, nrep=1, n=1000, p=2000, s=30, rho=0.){ snr = sqrt(2*log(p)/n) - set.seed(1) + set.seed(seed) loss="ls" construct_ci=TRUE penalty_factor = rep(1, p) @@ -74,15 +74,19 @@ test_lee_full = function(nrep=50, n=100, p=200, s=10, rho=0.5){ } } + if (is.null(outfile)){ + outfile="lee_full.rds" + } + saveRDS(list(sel_intervals=sel_intervals, sel_coverages=sel_coverages, sel_lengths=sel_lengths, pvalues=pvalues, FDR_sample=FDR_sample, power_sample=power_sample, - n=n,p=p, s=s, snr=snr, rho=rho), file="lee_full.rds") + n=n,p=p, s=s, snr=snr, rho=rho), file=outfile) return(list(pvalues=pvalues)) } -test_lee_full() +#test_lee_full() diff --git a/tests/liu_high_dim_full/cluster.R b/tests/liu_high_dim_full/cluster.R index bc4ddfb..4605ee9 100644 --- a/tests/liu_high_dim_full/cluster.R +++ b/tests/liu_high_dim_full/cluster.R @@ -5,7 +5,7 @@ args = commandArgs(trailingOnly=TRUE) seed = round(as.numeric(args[1])) outdir = "/scratch/users/jelenam/full/" -outfile = file.path(outdir, paste(sep="","list_result_", toString(seed), ".rda")) +outfile = file.path(outdir, paste(sep="","liu_result_", toString(seed), ".rda")) test_liu_full(seed, outfile) diff --git a/tests/liu_high_dim_full/test_liu_full.R b/tests/liu_high_dim_full/test_liu_full.R index a01d781..7d4a5e2 100644 --- a/tests/liu_high_dim_full/test_liu_full.R +++ b/tests/liu_high_dim_full/test_liu_full.R @@ -5,7 +5,7 @@ library(glmnet) # testing Liu et al type=full in high dimensional settings -- uses debiasing matrix -test_liu_full = function(seed=1, outfile=NULL, nrep=10, n=1000, p=2000, s=30, rho=0.){ +test_liu_full = function(seed=1, outfile=NULL, nrep=1, n=1000, p=2000, s=30, rho=0.){ snr = sqrt(2*log(p)/n) @@ -90,7 +90,7 @@ test_liu_full = function(seed=1, outfile=NULL, nrep=10, n=1000, p=2000, s=30, rh naive_intervals=naive_intervals, naive_coverages=naive_coverages, naive_lengths=naive_lengths, pvalues=pvalues, naive_pvalues=naive_pvalues, FDR_sample=FDR_sample, power_sample=power_sample, - n=n, p=p, s=s, snr=snr, rho=rho), file=oufile) + n=n, p=p, s=s, snr=snr, rho=rho), file=outfile) return(list(pvalues=pvalues, naive_pvalues=naive_pvalues)) } From ca4e19aca82d425287bf19e090c700d749bced48 Mon Sep 17 00:00:00 2001 From: Jelena Markovic Date: Wed, 21 Mar 2018 22:26:29 -0700 Subject: [PATCH 458/493] added cluster files for all methods --- tests/randomized/cluster.R | 11 +++++++ tests/randomized/single_R_run.sbatch | 38 +++++++++++++++++++++++++ tests/randomized/submit_R_jobs.sh | 10 +++++++ tests/randomized/test_randomized_full.R | 12 +++++--- 4 files changed, 67 insertions(+), 4 deletions(-) create mode 100644 tests/randomized/cluster.R create mode 100644 tests/randomized/single_R_run.sbatch create mode 100644 tests/randomized/submit_R_jobs.sh diff --git a/tests/randomized/cluster.R b/tests/randomized/cluster.R new file mode 100644 index 0000000..3795c8b --- /dev/null +++ b/tests/randomized/cluster.R @@ -0,0 +1,11 @@ +setwd(getwd()) +source("test_randomized_full.R") + +args = commandArgs(trailingOnly=TRUE) +seed = round(as.numeric(args[1])) + +outdir = "/scratch/users/jelenam/full/" +outfile = file.path(outdir, paste(sep="","randomized_result_", toString(seed), ".rda")) + +test_randomized_full(seed, outfile) + diff --git a/tests/randomized/single_R_run.sbatch b/tests/randomized/single_R_run.sbatch new file mode 100644 index 0000000..2d8e326 --- /dev/null +++ b/tests/randomized/single_R_run.sbatch @@ -0,0 +1,38 @@ +#!/bin/bash +# +#all commands that start with SBATCH contain commands that are just used by SLURM for scheduling +################# +#set a job name +#SBATCH --job-name=job +################# +#a file for job output, you can check job progress, append the job ID with %j to make it unique +#SBATCH --output=jobs/%j.out +################# +# a file for errors from the job +#SBATCH --error=jobs/%j.err +################# +#time you think you need; default is 2 hours +#format could be dd-hh:mm:ss, hh:mm:ss, mm:ss, or mm +#SBATCH --time=5:00:00 +################# +#SBATCH --qos=normal +#SBATCH -p normal +################# +#number of nodes you are requesting, the more you ask for the longer you wait +#SBATCH --nodes=1 +################# +#SBATCH --mem=4000 + +# You can use srun if your job is parallel +#srun R CMD BATCH ./rtest.R +# otherwise: + +SEED=$1 + +# cd to program directory +cd /home/users/jelenam/R-selective/tests/liu_high_dim_full + +module load R/3.4.0 + +Rscript cluster.R $SEED + diff --git a/tests/randomized/submit_R_jobs.sh b/tests/randomized/submit_R_jobs.sh new file mode 100644 index 0000000..4d4b4a1 --- /dev/null +++ b/tests/randomized/submit_R_jobs.sh @@ -0,0 +1,10 @@ +#!/bin/bash +# Setup bash job headers + +# load local environment + + +for i in {1..10} +do + sbatch single_R_run.sbatch $i +done \ No newline at end of file diff --git a/tests/randomized/test_randomized_full.R b/tests/randomized/test_randomized_full.R index b03caf0..f4f96f3 100644 --- a/tests/randomized/test_randomized_full.R +++ b/tests/randomized/test_randomized_full.R @@ -1,11 +1,11 @@ -test_randomized_full = function(nrep=50, n=100, p=200, s=10, rho=0.){ +test_randomized_full = function(seed=1, outfile, nrep=1, n=1000, p=2000, s=30, rho=0.){ snr = sqrt(2*log(p)/n) - set.seed(1) + set.seed(seed) loss="ls" construct_ci=TRUE penalty_factor = rep(1, p) @@ -83,12 +83,16 @@ test_randomized_full = function(nrep=50, n=100, p=200, s=10, rho=0.){ } } + if (is.null(outfile)){ + outfile="randomized_full.rds" + } + saveRDS(list(sel_intervals=sel_intervals, sel_coverages=sel_coverages, sel_lengths=sel_lengths, pvalues=pvalues, FDR_sample=FDR_sample, power_sample=power_sample, - n=n,p=p, s=s, snr=snr, rho=rho), file="randomized_full.rds") + n=n,p=p, s=s, snr=snr, rho=rho), file=outfile) return(list(pvalues=pvalues)) } -test_randomized_full() +#test_randomized_full() From e3d4b2db6a4ebd2e6297f9610f9decd27369ab1f Mon Sep 17 00:00:00 2001 From: Jelena Markovic Date: Thu, 22 Mar 2018 12:07:43 -0700 Subject: [PATCH 459/493] cluster can do all six methods now --- randomized_full.rds | Bin 35141 -> 0 bytes tests/comparisons/compare_FDR_power.R | 8 +- tests/comparisons/knockoff.rds | Bin 0 -> 803 bytes tests/comparisons/lee.rds | Bin 0 -> 116403 bytes tests/comparisons/lee_full.rds | Bin 21222 -> 0 bytes tests/comparisons/liu.rds | Bin 0 -> 239089 bytes tests/comparisons/liu_full.rds | Bin 42553 -> 0 bytes tests/comparisons/randomized_full.rds | Bin 0 -> 197511 bytes tests/comparisons/read_files.R | 50 +++++ tests/knockoffs/cluster.R | 8 +- tests/knockoffs/single_R_run.sbatch | 5 +- tests/knockoffs/submit_R_jobs.sh | 5 +- tests/knockoffs/test_knockoffs.R | 4 +- tests/lee_high_dim_full/single_R_run.sbatch | 2 +- tests/lee_high_dim_full/test_lee_full.R | 2 +- tests/liu_high_dim_full/test_liu_full.R | 2 +- tests/randomized/cluster.R | 10 +- tests/randomized/single_R_run.sbatch | 5 +- tests/randomized/submit_R_jobs.sh | 5 +- tests/randomized/test_randomized.R | 208 +++++++++----------- tests/randomized/test_randomized_full.R | 98 --------- tests/randomized/test_randomized_simple.R | 119 +++++++++++ 22 files changed, 297 insertions(+), 234 deletions(-) delete mode 100644 randomized_full.rds create mode 100644 tests/comparisons/knockoff.rds create mode 100644 tests/comparisons/lee.rds delete mode 100644 tests/comparisons/lee_full.rds create mode 100644 tests/comparisons/liu.rds delete mode 100644 tests/comparisons/liu_full.rds create mode 100644 tests/comparisons/randomized_full.rds create mode 100644 tests/comparisons/read_files.R delete mode 100644 tests/randomized/test_randomized_full.R create mode 100644 tests/randomized/test_randomized_simple.R diff --git a/randomized_full.rds b/randomized_full.rds deleted file mode 100644 index 722934a3c67d566a91d146a3a0092630e2b591ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35141 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 Rmo%VG{jHbMp~W3L{teJ+Pm%xt diff --git a/tests/comparisons/compare_FDR_power.R b/tests/comparisons/compare_FDR_power.R index f5148c9..6ca3f4d 100644 --- a/tests/comparisons/compare_FDR_power.R +++ b/tests/comparisons/compare_FDR_power.R @@ -1,7 +1,9 @@ -lee = readRDS(file="lee_full.rds") -liu = readRDS(file="liu_full.rds") +lee = readRDS(file="lee.rds") +liu = readRDS(file="liu.rds") kn = readRDS(file="knockoff.rds") kn_plus = readRDS(file="knockoff+.rds") +randomized_full=readRDS(file="randomized_full.rds") +randomized_partial=readRDS(file="randomized_partial.rds") table = matrix(c(mean(lee$FDR_sample), mean(lee$power_sample), @@ -9,5 +11,5 @@ table = matrix(c(mean(lee$FDR_sample), mean(lee$power_sample), mean(kn$FDR_sample), mean(kn$power_sample), mean(kn_plus$FDR_sample), mean(kn_plus$power_sample)), ncol=2, byrow=TRUE) colnames(table)=c("FDR", "power") -rownames(table)=c("Lee", "Liu", "knockoff", "knockoff+") +rownames(table)=c("Lee", "Liu", "knockoff", "knockoff+", "randomized full", "randomized partial") table diff --git a/tests/comparisons/knockoff.rds b/tests/comparisons/knockoff.rds new file mode 100644 index 0000000000000000000000000000000000000000..eda883fe0f6501e1dd9b9b345a4099031dd00e95 GIT binary patch literal 803 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 U-Nip?jH&bg07(qFyWw&I0MYbT<^TWy literal 0 HcmV?d00001 diff --git a/tests/comparisons/lee_full.rds b/tests/comparisons/lee_full.rds deleted file mode 100644 index 054c277095cdafd4302b1a83249d982d297be34c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21222 zcmV(zK<2+6iwFP!000001MR&9RFz-1FHASmASopZDx!d>2=hS+1q1~|KqRCT2|*A+ z1yL-dRS-l#It8U9bZtVqyJNHI?uL&OfA2l#juUr$@A%HS_j~6Ud;eBEYp%I!#v0Gq zTaSi_h=_!Ul$3;sg!CVhEPG$Hd$^B?h+GS$T_PgA$;u0OXTG)tPFFNk$%DUJ+VuGcme9d-Z15JL5!GM5##7DN3L_!zsqdB+(b{nlI_D#|VOTQIXnBDW z%`a3x&8{DS&d&Sd0#_2yLgrF&Mhhbpo!E|hpj-s`wE9N2#xyWzEA#9_LJ=B_JMrSY zB!Xd+IXbJAPiQm^|EBzG7DOK{wjdTZK&#F@_2G}}F`^W?2E~A@s1L``-nMiUrsuiT z=ni|KF4F)9pL|D*yjuT`tSuK>NoZDmQzHliiPXM4(hVprDd|dKpaT%X{Ct^mKI2$z zmov07m0{TP?Z>lv;i#LjjxP3=3-mbt$XPph6@Khizn<`AfyH^fJO}?BwBdgAi0myc zXu5svCtq18dLzfw9(ni$%IktXn2%v`2D*t?dj9EZrE0 zI6;q=w|Qy(HwmaXJI4E0{U<~iZ<2no0x&#L9X?;thlT}n__B}o!hp-`9s2{bXqb6$ zeR4Sge$CMwn9%A&_?C-Po!VZ|FLP~O;nPRBv3k7Gm!Ex9kAyx7`p^kQ}EK>U$@4-ym1(gHAhG=YyO7dF%4z#rwsMtNC zL){Vj=S40L!pQcjVh)!RDlW)iqFYnONCmfB{91kCRpHN4$+^A#_)F~DTgeU_sap?O z_i+m7wmY0nke^568v4AkmoLDQOqDVW@X~h)jm*APW6( zYR=*yH%b{)7CEdL0Yk#RcD(Q2;`p_2NJ5PkzBMpjJrq8J>Q1SrazByBXxn$rW-VSo zqlaE$+8!TZ!%#>dvG^fsuU79~zFYwdCyqUT71V}?yCcOS)W4!E$pXfJxNtPNb(|{f zdnz==TVy?CG(rPGrP`h2K~S}i`xckDC0bIJboCs{fNAs9W_z*{+`jiU(oGfa(C~=T z?ZEzgG^X3u5L#9ZBQ(L+#r*%QAF3Er8fEKvgBHB_`s9SpVZ@b{+OCZnI9eu!%l!qj z(Am@@b7J@>TFS|J+OIVR)0bU!FjpotM_e_>#wZIzB`?a_5Pv;Cg%<-0&|^YxhAM}+kI|} zK?T+#bf2X!A4kp83?nk9!=d}Qh)vAuIW+hq>_Z!zhxRB!jnTRQ6s1i2S6h(4NdH8C z=_eYr)syFXiE9N0vkC`ibVCt-H}RKhQa7}xX9*(bi)e6st-=T$h908#?2X|9XhgSk zaVu68BT`%EL?t0;yw_?=J$nv%z2bj8ATLKVq;qt=H}NpY8no0cIfteL{SSQ142AJg z4Y4QJ_ViutF%gMwOK9@qiHm0*N1J3H%8oC@K|={uoYaUEYHMWNejx1$LqQQ_6I|wK zS0p^E%#ssEd`vYB^S#k>TYGhzoFYt^Dzt8AuA*5Z2gUK&T=bik!OJ?$84>o~^xTMv zf~-@=xk?lC5MjXR{o!AnU`q9Z?m~n=8oGSt!%u2+`2CAPi{^wp8nF(rUNI`bD2fAR zOHL4>3D%^V6FN4~@w;&K@q{zl1>01O+=np#P_;wl@ieN9(&B7<{0rkQ_;PKsrV#xY znBhDZMTZ^KWs(VHdxlm`__%_ssbN{+r_S4YavTNO*6uOKM=)=2`s{^OezY*8SN%bl z06VWXiee{gQ2#sii~U*0Vb?N8=}EUdPWVVi>$m+}kQ@!EUHhugEM7w)&!`->#lBz4 zvc;kKJe(#$?I1=iRy)?^zlicYcf-6y9>6;1<=L{vTvX~ZP9Iqw2;;G%T(@P~aiog= zM6q|D!7_8|qOzi315yzRA|G#xc>1W4wrF#syop-34I2 z<6Q98$POCd=MibWsfv;IB(zBzsK8I$2%JHcRBNH-R7r6b^ogSN9Jxn4l)1nDuJ%o}KCgv_cg_clzFnp#x9-iM~R zxT5Y_slp=dM28t?0BU<}^G#N^0tjz$1;JuBQG;|0%{%8*SoD^mppdLW3w>!GW`6O| z3F#!S=$cWDacg-Q#(^=eJdSfacLWV8Jj(SCu7V}A!h3a67HDyr2j8gD42ws#%d9ir zpgGE*Cm)aLqWZ$*E#4%5)LYbBd+^9lj49gwBf9}Fj^yfVu6ipy7_``HGwJQ-$cQhBHrhGacUmk*1Y>5|x)JibQ z?ERm-9h}gz>->6C7CTJbBXUufu|mC?h12lhJ4}t5nYkh>RD9sMcZ2Ajek5uvz9XEA z#^pRnEKkZoSvqmCO}-|=Tdh}jvB+U0CB0Uc?)#w*%hR#kYHTn(*w^VHM+1Snsd=P2 zA7QFMHmJ~&4b2l3TV(EBhDFku&7YF4Xtq(qf{i=~Ms{A+rMmCc9}#k#$t#BO#B)Zt z4R%QI-guy}^9u+~sfLmGD^Q`gRgXf_BZym)HZT$9;Ca!;P#nk9&BiAVW+-EE-q4&s z1SepUA@%Mqfr5ayOu3meAr+8<5){0mn)Qrp^aR{>oKnm zjwyh&NJHo&Oe+Vkshr68Bma=t9pa-|QK;d(!ynK2S?!I9nTmvCIi1EUz1dZCo&iBy$IG3u9ETCg|I#&~wFI<~#mMzeKUhvxi~ zVZgPE?H0)|G$ix%M2(>hXfg8Cyw_b*zjp^m_$%;rIoN}Q~ zxb+3C^+=N8A`=1MCQ@bMTZM+!PA;f8j>BY>VRvKdceHp|`*_|C21RLK-zj8Spp}Ue z`_2c~!jNTW9^VH*LsCxc)o*MtqC<;ZMKbni$*9xvf$=HmAl(wLe=Cn8At9^15v&D^ zEB!|g4(Fh;qGBaFi%?k9yQuL&s)LZUa?-Z%{gW*i;Bj_VSG0 z-FOATWHdqp-_PRMRSEBwn#eJlXtx>DOHMe}G)hT2ks}zx?}MN230=UET(S4O)1HEn z@aZ0QS^0`KzK5AqOCN=KvI7UoRMgRiuP#x>J`EIiNx0$0^Ln&6ud8uG*cS%Uvt2s) z-BC&Ge5q#D60A_HJS$q{Me9uTN2DGG!IGOFLot~sj(P48CG&heG+qkOEb}~zqxM6A zgNg6p+wzV?5xpf^cr7V^M)@jC-F}liOka*B*K$~F2J&H9&6&?RFavjRzzzTFmM!3< z8?We=Iij&19O>YV9Y{X1&pz_$5E`lK$drC*1zjRCCeDKIp@>K_{;k0$7)f?=NZr_* zKdVhWibOtW4RfV@;`A1^wi;(ieR~8$Tr4*F^cZS=OL#Q!x)l0_Kb;K{`h%`?z8_Ql|L|2{a% zT557RANnJ{*itOYqxt?Bq@Uo1k-4OGDxI&zakhsM_XiNckd95-;dmn)onhjg$J4ve z$o4cM6EngIJ?m7Rxn+vc-EIppG{T{J{-$`{y3#%W(0BBCvJh^c#WAX}+lMgbf}iO+ zFDGyZ_g_8#%)taQ^DLhhJEo(Nefyo_q#9shI`c+DXcQWkIOI#8Vg>657F&+pXvQ%- zV2`V$9Yk^Md1F%z>j+=nr&{{O7B-9JJdITiapYkcc537TFd6W^_Z15sM;jP*lxNEb z*4`@p-kuyqBW^`)o-6*CKwduowCx63WX)Sj(>aX^^B9hvy5o%|YIj-|9)18q;=S2M z_9nEFd8$aGxC>gvk8qRiG@`1G=Y;P9;V`T;pp�zx1(9y-TJqfi{lnIm9%D`meBL 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 VUrEQ?_It4N{{VR!ZaN8X008FttBC*r diff --git a/tests/comparisons/liu.rds b/tests/comparisons/liu.rds new file mode 100644 index 0000000000000000000000000000000000000000..2a56e5fa13a26320846854b6e5c545f27d208cfd GIT binary patch literal 239089 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

>vg#* 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

ysSP(EC?U20p!oS_; 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%0D64^?v960S@p{zj5vX4hKwazWWZx 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 N{~yme7*ejb1OQ+V6#f7J literal 0 HcmV?d00001 diff --git a/tests/comparisons/read_files.R b/tests/comparisons/read_files.R new file mode 100644 index 0000000..1a35426 --- /dev/null +++ b/tests/comparisons/read_files.R @@ -0,0 +1,50 @@ +result.path = "/Users/Jelena/Documents/collect_cluster_results/full/" +setwd(result.path) + +#method="liu" +#method="lee" +#method="knockoff" +method="randomized" +txt_files = list.files(pattern = paste(method, "*", sep="")) + +i = 0 + +pvalues = NULL +sel_intervals=NULL +sel_coverages=NULL +sel_lengths=NULL +naive_pvalues = NULL +naive_intervals=NULL +naive_coverages=NULL +naive_lengths=NULL +FDR_sample = NULL +power_sample=NULL + +for (file in txt_files){ + result = readRDS(file) + pvalues = c(pvalues, result$pvalues) + sel_intervals=c(sel_intervals, result$sel_intervals) + sel_coverages=c(sel_coverages, result$sel_coverages) + sel_lengths=c(sel_lengths, result$sel_lengths) + naive_pvalues = c(naive_pvalues, result$naive_pvalues) + naive_intervals= c(naive_intervals, result$naive_intervals) + naive_coverages=c(naive_coverages, result$naive_coverages) + naive_lengths=c(naive_lengths, result$naive_lengths) + FDR_sample =c(FDR_sample, result$FDR_sample) + power_sample=c(power_sample, result$power_sample) + i=i+1 +} + +print(i) + +setwd("/Users/Jelena/GitHub Jelena/R-selective/tests/comparisons/") + +saveRDS(list(pvalues=pvalues, + sel_intervals=sel_intervals, sel_coverages=sel_coverages, sel_lengths=sel_lengths, + naive_pvalues=naive_pvalues, + naive_intervals=naive_intervals, naive_coverages=naive_coverages, naive_lengths=naive_lengths, + FDR_sample=FDR_sample, power_sample=power_sample), file=paste(method,".rds", sep="")) + + + + diff --git a/tests/knockoffs/cluster.R b/tests/knockoffs/cluster.R index 352d2e8..178114e 100644 --- a/tests/knockoffs/cluster.R +++ b/tests/knockoffs/cluster.R @@ -3,9 +3,11 @@ source("test_knockoffs.R") args = commandArgs(trailingOnly=TRUE) seed = round(as.numeric(args[1])) - +type=toString(args[2]) + outdir = "/scratch/users/jelenam/full/" -outfile = file.path(outdir, paste(sep="","knockoff_result_", toString(seed), ".rda")) +label=paste(type,"_result_", sep="") +outfile = file.path(outdir, paste(sep="",label, toString(seed), ".rda")) -test_knockoffs(seed, outfile, method="knockoff") +test_knockoffs(seed, outfile, method=type) diff --git a/tests/knockoffs/single_R_run.sbatch b/tests/knockoffs/single_R_run.sbatch index 2d8e326..9cb1ef1 100644 --- a/tests/knockoffs/single_R_run.sbatch +++ b/tests/knockoffs/single_R_run.sbatch @@ -28,11 +28,12 @@ # otherwise: SEED=$1 +type=$2 # cd to program directory -cd /home/users/jelenam/R-selective/tests/liu_high_dim_full +cd /home/users/jelenam/R-selective/tests/knockoffs module load R/3.4.0 -Rscript cluster.R $SEED +Rscript cluster.R $SEED $type diff --git a/tests/knockoffs/submit_R_jobs.sh b/tests/knockoffs/submit_R_jobs.sh index 4d4b4a1..0729d58 100644 --- a/tests/knockoffs/submit_R_jobs.sh +++ b/tests/knockoffs/submit_R_jobs.sh @@ -3,8 +3,11 @@ # load local environment +type1=knockoff +type2=knockoff+ for i in {1..10} do - sbatch single_R_run.sbatch $i + sbatch single_R_run.sbatch $i $type1 + sbatch single_R_run.sbatch $i $type2 done \ No newline at end of file diff --git a/tests/knockoffs/test_knockoffs.R b/tests/knockoffs/test_knockoffs.R index 3ecb2e3..15e0f73 100644 --- a/tests/knockoffs/test_knockoffs.R +++ b/tests/knockoffs/test_knockoffs.R @@ -33,7 +33,7 @@ compute.knockoff = function(data, method, q=0.2, model.free=TRUE){ test_knockoffs = function(seed=1, outfile=NULL, method = "knockoff", - nrep=1, n=1000, p=2000, s=30, rho=0.){ + nrep=10, n=1000, p=2000, s=30, rho=0.){ snr = sqrt(2*log(p)/n) @@ -67,4 +67,4 @@ test_knockoffs = function(seed=1, outfile=NULL, method = "knockoff", return(list(FDR_sample=FDR_sample, power_sample=power_sample)) } -test_knockoffs() +#test_knockoffs() diff --git a/tests/lee_high_dim_full/single_R_run.sbatch b/tests/lee_high_dim_full/single_R_run.sbatch index 2d8e326..75d08e4 100644 --- a/tests/lee_high_dim_full/single_R_run.sbatch +++ b/tests/lee_high_dim_full/single_R_run.sbatch @@ -30,7 +30,7 @@ SEED=$1 # cd to program directory -cd /home/users/jelenam/R-selective/tests/liu_high_dim_full +cd /home/users/jelenam/R-selective/tests/lee_high_dim_full module load R/3.4.0 diff --git a/tests/lee_high_dim_full/test_lee_full.R b/tests/lee_high_dim_full/test_lee_full.R index 5d2184f..b4869fb 100644 --- a/tests/lee_high_dim_full/test_lee_full.R +++ b/tests/lee_high_dim_full/test_lee_full.R @@ -3,7 +3,7 @@ library(glmnet) # testing Lee et al type=full in high dimensional settings -- uses debiasing matrix -test_lee_full = function(seed=1, outfile=NULL, nrep=1, n=1000, p=2000, s=30, rho=0.){ +test_lee_full = function(seed=1, outfile=NULL, nrep=10, n=1000, p=2000, s=30, rho=0.){ snr = sqrt(2*log(p)/n) diff --git a/tests/liu_high_dim_full/test_liu_full.R b/tests/liu_high_dim_full/test_liu_full.R index 7d4a5e2..85a1770 100644 --- a/tests/liu_high_dim_full/test_liu_full.R +++ b/tests/liu_high_dim_full/test_liu_full.R @@ -5,7 +5,7 @@ library(glmnet) # testing Liu et al type=full in high dimensional settings -- uses debiasing matrix -test_liu_full = function(seed=1, outfile=NULL, nrep=1, n=1000, p=2000, s=30, rho=0.){ +test_liu_full = function(seed=1, outfile=NULL, nrep=10, n=1000, p=2000, s=30, rho=0.){ snr = sqrt(2*log(p)/n) diff --git a/tests/randomized/cluster.R b/tests/randomized/cluster.R index 3795c8b..28c1c08 100644 --- a/tests/randomized/cluster.R +++ b/tests/randomized/cluster.R @@ -1,11 +1,13 @@ setwd(getwd()) -source("test_randomized_full.R") +source("test_randomized.R") args = commandArgs(trailingOnly=TRUE) seed = round(as.numeric(args[1])) - +type = toString(args[2]) + outdir = "/scratch/users/jelenam/full/" -outfile = file.path(outdir, paste(sep="","randomized_result_", toString(seed), ".rda")) +label = paste("randomized_", type, "_result_", sep="") +outfile = file.path(outdir, paste(sep="",label, toString(seed), ".rda")) -test_randomized_full(seed, outfile) +test_randomized(seed, outfile, type=type) diff --git a/tests/randomized/single_R_run.sbatch b/tests/randomized/single_R_run.sbatch index 2d8e326..20be012 100644 --- a/tests/randomized/single_R_run.sbatch +++ b/tests/randomized/single_R_run.sbatch @@ -28,11 +28,12 @@ # otherwise: SEED=$1 +type=$2 # cd to program directory -cd /home/users/jelenam/R-selective/tests/liu_high_dim_full +cd /home/users/jelenam/R-selective/tests/randomized module load R/3.4.0 -Rscript cluster.R $SEED +Rscript cluster.R $SEED $type diff --git a/tests/randomized/submit_R_jobs.sh b/tests/randomized/submit_R_jobs.sh index 4d4b4a1..84a1db4 100644 --- a/tests/randomized/submit_R_jobs.sh +++ b/tests/randomized/submit_R_jobs.sh @@ -3,8 +3,11 @@ # load local environment +type1=full +type2=partial for i in {1..10} do - sbatch single_R_run.sbatch $i + sbatch single_R_run.sbatch $i $type1 + sbatch single_R_run.sbatch $i $type2 done \ No newline at end of file diff --git a/tests/randomized/test_randomized.R b/tests/randomized/test_randomized.R index 1531d43..d10be74 100644 --- a/tests/randomized/test_randomized.R +++ b/tests/randomized/test_randomized.R @@ -1,119 +1,97 @@ -library(selectiveInference) -smoke_test = function() { - n = 100; p = 50 - X = matrix(rnorm(n * p), n, p) - y = rnorm(n) - lam = 20 / sqrt(n) - noise_scale = 0.01 * sqrt(n) - ridge_term = .1 / sqrt(n) - selectiveInference:::randomizedLasso(X, y, lam, noise_scale, ridge_term) -} - -A = smoke_test() - -sampler_test = function() { - - n = 100; p = 50 - X = matrix(rnorm(n * p), n, p) - y = rnorm(n) - lam = 20 / sqrt(n) - noise_scale = 0.01 * sqrt(n) - ridge_term = .1 / sqrt(n) - obj = selectiveInference:::randomizedLasso(X, y, lam, noise_scale, ridge_term) - S = selectiveInference:::sample_opt_variables(obj, jump_scale=rep(1/sqrt(n), p), nsample=10000) - return(S$samples[2001:10000,]) -} -B = sampler_test() - -gaussian_density_test = function() { - - noise_scale = 10. - random_lasso = smoke_test() - p = nrow(random_lasso$internal_transform$linear_term) - internal_state = matrix(rnorm(p * 20), p, 20) - optimization_state = matrix(rnorm(p * 20), p, 20) - offset = rnorm(p) - - V1 = selectiveInference:::log_density_gaussian_(noise_scale, - random_lasso$internal_transform$linear_term, - internal_state, - random_lasso$optimization_transform$linear_term, - optimization_state, - offset) - A1 = random_lasso$internal_transform$linear_term - A2 = random_lasso$optimization_transform$linear_term - arg = A1 %*% internal_state + A2 %*% optimization_state + offset - V2 = -apply(arg^2, 2, sum) / (2 * noise_scale^2) - print(sqrt(sum((V1-V2)^2) / sum(V1^2))) - - U1 = selectiveInference:::log_density_gaussian_conditional_(noise_scale, - random_lasso$optimization_transform$linear_term, - optimization_state, - offset) - arg = A2 %*% optimization_state + offset - U2 = -apply(arg^2, 2, sum) / (2 * noise_scale^2) - print(sqrt(sum((U1-U2)^2) / sum(U1^2))) - - # test that a single column matrix works -- numeric should not - - print(selectiveInference:::log_density_gaussian_conditional_(noise_scale, - random_lasso$optimization_transform$linear_term, - optimization_state[,1,drop=FALSE], - offset)) - print(selectiveInference:::log_density_gaussian_(noise_scale, - random_lasso$internal_transform$linear_term, - internal_state[,1,drop=FALSE], - random_lasso$optimization_transform$linear_term, - optimization_state[,1,drop=FALSE], - offset)) - -} - -gaussian_density_test() - -laplace_density_test = function() { - - noise_scale = 10. - random_lasso = smoke_test() - p = nrow(random_lasso$internal_transform$linear_term) - internal_state = matrix(rnorm(p * 20), p, 20) - optimization_state = matrix(rnorm(p * 20), p, 20) - offset = rnorm(p) - - V1 = selectiveInference:::log_density_laplace_(noise_scale, - random_lasso$internal_transform$linear_term, - internal_state, - random_lasso$optimization_transform$linear_term, - optimization_state, - offset) - A1 = random_lasso$internal_transform$linear_term - A2 = random_lasso$optimization_transform$linear_term - arg = A1 %*% internal_state + A2 %*% optimization_state + offset - V2 = -apply(abs(arg), 2, sum) / noise_scale - print(sqrt(sum((V1-V2)^2) / sum(V1^2))) - - U1 = selectiveInference:::log_density_laplace_conditional_(noise_scale, - random_lasso$optimization_transform$linear_term, - optimization_state, - offset) - arg = A2 %*% optimization_state + offset - U2 = -apply(abs(arg), 2, sum) / noise_scale - print(sqrt(sum((U1-U2)^2) / sum(U1^2))) - - # test that a single column matrix works -- numeric should not - - print(selectiveInference:::log_density_laplace_conditional_(noise_scale, - random_lasso$optimization_transform$linear_term, - optimization_state[,1,drop=FALSE], - offset)) - print(selectiveInference:::log_density_laplace_(noise_scale, - random_lasso$internal_transform$linear_term, - internal_state[,1,drop=FALSE], - random_lasso$optimization_transform$linear_term, - optimization_state[,1,drop=FALSE], - offset)) +test_randomized = function(seed=1, outfile, type="full", nrep=10, n=1000, p=2000, s=30, rho=0.){ + + snr = sqrt(2*log(p)/n) + + set.seed(seed) + loss="ls" + construct_ci=TRUE + penalty_factor = rep(1, p) + + pvalues = NULL + sel_intervals=NULL + sel_coverages=NULL + sel_lengths=NULL + + FDR_sample = NULL + power_sample=NULL + + for (i in 1:nrep){ + data = selectiveInference:::gaussian_instance(n=n, p=p, s=s, rho=rho, sigma=1, snr=snr) + X=data$X + y=data$y + beta=data$beta + cat("true nonzero:", which(beta!=0), "\n") + + #CV = cv.glmnet(X, y, standardize=FALSE, intercept=FALSE, family=selectiveInference:::family_label(loss)) + #sigma_est=selectiveInference:::estimate_sigma(X,y,coef(CV, s="lambda.min")[-1]) # sigma via Reid et al. + #print(c("sigma est", sigma_est)) + sigma_est=1 + # lambda = CV$lambda[which.min(CV$cvm+rnorm(length(CV$cvm))/sqrt(n))] # lambda via randomized cv + lambda = 0.8*selectiveInference:::theoretical.lambda(X, loss, sigma_est) # theoretical lambda + + + rand_lasso_soln = selectiveInference:::randomizedLasso(X, + y, + lambda*n, + family=selectiveInference:::family_label(loss), + condition_subgrad=TRUE) + + full_targets=selectiveInference:::set.target(rand_lasso_soln, type=type, sigma_est=sigma_est) + + PVS = selectiveInference:::randomizedLassoInf(rand_lasso_soln, + full_targets=full_targets, + sampler = "norejection", #"adaptMCMC", # + level=0.9, + burnin=1000, + nsample=10000) + active_vars=rand_lasso_soln$active_set + cat("active_vars:",active_vars,"\n") + pvalues = c(pvalues, PVS$pvalues) + sel_intervals = cbind(sel_intervals, t(PVS$ci)) # matrix with two rows + + + if (length(pvalues)>0){ + plot(ecdf(pvalues)) + #lines(ecdf(naive_pvalues), col="red") + abline(0,1) + } + + if (construct_ci && length(active_vars)>0){ + + sel_coverages=c(sel_coverages, selectiveInference:::compute_coverage(t(PVS$ci), beta[active_vars])) + sel_lengths=c(sel_lengths, as.vector(PVS$ci[,2]-PVS$ci[,1])) + print(c("selective coverage:", mean(sel_coverages))) + print(c("selective length mean:", mean(sel_lengths))) + print(c("selective length median:", median(sel_lengths))) + #naive_coverages=c(naive_coverages, selectiveInference:::compute_coverage(PVS$naive_intervals, beta[active_vars])) + #naive_lengths=c(naive_lengths, as.vector(PVS$naive_intervals[2,]-PVS$naive_intervals[1,])) + #print(c("naive coverage:", mean(naive_coverages))) + #print(c("naive length mean:", mean(naive_lengths))) + #print(c("naive length median:", median(naive_lengths))) + } + + mc = selectiveInference:::selective.plus.BH(beta, active_vars, PVS$pvalues, q=0.2) + FDR_sample=c(FDR_sample, mc$FDR) + power_sample=c(power_sample, mc$power) + + if (length(FDR_sample)>0){ + print(c("FDR:", mean(FDR_sample))) + print(c("power:", mean(power_sample))) + } + } + + if (is.null(outfile)){ + outfile="randomized_full.rds" + } + + saveRDS(list(sel_intervals=sel_intervals, sel_coverages=sel_coverages, sel_lengths=sel_lengths, + pvalues=pvalues, + FDR_sample=FDR_sample, power_sample=power_sample, + n=n,p=p, s=s, snr=snr, rho=rho), file=outfile) + + return(list(pvalues=pvalues)) } -laplace_density_test() +#test_randomized() diff --git a/tests/randomized/test_randomized_full.R b/tests/randomized/test_randomized_full.R deleted file mode 100644 index f4f96f3..0000000 --- a/tests/randomized/test_randomized_full.R +++ /dev/null @@ -1,98 +0,0 @@ - - - -test_randomized_full = function(seed=1, outfile, nrep=1, n=1000, p=2000, s=30, rho=0.){ - - snr = sqrt(2*log(p)/n) - - set.seed(seed) - loss="ls" - construct_ci=TRUE - penalty_factor = rep(1, p) - - pvalues = NULL - sel_intervals=NULL - sel_coverages=NULL - sel_lengths=NULL - - FDR_sample = NULL - power_sample=NULL - - for (i in 1:nrep){ - data = selectiveInference:::gaussian_instance(n=n, p=p, s=s, rho=rho, sigma=1, snr=snr) - X=data$X - y=data$y - beta=data$beta - cat("true nonzero:", which(beta!=0), "\n") - - #CV = cv.glmnet(X, y, standardize=FALSE, intercept=FALSE, family=selectiveInference:::family_label(loss)) - #sigma_est=selectiveInference:::estimate_sigma(X,y,coef(CV, s="lambda.min")[-1]) # sigma via Reid et al. - #print(c("sigma est", sigma_est)) - sigma_est=1 - # lambda = CV$lambda[which.min(CV$cvm+rnorm(length(CV$cvm))/sqrt(n))] # lambda via randomized cv - lambda = 0.8*selectiveInference:::theoretical.lambda(X, loss, sigma_est) # theoretical lambda - - - rand_lasso_soln = selectiveInference:::randomizedLasso(X, - y, - lambda*n, - family=selectiveInference:::family_label(loss), - condition_subgrad=TRUE) - - full_targets=selectiveInference:::set.target(rand_lasso_soln, type="full", sigma_est=sigma_est) - - PVS = selectiveInference:::randomizedLassoInf(rand_lasso_soln, - full_targets=full_targets, - sampler = "norejection", #"adaptMCMC", # - level=0.9, - burnin=1000, - nsample=10000) - active_vars=rand_lasso_soln$active_set - cat("active_vars:",active_vars,"\n") - pvalues = c(pvalues, PVS$pvalues) - sel_intervals = cbind(sel_intervals, t(PVS$ci)) # matrix with two rows - - - if (length(pvalues)>0){ - plot(ecdf(pvalues)) - #lines(ecdf(naive_pvalues), col="red") - abline(0,1) - } - - if (construct_ci && length(active_vars)>0){ - - sel_coverages=c(sel_coverages, selectiveInference:::compute_coverage(t(PVS$ci), beta[active_vars])) - sel_lengths=c(sel_lengths, as.vector(PVS$ci[,2]-PVS$ci[,1])) - print(c("selective coverage:", mean(sel_coverages))) - print(c("selective length mean:", mean(sel_lengths))) - print(c("selective length median:", median(sel_lengths))) - #naive_coverages=c(naive_coverages, selectiveInference:::compute_coverage(PVS$naive_intervals, beta[active_vars])) - #naive_lengths=c(naive_lengths, as.vector(PVS$naive_intervals[2,]-PVS$naive_intervals[1,])) - #print(c("naive coverage:", mean(naive_coverages))) - #print(c("naive length mean:", mean(naive_lengths))) - #print(c("naive length median:", median(naive_lengths))) - } - - mc = selectiveInference:::selective.plus.BH(beta, active_vars, PVS$pvalues, q=0.2) - FDR_sample=c(FDR_sample, mc$FDR) - power_sample=c(power_sample, mc$power) - - if (length(FDR_sample)>0){ - print(c("FDR:", mean(FDR_sample))) - print(c("power:", mean(power_sample))) - } - } - - if (is.null(outfile)){ - outfile="randomized_full.rds" - } - - saveRDS(list(sel_intervals=sel_intervals, sel_coverages=sel_coverages, sel_lengths=sel_lengths, - pvalues=pvalues, - FDR_sample=FDR_sample, power_sample=power_sample, - n=n,p=p, s=s, snr=snr, rho=rho), file=outfile) - - return(list(pvalues=pvalues)) -} - -#test_randomized_full() diff --git a/tests/randomized/test_randomized_simple.R b/tests/randomized/test_randomized_simple.R new file mode 100644 index 0000000..1531d43 --- /dev/null +++ b/tests/randomized/test_randomized_simple.R @@ -0,0 +1,119 @@ +library(selectiveInference) + +smoke_test = function() { + n = 100; p = 50 + X = matrix(rnorm(n * p), n, p) + y = rnorm(n) + lam = 20 / sqrt(n) + noise_scale = 0.01 * sqrt(n) + ridge_term = .1 / sqrt(n) + selectiveInference:::randomizedLasso(X, y, lam, noise_scale, ridge_term) +} + +A = smoke_test() + +sampler_test = function() { + + n = 100; p = 50 + X = matrix(rnorm(n * p), n, p) + y = rnorm(n) + lam = 20 / sqrt(n) + noise_scale = 0.01 * sqrt(n) + ridge_term = .1 / sqrt(n) + obj = selectiveInference:::randomizedLasso(X, y, lam, noise_scale, ridge_term) + S = selectiveInference:::sample_opt_variables(obj, jump_scale=rep(1/sqrt(n), p), nsample=10000) + return(S$samples[2001:10000,]) +} +B = sampler_test() + +gaussian_density_test = function() { + + noise_scale = 10. + random_lasso = smoke_test() + p = nrow(random_lasso$internal_transform$linear_term) + internal_state = matrix(rnorm(p * 20), p, 20) + optimization_state = matrix(rnorm(p * 20), p, 20) + offset = rnorm(p) + + V1 = selectiveInference:::log_density_gaussian_(noise_scale, + random_lasso$internal_transform$linear_term, + internal_state, + random_lasso$optimization_transform$linear_term, + optimization_state, + offset) + A1 = random_lasso$internal_transform$linear_term + A2 = random_lasso$optimization_transform$linear_term + arg = A1 %*% internal_state + A2 %*% optimization_state + offset + V2 = -apply(arg^2, 2, sum) / (2 * noise_scale^2) + print(sqrt(sum((V1-V2)^2) / sum(V1^2))) + + U1 = selectiveInference:::log_density_gaussian_conditional_(noise_scale, + random_lasso$optimization_transform$linear_term, + optimization_state, + offset) + arg = A2 %*% optimization_state + offset + U2 = -apply(arg^2, 2, sum) / (2 * noise_scale^2) + print(sqrt(sum((U1-U2)^2) / sum(U1^2))) + + # test that a single column matrix works -- numeric should not + + print(selectiveInference:::log_density_gaussian_conditional_(noise_scale, + random_lasso$optimization_transform$linear_term, + optimization_state[,1,drop=FALSE], + offset)) + print(selectiveInference:::log_density_gaussian_(noise_scale, + random_lasso$internal_transform$linear_term, + internal_state[,1,drop=FALSE], + random_lasso$optimization_transform$linear_term, + optimization_state[,1,drop=FALSE], + offset)) + +} + +gaussian_density_test() + +laplace_density_test = function() { + + noise_scale = 10. + random_lasso = smoke_test() + p = nrow(random_lasso$internal_transform$linear_term) + internal_state = matrix(rnorm(p * 20), p, 20) + optimization_state = matrix(rnorm(p * 20), p, 20) + offset = rnorm(p) + + V1 = selectiveInference:::log_density_laplace_(noise_scale, + random_lasso$internal_transform$linear_term, + internal_state, + random_lasso$optimization_transform$linear_term, + optimization_state, + offset) + A1 = random_lasso$internal_transform$linear_term + A2 = random_lasso$optimization_transform$linear_term + arg = A1 %*% internal_state + A2 %*% optimization_state + offset + V2 = -apply(abs(arg), 2, sum) / noise_scale + print(sqrt(sum((V1-V2)^2) / sum(V1^2))) + + U1 = selectiveInference:::log_density_laplace_conditional_(noise_scale, + random_lasso$optimization_transform$linear_term, + optimization_state, + offset) + arg = A2 %*% optimization_state + offset + U2 = -apply(abs(arg), 2, sum) / noise_scale + print(sqrt(sum((U1-U2)^2) / sum(U1^2))) + + # test that a single column matrix works -- numeric should not + + print(selectiveInference:::log_density_laplace_conditional_(noise_scale, + random_lasso$optimization_transform$linear_term, + optimization_state[,1,drop=FALSE], + offset)) + print(selectiveInference:::log_density_laplace_(noise_scale, + random_lasso$internal_transform$linear_term, + internal_state[,1,drop=FALSE], + random_lasso$optimization_transform$linear_term, + optimization_state[,1,drop=FALSE], + offset)) + +} + +laplace_density_test() From 9b3a094dc7e925a1c7f8e6ad2edd5bb5ffaf31a8 Mon Sep 17 00:00:00 2001 From: Jelena Markovic Date: Sun, 25 Mar 2018 19:19:33 -0700 Subject: [PATCH 460/493] real data analysis --- knockoff.rds | Bin 0 -> 204 bytes liu_full.rds | Bin 0 -> 234 bytes liu_logistic_full.rds | Bin 0 -> 1546 bytes selectiveInference/R/funs.full.high.dim.R | 26 +++- .../comparisons/big cor/knockoff+_result.rds | Bin 0 -> 782 bytes tests/comparisons/big cor/knockoff.rds | Bin 0 -> 1114 bytes tests/comparisons/big cor/knockoff_result.rds | Bin 0 -> 782 bytes tests/comparisons/big cor/lee.rds | Bin 0 -> 122793 bytes tests/comparisons/big cor/liu.rds | Bin 0 -> 246824 bytes tests/comparisons/big cor/randomized_full.rds | Bin 0 -> 199392 bytes .../big cor/randomized_partial.rds | Bin 0 -> 195272 bytes tests/comparisons/big uncorr/knockoff+.rds | Bin 0 -> 193795 bytes .../comparisons/{ => big uncorr}/knockoff.rds | Bin tests/comparisons/{ => big uncorr}/lee.rds | Bin tests/comparisons/{ => big uncorr}/liu.rds | Bin tests/comparisons/big uncorr/params.txt | 3 + .../{ => big uncorr}/randomized_full.rds | Bin .../big uncorr/randomized_partial.rds | Bin 0 -> 193795 bytes tests/comparisons/compare_FDR_power.R | 4 +- tests/comparisons/plot_coverages.R | 50 +++++--- tests/comparisons/read_files.R | 23 ++-- tests/comparisons/small corr/params.txt | 0 tests/comparisons/small uncorr/params.txt | 0 tests/knockoffs/single_R_run.sbatch | 2 +- tests/knockoffs/test_knockoffs.R | 12 +- tests/lee_high_dim_full/single_R_run.sbatch | 2 +- tests/lee_high_dim_full/test_lee_full.R | 4 +- tests/liu_high_dim_full/single_R_run.sbatch | 2 +- tests/liu_high_dim_full/test_liu_full.R | 2 +- tests/liu_high_dim_full/test_logistic.R | 84 ++++++------- tests/randomized/single_R_run.sbatch | 2 +- tests/randomized/test_randomized.R | 2 +- tests/real_data_analysis/estimate_sigma.R | 30 +++++ tests/real_data_analysis/real_data_analysis.R | 114 ++++++++++++++++++ tests/real_data_analysis/single_R_run.sbatch | 38 ++++++ tests/real_data_analysis/submit_R_jobs.sh | 21 ++++ 36 files changed, 339 insertions(+), 82 deletions(-) create mode 100644 knockoff.rds create mode 100644 liu_full.rds create mode 100644 liu_logistic_full.rds create mode 100644 tests/comparisons/big cor/knockoff+_result.rds create mode 100644 tests/comparisons/big cor/knockoff.rds create mode 100644 tests/comparisons/big cor/knockoff_result.rds create mode 100644 tests/comparisons/big cor/lee.rds create mode 100644 tests/comparisons/big cor/liu.rds create mode 100644 tests/comparisons/big cor/randomized_full.rds create mode 100644 tests/comparisons/big cor/randomized_partial.rds create mode 100644 tests/comparisons/big uncorr/knockoff+.rds rename tests/comparisons/{ => big uncorr}/knockoff.rds (100%) rename tests/comparisons/{ => big uncorr}/lee.rds (100%) rename tests/comparisons/{ => big uncorr}/liu.rds (100%) create mode 100644 tests/comparisons/big uncorr/params.txt rename tests/comparisons/{ => big uncorr}/randomized_full.rds (100%) create mode 100644 tests/comparisons/big uncorr/randomized_partial.rds create mode 100644 tests/comparisons/small corr/params.txt create mode 100644 tests/comparisons/small uncorr/params.txt create mode 100644 tests/real_data_analysis/estimate_sigma.R create mode 100644 tests/real_data_analysis/real_data_analysis.R create mode 100644 tests/real_data_analysis/single_R_run.sbatch create mode 100644 tests/real_data_analysis/submit_R_jobs.sh diff --git a/knockoff.rds b/knockoff.rds new file mode 100644 index 0000000000000000000000000000000000000000..25aad7dc22a9ac7f1a5a30669cef4f63f8836d3d GIT binary patch literal 204 zcmV;-05ks|iwFP!000001B>8dU|?WkU}k1wU}6R_g@FV+5c2^sm;DU}FtC5XfCB6v z_gMhZ6Z?n9WeShW6v4%B&IEy3_E$r}!2SROI)Io9HP3!0RQ+RPFtC4?1_p3*VCpVI zvy(3Cw3<-~`gFd5O8H#XyDt zIB+0>Ty8Ew@x_U`1v#lu5uSql^3)8dU|?WkU}k1wU}6R_g@FV=5dQ;WJ|Jec|G)qS=rmNG z(f-m$=}T{wZISiB6yVfzrk!PHu%il84@@5;0|Tl$biPBs11difP2LmDo*fh0WNo&j zV4BCm1m?3aZ~|%8yu{qpVjx2R?0JYFZ*gi)d}dxrYEfBYPBF4za(-EAQDS;3OpqHS zn3I~9UXlS5;?GOWEK9}E4i!c>fEOZ+Y6N=$P-7{&8dO0pH6s7oK&a?PeFcp kY7wd!V;+oA0As)mU@p!pf-#FS@;C>P@A+@{ zAA!$-{VR)(Wy}ck-s5One_)JqUjo`%6YP24dY~n{$o8i^2eg?)`dD~RfJm3lHd5aR zQL@gJACfH5X1VI;s^_KXuzOjnr51}0qdC0Va%;i}&c@LA9RIcTU()-W?w9&}$~~F5L%?^N8#6B?7j2bfBd+pTG-l6C$UOE8{K)o{o%WN#Q!0;XU6%`C_dTPy75d=y z8n19(egx^9+MIObLNt=jTGRB@@!Y-KB*V`S4QjX8@@rWTsR?rACkfEdC{oFv>;i#c z_lA3il2DO+cDjY6IqIbjG?Ay7qtfGz)}qP+Jm0oe;BOoW9y?AdWR?~3lH~;4S|+lb zx}30D5&3$SrzB7WcIy+G9^@kE#yBeQUni%yC4B9_z+ilcu0{!8VDN=s?3u zLBy6FNocmxC_QYY58;K|XB1iJjSF>4)aA4)w})4rowPoKqx!92q9*(H6_upZ19sf2)OUS1}&^Xjql; zsuP7inWtF46yrn=U3GhV5W*(PE?V%m1@%rTD@kkZaZRJ}&Y7Mlu-9w9D$eo5z6H|R z`VaNMtzd_=)hvPUl{bmAR0+8JFnGJ$#px(Y;5K?L4Ma#*iFWeBG@Of9`VHrlaVsIw z?xe~Mc#J-0Wi9g*={4hJdctR;WM)Fw!ddaiQ#l!PFiHkFojTKfmi8br=uzkW(M;Sd zvQL`zCJKqy*X?hdtAG?*+H1@CO^A>>-}_p}6|6vuBl+s~$atc#a6W4(qMv3<@0!a* z_Hu_BPw7cGIxo`Kad8r2(wz$G%V>x%RaLRLpa@oV)TMExySOo9)4C1U2w;t;9wM%c z0*ByB;Ol7OR&{HD>GxI0dS)O{dtd{0By|qkfR3DLI}|rI+{UqmRXr&jCUVyt9J9$b z5XG8GcQp(3krtX-6n@YNXH5I1CU!B=v_{5TGi*2F;{5Cky|&_-u360Ct5IONnpK>y zl0mxR(!A?x=15rVUt=0g#HBos&E4(<6mza;Y|u!-CAOAs zh=^dNumZ2AGRVrz%8e%xaXt0)otlaDxM(NJ+aqKmUZd{NT2dE|+7a6_7^A>`df@bf zJ*r?+_s0uLULaFb-}IPq4N|L2RW=0_;eLz3#$Fon(>*oJ`)&mBUiTkY{h&LFXgdTu z55YQvG0Ms**OrKOit!(EQWEd66hWqc9!(>=QW*V-0%71M{R1h-piu3cX&w~!y<{rm z&*Uz*y%cw{BSlP(8z89^nxlu4n3AWFo%d4yQvQ)1Dj@fP9xO42-e0(9=$gT#>}oS> wI|kX6PNjTg#?#&QQQQY}qiEuUE>6S(k_?)=ICXb&>!1352Ty0~=(-F50Bx)m-~a#s literal 0 HcmV?d00001 diff --git a/selectiveInference/R/funs.full.high.dim.R b/selectiveInference/R/funs.full.high.dim.R index 81bd1b0..355a7e0 100644 --- a/selectiveInference/R/funs.full.high.dim.R +++ b/selectiveInference/R/funs.full.high.dim.R @@ -1,4 +1,5 @@ + selective.plus.BH = function(beta, selected.vars, pvalues, q){ if (is.null(selected.vars)){ @@ -90,6 +91,29 @@ gaussian_instance = function(n, p, s, rho, sigma, snr, random_signs=TRUE, scale= return(result) } +logistic_instance = function(n, p, s, rho, sigma, snr, random_signs=TRUE, scale=FALSE, design="AR"){ + + if (design=="AR"){ + X=AR_design(n,p,rho, scale) + } else if (design=="equicorrelated"){ + X=equicorrelated_design(n,p, rho, scale) + } + + beta = rep(0, p) + beta[1:s]=snr + if (random_signs==TRUE && s>0){ + signs = sample(c(-1,1), s, replace = TRUE) + beta[1:s] = beta[1:s] * signs + } + beta=sample(beta) + mu = X %*% beta + prob = exp(mu)/(1+exp(mu)) + y = rbinom(n, 1, prob) + + result <- list(X=X,y=y,beta=beta) + return(result) +} + family_label = function(loss){ if (loss=="ls"){ @@ -393,7 +417,7 @@ approximate = function(X, active_set){ Xordered = X[,c(active_set,inactive_set,recursive=T)] hsigmaS = 1/n*(t(X_active)%*%X_active) # hsigma[S,S] - hsigmaSinv = ginv(hsigmaS) # generalized inverse solve(hsigmaS) # + hsigmaSinv = ginv(hsigmaS) # generalized inverse solve(hsigmaS) # ginv FS = rbind(diag(nactive),matrix(0,p-nactive,nactive)) GS = cbind(diag(nactive),matrix(0,nactive,p-nactive)) hsigma = 1/n*(t(Xordered)%*%Xordered) diff --git a/tests/comparisons/big cor/knockoff+_result.rds b/tests/comparisons/big cor/knockoff+_result.rds new file mode 100644 index 0000000000000000000000000000000000000000..efcf7f176b120c72ca0405ad39e012a4fa0e1d9b GIT binary patch literal 782 zcmV+p1M&PHiwFP!000001BF#fOp`$n{w){;d=U^l7>!1vUc8v-0nH=?X*_Vi#0V;> zRellDmPfHf%1tGrH$50dNyLLu6SW2b6^Ohcp**C(4?k@{tvm&RgPx4Le`nUP#5mcq zoo{EpnfZ1}GolnlF)3l;VTvh?e~o2-IQIKLpUv!(4S}DHi|)WL7?``Uvp#(u+Da$Q zFXPNaDn!IsdGbnc62{!zAT185lc40$~< zhCvO+Y1Ds+|F8as3={n1YfKF$3Ec;L!hEXNigCmHF1XkNZ-w@#LaP$<4VT?I@6YLm z0OskH+#bS+Q9c>Q&KM@<&?J7+nNQ0`hE`8ftS2c>yb~Yhd5vd~0L>WZ!#sKyq!;CN z==NIOUMF;=dmufi|96Owuk;;V={p8Pc;1V8jN~P{s!!*MJ_xVHcZT|l|C33)k1wd( zw@ZczfA%@I7s97^5yZOFH@Q{76ymhEOXq&P9`dPg>XYJSy(o_O<#{Nc{P`Yk zUNM)Suc4GikJ1EbNRk#9?FyNS-vOK zQ&GZAjCP$8u0*nZy~Ao(o$Sk2*`{1+QcT>q-jAD^+BsiD+Up$kWv+}k>ziJ3kw?&w}4owm}vWA zdd}VXjxyxNq?5aQcIM2PGxN=SyV-4vEz3%<5|a|Gghc&ug?iJr2akCzQ?Cw+-fx~M zkN!hF(_gM`*nEpFm5pWnoLWxp@Aj1JOy5YCx4L5V;n~UyM}K+A*!!}F-rRJ^rci8u z?(J<^)Y7n7N3vMRd29RZ%lm@#8|(dde9zqRrBQfix{he<=Q)1pi-{xZp$>oLO7)n$ z+A=$~r>x1QXmwv%;ij83^n;cksdH3Ilp@C_n_l_mxUpY5o2E~gJkIdi&Fk;)y>L)H zGv1Ox^MGbb|Ae_g!Iqu+$X_*J(LN-QU+`{I#gu+}pr) zT;0?Dta=QNz`1K->)#d6JwXop{lsx=m%BoB?B^i=c>IU>zwU~O58Y8{C`ix`>gDse z?;`sRytpf<9_p-e4p%uxOnn0tUw=HBbA_UOE>f+fh6dg1GimrkS45f4Op_adHC~v z#*R6_e1=5*zzy@)%D4k(%u{H!D~2Cu8E5dLhtJ7*_~Vq8)8;(t3t!dJY4U*Giyuw= zy(jq(emHv@UrP?`GW@{2Nqzti!~-svXUPxr8T~FGW__6Ze)^BT8 zQLig~X6}33v;rm%VyesD38yj4qDXt&q5D$66jyxj2YPm4)KE##zPqRPn_wq-c$P0GV zf%>s8<3LB=$P@k&FZdz8tOx$kZ^e0H>XLC#A6D5<;Ees-uFTBymvzWK04F&g@_y8f zeTkQ>1O5^Z?8|y)CektVL=~F7W5u#p=UTmi{vnH!ds+`tv?l=D51F z*v|9i7L?clWu9aFq%dd){5i%mMH}<%f}E1ij9-C2H)#9jMtm}Elrh;XqjHG3aTjmg gu*FyG&o9ce*|Malu+$E~rv7^U2Ng>b*|7}(0MyG~pa1{> literal 0 HcmV?d00001 diff --git a/tests/comparisons/big cor/knockoff_result.rds b/tests/comparisons/big cor/knockoff_result.rds new file mode 100644 index 0000000000000000000000000000000000000000..efcf7f176b120c72ca0405ad39e012a4fa0e1d9b GIT binary patch literal 782 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 Ob^bqDv$@-Gg8~5V3!%OM literal 0 HcmV?d00001 diff --git a/tests/comparisons/big cor/liu.rds b/tests/comparisons/big cor/liu.rds new file mode 100644 index 0000000000000000000000000000000000000000..b0f07e964d8b9399ac89c797b572087d8e5c4549 GIT binary patch literal 246824 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

ia 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

tYNy@7mR08!_gvYJCyW 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 z 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

sHAyK|G*Q~r~fJtlI$ zQ|j_Cww2OyDs1YwtDE}{%BeIhuDhr~={cij4NuLZ$~yaI)9)Bkai?iZdbH4|%*Cy< zVhdVOxx>^pCpNvOqA~hwM#eQz*zPY+D=Or_zw5^VN&O6{xN7nZHLERDRo0g$P= zA2QQ6WRaM1Z`}KQ>~{%e%pPznXYVUAOz5CFfA~A9@K#@--D^D6YcHRo^)Xf9{|Y;V ztTP#Nn~J^L`G%J(QP~nv!;{uK$jRIC&X0MzRQR-Oj+^CTs`&2gu9YUEfVd;7#(z)I zjNuPw4z^IDye3gAHCKJ3e09Hdo$G7JCHBBW*O>R@_hge~*Eti)d8@R&d%yAY&Zm`j z#|{%ItV-{C=+j(^)~br>F*=8mHP7qJ?=yjlTw8W|e`hnLq^~&LW}qWEP8i;Nh00)x zANwk`<%h!*^LF*btDB4|bn(r*J^M{3ztNlDK21ADrOCmI9{1lsrOl&u_SY$-5~G7t zVqZO@K=bDB9IQ@J)#tL%kx{jjJuf8T+;2v8Q4x1r1{+e1d!Ofi%|ui;Y3kq>cJryE z*PA)dwkJ}i-^JT6ivsDLL1?CN*hqS_!zkHt%~PuGTYCD`{!)5ubLnsJlCBhTJaohH z<2z`}pV#AhYbcTX+%?yiTu!7&wdQjs>wTlr`%0ZkUWh4Yom1_`OgD-%ugVMVAkTkO z*C?0g$Z^OZ@yMM&mXUwbJ-31ldi3t^oZGF{0?BcIVOr~s=~T96v&O=oazAssZc|}N zI|_*@YH#~4hC(hra;ZI+N!6PVn}2<9m;!Ci_S&#QgNo{Rv?qIA3O%Z|U%bGAqTb!O zGu?9{m908D@Qd$4N}9Y-ThI6!CE1L$y40pOl}lS&7>)_2YLVIEfqmtESu%c+RGdw< zBV6oGi-%LKk6PcZPC=CD@#b_wi#t@jJI7|y&sJ2>boh$ZDR(GcdZo*#?sF)=WpMcY zCH7R@|MH0T8@p4|)41MqM)arD%A1F8r=Oz2Pj43vi`^y9BU%N&zHUH;@B9Nji!>?U zSwC81O#xNh^lp28i7nkaJM_-_sc$G}K)1uL^1QYx_)fcf27M`U(_pQpCRtRk(eLoa zYi+2a;1q86EuSkqVWMT9=gDbQD#yjx8r?{-Mm)e%FWn?M|Wd*WBMS z&x?x8)!*#VSx9j+R*&tv+lw-?_kJ_1+d`pdlJ__L>rAGP@4PbeSWcy1{d30{YtpkZ z=QeD6(4UIesnz8LuBP-g$H)GfJ&;m!_gLf~R;8NBKeb~bb;x5;->HcM8PjceOtOvNm=#L&u8_itTMu)(hcNd3yvHfOq1 z$f7Cx|2C1w|1mFRtM|+O<=mI`^%Z86m7e;m*K`q8`s@j7gsY@y;IMrW{SeMrPJXLNe{r;@;aViO( zS0O%~NtF|NwP+dYKt7kwy_uY#M|I0bF9|T6PSIAEi(_W2q+*>%WuC9DQp|&Px61}i zrNR>yXK(IYPR~=#zt&6q>3p?E&)G`%sKh*X`j5oXWSbDNbnou2RM_d1>F2E*sC*&)w=tNq4zil5#< zbr)A&XDuSBENH>urcY;4_MYNB-yf``cyF_4qpz8iVKuI!+TsFw_hXZ6@#7dODqc}y zyTOQx1I`?e+PsM>E0UN063PA7%a4YuCz(=8%;0{9cI8lA#^yC?ZLi7WrP6AHZ820i zBrdb@2=FrTlk$3{TkyQ%Zwrv%V3D z6yY?`ut$(Q@0;_X;Z@(!RBb!ka9P*+R8eRxJ#g>>m6z%7dp@I<3KFlj&-kH2WfR7X z-fAtOf-ePAcHLf1?{*cRP0Q;`RZhA`EG`6+PyXaXE0+~eR;R7|`-mPK%rJSnmx@unTV)4Je=KKy5o>5Zx zh|Mi^jj3QyNKT+cnZo^&Gt-A!P{>_XKd-~u6gRN_{5BI-Qo-LJPLHG~sKheXKVsYk zIWDEa8_&2<^@tOHbZ6ft%X0$_#;wq!h(`l{4p7mgtgfw=uSuohVh?Ysjk7YjPvOYIY%76o+mN5Fie zJr^jyLv2}9Q7pxXmao!tlKbnVUPtpAZQsI#w3vJ6|sdT`zVe^U?QQ>Ig;`c32%W-As z>5(bQR3?g8r@Hzl`AB=5TfF@(Rn1Cp>?G2ph`_*!dcFHo?b8-^!xz}eajEiOQTsBA z-@QJ`XkjzDSpRvx#xx~LTQ$IA^?Of>3fkW@dVCPY4<3A`)gODxE6o!1*_uy9qxYzY zd~B&&>^{mO_zc%q>~p=~$@w@1Se+L;w8kFocRe4F#BOms>bFV$6 zmp6Om@v4UQ=GCmeoG8El@j0E|3$~E^OxNV;VP;frp!rR(C3R`}g+e+WwT>!GCmZ&LgVsW_fteWGjjY*lD=g z?klB!dGT~Xyp$>y*tP22CY91XmfGutbf##NwE3gEhEUP&A&!GPsmRaIcO40hqS}`! zYdh7|P_-3HdFYf*)h>VYdiRW^ssWwK8oKv5_~G_CGDdo_i<44!1P@df3rxzf;T%t3Ov zeWFR>%_)>NHf4csjr?={4c}_I#+<5ypVh6*Qlb1dRgZ7>)}=)C%C2gD!zjn;@6(t~ zA1O+?V_5go`c&VxpZ$|7m*n~Eu}%B-7tr0!brn1R9-<7t7cMQ^bSA6SpGKCxX-^04 zC4LKeDYxsFZ*}@k>P2-2laIT&Sdir$Uq_TPl?0Q#E(MiZJ%d`7?Px2d$N{+#(Ubtv&|Ma$x?^C`Kk z=96QfqddMIDnGYMM1JK4BX_6YqVU9D7fcpjqJq_lC%@~c&~Z2Q3F;Y2RPZ79>!R?N zRD9q1@_RiE%Jlkk{FPTGW&J#=FF%@8UeoJbie?2B-JN8(>T!2UHPG8vX3>UTuZX#n zmljB8!{g@n&p1T|>-2`F*;r8V^)V0QuQ^lZ7VQ>0DsNN#uAR-!8p-pB%ftOMJF8Gp zul4&bT6$6Z;SH`2I@;1H)x!3MI!bh6%YvEB9?H+nvhN1Q_TA;U@2A$m9qlNiW2atM z*ZNVp)A32l3C8q#=M!Z|vntBZ9)Bn3nKKpGym#2QDvRo-M0dA*YfiqK12vj=JWW}} zS)MzomJB*Q>9t5qf$qzJ7IC-VYwCM44oKfbYTZwi>TQc z>#n5mTSb~(Xz1y0ly~aPi*elxD9Or1f7GkvlsfFp`ocZVlsn7L%V0|cEuYcxYVS)* zl(@A+-}HV>$!18OZf*3y=-yiV&)o-@Q$B z*L>eMC6N5bKhLnv=tv<0`(|FU(4%V8`1zug5~}N?{P@?<8B}9?c1xf2^C|jyLddW+ z6DhlT({>NNVPsjnt=;8zaz9~UIli!ZEWNuvqU)rD8RX>Hed6~H1yttow(Fgj^8X#K z{5NB~2KjGK|C=rU9V%jTO`lt4QbB9$4`g|oN*~{=9(ZvTh0IEw^WDXZYU6)As=IxS zs=n)JH#`1>dlyti{oB-Q_NsDxvg_ksfB$=A z9yR#J_`cjOazAdHbyjpx@&A`-d^x()Y9gKLeb`}$@+nHYv8lOZUNjXv32Oa#)D$Y- zJ|pZ`hf9b}E&<%+{Y6Wl5D9aZ4!aIE5XLjCucX5hb5BrNe3C zDR1$T(8m##l=Iza#?XPksbpUH%wxB6DKYHM1pnP7R8=|pw`=ty%3t#9zVG~4O6s#N z^Q*2GJze8Fy6(g+3Vl-K`7WrL;&T?PyQTYkb6>Jf>8{<+L!aJc{R}whzlq+R_j#jo zV+fTsYp!v*S2pFkcJRAq5K9>wTdzBic#vvS+l@9IDfiD^*EI3lc${)3TYR|nJdvum z1mFEMtS{Axx^?Kf*^Gj<)kNJ6?Vya#&+m*_s6=sXUw$naE2H}M^QKQ*Ttxn(PJX#m z)RQXap7Qvr^_q&#A6?NfcLxOr$EQ@ZD5A9J+;Wo}>U49r_q<2n<>#;Mj2lhd0?7Gw zt6p!9zo)99RTUpM>r>JD_%E||9j1zvF(%%+4V3hHRG9urYbsI>8Xb}rO(iJ{uN^tp znl8R@+CI)hiDK28td5IlK`BqA4cm$|sMf-Xjzxb zeYVDvLF@RT+ji`x!hS~!d;h#cx7t-KaF>6dlFYIR8(0gf*pxfDvZX$ys9l^rrrmF< zG>o`5@LMI-9Y65kg?=0IoE5NYMKk$%EV$AqJt&p3$hINW=^JH~*Tl5nwuS=tm@M1Z zC6KcAb?l@_Jhf6+c^Z%h>n`#c@Bc@@Pi zJhZKRpf4qUpZQ~axe0m3mlzD|)}M0H`;QU#O{RA(>e|J>A4P@geGcE#A4~VGGM^nO z(W9839VSh>dyXpHS^ut)U&wd;p?yud2T{$#oG~4vw^8lgxI=HvOQhkFC2j`~7%U39INT&kjwbeS6=?IJv(#d@fQ$*Oa2N4!(W#!;Z?jE}P@v zs7Dz$yk;*dS}4!6_KZDrw+ZFXwOsF~MUU*hUvca|(wf2_UJj;t8k9J( zrB>YRF_hnZM5n{z3aWR@ZDm&5f$aaPJb5{E4rSgcdnG%xo;+6#44rkeni5-CX!I$c zL<#X5^u1pMQb{|H7h39KiVSL~if^w+DVY~F2Y(t!1trrKzPx#h)X%t#|5KnudHqYh zp0p~UY{|IX-ra6ccv_hC)(P*)#;Vh~IaPNlo7o?CiqNOTc6R==u4hu|9m@^_20o_3 zrLP9wGC4;@)23LDKi`pxj%&<&?R155j-J1Hyw-)%S{zRHU;l~Xx79xxU!qFc53EIl zOcqi8S*yuA;*U_-;(FRq7*DyTZS}*Jt5RY5g0F|$##6=fXur;b)yXnQCqkyZkCIKi z*QAxp?O;ho-Pff zs$2aE&ODw$MSo5@jMA4s$K^xM^j;*UvSnTaG=Hd5VUO{%RXs!H`Ln9?WVs*nD0sKa z{-}iNGK1EAT=|QV)V&*0%;fRV;)lnLiD8t`!_?-3K~IV)i2L)XN*-p=1$9% zq9bKHl&He4t^59C@${(46HDucQ{?>W)cpyQ7gAQ(Nz=Bgds9h_8Let&NuKk&-0kyr z4tXZ5_jqt`F9j8^+Vr5lf~uT9tZ45ykm`3lySv&fo6nglvozJFepDlM%N;T7B6)8c z%S`6!Q^AQb*6k`)DCk|o?1qnN$Tty{HiL1W$2q|4NlDD~xl z_~=y*RN1G=oEuv!DA%dXVev6rs%)Ze<9w+z6>A31c+$y&g6DTkzZE%zDwe%yW9B!9 z+;kWB-59i*lWCcG;B5 zi=%4X#~-Ge`&Vwf*yu@hk^Z?oqsCLQZ}+dq*36~b4@U>qYI+`l|CTL{UccY4XyH5pAUP)f>yb}!{`^)o8kNA#uB1)N1{A!bpBbC)_ zG;{pag^J3zn#T^jMqVy)h7V(oQMEypQ?IiQ|EmYb1{fWt(~7qWreXV+h3K(A@6eM(*2jn%_c%Qw?!waPU!e;43p!KCB2uAlzez6Vu3`gFQWuftS1 zr`XX@?H2_{KQJ+9r9q_@;=t8PTd6o^c9>bHExqiVYV`P!A-CHzlUKX16_e|}-lJ_6 z6i~`OOB3T4)l|Dxy5IfHa;j~%du`ttGO8Qd?aYc7&8hO5=Nh|%Vyb-USMT~Gp4jRi zr|#&VqI~JqlS;03RBHcaeA@C)RCH_1<$Y)5`CL|i!)nW3(#zX!Lw5oV$&hA`H1s7$xW465|L8`n&-O8y)tY_ZVlPEqdj{`gPnN$Dp>_$}#LL*9J@ z%$xTrp)C92&f$^@3LdaCXa0E+6-F-B@tjgY;gedt7(DF(g>=>HdqiYILD#M>zjX2v zg}Zt#n#rC~(u{Q(k48r-o{M#=`L27%0x5k$#lEXY-;@8gSw~8C8dGjZrw;ixSyZUK zE8OnM7xJmQ=8VYihnO`e5Jc`pB+^8cgw51opRi);e26((nE4SUiNOc(K(8? zG#8yZYEMarQa&7PWlmMwq#f*9-k~zlZjaVwt*CaD+2GtUzsTv;x;Z9!{i*m|+IaP5 zw<+h^`YWBrq*BVl!m07Li>Qh^CMhSMq3Y$;J3sa)rV6jW2TiX!Qu&Ol2TuLIPnAV> zUEPdslSA}S-`BrKQp9tM_p-kBl)CFor>@_xP}x-PxA9LMDJ&!Bq`K-MDqb%>y|XZu zQkvC%ca~<7bExu|ks?(}llY8m-Rc>=R`Q&e<*7$iK{eoVcwlJIocFad@g+T(4SP> zKmPGp{VK|~J9jZ@L~klS6Bg|dluH*Z=}BvkD5|wSdp+K=4F&Z*`|R}abPCmKUKqa6 zTJbwGrFL(hTba@Glv`?j2K1)PN&3q9j}}nn>?c(>J-1SIP?MHD{_d6I_3I;+uk)kG z^cL^W`sq`J#?PJcv(zcM=#7@~AQLKkeQRH_0iUpzy--BPMZpIe-$Igc{e-VeTV#*s3*{q9>D(Ui(Hl?^|CT~C=)^>*yPagZuf zZd4!Nbcm9zhiy^%SW7j9dcPkSE+-Gks5{QZazF5MyU$=_XR7YyE?T|sGu5>}?XTZK zo7_{*is}w0D!yMp!GI^rV&2o6UOt0Yngo*d<*6&SJ~>4trwwmY=R_($zid{*97_tD zH2O%Sl`BQhT$r>%Zy|ZOug<>IOpedJZk(u7en=J9jHA1!U8EX~wfc1lR#d3=Io$5; zQHs_Xak%x_Zxs9N%H)m)w<&6;Nv)HHJU0~iidhSAt|LIt533eK3M#VjK z&wskQmdfIus7%leqw4QVFSwP?ql(cF`ll}wQF?f+bK#3`6q)hy%xJ9&s(YO@a8>)` zR8%^0bmzPFl)3S8Z7V-Hu5r+KbmzMo<&^&p(P%P}=l_)T#a8ze6-?c<&ce-tYI~^b zsif*r?V{Z7>n1Iyq|aH$+}6*gG~W=zj-x!NAYP(%%(IFj?+u^WKj#ru)&_{zZj)9K9jp!LTOpQ4nd=_W_xzS53XUz7}f z$o;rhUz;7}11Y{CRC~=EJ<2rxl&H2tkIJR7na(Aqlz)9vyh=bUB@f+VSM*Aiifx)` z9WGc)Pp9u_WAj@~L89l$ZBEovb=_;bRzIC7bLi=pGwyDrl5zcVR=e4gWqinl;CDTkJXVF-V#ETtASipMR(ceq2m13pd&;M;6HQpu1(> zXH}`_aJSw2=1nEHcfDU*95p0%FXZle6M4QlXxwe{(~(rR+bu5sbsiAE-nY!Ss!?F)~T zSM%a2`qIjI9}0$2`MP~aUv8J<@3QaS>U)$ab7!tYw(m-coZ$UY)ytJ4wEA?qenx`| zwmtf;F3)$$W50QvoDoks+N1KKi%imKKb8o zuNoHknAq=Iy_|P1q>|-V_uU^Yw==Cd89nDjQf*$&wNkHQO0M@<(5u&6s=4`Pwbk!b zihB6$TAQ(Q|2^cwwWe5TD7tN)tw5>tvQRU5yuDefBQC9LnEzuS7eD)|WD(pFxnMAqmX?BH5 z_vo)uNnJwk#(KZq-{BIackS-FET#ojPigOd)?g*Qdso|H-m8&R?EmA8zegTbPI%I9 z-{c&{_YJ&Z8tA*;nBuQbc==+vH9e7Dnw;0@D-KlrboUS2 zoj)i`f6ogY`R|%qviEA|W|t_mXWzqX9_**|%WKar3cg0kZ|3yd?jog}3aBKw;GzEG^_1_@=E=Ynf5~5I#rhhFIb|QZddEEbBGspqTKm7h zL4{vEUPKplrZ?l4giPBd|K4pUT)uN6h+Y&O`17kFldjJ4?6-N_X37tFd3~e%aH?uy z{eF*q55@0vL~GR_#eaPH=t zQ>>|^o8-+#(KHI~y+34cpZ-)b>Gt_s>tqz!H{_ScK_jaF;Z@dC+@JE!Uraq~Wld*a zJvFSmApcyJG$!tj1!WCTN_5+Nh~9ZjEL;)%jH-IB$nCU5PkxS9Kb%{4nyPo+@Y_0I zDuumUHT*`KK#J@SsCKU(@x#GCdGhfdz4oVJO+1Lww4 zt>4&?tj|5^WPH!NN*8^pc(>)c`R1>wJVv{<-i}>V&~V|>*uEX9s%YKmY5nF?McW>& z`Yz}~`R;pP`X7){VkiGK8DGAWekakR5!bNwjF{p!9j_NX5Pc#ZU5aOgc% zOnOqi?ZR}*>;F4HPCJZJmc8umaHN(hpLa-7YFa?0rs51Y-=&nFmv~aor+}(<&J5W+ zT8FB>E*kjvd?>l6ZCIN0%8W9CgO{u?@uj^-)z>!j(x$WhS7>H;kjLM#Q{P;>vyeh( zS`FM4>r5q87k>9qNhVLhx zqv{D$CmL1ur`+fjwgFi^sM@E?toki#RBGdqKQOK*=P8fVFG zlriRm@mixO`H4E;-+pmBd0wz4P#NGkMBo0KBJ=1 zJ$E%Xljmbkc4_)tw5HPiZIw$^CQ^Pk^`q^qI#TJPnqRf<3FKzBV(H|a3n|Q{+V59e zZK|4k_@JKk0xBL7FnH<|H>%QI7;CqNQM##9THk;pRHj$)wZ>2WJG>}=^sMU%s_zqL z7+(C8!W`7kmGzxK!S|b;nWtqY_iIviV%s*VFIqSFb@COeE9{wMsFz8FrlQ)Yv1h5O z<)5svH!e|CM{4&o%!KM=2DtcrE25;sqT!!otjS$Hxqf-zcq;y|Y1qlDd*t|k-hegH zp%nD(#*gm?9qHZOv(8fERaE#Wa*%jKGpbohwOb|?QRQ~eYmW-@DbjXc{{7#vbTde0 znA7%C6f~)m{T`j(lo(ypuxYS5l`c)J^{+Fe*a=UgUUYg(Wy4kU;#&q&v2k2Op|};5 zZgRTzWnnngzIMIcw(~4XcD-)=eZVPtIQq`=upRO|`I}*Eo1fv7+Q&*&<>N>yIeC4! zm8Uxuo~``#rF1t%dF;Ah>E1$~M{FDB*D;*Zx*NSVeDjU`%BxniH`J$UrLr?NvlKb zzESb{cWP8Klj;JuPRsq9Ov&4ZZJN8JKZQK~Vfym(XE|Of8XmS{99e|ydN9mLiEKKR z9GvY^KpBJf=j|vvM;W6G+*;R_P|m_%PHt1XQm~VX=B)hJRQav5!L7UTBRfDL0#_ydGQ)E;V^CcxC!ip-l zzNzv*txg4VWt(l9_MpOBUBSnUsz(NPW78aWt&k{wQ~J1l`9wy4^qd1b>J}UnGS4}p={v8v@aY#x~`?x4gD*ayU?d5WT5=RqnYXu54aSad9gnJer47zR7@od)1XF=TgRV-Owbe{ctH^ zThA{P+OOTf8Y?wQFgd@+wCOUc4fy?HSQ~vR`SPK^$*@P1@ycS^qMdG3el)x2+Vchq z-a1nE++8&)6B(>)HDx84b%}d@!FD^9&YC$XsC+I(=w>!QuhE8_^AGfj@0v)}r5pP` zt^6oI-zGX=48#=UU$k}p&l;-fqP=0y1{vipTk$&R;atk`?(;)5{uJdO_AI$`$B@c< zm1|8GZ>6AvKG|b;$#G>^#^udkLwUG8nIGCQ^2iZq3f9xud#GzaIyv#7XD9jZf3E$!vYWqqQtsRHV=GP! zreuSuMw8okP(b(A;t~FawENMZiYGNnlsu!a!2-#8Dy+yb*?z8uB9eES-+rh@@ma6; zZ+>M@xv5>7{y1Ys<({^!O5vuzG*V(01crIyM!7l@fJYlk>-yTmYSm%23`=^mq zaip)|{2qQ(^S1w4uc|MUG-~0wRejsi+n_U>YhE3v6sv)O*X~$TmaV77feG@zH(B@A zY?&Te&M58KX0bfq%-c!h3Ap7rLI3ro7(jkiCO$d;hBM zrxZv&HH)l{e0opyf$hBdJ(uT?v~ScjgI$z2PD|%p*eSBPeB^w3S|G(pO>cWgx1ih) z>jy}ZzfsAHm1D1%9HiU!oq{@M>ru_CfIgbP&Qi7e<_)tps?vR{ug4-T?4qnbN*c=^ zPN!mv{$2WAwv&=3&@n`1z&2P zOO|+0_EN*CN_*tE&}&wtt@jm5yXfk^ckL&t(Ei+`W?e@rzwZ(1x%>nb>sEetO_x$u z^qG74b1cZG#p=kl&6TM9k@@SNH$-y0F}#w!x<+-0zou-cGN($D!#xgf&!xmsIo(#d zs8Q;P<7S$3yeWFrMBBSVgQ)sv>1zG;ttfeysoIy&4pg#gU&_mv?G!Q8$!PFMZ>n#5 zuG{{_LzR?NRpf3&SxHr?rTl-J?%lX&>jC+NnvzntE&u056>ZUfR}y}u`+u&QXo;kX zOR+?8DdU&AVt%RkGm);&f0x>tig(Z!X)7+Jn*8#=f47NPTk*bP9mP9HM2c4>+M4{5 z-@yMh9saLLb!3W5sp1BirsBBhuF9*YG|f9bJAcghoz-> z+a_B4$!jTo^d=%5#d8yZMJa4rZd{5-DAv;9mx`w;*5;Q|EyblSTq@p7qNOkx2{&aO z#dmC?!|hB*@pPL=`Mvyil3#L@)8cj}Oc;F^CnDI6v#96p&Qzegs9*L5Xu&EHcO?$=d33+4ZAR{rl!6~!S^k#gf!Tq!<* zio)1bxCfR0G78JqRG5cI@mQN^i@A|2JU|m|#UX2=%`H%@t$1Itn7=CK9+X?4gnLD) z;vvW{#r%@{Renrl{FBMJ+mtEHp^1#2E?pUSykKjZ+F;9Kv{|rga7O%h`QJ4-M-hKk zB5=wgDSuCqjN71Cf_BQEzXZ;lM8e-+q678_=S)Y!-%|<>SB8!f>{JHlQU*3F1Dln> zS?59Of7kr8>5AZWaN@e~d31FY!Ci-2o8pORafc}XDY>KN0iB0U5x+siU7t382W=6* zeA<^Qma%+@`xe0R9mT-uRCdeJB4*!rkV7c6^ zbhuxa>Tna}A4gZ4n;?fj0zV1yA7Y>;#3D^C{-89`XKJD^1uzP6TT2)HCx7@N34&2> zINDkWI>D%Qxq(OkJ4nFSNdP10Xn`Ta=hx9jLk1&-zm>}1S{HmTd@q?M`c;VM61Ydo z|CW1*{~59-T!SA*qt=1@6+mA_@vT(E|J|zs9++oOn%wVdLn5Vkl|KtXBE?fNZ3%b5 z5JT@dA&C2V-r`#&IU(I{a1cCdK>|h!sy= z;2U}BrNdJs9UZ`#+?+Y8<@l+IOjGe{qYhD!4DrH-E_ds?;M@ex6C8y+2!jLUcA*6} zB7(Rp5}bnyZlqwF zQaHy_EIy&VBPPJy46u<*hM0igqYHnl3!g!dYk{B8h0nl|or>aa6`s0lDNwN-3-D9G zVWyUt=WBRk_^UD=0Jv3&xLt~P+9cvYRa=2kn(#*}4*&qHxz`8W%t0-BeeU0-n!J1< zhDrjj(CTtm&(D!AKXbZp0~QLvL1Uo+L9Zqlk(L;Y9Sm87uS0^btpx@ShejI=O z&fiB2C`K#>hYklt0tZV1-$jB41&S4dtPX;o4j>CDfP5(wQe^P?u`;U*0G=DNio#o| zD4dIm6fi2cOYU(+9CtzymU|UJZ2)WykSou5cmg3PNEE z%-r~q(t%=^Cda! z9ugV&*+$D={4?lqFoAGH(wNJYLHPl4Ii4fx^3$UWxK7tv3Yk2r#aN}Yy5HwOT7`Px&gU=uVoGp={`vn7so{0|JFNOYw6mkqH^a?P6 zlR>zV!F$T2h`#}6b4;x`&MFFv<;VfM2Hak;p2i)Xhyw>Sa}IvBq4UN2u2@>*xLv|8 zp$aSIK2^p&c;lTf{*%aUkb6X4k<$f7pb5@J&>O>|05}w^dx^xDmqB=k97h=THQ^fa zHN?I$EGS@(1~vt`m;_%3C$0l$OGkvZhM^wvJ8aIv`OtxLCWYTYm;-_{h0iS0`iCRN zdKd%)U4R}uH&;=dXcZs}h`3F1-hfC9bt`bPys!mMRttP6FH1lzf*Uw*9Lg{G4PdGK z1nBVQunu>II^5p^g+Ru=J8x6TFBPl-jk#VBzpY zL{L=_w)??T0$9fKmIN$Z0vVqmi>~# zR2M$8uHxTPQTP@W#qXh__*5z~e#Mh501Uh;CgQJhV1>LEUiA@FX1V+1;Yxl9fPoVd zprU{{l;=|Xr#5(9o>p-vgGE}N9AaTx6P$pcnE*v0El7H`bot{Dfhh`_ z0AMy)QI&wBlfWaEh!IVKGlXEP1IIxMMFc72UQ!u4H#9kLbnu=s$faZeKsd5gR@jgt zQ1R-$iozGENI8xKyWzh$$K6eMYf$du6weooMa<2OBN#a#!HqS$m-Nf%jG{=)6i4G(pJhVb5333uhta+TqOob=mQefvnj;+n}7pN2Q zY)JqkfvCr$EdTj*k&y>JNec`@3qqn6JX9o?XyM;tasq@5ZTMTUCWc%jM8WI2Xsl?U zP#c0IK?31g0?7}CT&bWriUm&qYv5CLp$V!B4G@k_R1}a{MZ{AKC{uEyO|ymtyeMM8k#GAsWcwKq5^CGeli6H)2JetoZLL{J#PLRbk>B z)obx$q860Nq20u@UFbZ4v(@Gy8UY`adXRL&gFKL)!TunebFazS5_0qikdaqBb>UTx z6OkCjoh|?J=yyeM$z3o%hd}Q`4l7Ufb-`VW8qJTO*w3>uUCs&<6rmv9(FC(Xf~$Z@ zEogYbQP4r~0fhnV^2^XC15m&UCmb&wECwOz6mcaSYu@HoQ9uS2{-9a(m|3UhaFbXA0&4_)NfmhEzZh`u~M%C1_5-k-}ao)bg;VsSReSt%F$h zA3cBIHtE3k`d95oU~=HCrBG>*!u{Cy)CKIz&!YM2P=u+JHeO?3$C4!Sn!vL`Uq%ARPy&HkNPUKDC?)EE zIqAUX(ZSX{cupyn(UAuQ)q;O!_L$8h2NjNqF7(lOc~TBSxlhFU4!?mvRuNPsp*+qX zwze1|KeRHrMM5(j%9cFL30gng;P{8+xJd5jc>SEaXx=&y)E{|Z=fg@(bUFE1&`ifn z9}){qFeTxb6PPU&dIa4cs19pECj}|ef&>d5FS1fakY$SiA7c`RqflbN(*mXxe12q~ zO0YNu<}87KO9!gqLJx|}d}K-?Qxs~H3KLM~`IW-ia!-hjbudgRfKQ-#f~$lgI`E>v zFdJ*PW8CJ&CLNu|A~YB#4=aM?yzyQ*N3zi4k?Eq@fk|OQ5gv~qXNMF-3yMcbe8M`V z78HF1{0{&Lm?{YfQCLccJX#E(LJVdtVC-YP6UyEa02P8d05&59-WAO8AD&h!AoL+K z9~+I}A(7k%DW-rI0!ftOO7Y&C`$miISX1ZuH}aFXo8$u&g3!;~m;84Y zpi^M<@xaZe8HG3$vLd(yiZeHOV6Z~ZQqU~NrsY3a&{#-Cl0CRx5wM^|ItVzyEkdLd z<8%qKHQ+rZaK40mBV=(vQxU+hRMdE+mH}e~06{>$zimtgZd5S5q=n!U8i|5w5hTtj zl5~aHs3;yDw0F48@wli3Qj|x8_PnmdZ3?p^ zUi8Hg6Amk2u0*N{m%K8i@M}$E03e`i3C7F`{W9oq^71aH*$C*VkhciX0lI7;9%&*$ zAEKg`3|%vFtueoXd#ZReJH*{If|b+8RTa$MFkZCUYgd0CcdCe@DDqMJX*+? zMmvRkANeLo!274W#zYL%e0SPiTejCF^dz-^&`It zYGP>f3VT-O4P8#jQ<%8o>myF#w$9sATJS2jGaPsUwF?d-L>wA`fs1$u=VA>)P6{vS zax;Q47#y61DjLVc5}0b`eLNi)2IHp?I4LmeCBu?G5T$_ik7*y&WswCX@XcU@s0koO z$c*!Ss@%_ML&1WFd*nzrp1*NtEaAmeY>{#E z;>AcIO98kG&?4gmK%Ca*4wgG^PA?L8V4%jEd*m4tSY{1`Q%s@^z_;hXf{DQs+mRhi? z2mW2qJApJ+Q0#`7CjksEfr7grM}Y68gFO|&{1`GA;Vfcd8q-&ZbHJ75li@sU@YzWj zV19nd9V&=zfyR-b$j4nhPY5|PRKPO>K@J?B@L06-Rq&`IzJAlLwpje}nzJOT&|0I(zH5{VSh|B%3dj3CK`C?FI` z052+-PW(r&MT|!SJunnU;BSS*3mmk8`?+9(7Qa#)kH%HsG=uLIx&uswL? zgE!8E87Z&6aHByo2hT_atYcsc@k?aC0l%1gcu-&Bo|xCdkO+q$o}VMm3KW_?HXxyQ zjnXr45dO&)0$(i{$3u3*5}m=rXAP<0Vtm7qc{ z80AGa618aQ0=`=DyWKeJdq*Q0m8vz7P@*qBjR*GO`5jv$(z~#cR3uwb2s~tyZ6`%@yChui) z84lh@xxGZ!$!2$#Bz!dH%Z1$co2RWJ`|B0?{P*DVC)4tNz3FYXArwF(Ho zP{M%e3XTCd%-|slI7I)K+?)UnG~NQ#1b{1$q!W}Oz)=cxkg?;9IUCq2$|?ya(*O_) zBx#W!hYSwxj09u4*mA-A4IH-)I9x1C3#ZYbWB{L2z|??}xqvmS$g@-wh5>F6I2Ved zAE+o{Awgk45aV$$gS#+fzd}-vHZK0(1RgXYuCj|V8i)dMx>0e7*%Y@BtPAt-i~VO&LSeQ7eJlE0oRUD| zCT4Xg6)u>JL)tuG0s&0}*-F^{+`$wR4vWCC zPl+|*vKIn;ENv_vh(X2%pbjui8=oHKhZ)Zwh&aIfDKFY^ zl_7bQ;FtWnAy*Y9AK=*X8+iOeMm7hSx>y!Op5Q;k{sn_9 z0^Tb&=OLv8%N3@b(5MHrqYYLp)Heg<4^}Lg7(f(+L=`|~f)ECcA`~vsfezyU#}0!%9~>_DjJW14*A8#hpBL3;-l0l=si&nHj}1*+@_`*?ng z@&w%6p}hlBu+X-L=`8*aqY3kah+BZ5ZO^?lidVzvD^6^qFg2FC@g9L(09YQnW1Oyr z0>?i)JkT8ysQBOnHYTe$ZU9y&8woNLVIEz83E+H9{7LC0D%b-Y6Xla%2!>2O&YInFC1%Namozj-!tJR6vw~ z9zCkQKv9Sn3Sl7uRD%AY)WOdR43EPsByXnTZUSJI1FII`5%0D&x+d#?ULD{HX3*%p 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

wp|HQ@mwE4K&=(WVvW_7f9zek6N4%gJxVZ{%ySw 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 literal 0 HcmV?d00001 diff --git a/tests/comparisons/big cor/randomized_partial.rds b/tests/comparisons/big cor/randomized_partial.rds new file mode 100644 index 0000000000000000000000000000000000000000..b73ee7c4acb6f7e2ba1c29e4972187ad2ed0ecdc GIT binary patch literal 195272 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


jA%ZvG&G0nCG@1;>D93eFu@HgZ1?ECpOf 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
    mV@+=w^9v|Z^){5@@F8qD8;MI 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 E0Kq>~Hvj+t literal 0 HcmV?d00001 diff --git a/tests/comparisons/knockoff.rds b/tests/comparisons/big uncorr/knockoff.rds similarity index 100% rename from tests/comparisons/knockoff.rds rename to tests/comparisons/big uncorr/knockoff.rds diff --git a/tests/comparisons/lee.rds b/tests/comparisons/big uncorr/lee.rds similarity index 100% rename from tests/comparisons/lee.rds rename to tests/comparisons/big uncorr/lee.rds diff --git a/tests/comparisons/liu.rds b/tests/comparisons/big uncorr/liu.rds similarity index 100% rename from tests/comparisons/liu.rds rename to tests/comparisons/big uncorr/liu.rds diff --git a/tests/comparisons/big uncorr/params.txt b/tests/comparisons/big uncorr/params.txt new file mode 100644 index 0000000..dca935c --- /dev/null +++ b/tests/comparisons/big uncorr/params.txt @@ -0,0 +1,3 @@ +n=1000, p=2000, rho=0, +snr = sqrt(2*log(p)/n) +nrep=100 \ No newline at end of file diff --git a/tests/comparisons/randomized_full.rds b/tests/comparisons/big uncorr/randomized_full.rds similarity index 100% rename from tests/comparisons/randomized_full.rds rename to tests/comparisons/big uncorr/randomized_full.rds diff --git a/tests/comparisons/big uncorr/randomized_partial.rds b/tests/comparisons/big uncorr/randomized_partial.rds new file mode 100644 index 0000000000000000000000000000000000000000..a4365b6a31dc3ce497c86f3e281ef96cee1389f1 GIT binary patch literal 193795 zcmV(zK<2+6iwFP!0000019ZK4Je5HkKdex)M5UBe6jG^ZmEubgsidf+l0vBzA)!qr zgd`zbvS;6S;@J0n-_LQ5<5&+RsnG8{@8^Bbc|K3?@BC3_?wM=mp1GFqHFM3}y4-AR zY>V00IoR12v;XJMRg8Zad5f2`u?d~R=>Ez_B4>_(zEYcSmDvaioloh7``UnHJ^Rd+ zau;n6-kI~CEk)x-%l5L!V;H?3lQ{>YeQC( zlBCefr`{8DjRQI71G|O-%+XjK8)Yf1juE!3038KKvd&p2RRyA$Fk0O0 z_-Fx*`Il9`&P`*a>(agW>U@kD7#SxIj=*>N(}lb1uA;1R=N2!y9QZtXQmCn6&-VZR z&~P__-?74!nI^jmJUg(&8&r0;nYT(8G4TFnP}4aV(D*Kd+^Hcj%at77O7R$!L*+u+ zgB1aC%zR7RU(>~B*f6r$-Z(9H3F@*nOHOJip?Np;;FU@WhE88$Z!K&=gZ2D7DsLc2 z{JRC#XUL%Kxc`V(-U%k1@zjH#p30S?|KW3Q_uEh4VG)+Qn#=)On)KhY{wlmP=Qx=` zVMF?^cs+?f0-z1moQNMij>0Vwah7RMLB74n+bd=d>NiblYkZ!?=a++5T@AH#joeBeE5~eB$X3>d@!pKX)215Vl0KbXgUM4&)8IWi-&mv|Spsj-q{W zMU_XUT{DiDv^mo%F?FzGZF-7^*%(*vO*B>%EODk}H>FnoQu2aT_-a|-00 zP%06;MCc)nS-zHk|FRn=j$!=rj!%CH6=>QX+!pK-i$?P0UmfRk(e_e)&yf*eJl$=T zdB!Z-GJbj^Vh<`Wcex_C0u#j28#bzMnDhp$lDw9$%to)rjKhg-p%~GL`boM!fZV!# z&G^KXpqI4y%(PL__cQ<7VRj>=sEidwB*}pIOC!sjLx)KxSv_mh)JMiV#;~7$c$AsX zd_K5nH|~bL=s_B*DzuV@J&cAe>OS3(KgFi-+RD;oBe2Zqo z_ncXO!ZyMw;Qb>|9l{CR?Dc39HWm18auelae`}43CNM^x38$z?c^E~;cG2Fe(m_{mzoZiGfZ+wN zf`#*oL6}_F8~Dc_8AG=y35ka_z7XMTd~s(CwTH z=v@EI^i>c&$Jx;!Oq@;Lb-=6)arRS`%a*|)*T3m6ZxY8uMkY_Z z^bCgMZQD|dWDtKW>zUcz42)Pt-Vt=|LMPo%y-7_Sqr#=O$2IDi{jF~g^V98O>5H$= z4}@@WWr9?@^|!+2D)jkW7Ys~t!~k96W_AKCoYF24ce zGY96$79*A+epvoepRQmuYh96xIvfEjMqKJ!{0l)sD z@NK!=Qvv&b=BsnliT#@Q?=b9$6@^sChOVn;7D-wsfs)oDX8lkSt+x(Jbmk{9%a5+t zI&@Ph8#RkJeY<$?D#oq!-ia$7VLnfDPP)1E6Okp~r{9?LDSbfGP*uZPuRNsa{Yc+r z$Og*T+fK3Vr8x7a^p6wYYUGqT^B>!8fVNcUm2HpRKnWr$7fD_L*xHCGk2=53(>8VZArQ<~RoDDV1Tgb`&YxJ5cac3lp#Dn{T&9 zGRu>MGL83C?!cIunXttBMHuRG9g^4=ga*Q%6&qXPP?N0Nt<7c*zY~+!r}|j^8-J%D zl(Ok5I;A%lulH0!1J^}P7Z+KKFHQ)p%J#z8$wo8Rc@31OZOHm1qJiuRfdm=3P-gu| z)nh?7UJ{t;;a+dalDEQWtBY8|`|K-53#4yZyq{q{uQ(&|Ey_+EgPEuEwqAE*&Bws9 z15XYGGxVv{LCT5Wpq(tNsVZ25A%$dB`KrYjFFz;e_2n6}Jl*!F$Ttwsq?q*fp$Qj8 zx%DpTNiKVNm~B9W2X$UiZziM|LL!T7A zQdOFq!?105+NP(e$W`9|P|9^RD$hOnd;PK!I^L{wP8zjG<@fV1Ww!+*;hkjjyPDG& zD?gX})Io_!zhhkFo8Bk!fB0zPm-mTo#WrTT*SmASYwdTC)V_b@d>xNh;exKJH68Gt zUGq3tYdOk09J!uXm7zQEZvWNwd7$n*aAorqhySI^q}R7Ihn!2Kfc~ajHDl#lj6Hs4 z)p5G}pK>9E{mEarRT+43x{bcY4g+7lKi?-;g04@E75DeeBHKTzZKlTn87lUzHGd6I zbM2RclX3vFemSRiUePNXB+ie}rXI8SCQjv~CvK-5$6Pjky<3&h`;77NVWs zH1Qnm{JO~%>*`UxPU3ZQY7~+??{&CdY+%+eeCl`X@YiIJWs@5FtG+Vx8!RWQFkOM; zo5U{&H?V=wXgkzgZH}QqRqg3@U-48?qGq=n8>$CA1WH$^GwX$sX0n>cCeW<2Z?T}9 z7CKs=O|Gh*!3bT5sNp0G;)c~ir?cEpoO}N673p~NojciMGIj+00#_xo_NM(aZey$0 zbxjz=fvBoy(sW534LKKbIeZAHTG^J%Hy{P)vobTPi|vt0M=QTh5+)o2+;gq{LHqME zScm*C{%I8!@VDA|ikTkBw5V-->>r}<}m!(yOCX-4S{~t`eg(5Xw&oGT0h3Z>#xEu zITUQQ2bFs@uOWBGKXe=%j^3-&a6x(KX3K4VKjVY1>Z@xN2nO#7X-mNkFZ*@JA0 zo6)d3d^}n<2ffg~XZoiQ;X8KKoN}DOxSE;486FMT2X8KO6|hIg8cMOM1py=O?MLPd zcA~K{^2MQ(N&nkElm1X=2rZLORj0m9 zqPO|cVInUFlYTeP(W$sLb%b)iX^Tv>$9RpriNmRX`$sXA5;>EQ0{X6~!^_h+EN%)0%+kDs7B<_7$+`wsfq_tq9se3&rR`ZNF22wu$>+QMBJcFSzTdAh=F z&@JlB0@o7IcjR8Z%dsR-Wxs`MIBZ07&AZ2Y$u4O0+VzGzUI;1uN?LOkY{+im@4J*O zgVAEyO#2)Tw4B;bB(-;-sUtU$Cxw9FN>jJP18XqSr>SQ!FAK_-Bvbb3CPb}YQ*OVP zh^U1C>MvVSSScGE(GQ?vh$DZ^De>vs4F?jM^`Uq$;puA5%R1X$Wx!TJl|df`t!W~S6?Jz z;IBZy_QIE-oO0cKta=t?0fVOjdj&8&8@!)Tu^iNv=7+zB?Lgife*T)m6^yJazGR!? z!^qd3zSiG{L78h>_3KU0eaXiAJf94Pt6P%~1YO0K|2Ym6tjR0ck@8o-e6JHJEvLI!A{UY~vcjwP1~Y>$7?QtIaL?EuAtLn2HOVZ#eaC&z&`!%9quRIdcl9x5et+@@?_eEc^y<(b z#l=(p;rG$_J(DeR(&)G;`LN`~LuUTS!J@9uZ<<+YCG|xm{4yvzEX;K_bR8%sDf8Er zQqk{_eC9ieG5_rSE0&$MX3-6J*!ZfN8%0s+(mF{}=zDUWVwJ}a@6Oq{CGkpVoo?fD zFthURik3_S`hxeNZR>$mPxO&BJAU@fwky1cblhNutBoh zVw&5C7CKML#eEW_VK7Q#@K$FTNK$EwyeV_cdi1*)S<*}2qbu*-o3nSuKsiGr@5ph* zXxFY5ydb0l85%1u zQCIvyQP4L|6_Y4*za75w)xZqY;+$78d6!V1cKz#~Ta)PeI~h<_DuV9MulXXwq*(gs zUA%$7yDao=)n4|trVgRD9eJIT2AFs`aOSV!4^Z!2IeSja1a(7%!%h6_(JORqLh93I zxK77p`kLBfurhUJLKip4ZmJ{2-DJ^MfNf>*b8*=J43lGq@=j?mRM#6BSgp-W11&VGvMQjWeMMdY=(vbX{nAp;4 zuKJ0&iUYp+{Y*wV}b@0i^z~rFEBb82bNOKHqnDj7yG(zyIwF@@;{`yqg6; zeJt{U`feA7Gy`lZ)J`(%SLIjDh(q;gvgGH=?=ykteK7hce|fBa2FN{U9ilf) zpkCv`olURg(E45A8lA!cGF|f^Z`(Hv?}+2wWb1$yW4*H>vGmp`pTvX8V z;VF7zRe~m5-Oy#Hw(;%D6BrM38>?_CLA&1DlBLI-nf)D~-<#w-7tT!AxAc{bCB49~ zPKkc7L@n}4W^b4Zd0-$bKBUu^VV7&~KiD032$8PU`TI1PhQ63ICmwoWtaMTwyISRs*Is6R|2m7|(|isXm33p^^f!!|KYTRmK-+3-P{qo$cE6oRSZD${u6G4o z#H8E5ot(!=ir6ocy)3_xHt=Avj~ETq*;>cGQ+qIU{Xn|x!!`_DHHfCiGv-UQa6*8+ z1Ei0;u6(BLz=%qLoVLFXidN>n>gkJP()lbup;h{v056G=fNf71ct+v9tKjoEjM&DO zOneALbWe}o!!uo=2&_Nq^41wcf6DUms0J9AzO{Nk-*S+wbuNTvCt##_Z`)x1Pb3|r z^=2GyKn+1NyGn%NkIPo5ImBCIyoc*K>F^yS44aD)zcKK<|Eb`GifB+GUjEKJ>4@Ho zvFX>x?3w){T#?igdFlt!%*975LZi?u_T zKvyJQl>Ts(HO@`xu|MvIqpAIV?6(){7*4R|?>;(%o>k|&L$l|QrhE9y)IHYv0P*$B zp62ulW;$mhF9)skC~Caw!#6x;$m6PZeg2J1{{Th7CLB8!LebUsS4`Hq6Mo)b>z2f_ zp(!G8sadEkNP(4<O&5RS^Gdu`*q7%@;LGgmk!9T75Jy#(65){G4eI2yJ(m@p~sC5 zddS1mGBlJVaPyrKRzis0CbnG%3^3O1xHKc~97fF|e9^lk)i>4EQZw_cpl~?Z0f_-aD9r9??f8$Bh|wws+A( z@e)ytT}oEdo1ep=KtftV$PF}{lI)Cl%d(55U+TB8d9c?1>1^lZN`rjR+0hz*$wmhB z#>T-dNe!Ss6wAJ$d;w`rx7Y;*m6+wnoCMC99>0Og2`2}Ivg_y^m-O@dS;Bn&UN$w} zrtKax9jE?Mq;s5zH$~4je%{2WACvZB`^GVJKH57Ks&+t_&p0mZ_bUzS}XAivosPd?5ZL|@O!Z)41L zE0l;9{n@mOWye$4G}kO@%tB*>QH5eh6le}lcVFT(0!jOU)DsIqv`~m&t$cdX`{mq0 z7Yf6#2>TG1lpcz-syMp82p2x?*}QYP@Fym{9knYO-u=g3KOfxw`u&oB_+e~_@1EXu z9psceTU=f44zJ~JWS=Rs#<6SoNL+JK4KmMom(Sj3$0)~J!I|}nC>khf(b?9AzLefo zXDx)$M7(-;!*Xe~>T$0ab&W&M6ZymjeGLq=|20xl|Awj{z8^O~aWUyqAFR+`&o`mvj}=FJQ)$k@VC6#a#n@h zV~kIyQ0n?DbY7RV4QJT3Sn>6}W67PMe(8U}o)e6weu+q}))pq+wjPNSfey78DEf8k zRzN+-VI^@=>hDl9SIbF?5Jdanc#iLZ3#g9o-?9Fz7A8CjqW8aAgxLKB>G>TDoTS$q zXZ6_=!`pAVoxj|GuDY>arwhI?uWan}Gbly1lQp&NJ!?KE=$p4pZeN3V?S7*_G$P78 zeA{Wpet2=1Y)kxO54v_-8;^ZI`rkGhp7;}to(qx-(}f)%TTyP#b*=p{4OPrVegD}YbzM@E}(VG4wnA=L=QNVGRB`#bLgi3R*_++c%H)Va!D=+B(YUA3n3x z=nD8y^}pGy=VaF$?W-$BQDRwR?mFX)SIb@no=0iSjR8M=Z1FCJ5QZ0Y|(Pz@{^%+q8Krz za*_|VVj`SFhOKrN+GW1vZYgBGAd>mj)OPr{fF75yYqQ;HgnPf+zj<5~MeC*N%bNZ& z%MIW1n=%+=u2Z9)TRt<;)s=yZuV+1ZdmF=}dv~Pvq@ekF)}1QFJWPxgnP}PXf;Eqh zgXxeDdOD_#&)YKnIgA9Y9Zi0-9xc}mE{u!LgRnZrS?6dS>Ti8(9^OP?mW#iA>4I9T z0Y=VLzMI@9!*7C5G?1 zcF&=O(DV1>Ed~x)xMjMEJsD%3Nh#gOSh#H5P%Hf;o?*o3#Z|%X4&?M+I>~mL$m+*) z@t=Fsm6+*4sesAtlkYIL*J)5V%7&RwC^sZpDcOJ+I1-`1{U$TNd1-!nAE5*Tvqn}; z4|g%}%9bC&Maw|VsnNK$~aj4^+1xDPh2g3B%p=pGVrr6Sg9;4)g z7tiG)jQ7iYVgRdOgc^kDc4ddqxaqTDG(!Ye>l6tipwBM+lGLt{SHi<@?FW*zFR6w4z-@f!%I`chjr1!1NR|vuIxwy<- zJaMSJ@w3PvRtp2&6?)GM@>%nA?8+J+Uq(N_w5waBe?nvLw>QV`9>d@u=caj^7E~%M zv|TzXgWk)#Z75GvkQ&?i%;^_v-bS?QHh%wbftl`c@wC40_7Pd!tHj@Sok3$tTI&pt zAgbd+Hrq)uaLU&QexbWXkj5_T_26UxNa0m!W^E=Y;XQm|Lr^e!34V<`{DS{S>>2Z7 zuG?G~Y>v!rekAsTh0J`Klu&`5&_#48FZk+S=|!VtQsXBPV|=36U&!pL2K5-{wmv78 zp6JhrShD#19EywHi$c~O&E4Q|0>*Y7kWIGgpki9p;LXqR$xiw?(l|I5rOc ze#`a8>y+Flp5&mqBVAOaX zi>q*!!LV_7;<)mCw7pA|(O#y{*M!i2e&8$6$1#t}hAA2l(Gi%*( z;M{?`S5GwHyjA)S-RMI|$PThSzNQz=F;3e)tWm-68$mbOraIPmdg%`(2ri&DM19;P z+XLB_swN9%4b11A^M*?OYvSPL;Jae6h7vmNS6`PoJc~jlr}c&gu^2tkC}b#QkC1`~ znmWS_+&pti=Yz&k)IsFM^3)_I9V_9kbnYf5fBnNBh}tQ-0*iBB7Ksi$URiaO-+z5@H@3)KET)f}~irWU%-*YdivX@yq_yhl}p}xXJgI zFj1DW)^M-`NxTah)6ar2_(1kRO4TeTVl0onc@d15Beb&dD>fjhF1@zT<0=N1soAO) z2;Ju61@F_36dW1TQs+cVj};n$(#64)C8X!Gbsy46<3mk@oIZC>{D5{ ztjHdHcQbrW8Bj2kY|GWk84HrmsMVwGRVX>5pJ^=ag5m6ZzRSP%fxMx1yprn=Xi3%e zWi1T6U^!c+{>vHUFM*GL7KWkQ^#<{+nHD;io=VVP8jZn7=N?Jx6&QH7pP+kv0Yet9 zQT_rf{5dAyCswoF5TEu(6yCYR8n@-KpZnAPBj5F#a#gM>-9qG$-1kV#(S|E&en5Pv~ zAb0)Z?vewgXxy}em>YK#uQiFo`fm0pT`50Yc%lM*8{*=J64jy8At@xd?*WT%r5&^- z>$O34p+58r2t`v+YE0A3IgD7|&THDI0eXA;&Bt^rG{#+(5ge97XLHoE_?aohAJ!eN zBM~q$6?(18^&1+dFRM25Ib(v9=AV=#gI0|*5*!LN)XkKvJov zJw)WyH1%{d#<=fZD*Q`24c$VGhd9jtp!eKyUCPDnC^&R-O=oK`n!S#$2sp~p)9JlO z2f4$PnCbUn3#J|OHK=Ml_P1|q5@gH6066MMC<(Vu!&=3{*S$pX> z4DRr$Q?3jJS@PiAlV(HEUvD3EUHlAh-dM~3z3Ps^r$;!K>xLu6-#oRQpMv*xDr~z8 z--8tV!h5Eo9QmFzM;!bn(c<(+_44gByfTSj>vq)vy$a4Re|GevV_CbjIhQM1&)AN% zo^QaQ(A!h{ywyORKR&yaQwptD4s%cO>0o#u@o(O09}xLlIG<3g&|31Rn4HytvFjUy zglaC}>-*sNicA@X-^r=i+OrkIt;2t=zx;@%OrF)$;XI7hj(<75%>rf8NqlC-QTR}- zE2){yz@0Do?yfac2VqKD=#}1a#LPEH%5N9N(1y)Fb1d_i<3W=6yVi%f6y_nC{B zPaVYgIuo7`E{j16BuaH2s)hu0`n`=kLw^}J*8d&YhtkyXw%%)7Kw6~adosZV#Hlyz zw4Eg&T~Ryopf(NVfBmE6j!I(yiWRD=sTf>dQ04IM21xP^$pvwxpmP14$rzi!NY|jV z&?<&r>sUT>mt!?c|9;#i)Hx-Cp_A5WZx%81i|+jKTNB?gvaz$>K7_Tu-)g;nQTkmL zUl1m*35rxHqWEsVoXZ+>bQM=dYpZPr(O_a9p=1U*SozXs$xWPBKM_sdw*nK!oTerz4kI<}Gs5C0Z8{KUV(lF#%Hfz55 z0J@C#oGMF#C9tk&@3&4=mlgIbmvrzTGCviuOGqRSf z2_GBrK(|xPlKY{7=;XiN@pG{i(jIK0XWOwM&FtGda|Rys*gdV#T0g=Xmxx=O7s|@e znI0i7uNa8(3Z2sy6CG$s*UQc0PG#Atu10^cKP)}lUiC=#(v1;}J{mrIQu03fV^`nO z++hNmcfankuf7;vr2FRHD_<5r*##>pFJpZq3CNt(ff=A zgg&o)Fr3WLw=;)gGH50s@|dW9CT~aE>(Y&y(E_N*{t)ww{09@7S4U56Co$ypl1GV+ z6Z1WSFQ*#C_5WAAOtg92(Cxi=n`QOf@}etC&kfQdBu{$4)j6)<{rZ&*f4FhgJuZfy zOSl(ET&e`x4f3ZC4}wAEzFr-0y$$2vcpUuh#^J->8J}aq|JIAUjINL4ZO`;6NXY4*XxAVx%MVXSo_n@k2lSvPAvQr@Fdl2i zP>Bq`QIB72lFJA=0ihl}rwM4WEZKDA3u|9>?8%k*NEdr%x`nUq*DVKz-)?lVJ2b$O zCBKfIx9^BKfcSNv!J57Vj9Oh_(h_8M^Sz#W%y?gB|6;UvtTv0-h^|xX)K--J z>qivM2OM5OZAD+3ww!9G5{L~KKW?9Vg{D>O{BG==XO=V1t9VUIV*|b92)VnBkC~rR z7qI^mdkg407Qfj2Rvp7lGM>Y3dr`aCSbkqaG_5~Y~Q&B^)bd~yha3&9M{|oF=FlKbeNLsr$fd-4cNVAd(tQp)vTtY zKL(@yZXk8ftt7O1&xzd1ltR<4v?A`kto?zZ%U852*D?5HQdTKs149n}2snJ$p#yTw z>JGaD{TR6v{ew;HH=22~f;r#jfgmtAYopVE5r{p_O#h8>+sX6{-}V2DV@ju0*swWvGx2|K?MRnc>q-5G5?6?e1&Q(#ATjt#p zie%tgF{$J9ZOrvOj6c#0K3d6&Qzw#UKFo=;_MrwhE&pxbcMz40RR^@=i5PpnljkFm zF<$b@^0z8k`|*VB8ml734`J}-{igZTQizun+h;Q_j^Pmh;3bb3b|cNzr}ugS=t`Ab zziABl@Lv99SnQ9wRv~9}LL)qILU%l&D<{27HZH$NqA_m=}pCaO)uYt-Us6-QdI( zvA>)NGx8`pmipGsTM6Uj>;QSeHRy+vhV9$Lw?k64?-bi3SveW~$OT~%< zuVtZoE$P$tCBaO(IWqNHxmB!oYS*P(kn3drdCykOzNa^bbeZXlOa8m%4n4!5v&>d6 zhdeY25T2F`OJL8-bB;wsHuSNLhOH@M$itJbT(+rs==KcB`cWi;4zI;2$?N$+4G&z* z@#7YgUNw)B^+ACwjA%@!R(ywFV~~v=YOERxk1aHzlH)sv{q+v?WV%m1 zf2f1EtYBLj5r~{B4DJ?!#{c^#X*g5WdHJ43F5bbe=o(Cl7bieVm#(rH4jB8#uBMkk)Fjd^su?bsr-OV7=E;9=DCVJ;$PR+rmxf2}i|)5vmY+ zNVv2wC#LK81x`5o;I zXcZC@eDaZq6z{IMH*GYGB-Qw;oXdo(NUWO=H$zV;-?%yLz>TprJ3GaqcZ~b4CYO z@X}`&S@FH)9^^#P4wiiwEnl1IW+Z}|jw7fSsX`;3j1)t zxD>j7*sJykGUlg+bBH`B0vd&v?d}9C9+||1x%=O_-;FT9=$c9Iv>_C902%5iQ)HSE$eX%b`Rce^;13)~7p zj~(Bc1`9VNeQ`T`&btA%huIF<^|EkHnx&2C!J9-3?vL6XFJpzzmYbJG`>w*oI_ilD zjxwa#UgS*BNJ419yU?d8Eesq|U0k@@6K}rjXd1FJ?25_y#Ygg_FsA%U&saJR!QXr6 zB$_CiDFfDLIOH)QQNy-ZcPT0&R@b^XWg&RpFyZwZDfp0gZ+ZMrm=EK9TB^Mk^RyuI z_KUzir)>DF7Kp5H+>ESvnWLne!T*$RH5juio2R! zxR2hty3&vb^Jq_Ys`^l*gQ8zn(e$Xhpi%vF?|xxQ6T(BfLYm(Vc_37wi&Y4{3%=gSIG50{O^&e5ww-=euI~UbxOAY&AOyOf&$|@hU z)t*Qe`5l4!s&y;Pwh>TQB71A;4N*{**xXBwuleUaNY4Cs3TM}YDBg2`&G0IGo$_eB zMIw0>3`&i>rI}E)^;mf52BJOeh z^PhLwP}J@p;<-BzjoThh=l@hf-02Q7qbCRVgNIx8(Z=lcsqH&xBcfJXF{1fNJq8Rq$si;U`QW8e@+wJ)&8Vcfa z8R6A_8tBgLd(g1N3zcs_j9>ScL1VF}@VFBzUSK#`w%vC0G@8$eG(VcYf{wSB;@Cx_ zna_&^(%c4CIH5P)ATPL~Tx80vl*^3|1P&&hXm8kh(TTnsEgLI>RnD>E zpvF9H#6+^$(IIu`NwrQCCJbX8Ew4&rd?o+0Xg3Q4Z)Yo(dT)=OFUH485=$^DFSC5x za0Uiee_Q!0B8o|8NFjI9LxZ_*$jqO3v!47Y;pjj45sijdG9^3_+IKW>zl0vfoMk=k zvL8XOQ|f^~0UaP@=Z@;N?8cazjd)K4L?-ahXm7oTxW%7m zR|pY74)`P-zS|3QQB~P!0bdLqUA1a?1WWIa$Aw?sd~zKIJoo)73uD=#2}AZDqql<4 z_R?m>6Tcs5Qg_KQ8R@|It6OOW{c)(DxWfM75$inRFu$@nNnZujC5dtz+k`=Vxb^kR zQHDKQ{&SJ!Mq^ZdloPPbmcyX__X^<`to19Za>ymc?jxW+nE0r^^%L9w{6M(#(Oh%( z3NuX)x4ZngkR8Ow9sq0?3!0pM5)UA3Y~#>eMf??An;Nm)emyR$OnZRjN@oj}b`X?*gI@&EeF?SmA34 zJfIt<@DzDXW5_@4`sGWjP`%I@L6BhWAJbwI%pU4qM&X~;&+d|6BE`ik;brklv=!E6 zeR?wq%H^|`Igi9qt)SocdBoW{aY?(#B8t1*GDbg4SV!QF}do)T; zFO0d^aijWryVk31au}+(t^MoeO0=mdKi5&EgKYiN#8LPt2A)_qsY+aD_JgEf@2%56 z0ostr0nhIXta-XkDqeGV4E0az){T}L{O@?P-oyDw;^@k6NM_$w@v^f4)vA8CSMp85 zHZJ4*wS$c3HUVrugQW4w@?!kar);?H=P9jiIDmo|=Sr8o2?p_oS}1>h8A|@HR>c8T zR=+axqoX3DP_7z%>!mdd*G$ki`gb$@kgqA4Qe=I911kPWPEiQb+A`D5XC zzgSj$I?XYsy+Xkg1GWwi-gw^t;cy~Xv5Pav5hr$UXxf5_b46NFK?WG_6U*`4{1B8s zZ@jDO!jRHi+gYq)0LuN_k-K(^p?x+_vvJWRlkP}}o%Mz!0fs)0)7yQ>1zjtJ?j6JE$8Pc8Uve?gYZ@MT z`wjY6#*Fv-v@_{PJ5IhS=Or@J-p+U93-@kCPpWo*s@Gf4Yoj7FJm)Z?=hS=J@f1?a z=3;i=dyDdCGO87dtody!iEnmoia?9j%CT=Hwirn2P_b*yMMj!|BaLM_(5waeu*(LrHl}VhoxM9sjQEX5g{IpRV>_ zDnrc~(fjv)`l8Ci)%n^=Pvoo!*#4?Z1}?Yn?z3}dt&6l56LKbG#WDK1|Kzn*To@M; z_tf7|fNVX&3i9`c{~LcX>sQ8II+dp)i!7DHJtrm!D0@>bp8QxDRA0gS$4e|gvUvQV zCz^-|eVIcXk>=kOPD@MQnc78eZFtN+?P(}T)0P3uy>$uR5pw2yt# z{NTp+KRu^Yd(@!!l2r@P^YA;80E-bPbo_PE$VKzPI546lTPm7p191w3$+QK z?mPuaCvxC{FvC7uglBvXAcAnveUIstL1zEE0`7Xf^0h`!!-V)PA=Y`X!KlxFHJ^E+ zgIiMF&MXhDts%*Ib{=@?u;$>1vEgbqTu{Gt+@2-(14*XemX+j!9DJ!|jh6~i{Qlhcx}VK_KAw8wVl|pTj8|Lz z@|Ooj28z8y6joOiZ@b+U zl|O}!?e7%;@t|2`%`XR#!^7@8levMu)2mXp(`6X;?ab7h4o5VJs#2aG^+3}e#qEM3 zvl#y7F}ioB1lsg&yB}?-$8hVTPr3!(pgp#i?)-Za&5q-z*BWGDs9@`Cp9w4epuN$9 zFivO8>yF4GJt{C7Z@c;f+fNKsDf7vgnSw^&Y36s*0j=RdJCnRGgZTH2z%dSX44-|x zPr&IJS}r6WJGDp(bPGe>wA>mDF49Oic#UW#ZP~gu{Ueh8^jK~9ss!?-?x8j#Zea;d+pf)9=zhX6Zbm( z9zve268=!b>UYXV4gOJfEf&8ihW-%GIfdbXH9C=IM?f?^>zDya)U6FPvzGpV?twQC zoVHjZuT5_7^=5`$JR7sMEt#d)dbod|67OpP#YZdSE+=cATfW$m$OHCh{vIN$Xv$iL z8D9M6Mns+*k~>9i^`$l-HDbr)qt8khUTXYH+t3ni`kQhCVi@>;z~Y|exF~3cEeyCR zaY#LvwJO|&$ndk|>tp$ZK{y?6IM|zrzAFb?@7J*67}_ST_dJ$<2%@wxH%Dkbs$~w8 zd6`sTNa*t+K9y6LXtdG{Ix>n8)1-}plh#N$DmUzEt%Px_SJIMYdr;^p(J`RzfB_}9 z<6Ln!QD&$*mL6?`dZ%Ye+{6M5cilMmQPZ-qkg^KyQ-MrrircSoR=fgP zzGQOQMO_S@U#~8Z+$Z8;>|9`xD<+sQFd7eqcxCIsabOty)L@%ztkHu z>$fglT;|Z$z)X)lZ+o&x#S6s2S&c#ar!0Ot=iW5P@P|h~80!!t&oJ{d-RC7@(;0e^ zKYVx5=N1f{Oxf9V>LTI}J+SG19*l`eF$v3iH$cC8cW^ZODr%bhH@NvKA%G{K-$BJ5 z1A(38KAVG3w7q?C&2C?eoV#N3*ylWx{-_6`BF?6`2b`OZ~0P-;a9aiD}UmPJYNcr=thQoRv-A7HWLo={odQ9ikCndXq2&D!&<2M zpC203c4n>@4?-{5G!g35ih%X85mZLQlMlkRvB!qc)v`L0fyr=$)+dj7eIX zMryf5F?@b^<;q{I`OLm*92Nc08};K9Y@knKXqR|nk$VovOT{1gySDw){&@AWZ|>LB zFtR5q{RpKIVd_TuV{{T+PtmmZ8$1E=7|ISt&tEvK0fHZ-_SYb%3rr_wcOg9gO}uVtnaS3*s-D z2UA-Zcvw0k(cxa+Kkt?L>rnWf_y(jOyi#ONCc-P1eQEx7Hhj6^uKD)eI4GJGulllS zAgL?RIyZ3Rg+l%3O=cYMFm{u_eN>4_C*Nm#pbPyMK9Y6Y>6{FE^noVSZ|4A7erLa- z=K`Ahq62%Lnu6lbvz{RE7!ya9oDKC*ItV(9c@OAN5^28rdz5sNr?r_S_CeU;LY<71w1jzH{y0D&cF) za{V$#TO{v!gOp=qO&!QV#izFKAqU^0pP$6{FlFWzDcz8EW>`5JU=fY-h%Nesdz0NDkz8COlwrGA~i9c`*cVFvwY1x zi(^``NuXzcYPV*SM%Rkyu#Zk*XjXepblO|Pu=l%&Clz!ty5`RD^wCC;rVH9HXfW5y znRMDFZ+p(apkqYo+1td*#|-~t)y@4UiD+J(w1{6(3(cy1H&^O1#&y*u?%x~_G0Gp$ zQxmKWa?*>}F8Iy`&PROqn6TP66o_(iUzZv;a>qfqsDPdyi&cn6&a+r8#b@0bqISk0oJ5}6G0I4zk zRhF7E{4A)3ImheK-XZ2(&V!&^UmD0)Mh}v-Tr-nEY6Ut}ugTtP|>96DSyu|Pty z{lfCoIzHI^6fuxOzFwor*03YUzu`|GkvW5gZPB03o#;U6){GBh=OQpBwdH%Sm?&#p z)sFiAV2n@hg}0~l!x^}7fX~dG#JWGF(cRExGoc35)!RhXcC+H@`tsG11!avwq`18XER=r8Sue1mI{i)b-4*H}N!@>|o;`#@D|a>h z0efb>u3aW!A8!l7ekwg-MLh%W{Q0B*YUwdtlbY#W%g|HpCV$2Sqt=3c;`!!eQ3kH1 zZ}z=YI*+dJmF%a&{)-PT4XAD!lR?+nb<39uoI=mOqIC1AF%WNz3oBM}pzFixhlPtj z;||?XqMgQQH*}Oe)%`Yz8Zl?nREAx!mn}&zR>5Rk`|h z4|6m~S;z)myN?#J+GXz#KY@4ur1;!Z8`PHiIX&2Q6RoQx3d<|U7=HDtnGL&Efx6;O z%?_`1$oHRpnCD}T!dTJQwZfiwu0fCwS;-oQLbL7@rO9Qe;y&3|#v=y`-;=kS3c1kv zX!V|u-728Q3%T|my^89RhGGG|4v=e7M|Rz@2Vu*)txGp9L+kTVclkobcvUx)Z?5yj zqZ=E|-_|np%jTQQBX+MxWci*AwwFpkXp!iZ7}Leb#cR>ajal)TL;m-@r2nqL1fjV5 zFUP-nqx<0>0mCb{cyARWW+tix%1d6ZCCA=kpfu2CYXTKd^m6i7?q=w}y+8J1!h>0_ z^|i!9Z)quHz9QsC#BRmckDvbzZDh@x``_lEm6?N}?cMNRi75I{yJ;^LQm#m{&f}#7 zUtoV?A%M<5n=&=dv-VZuH+8S}6Ap%-{XlJt8^hnJQHg3SpT!X8%~`H`Gf*0*9nX@h z(Y9z}4RP-5Kkc;k?A5H>uoaC->Q@X~)*?231F1`L7K3b--NT-3AT>Mc+AZQi;~Ul8 zfBG8`et0LJ!EYXTwQ)FpEnwgs@l!58${2R=f(NhjBL`4T9K8r09RIXKE*{wWlxGu0 zPp-LM+LMGXMs+irfB(vOh6vUV#pWxsAM?*ReD3Z(GN@;dUIoQf_8%+o z_3J*vvsMK3Rz3gwM`RpDb5$|qwFaPFeDkQ%T@nqKw-?*&+743N5+l2`8>riR+G)!~ z1;&oI+;kMWi5O3>?cygGekhlj$IF9!484Aqr*I4FTuOiOp#+IvD=|D$($)W(;pZ08 z6i*gz2SK`yC(&G;p;tzgG%t%I@7Ll>yp#(V=Kp(%(|j zo1z6UMt^L6b;EMdyA|Vpe%bg>KdFiH4tsvE;=Wq${+ue>+=xM!p9+o~u1GiB*J^Dj zgJ$7W5^>l8g`sNnCq#9$tZc}O28)kh$PJo=3Ef4}F*$mm1XFtdNE6 zhZs-?MrFI}UxK*QQ~t}cS`^9G(LQ%=LG#nfSFcO5k+tIV8t!2Ro$n2fU0s^U)VcWU z%#HsvBLt%zuk74`V zs3jZCneBIc{kG0kp2$p(-5xo%Vc!^<2De!+nz2Deg~7d15f<)@HdsZLtO;h#SIpvJ zvOLqCvFHewDiE)qL&dVKR?oCqc(eVY#x?~bMUZm+*w|$_Fwjf~M1GsE#t*_*`NDwFe&_)Ogjx@Vm}(JZc`p zkV`YiqPKMzcyPy9_Y4D1zxuKJd?ssMtaW^L=BbPgh&|6s&RH<;X=C6fHCy8aEsR{| zTI)O64$}8uLhJ2bVmRcQ?Wov2G!vc$6(2B1$=Vw=mTTD2_+`i5t7QbdO_HmKwy*~^ z_To)~A1iLQZO<>Q>Npn8CI2aSb4DeBnVyhO(R7Z^LcZ%>r9+{U=rP=p>qoeVdPnYa z-yW!=ak6Jzld=GU)SJ$;i2}@e0U|9e+bvEa;umf3&5v>n4<>FH$vB9Sdnp=ko6VW! zx;bS&NBB*$+Q0Ed+I5x-MDsme$~6|Kc}u3-CflH?MwDmeZY9LVOr9^={2e*IMgEU< zL_z#@=uh1gE8eg^SFmv({}Xg8pQx6&Vg>psC~h@yM@h}~dy>nS;l1HZ#A|MEX8Cu# zmZVv_J!0&%)?mYJr*~z=)o&f4DR_eDIfU-6Ty4W z?yjH2m@e5UcYzhhLyznE5#p=^TCHb`*pF1JUs`%Xz8vLVWUka*R!&x2AG5nCW~4lV93VbT7~xMP&sbgWqUr2}n^ z7cVUHF!{gI?>O0d@?k_5hSK0z>%ii-u`7GLL>#ox%1wNc7g5a2FWX4j`TDIOs+LJ- zr6$><@@t<1ccd@s2gN_>zNp6Nn+a9_jYG(t6P*;vUxXrp$d`&Q9vIxAlw8ko0-dQ+ zIo*y+(M!CbB$}s%LY`}}K4qdz`XgLP=I@JtBJ1&msaHHd@cFvQ!E-$fd7wld{-Q=e z?(}BSo6SNX)=$T@F6n}wiGtj$uo4=6mTSl^O2Wh$pU2zQ4T7)XuJ&ODJ502@eE^~kEmQ~?r3+m+IrTEDX8n>lJ8YNYh)kBu7^Z1dL4=)SdB4TLL%GEfOhVk{` z+YPT!L2O;bTdnpD$)2;$@xj5knenW`$M+`2GxxB&i|s;)r;!#HFcY$qlIXejata zKM5l-`5Q*9_3^pls4us(Hj7_nJnT96r9f~A{BUlaI)*BZEWdNfq5r`;%c|@m^conL zAI*M%`m@VcU%ya=iROYM!EaMQmOP#n=Kc&`N`o;vx0KLwQnG5V_dRq6Xv*!H`HSYg zi{NsV1HO0KwAK)mFuJvF{mDpRBHC7HZDSlthKyg!^symiH2996l>yo}K46O^jG#;K z&;`-Y&gfNBy!yC05M7BchJUwNqLGVJ0E(f#wo7oeWq!Yys6@Q;4Tv#pGC^7KP{dzM8aO&v6Y z7qzmhC>U7po+F<#4U*+-@pN(nv;5%F>T4IbEky;z%BWq_^J3?9iZ-1&@?^Pfv&xIIv^YQPQfpsN#{yVB9Z8aN)%qKP<9ccvRjKrG5YZpKa zmh9KCRqdK%=-p2yWBbdcld zTTF2Y2jxVHQKTRh{`a;TRMHu^XGulwlFV2%8W>G}iMfdWBX5>hdBMFXAy=`nLd3CaPv7{DicM%ScG|ZwVgw8eZ8V~AU zUim_WNchufAz#*2qHCkJYm{v`N~80Y{ZFyh3x;~keCX!opp8*~W@oeL_m|zMua1aA z+I&Tv`L|%SN{P2>4YT~vuCa@rS%YclvU;_Wwn`gKQhW8QodqzwtKsIK2_Lkse{xA> zyDmngJQW;9*)Y2Egj&JFZD_a?c(Q88UG!#WjOw_2L*@>0 zbGj>Qf1=;y-cGaCi&2#*kg>--p8vEt4>R|2Rf{jLAXC7{LRhrWoI z5@=b{d_PXC0jW$>`EsudhI2eGyf`0$U?-bZJM&p`&@F$C&f^jZa&dBelp+gX*1iwW z^^;(oN62vhQL3G*jj`ij){3&N13lv@{}4ZG9js?pdCQy(8))}aS~lGlMANgcK9Bv{ zFh2UqOSK>g72bxWErS&(HMPI`C#P1ubYS3~hX#-KA3)Id zb?m`ujkv})uRhD3X#q)=iWN!DBe~Y_^&5ybNU5VoDwhrMzqM*#}n`sG11GRkPRjzZ22ut|>tw7HT zgU1Bdhct*HhjdT%$wmRzJl!Ik_~KB4E}>L`MY1%ExV4Wh)(S^UiDy@)>w9$MwT3L? zS&Jf%+@#|b=Mlap+lJfU424^DQ%s&4prBg%KuzW(lU}3GLBZYke=*b9((jIsshOka zS4R5!!0X6S9y#urVvgFr#pFQ$X$;kR%fMwY8OOXffd4WK(F*>Yqd6B0)bn z&m{Tjt}1aW^i- z)AL!N&*dLqscDY^C9GCTD?vw<)%eWmC+O!_9#%cWy0@t3)A2{k&(C3GLu~gI!Xo%p z3@!`0OF+Zw$_MF3TrfuG4!wW4X)Rg=tj0cEl0)TLTkDf6S?e92O51|kWbH9- zP-Ei4IgG|Q&1ChnH!$KTVW{@;3F7>Hi%*FC0=cnuwS|2%NU>{kuIK*+aoG`tuc6B^ zQTF7}B|!(!xK@lUXtK`pb~mU!ao)Qf9)b%;%<~B#w!9j;p>+y5Vp2b3`3*3>aB|t* zgRJi&boD1sq+1E1M0#`Pe)-4D{Qf&{?2k{np?EjftcesukES2i{C;BwnXfpGn5QZI zGk&AyYc}`T(lGkumO_}~XLNRqS6XVvpkB}M${wl`I;Y=O*N#yz_QUjCP7=c(2pJQf z>vF`X&lqn-EFZcApOO-Q^f|%9jnfq=Gw4>GbmHf*wd{||(VQ45Qqo*ozCEqgJkNNskuF6IY zgNwQj$c0ZLYJKPTr=i@4{U!f+zatx(_)oXkn39kb@cC`=?eA#Z6cp4i&hVG@n}sFX zkAtqWX~~kMcBr0MVSVWU>)cc!S30DapSFjjXz#X&_K(Yo7oGQthlMsCG~aN z=^_|>W27F%D~RFM9}Bk~;f7lK+{)LYY;dVEwBtW*kHXVhH$!GZku@dOo-1IF(W^zN z8JtT%5YypRx#9tm;-crJwD<5{>--^*U=OPJprw_KFzPNEYdd5sV)VqFK`9T>f97>a z++bt#s>2x6T()b;&Axx0lTXeHU3(FQSA$pK_k|(<@;4kPJEzfJG{%c6hzOSV=*8E?-g(GNsS^iGwZX1|M~x86suByT|NA4gr0dKm`(jJP^&%o@LX zJ<-imKL0=K``1;D92jj?Knt3o9<3TvF<4uNX#&O_U!^n?3=P;J_vwj zw?BNGlO=Bh7UPY<@BaNh%&6ahaL`dJ5Z^3X`SjH!GoNHcqUf6?p*}F{#C3`&N-PN5 zmewVJDAjyqaaa{@Y&Hsyv}QwxoaG6wr?W^G-ScB*LznmPC4;!HT5`Nlbb) z;f=CSnptr#NxT!n$HP~nVmNt)@vk2!el74gdb$^3bDr5ph{w>#pp zI%xR0FcG4dhQZs1%s+pX!Wg-8|McFqAl{yKwdrg??WskRqL0p^UEuRk!N0FDpgei| z!OGt#f=zA1?IDcL$Bj(#vi2cLwQCEvw{t=M)`Ux;O%RfV?ryD-uR;-V=G1{LjUf0f zF1kI!((B3jn{K-mGW2l8#`2=~%wWo)_r3%M%FyyFeVbSqs1%@8o*_9LE?~B2NL-xhD<5BNiID4z>AmV>n zyf}W!5`&M|=}iR^LE(3b3cl-!xL%V|gXUn2h2MhW1^4AO0){-E7~UH>>^=7tO5K;XfNKq-KLQ&#BwN*{pbu zp=+y59GY2vMTf=C6M`eb=nG%HVs1tN)e_-JZ@N5~&zm{dIOfO%;&EL#>0oXzhMUiE z-z815{m&00m3f28t|cfsV4V7--3Db{KJ)AQoIu;T`?GpX4a(wP^VTdi25Cu=@p2hU zG(2p+km+m!^55~0pqeY_6YdF(^<}MFXV{z8Tn=X43({5m%uw-x2s%EWPItT{g6g3k zA{wvLLA8CEH#+qO4cv5YwH5{*B^(#}eyssC<2aY3W4BSNd5Md9NeRu)Cq{)9KS3>@ zxlhGY6AWGatZ~SW6^GjxUf?4!{{%(rUsKu~Sl=6JOPHQ!5BiLHQ_H}yQF~^7L(aK% zKdTKuDYKnht;PkK!SZ;&d@Bs71+BAC4+6dS{IAuw70`8iVW4%M)egC?+a(I%CCMuU6>ohfb|x;`qX;5I$g#KXLA z1LW?ORw%9k?Ppa)(g7~i#~Yjobj$*&{jAV-l;!PfieGnuZWGT zb>tEE?#KP54H!|&`eB+XipG}nZGV)fKsvv?XJYj=6e!HunHLdINIKs}o|Hr9gC~RP zcelaLpslMonGM9TTLI( zJSS-m;*lxI_m3noa%%Dbx2+bl|4kuo4TnyNGUnej+bHi8sCTCd#En_^YEYB6j);<_ z5$E-l+)-nXk?U`MY9!^MLHKEn$mCkYXnz}CunPvwet7h|s5FKxH8Vyw>4W-at?}m8 z9t?EbY<@1j3km*nCO$o)NLy_C)=|(Lt-sr>1~^tBU*C4h*H0ea_N9O4GkHPMtY(`L zl}DJ`fs3dvvwWX1NzP6)wDzMD2vxPv8rqa?RWjN`I=a9 zJ2er%`G&G<(d%~a>h;Z5=vaE+>Z9;1g3oGa{t_?&<$X`jb?e&<{M(`Zt0o46Ji=1D z9m#0)5kzCPq2hVHoC*@#MUlm#h1{ROgivI3WF4pOWyKB9yHNa zT#a4Kd;VDRCNOlRxy1j#QxROv{Po>lpTW-=6tp#;o@rs8KS^EMo9SqJ*tk zX&&fzSACDQNdlE{^s>(LFm#&BZoA$ufa1EMvG1=*pcUkuN%_LMA8GjQO3lN*!zg)a zMhY`Kk8wv+1Euu_|MX`_k|^q0*nlzN=0gJE2QlpJ)$`P{?4NRkod;yJw?9J4yiLcz zUQy6!_MfM!S@(?%R8VvsLXuEYP|W>{o`mxK$LA*c4x#$v)Pbbi{OHv$OZ*lkirmkp zSB}1A9?n=|WCIyQ4C zT`&ZVyZ=dxdJ1SdwZV;aC02h4krH!yz9_ZpJDky(1PY&G#?DcOUDD2f@wt36vd>Bd zT1c)#;brkwsun~3`gWPg^&ds!p@pr~bSKo_VOMwC%;0-@kFvFP@6hk4F|+q7>s%|j z=3{iUiv`9rEAFP;tHMCs5^0yL1QaWTj(NVf!Jz2#^C72L_m*|<+x9|VB@2ZvqKl6FUqNl3v_Oej7Q%Bz5WPLk4a5``j92NqkPnJu zLi4*p(BUBDye(MJ_1pnMa1iIx-weCVwZVF7bU8{TPsxzyZXujE@@(^?`{=GZwI#Gc z2K^iQBUfJN!0?L5bI+yzJ=Z%LX!T+6q1Z|SM zPYu(LfFwEhs4kj?1Bns8KW|Y@L47ZKLlJ)m+CKU{a$CmG=hbt|3z}Wf{x-CWa|i1l zm;sZ)4f1Rwpqu@EIPDZsjqdluQJQGo$R`t@pTR>l8&-7 zMjx;DEMDoGVvhm2iieG^Js8{XAz;z`1j8eTyYV9r7kAIG&Z|zO1zH=aq#)1Q|C2fc zCw@J!aHaJ}DyVC3-_oidJ2z&)1%`T8RP$kYt3mQ4Y_aS-HJo(@!p|o z#~Dp~glhbH^YHp7P>;;39;dMG`=bQ^2{e}Yjv>m^7nio5N7WAgUYlpZ=%5`?BTE^g zWqO5a-cxJz7x}j6_gQ0Tl%I{xE5odx9;w zUagiN_saK&A_kZ6J#47HAQ@WLyg`0l;OXO zykGx5p$ipKJ$WlGNTK&EDaliI5<~J&$@5-!Q<{9xcXNm~xb zO)R$5yv5o3 zJP5Q?BDq(cS$<||Xl2z$zAGREn&@xRSc^`FMG?|(b}{^t_F2`MBy<|m#B zL3?n7RHmoLcn_0m+QUE$omITMui(GpG!oC9CZ#j{`Ll^}nqI7X5?Wv7E!!q2%1rmX zPUc#+j*3*5Ejo=6cE~$_poaVX1hNcHzB<_V7441Zy6?$#B2#2Xj6zT%MrU2F`MLai zFJEK)@YwxM5aCY$p?$J*ycmm*-#Ry=C?tQp@)q5 zeWaa4F>c>{c%8Z!y5Hnkl>gbsu&47}JTmskh&G$J7Uh99p4Q7|c~3APe9L{C?lV}6 zbl3S&8U7G|bH|p%*NQyP|DUxEbbr+uI`l#bwHbqX_d5w_-S?Tx_%G`o0rD@w9R`Xb zs6SMvlD%<~nP2dbx@mcoIjDM)TaQ};`Fu{iANMW>>93A{*y>Xl-S_fK{gxTfw{)#< zT-t(aA^voU3>F?7m)WLKeD)c}>oR0&8UAnO#qgE6UbE=oneNCaonzPsW&a_v2gdq0 zeEe#sg>I?!9-qj+LEKW@*Wh#?EoEU&r5DzM@`=8-65U-r+N3NJ+CCSRWILCPpJ)elc#7s5c=&ZFmrhd}uKUiT2!1njq0lL-v} z>HUMXD{G}g(d;u-UQ#Ck(#iElHng{aI$^$}=A;~2e_F|@L0FHY{Z{{{L}>Fz4WcZoV^dzXFS?)Xg%9olJl$%Y{(clfKgeUmWge)i1w3Ugcuc zZjYE(&TWM&?9riXl4Fr$gy`o9fe{|DC@^Bn$ zUAe_yChso&9g6qA__^aYD=woU@%3bN;1`h9h4ngSyO7j)%V0P)59Qas&HRo24C)RG z676pW$WytzS4q-{(Xym{XfZ&%N={hC22r$q(4=p>z|zANFMSO@=(FUs+m84AIyGC+ zuW{=6mfQ!yMpl$vfgjD=o1YXG)uO&++y1rI9dMUlB!BUmAcz^?ln?vy!a}b}mY-h- z#P|bir#EiGSetLH(ziB@YJQnJv)2RE6?o$|Z3S{l%84H$wxC7F{>mrpLZ9WW`@1Gs z^G5mFExd+H4Ru_xt3NDHLhB}*4_&=BAcdxnxH;*e;z8=eB`zjt*L>ZpzgiO2Ll0g^ z958^(-v|#4hQHOXyy%`Zl?R;)t~)l1a-prnX>D*?4aTZ#GrDB_L23W6R?aOD<*V!p zzaHWRd1B1s$`&f9jq%SC_5SO7-m(eg`E1s`rGy>qdom1_Kou{4@_tSewc0OF9jBS2 zZ)=G5;Z@VaPQUCovil9M#p~1KUl7o=Jn}PlvOFjvY#cUM1sHO4psrx% zB1l2B{1>l|v-De0!hF7eJVrB?Eu0A0gZir-hb`5(;Pr5q#!tlw)GGO3>=RMP(5`*& z3a?6m^8HZUYYh)nfB3Vc;FBRp%^l>zAG1iS;g8_A^+2PEq2RI7KNyKJT-^}EuwP%- zn-^cu0O|Qy_R72WKrlNHaZqGC%Gk6wzR`YyiaV#zdn^(~e`aXL7=?Av;s5Jj#|~VJ z&=3A6pEk{_cxgW?4!moPcjK-q24AeMwe(VD#lMqeZuf9Tl^}P)GBtL@9O?IUEkDJW zGW_8Qv&Qq=;c}XjeVwyCKHlk^oKRFp|DA6SQ`F+%bxXFTWQ>4bLCd+Cb`emnSn0Mo zaDdAGTsC``CAuSao{2BshY-Vn)~|A$X#E;?fZ(Cek}IdfyE(20B5k$uLW`I=Vnq17 z3bbZGKFoKmmMa5yr#R!>9M6Nc!}-d(6%y#Y?VGiv=oV`GH$~TdH;2bVBlpy6Q)uM< z@l%LB3N6n+!eO8V)Q@KBNYuyB(_i>YV|{Og;*p&|h79Oh-_NZq|F3&+wqK| zE$$(Y`KdUg$vfuN#7O}}d|p!3zu60eF$&RhyZrD~)&JbDY3BDMS$tWcPMWf3eFux= zP5idO-3&v`iH&g&pMi4c{M3`yr)c%e>b|33fNq_`qDxJbP!MO6DI_NehZvW7%YAJ4 zs%XM&dx0ME@crUrH!3*R_Q3e*VJGPdwFv1Owt9p>r|PsraS7)pR8<@^+dywOin$M1TJfs)_h zlkL6Ca)Zjt&vX1dhe0}ZR(W3w+H?n1ozz)=eCrzV;fotKV|bhSIPu3?(6guPnl8OX zleT-<-AQ|ls~Jlkr?BoV=*sK;@Wb{0`rY<__+~^^xp&1OX}qGS`X91o;ORe|5@n{$ z{V-6+_Z{c>od!az=qtwv6q%@S1ZyVILhDS#$T($J#QbbP+__GpTs^*{X?EWD$-+@AH_ zFtVqH>CTt=C?hRV)^WB$<9Peaw!{jQB~FtUO&7xHu~62`Nlx_j@}8wC&!NyqU0&iP zky$_HQTvTYU)a!|uJO2g!V#4BZ*+cmJj1}KsBT8D3O={mU-)@r6+=({*!C_p9<-Cc zH*zgm3TpJuz(M(ynAptee#ChXdQ^5UQl;sj>)1}Z`A#A_cq@m+jHThC`Z2rT%N{*X zuM0lX$OEb6lG(~F)*wDT{Ue{9^_^lGCHLKNXA#`^av=432E!k15qCNnB!kgKBZTlr ztaH*ehch;aHY%e0XafJ-K6iA6ni@Q_n}(Ov(gaQh{u+O!yzOwo9yIG;xL-NUieD!- zEkx{Vxr|Pp+Cc(Y4@L$u(j*~P2_~|{i0CxhEUo|9zlt;%(!AG_$bek(fugg@zS`v z${t0Pw|%GY&!E-o{eI)P9<5Wpi785f7~TJe9>Q9;rtkRm z?$|d)j6dGDb;jv3O84s=j#$ry?f{E8={f}vsw5s)u0HS&Uo}2#UAu61EmGz*-}USj z!Z>^1@yeglXyJ`0$@uw(S+2#uLu|gX8#VW{uRb$4f!_O1KP~sCqm39iRucadc|sQp ziZ=x_%Tvnehf}uaq0jWf#A#kNL|)wYtNjZn^LcsV`WdSk8Kj7b@hJZ`LJLKFNXnhH zKRgiHlSbLWTIXx5x?b5M!O|l|LR9sKe1Yg4AaA;$-pHEo#trw%oxMOg`aop3Xb^py z6t=oe)uLh5L&v3*KOi27ykD?Yg~7M`a_0VWfv%t~8u!}_Z(nbC`1*l8XbZWkce63< z(O^ePpNAv5rUu&+(k4O3rPcSn?gl09TjQC(lBm^{;~)3AjnQg{_Isl__)L1W`(eX7 zd|g|-SwGJa!*4%4y=Nnb2@mP^3&B3H|MiSxS@UBI#}qvCsi;HK^Q?36XZtXUKf#-l zHlsOm#iz6cY0yiWjJ91cL&LXYFHVFJ(d~Remw#P1S`HN68Y|#L`^LB|Q#k{)-{=#r zTrI+|)0?hbS!0jkpKpsC4|t$SamwbzE!H`|!I8@`!W)Iq`6h7>mk299ZX(8zSGsaD zdXl>uRwny^BKb$+{1$Z#XxKWtwHqP*=2hBr4mR|;?lzj-vlHWXztT9)xr2Jzl&hj( zGw4k>Jw|Er7>b=8Qajg#7JH$Yd*AOOEVdv~La`4QM{MqspD_3!T!667c`-&GBzp=! za=^en!##0U4h%o4Xz^=VR=i8V=fjq7?~i~an{=pc<4+9MEl=Y!lE$#zz!uIU8W`2S z_#K8uAX#z>Sx^1vdu=67yTWDA)V?9->5B`n_PTgT>px}+$^)CZV6new;VXLh zb#jd1{|ZS9E#pEHpfYtq^ZA4ch!@_d+`H=uJ$v5z1tpf8 z+naqay2qH~9)+tfk>sEl(lTepzZxRIs7I?oi}RyAnEt|72EFreU!9X2yQ| zI>cV^>sqmzf%}ccy=T|Bp!@0dC~a2(l&$%lyq_k3Zds|P**Ygd?lh_LaU){LsJd;V z^$pMh1LFKPY)Ae0j@mdY);YpGwkl4B>4tibd1!kO9~Ih&}sI%?OHcM zR9x%hl-!H4A-Uoa6)U{uy|IK6Vh^Ih$AgY>EdO<4*OZJSKQ9PFgv$y0{#~acX$hFw z{O&?~c=(!(qn;R_-az*A^8qQ~?vX=r{s{kbYI4PH+4lzmqi4{0keeiXC)dPaNKw#z&ntfnx1Cv)6kUYM{mb}I5#=%XH8vsdPbRuwubCJQb3uf2 zrfzw=8z!{3@&$ITKa5%2zxsTL5(zX+RJh0r^e<oAzZHKAr0x{0#4}2$h~VQq=D@&<7gA?7*s$z& z`61cOxsA+y3s%0N_xOu)E%f^M+dkl^MA-3>)!!Xi&pWx~&%2DhLXYV=_S^|6^t(Pb zD+}JJ_6z`R$qYh9{T3{B%qMu1+s z;{3U7kr(w)EkTOOk@dyUK=;OZk7{%)-%*o~eE(1XGB=KV3^GeX&78AYRE|Bv&RqJ{ zP%F&PXA<{kgB;Madq?F8eFJ8B+EbSY(HUcC*;}z%t2+e4A*;teuNng-I&7tn=N^ol z8BjLlKZpVQqQFblnjk*jay(Hp7Jgn14oj?n-ZA2(6M~MQS}28kuU?7L=?ww_wr^3; zbV*E!pEXbQ@?%4*?o^}Zg-)7$s1nE_o4McrjKc6I#T8#H1JR@Ky)8eHfiv_R)M^PS zC^}-jy=;#Z=zOh*0y1LJbVE{YMCCT<7$0yf4NYfcYjqr#gWkC!&9IzhuaY+zoC*w-MThl|Ic>Xh=-suhuHRuA{o>ES zzBCSDoCVu=QfM$5 zj6a>j@UudKrTykL`13| zt53Zrit_k(Z&L)He-)Rm(A`giRxpeZADpy4(ei&YLOF2tj=%JGF@6U#p(f2cNcdm@AJ z<$vwAmYhP#i%Z86dy_!;rqjCUm?-*}l`h@8x&_5nD~+2Kv(Rj_<$csFU*5_-2c5#vm@y6g%IWA7(4X-XjFF!x-{%PTb`am&1b+*8Y2Kt-W^Sj|Pmc%RX3W^c@%UuQ!e~d!cj7A0F!6I1Cl_M@;^C zht}^F!YK)d7M*FZgq zk$v+w-p`ApeZlb?nWF|B^pyQg*|Qj2d^0R8^1tH4Bwru4SaF0gE+7??Z4lXCy8Y2# zarD$4Wc$|7;_HEPs*Ba$1tTx1E?qL&0CkV9U-O6$#$f7nuJ*aRsN&cbz+X`Tx}|;E z)R%{#cIkU>I5U9JgT#E3aZONP?+c=M5fPB2oF*mx4fNKGvQ1j&LB7mZq$Jx2YC-8S zf5AvpRj;Yv^H~XDhIUIw`diR0u=K^Uqz2SXH#C^($uRpf9{Vj%W*GxtJ-u4vudjuc zwz!|G&+W$e)=k}3i+eHRzWBaSTK)+oW;*nWYPw^$FJc83v0wBHMpyHwpue3RI_vm(rdIKy zA@FlKdx{81R!225B~GC~&no|V*>d_2;pQ7q&f9mKrbjPi_aWQxh4db8of4w>j($WITcG6bV zIJ{bP|4SA|-$bAFNls$Thgv+lRZBcb!9OqMJ!D6>kg#O;HrDz>OXNzQeP*o;JpN?u zW1b@*J+Rces2+~;Q_qhG7-wPp-FLREWEQ_w8Qj?CP{yzuyEG*THeqPgSU)+fuomrm z;lj(VB_uGV1?q(5MVn=JF!6xLW}&qK-I@tay-(MotjXNqM1MHyuT;5ZA7R={ zCfyVOQ9!Q0`ZnEliS~H9b^P*fF*a24hzGUYnMC)yse=aVULx~-ZBfyVKWLdrFybkH zf(b*1bIDJ3VJJPytm{6*U*n7Bw8+_lA=N#xAz@oFD0S=h=g1C3tkA78x#NPdM}vyG z(+qz`|GAaon+OcN3a$uvQ-PizX@SyTYEV70A>;4g3iS4#=UsPS9OMU^UfF4n{BJ** z{T=czbKamCkFoiL){FN$Ply*gm3xjMW zm-Bgi(E9$P@11uEDBQ#SI(>nFCKsXU@Lw`0^8NVJtIPTSF!m;JHNM;XaLPQ-LdZOY z+I!b7(=rR844IXACi4^$5<*BtMf0S2p6}*)RuLfyMUr{WfB)Xkd-i=jzmxax< z^L+RBX^-n(!?mt;EvjzwZp9bJGRo`ItmJaOIz2n1`E-7dRJuP{>yLFx9X;|X+1WGW z9%V&*`_+8=H>&klTd6r|E2Wks1PZNd8J~iXEy$>D}HPo12g1`n&1nd0AWU zKcxKZ!MB+L=k=9d_x*k5cMZKAuyNr4&D-R>=g7S!Z>Lbyor`xv7hIrlzjL-9T2@m2 z5am93!KVN9Jr=qI{wNz{MGyBb**>p$I)&LpwY+&kmC|dSGC$qr=jqX|#Hbn9-KoCP zdr9t=X;kpwPuQn#XXsX;iqfF3viQ+&m~U;j+w>r>&Ga6VHc^`G3q_}{d+6PncI|zK zavsj>!I}QM!W5}&q1xp~t2hrN(##-b=NWzS{^X|ZFin+`7uY!N?RkVA%x(PHt48*^ z)%rQ6IlQm=c1DJ-`n#?ar&hFn%41pl{5AR42ek!MzkS!bw{wcAL@!;bf8I_itkm** z;!^ovpSxI^|L9a=AqBg+W^T7sr^*h7FLjQ=yuqo$ebonB(~F%4#%~%jl3s-6y|VxM zhKf36?#*fwL=}PE?NswS%kSSiEv$S5m-VDr+eTF<$sbugP_Tcm0@q!sn)uH2TIqOt zUp;Q$?(tmr`rXipdk_9hkk!av65kB;Bj;9@C2{GtlvZJ3xFK@{#h5Iq`p`On-c7w_ zyUM*CmDqLO6Sc~Qo{QC<@6>5cRlQ$_Z(lr?s_)ozIN_s0b=H%|OzPZ$UiWPiYZ$Pa zYNmBHQXU2KBzLc?9v1sjq1uj-Pfx6;x>D;sqx}CHe=hXQj(*^BkWzwGB0}_5P|@P@ z{cCf}soE`e!Fk6Qlsa^X51DnOS6-fa##L_gq*Gwe9NiIAFE;5OHS#E3>b1gIccB?o z^%@>v)a4EN8eHjr^Wqe$zx#argbt_Zfs(DRc3UdA-L`cPI+R5)L1tlwu(rF(9DTPd-mXTu*}n;0vh*M_C7y?Zs%YtP`X#}hZw ztA^*5^~%kO&AmK+`Eq@#GtBlmzUMh*c`MJUJ0`2Y;-;SOr_!IEfAvb9AMu->ES@`f z`guDx0ehcwv@K&J%}?z4Ejlg*C6xUA@zcQl9qQq#non(u;!^jGJKH zoL(IHs6FHPD0*2I)H2MzABBD#@YG#oOkt1M>i54*=z7&91s_{OdhNUJ!Ah$Q zI^|mA20ZGjM$xZM&2?D&mCAQ-pIR{XJ3ZTE*x5$Rb%-)0t@pKwucQ}y_S+kIOr&R` z%QN!(Hm9IT-TS-t4Wi1>e)FogY^5TfY133ACer)jv%!PL#?U*HJKkq3`276yHJ6MI zdn-}hqYtx_e2&qZ`35EfDii2=hb0@FIu=k(Gm`_opUCQjxr*C!pJ&PcF74=!Iad=d zkXPP-6+Ja%?`Kt-^LG_~ev*Ql>qZo$P*s(QLPfxHvVB>yWKNPRF?zn?K}ZAD-p~HF z|KL!1dt;#4^2#psOwnPD7C#MovvqWz{jCqvb3=z8%bqQxTAvQvD^{vd z?L__YZ!Bc>x~}CI!{)XWpIYAi_ zn|m!%Qpu%S{Ur`vj&-K`xg}`^sDWel|SFa=#r=Yr!#{lt5c4_;FDju z%mY>Rx%RnIBs*_MR}3&PK1RX6Cq6teXAjjodh}juGlJ?S&vh)(7tvc2mtUt{`S<^F z--=@{t>05+ai^JDxi)m)#-~l>4sQzoG5&C(dL$JkW$8X%xRQzrdh`#=qsOWE?>$|THsW5MGsrxZ|dYNQ3*eY9ACrwu`Pe%&Z}Fze?@AmdgQ3R(Mf+dtDhl?*8$9sHZv= zIAwC2pY7UHWc+W7wbS|c9yQ`})>^v;`9Bw&8k#tF|8~mE zez*Hi4-=}+j1{-FI7Im`?@YP(cm!3tltymV#BuIniFHH}%HO3RHe{()i&6tmygC(+g~W zOr}?6EzkJQv8LyHe4p(9EAtPo;Ndzq`jQ;Cpzh-{ekde^r;>WZm9$TuYx4 z52PsFDUG7nuYzVvR@c$}3*`yl7hIz$uJZ?F*elQz`lWL<_&cQ^le+Zkqe^9e&!2Wp zl2GNG@AJPj-%iy}%2#yG8%2BnChIm|SVWm~FZNw9Qk8$dqdeyII9WokMlEK(TN~)@ z^q6@{Rx*1x+L}?Q<}AN2JUvZmOJ5Uumq@!xEeoh5Tz|%>E*&U-|LF+n0%QLEzjT?p zeug_0U389kezb->z0?{;HL6n1w*kwtM-3!eH|OMi|N5S&(O(R^(gZzo4;hB zJr&ga=rC%l36;0$vxk+d&_lO~4?9M7r&lwS-krSYPKEv3JT}?=h|<2FUej-hGQDnL zbN%4ziByqO`EHI}E=yKVXs6vD-`YeaVe~PhSp<9{AOs9Kt6jS1T4y1eqZvlQYBIU1}gSy?)LVV5XBz7A}_V4mlK?*T~ArP$XcpgNE$$|5;X>NKafSQ7w=VEmgq>8opToTI5C4N z^jhAw{HaXma{Gss3_3?SmVYb{m~5e}u6hGg&dcMG{PkdvMJPt7O@^ z9&^NCykc`I>-~LJvndf&*XM=a)UFq)zV5!qQTyif)Yw?*#e&E5Y9DDGS+bCd1J@a! zOjD;ie`Aw}N1doNU{Fc@zBsDPfFp^UUaR6vBU@Bg=b{#ALbJJpTezu7fu z?OM4$13kSyBB1&JfBrkQb%8A%rpW*Kc_07XrV|~hwsMYi?S~*LpU_{WtMLJPKCsyz ztr#1+5`D+6z*=_h4(=;7x8V47*vun45B;#FkPADuY#q};evw7a^~X3~SnM2H;XRx0 znLKTk-z8f;qOb)J9l~FZCM>_ zx$fG*hX4I}<@b3g%`hqb#_@UQXMe*kT{V;cbIrDVuXT3HRBf>E{nC>ssrdAfxwVml z=)OR zvTF+y1MAD?Qp&+1{W{Jylp*{v74X=Y31NNB3&m`+LoS~F9we(9hVC5E;}E?+ov4wusE$gfj8-exG@*xE+b!z5(~?SW1Zk=+ zs-Se!`JVGxOR6p{Ros?mL9b@c?`HAhB)v&53O_2`>m6D5XC)NUA5SF3e`S~$*emrtJ~B}7q7CIOZn4OL;d$!(yQYiGc}z| z>D?Tgv-9RGr`Lx)8rZQyN>8@+JKlN_z1E9Wy{)z2zkaVo*LTI8!qq5rU`{Km>AWxT zz(ec9OT$01IOD$EG9-##tjriOS>+>HyIuY162tdhJiENSS@Tu3lrGi#<~zEEUVK@Q zeR7=#mCSTo>RFOVZ+>5)ZzE&=>vdl(7qu8!A*;vEEZZ0qX-BzRLrdRxc}S0qHd~!e zG^Gq(lPyMl`28=^wR*a@1U>luRp&MgQ>S{D+%Z1~6jI*IRxV|RTdDfx-#2G(2T}F$ zgdlrA?ssYrwmG+Kq^us)O7ChUT~5U__wOmXY)Um7w%<&OxK250x+9c&ouaqy?7pjR z0LAw4o_u>W*Nu2_sw8^)%CS`LdGLPV(F$VoN^ia7d`)_LzT4bp?>YbEW$>{#zb8ad zq0&q78@)WryD_g*R74)PuT2ig!=_tO^){>ggZ7D3_}WnU=fwl`CZcFW`mj^<$ZXR4 zt!>&~p*YoxTFDt<^h+*R2~MKw$Bjy5W!3gaoE%d;z}wA0&x%>p@Y zP`lI8sh{d(s(aVb?~R*2`5kuD`|!IZ)gC#(rdLd)D+|;Y-#O3E=gW=nG=8<1LXVZ= zPpnM8NtMeqHmdnKQ-x=Nox?dBx^w1y;UKFwl(+Ke$zP>YsN_zRhUF!$15sBzyfpS_ z7`^Jye4&lxGKKve_gE=w3EfxOF<|12dsL)$_05^Sc~q3_ZhJmt1ig2$d$NT(l2i4= zj#=G5P`#x8@6k$p55WBuA)DH%@;RF40h9j@+i6Fsp7)b44(2?8lH#^0gMZghP2{5J z3&XXjwsilUY&Wj=SR2qc;&E@WpTG)+{p3AMxpQ%kA`H^ZoB<9?SAl z{V4`FS29_AVsl@0mVLixZQDy+d7q^6Fk3vTYXiNrKXaya(03}=kITvM;&TBH-HJvW z8q%M_?R0k$2^^7Btc(J|l3M~Bgq78TpN&dH{?xwccCExS{0 z?XZy*QrY)o8sgHw(v2Hm1Gh&sWp%{Z~}_8G3G4kaRv-_kVp%ncq^}s=8dYHPvod`*Fn) zeX8p^o0O}UP}v6c8(!}IRNenp`J6p96jR`R~Ps@HD3{N}736?fm{cy}p3H(p@oWnPaImX5y;T zz5WZYrmNH2PODf`LCMZ7nAt8_K6GR5!IPo7^mx{q>uBR>6jf~-#d zGgEO*2!&4m(mC``BL!bqo_%ep3DvcHe`S>@l-?1Ex3%6nAbQ++jA526~szio$V-Ttrp!?(t4uYY-(wyz59 zzIW9MN~t+Ha>Y(YZ-=CrzdP27O7t6RRygL<>k(Hw?%EJbrG>X^UWz@a?tIW}(`plX z+Fmj7@@UTYEO*he4k;f(RWGv_Y?aFLb*-UYU)bi++mQ!P_sDjokg9Tn2`W?m_xq6l z{o9({eakZTQOu)9&z$Ksm0sDL+1zI})$bnIFm|^oWk*_D{peOn)t*}}>ke?H;?iFV zm5$4)=2chY9q*0lRaT4a_W4!xXtbw8puQPz-C zWn&*TP)O+AlKJZ<)4ORe^r|E0(Tl77qyPA5^qu(ghRLxqcyipozkP+fAz z0-dhYsH$p2?XN?}sj#bUNAC(7+Go)2-tMmvl(lxD_EXl4D$lt4-ySxcBCpRryT@&y z%ziVRCT<=<0lI(Jm8MqFJ+*-r`F%|2$=!*w_3x%pNZb9b&ZVf*d!O`QN&|+`lbO3u z`>CnYgDUB{E-mHy$1?x>d-1q;hO+qA(ztSaI=y6NyR_&d#q8KOGew&AU*GdOlU)W$ zma@F!&rpZ0IvnqKYZGYIevRV2;Z@4^PYNoqIhykiFGdJ zU%q~#m9iN{ziq$uOVoHOozbkf(@{T4cV7CwDw^v`mUkX(-~4YrL ze{t4cx;e@weYKI9{J!^>#+%QJ|4eUAj5+wmz+6^uv|8EI=sMMHSmV}m%xZe{#N4;T zxry{<{_40LMlY$#eS2B!srvN1=exkE1Fh)vKBf>lMCM1M*UddSOpOYywXdk;hfwLb z6QcERVBf;HSIw{gv8LGNZQUi^9VofW8sq)+-+FTSCk8~CIsKr=-wH)7yC>4)ealBb z3IA_O`SRb)-?zwX{K0m!=Lc<=Z1kHl-PNLUh8>~oEen@) zv&f`3c4z)PKedZWFPR)0oIQh{%;?{GSbYrHJ?QYrvP&YBgy;N92vi||v~o!xd_ z;C-rJJKS`p9q%{Pzp(bM)p4emv_f~B*8z%p;S_c*Z7IbE8OC{N$@0Fm!#&%l-J^=g zp`Sm-is)_FOv3}OcwO++u;VSgVfU!=_LYd#{)KdRUh;@N3uK>1qw|0^bUXa+f)9>$m3eku2j=+rCR-C zA1WXEW@tsjf9?NPP-w0w`=4eC%@x|n{=dcUb-OnGkEmg11%+OE|L=o}8e0Fk5{v$G zCDH!RmF9mQQ__%V$}goF@=I<0sE*EmE=4;3c~T{@x>SCtC4VxpRDLN@*Op&u$^T4K zB!6B_u{yuxH;Co0rYVuXgr+9Hm%m9({&u8V@>i2e<&SEs%U?}fB!6CQ{)x4v^5@mo z7RxXBC)QCH^Go^L(Gg4Jm;4!YwEuJ2Tti*{-euRC68W`;M8vOk`28aJJC$9F#r#?e z9@pl7D;D#|#Zvw}VjXSywM0V%*YLQG7_PPC*P0^!J~g#;__ekMzlQg$rNQsf(&V34 z3%&=bI=@G%&0kAf#NV5?7Jq(io&P+KqWs+}YI3ubKb?{WH(`<7)|Euus6-O^z5E+e zl4!_(d|0>kst5DYg z^APi&NdxZJ05i~l=M<^)uTBI%w@A!?4v`cd*OtJw7F_e!;>THb4L`j^1ZE@VKe0r@ zAJ^36?_X#_U}j))TJWB=G$e2h<|Kmq;rr2o*VU51-)i&kN~+GEN2#jUkiUnZFv7W8vJn`cn>=A?@&>sA;0?1`%;vDGm7%>MM;C(orah@U+~V{L2=I^ zvwgUf+ntCzD3RPFD2YYfee-i7=5AKZeJlU9l_V1G$>A7q|E|eTr6&I~Eq)@j`0>(` ze|9A;aNqo_O6A@|cFA3`h&yVD{7q_W@ke=#0jI8`#T_;L{OTf2xQ1h?3Emk@K?J5L z0@D$}kq}AnXz^nsmcR4=@zngaB;fHSQn&^WuBpNQRujCx7F~btL@#=)iZSBX>`V8r;aa<)YV?TSC*8E9Q@iwZMVPe@6)q z!x9nCHqb`7tmx6IM=bVkg5zB~z1;=he7hmo6~h#Q)~kIOAw z%u{y$?aPh;_s!f}YHxFeN-)k0>&eKQY1I{X=Qw86<@stb-x101CWd~LGt z8O#%$DViaqis)oT@Y9KOz$7946pPT|f=Nm-HP(V_d>nEa2nL#9=9=)Fn%ZE_+Gw_r z*FX-Xr3sE(9h^G^7%3bzDZFQaX+!?S!=R%4mCz|`@N`0(XA9iz@PMWylAl^7F?Xqu z0YD`w7tw&9QY6Nd znLnopo?irMpa`BvkTOFo7lWyb!Ly1XjTNH@)k3ey@7Dw`t_jCP6W$McL8$~h85|!S z@UlAK-F4ve>PRq_YrwTUjg{MlA}_@?IC67W14|%)OID!ec5= z_AplS98rtgjkY?^`*Vk9- zyoXo=11a1C?^6t~D=6;a=avA#Ac5nciQWcMIzfd5pIxdA-UGa)Hh4L#igZL+{lMc8 zcy;7KTT%XvbM#3OY8vi0MEp0!>IGpYp5pQJiho?JNVsdo+CwU7(({OU!NDOZ{xJo1 z#h;f~88SQ3_=nAi&>dj~5AFzTQUpngNCMFfJiJI7-OfL33~Uu`Nuq^d57-GNR$!l6 zV4qTOcT)IVQiy0$30{N!Xk#+0Z@mBIX&4Pu_uiRA%VR+T`}AvYHZ&(1XYy_)N|W4Dwa8*LtswYB&q|IT!@Ao2>LEtoNw%D*Ein58

    4HeAg^xoyH6f%WX8%x$ud#Bh8hV6GA|m^4Ok1b`rE)P%Z86R=@T zjQChC1E{10W-RpTm?41Y7aS9~AChOD$NztsJ!S%OH!lBG6y=45BJbL0aEGM93t16| z6FKZAs8_hbh#)cLX3w*9CGLJ?i7A{GUgmJ~6!RzJ9!ciqA#>%I9MY6rMt{o~V?m(oP@F@5F{K=%?<$2wPSgJe^l;u7=r{-r~2TVd8er|O* zVuE7`bryERgb6mZI|Q9ENU*_6i@@XrZ4E$)!~hFOpe~a@jU$2QkpQl$2@yvVFkem0 zf7ECY4K?Aj;1QETyG9BHf)o;dDI6IACJV`xwiJ#Yd|qK|0uU)kEO`p6$fJh_|M8)N z#_JP2B@&(hVN%1ZJ}n-gv^YE^?yAA4*_oQZPX5 z!-4T?fN^QSm!ttOr3ga3pooW}Sqw%bhIk^tnV>By!M++|MG(g{#h9T3_z&5)7F2;k zObCnuj1>K}5c&k44KYms63E>K&(?WLs=+}^4W3hI@Onv*k8`JuX$yxkc?vD&zDSV4 z@B$Dr7;bnHag+AS(+deC;XH$Z_7xa3Z@tJac{0Nrc8GcLWCs1W6w)C;!r+o06v*9y z$^eiDM_{zU(Fl9WklzS$oqsg4z!t;^-9sfQ0Y@f*N)mBTElBqTl_8)8Qh0CL5HPf% za@L0D*8zLyO*{dN4he%45@|>c;1cRP=sNMp&)tw%0#?RNfd82$uSd~FcuB_3s=zR~ z8FJo)5~oebF1a&>l$qz$Ql1g>W3R-+h?10_6$CZ7Gu7rVjBFN!(70ztZ;Kf0gC`$3lx0-weloXkn(ceg8NAU7Ry6C_sSA=?mZFY=hn{i z1x*PAetrqPQ0xtGyXK#m<4NcorJS9EcFjRR%u>NQO2Jlvn#GM75Zeh z1FT03$*vgk4l%S}#Sm{L0BuO1W)mc!n4}^d3r>y})LL5bJZQC2xL*qIS&BXx6H0ho z8xnCH2;cn2*ARibs-UBHC zKfwQU4fHB7Q9*kWKCcwgSZ(NUX#=dFjU9PGw;fYa>`Td0PTo@I86`r%+&Z~sXz+po zd+OZJiNJU9T1S&7V46Bm%J3Wy2&BC3#$F||MtN1ky|oT6vat82F2jJ0$yQ{(n11roiWVn(|AX(8ZN<=;89S~*8qe##X&{H+0e zHg1s`^5RYASRpgyWeiw4_*i}v#88uSjvB{tWtZI2IRb#`AQ0a8u@ThdfK+nVjQ*I1 zcU~HEnz-z;34Hv2Q%agfwnbo~f}Sb37GblAn+LjB5gaQq91}5=!-9eX3I#z{h$bx{ z@`Fo;;y{os;&TG1BcKPsdyqorB1FFt#6+qI6e3NIfI#`nZGnHS0(T3&9cbI*jEMXh z#N2jy#;wE|6G}Y)QIc?GGEOn^UKIBA!SbM0%F7I%*slf#gL%vjl6=0;`sy z(?dsx#3Zmr0ecsopK}hI@hJ{oe{hr1;DMC4hY^zz%Rhk(0M`6@ zIjswWInsM!L+$4j|&*U&?(n|d`|I!AE6SXN81 zWETG`_G2d=%pJ=ps0(!D-(fR(n3q2_b_h9$qQQfr21m$wvW7(!=DxhF2CN8<3ojLv zc*Z73gLwglU=j>&073~9qcDDofIUAsQYgUWeviD!)Pc{%nMX>T z3arEj#*{d=A|P(@WJAOc3v@sQLwURdDs3ty=IkK>LJH&6I6VzbOK#tgVQ?4E!=)hE z;328$MkGhEgh2vQ5T35+{38Q_GEf~NvO0zWaA_JESRO(c5%3amLJuGfq-RUt4?+hpbCUYz}x%WG$k;}%Ka@4 zszL$|jeOqt(&Dei{e!@H^KixUL?PZG7%f$YYcOtXD}Zrei$RcHV_N}v-pD=#=xk2oL9}gbb1la~q0I_!pS+>wE!!C-LVz6qYYOH+pOLEoDDf{%NCki~e*iW3 zB`{cc2FhEEN_@IZiT9;t83ouHz!&mokN_W*rzhCc;5LC-0#8~vZmz_~JY<(VAK+yt z5=)^O2A~Ee4B$JlU50g}ATi+gYoPcF4nyO_C=NpdSSJDgiJ;!7`FT+U zljemIpNJBak(>p^X+#27%h5ZYlnE#YpcTNKD&llJS499A2m>&c!*dxaPZOm4)Zp|O zIA9(n1Z_HCTk{+EJ43C7|C`}M4KO$jC<@WgMUWASAPEtSI-vdp8aMo{1c_GI6af%J z6I`bz6kfsv12bAgmLXvPBh~^pDxkiA;o?A}Aftu%fD=9f1psjCI*@G(XJYXHU?B*H zL~bdHKvDz(4R1yunG5C&xKBlA4yiCqJ#v>RLH-qVHeiH|Ck{O4`3G9asjyNWl28nQ zCpt(@1vn8TEclb5Ux&~ypl%DWXh@LJ;e*4}fGSA?n!SR7N*v(<;7vf|LhuhsiIDsX znuh4`Q5g%mIsXJW;Cu)qiy-0Eg0n85&>|>^%|Q$tP$+1_cY?edZokdsg8=d@fkS^v zyb-I!-N`?dhq!x&DV(N9Z@4*vzzg>}0-6Q4K>?o&df7m;fGUn78z?pa{+oBWA!p&I z4*fTby`by>N)6x?fk1`pALA+l@ByhefVDvzMGS6O46$1b??;RbZlsK1_6x;3@?!;< zH1@0o`3X|Mz?GtU7K9XS!0dz*1<0EK)}b6zQPFqQ>yGKU?JU;%^b z9AMPZ1m6oZSe(y7e~U>q`dcJspznppF&{zYAyh6DkiY@7fH*7$|0V%|MA*f~Q5o>1 z;3u`9gw&FvF=NLWxr*3S`A35V2iO6b)P^3Y4)iE>)G?<3luZ6S9FUOzP&fezg( z0g&Lvgt-D3G;~dPgHHe@^JD^u-|9_TJa^fGu^H&4sPjt>UU2`f#XI#}_C|^O8kx(6 z%!H>SybeW|%|8X684!TusTPWMf-wsfKj3jl=ro}A*Ffq8Hn`D%aZU_{-UKWotQ?_Q zMBX=cP;mAZ^@1Rp2xP9XQbVsR_l1fuh6ThO?jtmKIl|lhO1!-)vq)~7{C5}g!VVkU zK(*lB3+;*9DVHTxl7QvF^Z*hm`J>$V!~BZ?3~MsN11`o}`r3eifs2(w_6ngMTgw9d z1ME2fEDJxBK(iIRnm`p0;Rh720`Dt;cOm2oI9u!;IKi_gk#uJ+n_zwd z3NGZiH952>m^4Jxl^ZJP!E;~;X9~F|g!Y02c)8H)f|)`9YjFaHLsmFF2xbN`U7cS- zF~yA!Gzg#>2L2JXSexYL2m}cMdk3}ulZEkJ64ApGON%|C{{1Ui!RGd zVA4W>0Q{qvLS-;;%K}+<0F0$@zi=Q7^$6e^fM?X$78Fzeny!_<=VqL=4vhxxZ~0J- zpwGr{0BDwj{0M4sTM&WlJd${LPRtD!vkn-!<@e$oB&vpi9)bMN@OXe+3=Ej_C&Q_7 zX_F^~yIv`;Dq)EN0$@B*Xj-@fRl_)f?V-^_lEM>f!H6gK!XUEEPY|TV zxW5KE%9;ROa4*awjDT#+?H?3BpbUhPQHqH-Hsi2C4GA_L9B`2W_63eL2_)yiWecWD z;ToHFm?I(OQlRM#d670AG|Z9U&?n?{0D6Ux9Nxh!4>1OCFBrE@EYk6 zPyz}xY}DZzk`2_hffFf(ULv-OaU4n;02{$Z96_=H?i@Mu|KtjR3&%MV0dZK)8{%8a z;5iDC>w!oC zoeLlf$^VQmUQyz)Q&5TmZH`9|9MOU_LBKx-JJi705KMDW%0%Fap+}7r34}nvg9_E{ z0QNwt5U#Vq%}>Y=MnXEO*x(F5Qg#IMP6&Y@fnAt>LAHs1s zm@I0#=n_K}FIZRyHYXgQ0H25y8ekU-WNdJ=2BhLzf>lY#L&q6AjM`vN=pRuZ0)3nS zk-%&2!{k>0Nxo@MA z1gR`f37}{LK!M+jI-V%71i!MN^?)7?cj)1eGOCyWlpvTiMT|}`QHlgfB#A*k7bo8k zi^B;wT-F7-q9$02pq~rg7N;cy&;VpDQt-BdO%13Bfh=FV2MaNX=z`)40b%*y!r=3N zJ_hb%gb94W$Uv4H1|vYp6Xf)Pr~ut$elH51fS4FqH?HX7h7J<>D9OqFA@n4`VFH~O ziMvf9T!=UTLX0Z4V6D*D6|fI*i5E&83)ap+;|r`quxbWZ%0R^?*1}vA{41(_;^c&8 z(^U~7#6tZY$QzMji`Il76)MUKhQ{R2BjWSqoTA9xQ`U5CG)rpbvt6CD4Qctr~3y}OW**(>A_Dc+&2rM zT(G+Vd$kzWA(W#4zF__lyJL8btZ;CKh@avNBkF_zQitQd=m2%#9s$)*ZeDVp0k|FcMbR=fgcmB!vcSW`b@~80=Q8? z6_lc(0Rcv^Edio8)bhB!O-lof5odRhvW@eN{{ZvBs0A{JsNDeXAL}^YX;hR~HGB=1 zB0xrf!28ie zLl$UtBJK~kJkS#b%oQ94LnartW|0eva`F)H1xy#Y4e=H%UjPd-BAo3C)euB)V8H-x z4^z3k)&?RXpg&?TW(fK`PJ@gij68x~EHJsCWeT+ntTMpyFJ1zHFV+E9E58?|i3Ng8 zkPZGzArF2eburdM@V6)os?~Hogy;=U0|@rR2v)g6#f-9Eg0)D9C_-2UPp%DBvLG`Q ztX7505F&+uI;hh`^p+2=z;a7mAp^$6tpucDc}C9_)&xVeFtLIgVwyBA*f*QxGcnR_!ZRQsN-a|V52;a3xajw!Y;wqBiw?4Q`)%53lm1% ze1Yvyz?KB7SH$STkX-^+gt1k?B0+*4)ED5|1mk@2p9Y!HsCx}S43CW<2*9&?ocEW2 zq43yRSYV!42U$6KEE|k>_9NKh*Rga-aZklcN^Ua6_F|-g$s-0!~u! zjGuR?IU`j-?E&FH?twTBOGyguftQvbFNG@8f;GALQ$qw12$5kMmxmX`#ekd6^K3wU`JZw5L}AOI$?gI0&3S+V1vH$T z;Gd0ul}bqTP={|`xWE~#5xcsO;0h9Vfl44mE|gY97(<}+2iK_dfO~FG0T2h#1YIqN zR+y}#60m@P1IfBzpdHCLVAV+M1xG6!2nIL=iVbZXN*4^Gp(P{XSDvTyiAs=gf^`r) z)bZIDL2}NmLHvyp#PF#-j&rpc88R1lTUu)0xis)|A4WHZj72LzVCY0X7<(Nhw{*i1TJrfDXD8VL>Y=guD6ATDG zxVQ~vFp-`qSX+q20g4ss{CCjcnk(`zgRfH(j*9TS0^B&lrrf$=#1t6zfR*yn1Gakb zH9tyPyfWtSG&YR{Og9dZaO*~?2tFf@lJ~&uz=k_SSpnlnz;Z{H5i;AMB1MB0tgc3$ z2N*Io*-<7%P>~{@0=Nl|lVEm&6)9vSg62C^vjX%VRWSuSYrx_DbB#3^DQ3j*xdg(( zaA<_%A##Qi&uISh)dM^ONizu41K}Pl8d7PPz{W-@q#)e5f!qo17zM3(vcWSVEzqBb zc|QJRm>&Sr2g6Ssv_YkE0gvtWy0t1mm zq=;aR2)VnkMugM>`FMB=1Pk1uE)?K3fa4%24K<%&O9P%1oQFlU5nVXcxKQ)S|wJ{JyQCJwPuSr7$Xaov5Xifod30NpR_0R+rHa=m6l0Kkv1z9hT3Q`z11?5;? zYoL-m%$VYKYd}=Ea|W_I{7gczZOCGg?2eBEq#;5@6&%t)XN!_P=yBIsU8eucA6M=e3(*r^x$S%9sNBn4Rg)X2 z1zVKlFM%`3NMgtRaZuj~_Q#>hFQ%Ocej(_K9b2UTVhw~M>Nwsb7|j3=hC3#Fzl38v^88MIHWWdxA9`-QF2HSYKnDiR8&u6{YH&;ptvXPY z!j*(T2j;O9`VipDfKUW_(lGYL?F7qhY_#$C2&%fUk`OCzeuMVK9yRKWl`hiZ_cz)cKh&~P;yZ$t|acSsHa z_kp%7zl7Ej^kR{ffQ(B3um!t{F-=77j9}*=Ql`LqF*U>qH2B4FTZwQM2TBM?0t7)9 z_oN}H2+yPQuQizhECzvaUb&*E61Oy9W5NU@Ft4C;Rc|W9N-% zVo0|VD9GWg4TMb8KNRG0aKC_<0-+Qenb^EU=ZCW42niy)90|cZEH)KB<*%Zs&EXW@ zhk-qxzMpy+AKAc+wzawB_fp5aO9^sBvz_W43 z7_L)5Xaw>-ftCd_pfG*B$fEYupQOAKCV;cYxLmA^^~?;8uiMD!i@*4+n(=4BNnFTo72p#soJro-lCMxL_#<)E|Nd z+&{QD(0vdrAi$6ep-~u;G4vv3UmdO?|HPshJdQx(2a0UmZz}!PRSEVh~KymfnREY z`E&LIPWLXi%-#i)=06i#sH!1CdjI422%P|)<_ z7LCXd_t(Hn;{}tZR#Pb}ZUF;oKCG$(Jwo860rv+eYW#%-83Ghe|LPSAs1bM#7LDMz zU?T|7A&@cw0Fq!}5*`>hL0;6M5tx;2)fL7}*0j6ZMC9#sYmDFj}Oh0k0D1@%&M6&b&W_jUG_u z051#eA1JPXGy!QXbQeLTjdv{(xP&+=$X}5lk2wTZUC6Q2!Ac9;IPf@jzQHmCWj(4J zqg)39>_|rwh-Cc(kOzww%5p&IkLt!a)Q*sVpbHMxk1#2;bfn;WgvN~yB+8(n)l@ppXEl}h2)01)SPK#hodl{83knk#t_PJ zAJ>&^6n~HK>+$w-Z1nDdEEnyB0hAm+D z4Z4}&H*q5(3|sI&0~gBeRj}6%=po#(!d@E?*~amIK0kz{CH^SrZG*k?wgw2&2zE7d z&kLPTlvLuE{F~GPkPU!J0W}Fa0vd3Spns1d6KLmjh|par;k z39>&iWPgIlj$_IgNi{I?@}F5)e<7j^S*k!V4zfrTk3;ccfzAomS;&-=(}{Q?#mgtT z(JS&r%h)aDB^5SKxj~|Ba*O26eOiWSp71b=DFcD1RW2S&TRorHQ zOFnVh0llCYJt8EOxF#72K-~E)qzj`W1#;+cni=PRz?(vp5b7f~ok3{B`_zWxEu


    jA%ZvG&G0nCG@1;>D93eFu@HgZ1?ECpOf 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
      mV@+=w^9v|Z^){5@@F8qD8;MI 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 E0Kq>~Hvj+t literal 0 HcmV?d00001 diff --git a/tests/comparisons/compare_FDR_power.R b/tests/comparisons/compare_FDR_power.R index 6ca3f4d..2349d22 100644 --- a/tests/comparisons/compare_FDR_power.R +++ b/tests/comparisons/compare_FDR_power.R @@ -9,7 +9,9 @@ randomized_partial=readRDS(file="randomized_partial.rds") table = matrix(c(mean(lee$FDR_sample), mean(lee$power_sample), mean(liu$FDR_sample), mean(liu$power_sample), mean(kn$FDR_sample), mean(kn$power_sample), - mean(kn_plus$FDR_sample), mean(kn_plus$power_sample)), ncol=2, byrow=TRUE) + mean(kn_plus$FDR_sample), mean(kn_plus$power_sample), + mean(randomized_full$FDR_sample), mean(randomized_full$power_sample), + mean(randomized_partial$FDR_sample), mean(randomized_partial$power_sample)), ncol=2, byrow=TRUE) colnames(table)=c("FDR", "power") rownames(table)=c("Lee", "Liu", "knockoff", "knockoff+", "randomized full", "randomized partial") table diff --git a/tests/comparisons/plot_coverages.R b/tests/comparisons/plot_coverages.R index fda6921..a73e5d7 100644 --- a/tests/comparisons/plot_coverages.R +++ b/tests/comparisons/plot_coverages.R @@ -1,12 +1,14 @@ -lee = readRDS(file="lee_full.rds") -liu = readRDS(file="liu_full.rds") +lee = readRDS(file="lee.rds") +liu = readRDS(file="liu.rds") +rand_full=readRDS(file="randomized_full.rds") +rand_partial=readRDS(file="randomized_partial.rds") n=lee$n p=lee$p s=lee$s snr=lee$snr -rhp=lee$rho +rho=lee$rho lee_cov = mean(lee$sel_coverages) lee_len = median(lee$sel_lengths) @@ -17,25 +19,45 @@ liu_len=median(liu$sel_lengths) naive_cov = mean(liu$naive_coverages) naive_len=median(liu$naive_lengths) -labels = rep("",3) -labels[1] = paste("len: ", round(lee_len,2), ", cov: ", round(lee_cov,2), sep = "") -labels[2] = paste("len: ", round(liu_len,2), ", cov: ", round(liu_cov,2), sep = "") +rand_full_cov = mean(rand_full$sel_coverages) +rand_full_len = median(rand_full$sel_lengths) + +rand_partial_cov=mean(rand_partial$sel_coverages) +rand_partial_len=median(rand_partial$sel_lengths) + +ninf_lee = length(which(lee$sel_lengths==Inf))/length(lee$sel_lengths) +ninf_liu = length(which(liu$sel_lengths==Inf))/length(liu$sel_lengths) +c(ninf_lee, ninf_liu) + +labels = rep("",5) +labels[1] = paste("len: ", round(lee_len,2), ", cov: ", round(lee_cov,2), ", ninf: ", round(ninf_lee,2), sep = "") +labels[2] = paste("len: ", round(liu_len,2), ", cov: ", round(liu_cov,2), ", ninf: ", round(ninf_liu,2), sep = "") labels[3] = paste("len: ", round(naive_len,2), ", cov: ", round(naive_cov,2), sep = "") +labels[4] = paste("len: ", round(rand_full_len,2), ", cov: ", round(rand_full_cov,2), sep = "") +labels[5] = paste("len: ", round(rand_partial_len,2), ", cov: ", round(rand_partial_cov,2), sep = "") + title = paste("n=", n,", p=", p, ", s=", s, ", signal=", round(snr,2), ", rho=", rho, sep = "") boxplot(lee$sel_lengths[which(lee$sel_lengths!=Inf)], liu$sel_lengths, liu$naive_lengths, - at = seq(1,11,4) - 0.25, col = "pink", las = 2, outline = F, - names = c("Lee", "Liu", "naive"), boxwex = 0.6, range = 0.5, + rand_full$sel_lengths, rand_partial$sel_lengths, + at = seq(1,11,2.5) - 0.25, col = "pink", las = 2, outline = F, + names = c("Lee \n (full)", "Liu \n (full)", "naive", "rand \n (full)", "rand \n (partial)"), + boxwex = 0.6, range = 0.5, log="x", horizontal = T, xlim = c(0,12.5), cex.axis = 1) title(title, cex.main = 1, font.main = 1, line = 0.2) -text(labels = labels, x = c(lee_len, liu_len, naive_len)+0.3, y = seq(2,11,4) - 0.25, cex = 1) +text(labels = labels, x = c(lee_len, liu_len, naive_len, rand_full_len,rand_partial_len)+0.05, y = seq(1,11,2.5) + 0.5, cex = 1) + + -ninf_lee = length(which(lee$sel_lengths==Inf))/length(lee$sel_lengths) -ninf_liu = length(which(liu$sel_lengths==Inf))/length(liu$sel_lengths) -c(ninf_lee, ninf_liu) -plot(ecdf(lee$pvalues)) -lines(ecdf(liu$pvalues)) +plot(ecdf(lee$pvalues), xlab="values", ylab="Empirical cdf", main="Selective pvalues", + col="red") +lines(ecdf(liu$pvalues), col="blue") abline(c(0,1)) +legend("bottomright", legend=c("Lee et al", "Liu et al"), + col=c("red", "blue"), lty=1:1, cex=1.5) + + + diff --git a/tests/comparisons/read_files.R b/tests/comparisons/read_files.R index 1a35426..e5845a8 100644 --- a/tests/comparisons/read_files.R +++ b/tests/comparisons/read_files.R @@ -3,8 +3,11 @@ setwd(result.path) #method="liu" #method="lee" -#method="knockoff" -method="randomized" +#method="knockoff_result" +#method="knockoff+_result" +#method="randomized_full" +#method="randomized_partial" + txt_files = list.files(pattern = paste(method, "*", sep="")) i = 0 @@ -21,17 +24,22 @@ FDR_sample = NULL power_sample=NULL for (file in txt_files){ - result = readRDS(file) - pvalues = c(pvalues, result$pvalues) + result=readRDS(file) + pvalues=c(pvalues, result$pvalues) sel_intervals=c(sel_intervals, result$sel_intervals) sel_coverages=c(sel_coverages, result$sel_coverages) sel_lengths=c(sel_lengths, result$sel_lengths) - naive_pvalues = c(naive_pvalues, result$naive_pvalues) - naive_intervals= c(naive_intervals, result$naive_intervals) + naive_pvalues=c(naive_pvalues, result$naive_pvalues) + naive_intervals=c(naive_intervals, result$naive_intervals) naive_coverages=c(naive_coverages, result$naive_coverages) naive_lengths=c(naive_lengths, result$naive_lengths) - FDR_sample =c(FDR_sample, result$FDR_sample) + FDR_sample=c(FDR_sample, result$FDR_sample) power_sample=c(power_sample, result$power_sample) + n=result$n + p=result$p + s=result$s + rho=result$rho + snr=result$snr i=i+1 } @@ -43,6 +51,7 @@ saveRDS(list(pvalues=pvalues, sel_intervals=sel_intervals, sel_coverages=sel_coverages, sel_lengths=sel_lengths, naive_pvalues=naive_pvalues, naive_intervals=naive_intervals, naive_coverages=naive_coverages, naive_lengths=naive_lengths, + n=n, p=p, s=s, rho=rho, snr=snr, FDR_sample=FDR_sample, power_sample=power_sample), file=paste(method,".rds", sep="")) diff --git a/tests/comparisons/small corr/params.txt b/tests/comparisons/small corr/params.txt new file mode 100644 index 0000000..e69de29 diff --git a/tests/comparisons/small uncorr/params.txt b/tests/comparisons/small uncorr/params.txt new file mode 100644 index 0000000..e69de29 diff --git a/tests/knockoffs/single_R_run.sbatch b/tests/knockoffs/single_R_run.sbatch index 9cb1ef1..77c877d 100644 --- a/tests/knockoffs/single_R_run.sbatch +++ b/tests/knockoffs/single_R_run.sbatch @@ -21,7 +21,7 @@ #number of nodes you are requesting, the more you ask for the longer you wait #SBATCH --nodes=1 ################# -#SBATCH --mem=4000 +#SBATCH --mem=16000 # You can use srun if your job is parallel #srun R CMD BATCH ./rtest.R diff --git a/tests/knockoffs/test_knockoffs.R b/tests/knockoffs/test_knockoffs.R index 15e0f73..0536d64 100644 --- a/tests/knockoffs/test_knockoffs.R +++ b/tests/knockoffs/test_knockoffs.R @@ -25,7 +25,8 @@ compute.knockoff = function(data, method, q=0.2, model.free=TRUE){ power = TP/s FDR = (nrejected-TP)/max(1, nrejected) - return(list(power=power, + return(list(rejected=rejected, + power=power, FDR=FDR, nrejected = nrejected)) } @@ -33,9 +34,9 @@ compute.knockoff = function(data, method, q=0.2, model.free=TRUE){ test_knockoffs = function(seed=1, outfile=NULL, method = "knockoff", - nrep=10, n=1000, p=2000, s=30, rho=0.){ + nrep=10, n=100, p=200, s=10, rho=0.){ - snr = sqrt(2*log(p)/n) + snr = 4*sqrt(2*log(p)/n) set.seed(seed) @@ -43,7 +44,8 @@ test_knockoffs = function(seed=1, outfile=NULL, method = "knockoff", power_sample=NULL for (i in 1:nrep){ - data = selectiveInference:::gaussian_instance(n=n, p=p, s=s, rho=rho, sigma=1, snr=snr) + #data = selectiveInference:::gaussian_instance(n=n, p=p, s=s, rho=rho, sigma=1, snr=snr) + data = selectiveInference:::logistic_instance(n=n, p=p, s=s, rho=rho, sigma=1, snr=snr) cat("true nonzero:", which(data$beta!=0), "\n") @@ -67,4 +69,4 @@ test_knockoffs = function(seed=1, outfile=NULL, method = "knockoff", return(list(FDR_sample=FDR_sample, power_sample=power_sample)) } -#test_knockoffs() +test_knockoffs() diff --git a/tests/lee_high_dim_full/single_R_run.sbatch b/tests/lee_high_dim_full/single_R_run.sbatch index 75d08e4..d3d3d45 100644 --- a/tests/lee_high_dim_full/single_R_run.sbatch +++ b/tests/lee_high_dim_full/single_R_run.sbatch @@ -21,7 +21,7 @@ #number of nodes you are requesting, the more you ask for the longer you wait #SBATCH --nodes=1 ################# -#SBATCH --mem=4000 +#SBATCH --mem=16000 # You can use srun if your job is parallel #srun R CMD BATCH ./rtest.R diff --git a/tests/lee_high_dim_full/test_lee_full.R b/tests/lee_high_dim_full/test_lee_full.R index b4869fb..f955d52 100644 --- a/tests/lee_high_dim_full/test_lee_full.R +++ b/tests/lee_high_dim_full/test_lee_full.R @@ -3,7 +3,7 @@ library(glmnet) # testing Lee et al type=full in high dimensional settings -- uses debiasing matrix -test_lee_full = function(seed=1, outfile=NULL, nrep=10, n=1000, p=2000, s=30, rho=0.){ +test_lee_full = function(seed=1, outfile=NULL, nrep=1, n=1000, p=10000, s=50, rho=0.){ snr = sqrt(2*log(p)/n) @@ -81,7 +81,7 @@ test_lee_full = function(seed=1, outfile=NULL, nrep=10, n=1000, p=2000, s=30, rh saveRDS(list(sel_intervals=sel_intervals, sel_coverages=sel_coverages, sel_lengths=sel_lengths, pvalues=pvalues, FDR_sample=FDR_sample, power_sample=power_sample, - n=n,p=p, s=s, snr=snr, rho=rho), file=outfile) + n=n, p=p, s=s, snr=snr, rho=rho), file=outfile) return(list(pvalues=pvalues)) } diff --git a/tests/liu_high_dim_full/single_R_run.sbatch b/tests/liu_high_dim_full/single_R_run.sbatch index 2d8e326..0ae7ce7 100644 --- a/tests/liu_high_dim_full/single_R_run.sbatch +++ b/tests/liu_high_dim_full/single_R_run.sbatch @@ -21,7 +21,7 @@ #number of nodes you are requesting, the more you ask for the longer you wait #SBATCH --nodes=1 ################# -#SBATCH --mem=4000 +#SBATCH --mem=16000 # You can use srun if your job is parallel #srun R CMD BATCH ./rtest.R diff --git a/tests/liu_high_dim_full/test_liu_full.R b/tests/liu_high_dim_full/test_liu_full.R index 85a1770..da8aad3 100644 --- a/tests/liu_high_dim_full/test_liu_full.R +++ b/tests/liu_high_dim_full/test_liu_full.R @@ -5,7 +5,7 @@ library(glmnet) # testing Liu et al type=full in high dimensional settings -- uses debiasing matrix -test_liu_full = function(seed=1, outfile=NULL, nrep=10, n=1000, p=2000, s=30, rho=0.){ +test_liu_full = function(seed=1, outfile=NULL, nrep=1, n=1000, p=10000, s=50, rho=0.){ snr = sqrt(2*log(p)/n) diff --git a/tests/liu_high_dim_full/test_logistic.R b/tests/liu_high_dim_full/test_logistic.R index 06b0186..b6e7374 100644 --- a/tests/liu_high_dim_full/test_logistic.R +++ b/tests/liu_high_dim_full/test_logistic.R @@ -1,44 +1,23 @@ -#library(gglasso) library(MASS) library(selectiveInference) library(glmnet) -#source("/Users/Jelena/GitHub Jelena/full/code/group_lasso_fns.R") -logistic_instance = function(n, p, s, sigma=1, rho=0, snr=7, - random_signs=TRUE, scale=FALSE, center=FALSE){ +test_logistic = function(seed=1, outfile=NULL, nrep=10, n=1000, p=2000, s=30, rho=0.){ - X = sqrt(1-rho)*matrix(rnorm(n*p),n) + sqrt(rho)*matrix(rep(rnorm(n), p), nrow = n) - if (scale==TRUE){ - X = scale(X) - X = X/sqrt(n) - } - beta = rep(0, p) - beta[1:s]=snr - if (random_signs==TRUE && s>0){ - signs = sample(c(-1,1), s, replace = TRUE) - beta[1:s] = beta[1:s] * signs - } - beta=sample(beta) - mu = X %*% beta - prob = exp(mu)/(1+exp(mu)) - y = rbinom(n, 1, prob) + snr = sqrt(2*log(p)/n) + snr = 2*snr + #print(snr) + #empirical=empirical = apply(abs(t(matrix(rnorm(n*p), nrow=n)) %*% matrix(rnorm(n*1000), nrow=n)), 2, max) + #print(mean(empirical)/n) - result <- list(X=X,y=y,beta=beta) - return(result) -} - - -test_logistic = function(nrep=10){ + #empirical = apply(abs(t(matrix(rnorm(n*p), nrow=n)) %*% matrix(sample(c(0,1), n*1000, replace = TRUE), nrow=n)), 2, max) + #snr=mean(empirical)/n + #print(snr) - set.seed(1) + set.seed(seed) loss="logit" construct_ci=TRUE - n=300 - p=50 - s=10 - - snr=2/sqrt(n) penalty_factor = rep(1, p) @@ -51,27 +30,20 @@ test_logistic = function(nrep=10){ sel_lengths=NULL naive_lengths=NULL + FDR_sample = NULL + power_sample=NULL for (i in 1:nrep){ - #data = logistic_instance(n, p, s, snr=snr) - #X=data$X - #y=data$y - #beta=data$beta - X = matrix(rnorm(n*p),n) - beta=rep(0,p) - beta[1:s]=snr - mu = X %*% beta - prob = exp(mu)/(1+exp(mu)) - y=rbinom(n,1, prob) + data = selectiveInference:::logistic_instance(n=n, p=p, s=s, rho=rho, sigma=1, snr=snr) + X=data$X + y=data$y + beta=data$beta - print("beta") - print(which(beta!=0)) + cat("true nonzero:", which(beta!=0), "\n") - lambda=10/n - #lambda = 0.7*selectiveInference:::theoretical.lambda(X, loss, sigma=1) + lambda = 0.4*selectiveInference:::theoretical.lambda(X, loss, sigma=1) soln = selectiveInference:::solve_problem_glmnet(X, y, lambda, penalty_factor=penalty_factor, loss=loss) - PVS = selectiveInference:::inference_group_lasso(X,y, soln, groups=1:ncol(X), lambda=lambda, penalty_factor=penalty_factor, sigma_est=1, loss=loss, algo="glmnet", construct_ci = construct_ci) @@ -106,8 +78,28 @@ test_logistic = function(nrep=10){ print(c("selective length:", mean(sel_lengths))) print(c("naive length:", mean(naive_lengths))) } + + mc = selectiveInference:::selective.plus.BH(beta, active_vars, PVS$pvalues, q=0.2) + FDR_sample=c(FDR_sample, mc$FDR) + power_sample=c(power_sample, mc$power) + + if (length(FDR_sample)>0){ + print(c("FDR:", mean(FDR_sample))) + print(c("power:", mean(power_sample))) + } + } + + if (is.null(outfile)){ + outfile="liu_logistic_full.rds" } + saveRDS(list(sel_intervals=sel_intervals, sel_coverages=sel_coverages, sel_lengths=sel_lengths, + naive_intervals=naive_intervals, naive_coverages=naive_coverages, naive_lengths=naive_lengths, + pvalues=pvalues, naive_pvalues=naive_pvalues, + FDR_sample=FDR_sample, power_sample=power_sample, + n=n, p=p, s=s, snr=snr, rho=rho), file=outfile) + + return(list(pvalues=pvalues, naive_pvalues=naive_pvalues)) } diff --git a/tests/randomized/single_R_run.sbatch b/tests/randomized/single_R_run.sbatch index 20be012..fd05e12 100644 --- a/tests/randomized/single_R_run.sbatch +++ b/tests/randomized/single_R_run.sbatch @@ -21,7 +21,7 @@ #number of nodes you are requesting, the more you ask for the longer you wait #SBATCH --nodes=1 ################# -#SBATCH --mem=4000 +#SBATCH --mem=16000 # You can use srun if your job is parallel #srun R CMD BATCH ./rtest.R diff --git a/tests/randomized/test_randomized.R b/tests/randomized/test_randomized.R index d10be74..7bd5b1b 100644 --- a/tests/randomized/test_randomized.R +++ b/tests/randomized/test_randomized.R @@ -1,6 +1,6 @@ -test_randomized = function(seed=1, outfile, type="full", nrep=10, n=1000, p=2000, s=30, rho=0.){ +test_randomized = function(seed=1, outfile, type="full", nrep=1, n=1000, p=10000, s=50, rho=0.){ snr = sqrt(2*log(p)/n) diff --git a/tests/real_data_analysis/estimate_sigma.R b/tests/real_data_analysis/estimate_sigma.R new file mode 100644 index 0000000..df5a39a --- /dev/null +++ b/tests/real_data_analysis/estimate_sigma.R @@ -0,0 +1,30 @@ +library(glmnet) +library(selectiveInference) + +setwd("/Users/Jelena/Dropbox/kevin/jelena/real_data") +data=readRDS("real_data.rds") +X=data$X +y=data$y + +set.seed(1) + +CV = cv.glmnet(X, y, standardize=FALSE, intercept=FALSE, family="gaussian") +sigma_est=selectiveInference:::estimate_sigma(X,y,coef(CV, s="lambda.min")[-1]) # sigma via Reid et al. +print(c("sigma est via Reid et al.", sigma_est)) "sigma est via Reid et al." "0.620021797352246" + +print(c("std error of y", sqrt(var(y)))) "std error of y" "0.488729008112197" + +n=nrow(X) +m=floor(n/2) +subsample = sample(1:n,m, replace=FALSE) +leftover = setdiff(1:n, subsample) +CV = cv.glmnet(X[subsample,], y[subsample], standardize=FALSE, intercept=FALSE, family="gaussian") +beta_hat = coef(CV, s="lambda.min")[-1] +selected = which(beta_hat!=0) +LM = lm(y[leftover]~X[leftover,][,selected]) +sigma_est = sigma(LM) +print(c("sigma est from data splitting", sigma_est)) "0.481421791225578" + + + + diff --git a/tests/real_data_analysis/real_data_analysis.R b/tests/real_data_analysis/real_data_analysis.R new file mode 100644 index 0000000..aae0cad --- /dev/null +++ b/tests/real_data_analysis/real_data_analysis.R @@ -0,0 +1,114 @@ +library(glmnet) +library(selectiveInference) +library(MASS) + +setwd(getwd()) +args = commandArgs(trailingOnly=TRUE) +method = toString(args[1]) + +outdir = "/scratch/users/jelenam/full/" +label = paste("randomized_", method, "_results", sep="") +outfile = file.path(outdir, paste(sep="",label, ".rds")) + +#setwd("/Users/Jelena/Dropbox/kevin/jelena/real_data") +data=readRDS("real_data.rds") +X=data$X +y=data$y + +set.seed(1) + +penalty_factor = rep(1, ncol(X)) +loss="ls" +sigma_est = 0.62 +lambda = 0.8*selectiveInference:::theoretical.lambda(X, loss, sigma_est) +print(c("lambda", lambda)) + + +liu_full = function(outfile){ + + soln = selectiveInference:::solve_problem_glmnet(X, y, lambda, penalty_factor=penalty_factor, loss=loss) + PVS = selectiveInference:::inference_group_lasso(X, y, soln, groups=1:ncol(X), lambda=lambda, penalty_factor=penalty_factor, + sigma_est, loss=loss, algo="Q", construct_ci = TRUE) + saveRDS(list(active_vars=PVS$active_vars, + sel_intervals=PVS$sel_intervals, naive_intervals=PVS$naive_intervals, + pvalues=PVS$pvalues, naive_pvalues=PVS$naive_pvalues), file=outfile) + + return(NULL) +} + + + +lee_full = function(outfile){ + + lasso = glmnet(X, y, family=selectiveInference:::family_label(loss), alpha=1, standardize=FALSE, intercept=FALSE, thresh=1e-12) + soln = as.numeric(coef(lasso,x=X,y=y, family=selectiveInference:::family_label(loss), s=lambda, exact=TRUE))[-1] + + PVS = selectiveInference:::fixedLassoInf(X,y,soln, intercept=FALSE, lambda*n, family=selectiveInference:::family_label(loss), + type="full",sigma=sigma_est) + + abs_soln = abs(soln) + beta_threshold = abs_soln[order(abs_soln,decreasing=TRUE)][length(PVS$pv)] + active_vars = which(abs_soln>=beta_threshold) + cat("nactive:", length(active_vars), "\n") + cat("active vars:", active_vars, "\n") + + pvalues = PVS$pv + sel_intervals = t(PVS$ci) + + saveRDS(list(active_vars=active_vars, sel_intervals=sel_intervals, pvalues=pvalues), file=outfile) + +} + + +knockoff = function(method, outfile){ + offset=0 + if (method=="knockoff+"){ + offset=1 + } + filter = knockoff.filter(X, y, fdr=q, offset=offset) + saveRDS(list(active_vars = filter$rejected), file=outfile) +} + + +randomized = function(type, outfile){ + rand_lasso_soln = selectiveInference:::randomizedLasso(X, + y, + lambda*n, + family=selectiveInference:::family_label(loss), + condition_subgrad=TRUE) + + full_targets=selectiveInference:::set.target(rand_lasso_soln, type=type, sigma_est=sigma_est) + + PVS = selectiveInference:::randomizedLassoInf(rand_lasso_soln, + full_targets=full_targets, + sampler = "norejection", #"adaptMCMC", # + level=0.9, + burnin=1000, + nsample=10000) + active_vars=rand_lasso_soln$active_set + cat("active_vars:",active_vars,"\n") + pvalues = PVS$pvalues + sel_intervals = t(PVS$ci) # matrix with two rows + saveRDS(list(active_vars=active_vars, sel_intervals=sel_intervals, pvalues=pvalues), file=outfile) + + return(NULL) +} + +if (method=="liu"){ + liu_full(outfile) +} else if (method=="lee"){ + lee_full(outfile) +} else if (method=="knockoff"){ + knockoff(method, outfile) +} else if (method=="knockoff+"){ + knockoff(method, outfile) +} else if (method=="randomized_full"){ + randomized("full", outfile) +} else if (method=="randomized_partial"){ + randomized("partial", outfile) +} + + + + + diff --git a/tests/real_data_analysis/single_R_run.sbatch b/tests/real_data_analysis/single_R_run.sbatch new file mode 100644 index 0000000..79198d2 --- /dev/null +++ b/tests/real_data_analysis/single_R_run.sbatch @@ -0,0 +1,38 @@ +#!/bin/bash +# +#all commands that start with SBATCH contain commands that are just used by SLURM for scheduling +################# +#set a job name +#SBATCH --job-name=job +################# +#a file for job output, you can check job progress, append the job ID with %j to make it unique +#SBATCH --output=jobs/%j.out +################# +# a file for errors from the job +#SBATCH --error=jobs/%j.err +################# +#time you think you need; default is 2 hours +#format could be dd-hh:mm:ss, hh:mm:ss, mm:ss, or mm +#SBATCH --time=5:00:00 +################# +#SBATCH --qos=normal +#SBATCH -p normal +################# +#number of nodes you are requesting, the more you ask for the longer you wait +#SBATCH --nodes=1 +################# +#SBATCH --mem=32000 + +# You can use srun if your job is parallel +#srun R CMD BATCH ./rtest.R +# otherwise: + +method=$1 + +# cd to program directory +cd /home/users/jelenam/R-selective/tests/real_data_analysis + +module load R/3.4.0 + +Rscript real_data_analysis.R $method + diff --git a/tests/real_data_analysis/submit_R_jobs.sh b/tests/real_data_analysis/submit_R_jobs.sh new file mode 100644 index 0000000..8000519 --- /dev/null +++ b/tests/real_data_analysis/submit_R_jobs.sh @@ -0,0 +1,21 @@ +#!/bin/bash +# Setup bash job headers + +# load local environment + +method1=liu +method2=lee +method3=knockoff +method4=knockoff+ +method5=randomized_full +method6=randomized_partial + +for i in {1..10} +do + sbatch single_R_run.sbatch $method1 + sbatch single_R_run.sbatch $method2 + sbatch single_R_run.sbatch $method3 + sbatch single_R_run.sbatch $method4 + sbatch single_R_run.sbatch $method5 + sbatch single_R_run.sbatch $method6 +done \ No newline at end of file From a0977190bfd8badc6623fa89c90f114a51a0880b Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Mon, 26 Mar 2018 08:01:24 -0700 Subject: [PATCH 461/493] BF: doc mismatch --- selectiveInference/R/funs.randomized.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 5d9f42c..23b90fc 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -513,7 +513,7 @@ set.target = function(rand_lasso_soln, randomizedLassoInf = function(rand_lasso_soln, - full_targets=NULL, + targets=NULL, level=0.9, sampler=c("norejection", "adaptMCMC"), nsample=10000, From 5eccc1fba17898e533b0e5e60f0ca447d5b369b4 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Mon, 26 Mar 2018 08:07:50 -0700 Subject: [PATCH 462/493] BF in C code --- C-software | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/C-software b/C-software index fc60f47..aca77f1 160000 --- a/C-software +++ b/C-software @@ -1 +1 @@ -Subproject commit fc60f471ecd5fc40b822ee36d46b1a5aaf7ce7e8 +Subproject commit aca77f1e320dafba6041c4dc44cf9ffc049edec8 From 6d827900986eddc5d676226b85f6a784155d9cdd Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Mon, 26 Mar 2018 08:08:25 -0700 Subject: [PATCH 463/493] BF in C code --- C-software | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/C-software b/C-software index fc60f47..aca77f1 160000 --- a/C-software +++ b/C-software @@ -1 +1 @@ -Subproject commit fc60f471ecd5fc40b822ee36d46b1a5aaf7ce7e8 +Subproject commit aca77f1e320dafba6041c4dc44cf9ffc049edec8 From c10004e8280e758df4684b2cb3bf88d66393a13a Mon Sep 17 00:00:00 2001 From: Jelena Markovic Date: Mon, 26 Mar 2018 13:29:47 -0700 Subject: [PATCH 464/493] real data --- liu_full.rds | Bin 234 -> 3232 bytes ...{funs.full.high.dim.R => funs.full.main.R} | 162 ++---------------- selectiveInference/R/funs.full.side.R | 148 ++++++++++++++++ tests/knockoffs/single_R_run.sbatch | 4 +- tests/liu_high_dim_full/test_liu_full.R | 13 +- tests/randomized/single_R_run.sbatch | 4 +- tests/real_data_analysis/real_data_analysis.R | 47 +++-- tests/real_data_analysis/single_R_run.sbatch | 4 +- tests/real_data_analysis/submit_R_jobs.sh | 2 +- 9 files changed, 210 insertions(+), 174 deletions(-) rename selectiveInference/R/{funs.full.high.dim.R => funs.full.main.R} (81%) create mode 100644 selectiveInference/R/funs.full.side.R diff --git a/liu_full.rds b/liu_full.rds index 7b7f89dd9b1abfad0a3bb670c80462fd83e143ca..29ef9b1f8561d63f7d1dd79c575e80cc0ad473cf 100644 GIT binary patch literal 3232 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 literal 234 zcmV8dU|?WkU}k1wU}6R_g@FV=5dQ;WJ|Jec|G)qS=rmNG z(f-m$=}T{wZISiB6yVfzrk!PHu%il84@@5;0|Tl$biPBs11difP2LmDo*fh0WNo&j zV4BCm1m?3aZ~|%8yu{qpVjx2R?0JYFZ*gi)d}dxrYEfBYPBF4za(-EAQDS;3OpqHS zn3I~9UXlS5;?GOWEK9}E4i!c>fEOZ+Y6N=$P-7{&8dO0pH6s7oK&a?PeFcp kY7wd!V;+oA0As)mU@p!pf-#FS@0){ - null.pvalues = pvalues[selected.nulls] - print(paste("selected nulls", length(selected.nulls), "vars:",toString(selected.vars[selected.nulls]))) - } - - return(list(power=power, - FDR=FDR, - pvalues=pvalues, - null.pvalues=null.pvalues, - nselected=nselected, - nrejected=nrejected)) -} - - -AR_design = function(n, p, rho, scale=FALSE){ - times = c(1:p) - cov_mat <- rho^abs(outer(times, times, "-")) - chol_mat = chol(cov_mat) # t(chol_mat) %*% chol_mat = cov_mat - X=matrix(rnorm(n*p), nrow=n) %*% t(chol_mat) - if (scale==TRUE){ - X = scale(X) - X = X/sqrt(n) - } - return(X) -} - -equicorrelated_design = function(n, p, rho, scale=FALSE){ - X = sqrt(1-rho)*matrix(rnorm(n*p),n) + sqrt(rho)*matrix(rep(rnorm(n), p), nrow = n) - if (scale==TRUE){ - X = scale(X) - X = X/sqrt(n) - } - return(X) -} - -gaussian_instance = function(n, p, s, rho, sigma, snr, random_signs=TRUE, scale=FALSE, design="AR"){ - - if (design=="AR"){ - X=AR_design(n,p,rho, scale) - } else if (design=="equicorrelated"){ - X=equicorrelated_design(n,p, rho, scale) - } - - beta = rep(0, p) - beta[1:s]=snr - - if (random_signs==TRUE && s>0){ - signs = sample(c(-1,1), s, replace = TRUE) - beta[1:s] = beta[1:s] * signs - } - - beta=sample(beta) - y = X %*% beta + rnorm(n)*sigma - result <- list(X=X,y=y,beta=beta) - return(result) -} - -logistic_instance = function(n, p, s, rho, sigma, snr, random_signs=TRUE, scale=FALSE, design="AR"){ - - if (design=="AR"){ - X=AR_design(n,p,rho, scale) - } else if (design=="equicorrelated"){ - X=equicorrelated_design(n,p, rho, scale) - } - - beta = rep(0, p) - beta[1:s]=snr - if (random_signs==TRUE && s>0){ - signs = sample(c(-1,1), s, replace = TRUE) - beta[1:s] = beta[1:s] * signs - } - beta=sample(beta) - mu = X %*% beta - prob = exp(mu)/(1+exp(mu)) - y = rbinom(n, 1, prob) - - result <- list(X=X,y=y,beta=beta) - return(result) -} - - family_label = function(loss){ if (loss=="ls"){ return("gaussian") @@ -356,21 +241,6 @@ naive_CI = function(observed, variance, alpha=0.1){ } -# theoretical lambda for glmnet -# glmnet solves: 1/2n*\|y-X\beta\|_2^2+\lambda_1\|\beta\|_1 -theoretical.lambda = function(X, loss="ls", sigma=1){ - n = nrow(X); p = ncol(X) - nsamples= 1000 - if (loss=="ls"){ - empirical = apply(abs(t(X) %*% matrix(rnorm(n*nsamples), nrow=n)), 2, max) - } else if (loss=="logit"){ - empirical = apply(abs(t(X) %*% matrix(sample(c(0,1), n*nsamples, replace = TRUE), nrow=n)), 2, max) - } - lam = mean(empirical)*sigma/n - return(lam) -} - - compute_coverage = function(ci, beta){ nactive=length(beta) coverage_vector = rep(0, nactive) @@ -439,21 +309,6 @@ approximate = function(X, active_set){ return(M_active) } -estimate_sigma = function(X, y, beta_hat_cv){ - n=nrow(X) - p=ncol(X) - if (n0){ + null.pvalues = pvalues[selected.nulls] + print(paste("selected nulls", length(selected.nulls), "vars:",toString(selected.vars[selected.nulls]))) + } + + return(list(power=power, + FDR=FDR, + pvalues=pvalues, + null.pvalues=null.pvalues, + nselected=nselected, + nrejected=nrejected)) +} + + +AR_design = function(n, p, rho, scale=FALSE){ + times = c(1:p) + cov_mat <- rho^abs(outer(times, times, "-")) + chol_mat = chol(cov_mat) # t(chol_mat) %*% chol_mat = cov_mat + X=matrix(rnorm(n*p), nrow=n) %*% t(chol_mat) + if (scale==TRUE){ + X = scale(X) + X = X/sqrt(n) + } + return(X) +} + + +equicorrelated_design = function(n, p, rho, scale=FALSE){ + X = sqrt(1-rho)*matrix(rnorm(n*p),n) + sqrt(rho)*matrix(rep(rnorm(n), p), nrow = n) + if (scale==TRUE){ + X = scale(X) + X = X/sqrt(n) + } + return(X) +} + +gaussian_instance = function(n, p, s, rho, sigma, snr, random_signs=TRUE, scale=FALSE, design="AR"){ + + if (design=="AR"){ + X=AR_design(n,p,rho, scale) + } else if (design=="equicorrelated"){ + X=equicorrelated_design(n,p, rho, scale) + } + + beta = rep(0, p) + beta[1:s]=snr + + if (random_signs==TRUE && s>0){ + signs = sample(c(-1,1), s, replace = TRUE) + beta[1:s] = beta[1:s] * signs + } + + beta=sample(beta) + y = X %*% beta + rnorm(n)*sigma + result <- list(X=X,y=y,beta=beta) + return(result) +} + +logistic_instance = function(n, p, s, rho, sigma, snr, random_signs=TRUE, scale=FALSE, design="AR"){ + + if (design=="AR"){ + X=AR_design(n,p,rho, scale) + } else if (design=="equicorrelated"){ + X=equicorrelated_design(n,p, rho, scale) + } + + beta = rep(0, p) + beta[1:s]=snr + if (random_signs==TRUE && s>0){ + signs = sample(c(-1,1), s, replace = TRUE) + beta[1:s] = beta[1:s] * signs + } + beta=sample(beta) + mu = X %*% beta + prob = exp(mu)/(1+exp(mu)) + y = rbinom(n, 1, prob) + + result <- list(X=X,y=y,beta=beta) + return(result) +} + + +estimate_sigma = function(X, y, beta_hat_cv){ + n=nrow(X) + p=ncol(X) + if (n Date: Mon, 26 Mar 2018 14:04:56 -0700 Subject: [PATCH 465/493] got rid of Q --- selectiveInference/R/funs.full.main.R | 46 +++++++++++++------ tests/liu_high_dim_full/test_liu_full.R | 4 +- tests/real_data_analysis/real_data_analysis.R | 2 +- 3 files changed, 35 insertions(+), 17 deletions(-) diff --git a/selectiveInference/R/funs.full.main.R b/selectiveInference/R/funs.full.main.R index fcfeaf4..aa6c33d 100644 --- a/selectiveInference/R/funs.full.main.R +++ b/selectiveInference/R/funs.full.main.R @@ -110,8 +110,10 @@ solve_problem_Q = function(Q_sq, Qbeta_bar, lambda, penalty_factor, # the selection event is |sigma_est^2*(target_cov)^{-1}Z+center|>radius -truncation_set = function(X, y, Qbeta_bar, Q, Q_sq, target_cov, sigma_est, group, target_stat, - groups, lambda, penalty_factor, loss, algo){ +truncation_set = function(X, y, Qbeta_bar, QE, sigma_est, + target_stat, target_cov, + group, groups, active_vars, + lambda, penalty_factor, loss, algo){ if (algo=="Q"){ penalty_factor_rest = rep(penalty_factor) @@ -127,8 +129,9 @@ truncation_set = function(X, y, Qbeta_bar, Q, Q_sq, target_cov, sigma_est, group p = length(Qbeta_bar) I = diag(p) * sigma_est^2 group_vars = which(groups==group) + group_varsE = match(group_vars, active_vars) nuisance = (Qbeta_bar - I[,group_vars] %*% solve(target_cov) %*% target_stat)/n - center = nuisance[group_vars] - (Q[group_vars,] %*% restricted_soln/n) + center = nuisance[group_vars] - (QE[group_varsE,] %*% restricted_soln/n) radius = penalty_factor[group]*lambda return(list(target_cov=target_cov, center=center*n, radius=radius*n)) } @@ -272,6 +275,18 @@ hessian = function(X, beta, loss){ return(t(X) %*% W %*% X) } + +hessian_active = function(X, beta, loss, active_set){ + if (loss=="logit"){ + fit = X%*%beta + W=diag(as.vector(exp(fit)/((1+exp(fit))^2))) + } else if (loss=="ls"){ + W=diag(nrow(X)) + } + return(t(X[, active_set]) %*% W %*% X) +} + + mle=function(X,y,loss){ reg = glm(y~X-1, family=family_label(loss)) return(reg$coefficients) @@ -329,8 +344,10 @@ get_QB = function(X, y, soln, active_set, loss){ if (n>p){ Q=hessian(X, soln, loss=loss) + QE=Q[active_set,] Qi=solve(Q) - Q_sq = W_root %*% X + QiE=Qi[active_set, active_set] + #Q_sq = W_root %*% X #beta_bar = mle(X,y,loss=loss) #print("mle") #print(mle(X,y,loss=loss)) @@ -340,19 +357,19 @@ get_QB = function(X, y, soln, active_set, loss){ #print(beta_bar) Qbeta_bar = Q%*%soln - gradient(X,y,soln, loss=loss) beta_barE = beta_bar[active_set] - QiE = Qi[active_set, active_set] + } else{ M_active = approximate(W_root %*% X, active_set) ## this should be the active rows of \Sigma_i (W^{1/2} X)^T QiE = M_active %*% t(M_active) beta_barE = soln[active_set] + M_active %*% diag(as.vector(1/diagonal)) %*% residuals - Q = hessian(X, soln, loss) - Q_sq = W_root %*% X - Qbeta_bar = Q%*%soln-gradient(X,y,soln,loss=loss) + QE = hessian_active(X, soln, loss, active_set) + #Q_sq = W_root %*% X + Qbeta_bar = t(QE)%*%soln[active_set]-gradient(X,y,soln,loss=loss) } - return(list(Q=Q, Q_sq=Q_sq, Qbeta_bar=Qbeta_bar, QiE=QiE, beta_barE=beta_barE)) + return(list(QE=QE, Qbeta_bar=Qbeta_bar, QiE=QiE, beta_barE=beta_barE)) } @@ -372,8 +389,8 @@ inference_group_lasso = function(X, y, soln, groups, lambda, penalty_factor, sig begin_setup = Sys.time() setup_params = get_QB(X=X, y=y, soln=soln, active_set=active_vars, loss=loss) - Q=setup_params$Q - Q_sq=setup_params$Q_sq + QE=as.matrix(setup_params$QE) + #Q_sq=setup_params$Q_sq QiE=as.matrix(setup_params$QiE) beta_barE = setup_params$beta_barE Qbeta_bar = setup_params$Qbeta_bar @@ -398,9 +415,10 @@ inference_group_lasso = function(X, y, soln, groups, lambda, penalty_factor, sig target_cov = as.matrix(QiE)[group_varsE,group_varsE] begin_TS = Sys.time() - TS = truncation_set(X=X, y=y, Qbeta_bar=Qbeta_bar, Q=Q, Q_sq=Q_sq, target_cov=target_cov, sigma_est=sigma_est, - group=group, target_stat=target_stat, groups=groups, lambda=lambda, - penalty_factor=penalty_factor, loss=loss, algo=algo) + TS = truncation_set(X=X, y=y, Qbeta_bar=Qbeta_bar, QE=QE, sigma_est=sigma_est, + target_cov=target_cov, target_stat=target_stat, + group=group, groups=groups, active_vars=active_vars, + lambda=lambda, penalty_factor=penalty_factor, loss=loss, algo=algo) end_TS = Sys.time() cat("TS time", end_TS-begin_TS, "\n") diff --git a/tests/liu_high_dim_full/test_liu_full.R b/tests/liu_high_dim_full/test_liu_full.R index ec55813..3f75937 100644 --- a/tests/liu_high_dim_full/test_liu_full.R +++ b/tests/liu_high_dim_full/test_liu_full.R @@ -5,7 +5,7 @@ library(glmnet) # testing Liu et al type=full in high dimensional settings -- uses debiasing matrix -test_liu_full = function(seed=1, outfile=NULL, nrep=1, n=1000, p=10000, s=20, rho=0.){ +test_liu_full = function(seed=1, outfile=NULL, nrep=1, n=100, p=200, s=20, rho=0.){ snr = sqrt(2*log(p)/n) @@ -45,7 +45,7 @@ test_liu_full = function(seed=1, outfile=NULL, nrep=1, n=1000, p=10000, s=20, rh soln = selectiveInference:::solve_problem_glmnet(X, y, lambda, penalty_factor=penalty_factor, loss=loss) #soln = solve_problem_gglasso(X, y, groups=1:ncol(X), lambda, penalty_factor=penalty_factor, loss=loss) PVS = selectiveInference:::inference_group_lasso(X, y, soln, groups=1:ncol(X), lambda=lambda, penalty_factor=penalty_factor, - sigma_est, loss=loss, algo="Q", construct_ci = construct_ci) + sigma_est, loss=loss, algo="glmnet", construct_ci = construct_ci) active_vars=PVS$active_vars cat("active_vars:",active_vars,"\n") pvalues = c(pvalues, PVS$pvalues) diff --git a/tests/real_data_analysis/real_data_analysis.R b/tests/real_data_analysis/real_data_analysis.R index 0e1af3e..c5132a7 100644 --- a/tests/real_data_analysis/real_data_analysis.R +++ b/tests/real_data_analysis/real_data_analysis.R @@ -29,7 +29,7 @@ liu_full = function(outfile){ soln = selectiveInference:::solve_problem_glmnet(X, y, lambda, penalty_factor=penalty_factor, loss=loss) PVS = selectiveInference:::inference_group_lasso(X, y, soln, groups=1:ncol(X), lambda=lambda, penalty_factor=penalty_factor, - sigma_est, loss=loss, algo="Q", construct_ci = TRUE) + sigma_est, loss=loss, algo="glmnet", construct_ci = TRUE) saveRDS(list(active_vars=PVS$active_vars, sel_intervals=PVS$sel_intervals, naive_intervals=PVS$naive_intervals, pvalues=PVS$pvalues, naive_pvalues=PVS$naive_pvalues), file=outfile) From d61ddcfed83f3beb85ce6f1b6d0a1fabaed64ad0 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Wed, 28 Mar 2018 13:40:23 -0700 Subject: [PATCH 466/493] fixing gitignore to ignore selectiveInference/src code --- .gitignore | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 46dc0e2..ebb4ab7 100644 --- a/.gitignore +++ b/.gitignore @@ -11,4 +11,9 @@ forLater/josh/** */src/RcppExports.cpp *~ */*~ -*/*/*~ \ No newline at end of file +*/*/*~ +# this code is copied from C-software +selectiveInference/src/matrixcomps.* +selectiveInference/src/debias.* +selectiveInference/src/randomized_lasso.* +selectiveInference/src/quadratic_program*.c \ No newline at end of file From 737b48a7f3fa34c20edbe9f3da67bb33df48392b Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 29 Mar 2018 14:45:15 -0700 Subject: [PATCH 467/493] removing reference to self library --- selectiveInference/R/funs.randomized.R | 67 +++++++++++++------------- tests/randomized/test_instances.R | 10 ++-- tests/randomized/test_randomized.R | 15 ++++-- 3 files changed, 51 insertions(+), 41 deletions(-) diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 180a17d..0457ad9 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -7,7 +7,7 @@ randomizedLasso = function(X, y, lam, family=c("gaussian","binomial"), - condition_subgrad=TRUE, + condition_subgrad=TRUE, noise_scale=NULL, ridge_term=NULL, max_iter=100, # how many iterations for each optimization problem @@ -113,7 +113,6 @@ randomizedLasso = function(X, observed_unpen = result$soln[unpenalized] observed_subgrad = -n*result$gradient[inactive] - print(c("nactive", length(active_set))) if (sum(abs(observed_subgrad)>lam[inactive]*(1.001)) > 0){ stop("subgradient eq not satisfied") } @@ -273,14 +272,14 @@ randomizedLasso = function(X, return(list(X=X, y=y, lam=lam, - family=family, + family=family, active_set=active_set, inactive_set=inactive_set, unpenalized_set=unpenalized_set, sign_soln=sign_soln, law=law, internal_transform=internal_transform, - observed_internal=observed_internal, + observed_internal=observed_internal, observed_raw=observed_raw, noise_scale=noise_scale, soln=result$soln, @@ -410,10 +409,10 @@ conditional_opt_transform = function(noise_scale, cond_mean=cond_mean)) } -set.target = function(rand_lasso_soln, - type, - construct_pvalues=NULL, - construct_ci=NULL){ +compute_target = function(rand_lasso_soln, + type, + construct_pvalues=NULL, + construct_ci=NULL){ # compute internal representation of the data y = rand_lasso_soln$y @@ -444,6 +443,15 @@ set.target = function(rand_lasso_soln, crosscov_target_internal=rbind(cov_target, matrix(0, nrow=p-nactive, ncol=nactive)) } + alternatives = c() + for (i in 1:length(rand_lasso_soln$sign_soln)) { + if (rand_lasso_soln$sign_soln[i] == 1) { + alternatives = c(alternatives, 'greater') + } else { + alternatives = c(alternatives, 'less') + } + } + if (type=="full"){ lasso.est = rand_lasso_soln$soln @@ -462,10 +470,10 @@ set.target = function(rand_lasso_soln, if (!is_wide) { hsigma = 1/n*(t(Xordered)%*%Xordered) - htheta = selectiveInference:::debiasingMatrix(hsigma, is_wide, n, 1:nactive) + htheta = debiasingMatrix(hsigma, is_wide, n, 1:nactive) ithetasigma = (GS-(htheta%*%hsigma)) } else { - htheta = selectiveInference:::debiasingMatrix(Xordered, is_wide, n, 1:nactive) + htheta = debiasingMatrix(Xordered, is_wide, n, 1:nactive) ithetasigma = (GS-((htheta%*%t(Xordered)) %*% Xordered)/n) } M_active <- ((htheta%*%t(Xordered))+ithetasigma%*%FS%*%hsigmaSinv%*%t(X_active))/n @@ -478,17 +486,9 @@ set.target = function(rand_lasso_soln, M_active = pseudo_invX[active_set,] %*% t(X) M_inactive = (pseudo_invX[,inactive_set] %*% t(X_inactive))[active_set,] } - #print(c("M_active size", dim(M_active))) - #print(c("M_inactive size", dim(M_inactive))) - #print(M_inactive[,1:10]) - #pseudo_invX = pinv(crossprod(X)) - #M_inactive = (pseudo_invX[,inactive_set] %*% t(X_inactive))[active_set,] - #print(M_inactive[,1:10]) - - #print(c("M_active size", dim(M_active))) - #print(c("M_inactive size", dim(M_inactive))) + residuals = y-X%*%lasso.est - scalar = 1 #sqrt(n) + scalar = 1 #sqrt(n) # JT: this is sigma? observed_target = lasso.est[active_set]+scalar*M_active %*% residuals cov_target = vcov(glm_y) + scalar^2*M_inactive %*% t(M_inactive) crosscov_target_internal = rbind(vcov(glm_y), scalar*t(X_inactive) %*% t(M_inactive)) @@ -515,7 +515,8 @@ set.target = function(rand_lasso_soln, return(list(targets=targets, construct_ci=construct_ci, - construct_pvalues=construct_pvalues)) + construct_pvalues=construct_pvalues, + alternatives=alternatives)) } @@ -524,8 +525,7 @@ randomizedLassoInf = function(rand_lasso_soln, level=0.9, sampler=c("norejection", "adaptMCMC"), nsample=10000, - burnin=2000, - alternative = c("two-sided", "greated", "less")) + burnin=2000) { n = nrow(rand_lasso_soln$X) @@ -558,17 +558,18 @@ randomizedLassoInf = function(rand_lasso_soln, law$sampling_transform$offset_term, law$constraints, nsamples=nsample, - burnin=burnin) + burnin=burnin) } - if (is.null(full_targets)){ - full_targets=set.target(rand_lasso_soln, type="partial") + if (is.null(targets)){ + targets = compute_target(rand_lasso_soln, type="partial") } - targets=full_targets$targets - construct_ci=full_targets$construct_ci - construct_pvalues = full_targets$construct_pvalues - + alternatives = targets$alternatives + construct_ci = targets$construct_ci + construct_pvalues = targets$construct_pvalues + targets = targets$targets + observed_internal = rand_lasso_soln$observed_internal importance_transform = law$importance_transform @@ -663,9 +664,9 @@ randomizedLassoInf = function(rand_lasso_soln, if (construct_pvalues[i]==1){ pvalues[i] = pivot(0) - if (alternative=="two-sided"){ + if (alternatives[i]=="two-sided"){ pvalues[i] = 2*min(pvalues[i], 1-pvalues[i]) - } else if (alternative=="greater"){ + } else if (alternatives[i]=="greater"){ pvalues[i]= 1-pvalues[i] } } @@ -687,7 +688,7 @@ randomizedLassoInf = function(rand_lasso_soln, } } } - return(list(full_targets=full_targets, pvalues=pvalues, ci=ci)) + return(list(targets=targets, pvalues=pvalues, ci=ci)) } logistic_fitted = function(X, beta){ diff --git a/tests/randomized/test_instances.R b/tests/randomized/test_instances.R index bb2c66a..ae0736f 100644 --- a/tests/randomized/test_instances.R +++ b/tests/randomized/test_instances.R @@ -41,7 +41,7 @@ test_randomized_lasso = function(n=100,p=200,s=0){ lam = 2. noise_scale = 0.5 ridge_term = 1./sqrt(n) - result = selectiveInference:::randomizedLasso(X,y,lam, noise_scale, ridge_term) + result = selectiveInference:::randomizedLasso(X, y, lam, noise_scale, ridge_term) print(result$soln) print(length(which(result$soln!=0))) print(result$observed_opt_state) # compared with python code @@ -108,11 +108,11 @@ collect_results = function(n,p,s, nsim=100, level=0.9, family=family, condition_subgrad=condition_subgrad) - full_targets=selectiveInference:::set.target(rand_lasso_soln,type=type) - + targets=selectiveInference:::compute_target(rand_lasso_soln,type=type) + print(targets$construct_pvalues) result = selectiveInference:::randomizedLassoInf(rand_lasso_soln, - full_targets=full_targets, - sampler = "norejection", #"adaptMCMC", # + targets=targets, + sampler="norejection", #"adaptMCMC", # level=level, burnin=1000, nsample=5000) diff --git a/tests/randomized/test_randomized.R b/tests/randomized/test_randomized.R index 1531d43..d4344b0 100644 --- a/tests/randomized/test_randomized.R +++ b/tests/randomized/test_randomized.R @@ -7,7 +7,11 @@ smoke_test = function() { lam = 20 / sqrt(n) noise_scale = 0.01 * sqrt(n) ridge_term = .1 / sqrt(n) - selectiveInference:::randomizedLasso(X, y, lam, noise_scale, ridge_term) + selectiveInference:::randomizedLasso(X, + y, + lam, + noise_scale=noise_scale, + ridge_term=ridge_term) } A = smoke_test() @@ -20,8 +24,13 @@ sampler_test = function() { lam = 20 / sqrt(n) noise_scale = 0.01 * sqrt(n) ridge_term = .1 / sqrt(n) - obj = selectiveInference:::randomizedLasso(X, y, lam, noise_scale, ridge_term) - S = selectiveInference:::sample_opt_variables(obj, jump_scale=rep(1/sqrt(n), p), nsample=10000) + obj = selectiveInference:::randomizedLasso(X, + y, + lam, + noise_scale=noise_scale, + ridge_term=ridge_term, + condition_subgrad=FALSE) + S = selectiveInference:::sample_opt_variables(obj$law, jump_scale=rep(1/sqrt(n), p), nsample=10000) return(S$samples[2001:10000,]) } B = sampler_test() From af2698f7ffcb4456aac3f069fe3152a93ff84356 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 29 Mar 2018 15:05:46 -0700 Subject: [PATCH 468/493] adding Jelena as an author --- README.md | 2 +- selectiveInference/DESCRIPTION | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 0a60855..11770b5 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # R-software R software for [selective inference](http://cran.r-project.org/web/packages/selectiveInference/). -Authors: Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid +Authors: Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, Joshua Loftus, Stephen Reid, Jelena Markovic Maintainer: Rob Tibshirani New tools for inference after selection, for use with forward stepwise regression, least angle regression, the lasso, and the many means problem. The package is available on [CRAN](http://cran.r-project.org/web/packages/selectiveInference/). See [this paper](http://www.pnas.org/content/112/25/7629.full) for a high level introduction to selective inference. diff --git a/selectiveInference/DESCRIPTION b/selectiveInference/DESCRIPTION index c765663..535abea 100644 --- a/selectiveInference/DESCRIPTION +++ b/selectiveInference/DESCRIPTION @@ -4,7 +4,7 @@ Title: Tools for Post-Selection Inference Version: 1.2.2 Date: 2016-07-3 Author: Ryan Tibshirani, Rob Tibshirani, Jonathan Taylor, - Joshua Loftus, Stephen Reid + Joshua Loftus, Stephen Reid, Jelena Markovic Maintainer: Rob Tibshirani Depends: glmnet, From 224681bf0e16fc6e71be25c729bb88e8122c2f74 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 29 Mar 2018 15:21:20 -0700 Subject: [PATCH 469/493] ignore csv and rds files under tests --- .gitignore | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.gitignore b/.gitignore index ebb4ab7..c24c638 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,10 @@ +*.rds +tests/*.rds +tests/*/*.rds +tests/*/*/*.rds +tests/*.csv +tests/*/*.csv +tests/*/*/*.csv **DS_Store** **Rcheck** **tar.gz From 5014544916320cb070f5f3bbe3f842ecaa6434de Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 29 Mar 2018 15:29:04 -0700 Subject: [PATCH 470/493] trying to add path to Makevars --- selectiveInference/src/Makevars | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selectiveInference/src/Makevars b/selectiveInference/src/Makevars index 22c4c7d..06dc3b8 100644 --- a/selectiveInference/src/Makevars +++ b/selectiveInference/src/Makevars @@ -8,4 +8,4 @@ clean: rm -f *o Rcpp: - Rscript -e "library(Rcpp); Rcpp::compileAttributes('..')" \ No newline at end of file + $(R_HOME)/bin/Rscript -e "library(Rcpp); Rcpp::compileAttributes('..')" \ No newline at end of file From 67dafd761b537f6e5b260bcc48e3af3b9d47e9b1 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 29 Mar 2018 20:46:21 -0700 Subject: [PATCH 471/493] disabling old for now due to Rmpfr not installing on old travis --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 76ab515..f9d313d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,7 +2,7 @@ language: r cache: packages sudo: false r: - - oldrel + #- oldrel - release - devel addons: From 3f9600092aec09cecd07bd03e5bc82c71665910b Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 29 Mar 2018 20:50:57 -0700 Subject: [PATCH 472/493] removing data files, and C files that are synced automatically from C-software --- selectiveInference/src/debias.h | 79 --- selectiveInference/src/matrixcomps.c | 266 -------- selectiveInference/src/matrixcomps.h | 12 - selectiveInference/src/quadratic_program.c | 441 ------------- .../src/quadratic_program_wide.c | 597 ------------------ selectiveInference/src/randomized_lasso.c | 411 ------------ selectiveInference/src/randomized_lasso.h | 54 -- .../comparisons/big cor/knockoff+_result.rds | Bin 782 -> 0 bytes tests/comparisons/big cor/knockoff.rds | Bin 1114 -> 0 bytes tests/comparisons/big cor/knockoff_result.rds | Bin 782 -> 0 bytes tests/comparisons/big cor/lee.rds | Bin 122793 -> 0 bytes tests/comparisons/big cor/liu.rds | Bin 246824 -> 0 bytes tests/comparisons/big cor/randomized_full.rds | Bin 199392 -> 0 bytes .../big cor/randomized_partial.rds | Bin 195272 -> 0 bytes tests/comparisons/big uncorr/knockoff+.rds | Bin 193795 -> 0 bytes tests/comparisons/big uncorr/knockoff.rds | Bin 803 -> 0 bytes tests/comparisons/big uncorr/lee.rds | Bin 116403 -> 0 bytes tests/comparisons/big uncorr/liu.rds | Bin 239089 -> 0 bytes .../big uncorr/randomized_full.rds | Bin 197511 -> 0 bytes .../big uncorr/randomized_partial.rds | Bin 193795 -> 0 bytes tests/comparisons/small corr/knockoff+.rds | Bin 273 -> 0 bytes tests/comparisons/small corr/knockoff.rds | Bin 350 -> 0 bytes tests/comparisons/small corr/lee_full.rds | Bin 21222 -> 0 bytes tests/comparisons/small corr/liu_full.rds | Bin 42553 -> 0 bytes tests/comparisons/small uncorr/knockoff+.rds | Bin 271 -> 0 bytes tests/comparisons/small uncorr/knockoff.rds | Bin 357 -> 0 bytes tests/comparisons/small uncorr/lee_full.rds | Bin 15719 -> 0 bytes tests/comparisons/small uncorr/liu_full.rds | Bin 31871 -> 0 bytes .../small uncorr/randomized_full.rds | Bin 35115 -> 0 bytes 29 files changed, 1860 deletions(-) delete mode 100644 selectiveInference/src/debias.h delete mode 100644 selectiveInference/src/matrixcomps.c delete mode 100644 selectiveInference/src/matrixcomps.h delete mode 100644 selectiveInference/src/quadratic_program.c delete mode 100644 selectiveInference/src/quadratic_program_wide.c delete mode 100644 selectiveInference/src/randomized_lasso.c delete mode 100644 selectiveInference/src/randomized_lasso.h delete mode 100644 tests/comparisons/big cor/knockoff+_result.rds delete mode 100644 tests/comparisons/big cor/knockoff.rds delete mode 100644 tests/comparisons/big cor/knockoff_result.rds delete mode 100644 tests/comparisons/big cor/lee.rds delete mode 100644 tests/comparisons/big cor/liu.rds delete mode 100644 tests/comparisons/big cor/randomized_full.rds delete mode 100644 tests/comparisons/big cor/randomized_partial.rds delete mode 100644 tests/comparisons/big uncorr/knockoff+.rds delete mode 100644 tests/comparisons/big uncorr/knockoff.rds delete mode 100644 tests/comparisons/big uncorr/lee.rds delete mode 100644 tests/comparisons/big uncorr/liu.rds delete mode 100644 tests/comparisons/big uncorr/randomized_full.rds delete mode 100644 tests/comparisons/big uncorr/randomized_partial.rds delete mode 100644 tests/comparisons/small corr/knockoff+.rds delete mode 100644 tests/comparisons/small corr/knockoff.rds delete mode 100644 tests/comparisons/small corr/lee_full.rds delete mode 100644 tests/comparisons/small corr/liu_full.rds delete mode 100644 tests/comparisons/small uncorr/knockoff+.rds delete mode 100644 tests/comparisons/small uncorr/knockoff.rds delete mode 100644 tests/comparisons/small uncorr/lee_full.rds delete mode 100644 tests/comparisons/small uncorr/liu_full.rds delete mode 100644 tests/comparisons/small uncorr/randomized_full.rds diff --git a/selectiveInference/src/debias.h b/selectiveInference/src/debias.h deleted file mode 100644 index da27467..0000000 --- a/selectiveInference/src/debias.h +++ /dev/null @@ -1,79 +0,0 @@ -#ifdef __cplusplus -extern "C" -{ -#endif /* __cplusplus */ - -void multiply_by_2(double *X, int nval); - -int solve_qp(double *nndef_ptr, /* A non-negative definite matrix */ - double *linear_func_ptr, /* Linear term in objective */ - double *nndef_diag_ptr, /* Diagonal of nndef */ - double *gradient_ptr, /* nndef times theta */ - int *ever_active_ptr, /* Ever active set: 1-based */ - int *nactive_ptr, /* Size of ever active set */ - int nfeature, /* How many features in nndef */ - double bound, /* feasibility parameter */ - double *theta, /* current value */ - double *theta_old, /* previous value */ - int maxiter, /* max number of iterations */ - double kkt_tol, /* precision for checking KKT conditions */ - double objective_tol, /* precision for checking relative decrease in objective value */ - double parameter_tol, /* precision for checking relative convergence of parameter */ - int max_active, /* Upper limit for size of active set -- otherwise break */ - int kkt_stop, /* Break based on KKT? */ - int objective_stop, /* Break based on convergence of objective value? */ - int param_stop); /* Break based on parameter convergence? */ - -int check_KKT_qp(double *theta, /* current theta */ - double *gradient_ptr, /* nndef times theta + linear_func */ - int nrow, /* how many rows in nndef */ - double bound, /* Lagrange multipler for \ell_1 */ - double tol); /* precision for checking KKT conditions */ - -int solve_wide(double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX/ncase = nndef */ - double *X_theta_ptr, /* Fitted values */ - double *linear_func_ptr, /* Linear term in objective */ - double *nndef_diag_ptr, /* Diagonal entries of non-neg def matrix */ - double *gradient_ptr, /* X^TX/ncase times theta + linear_func*/ - int *need_update_ptr, /* Keeps track of updated gradient coords */ - int *ever_active_ptr, /* Ever active set: 1-based */ - int *nactive_ptr, /* Size of ever active set */ - int ncase, /* How many rows in X */ - int nfeature, /* How many columns in X */ - double *bound_ptr, /* Lagrange multipliers */ - double ridge_term, /* Ridge / ENet term */ - double *theta_ptr, /* current value */ - double *theta_old_ptr, /* previous value */ - int maxiter, /* max number of iterations */ - double kkt_tol, /* precision for checking KKT conditions */ - double objective_tol, /* precision for checking relative decrease in objective value */ - double parameter_tol, /* precision for checking relative convergence of parameter */ - int max_active, /* Upper limit for size of active set -- otherwise break */ - int kkt_stop, /* Break based on KKT? */ - int objective_stop, /* Break based on convergence of objective value? */ - int param_stop); /* Break based on parameter convergence? */ - -int check_KKT_wide(double *theta_ptr, /* current theta */ - double *gradient_ptr, /* X^TX/ncase times theta + linear_func*/ - double *X_theta_ptr, /* Current fitted values */ - double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX/ncase = nndef */ - double *linear_func_ptr, /* Linear term in objective */ - int *need_update_ptr, /* Which coordinates need to be updated? */ - int nfeature, /* how many columns in X */ - int ncase, /* how many rows in X */ - double *bound_ptr, /* Lagrange multiplers for \ell_1 */ - double ridge_term, /* Ridge / ENet term */ - double tol); /* precision for checking KKT conditions */ - -void update_gradient_wide(double *gradient_ptr, /* X^TX/ncase times theta + linear_func */ - double *X_theta_ptr, /* Current fitted values */ - double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX/ncase = nndef */ - double *linear_func_ptr, /* Linear term in objective */ - int *need_update_ptr, /* Which coordinates need to be updated? */ - int nfeature, /* how many columns in X */ - int ncase); /* how many rows in X */ - - -#ifdef __cplusplus -} /* extern "C" */ -#endif /* __cplusplus */ diff --git a/selectiveInference/src/matrixcomps.c b/selectiveInference/src/matrixcomps.c deleted file mode 100644 index b7e8bbc..0000000 --- a/selectiveInference/src/matrixcomps.c +++ /dev/null @@ -1,266 +0,0 @@ -#include - -// Matrices are stored as vectors, in column-major order - -// Givens rotation of a and b, stored in c and s -void givens(double a, double b, double *c, double *s) { - if (b==0) { - *c = 1; - *s = 0; - } - else { - if (fabs(b)>fabs(a)) { - double t = -a/b; - *s = 1/sqrt(1+t*t); - *c = (*s)*t; - } - else { - double t = -b/a; - *c = 1/sqrt(1+t*t); - *s = (*c)*t; - } - } -} - -// Givens rotation applied to rows i1 and i2 of the m x n -// matrix A, on the subset of columns j1 through j2 -void rowrot(double *A, int i1, int i2, int m, int n, int j1, int j2, double c, double s) { - int j; - double t1,t2; - for (j=j1; j<=j2; j++) { - t1 = A[i1+j*m]; - t2 = A[i2+j*m]; - A[i1+j*m] = c*t1-s*t2; - A[i2+j*m] = s*t1+c*t2; - } -} - -// Givens rotation applied to columns j1 and j2 of the m x n -// matrix A, on the subset of rows i1 through i2 -void colrot(double *A, int j1, int j2, int m, int n, int i1, int i2, double c, double s) { - int i; - double t1,t2; - for (i=i1; i<=i2; i++) { - t1 = A[i+j1*m]; - t2 = A[i+j2*m]; - A[i+j1*m] = c*t1-s*t2; - A[i+j2*m] = s*t1+c*t2; - } -} - -// Downdate the QR factorization after deleting column j0, -// where Q1 is m x n and R is n x n. The other part of -// the Q matrix, Q2 m x (m-n), isn't needed so it isn't -// passed for efficiency -void downdate1(double *Q1, double *R, int j0, int m, int n) { - int j; - - double c,s; - for (j=j0+1; j=1; j--) { - // Compute the appropriate c and s - givens(w[j-1],w[j],&c,&s); - - // Pre-multiply w - rowrot(w,j-1,j,k,1,0,0,c,s); - - // Post-multiply Q2 - colrot(Q2,j-1,j,m,k,0,m-1,c,s); - } -} - -// Downdate the QR factorization after deleting the first row, -// where Q is m x m and R is m x n -void downdate2(double *Q, double *R, int *mp, int *np) { - int m,n,i; - m = *mp; - n = *np; - - double c,s; - for (i=m-1; i>=1; i--) { - // Compute the appropriate c and s - givens(Q[(i-1)*m],Q[i*m],&c,&s); - - // Post-mutiply Q - colrot(Q,i-1,i,m,m,0,m-1,c,s); - - // Pre-multiply R - if (i<=n) rowrot(R,i-1,i,m,n,i-1,n-1,c,s); - } -} - -// Update the QR factorization after adding the last row, -// where Q is m x m and R is m x n. For efficiency, Q is not -// passed, and only the first row of R is passed. Not counting -// its first row, the first q columns of R are zero -void update2(double *y, double *D, double *r, int *mp, int *np, int *qp) { - int m,n,q,j; - m = *mp; - n = *np; - q = *qp; - - double c,s; - for (j=0; j=0; i--) { - for (j=i; j0) { - d = n-m; - } - - double c,s; - for (i=r-k-1; i>=0; i--) { - for (j=i; j=0; i--) { - // Compute the appropriate c and s - givens(R[i+(i+q+1)*m2],R[i+(i+q)*m2],&c,&s); - - // Post-multiply R - colrot(R,i+q+1,i+q,m2,n,0,i,c,s); - - // Post-multiply D - colrot(A,i+q+1,i+q,m1,n,0,m1-1,c,s); - - // Pre-multiply y - rowrot(y,i+q+1,i+q,n,1,0,0,c,s); - } -} - -// Make the R factor upper triangular, by Givens rotating -// its columns and rows, appropriately. Here A is m1 x n, -// Q is m2 x m2, and R is m2 x n with rank(R) = n-q-1. The -// first q columns of R are zero. The kth row of R is the -// last row with a zero element on the diagonal -void maketri4(double *y, double *A, double *Q, double *R, int *m1p, int *m2p, int *np, int *qp, int *kp) { - int m1,m2,n,q,k,i,j; - m1 = *m1p; - m2 = *m2p; - n = *np; - q = *qp; - k = *kp; - - double c,s; - - // First rotate the columns - for (i=k-1; i>=0; i--) { - // Compute the appropriate c and s - givens(R[i+(i+q+1)*m2],R[i+(i+q)*m2],&c,&s); - - // Post-multiply R - colrot(R,i+q+1,i+q,m2,n,0,i,c,s); - - // Post-multiply D - colrot(A,i+q+1,i+q,m1,n,0,m1-1,c,s); - - // Pre-multiply y - rowrot(y,i+q+1,i+q,n,1,0,0,c,s); - } - - // Next rotate the rows - for (j=k+q+1; j // for fabs - -// Find an approximate row of \hat{nndef}^{-1} - -// Solves a dual version of problem (4) of https://arxiv.org/pdf/1306.3171.pdf - -// Dual problem: \text{min}_{\theta} 1/2 \theta^T \Sigma \theta - l^T\theta + \mu \|\theta\|_1 -// where l is `linear_func` below - -// This is the "negative" of the problem as in https://gist.github.com/jonathan-taylor/07774d209173f8bc4e42aa37712339bf -// Therefore we don't have to negate the answer to get theta. -// Update one coordinate - -double objective_qp(double *nndef_ptr, /* A non-negative definite matrix */ - double *linear_func_ptr, /* Linear term in objective */ - int *ever_active_ptr, /* Ever active set: 0-based */ - int *nactive_ptr, /* Size of ever active set */ - int nrow, /* how many rows in nndef */ - double bound, /* Lagrange multipler for \ell_1 */ - double *theta_ptr) /* current value */ -{ - int irow, icol; - double value = 0; - double *nndef_ptr_tmp = nndef_ptr; - double *linear_func_ptr_tmp = linear_func_ptr; - double *theta_row_ptr, *theta_col_ptr; - int *active_row_ptr, *active_col_ptr; - int active_row, active_col; - int nactive = *nactive_ptr; - - theta_row_ptr = theta_ptr; - theta_col_ptr = theta_ptr; - - for (irow=0; irow 0) && (fabs(gradient + bound) > tol * bound)) { - return(0); - } - else if ((*theta_ptr_tmp < 0) && (fabs(gradient - bound) > tol * bound)) { - return(0); - } - } - else { - if (fabs(gradient) > (1. + tol) * bound) { - return(0); - } - } - } - - return(1); -} - -int check_KKT_qp_active(int *ever_active_ptr, /* Ever active set: 0-based */ - int *nactive_ptr, /* Size of ever active set */ - double *theta_ptr, /* current theta */ - double *gradient_ptr, /* nndef times theta + linear_func */ - int nfeature, /* how many features in nndef */ - double bound, /* Lagrange multipler for \ell_1 */ - double tol) /* precision for checking KKT conditions */ -{ - // First check inactive - - int iactive; - double *theta_ptr_tmp; - double gradient; - double *gradient_ptr_tmp; - int nactive = *nactive_ptr; - int active_feature; - int *active_feature_ptr; - - for (iactive=0; iactive 0) && (fabs(gradient + bound) > tol * bound)) { - return(0); - } - else if ((*theta_ptr_tmp < 0) && (fabs(gradient - bound) > tol * bound)) { - return(0); - } - - } - else { - if (fabs(gradient) > (1. + tol) * bound) { - return(0); - } - } - } - - return(1); -} - - -double update_one_coord_qp(double *nndef_ptr, /* A non-negative definite matrix */ - double *linear_func_ptr, /* Linear term in objective */ - double *nndef_diag_ptr, /* Diagonal of nndef */ - double *gradient_ptr, /* nndef times theta + linear_func */ - int *ever_active_ptr, /* Ever active set: 1-based */ - int *nactive_ptr, /* Size of ever active set */ - int nfeature, /* How many features in nndef */ - double bound, /* feasibility parameter */ - double *theta_ptr, /* current value */ - int coord, /* which coordinate to update: 0-based */ - int is_active) /* Is this coord in ever_active */ -{ - - double delta; - double linear_term = 0; - double value = 0; - double old_value; - double *nndef_ptr_tmp; - double *gradient_ptr_tmp; - double *theta_ptr_tmp; - int icol = 0; - - double *quadratic_ptr = ((double *) nndef_diag_ptr + coord); - double quadratic_term = *quadratic_ptr; - - gradient_ptr_tmp = ((double *) gradient_ptr + coord); - linear_term = *gradient_ptr_tmp; - - theta_ptr_tmp = ((double *) theta_ptr + coord); - old_value = *theta_ptr_tmp; - - // The coord entry of gradient_ptr term has a diagonal term in it: - // nndef[coord, coord] * theta[coord] - // This removes it. - - linear_term -= quadratic_term * old_value; - - // Now soft-threshold the coord entry of theta - - // Objective is t \mapsto q/2 * t^2 + l * t + bound |t| - // with q=quadratic_term and l=linear_term - - // With a negative linear term, solution should be - // positive - - if (linear_term < -bound) { - value = (-linear_term - bound) / quadratic_term; - } - else if (linear_term > bound) { - value = -(linear_term - bound) / quadratic_term; - } - - // Add to active set if necessary - - if ((is_active == 0) && (value != 0)) { - update_ever_active_qp(coord, ever_active_ptr, nactive_ptr); - } - - // Update the linear term - - if (fabs(old_value - value) > 1.e-6 * (fabs(value) + fabs(old_value))) { - - delta = value - old_value; - nndef_ptr_tmp = ((double *) nndef_ptr + coord * nfeature); - gradient_ptr_tmp = ((double *) gradient_ptr); - - for (icol=0; icol 0)) { - break; - } - old_value = new_value; - } - - } - - // Check size of active set - - if (*nactive_ptr >= max_active) { - break; - } - - } - return(iter); -} - diff --git a/selectiveInference/src/quadratic_program_wide.c b/selectiveInference/src/quadratic_program_wide.c deleted file mode 100644 index ce7284b..0000000 --- a/selectiveInference/src/quadratic_program_wide.c +++ /dev/null @@ -1,597 +0,0 @@ -#include // for fabs - -// Find an approximate row of \hat{nndef}^{-1} - -// Solves a dual version of problem (4) of https://arxiv.org/pdf/1306.3171.pdf - -// Dual problem: \text{min}_{\theta} 1/2 \|X\theta\|^2/n + l^T\theta + \mu \|\theta\|_1 + \frac{\epsilon}{2} \|\theta\|^2_2 -// where l is `linear_func` below - -// This is the "negative" of the problem as in https://gist.github.com/jonathan-taylor/07774d209173f8bc4e42aa37712339bf -// Therefore we don't have to negate the answer to get theta. -// Update one coordinate - -// Throughout X is a design matrix - -double objective_wide(double *X_theta_ptr, /* Fitted values */ - double *linear_func_ptr, /* Linear term in objective */ - int *ever_active_ptr, /* Ever active set: 0-based */ - int *nactive_ptr, /* Size of ever active set */ - int ncase, /* how many rows in X */ - int nfeature, /* how many columns in X */ - double *bound_ptr, /* Lagrange multiplers for \ell_1 */ - double ridge_term, /* Ridge / ENet term */ - double *theta_ptr) /* current value */ -{ - int icase, iactive; - double value = 0; - double *bound_ptr_tmp; - double *X_theta_ptr_tmp = X_theta_ptr; - double *linear_func_ptr_tmp = linear_func_ptr; - double *theta_ptr_tmp; - int *active_feature_ptr; - int active_feature; - int nactive = *nactive_ptr; - - // The term \|X\theta\|^2_2/n, with n=ncase - - for (icase=0; icase 0) && (fabs(gradient + ridge_term * (*theta_ptr_tmp) + bound) > tol * bound)) { - return(0); - } - else if ((*theta_ptr_tmp < 0) && (fabs(gradient + ridge_term * (*theta_ptr_tmp) - bound) > tol * bound)) { - return(0); - } - - } - else if (bound != 0) { - if (fabs(gradient) > (1. + tol) * bound) { - return(0); - } - } - } - - return(1); -} - -int check_KKT_wide_active(int *ever_active_ptr, /* Ever active set: 0-based */ - int *nactive_ptr, /* Size of ever active set */ - double *theta_ptr, /* current theta */ - double *gradient_ptr, /* X^TX/ncase times theta + linear_func*/ - double *X_theta_ptr, /* Current fitted values */ - double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX/ncase = nndef */ - double *linear_func_ptr, /* Linear term in objective */ - int *need_update_ptr, /* Which coordinates need to be updated? */ - int ncase, /* how many rows in X */ - int nfeature, /* how many columns in X */ - double *bound_ptr, /* Lagrange multipliers for \ell_1 */ - double ridge_term, /* Ridge / ENet term */ - double tol) /* precision for checking KKT conditions */ -{ - // First check inactive - - int iactive; - double *theta_ptr_tmp; - double *bound_ptr_tmp; - double bound; - double gradient; - int nactive = *nactive_ptr; - int active_feature; - int *active_feature_ptr; - - for (iactive=0; iactive 0) && (fabs(gradient + ridge_term * (*theta_ptr_tmp) + bound) > tol * bound)) { - return(0); - } - else if ((*theta_ptr_tmp < 0) && (fabs(gradient + ridge_term * (*theta_ptr_tmp) - bound) > tol * bound)) { - return(0); - } - - } - else if (bound != 0) { - if (fabs(gradient) > (1. + tol) * bound) { - return(0); - } - } - } - - return(1); -} - -double update_one_coord_wide(double *X_ptr, /* A design matrix*/ - double *linear_func_ptr, /* Linear term in objective */ - double *nndef_diag_ptr, /* Diagonal of nndef */ - double *gradient_ptr, /* X^TX/ncase times theta + linear_func*/ - int *ever_active_ptr, /* Ever active set: 1-based */ - int *nactive_ptr, /* Size of ever active set */ - double *X_theta_ptr, /* X\theta -- fitted values */ - int *need_update_ptr, /* Whether a gradient coordinate needs update or not */ - int ncase, /* How many rows in X */ - int nfeature, /* How many rows in X */ - double *bound_ptr, /* Lagrange multipliers */ - double ridge_term, /* Ridge / ENet term */ - double *theta_ptr, /* current value */ - int coord, /* which coordinate to update: 0-based */ - int is_active) /* Is this coord in ever_active */ -{ - - double delta; - double linear_term = 0; - double value = 0; - double old_value; - double *X_ptr_tmp; - double *X_theta_ptr_tmp; - int *need_update_ptr_tmp; - double *theta_ptr_tmp; - double *bound_ptr_tmp; - double bound; - int ifeature, icase; - - double *diagonal_ptr = ((double *) nndef_diag_ptr + coord); - double diagonal_entry = *diagonal_ptr; - - linear_term = compute_gradient_coord(gradient_ptr, X_theta_ptr, X_ptr, linear_func_ptr, need_update_ptr, coord, ncase, nfeature); - - theta_ptr_tmp = ((double *) theta_ptr + coord); - old_value = *theta_ptr_tmp; - - bound_ptr_tmp = ((double *) bound_ptr + coord); - bound = *bound_ptr_tmp; - - // The coord entry of gradient_ptr term has a diagonal term in it: - // (X^TX)[coord, coord] * theta[coord] / ncase - // This removes it. - - linear_term -= diagonal_entry * old_value; - - // Now soft-threshold the coord entry of theta - - // Objective is t \mapsto (q+eps)/2 * t^2 + l * t + bound |t| + - // with q=diagonal_entry and l=linear_term and eps=ridge_Term - - // With a negative linear term, solution should be - // positive - - if (linear_term < -bound) { - value = (-linear_term - bound) / (diagonal_entry + ridge_term); - } - else if (linear_term > bound) { - value = -(linear_term - bound) / (diagonal_entry + ridge_term); - } - - // Add to active set if necessary - - if ((is_active == 0) && (value != 0)) { - update_ever_active_wide(coord, ever_active_ptr, nactive_ptr); - } - - // Update X\theta if changed - - if (fabs(old_value - value) > 1.e-6 * (fabs(value) + fabs(old_value))) { - - // Set the update_gradient_ptr to 1 - - need_update_ptr_tmp = need_update_ptr; - for (ifeature=0; ifeature 0)) { - break; - } - old_value = new_value; - } - } - - // Check size of active set - - if (*nactive_ptr >= max_active) { - break; - } - - } - return(iter); -} - diff --git a/selectiveInference/src/randomized_lasso.c b/selectiveInference/src/randomized_lasso.c deleted file mode 100644 index 5729408..0000000 --- a/selectiveInference/src/randomized_lasso.c +++ /dev/null @@ -1,411 +0,0 @@ -#include // for fabs -#include - -// Augmented density for randomized LASSO after -// Gaussian randomization - -// Described in https://arxiv.org/abs/1609.05609 - -// Gaussian is product of IID N(0, noise_scale^2) density -// Evaluated at A_D D + A_O O + h - -// Laplace is product of IID Laplace with scale noise_scale -// Also evaluated at A_D D + A_O O + h - -// Matrices are assumed in column major order! - -double log_density_gaussian(double noise_scale, // Scale of randomization - int ndim, // Number of features -- "p" - int ninternal, // Dimension of internal data representation often 1 - int noptimization, // Dimension of optimization variables -- "p" - double *internal_linear, // A_D -- linear part for data - double *internal_state, // D -- data state - double *optimization_linear, // A_O -- linear part for optimization variables - double *optimization_state, // O -- optimization state - double *offset) // h -- offset in affine transform -- "p" dimensional -{ - int irow, icol; - double denom = 2 * noise_scale * noise_scale; - double value = 0; - double reconstruction = 0; - double *offset_ptr; - double *internal_linear_ptr; - double *internal_state_ptr; - double *optimization_linear_ptr; - double *optimization_state_ptr; - - for (irow=0; irow!1vUc8v-0nH=?X*_Vi#0V;> zRellDmPfHf%1tGrH$50dNyLLu6SW2b6^Ohcp**C(4?k@{tvm&RgPx4Le`nUP#5mcq zoo{EpnfZ1}GolnlF)3l;VTvh?e~o2-IQIKLpUv!(4S}DHi|)WL7?``Uvp#(u+Da$Q zFXPNaDn!IsdGbnc62{!zAT185lc40$~< zhCvO+Y1Ds+|F8as3={n1YfKF$3Ec;L!hEXNigCmHF1XkNZ-w@#LaP$<4VT?I@6YLm z0OskH+#bS+Q9c>Q&KM@<&?J7+nNQ0`hE`8ftS2c>yb~Yhd5vd~0L>WZ!#sKyq!;CN z==NIOUMF;=dmufi|96Owuk;;V={p8Pc;1V8jN~P{s!!*MJ_xVHcZT|l|C33)k1wd( zw@ZczfA%@I7s97^5yZOFH@Q{76ymhEOXq&P9`dPg>XYJSy(o_O<#{Nc{P`Yk zUNM)Suc4GikJ1EbNRk#9?FyNS-vOK zQ&GZAjCP$8u0*nZy~Ao(o$Sk2*`{1+QcT>q-jAD^+BsiD+Up$kWv+}k>ziJ3kw?&w}4owm}vWA zdd}VXjxyxNq?5aQcIM2PGxN=SyV-4vEz3%<5|a|Gghc&ug?iJr2akCzQ?Cw+-fx~M zkN!hF(_gM`*nEpFm5pWnoLWxp@Aj1JOy5YCx4L5V;n~UyM}K+A*!!}F-rRJ^rci8u z?(J<^)Y7n7N3vMRd29RZ%lm@#8|(dde9zqRrBQfix{he<=Q)1pi-{xZp$>oLO7)n$ z+A=$~r>x1QXmwv%;ij83^n;cksdH3Ilp@C_n_l_mxUpY5o2E~gJkIdi&Fk;)y>L)H zGv1Ox^MGbb|Ae_g!Iqu+$X_*J(LN-QU+`{I#gu+}pr) zT;0?Dta=QNz`1K->)#d6JwXop{lsx=m%BoB?B^i=c>IU>zwU~O58Y8{C`ix`>gDse z?;`sRytpf<9_p-e4p%uxOnn0tUw=HBbA_UOE>f+fh6dg1GimrkS45f4Op_adHC~v z#*R6_e1=5*zzy@)%D4k(%u{H!D~2Cu8E5dLhtJ7*_~Vq8)8;(t3t!dJY4U*Giyuw= zy(jq(emHv@UrP?`GW@{2Nqzti!~-svXUPxr8T~FGW__6Ze)^BT8 zQLig~X6}33v;rm%VyesD38yj4qDXt&q5D$66jyxj2YPm4)KE##zPqRPn_wq-c$P0GV zf%>s8<3LB=$P@k&FZdz8tOx$kZ^e0H>XLC#A6D5<;Ees-uFTBymvzWK04F&g@_y8f zeTkQ>1O5^Z?8|y)CektVL=~F7W5u#p=UTmi{vnH!ds+`tv?l=D51F z*v|9i7L?clWu9aFq%dd){5i%mMH}<%f}E1ij9-C2H)#9jMtm}Elrh;XqjHG3aTjmg gu*FyG&o9ce*|Malu+$E~rv7^U2Ng>b*|7}(0MyG~pa1{> diff --git a/tests/comparisons/big cor/knockoff_result.rds b/tests/comparisons/big cor/knockoff_result.rds deleted file mode 100644 index efcf7f176b120c72ca0405ad39e012a4fa0e1d9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 782 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 Ob^bqDv$@-Gg8~5V3!%OM diff --git a/tests/comparisons/big cor/liu.rds b/tests/comparisons/big cor/liu.rds deleted file mode 100644 index b0f07e964d8b9399ac89c797b572087d8e5c4549..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 246824 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

      ia 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

      tYNy@7mR08!_gvYJCyW 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 z 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

      sHAyK|G*Q~r~fJtlI$ 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%0D&x+d#?ULD{HX3*%p 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

      wp|HQ@mwE4K&=(WVvW_7f9zek6N4%gJxVZ{%ySw zP#->%b=`jg=d(;|81y!CZE+3#ua4Pn) zFqZFI5jU9W*ty(Q7u_NTFkEHwPKXZyS-%lg~l3XXSTUopfa_D<;`vbN_9nY(dJ>G%&POn4SHa>5UuY$ ze+npJjl|Wp7*8ywe|^6GIFOI+8}+lgi{aSH%Ug^01I<9!)3FG{lk50PT8FBESdcfq zA@wp)zur2!ZEHWqN4?BH&Bj3O{$OoB;+`?HRu(hB zTMMpLKXDuA&--RO5+76el0rhizW@+qg zpx%-Teh(Q?fVv1+RAunefy<}|J^~1heTI%D`5Dlb9Z=K%zGd*8*DL^ zdkw_Er@Y;p4np-#*+Rxq3@5V9-pGF=hs{sRfTtPa7;n&=wWS{da?d2M_S-_})Mlu= zy!%WMR7swI%=s!^}ECP2~J?eRYTO3+!7aqDodIZ(@U2i9AhhW79Vv%N#T(7dhs z{s|vZj8Bv6r?DUQ|uwT?ig(`i79BB#z#6(HJZ-lL121@eI;Q;*dJ(57R(@67{i zX!8tG_9);ZNd1l8bLEqy&IaEmJN2~H~>8*FrB$Q4G3a#<`=fl z0ogdTsuN**FAiTnbLI$;3BD#D{mujN?s~hTX93U}&iBgK3!A5h-1pqv>jQ;X#J;LK z8AFTX3$46JX&_#j{&aXPhOegAG-@$PLrcNAW8SwhyKWX@ZD$RkWj6aVcVR7%l52af zHu*r^>ujIkt80Mta`oGY&b>hS%6W)OOBBP`B4(raRsl7uJM+r-ebA_-|LVn22_QCi zPAvpp0@`Mkos4qAKviAKtY)DHUG%BO5snvF-lBsG>vW*wt3$p*D#kk~=Rd5p3WJtb z2ewBFL}=g6XV<*?1vDvFI8Tt`F}_*1U3**<>Nh8A+Vr+TyPNmNsr#-#*UBERK)7A#zgDjC8!yZKF3&d3+!PV<0(MWW*8y~CB7rY1xui24wMYbU~wrY+VPrN0eJ+!-iZGQG(Ro9D8rrywYT-S{E9h%7Qm48Vz(I3 z5^EnxER%sY9UNrEy95m@=X8ShCjnjVeK})XJJ9(;UfEvd0s5A$N4-5%fWAkx&$t-F zx8@Btc5T@HdGf9O1@$1*X4pt2p3=bbseFF$Vg``Pl#V;`ZNPXfE3ZH}#?J*b9truI zLrbyc-XT24A=TFuL0bJeKQBoxd2J%hM>yF6liExIG^9L0By_` zJh>9jfvP{pyW6P`nt~{(ZlW0I`;uuRRT%F*%x8M_o)i%6B*jEJo&&9YbIF$>>^{w$ zI?oc0LDjNR$kaB3;Z?3R+n39Mu8`GdNDl*wPEdtJ922x#yNGVY`hXsK%=7G=5;SQT zU)d}u4V@#tyH?D5KwZ%tEgA)z!@a@XS_4f$WODtUBV-6QUay&F3LF7{{LtHd6&g?@ z|0&XR$P=iS?iG6{VK`ofC$#+@9lFjJO>g;*_0_6xYrAAHTobcm(05ZUw4V{v+FEcF z@@v=FcA4J<`Y9#B?=95ej1xaDYh!acwAx|# z74)t5P|AA07dkYz<(DVe11Tv;+OcU9G(?oO4)f4~#`OA|STJ^vI|Oyb3>6^Z*!P^- zoC57?^^%Uf7;jY6?KED;2kpHV7=0Uqf$~t}l3m#bXchXdfe*X^#8V%pUmxp%cE=<; z`5WxeV0g^wy5?JG&m2zH)qVj4|8;(S0oQ;OL3$I?iSaX^Rjz>w524XAIpK?9473>d z@|Y?H15F99 z(0S8)4EK+Dyc2KRfbqi9pG{&Up>-!c#dPEa*5|7#&wx0zebrUjQNRo2wGjQ`Z@=Hd z&OVO!xD9R5r^i?>I76#UGEH~;6(Gm$SINDO;TK_{+t#qu(sug@*X1jI8TgWETgp|Qv4n}W@5 zXl)s$iKiq$v&%gRbSM~zx{TCs&N|R|{hCk3N^HMqtsYw$9|u%^!G&vYFRG?3;f+`wu}iwL8)G=NLONC{8HFuVCH3tli9V0-v; z(PPgLpuU+2%i4g&J;tKC#}w<|HGHlkBpa+wBBdL1WPo@7FW4<*30~kJ^jC4^{#`ZIt)pOy;8X2t4L#MyLxHS$1rxv~^+n)ro<-HvjKZQY4 z@#IBzGPbl8gjZzV!S>d>3Q?E;muI~Cz?qBjW_4l4l@F(YDs^+_fnONVq#rmBnd<|7 z^I4ok-~k}YA2EI?(FLTe*$tw(g@EsP@I9400YqExo_4o5j9+Z5iV&^_(%b&V;KsAi zRQCAoKs;7gMGP8OWUx8XnI*2>=M9aXuYC+e+5!JSQut96hQmnrciKwo0cpp|y(}e{ zf#g+Ay|C>hP)|ON$6cF(7PbwoE?3q-?*PFxv-cBFIWpD_MZ5xH0)6hb@JeX$&6@nq zy%np^vJ(>3;y})0i(Io8o2w4VTHO~Ev3u$~OWzm_b#LzZC}`S4=b=}n3vn2}&|mxd!*I>MhkoL$K*@@Jb4$hn zNJ^h6Ol~ef*5!CxbPDUsrudRQak|jJDHDDl9ss54v-3zt9#Ht|8w`sD0PiEFz)q0| z`lfXWW`!+4b}6AaDoA3yny^8W5!?R~d#T+m=Fl$4WuD&H43x(jXKmZ8fw0H3cUPAk z&@@^+*tO+>wpf&L>uUnGZ&XeAs7cVYG(BD5?ug;=>m!;wcK}_2IpW3QXAF-Ths-MPrZMp3VSOEwgJt{Sh|*kl0ci zb}mEuNU9+()C%kF&U2ap%Hi&QCu@G7s-NUbTjdT!b?=qZwk6Q?NOt`e>x)3Dlm`WC`uQ=9VC2grL#KJy8dKtEKv@~T=qbP`rekJq;X^?VtgaHvy=VmK+-Q?-|@%=@crY$1ePOE_5ZZ? zC*V}Qao;zLBtwIwGzbZ)WN0vyd<#jYq(YLSq#{X@kR)kRsYFCc%8(>UDw${7-g~XJ zCqrqFA}NwI={$#5izV7#Wuj77?cONXz9_5)X}VO z{5QLU4ep^sPen&wLMW!k{`td+@LhEN_-kxXj`RP@EYn77#@7iCgT>KQenw4DBmzI8 zxZ9>}D(OF0bOw#{z^uF4G+6rq{L3o^1|`v`$oXjMe6kbeqKZoyH%^1PtR3W0Dvhc$ z8^vxOCj2l^{$;|a81NbEZ*OkIfI95`_1r?j2QyEphfO2>l@fE@WI+1y&Ul}p0kWNK zt)xN8Fc|*L-M@|!Uu7o8y7&JEC)cf@{#zgT;bUzM2WOxeh|n#Pg1H&L<{J!$p2U85i{ z2r=DO@f*#H4&+@L7)$&|qEEx0aNcSSzGzSl^z!ijL;hl*x44FnGYTMiGoYW}Lp-O> zbU^!&E|^IN?vDx7MuqF-Z66adK_v#pJn8uXzUs7EirI?Vjl(YD8o3ahl6dAehRko4 zxbu~HW)S35TuHQ@jOMR;V!6J#5IK(&XO@JKabDr8-5-LQX4%)VV%DgeF1Ar@j|AxO zm22%x)X;d{VDGhcq`xURthiu9JSbydY1eul>A#Azb=_3J?VC3H>gz02%o{wuE`p6F z$Dk|ILdSv=+LQg%BMr3=jh!|w-VNT7N~NC*NWXk`*XNp39hmOZ*UOg^&QO;$M$I}@ zMGkLL?05&J{(hL%QaRLI9XNOCPc-W14aKEtD1v)R(qploD|p+@F9bM$Ah}_&saAD1 zIO{w{4J;T7YIfY>RY^r)dJ^?Z%^krwt!ojVB@N1a>$!wOGz72oqF*&>fxSv~h3otv zu%FwDc8ml-(CnjOcq9=|v&|3AeYOG(Kf<%#+&Bwvt5VK(Yrhjyf%?8tDc>G4v zRB+i&GJuKpFlaJ2dSB>fH8NsX*{|O zRQMGW#U2$1=cm8CAVubJ<)>BmZ?+O|D;w$vwP zxDomhCL4@EtNk5+_MXF>2UXrnd3muTOKL7wHyzgew?2r z+6q=pg^Ym3s4=l9W z;hY6#^&*)C8uvhD^J)%!ngS{zFUME&4(OL>>yP!P5YO`cP@nV^f+=j<$0gMSN7I;m~O^pXG0|T9VFmL2x_B`PXT4G@g87 z@$NoD`h=EE_H#)vOC%k=12fPh^vjGOUM5t1Vasc{gzCa0%JWNgiT~bGsrKsy?Wrfd zUg!??N!_`HNsZv%*c+daVhn!4=TgZeL$Ia@J8D&fK~ueaX`@ZV1F{vZ^P|9BpgwWQ zqb9s4GTyp({UOj}J4dfsF90RJ{NuJOrC<&i(p%`wprR4JN;HqX^y5^w1o8f_ajT!*CEosytv_!NRNnGc zI(53BTQ_^gODzXGaY>5YodM8W%a-k4pbZ}DuPI9VNX&YxPwJI zYc=)3l&^U^p)?;nt8jMFiLsy$jQ2jh)drMK-Q*YLLtw3R|3wf7yoOEL@qBX#CrG!Y z8aRR%?TMczam44$JJ-K029;cWuOh+{OmAf7UlFOF+|9OHi(ZkO{rg5VgYb;ESFY7l z;x!VvQ(4u;5LPZz>1=!o{uTL@&D}9*60xfjMq7ZxxL>Ul-+(5od0Ri9qS36$;DD<12RQ zodhj9m@Hc43ht)$TGmfQ5Y2uQe%m`7)QzVGseeen)0d8$qId_5slR($8|IVq-V&|W zz7T@s`lA-<#Q%TCFCTVxN5dp}lc6n!#6#XVU45hm&KQ5z_1o>BZ@hUdovKBA#Bbzx ztO9t=CFS00YSB=Zzob+29n_l7dvDTXA-uOKi?4bdt>U+(v{sjZe%BK2q_iEpcxIqP z>@9eT?e$Gw0k=0P8&MB4sfk}0?}9$5cV|15zQkB1+M))V0)RGK082s<oJp1fMMdlZ?U;EeaIb)Xfc#N)k(LCcwb zS~*{xa75PJz^`H8j@|R|vyK}$-encfEj)?;j@}$Qp$K%Qp!3vLHBb|mb+K+g0f&>; zxNj%nCf3|9Wm((6^C`5|nGubKKhmBFTarM2pLz(;JRi6u6pgRf zbZE#d1r;UTp*W57(TxRvu75s5JS+3Q<;)B)n!8_1eIq&5{OF~OmpQ15vFX14UZC5@ zszm#i6R!I%K9uAGZo)csx~LS?p3TFJraDXXJ)4FN(fyY9hb~7B_1*Ba(^G`i>jmR#}vqdTils7IhO~PK~~iq8#~m$ z*b;hpgyev4qrs=ux!^jb7RYQP&-3)g7Mp1c!LL}-I%Y*H;i3-Bo1aI6bGs|>o{9#V zEtk&PewvI^zGrLBjZkn4hP7_X5+41yCf@E8;kKv=e2HhI&(=M7ccM(MJx?sfF;YhOv)ZD+FK6l+V=n zqWYuffTmmbzt_)dto#&8e5+#OhwG%z%-4Gs7NiFLflCs?1&<+UxbwODb`bdQbkFIW zTZ*R03XcJsX(-Rn98+`X6dFAqncp0D2wdJMy@u{m@ZOhLU3;7Z*6V#b4=1bvYrI&F zi$w@{h6{cs%Ey3HD5bx3+z3Rorio=V*nn}o?Dn~p^rfod1^fFwz}vB3$*y@SsH3?t z9o=4N?xozWej!|Fs<3hUMADxuCR_UkeuT&=S(epDc(VJv|12pL(2l+mS}kVamK(XH z4QxU=nd){;Ym|@Mza!yx2{^4wYJWW;=X-Q{!Wper;=%ho4sA(5wN06n%nK#du9Zl; z?&(9u`=Yna+5*&U3Y>yjQfN;7G|&1%8F;G}suP+PG#DDiNAfpR4yhqIiC8NQ&N;^3<%aeG9jj@Y1ncvm9^@+jTz(4Y} zD=V2s`TG28irSySH*9+tx>6egZ-vAlto!%(m!cKvIw+<*rCl>7f$KFa2<&NqpuUzH z(kc($3{`WJx1I)AR+ukR2xMzXM zC*RQ!u6pJxJCXoeRm<@C?kC{#144`E9|bo=;pE?j`=Gmut#(8ylH3?oasSjW2!RA( zAsTr~^9Jsk6OO5nx})C&#%jj-(Ju!e(%&EHJ3AM&-5Qy3dybKL(srv#C44GyI;*rv znat~_F(woX)dJT{eNEC){;>hcW2N#^(FiUw{@K>YQ=> zHkdxf;02#>O76QC1D3}jnB#c)+)pmJ_vcB-7ET6tvEGiE$F@Sa-0W6p(RnZfWiq^- zWSn-!awl5Uf*U?TV@>l`Ffp#he=c7{O~=G_G0Iw~TcnoZ@K}TRgT?9QYsIKMH?p#5 z3-Qy}ZQp->v;n=eXAzDYfyKYKDr0RYsjrn9mmL)#*tq5Ex~MobHjFP(u>JtGtJ|bbQemdBIzoPyDgNFn^^=IjFSK)FXF_AdvcDy5@*>f|G1%g##^EUhl;d(&!qy0Pv3 zvUR0s{-K@nRfTZQC5<2RclDz7m)TeQRpKN^=;Ps22@e?UTvDif1x)1JJK?VN5Ujfr zFSm984X5_)7AWrqecg9UN$n8`o-1u#bYK|5zX6VX{bGo9%j@}V6GNqG-)zs}R}k=j zv5yz3Lb%~;$#do{m_f<4uLm7b>L(fMRn>@knT{Jgx5uE*oe!|<3rG7bb<=BpQ4mlM zHmyCs6VF(&a_`1Af||2MQtZ`5@UEZiPFzj=Wc^;Hms2eWZ(l8Ve@h))hmD(Sj=lls z(kSEe+8;oF@V{|vDVg_-6dx&}73e+o@+Ml%q^=&?zjyx*rrPeAe`Pfq53E*Jm)Hq< zqKyA%6&VO-AD3t!Lp)optTbQ>@zLQt-GhaeXnr|i=4Z>VsJ-#r&5I=7?@ z4eknq2A|KP>F;~rFE?MKdCBr;Z@k4&^ZW9;;h0kJ`%)qAy&u$OW{L9DD$rYc3&rBh zAngB{5q0q=;rX)W-f=U*z1bewSY`sgR?DafKm9-jiZiQiV$iT_^GT&!77+So?t9Xv zhNts$T5rGfK=X!Ye@o+9P<3IZ;qNYzAId*GLFfhcF9ZFH zF)Rq%%#;62mjthWbl$vY4rnqkc9M)755_PzB2$@oxAW}Yf`hW)ZB>aC>e8TeB~!=W zxQyoSgKwqJwShk-Hfoc}R&Z9ipLl681Uh0$?9{Vu;Qraxye`Nc^dkLLa^up#IRBD8 zRC@-@iJLRzD?dTtd2-K0tyd7$3a(yF?F9FG-o(&{AHnEc-4Qy;5gh8mFRK!Aev;~Rz15Muz7T}LBH~#Rs8kCIFi7|;g(Xi2++1dXb4Yek#7R{Oiy8re^y|pAK zUi1e~&MZVjL)z3Ewa%n2T2XAAh1$~(ItIgvAqYBCo^SOMbl_kEZ^ggYZ-vSZYFz?- z&?m*(Jq~HRbVXVDm;)1Ms-4d-I~Adi6l4@ zu1=vd6hTe*+FaEy0?$vl;nen(#OHc#Kht+0I(%dMj5A-rZEPzXxm5s~n=c`*Zw9u; zrSUQq(GVC+oABs*9Pw)2`hY~@(MK-cKd>+!)E;_cuK8;)X`}DvYgG|$`MD-X;SOGE zkL#!Fmx8a+>hbfFCzz5ui{FeV$2D|os^Kic#k))tN39qQZrY-l(Sg?BzH4$EH2y=* zX9Y|?H4yLle%Nb0@u-ah$r6!gz&j8n)2O$Htg8g4Exx;mm$K#TT<3vv>zV4hDVNZ6 zvyGjeR0~1iicUx?g7s;#MCH-bU_WiYe&M+;@yl1%Tsx_4P5 zcWQlqPF4YRa|zd={R8;c*;TA?MYI@Y9DQ&x7|i}Dah*ET!QJj%c4HOk8*itNndP1c zW}d5Oun+g)x=Q#uIdrMJS!ZsMc4D^}lHI0Po3DlcU< z;dS!>J&#XXsNZV!e&4}#Fb%4dy<-|U2Fz=j62is9F(=j=p9Dv9ZN~L=S0Px+n;+dD z3E|=(Q;iD3O9so%x2<(2*81ohQz%k8Q< z!F!%E=Sm|vj^ePZGDp17C@YyG-;hH%tDjfkumR2L7t8kL-T{3x#ztf6dX1(sRQgF+v)`XT4 z|DVxHH!2a|`_-N7SKbS@lj{6<{}k}w2Y=@MW`SltdA7}aOLC|DOz`2qpxuU_s5BG5 zyl9&s+aDS7g@wHPBZhVw2aZL*B9-CzcMP4Kqe-58&nGI@rkeZ(eEwG;j{)(sK-FaKUGd`(mLdT*>{psmB-Wqr@`ocR0a(;Yq?HdbT zH-oQjlrZ(F4Y;?Bd}8N&f}U}~>EI0tf^v1&8*k==mWgcKwA=^u{z$7+_OajxDAoGj zO+?jWUQ+G8vBb+tmORPQg<$83A1{sMA&^)XBYuPQpQ@19qYoaSDdl3j1;>N*t@4W0 z<8`1?mgl6tEdbZXGSBJ#V=#*9(%xnH;Jf$bp_y-b_U?XJ~tqE2=&jMfE-u z`O?JWE22isSE9D3&L{M`F&N2}GFK+6L$Jmowb1Y4vfIeY9;W-gk( zdF@@|AKjylC-*@3^Rs1_V+r`m?>7%}N1>rUKEX2V9O#oRYkIs7q4}`m&zH&pXh?9X z7JDKC{@x9vYy(OE<=yEvuIvC={_1x2d1#=|55G@S1LHkIYiEQT+LTs4@V{6NzGkE5 zO{HYe@di0=o=Iq4H)m$ZBLR5wBW54(szJDW-k$k}+F(bIo%yLP80>)e?YfpSVDj6~ z>Bf>g4*%Bi)bKeNmo!f~VGvn&_C5U(WPd953Z{y)K#8`by_$HFah4F;D4u_pe zP9H$+=$oYh4+lV9GCDFlGX(7JKg&nmJq2#4TBVaqF=&sUIu4v12zZ~*1iFntP%$O( z>Ap8$4rSgtwR{%ovw_QR_S{F4vN$EbITX~hJ<>zAS3q@$dlswZfcNBQ%wK)tIp1BB zHj;YbJ<*Wbef2$UNGZ+(b>{w*b#>Rlnnkh1v&ejPzi0`q zA3(L#1&Q@(84&(@>(|~!@=>rssor-nnhy+3(#Z=2PbH{Gp;U@+!>r!=Woe+!rX2|! zupxQ4@%@Xfs^BlPa`(EY0S3?G_SN~J+G1bo6cgeHZ&zxzoQ(i|?7|&OWwPH1v+BJJ zMxlEA-kP`i)6wkr!}j(Ae{lN}_h=mJ2d(m9+R!gU@K(qT`FF;mwy0~r*{N8P8<*_k zREd8{JiXbQ+ki%!lWg(q0hDBH8~om-5mTO zsbMo+VodD*7kecv}!Cv&Re1 z_cVap`AL4zH4==2TIS?=SHXSg^)6uZCh+$d>@^j&p!&9pTy2*Mc;WrbiLo!i(H#Uaqn|CZ3v&fq~3Y=p{eL|+ct?Ru&!umX&;IPSHitj zr}-E7$8tyc?-)c=$Ajn!Yd_GB{8&G0GePyGT&U`fM*VQARm}9u;8G?*HQ7C&dRi`} zYLoh~-s^Qlyp#0rjN>PAKY(g>NGepcfM{X#tdMdIP!prhS6`ArYwvd6jIu9a%~4tPy3)?9sl70lM{I>C4P!1qzo zS?62^fz=%6&s%4J(Xx6`zibqQEBXv`ORPYJh1mE`ss|$~mfT@g1is#T-wr(q&?gq< zclLGA_x%jkZyJy0rXqwq)I)8Z+*kAQHfY?t<;Vf|0`Px`zq>zAgyv>D zyMq;3pn5Mw^zGgW*39BGPOmcRqC8So*Li@wbe@G%us8AQ89O#dY(n!F|K2@=pTIW| zJ3H}lJosln?5$W;4DP|*tz6z-2(_LEFy_VG*9RfkA(w=iUR-2#D&Rg6~UeCexl)VC7L_Uq@o+YLQvgd4B?^BIC8PRc#o2roWzA1vQ-6|{nKU|Kop z-=zj^+cue^=GOU3R4YIWQf_avBD}A&hyGhx3CetB%54$hm>+}egT=qmD7`{2!HIZT zo%G5lb5?-*Hrqx^Xa;I$yaqR8DR^I~ssW7)ptc0WSfxz_Z|tEHr_?pUogPEiO|nAE zlx4eO>6;K9|6}v}dkCoKyH8|C<$?Ff#WlnD3Yvp*`<8eNq4|Qu4f)3xz|Q)9*J?s9 z_`F{pZ!e8SU59R){Z(@?68wv8u^YhckIBl^x*_>OFdU=dLa3<7-c}-Et-z?r*VU$9J&pHB&YmxefkI3;FoM zRS^DIC@hbx2Hn^5^v@Hr-mmYu)jEyvw3&O#U4bXKYVRjWJ!FF^XZ!09Zv}np{gpR6 zhS2c-sMgbyB_xkGf7XxF2lt-d{Y1^BV81!Pd#IEPN^SkDZzjc{m>}(A4+bH4qJJ&R z!XNzKEZP1~#Fx9&-$=gRK=?PYd&pxnc&nzym|YGBcW<)tw&?Ys=ky)^RP_*i|55Rc zf33jJ5>9kz>jX#Zhi~-COAtWcJW`dg`?GM;s34JRIronwBe+#3KVP35Y} zXg}~q{aLC0?{jYpvUXSS-O<$T{WsA?1deI=tr-E{D4yo27I(!2^aDk!?6Wrr&z~Ij z8z#B&C&m2N^gR%c+7%I_dj!G|!NXCtrsQ}FHQ(^%z_B$s8Nr`Hd@WU1N|;Uj=CEc^ zSTdS6Bu|&nnTgg9Lv5p_9uWWi(q?<|JmH#KIlP>3uxGoysg>>pbw|l1?E&HFk>$4C zPd|fgu&_Ao^b_zt?sQRjT1|W)%Jj_HZZ!C@-h4b!4PiQyUirKQ%!C)TNG=bQg~eO> zTH@m_u2+97Y(V97{ZQfAdNjZNB`#e>`o8-f>vdfzq_4hET+)3Dbkk3%J)bMVUTO5( zuB!^v-#N4YbVh^LuB5wiuA+HXOW30`C1~vZ@wVt9@qMHBi+@ib{j|I=cH&XutDOcL z<_Ww&6|Mc!FphAM>J;}Bj=YgilTA$`77Nhx*&B>T{;v1dq?w8*D0MG1N`TKdb5J-n~ zN!{`U`}Km;y{BCul#Mv2&|pS5(^j%7WEa?1ePp|Y6v=^(M6FY!$oY86M6E7D?Tiwo z%W6g7Jsxv*Zp8zb32+dHB2lbH6RSXRWnD?4lUjbx9^=ENc!cA zIo^KnKyQ|`3cBe4V3$qMILbzbB8C`U2s0#E_CI6Ijs-#b( zjrI6Vj?1chc&;hwGw&v;nksU^ndS0kz+4~fOSw(^Jp|zFiYaM(YmEwX!@P>JU~;~S z|NH>muS7#u6KA&9N4b&!gA#aFW$<&smS*N-))sokhcnG z+21pk^o#>{OVjR_xx_C!nPr+)`ru`szBOTf2k6~(O1f2t(Gb$EwQO!CxaVJXlvXPp>rgH6?=e}Kmv;VzC_a{3t3rItYu59XU%!K& z{D7%hA`SlEwfn!uJ_SqjL*cn|@t~FD#RsDcAXqy;k0X)=Yj#YbMVB0?5v?&gIYQp5^pub2XCWc z!t7C72WOFfTVYXPoeC!Dq^9-NbnrqMy4)oJwXsiq>n=_KHL!DI%*QXE3(@-a8)bRW9(BF4{+o)){AlHDEELk9POg9VBwPc6UW*6QV`9NA zIGAr68!8UKQ|-@cQ#>LHc{WP}_N|K)1yU>`LYA2Z`}uKlXXKf$%@S zsbH|fYXc~mjo->Y4}(ftR=RzcKbUNl8T)S&pOv_?dlSDEEWwjn)9yS7=Jhn3ST6-` zq^p9d`YQ1M7-*+P*g=%1{YAL`6zK6sZ%xY}b+XAb3zNf9mu}2@aPld*xm2wnMhl!j z4=$KLnhNTGot$~xD%6I_eJl3v0dICnorI4)gkskhD$6n8@e0G%8Gj^PAFDdUhSa@w z`xm)>Z8S-Ljq4itiDn<=LFKw`C|z3cXxxT>Je$ZI^#!kL$v1x4d{ATC z^JMOj{e9!wuGLBdOI1$SxljzW>y!BpgI|Ha)=$@cdJg#J2$~ z$Db@LK$Syvru~>?2vTpG?AYRg{7A*wksaFLD=u586K@9oEWs6t*#K|jmpkts8-Zt3 zAysfH5W-#=XN^%3;NO|l=f1@RoC%VPHAtTGuYHu)Z+}esuh~|k*TrCh*pn_y_62*+ zP^e1M81SEn{|CnH=hPbBECqL3 z<4jY}-Kbp{X7uWoFPfZs^5$!cK&Ra?D4czr@TpRMx`_>#%y7w)Y-5N_>=&y_kh=c5 zbe!Pbafr%7W&Uoyil&^8nl3Wgx8@65~1q>nwHem(5UUr-^`8s*mYIUb1XmYfCQK zf1koZCp*y2D?5v4@xa@X)exnT16qA~9H*1`!U4_wgBCoLr-_R>I}Cvee|~bno_L4e zhwYz(dqL|>y?Od#CwL86yRI4}fv$=bQ+pH!Dz^LQ$EY^c9v*pSYo`vXTCb$#$q8`d z&#k&Rx($M_TY8%gSwkcY+M~j)MN{aP+D*lC3IC5DdwY>3s653vJ(hRT*gWOip@}+R zzi(41*>4Nhz1zR~I>1(9AgTC~xf7YruXue!I-%4@-t*RzB8t#>Y@tF7QdK>YwyZq4Gp6Q^?53yU; zxN*A;1XFv|1kjD;4Uss4xB+Djqa%|_i4a^v;{3RoIomr>!{H`fx zRz}!6Z4(1OWV3QX*DEk%^RwSb<%8#5Zk`ji2F!cz8QU+jQLi-dK-tR@@MnMTyXfsn zjz8%!BaZ??9MUb+27tBJm=s9_AZG7=S|!}ITQ>03+{kBv{}dh z`8Y5JK3{K%5x>2$d9=^?Q)ns^YuD;<#WTf-N1nZ-(Y$(kN6{|Qe*!rp6(&x)qq%qCs|7N4;GYxS7gr9qdE z{tNl2&rImr<&px?`tPelq!)uT@-qLX#|ltxw~a>Dkz6@rcYN!ix2U$;`gHlRXW&`J zv=8aNCw%;6HtlKyzQkw~;isplmzP`EIqyEGE9=fFR6PMR-PI}SwFJ1Y9yr)9bpqEi zHAn0j8Hc`GhkZPWUr9gs74YxQ& zvCHDj2vj<5i1&J64c3(ahgJKxfO6LmU%IG<)OU@+dOry;=_8`|!Nix_C~5A2E^v0L zlzY+S`0jZHC5-+6L7-Q6)Bb1R-VS)szFi)y#XnT~e~|52sWS;X_p7!(lbt8uS^6zr6nr+-Ayzn zdWJmI)dY7i*JI6$6bNE*KCdr#*Y=Y9$?p837FdU-X*Uv<3EK(hTHU^=WQOMU z&MtQ!KT>xeEF3I{!Ha3R7&EpMY~2;tmRxg0^W2q&6|#>ZH?RHg7BRwUf8Hn_UOI?Y zNuxW1P8Y%Z@#3Md)D=xxYf5~Z|AJF2);e@u4RpPgq2eLJ*=K*-{%Oeo?J#-X%-{W} z{Jrbbn-pu5&-$TrG=unx$=RQ~f>OZ$IWE^~1L48z2X#LdwxdBabY8W1CRrc%a(ksn ze&@K0Nrgy)@y}j*q-Z>u7qwB!#|zN(V6$+T{otikecb#r26Sdi!TKAQ z2nWfItWG|Ka^I_4KRG-GZz$;aU#=OrJ=z=ZyWN5yJM@o+xh`6mg}W7NOGw?vb>#NINU{=d_t#q9Vx+mCcV?r7zjmNi_y%&Hr;o5c2Z7;!%{+YE> zDhSMrgshiZTHuKt=yPBF2Ey%Hra!YH!7p{cQ18S7Hz)DTv6%B{{vmH3mv9uVPi~c` zW}gSWzAVLbS2m~^Z|l@Y#3!WZMdyl<9G-c(ZH^Vmn>|hau?cmcOrE;kSzir);hIlM zYD%DZ3(x&Y_6EJ*@nPX|H3;r|Iy`*c0glVztq~6wfIl%jZHbFBm@Q*gT~$gY>p0Qk z`^8!?y{zA>29-h8xerEeCHeA|WiaUn$w$SC{6<;g7o*OUwb-!1=Dcg%^3Vj0rSHF9 z-V+IK)8$t+*GTSjBIaE(8h}u8d-BCGG#aFxwAbD31O0U8r6*&5qPpSsM~f~t_(vMA z8HI#HFj`!1!ktW#XL`n}BV>L3Y~I)ZMiEsjVlOsKc85S;@#N^f3&dm2j6boAIXabL#)ET&o93p ze!zPk$*ENZa#7df!K}OZ?VY+iN*2vmP$?FIex;vo86t(I(O;faY*_;CiB)SHCX!q@ zuN>S~76j__NBOt*gx`Msm7NeJL}jVnq|X7ts4ZJxR627Vcwe?Xx;5Pzb*z)?Cbd-( zUXNW`y0#pGrJ-w&sNF(yX#2i}f;I>%rv|PZQ3v4(0pv}49wvSm9Fismc{diFm47m`zXHAjaejB`{)p}o}q(Pf4naNYJ1LISbu#W2m zN zl&9Lf{Z0J+<*7rQ;>)0l6x(=vi;FTn9tJoX>X02sfgFG88I~0!E$=n6^W5|Tsv$ddP+qMR$R+Hm?J?N4` z#%ss%;6R&UaL+6ib~na=>G#U8Tp5bS_K_RskE?*1Zlrdt;Sp%2HK=dsH@KIdKi(B# zL-_fG%<4aZ0HuHYGaN$8<&-o!ekOF$ukv8u5-Dp1cLB-{{ zGkBV5HmB6Oh`)Y+7xwoj=-FqRSJ%qQ2HJxz{PxYdP;FQw^UN17Y%T*6jYn#1FLc-}Dj>{4DvS@xd3cCfn!Ne~|-w@0yFR zKjnefe(T{D+nac`PWF^jPAcev+ZoqCJ_NPw@~p+dWcx#I0~`8VAqqM8=f2n}v@}qS zDg}k;h~9Z-$#H44UQs)@d4CWZkGR~>cvuUeW01y|8NT4J?UPGeq)PheqK~$HyFhEn zDYF}A5gs_jy3;=dzPISgVhYO=)rE=O?ec83N;DH7gjFm_H4B>XS7 z#@X=S-*?YdL^+V0xa^tp>xCP5RW}xR-#v!LJ6|P#9r*;ltkJK@gM_Pe)b>`T>XCjm zt@V%QN-(1Dxx+M`n-9KLeXFbn7x%Q@kUQcom{vtbDHqP*yXe5*4+VZMg6#>WKVqg zsYk@b6`(y<8tUKw0Qz&`^UhhWgv-~-8?cDa{pufh@}Bsq%bQRB5hox_yyQJ;Umch! zS6=6A(gtPYrC!@D3!YP~Mo!{aFqV@_PpgiAN)*r8zhOKXmpn<hjwLtU)mbKW==_0?(ZP zX3{bmjXm*B-v?#DWv-fxDY8Q|{g>?;atD0&Ps_2-bir@ED}N~08eF46mw3__c+SSB z-N)VmYge6Ki7w&8^>+sBZ?A=*!g~p0`T(?_!LPfMTOoX3p=G*M1+8I%#5J(4~ zzA~G5!@C_u(S!3rSxxEvT_q0Qy;h?wQGO6Co~{08*@}O!54SXuFh%=V`QR5jGQnDz z^+nG^0(4M}o9(LYU}u`yuMrU6Ide7G!HD$1?0K`SC+I@(P)vHik~R22k>O*^wn3P8 zVf@`;RWNHJuLZ5o0IS1oN|v1(xDoSm+Fh1Ipz>B+S9&?vajqQ}x_iKE=rWfV^rCj! z_SfIvyFxJCe8QGy;$`t;)a?i3L5)!r+!Kt2FrO2=;(jo=Q6p;8&-#IBI>b6+l8U-* z`QC?bbfDSc`ItEZ5t^^8h&fqIJY&||bfriIP?PU`^%){wZ2Quw_UdNv>d!_EC*6T? zhQwC)$eo}YbstuSS)z9P8N=4&&Sbr(*reFFph!w`&N{?5e%~^ke50P`rL;{^?flA zET?Y%9IX$A)w=omkF{vdxBg%(J`3EUk6J#fqrtg;Ugw_Fzt6Wmn<*YbIB$*8Aq&5B zP_uJG`zOu=TV0;};HW-cd>=RHyLJo89W+WZ>lcE1-9YY2^>Oeg1u3P^odv;^mcUDu zB=4*@C5gSos#pgu)dmV7j@px&ot%PrWZAzDP z2B(LAnv*vIQTVUltq0eGCAoWB@4XT*+7{=_rXPdg6leJ>Qz=k(hx^wUJpy(8c)$=@ z2h>Nm1CJ;F22XALj6Dt2pe1B)I`?T2?jJ7gEA0W@s<>f~*hTO+BqgdnehRwnTu5Ek z0#FAfUSB+<0N&ZfwgEN6s9mi$*57{!JlkXQ4oeVT`l-@>Rh`-nwCucbYWW@)(qH90KDZEWR@960zh#e_VaNE4 zJ%k(7UajmqO!|u0Lb>GWsi?kpnbpXiMaFk&_M~}Zz_h1FvM#Hj!BgVh?~TUbF6or{ zR?G$UY1*taNhEI%5U`{4O@0E)Qa&Z+;D1o z7UveY>cX?y>|$^?`Hg=aL42WQdsuj}BG{6P6~w0bgZJrIn9jBW)U3SPS8}xoZQr(U z%WNdMHC3rsN`5H>pZZ=p*5!d2H%Wb1@b};MoOO&1&4O_3Gi$jw^`OU{cK)-a3w#4% z(_nT#XoaX}nm<$`v!eYIDIj%k4F_7613Wb;@)k`>R24j9Q zQZ95Bc&7&IcLz-e_qpDO@#Bea4|i|B9YFZq!t+^o!wJ-=>Wy7&Y6HQB*p2bUz2JO% z|6}EoKcMET9i6+~gK)<(%bl8%;4Kn!&C3;m**z_LXZj#$L4WCUYf@(yj>~6;lm6qZ z9P(z*T~HCOnrqwqz}>B;`&pxrtnc%BOPkV3E(;RRtyTeVneV#iMH|uhe7TB3b2pe_ z*(oDij-yer@uJinLz1VCU%bwRl6;anHs|nnH08ZYzkP&w;_SKS0w#_J>!+@GQ~r50 zU0AR*puRRH#mQM+Fvau{p{Ng*NtK!#FrF$6?^xB zzv!ayi1se>>P+kaE*jR|K9?|6HBLP2dV%oLJ>S_(el;^6)7U1S=HAG_C&k zI?xjya+(g{xy4TE4n2e>)yqyHYjVI+cF%m&p9QAYZQOzTi$Kf12)!z91KzOt!?o-r z@T}zA7AA*-ClgdJEtRWR91E(^|=0_w~{Al10$98R%x(8MmLtZ5kFh|UjIcWS#Mk1lCo8w5e`{$_RfA% zCl(71jjni1`l9*DaPwOz-z={+>p%{8XYO1J-A~rN!E8JGB_t;o@VZX)&j3^JbYWH} z$yveuiZ1_7a=+~3S$BrOY12Aq(nfMl`OSDmH^S-4O?&-Fy>dS83f?`R_}Ail3Rgay zLTS86W$T|#@QcRk1)i7=rXaoiQF|8gskt}mjIR>zn3Jk@b3d58xbI5bDl*@*ihs^{ z2^#yyO#VjZIUqWD!@+mp%wDrM`RoV;YC5y8g~fvF-*$RxQ!lv9I){7rD}Wnht5-Je zEJWoABD?c8V4|6_3Guq16F+_1?3fH*({O>mhYQ%hs;1?-d;xc`G-vNC!pjGeHqW4V z;HRHnc2spS$|p>GapH_ADzbyt=9ZJXC^S%?C_{W%`7L9Wyzb z04l`s7gZMyj%`r<&XO$fpJeI#@@JS zgXZ<2n;c43g15VKuBjRgdS%KH<1aTrRs2{xqx&?NQ%Y)9F>_J>Y=2|oZwpj!unOLP zvk*+8*IISK2e3A9`rha(fxFCC%;UB>8aw|ke_c!J{f5Qm84?>oZ9F{gPx*B;_f4O@ zSZpb%H-4$N9pi`x+l4lMCw+X<90%=5Dd6xIIP;F4M&0W)9I?tOmc>uoN0 z0A$-(7DK{yQ6U%v|Fz zsM@s;;^GK5sVoYq;^m>9zTN-2SRRb;ui<@xA zT2m$^>pi*--UpdWpKdJ%&*$r>;&HD?{~mYxQu#zsGp)nNPmcuE=(qF1hh$K(iME@f z)j&NluX?hV@b{v8h5GHJ-^6e~8|o9U`F(ESd<5w`tD^4Qnax4VxA(@yR|scG1;6^R zvjcpjE6k`~2cC7z!!5kG;5F3EiS#)_#%b)TFNO~YFSt%r&(ua;mExx5a)fW5Z|>=9 z9RzQq?#xl8m%z8Vc*b$^S#Z~~nS2r9`qZ^=rhNzi&oa-TTG0g+mDjz0YX3y-?C?1| z8b*UoI>COpy%n_X;t5-9iAQYmaoMer0FGgK!cI{kIM@8IrDYHK=?I+*x9~s<1P3(oDSEwQ0`Bc79%kkg$)Sjz&xD9371AF*BPr<)5$s}Bmj`BkZ zrxFvlgB5n8#CGQoaCV9>*PDEe%!jw2zcw9$w%#M@ri;NGH9h+&%@F+UbGkUcQqZg@ zJgH!w3oiA^IU~mn&1XJ~|BO6Ca{sd2o41>X6eD9lR5&1p$ zn|Daq5712)e0Jqb1plI#UjpYh1me#omG3zQ{(No6nHC7{f}L&rW^quS z{BwWFq;cY%ikv#WfiGsUSh}GDT))lb+XgH_-xJv$bs=6*`6}?PtOfW#wwP;vjE3Og zxW9gz`XKU?pOJQQH~4jT*C%RffnHD+@!^3P*une8K34lfyxHGGWirXx+2%_&Z;J&j zp2YkrQzE(H_;CDLGqe}|bsn5UlYVmK_wO(()b*U08UN%l_)h+69yW2P+1va4x9?Rn zuM*3oV#)LC?aZ$leTVSie9?mw2hni8YlejABiQG!7bUOKMpMy%q1eCAEjYe!Zqa@{fTh~_k@HpY@&J7ZqPeHg&ztzqt4pfQKjlc{I z!cUR8xht>y`(DdhpC9CTHS5No2`8LtxGBBSDGC(bNEx-#V8o9Hc<9GKRD0LEhK#NU#z1iv{ zsIj`L*ZUJupXBLzEKdW1kG~F_Fi%HA#a`npdC?I5{8m`5sSNsU-Fh2^P6$UUh$61t z0dLNksLl{?Fq8VaKk%1=KAt-Fd(8;(&iqTes2vaupHCUTMum7^o4I@v@%NbrJxpBp zfcM7bX!(;I(5K8FeBHAQJlP$oCwJsQ;J`CeIUWrr$mQwL3p3CZP-kws@H$v^(=UF! z^zZMJQ|5LK5Kmq8=PRqE7L-y; z7T|4isd+EnhvvGn!k=!$N3HWV9#okPZo|XLw z`JoHpm9|fH8%Kem-_=;Z#h(m+ zM(T*(XSd*Sk~i2(ybbu0Wc)-DerHr3qi)jKCW-kw$$8(Yvj|@ZzTfwbdqx3-1Ds8n zk^<20x1UobeU*Lgrg^M7@%JQy4DQcYXnuAuchjC`QkODn3-~Q)f3m$Wyr6-sXIrbY z-5%hcOPxJ?MI#y(PFy)bvYl{{icImssbD7L9&spt15tK;qIHV_M0?}sT)CD4;gs(> zzd{M;zFcfp<*^j3U~YNMo|mK_kFJY;+6T7#hPs+I2{3oMR1b&Qk-iyfzhh7XjGuAY z;-(p(GMc~h4~+)bWA@PUO#;x|WrpWwSwrY_$ail7;rvNvk9#byqMj z>RlP2I$yPh2YvyyZr}*dWFEM(BKfBq=AoHwr)?55h&>5y&VtDcY%q$ z^86n0%-RbU;^{H@;Fg_BHabe`Z)lWm-_$vzPgTe}Zm$RTk&?Vk$Gam7QczJzKiOHPd#t*Lc*X3i zwVdbT5L)cBJ{|M{etNR|#$#4mby%623VuTAFt;17|0C#}P|$pU@2)@R1)Tf{GH5>K`(py_VA zNuLQob*o>CGmimp#*6L3A8p|M;(pV5`U-GQY?D3nW z2a4-Kk2ZI@^V9&eYpPeJ!X@w??{2nLB)PCRbM~E`df;4YJ#wI)SjBwh*2^0410{2b$nipG3!L{3bd&g;Av`N3wy5GQnF;dGGpGvqydw-VRakAc@ z9~<{&w=M)@91r`>wIK6gR4iaWAmcPEJhfI5jE>~hRND|xQ}xZ~sZIrTK5eGY^${?E znU@^}95DF?jCk zyo@^RGY-O`Cs*Z`5snMAcrmWojr4)n7t=qHe*XFC_MML{(Xx2wLaq6v4k!LGm3mtR z=I%(t(1xSnCQBTn)y=`!&2QqYk_NrP;=v+ISx~>necawNmT>U5EblgD@C@JAg|7Ju zI_Kvjg?Gc?ectNE&9sCda(Q>f)?U;<`N_WM;tYD`o1P+BBUGQa36RVZfnT4eZxoUM z-l*=XH%STLKRdBIyi^6vWyXpHKBPbFzMU-XwjT`#qvA?N$ANGB;9l8kO;8sVn>V=B zk=ze_W9L%~ZbV?+re<H=c|bEe65i=AurI z#o*V5rLQ>i9F?)BXS!-ifmylNXw3|9k{?S);%1ZW7O}7U$-e=AZT(R{>>&Q|H<>Yh z2VT;>SK};Cf(}(s;uPh8SHG!e$BQD+KAx>oOX^T}Bfol4ILWW5i9gcPBEbEUuH*9c zC%6h%=`W)NU?-IoZfNQR!0MWs!2@s$!kVRy8G-doyU7a$ z2*hd}j|8frUg?_tWzRRLQ=QJN*=+`9{3@3GP%hXeP71-jH^DoUFz5OFFQl*a`L%DC zK;60pSKa@8PRiWRFN~U$&??y#qq$8UwfD?+=}ae{A6_(F`~V1tN-37IkoFm zmlT?=C}*!3iA4SVkGE&tFb13ZGi{5(6|g5_ZV9$W=|i7^VhG1>{(I?42Pl{AnHO&ofBr3z z(6N_rzRq|mHf!BQ~1s^Kq-0wnQtqhqfUT9EETJE`?^t;&EZ-alzqCsL)O?*iZs-NoK z3~rl6{JHD(`L{waHU;N6fjjWfMBPN=-cs;pp3AC7H=a9-OD8&+f*YFoJox1nFgG#wT$g11-E+(Eq*)cEO{f%ixrQ@A<#JMsL2r+uG)4?rMu_$ucW>Ei{* zc|Ge$4zK7)c>kS@-^PNX@c|y74P0~A-y`e5(ShUSUqSMq(f*6p6wt-5zwlBG!A#SP zmvg@gdaT<+r7CMse=FraE;$Opii!huLowhie1AmVfDLX~lvdSpcQizA<(OI-lE;T> zo)7UMeRsl0Yrh8g*)p1KX31zWoulNL>_hsqbH)<`!U-1h6>7h%gRnQPJHTlNI1`^q zNZu!0d1Px}jdUEE#cNFeURr}Re`BqR!g6p|e1Ch<`XdAZ0go@b&W3Q~l;m$pd~m-P zI&Pb=1ss8!#DM1yh?Xr%%DtimChzvAn(S{7$tAaM3Y!JNBgreLq#MBu&0aj(Bop-c z?TMwkKY-d+RQfm11|sQ~0dE!#p=IY;iwPNa5bO(E+mja$PVWT8oWl~JOi~&OBTB$7 zV85BLydE5vJ3RinN8sMuK6a?O1x(5B^Q-4g1K+k(%rH3=4byeATF=FTvU#}b@L(x~ zVk+)ijc`cTJf;kpsfa-JiFg}N41gmg&R(#E z4|Y}ij=Xb*-~&>(9zDg)d18jj`oqNA-6rN{J_r4ETJ43a$>40-#_s+eOZe$U(4@o} zXo#vjYPTvLEv8Ss&y4E;{oz-F)u|icMcRk-el`YQZzM9?U=ym8M`4pHqfXOq_APDn4|D*uTFTb63tstCrVWdWCnm>fe?t?S3h_79IB-(ra zHp%62E)!d7A^Mj4V!Dbwc-O13a+~Ye_O|)D zK1BZVW5h;p28Xj)OzDsm;gA(C?y3^MEqMFn{@OUg`HXJe7%Mbv-W4+|y$7_gExK?@ zAo1!4;ngC-v2w~g9X{+rlVRjig~Bo5ml@rm-(-Slc)pK`FEkm>1itSOJ zF`x^#4Xe7^gFfAK7E=hSzbUJCY$l#5ezxXXXVH5>ve4K)@j~e98UPV@r&p*uur#{+ z{3P(I&u!LDECBD$>bQ){JrIo5ojI?q0^IB3_t*0r$hzp;EnGDXOmNKVJ>2>K-VZQq zMdU9~f&96vZ?A%I#fi@mqc)?8-8nbWUJLw}DkplaW`MS|3aM7<0CW6S>@~FrR7EV% z?(o+J_xJu1;kE5}aajMCea0Yo%4#Bjd1k`sLx9un&I#cobw^+yCVL89iTpXxn(QK zIoYyB&jp}9pS^tM&@XU1o_DrZ9|zU5uk6q{!mX7zBKDXq0i$+IDLStW)aYxuI-Pxl zd&~C*6={HqZV$hkI0E4`66{6iLH~)$*mI*19EqG9{~lK~9JurMzRhn47L07Z5)_Mu z_lXM9-iDyYq~zV18xC&MaPs_E=6uS~%v+bMITnswOJfOUTgT`l>Th1%LBJ&^VYd?|X;;_-xDG%Gg zzdhIU$C|g`>BVYYwJAlzt!Klt#VS$Xqiqw_{T7@M<0*!T>7XJepL=9Mc;;vE3;xDJ zRLKrZc=GEk>SpcF-rq;o>8E52?H>RY*3M#0(*ke*_K!E4H-I;J;KZ)p6QD0SzuP)X z0rc&U7pwX=g6Gw58sJL&O2c!XPWdUcSp4j-wAl`-Dc-mCax(aHF0C78e+oN41N5;}yCMipzR`XW$nZ5H-_w_~3^c7P;v5#>R31>D1P`#mHsGt7>?FzqBO%3e8b+r;OR)>|gw% zan4IH&dtSs&vL;Fc$fG0*e7tx?|uCK;UHcdpDrksor)HLs>$;Hc+eZ;N8cy&%~xl&|2LHp%tI$UP4R21qW?h?*K8hqhy{XD+)yIN8cC zX@cq+ay*|sU;Q*B9^`2CNTCXx$aMdO7v;dta4OwSJd~rY-Y`*?)cFs`(8;XFpkD7i zyTJMg=>2_vPYl?AHQusV%BvnCzg$^usduP4X!^;h`8Rm0OV?M~yMQ;rV!7?{?wVR>vUlW~+I=KC&NGswHBg1{3f_yYs1H9dJ6{ zoK$+}heo5_QJd!l{QI0#tG7BU&~#k0u4L&_FiL636n%jBgA?cN!B#YDoH;w?Z7+DU z3gwqj*$`rn(VcC^5H!fW{6M&lF`2)b%lQJ+F?>+&Ivi*}LHT8jdKil5k&k4-Nk?;(!Ku{UI z=4C5}(0b&zw#-#m0M-+HSPj)S7+;IM1c7_Znb~HEATrc zZvG44f_YmMkd=ItS|A!`(~%eQ)^%pWdX$E?{Xtvr_D!!94stVV->{*pD@@n6}D* zCo}PBRdgj+uh= z;Qn2n6>XYjSrdttz_%lW+J_Nio?_48ouA&KLQEWF4P4<9q7{xC6@%D+EWOa&5fsCCjsfzguduFNA=*M0Ds= z%{j2ve6Gr$yaLpUy=%hSmx42;a_(OQwUow4}3UA_7glK zfp{Yu*t&W5T5xl04{!fO_<7m3rT(9%l6pQ=9k?j=bleQ<` zmlzSQO&@VTt=$JvxQD;Tk7Urs^`5Ee0<>tV%=OanC6Aw4{4?e)O10K69J_fDDvhI) zjJ=OTpk}n+LE{0r?ixI{-v{*Zu?B@g;!~$IKl(JE0)ON2sP2)6gc}}tzwITy*I|&M zm)r?Df7FI?Z7rzn%TD$r+{yR)mH*?dmOPada10!*`g4*|m;CK_C*Km3&FeX` zncKm2PI^+PI|aO&8HXBOZh<+n-ekw&TD*R;lu4){b$-%w(<@4ic*)PlGCnSQFrcCh7rvO?Um=d101+4>Tx_wS!39E!{Vzfekv zS0;((ow|Pb zjmMW4L!j+wm|fV4`pnMcW&hp>rZQW}O7S~t8ytTb1Q(Njzw=Q;?<;U7_*)3~9s>V? zl+=mG#Q%c~4bpGkL{q`$g`sjTV@kDnl;~zzU6^F z>LHfD)(eb)F`9YY3@nz_QOyr52m28}LqQzF_Hg6BG{k-26ksh{%PaFG{kpC?}3^r1?!u7Wag86aIN1eKXfF0v>+{Rl9(^}i%d=yozz7W=U|o2Dzcxv zXvc>10<>+pw*@vbkSb&bt)K91)xtxA?XnAZF*h*F>rZuF17noFcWi8?E z&1QZxI(MQeI5zCGum{vxn~U22K6gRy_2)^J84%1^`BPO{7QEVtMf;{+M^)T9{R>BT zf;PW!@W(AcP~@r`tQZRB+}nnjm-oPP-)pg7H5UAVHK*_YBJ=km)^F3}so<|2$2p{P ziS%Vb?}{ITpjHJXvUH`um|qCxB$M@e^TjnO@#zqFZnCyiP(*WqEH%@Wj1xaKYz5B} zt#!HgUX8pb{bTX)n_GpTKWj@FjJpP^=9rjH(PwbSto$&~;VP(`d5>h5MxkN+p<7eG z7NKcHU1_x2OYrA0g^P6E!9QYayk(m{@p4aM%8Unrr_FLq{=plgQ^Z_X^3|Q$0Ia4Ly>s>Ncr85wXxuOI0WSJ zq#-!m{#vIv4~%@~pKQZZ5Ntj*tgd<-4aUy*lL;3!#m~5RJ^U7$>eWOeG622y@yV#a zp%BgzJ!g# zJr>NWsxz1a2ota23^TjD>>FLi_S0gMJO(uSwIwF5lKyuxd|0wx7n$E`GneEpCim#^@ zy6ikSt2(Fb`XdP{VvNEMi^ZTXoHaYS?KZf-&D>O7-h+E)XUnPzL)69|br0J~d`YuI zUW?=#`^l3^=EzPk#nqlsZ5g0UZ;yY!p$SyHVWDn{9H^zdDcxfg!Sr>EGYcl$DY;YC zIc}h96Lv0W$Ok>9xz^gT9{f*x{w$h8yxB_ZvB$Sdpf#7c?EyIl#`x|&4c^}2yHU2X zXv)w2{7!b5tlus1PuAyxJ7>X@l{uQI5ZN4_Pg-9!*VA_j!FzXmPe4qy+`2@2M9$C=j0imNVz)hri%id~Hxn ztOFH3d9GXmsk29{()&)0plAH?-)}Mt4Gk-nJWmUP;P|Ou6T5oB6zsRtiD83xaNEU{ z5mM(%{5s3Rmw}0}lfDr`yuI_s#mNVAz%_k&b=Qe?;G`Zq(^%w&ii`_#%Oj=1s%RXR zK2A7x(aZfqaao`qKC(L^Zch67C&Tr7+`;yVt{gc-crAAOSDX2AVDeSc(|1dv@o7N1 z`Um21WfTGb;EbG;D!A$qgI23P>($8kW^ZvaKf8wvp5)Wb^EQ#&k zI(iydrys5g5WECE)$W?Zgu`gMPG!&P3tSfJpfO>%h$B}x_MwxVF z$PWmW?RwpQkowUJJvLW75}e!8+?TKKf_0`KGUc!}8Xi7;=GMOq`~dqhr%AKW+VJhJ zOM4I)RRs-e^FnargoaV}^`Jby&1^`}A-*0zXX%-_Xnwmy!S?V1w68rA@${${$!Gtq z?&vxOFE4&*~Jb!brdGTD)b}?;^B{n*OFlIDp#}cfRvaAK{BG2h*sV5Y73^ zaQcaF|4?aLK>r5U;mmapFFmj#Z+(0DA|9=dmy%1?6Ao&h{Be8BF~a|Eml~feAsmpm z*x|!D)Vw{jW1n3h=~vh8ZynqLfs50&sXc?>Y>($DXllIa`=;BZ4wokH9vz0VnM+)TACq~s z-FZ{BE|_?+*cG{Vq<<&gld8Y?1`XjwjNZ(tU`}2bgDc}fU1zO1XhPQGvLk2rXOi=3 zbkMb(69ld*FQ95v0r*BUG8Jakg0tz(8QYuPXgzxKbMl(sXd5mbc(u5Qc+{*5)Q*|p zJ-M;Abw~{yWr<78yNAJ|-iMYhR79=rx_1!)3Z$O|r`^zf0mkY3Y2o|PV1~cSj!NO9 z>R0D8m1e@L_NyhV7n1Q9f2L{8dPTIzJ)7s^Z4Lex4;IC@1$}R+YQ$N>A5kB6M5Lc0 z`4g+Txw{0drYRdj_J%|F&06Eh*;{CQf8e|S#cgPb*rl6XHV^e*Hg^A<-Ua4hhu0V83(9pL8$)R-ZU@9kdw@$AE73f>O|0Wx?ULG>8-yehFH3r|l zeIC@so#*VHkmEYMoHcJ&6so26Dm-4T2l~^E54%|sXqI2R%Dn47c%ytHzsrV^ezPKP z6e9p@c-tzbNRjYj{myB*LMH8J@^0cK>mmQ{^xxD zA0Eg5_I%v`=Jtl9f0yL{@$vs<{QtZ9`~UTV$~797$iM&ge(rx6^f34Nx?WiBKD diff --git a/tests/comparisons/big cor/randomized_partial.rds b/tests/comparisons/big cor/randomized_partial.rds deleted file mode 100644 index b73ee7c4acb6f7e2ba1c29e4972187ad2ed0ecdc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 195272 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


      jA%ZvG&G0nCG@1;>D93eFu@HgZ1?ECpOf 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
        mV@+=w^9v|Z^){5@@F8qD8;MI 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 E0Kq>~Hvj+t diff --git a/tests/comparisons/big uncorr/knockoff.rds b/tests/comparisons/big uncorr/knockoff.rds deleted file mode 100644 index eda883fe0f6501e1dd9b9b345a4099031dd00e95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 803 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 U-Nip?jH&bg07(qFyWw&I0MYbT<^TWy diff --git a/tests/comparisons/big uncorr/liu.rds b/tests/comparisons/big uncorr/liu.rds deleted file mode 100644 index 2a56e5fa13a26320846854b6e5c545f27d208cfd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 239089 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

        >vg#* z&73G;Q0g{StC#F~blIRPYZ)=e;K!z8mXf#k&nqGIeJG=?X}Wng5le46Q+8bA8gr=} zpq6ENf~DO}U8mmmGxO{*dCzbE+00*W?%Z{!MdYchQNGyr3=7{lr*iMWKjePlLhHxJ ze=_&yzn-_qUrSMgo~iZSmB9isYW+6O-$b_W-&j2J3u0co_Dmgqbq9r4+SKS~g|o2T zY1ax%nvwUP$%E&15;O1U6|1`LxI+=`!_@r}Lz$24zR}cZb&6`Om9*rHl*LHiI9{`F!yF^8=Fo4KoQkHbH@8Su$Te!>_)YoL7ua$ z=iPXh&-`XLEuXfii0pH|tZTk+9J8JFM0@5X1M+Iy=T=9lgvF2Bn(J-(M`ENgCztG5ckmE$o33xel&WF8hh|SJ*2Q`F~zuU zcf0#tjXl3LB79%xz6%F zgfXAoF}M1JLo9A!UFrquKt}GK(0^1yN(^vnmt+k zC421~BMP^)bALbfBlDQ^YmLt7Q6wAp{^nML0OmOTfQ9wZedOPJa9Y~t0nEbPEPvq8 zyOdylba0ChN0w}Bnym52fjyrZ+Oy->_aUVlkNB)GR-(8n=R4}^pIDgGvpizyT=MU< zy_wIHT;@}9sBo6$1`6xA<6N8TgP7Z^Z!ag-{~^cQ%gvj5RWsA}GfO`?T9WL@V6khv zeA4`p4^qQf5p>erIdWuAG+Q-r5D-ges9vM z;tGZJS4(l;S;d0qf7tH(;0nEZyHVw^b$@cQsOz`#=Y2{a?brO!@1ZQH)_cd$C)s4% zyKlPh6eZ@FrZ%K|P)CZaw7b-HgCmRF?&b4HG?Z+we;Lxlri9rZd+2X|CzNDA=A4?~ z6vZCdut!HWPN&%Z%jevV>&j9ml#0z)?4;wP?w{RjYtDR1SIiA=u%n$wa(WJ7V=mOYriM~hkSNc|+OGpD#CGcq(ry<)ySTW+4)WGt~qZHAbCab_N2*O&Sp z8%;is2YykjOk#eiQuXvVGne&WW8Bok=;gJO!@g*3Wu8;pX0_kHivm|zj8&5KV8Py@v)x|=k=u&2(8#dBWn+~6DcK2>aKMFiF?LtJiPlldt@0wA$nVC*`+wW|&jAETOY|03XV4>9m&iHQZM*a)Dj4FcOuvlgwhi!Ao zs^#j0*E6InZmG}nb33EyvcaW$Dyao5`kCkC!$;cF^Vvq*2S2ovf4&i?cCHftcWJXRdoQ`am)Z|V{3Jh5B`x)1qbYRC70YF>bC{df zCcW&u)fBwh*xcT64c)U{_3+}e3QB$H7P2qNo1M-1dgPpe5+#4M*{;_moo?UG>pF0< z8znbCSZN$NlesorTw4L_QO1l|KP9z| z%;QCiWlN7XC!gdgkEi&bV$W*SI*;j@K{1ziw#V6Q-8&_{RZTF@qC0u zz*Y*Jb#KCpb9X4?#DaY#W(!%;xMqcAOLsD>j~i3oiPf3cYT3sbseZ)HwNNem<->wM zyS(4r&yk$1D-9cBJ=lx0e$Bo-eoT?GWILU%wqikvr)Mr~IiF4;+mGdJvShq zMYoOBYIr}Jo{pVH1%`R#eS6>3^*(DTV|`Kd?$S)gYV4{zSDq&yiMVG=*GDYe%B#3j z=`8Xt{<8dVvL^E!IwZ2$XAy-ef4}={lm|<3%MH#@KE?ctURP{Z`NbRtz3h>>Mu#F+ z%rL%lycr3-Z{-@qhiguIj-&G;a5rZ7`R@wvIe} zd$}=l$dtq$usB2U`h$Dy>J!BL?|NT&zHTzPCs^gpY<-S}uUS1;H246ycyCo{GWR5N zJLuYS@ae%6d@*~IYi=icYBtnqzuhQGuKjrK%@r@^JLj>Uy3SsTe!lKw)8iuMKWCzA z|CTez`(@C<%)-aaeqW!1`v;5~J7CotpRYvr2;~dHLng zwfZMm?BSkeBU8K3)BAsPIyyG6s10T+t!A%bQFUZnBujA}!0_V@?UcQ_t5jlhLYVfiYyyZETIH48{B&Q zPE{jHe7E%ehaT71Io+~PN(IL#NqS3l|1b&j4`>#4ZexnyF9*c^?tB9k7VIyBjS!Zv0%}6 z@$X9}=HFvZ?xPP?9qpIEn?g#~$j%3vk#qX1r*i9Ix*xFSxdtnH{S%jYsZHaGR^aTvdD;e)(uEV zJiU}cRW5EnX4r-KC8!w`95x}Frj8Lcn%*pFQG4%BpDwTmw}S46#dcvnUCf#pyv?Mj z^?L_A?PtRx_xAqNq3{R2)Zg2%V}*9&wvZ9O`yo3|0g4c&F+ZTmQu+B{>)#%ojALj#u|n)L?k)d}Y%tM=NFZ$U%$xT8y% zPxYMs8Rrj@ulX72oGFSpv-2X{J&8}@MeBXrFr4v=i z?`P*#Ma`y?jfeV!ChZL=MPo#hOtahUxn$kV@~MkS*3_@b-#b#~+o^NyC8JDA$~Mw& z-N}?iluy;W6fe}5%&d+5jBd;mh_4H#8UO4owO8m@{l@Ij%@J4Oee zHylJEB^@UlYYd^gm&WhYjGj&@cWXX;YW|eDE>Qm(!VXYi;r3gVe@j{LTG`?rH{Ou< zl^I8;Ev;m)21`d=OLZgJ!iUi#4HB4sLD||1_G*;8^;_1Y+%OiW{PD|xm*!0I^kVlLE-uvkd5jWvo*28>Zaus0XtKL!cPS;dKhybD%6I0_rvK!H zebUG)Xvu?(r5SWfb!&F+mtDFd)fAJ!tL%M6kNHAHZ=8N4%2?uDYubP z^mw~-voFkLp$jI>jsCuue3GtQ?lE!&Gk0HA)2TRs!V7)-UMkwjV!vf=pMLfsJ%6q0 zyCJD1^9r~;vVZbSj8|Rw^4_fYF z>G}~T+nkc;Pit4sh?tel!UrulXsNGDZmi!cd-Gpx=Em<694qAb{L_6yKjo9mZ&1rc zU$i&T)1Q*sn;)ZCLc6U$!>)g%TRp8icCt2LFa1j1mt~8{rG93}sqSTD_iSYRg*W>t z)b!EsHVsqQx#L~Zs@%*-Hgv_;%ICkCSKkh+{?J#7>^$D&z&m>u|2%2lgac;GOy^Ya z%v=#;XLmhxnRS%{v)71cAI@eG9VXv=+HX92XcRxgYk(@Vvivq9;;D>c`gsgCNVj4y z{I0K*{CY(Gy}F*Xue4*c)Eh(7gdn;p25sN+wj`2 z89^j_I(?;Y%dO;mz4N=yGoMrHs^;fvc8sShCTo%wzRsqUc9uJe&kkbYcDbtKY9CS1 zLdzzp$M?|1=C0@3g-R)Y+7o+&>GN1z)`G_>ZFaMrL%*3smdRMg4wp?UoL)1p#1_dG zfnC}C^}U>z-7q2F^KEurj$FmUOB=q2whAN1(9RYOwIb&27~FTsmcZToJR- z{!nJUK7~@hSlO_y(^**a&6m0k=}F-}R1~Coi-pd7KfoyGJq3N-HgZF+sm$@ysgg_K z%PH1=RqB=AeOS!TkVDUNmFRI=$hNlD8O;CjxxOl%nG`zuX22rbk7RSAug#WIZ7HS0 zisF%9qnZArzmkRfCR1`N>(kqxbYbo-3p<4zZcR~7Per%gZqIyd#T~~x&!M2B@6IN) ztD?uldil6~*+H>e#;+egFoC7HDW_^z@3=o#j7 z>w2fYE`Ld8_3+53cW+pbdxEUr<2v#?vS?P608c=$zl{e=3p^En>6#ULUQz#!Exy2# zP9|#%opym8EqS_6d9V@P?_laUs*8vcLYmEp-B-nYMzz_~;zKswNPV{V?jRTDR%174 z`JhsY*02B2EXIHZJw6+8b%F;4uPpf4ylez}HTCSP?{AxvY|Y*Sp0`Yy%a`TNBTGk+OmFwR)S<3SX6W>1(Yt&Kps2_z-L8@6O3Sx5-)2yHczKTp zG>V;_t5;upq=1sf9=q!5F3zFM#)9sv z5Bbt``$J0E(?-oNp^CYw7V4x7v7x9NtDDd7+np|(I;I`beox6ZO|PDN_mxGt?XJyE zoyyMYIE)?taxydaX|lS_7gdV#8`eDMLl+i2Nc&EHj6Q`8nrYE*&@~q9(D&M3!)@f% zr`1m5^KV%2yk?%VvKQ>`gU+?ie_WXV*~w}*y_JZyvhg0E-kPNxoN&PMz#ir>(=>MS zfcq&4-dkvT&9AW772V$R*0hFJNLn zCNsXATw3#kPPeP}+Pbv|OU;csGq7v}d$RG?q}^ZTICaT7!xo2!QF`wM<3qF0(vfMm zey*@EqU4R$24mmcWGv>z!0vgjGXUTPd#tE?)= zn|J)WypvpK{;MY>+2y8ESgh^k{*q{kNamz$-DD&%&=URD0XfioU)dV_OG1&^}Y>b z*Bv#cU%E#gU0;v*;HAQ1m+V-hJ!mi)D=&JX)+B|jkKS;9b#*zVgn#=qTCWQWP>KGQ z+NFvDq9&<5TIa?B+;>GZl)aJTrEi%flk-_nK3Vp=noWM4M&9vXx|F3n(O@vkGQ!R#MS!dJ%<= zm{@UhYAy?sELpGDNlGCPjhD{yaUd&~KWE%JJ5j1c}JYzDmJRFfw9oC29=giVr)qE<8Y%{*~j-ZR=ru2J>n$(=C-*wQDqWozb> zv8>g|Q3uJhx6Y_zdZQUz+uM2Fz!~In(XQ(Hw;Rl>yuN9D;sFW{JYE*FVYR8xAJ!mHIf=6cBSeti8~vq6p&o+-PQn{kW60#X;OZtX`I z+<1o`zVDGgRvu4X^V!(Vn|D&^7K^}T zaVKfVO2^=xr)8AfCTqmiqa#_$*N@4c)_r6?M|J!3d32HaWsho-`&y14z66~qdAx@O z9W}Ghd(oe~_TD$w(pthY&e{*|vd^1&M8}`qA{s8wkNPB3yqQjZ`W3wlBEB&v2RGj) zhQBDX@Y?4g?qw`>i_5V+)w`I>)$kwUiGSqy@Y&Pf7wag+EWKO1)8E)#_wBoXPJT|Z zm%VcB9uH#Cey99KC+X2k)rf&TFLh!mQNw>u($-`zM?c(oME^Z=_jbKe`|c#g9?m?o zAl#lD4SPyVjN&Ner)9@u6L&DbcCi$3C!5^n#5RpK(qo}tZ|?Y2DWO;4Lp#jTJ<9?< zoIJ4T$46rG`XA`@%!Ao_G`s$zlM==KT{Wy@a0tr?y1cv9%MQ%B+v`;$Zpv}}4f`vD z(r;1LPV@JVD<(3JeW_Lbx0S^9J#^~U zuP=LcE2|-~$zV!zS+%SG*&>!OZLUx2j5}oB!TNgT8$0IKeE-uATk9w)dA!}2yKkagtzbpDNjSyP!$@88`#)q9g)&xybM3zb<&hV>HzQ(y8n7~H)3JX`V|vSP*2 z9t$ZgQF&V0*In#IeuB@pjBH9ze0DMC=PvfB)itw`)726I$-w zHid_s0(fS ze4vxsTw_YiD=RG>Jc1>!?Oi?kiyyncRI76DU=edX-C_5`Zfz;1Yf)w4`UEC>p{-u; zG@AS_7B@+)p2*UQDo)YMT!XVlNX@yY<}ghGcAdj$hQ_8|6gpt#%026xSV*)%RLaUpBolQwe|~m1d4BHb9cKTH!rE}Y~UT;*pd6ly?Vxk@5js7;IZ$#^}3HEnYn7y0F7fT za&1(i^TS(o`P}(&4;|aHFqf^a(jNWDXJg3`b(7{S^=MUJo3AeHR>F*&XJLvr6=!OX9$;14=Wp?w;@zIo77y#Yb;}XP2c}%abm3@j~ z3BPW(IA+p}Y?nxSmtC%5G53ELCUmZ%J4&}Jv`6+}X~}2zExIy^`Gl7GRVbUWbXCW3 z(^j5mKHuGsOr6o11uVbiU;S+l`EG2VJ$KSt<{=$;v`yb*6rQ(m$zREL7X2u$T4kOo zU2Ssf=_40ax;3rms2Otq5#QmL@@{__^B46Vw{-L+^3mztZSmCiEOy%3!k2~>^z!PU zJ}-Uc{#ki_v44JNa-O+6X3^K>EVRSir^j9TkoRK4=UJ+ISbXzm^QqR7JsA@HbdZTY zOB-$;w{(sgbF1}PvR3~ubNSv!x?;8*Z;S{Ochc8owmyHhZMr+1Vnyro?%q#iUZ(A5 z`5l^1f%>zjm)`8aWanmu?XCSzex+@Hd#g5M!O~OB4uy0h|Ms021G*#jl-Fh6rji0Rj7*`cGf`@DO3Gan^N8aMln-CtuCI^l-a8Mna{G(uOh zE#(BWJ*ai<&zq){aJ|iyyDLIig8v+k35DKdcID7ElRp*YIdhd&xyd2Q&`naVo9V)? zq^#24yvdv*y(wOI$xr6jKCAP**Q)aKQ`+*_s4*;M@uSOKUUp-Tt4v>PC|J#WZI>-c zJgrB5)jdxgs?215HG!q3DxJvZPucRBHmb~~|DkEi>ROQBygAvw=1pTk2JyQpqwkVW zh@sE44V##sUVUnQ%@Xp>cwFt5IfF&m)I{G;T0rg_I($u7*PVIZ6MGDwlu8lydm}R~ zvsh}g8Bs2Kr0kW7me$Devsv)<>e@D1lgOuKabUb&9P?gORCF_UK84E6yqY_|W+_wO z_6?ro$n0;QxK$k_WkGLgrfJ?+3V9Y9r6R`z0UtBU=aUD8N+%vUba5PeGAzbqwiL$QQCE5@7j$)wA*t@ zx5PvGlz3U9t7JHt*x&(U{}d@xM!T(EkE)eeOv<*s(_22Gb8k*RHTSs7oLfsyPp+9j zVP5tbk&hRW&74BBH<9-#bg^fGY5zma)nfaq{yN<#@JqHwt2skh+>68hb5c#n`&@pq z?~Yl_!t<-QIC?ro9TD%;Fqg;2@$y2$az z$Kt!;2|MYrx8&_stwa{lUfH+8U^)4%Jnh>;TtRO3Q%#RlZJ|`(Enkkm?ZaYMpIbey z=>->JruCT<@OPsDTCJC`&5Whq@9;={+!5xjH_Bk_fWa)ns^5>QH+AHC z^GbPvj*NM1dbDARdKCGFDQ)<^aSn4c$=-7IT>}NpzCM4tRTz^UA9+K=^C~+(dZu5n z=P0tZ%pL2$cLJqIyLH&2Jc}hN&vv-B=p(ysI$ri!ti{A@gb0L^j(gi@Zdo4};zESZLz;15I>yl3U0suaru4mj0l##qASP z_TqJmkX=SG%=6MFPyH9sB?Edxb-$N&4P|VxSSx!qjvACT_TUN$u(z$8t zO`SJOS@f+H%a*?E%iLq^-~2k#oB79$GV9m19Yr`E8GCNWFY@Y&Sbrw7Fk&)li%_g+5tO`F`plcKe+4VQp6|~s~?tEnD>FC z7N71qQKWWA-QM-DSg_-qOZEOyI)Xu!)+7dhS|C-g)Jkn&-tV zEJc0vHockT_wvH_12xVp>`=SkHp@Pd*P6#mW^Ykv!Kd=?5B@918#gl_l+PQ@!o$7S zjavMc{42)lHF>7Xq8ukJ)?PB1T;}!9F1mi7g}%yCj-T~~{NIJtmxp#>OkY_g_=EiO z{xUh9aJB_=3a}Xbe(-XN`g!g3F6I5~XjP8qna`6cE=?(?Ao&Xm)pwiwJEDQSPdnD@b*)~&qHOTQ=*>{O|@9XfIVVIzZu@PR{s|8^c0Job22rForxe zj*cC$VL5x2czkAXj2w?||GV|UsQoM`^-pW>=kv*TizGb$Lph7q*Sqw4D$ygqc5|3^ z3iH3Qv?egfnLJXZ=CWfSnODT3t|wY=r-&DSvX%SoVV+e<^K3sklmDfZ>i%K!{NHlK z9e2rJ3jKZXW&i6><@uWE`}@&`>~62~>n$9cGK-(fEXGVTqDb@mr@9^Q&n|^@-XL~O zCiZJdzoQ>*$VPAdCiiovC`t2C+X{#IEXwj-m%0Th=AH$~6lA(# z?Ubb%%p*J3WZB*y6g}?B=kWT0#!1C~e}ftE=TWKf-wVU|sWT zEaLhqw}Z_J$Su>v?4bTF^8EgA&c4`1l=S;@o@Au-?w@pL zEv$^9i0PqIkJ$&1!(^XS|5e8*rC*B;nz7H>D{HDh?sJSh+4BIahqf$KJaOWV{jbQU zRpKT|Yyt~8VD-vnoEwFPx9uEioypje}$`XDx zrSPcLQy%W$Mj0C~uW)GN!Tj9g3dUa$QOMb@ZZ|$PW%jLF#Sfe5N3tJ5^EMA_!Q#5C z)tG(1j;tsBiE$cxiupy1Jke_EH;VXlMW)`@p1I5jN>Dqthy1_3Na{9jAxqiUJ}bGW zA+tLC*XioEF68RCaznwY4V3P`cR}HV-OSCge%fdW;JW($w#H5nCG@btsVN@B;R`;o`04cVfSbMdK7hAogz%ClM_bj zG4K5CD^up`k!(?5)${Dd%-e;&)M?t0?8JQO_?0%yH}`>`>~TNxt7RVwO0#Ka*EWZz zbd<;ANp1Yg4Vy9N4^}$|b=pQUi>B74+78SkKJ4AwZ^h&vQoL%7os~Sl-{@s?I*V+V z|2h_T`3;M{XkOWA$w9igFzwZ{LuxEAXj==z9WHeL&7yF>E`yoR-%ctiT^uM-yZ_Lf zN&CnquhYEg>yJ_NC8Lff_r)=j$MemUKhCGRdgY+mFe;XrcA6xZC6& z|7OzNJ$EQo<=e8BR%@8YWLC0N!+;`M92wkJ--%`1m^WoyZ7K_St2fDIpa*lGYf^gY zP+MZFJf_6+Z${e4qza_Qwi*b}+B4wiPpICxtbnb=RM^ko>0Xi#xRSEU{X@ zUWT)6SmIYNtKjb+*{SyTed8MBzu)uyBc+opDOz&i>WeF?%>8ngDy=DNDa!V-`r;*P zSbF8=4z4Ftn0rOw-Mik7?uYgjsr;7XqcwqTU=@cGTO!@ciQh~LrKOWnq> zu=;&=z4PW%$eXf7L(}wG_==1*3rvm3>sVWMsxqBe;L}X13v}fMqvoFm{X-ZK;#9x1{^`XtnN5xxb6;Ohv z&m7UOH!R??_0sh#%hL8tX{)=-ggHl#OYRex#{5UH8%vD;kca0xFZ)hwnE&1{ zGe>mVMY4{f&&z(dWcE|{U%fV{fxP-}6{%c4!y+$qo%cIIn;vToOxWD3fQ5YCXBQW6 ziEg*<>73Q=FLPcv-KVZZMDaG;A4GphVo?@T-o8FiLC;>S&T4t~7E7(4yY0*CJ~1yfIkWFIH#qcq z6`gUi`?_t05~aAbx;xSAG8u<0iLqT`OmV*VCwHzhVqv`+)G~I5l5F?P1E)?*U^i@* zw9J|_SdJ&QUC!=)nRyn}Bo$sSA(^_FEXysQUEF=8UgMJuC0Ku8W1p>Ip@!?H)jl&O zce6h8bIzo&py#Gaj{fb*W8b_^*%h|T+ws=N9d_p_c=yyr)lDBWX7lLa^pv6GrStJ# zd_pgl;yn4MwTA_>is_Iy`TBbnS^mmwhpj1v4c+S*<($I8TiqGCZuUF!-Px{Z;;;!U zY>?lpgbfeK^Gnf;#I`wd|M6!^tM`9N_Bj7&sAoqOmbtLx+l&Ts`w+i($+Vtq`)y^d zCe7sEKe(`KU$0o^KY4(EOZ(>(xO-lO>Fj(K?mlfm?Ss|i(0kYJoFCg+^{X!jD0Ih!KCfHvVbM)qIbT{+NcK8=LJSVYv4j?>)>d8v>BQxJqUO6MGmqu3 zkEX6mqyTnt`j;){%=7T37foLNrm&SQ#`&byvD5__ul{aZ&YlnZFimgLG4|3}vi9Jh zI11`H_1cC5ALaRK;kXWFm&jB9qRH~r=b2AzPm@k|iR6^#Js`!g2lHOvX`R8@hve-Z zbs?+WBo;sa(+#hO^-RzB`)b#@#w=}m5Yb2Nb#V{_pgI3)su` ze;4jux10P|e?9$ms0m9M99`S;$w1~N&edP~B!&50`WoJGvjKU(cf2iCe@CxYs0Nt? zq)_tp5YG-`FD5fEb{ZM7k-WFNkGz~Pk%esV3-{ROE00hA9}3Ppn(F_L;&BUGijuYx8rMT}=To+CLbX`0ba#yZyA5=e1R5N> zB8^3J+mmWl{z41k>e5cVL)i4Mu#zjj52zVEA{>#zn6%9$>2<{#)T;}CnK~OrG+S)d zHZg#1SFiaGx9=cholf5AN9(ZA#=-E*ol0!}P2_Es&V}Zx&K2XbV(gt!+9JW{0R&`fUr&4LdfAeaX$>k0>l&kH`)}A<0I+=;!83 zQ9k<$84^z77CNJlK)N2f_|6}_EYt%=G-aS~_-Ivt@LuS+KrQ6{c^t+wV#(ztyTJA$ zPx>{kTo`h8iAt3(gap^KTk=c59IRf#=!xfw4Mq28|^QL zq=Q3g1o=>CrN2zPG05C+j?A6*%$_Ni7c8H>s)#oo792J@Ekc{2y42SlJV+DwzkMvj zh{ZK!sMJ=G~PcU@QdtL@7z($QiDOV~Mg@>7=4}uT%_*d|V8A zr1fD$N73gZ`%@&J{_)?0r9LzrdBJ+0H4tdhCRbEBPQhs3)=PidcHz*q%6EwtzL@{( zp9a@9U!+)VnfU7x4k;Vew~s$e#?Gbubcuf&P`p8~RKADlx8J6$#IFo7f9712dajJa z|HLLlPIzN(r%%bh90y1ZSCIb8y#Em`mFqiGg^+Qr?}bQjA8Exd#67aN z@!r=+E{)u9Bv*92{W)0NgV3O ziI*?!_=k1I1*PUZzx~T1zMT*`PJv#*e*KdzvoLhWRrf@owc#S z0q(TurS0Ju8<=qPYAXvi?W!z&eR4lgb%Q>wr$j*;951=L_ZW=sE!+@t+5u?-N!tjA z)*!bfH^gj!f>ipuyB&j@fwHRQ^X$hG7SpMh$s6xNSI?)xuLkm%m%^2lj*8I#rHvrI zJr=7-cTWGAVftFu7hw}AYwVvrWTRukj}J}lR*5T2{)|d+wOKU+bUsYDH1i7?@=5A# z+%0&NoJ2@c&>DO=kclBluFjO82yMilr@%`JRcZxa3 z*-`{=?w^=X-KR9E8T1Dvj)PKcsNJ3pJOZ zLwcA}^pj6^IK1!n{t2yZn3!H4X5GPt)bPloqh*qS=LdctYRtx_&r1j1e2#_I^vwoa zt2bc{WhJm^S1@#c&0eExA@d&ndY4~Wz)1UV!;OLykiR#%gZG6TjAZD1_Pwwfhl~@<$QZ22m(rJef_MasbBj zUnU7v<4EX#>nl4O3%I}JsjRXfc-o-fUn&{e*Ug%{4mx4)P-4=TGH!_7{XN-z<0}k* z-|BPN?iKV4MBVzab_$8NzHtrQ+6wiL`uE8GN5s-=al_lLszYm$nMmX1dq_!kWScf7ckcxq12Xx^Y1H_v)UL zJ*n9F=+B#@tyxe!^@gV}T@%Txf1k7m9sxpAl$Tk{TU70g(nwik^4ogC3sk1>(%?Jd(63@$aDF^Z`WuX`fh#k(q1Cwh5Qut%J6WGDnLHFiw1wzap0g->7u|s9$ph8ABTD+;O%s2*a+y*4A1@ z4fLJZjgPkaVPlsx*GAVqph<~K$k!BM^Y*9fDoKgZ@KW78qFELn;fWNB4}3r(gg>_H zp2HMH`3i>yei$&_>D1v9i!@Hc@2jP@&}b2LGn%^`3FqEwJ@n!N+Cogp?NghON_;a~ zclrv1(&uI)8Y*#6^v0*Xm$zc@{=-e8s^QpqK`VKzO$k~i-wfUvPdKdr?Z$z=bK&a|w_FTde*XMm1;=U zlmB;CAs$HI!?xS;8RB?NuiddXD_HkZg5p~rg8gxl3d0+Epb!dggc`75<2l{-bh|E~ z6Ti?6$B;F`Er`z?`$y~ldH4eSI+EFyfJ=j z;~;kDxPITC`4Q^=6r3Q+@5YY3cyQgDt5EwS`ku&9WgK#`GQY9G1kE#48#Y~5Lq^=I zWzPp`*wVZ{u==GS(%#)1Jn=*pV)H!K=SVI558kJ;QXI_N8_>D_~cZU-vWrFH^^ zC;Bu=B>;O~xC#VYb3p+yO@97{CH5FtpX`>GfJk+Eq6qsd%s)M8=;Ut$q&qL)wXZiv zvczuIB_bX0Kc%VUATpAt*XwoGUj{<&b<*K?hmmAwd{p1u6lfaP9?nOTp;}<{cB1!l z82mjq6m9E{)zfWvcU=|->TF-}KgKyEE{)^_)0dzjOe#uzIUD;OUdlNn4nWSG2Qr~c zlQupxg=&jtLvKW zdtC+Wg9y3zv+7KRBA~qK!}s3?&Ml>zwcRAhXRLB!=_?#* zIk^3cQG*%`k* zfz>|4XFqJNgq}0;?)rLxNZ$OxCW5k8>EqbG05(`R}nOAC_WTxn2O~`ns)>|6@unJ z6@le%FJTi^awyly2Z{|f&o}u0z{l+(ZL-dm*g(`eq9u9~huNQQ5S#yt#q1{`ru`yh ze34NUwOfSYR@2O0zPm`3`D7M<+6L;9>>e80Jwj^y4#)PPNuZ&-+2PyF`B7MF{nJnl zozhYXl76{J{g35>@f7p<`+na$k)?>e73&Z8i`79yo!VIE+#&=i>ZhIGO@)yguA5AI zRj?7ddy`V{Ky6GXkK0f%R8&%PCBwvE@cUNk0rymF>huy$JFf&)mnN-88hvp173E@( z^hfw_dhYEpk6d_ga^G}lhXoAyByT*bHwUR0@nZrefnh_q0rN&!%d&%b>iaI}es$?$ z*;5W|Ul_c!nDi6sznD(dPq1O_9j%kpnjC2P#J5l50CNtUK8DGiaEBJL5V5+V*Vy$U zXsx+27YK_NigN&ZDjzp(VI{nOBJAfe;;!!U2b;AhxFf5`t35&3<+I*ho81zxh? z!sb<_wc-Z?P@6rQ)^=4GDs{&1U3l063|>Fg@5&Qc+4zo?dgU&3E4?#~oH~wW`aA3| zJs5!2n>pd-TaO^+86m6%cLQyJE|es0fRA(xVh?am0yQx9Kmc1GCb4&sx=&d`<1%42 z`%ndV7M8XqgfRWjxzzi?g(R#xB@?q?(8&tD8PnnWNvAty* z8S9<^$$j0`*Ad0o)69W-0re)9X>0HZudLy{OrD>Rkln5Race{ed|zhPU)C z-jK(!v%fqY*|uUq;(X+hgDOaydGKmv#Rc+)4j&2%55>xBKJgzD+JPqFd2+>6AM)Qk zOE2C;hW@1;mZt@tLs%f$rCz23np4(IxL*DXPA%Q%-}17+V8BvTlAA9Q-2}Jio#Fwq z^dX5`4cl<&?OpD-uUX;Jck+n|b1G6Ln>R;rvjN@Y`*+&-06tRK`TMXP19}W)=s9a& zkz(L}`tE24lnLsa#0=aCc{4Hl@LDmZLA0B2M_I&E&Kx|wd@urb!~7sWh(UF zp2190(Uv6H1gYJjprrXw>VaPRawe=wv=I(SKy2DF_ zo~%zTi>XN@00-GwGqpMrfDM`zDw(}`$Jcr=8q?i z`N+_Z?LM`{4-qds*^U`fu_r}CWxFg1C@0E`B{J!FwejlHv(8MOFB1ICaYzLj>x=E1 zbf+&WzSa^ceT+e$ZKSevVS(icS5&9XDN!0ZR@z{7hBFrbi*4RT#?9R1#}R z@nG_(+P}crLorZRdNcLtXJdTiy1f2fTrgnyev6@P-Iy=5ndOCICJg;*N++^B$K38* zn=v(KXwUSGH50VL5=9mJm7|N$sCHwndx*&kJVuuTKV<+}xc_EasSS>sw|DGW9zx1G zcgg=uo3MLIOJU5t8XigBHNWMQiS+p#7m=o5A0ji?6m8a4* zu*K|?tc$b})NQOy&7M|7a;VQ_s;@rONq;-;-g6X3es|w$mi8e zTiXk;tvO0uz#|6IuCkpcy{ACJ^F3ytjF+Kp&C8VQo;5ZO(34ZHumSBJ`^9i)NgNf( zDbxEqfpr@3(xvO};-jApMK70Upl@GvL0(4`j?ROHkUs_MS@Q+WH$`Dj9$$r3!!2}R zsd7JlAGB?12t9Jw8Ohdt@->B3AMMfW;Vn@FFE}9!zoQ{d8#F=KfnTn^?9~J9a}N;_OS;E zetgh6a3k36)emf*ee)+ovIUyBWz)WqGO_5Pc4*9bD)a|y*lS<&!uB#xnK;d0C=&{_ z($LDqmWteMc7d!wZ=Vz!;bFs8hv})2x7VQQ+Mscr;V8B|p1&_!D~Qz(Y2=N8kFm|g z>-M>9W*@7|Z>~NVi&ggyFCQLd_Nm={jk*J=NKEGbQ|7=0lq`-1gy*iv_$^v~i*OAK zhF{&9+@6p1WxUBYYytac{ehOpHVKYQO{<$4D zRH0s2P4~iCQ|w4)si&8^LA`vUso88W<|fb%1?2ZY|G>Z9_d*_Gi;cqEuS1)m#oZvM zoo zuY8=m9f&L9oyNZaDJ9c#+r^WBVlcBf%-ruHuJoDnHD*Aad17Wikc_wImV1U(s4%Q~ zf9cr1Hl*s^KIWnk11-|+*JTARVBLo$&U-B1fxK|?2q^Vn=tb5+iHEOX=tF{-$3G}KgQVf^;Lctlcy=cy<88L zl(DaWsw(gu8-(~hh|P2q$L8)mu9)fvDWD|amd=56v8y){WLkk}-8sBaXNRK$^+Shl zGW%+SnC+z?PHc2(8eFsK0K)jGFZbL%upz*^e_^l$nm(18pY6DY%>z4fF%Y3`cEjQK z&5KA~p0znH?GG)F)i04bSs_Kem&g2!8VrBs?6Pw!M*?d}LMu50=$GY+U--oVeVy>m zgS+eD@#=w0J^f5%>^L|f&Rv8B!e?V2tGi-F;FQRjqteh5xJ_MYcNx;?N$!WA&qMKg zrz`oqDM+)vt0niz0ZX4(9d5kpiX&EXfkQ39NZ25;{Oaf!_I=%Ke32~(A_5Q`@(&Wd$ z4Ix|TtbN=q93Alr84#(6z3G|?fEJPj0HtiasD1`kD>FauB(HJGR~VrALvM& zJRGr(;~LQYC}|tWvfx&S?%F0)7&_`%P{z&yX<{|kq*63th}B8U*Ge6S%go*9FBoHV z$hp}&(mhDEIx0IT;|MvoqRm7$%3$|&hk&hyIOK8Yd&lN*L9Fj?FYfPcK>v8w^TI5X zH;itP_(jE`i9G@Ksh+@r7?xk}uRe#u(r;TT+1QZxlIyfYEej085IO4)Hzs;!c@%&4 zWcK?v+l}TnkY!-2@#I4|3=3A-sTg`A^>ybac}{JpQLsAIENqE|r8i^sR|TNszE+x< zz-z?+j^&A^3IbucEjT8{1$$JBjkV7ofs%BqTW#?qtZg^moL;B}?Y<{M(mPgx$g0$A z_i7tVa_6vh?^eaeq313xPurmOnMYW($1;w5v=95Ga|a2!ZlViLp*UzR+N*Y26V#_4 zIVl}t!PWtxb?=4F0-D@u+W9OL`+g8EEO2dx{|eS0Ulwx42CbMn{mb=0XH!3nZhc6# z33`*XU=9t!_R8PBXknG&8KoD)g3vWlnqMQCf;HuRwGK9Sp_kt>T>0i{?BF{&bajRU z8t3x&%|z^l&Z{>c_(h1pQ<>nKk*h0A-rno{;`t89m$#?1{SCl6+wr&Kie5nc=u$gF zT0=_3yx_H+O+eiAl;Zn38|%YOtu^j?09n~Ghb>4G85*3Y-sLJ{($B8->)$V7{fAE{ zw%5M_nx{pgs(v?;3aK6iDoj7u{1}jzx`O@Q{gmd!RE!hpIHjpaMxxloze=$uptHsP z`Yn1o)}9s>yS3>kkgm-b++6<|sdK@T!zb8PA1Xq!l`H#U+BGEV zCeD57Cj+(q#w`1;o!H1bZhA9d9$LLrAC4OjVB5Pr1ifAckR^fw?&iP8I*)@K6T^u> zHAmsc()mc)eeB2i`v;-k?#}#=Z_^O6Z^ba?t1}G5WG;;U`{Y*kk0k z$_Dk>ARZ?65Zli>oqeT|4TZ717sB7yA|-O6@EYYd&@S;8T|3%?gpuV)mj9fAc#k-y zYmV5Q%X#s>k`PeldL|P2q_Id%Q0>eX4rsMg>OGeziFE^yZ_(4fK&$lkty6OMvAaeo z>mGe4)+=%!)OMIa65GLZJMJ?3k%UgeyMmBf@Zq3P;}uB%$HUid>H#TdJY=4;+Q8tM zx$|W$G1&iHwD3EtHAK5H<{qV*Vn3}?;w5~>h`%=%Bjsg~;Jx9e7}P@7R*~~3r=_qz zfcw=kj^p6PDI1+7ya*M%%Lb1Pe1ReD`%EsS4=LyEQpK--hR!GtO3=N0Y`^m&xScB+ za<1)a^&p=`^7nBo-%&njVp!YJ;R~pL4i%1x-h(EoXzb0|3BaO8Qpet1=7Ti6w9ozV*V4t-uNe7(9`+t zih-^ywt7OCRq{!w-PAQZdYT(smMg?3SK9$67dHH?SwK9nZv$@tFVi14eD~Q90atmK zN6#AjL$CeBzTxcmNPcXvGMGnz`p%@c2EAkWXt6ifar_)~AR~KYZYC0|P`rQS2hh_~ zEI&`nW9Qy&=ZmbBq3kNvbj4f+9v#j*@#W1q=Xu8~6Q$@qXKl0x4u{bdz{G=N}4nHR0!s ziQ>%ptjgBjKM4)VKP+F#DI=r%XzRWo6PPqc-{vSChqb$HZTGsJ2hvY}(-XNpNS8`@ zohv&Bgm;yjB-1})qrESwxKxh6Os_FA64yyvKS;p6`i_^U&OA zuJJAD7G!-_-}Q2O1xA0Trq5mCLYm$_{Z)2uAQva`TB&}-))Vjd3wS3$O#`ZCUh2SJ5hd}sJ{8D2saZLM$UE=mP2s6xlAqmcq zyR*T@$(#S#4k~oL06##$zvq0)wLJuf7mK`F5|3c!TGYxIp9Pbjn;s36YCuKS@x%Sa z+So7h+4OniO{lrDAakZh5`EOa`TWPH1`M%a!-c99WH8>DtwzsatqzaN!R2slE&0>d zSyBcK7T?4gcWg$gKd)Kz!)H)%ASO|YV+^agVqsd@3uv*)_x|15h4h^R<_6YDP;^Ue zz3)jQOj;Wg%>F$Cy~zqYGj=OO-me&95UwzJo6Rcs86E3X7KmH2w4q)8Q?}{w9;h4r zl)#(k03&k+5rQg_NPATqma`!ZqNgRa$g#Cps8uIEY`zgXPwjDTGE+nnx#&_zuOU$B zCcg%stRelvqtaIPw?NpFVYu_4AvPX+wRrd3OK4lbabvsNI4XDdl++dvENjk|Gr7-z zMvsN)1hNH;C6~^vHF;wvPgDn=&p6cD4RH8D5t6A#J#4*xLj7j#do#|OSiCFsv&(EP zbi^Kkb3TW0@U`Q!pZUv}`*Y&=9;YR&97?&m#gRGxY;N~jQ+u&I=vBGyPYRQ-M21|& zIgy^B+WFZs5*jXQ=R1WjBO`OVET_&I38S7C7x^%k+TWZoXCDow6jsI9=c{tL% z?#};o=m&z|l=T+ntw57rp**hN598^UPqUp4;6Pm><-1f9MpwRY7}~<@Z#GqR2df!) zwD+iy+jR!k(mDn%=@>wV!}z+VFVwMibZsrDEE1ZsZY8$SiP&GXQwzWH;ob4J+)+~z ztoxo5v`t46>U$pg`6sGl!*RJ*ae-xMYfdbfLJr8(+J4Qve-!9OMw9Vn+(;)1OOv)Z zK`Ymh7%P5L%(*r5A?N`&pxcbQ0Z%oyB|Zs1eUb!?71=bWb0qA`W*givco%B+i0`c9 z5yn9$8`n$C1(4C)p)k0U3=UGHmzzTTq5qF67Kk6gIIRy#d!y=M@bbEI%AeXGK1b@6 zh>i^mCCoVrRQfUf?8&X$Ha8&NE$(vQFCL`VT&!{q*$y?II@01>EU#M({pl0cZclHem(&bv8ceu3z z&HmucQqi9{R(VnN&bKX?8h_{tHXa#_cz!~`d$MPpVm)%^(h0z_oByP zvCBy8=GJx(HU+BOt=y#{2c$n!s!%^!15I^1X&!_8ka}(L(ht4AFf3HxoIH4n$!itd zobql!&-$8uOidX(ci4XHCKLkE#=U%6#RUiJCBHig2V#Mus+xV=3Q{j*HU$@mLA`~u z;e!*8kz#k(^5V}5AO?$h{)m{y!gbW>CsmJtw!&huRmL6LPi*oLklqO-_HYAVmPeSi zdhOHTZ~{<1$_}W6e1mNF9`(Lo!7!9E{V#P-GE-zOSPdq4BoiknaV5?C*C! zQ~dlFguLl_+8NG=ZN-;r{n+gJKsLWZjQaiB5!r(T%j=7 zK`u-$0<&+?Md#gApl88x-BH&B?CTqv-g(dhJe?v48fGlmKAkHOah(C>HY%-89O>A6 zuIF?3&kxW_6AwG~`Y=Xpm*31fGy@$CNxd(sw5?e30TB;9>3Jn)g3X9b7;kT-tErbp2y?i)k_Y2k+XhO!&bFt@3|One!}5{#NC zjfGe+qF%YL?iREg-Ob`7J0PCDE$&b`!1QYy!%IJEzr5h;2>_C5CZh2#F5B70|_IWP0N^Qx4pumA`8{-!t%EUB%dLs+;c5ljbEVaX= zP5T(sNCph2-D=op?v1s{)MrPZIYG1Z$oDN*^s$+HZs*eDdw_wZdLx51*r6G^E~=pt z2mg;%5G`ac+V2m|#a6MRD4`S+XeEYL*{Y6XR<&9TSw#(yhlBeQwj=FD(B+Xh zHE53!`FNl_3X>dPmR0_gfiVXS>%Ll9Og`d!P_&)|opFOY^`8T<#O?mwyKOAcr7Tf) zUwt>0l1dDk#;u_I!!O7_**Sl_9XS;{bL1Jk8%q`v*%N7fCk<-!YtCk`e+6TA6G*BzzCfzfvcCJT z<1oB+=z2rND~Psj&rbiP2Aw>Wg(pl+AhV2|-;y~AjOycx_g_3lGB5Y5IoWz>Rup-; z8aaxcMAI`F)^kvn`(IVnn*pS*?x-UOQ-PAvGZ>(whD6bt!5<68Kr8yNGeh+ZcCy!g z&R%B?WYzd1rQ5bcRueJ!WPcAZ?xc(=X$xXGTNmf|TcgmiX8!4yV-ATrdp6}!>_e(DHo{j>$<~L&trR_pm6ZmK}gQ|@n`poI7|>Yzj5G! zGxV#k$O-sGWBoD8mWm_B&~mN%`D^_)EHUUhx^5jCwCx7C+u1N;_^U9v!5LBwc}>Ht1)z=pdscb-2kd&0d*kTk*O13+^n8pX0h>fO zd@~!F1nRRe)$IX0k#Z zyux;K7Dyl+$Zbj93pDL>jOyt>f+GQKdmjblu^{U~6 zNmxi$iWy!X3hfc@j`v@PA$^;_eHcXzN;a%dn4e{GMqEn&9id_vRq0*n&j?2nMYkyD zSr61c$$0SS=24_Z8f7WO)k2+l=xIleV5F^Ap&vZ;3~H`VY$f{z;+O@m)jKh5tkVrJ zoeT#^yw3_c5oo zoPTK+$lC*E{F(FCH$C+H&=Xfk>1wz-GhK_MQ%j#2BTt}}!$DiZuL&8wyLYE9g<|aU zAhYS;7Fc}}hSsT=LZ9VOinE1IEaDN4K2h+R4i^ANLPO)2|YIP<=jWVA}M&6WI>QU z&`cX$LW*ucxB#D<{7)7bIQFJ1^XxZlZ?i5}c5#B7{X4wnZ%tsWVC2n+zq~*>=g4wg zv>55@^sTO@6+-ReCioVv2{BXRzFUC-g9mnbIu11-A6o>%d7;UbY+`%%r6GEro}G$smK6XNq+8B#uuax ziC*u}&xWSswXgojjzV$S3!}|#&dhw;X|Rd^C-$9r@psP|~~cX1za*pQwsUY?DJm3P(uqrZnhWSHjB~ zL&dO0`p(l(%T9rl;y@^b!Kj}Mwd3oq8PK*(64nI1E* zdvEM5%MreX4XvdGUp-QwrC>VbK>lB>?|Ky-o>B!gG3m`qySCtn-J=sIa5{%LQvn?b%ZC`8R-IBU9YegLZW+C zi?p{L;#Z$1_dk{bsc`Rlg()!{6f}OZaQg-3?e%fJoF#~LV*Q1m|0+QbyO&GS(cjqj z;fF!7NdiQPZQtb{n1-zud_8-jP5@bAPwMV|MI=VH9?1_2fvy|gUmG|_(6gE*Y5o2c z47wYNUOBfN`{&u0g5RtI&srs?j`K1Q@^*jkcRLvvF=-up_H+;%-83}a()L5!xxSEo znm;z%o}QoYdJK)Lkrg7Q=GgCfb?>}&KIFYls553W#nK?Jo?Q4b=iuP0rg!U?eA;q!e8vsh!HbK>$NFKBQS z_@!f2g5*e9+g&fLVBC6DpZG8Y2V*!B9^3B1hwIl}b!B&E^6)0Z@L4J}PVRPQ^Ao^g z`t}Oii#6yDD@|dwMWk@;-CG-*1=LlO=Q20x*!W3kd%{ct6s>s1fAFlKHhIt!X6^^YXA@xT>wlJryX@_@!!}VAGjA|qK!GuN0O;%`DKe_)h#~co?8JLK?n8man?^WmVa}fM< zz>#N>0Ymcn#&aF{7|bEEnexC322)IwWVxSUpT6nkg<}T4QDE## zB2XsF5+>UOvH9xtb;d@OKrOBPqf?ZEwMA@?p1b`AJsBDQJ&#ks3cJ_$_h$`3SJ8>F zYvSLr_DSd3Y~e|uH*DPfbc+X)6@O^i4|@PLWcwkB*FTV8!$#iLH4pVp;pIs@pCRo) zzTw3Sd@z*Xm^bMA5_`6s%sv%10lB8X_u9{AV#l*MW6|NeKv|yVyqw;LLw9;2PKb$P zLGKeK@5drY_4V=|GpmNy^hcZ8N9C~Oe&+Pet&`B_%X#(F1x0Mqx0-6H*$Pdc*4gSv z-og%E%7oi0-2d2{ZGS~yVN z#~lw4qr)TjE63_m_+j9eiWYfT2=m*2ex(sDp|?h3cekk&G7Oe&hHlD$Z(D_wl2a|x zwkc}) z9QJ(~7y0=q98#>#eyFuK#j!JF!sLG)*f5&l*&@k6Qs&pyTO!|~?rP%d=Ii~KEGlJs zxArWMH-xph`JKj^+w!IgI!r#k>C@~%Uc_3}t;T)Y6F|><`=v3*4M(;)uPv?*z-CIB z(AwrTB+RgtbAN7zmO`h-T-l%4l8{hZa`yAx$ooHfhcSV zQ@y)G>lwz~>x>Ujkp%bd9X86v=YakycQv@N2FHZ%1#@ckBH_@M#Fe*9AADDy#2PFO zRhoxbL|>>t)gU9{JCm;&OSj1FS+;nq@~O-_GYc5pUHE0fbu$v$YHWVi?gw;@4Y;K^cjn$B%DCiD-Kd4jn3`dH++*Q@eF)t`g^W5n*9MY6} zCY_T7{!|49Ro4J(zh9Kzv}y#sM-91_mM#MEpTs%~k{pbl=Xl;>Dgcf9%Z~H*4Z!## zzUa4oaY#OSZg4lj?#c_7gEoJI691zcB!W$G zaOVB$M_mdeB{1NPPU?vRQrt(5HjDhe-a+Jj$iK&iW4;{j`ei%nKtetpCeARe=QF6;IOXfmW@ZJSk*X00zYoy3Nb3!@)*A5_Hd=v7rA=Gmef zRc5yRlffYc)$e;xIfC~1*NTIlEZA|O_>}NBZXj;@y{2>TAky}XFMQgV1PP8ke}}*9 zMXXJ2P@u44qT^pR`U(jHH;<&yp0q*h#?E0cdm{EZ)^}@dmWGhEH!l|Vyu!XDwYs+1 zG{}{I|GnhHLG1r~VZ+fyV<2js*iCsnk4?*|)BG`1XyKs9bnwe##hq|D{=j{J(XC&T zLsD^Uil=>w{T-&I85QfdJjX77BQ-9(2(=^5wncl-V`GnV?Ah)s(A>_t=d&3%wzM6M zes)eD$bR0^u{U+FSdKpaKDr(|;$^M-Oq8K5>%I?iiQ$mSNxzBeAxv)a z&ne23LGqHybVT4rXyqRE4S&;%eoOOkb{CVs{^Rx79%6!&gU@$JddoqR@13lS7*{Cq zTN(G>>JK9kpL@&h?ZVzI5;_0H?1Dp-k}hb8|l57kWx zLbs6425{I8W$vQ(R)I{unCI$y>bMPQAD=PyEZ9J)Y=_3+g>-zhG53nJ>;kkFUjI<^ z`!rIAb$)#KJ&)BrpH0>e%;503Uw?1BP)AQ!|H}0PeAw$1)i0K3jwf%QV-NIY!9u4p zvTsiJfT-k>bOj+7)31b+mKC8Xq@e6PvD;fRqU2)tOBGt^0v>hDTFbe%nCjj*f^I zLDE>&^RE3)LL3aUznD(Ze1#*|N%A9?_FzitVtelmGIlJu|B|`=3R+|&FN&YF#k%`# ziDP7M=-LvrB(y^osW-2GZxxD#I;T&@Mtc3&Hn>#C(VPVp3ffr{3Dwvzq-B=d#|2%z zlItReRuQG;Mt$y1L-SbYp{~nBq|XNWS-LDj-67YOfi5m2O)4eq-mnE|0o6A54>0-r zd5(`&r8>}_OP>6r&W4mr+XLF*c4gyln1WVmh57|rGf$N!?_{03RDH)4b3ymk&qjk0V+0;@frIiaC@+>rXjBketAj3YKrx6k{q;ljuO<=7FRmrGBMiX}t%dB&OMNiU#P z!{1T=JZ#>SaHpd@5gPXIjQ?962oL{o5hkUhpz-=TuF)&rNZ2!dKF?vGC2%n$>sYf93l2oS{c^&H zf*y;P&whVQMFNY&qZn&*AoGhvA9iuW-tZ}zst^5GuEzRsyNDOIZ%o{kD{v38L@qGC zbyKlVL@4Rg{!LIRa?n8M=l~AwxU60|AA_OBBEH9%e%m0I)D@;z57axEu`f>sBSsDR zNw8}JNkWY1^TZnQY|oE{rZ%W8+9C4T`wgN+sp>x90 zkN$ci7GD?J8}#xOPC;Mho;_$>EgD-;RY2%6dP4K8FFPqII1IEV16%#)l}R2kl>c*Z?F$#_G$9^7DWzNUurvXD5IuOyeN#pm-E5u0^+Ni<` zP%1Pm2hRjy+o;}$ns`m9wfOkC^W`V(JIifh^F0`ol{>4{KB__P=(g4el@Tyhe~;Vg z%@^$5WRgyuhywG+U9CT3SfKVpfYD2~fv)$6di~Q35{p^) zTtCa~?_&z|uSZLfF?#)yAHx$oE@$>^Kjx1_ZADw{d*7fvM(Tjeg#;{6d8+PlXdCo$ zaUO4p|A)`mgDFFG@cG&KDv*_w#Av_s5~|+*D0_P zvGYKg@l3X;t}-;;-=Z@2dOu8r@=zokb&>Kcgnjw<95h?RxR!I%u}r}H$#w$+=rZ;U zyM6pQG^b__Xtqnj<4uJXPZdc>-58VM7t{&0V`PK6v4_|can?ZTVli}8TWQbg>EqDl zFJYh5wJ=Vh|5r!BD@d3vR4VshgrVH7%|X&;IJ%WYzBA5(WiOJVj_qZ`8vZlK93FB& z%P(t5SLIM_RIbW=f+wJ&)NMzpu?g1hSii`BKMWeRN~68UgRy3wXcM@N0o`{i63q zrVtogZZ*A|kVKMRVOVzX7U+uUP5geZ6#Hk%W+<@+A-D9~mW!D@bGU0pIA{gycGIU^ zb62qaUq<2Cq8HGZ`avRyaR6yrbBxy^6F{~!5?OMS!N(Gnbvj#wv5-5@q(A zoC|vf?H4+-Qhg3#eV|*sRc1BNim#Y#TYiHya{GgG2E0I}x?JCP#~quSQOsn<2I%5- z$8zF1k?`{Q*s0rj&{;Ba?s5hhNB)_q``t;$^0UepyWIPbTslzl{orvR_um{1zxWxu zRbyNe17sn|2j|2(oU!mE%W0nJ7HIX^w~qFf8{2c2iVQVxLvy2Q!Jpfc*wIZi4UA&? zE1KQ%E!&KRy|-?E^Kt+h-s+NFWj^mKNn5sTOZfjh2b_%$!~7{V7ppdD=C~%F&9;>TiSz6Lw>%p*B{{J@P4

        ysSP(EC?U20p!oS_; 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%0D64^?v960S@p{zj5vX4hKwazWWZx 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 N{~yme7*ejb1OQ+V6#f7J diff --git a/tests/comparisons/big uncorr/randomized_partial.rds b/tests/comparisons/big uncorr/randomized_partial.rds deleted file mode 100644 index a4365b6a31dc3ce497c86f3e281ef96cee1389f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 193795 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


        jA%ZvG&G0nCG@1;>D93eFu@HgZ1?ECpOf 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
          mV@+=w^9v|Z^){5@@F8qD8;MI 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 E0Kq>~Hvj+t diff --git a/tests/comparisons/small corr/knockoff+.rds b/tests/comparisons/small corr/knockoff+.rds deleted file mode 100644 index ccee185a8dcda892b9fee221c79c4e5d2e7e6a95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 273 zcmV+s0q*`EiwFP!000001B>8dU|?WkU}k1wU}6R_g@FV+5c2`C5d#$1pD8>p14IlY z0{aK3G=}`qP%t29&O<>kAgJz=r^+NC!VteJ?s~B#R-BN241M?Hz`*`0#GSap0VYqh zxsO(Xz-s%;#$bR`-N~6CFbhctHC~>jfr0%?40ZVJhuUlZ7`y#A;|ona%zlFQ5osQ= z!2Zn{5I76-H!gSB-y|_ypzb8(FD&MQ;)T&65{;jU##ce*+h4hwy3*uj5}f}4Ce6YG z;xn)?Z~|%8yu{qpVjx3+0hBo*f?RGcLGi_jxdl0?P!XPj{PNTyR58Xp7^48jD26ha Xi}Q+L%%Y5ZAoULbEGc6D4g>%I^XYoW diff --git a/tests/comparisons/small corr/knockoff.rds b/tests/comparisons/small corr/knockoff.rds deleted file mode 100644 index 1833fa6379c67bbfa577f043d5f3580494db4187..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 350 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�zx1(9y-TJqfi{lnIm9%D`meBL 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 VUrEQ?_It4N{{VR!ZaN8X008FttBC*r diff --git a/tests/comparisons/small corr/liu_full.rds b/tests/comparisons/small corr/liu_full.rds deleted file mode 100644 index affe4ef5e2cb81c202775cb9aae040d280f8025e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42553 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 VR|I1gW#j{?e*jaCV*m~W003T@axnk^ diff --git a/tests/comparisons/small uncorr/knockoff.rds b/tests/comparisons/small uncorr/knockoff.rds deleted file mode 100644 index 8cadde01392b6c09ad0149ef139aee621c71262b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 357 zcmV-r0h<0FiwFP!000001B>8dU|?WkU}k1wU}6R_g@FV+5c2`Ck^KV(Ft9&469i^4 z-~je_p!6e8l}SKke*wyWSQ0Dlda(p9{s2wiMTk6{{{c#0HUz|6aesvhpX zo2c^8cwuyiga-wLpNYm-LFL%wp^7o)!59TFMlqDZT%1<~V-{uP1F3%ig$F6Y4g>%I D(g>c` diff --git a/tests/comparisons/small uncorr/lee_full.rds b/tests/comparisons/small uncorr/lee_full.rds deleted file mode 100644 index d740455cef4d37094ef67b489e66317f0a7aad25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15719 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 From 6ea54a577d7ab4dd7aa50e635dda080a34e70cc5 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 29 Mar 2018 20:54:21 -0700 Subject: [PATCH 473/493] disambgiuating argument --- selectiveInference/R/funs.full.main.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/selectiveInference/R/funs.full.main.R b/selectiveInference/R/funs.full.main.R index aa6c33d..5047772 100644 --- a/selectiveInference/R/funs.full.main.R +++ b/selectiveInference/R/funs.full.main.R @@ -181,7 +181,7 @@ test_TG = function(param, observed, variance, sigma_est, center, radius, alt){ tnorm.union.surv = function(z, mean, sd, intervals, bits = NULL){ # intervals is a I x 2 matrix of disjoint intervals where the first column contains the lower endpoint - pval = matrix(NA, nr = dim(intervals)[1], nc = length(mean)) + pval = matrix(NA, nrow = dim(intervals)[1], ncol = length(mean)) for(jj in 1:dim(intervals)[1]){ if(z <= intervals[jj,1]){ pval[jj,] = 1 @@ -192,7 +192,7 @@ tnorm.union.surv = function(z, mean, sd, intervals, bits = NULL){ } } - ww = matrix(NA, nr = dim(intervals)[1], nc = length(as.vector(mean))) + ww = matrix(NA, nrow = dim(intervals)[1], ncol = length(as.vector(mean))) for(jj in 1:dim(intervals)[1]){ ww[jj,] = pnorm(intervals[jj,2], mean = mean, sd = sd) - pnorm(intervals[jj,1], mean = mean, sd = sd) } From 1caebe270b88dbd5af94f7e0d6f7a29dcdc78454 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 29 Mar 2018 20:56:30 -0700 Subject: [PATCH 474/493] fixing import of p.adjust --- selectiveInference/NAMESPACE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selectiveInference/NAMESPACE b/selectiveInference/NAMESPACE index c17a163..024a0a7 100644 --- a/selectiveInference/NAMESPACE +++ b/selectiveInference/NAMESPACE @@ -42,7 +42,7 @@ import(intervals) import(survival) importFrom("graphics", abline, axis, matplot) importFrom("stats", dnorm, lsfit, pexp, pnorm, predict, - qnorm, rnorm, sd, uniroot, dchisq, model.matrix, pchisq, resid, binomial, fitted) + qnorm, rnorm, sd, uniroot, dchisq, model.matrix, pchisq, resid, binomial, fitted, p.adjust) importFrom("stats", "coef", "df", "lm", "pf") importFrom("stats", "glm", "residuals", "vcov") importFrom("stats", "rbinom", "rexp") From 05f4d6cd1afdc6be20d245e7d161addab8e74f70 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 29 Mar 2018 20:58:54 -0700 Subject: [PATCH 475/493] sigma import --- selectiveInference/NAMESPACE | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/selectiveInference/NAMESPACE b/selectiveInference/NAMESPACE index 024a0a7..b0aa8b5 100644 --- a/selectiveInference/NAMESPACE +++ b/selectiveInference/NAMESPACE @@ -42,7 +42,8 @@ import(intervals) import(survival) importFrom("graphics", abline, axis, matplot) importFrom("stats", dnorm, lsfit, pexp, pnorm, predict, - qnorm, rnorm, sd, uniroot, dchisq, model.matrix, pchisq, resid, binomial, fitted, p.adjust) + qnorm, rnorm, sd, uniroot, dchisq, model.matrix, pchisq, resid, binomial, fitted, + p.adjust, sigma) importFrom("stats", "coef", "df", "lm", "pf") importFrom("stats", "glm", "residuals", "vcov") importFrom("stats", "rbinom", "rexp") From 791a7c86159120a7e2a07d9c32bc96a3992ccd85 Mon Sep 17 00:00:00 2001 From: Jelena Markovic Date: Thu, 29 Mar 2018 21:14:49 -1000 Subject: [PATCH 476/493] removed rds files --- tests/comparisons/big cor/knockoff+_result.rds | Bin 782 -> 0 bytes tests/comparisons/big cor/knockoff.rds | Bin 1114 -> 0 bytes tests/comparisons/big cor/knockoff_result.rds | Bin 782 -> 0 bytes tests/comparisons/big cor/lee.rds | Bin 122793 -> 0 bytes tests/comparisons/big cor/liu.rds | Bin 246824 -> 0 bytes tests/comparisons/big cor/randomized_full.rds | Bin 199392 -> 0 bytes .../comparisons/big cor/randomized_partial.rds | Bin 195272 -> 0 bytes tests/comparisons/big uncorr/knockoff+.rds | Bin 193795 -> 0 bytes tests/comparisons/big uncorr/knockoff.rds | Bin 803 -> 0 bytes tests/comparisons/big uncorr/lee.rds | Bin 116403 -> 0 bytes tests/comparisons/big uncorr/liu.rds | Bin 239089 -> 0 bytes tests/comparisons/big uncorr/params.txt | 3 --- .../comparisons/big uncorr/randomized_full.rds | Bin 197511 -> 0 bytes .../big uncorr/randomized_partial.rds | Bin 193795 -> 0 bytes tests/comparisons/small corr/knockoff+.rds | Bin 273 -> 0 bytes tests/comparisons/small corr/knockoff.rds | Bin 350 -> 0 bytes tests/comparisons/small corr/lee_full.rds | Bin 21222 -> 0 bytes tests/comparisons/small corr/liu_full.rds | Bin 42553 -> 0 bytes tests/comparisons/small corr/params.txt | 0 tests/comparisons/small uncorr/knockoff+.rds | Bin 271 -> 0 bytes tests/comparisons/small uncorr/knockoff.rds | Bin 357 -> 0 bytes tests/comparisons/small uncorr/lee_full.rds | Bin 15719 -> 0 bytes tests/comparisons/small uncorr/liu_full.rds | Bin 31871 -> 0 bytes tests/comparisons/small uncorr/params.txt | 0 .../small uncorr/randomized_full.rds | Bin 35115 -> 0 bytes 25 files changed, 3 deletions(-) delete mode 100644 tests/comparisons/big cor/knockoff+_result.rds delete mode 100644 tests/comparisons/big cor/knockoff.rds delete mode 100644 tests/comparisons/big cor/knockoff_result.rds delete mode 100644 tests/comparisons/big cor/lee.rds delete mode 100644 tests/comparisons/big cor/liu.rds delete mode 100644 tests/comparisons/big cor/randomized_full.rds delete mode 100644 tests/comparisons/big cor/randomized_partial.rds delete mode 100644 tests/comparisons/big uncorr/knockoff+.rds delete mode 100644 tests/comparisons/big uncorr/knockoff.rds delete mode 100644 tests/comparisons/big uncorr/lee.rds delete mode 100644 tests/comparisons/big uncorr/liu.rds delete mode 100644 tests/comparisons/big uncorr/params.txt delete mode 100644 tests/comparisons/big uncorr/randomized_full.rds delete mode 100644 tests/comparisons/big uncorr/randomized_partial.rds delete mode 100644 tests/comparisons/small corr/knockoff+.rds delete mode 100644 tests/comparisons/small corr/knockoff.rds delete mode 100644 tests/comparisons/small corr/lee_full.rds delete mode 100644 tests/comparisons/small corr/liu_full.rds delete mode 100644 tests/comparisons/small corr/params.txt delete mode 100644 tests/comparisons/small uncorr/knockoff+.rds delete mode 100644 tests/comparisons/small uncorr/knockoff.rds delete mode 100644 tests/comparisons/small uncorr/lee_full.rds delete mode 100644 tests/comparisons/small uncorr/liu_full.rds delete mode 100644 tests/comparisons/small uncorr/params.txt delete mode 100644 tests/comparisons/small uncorr/randomized_full.rds diff --git a/tests/comparisons/big cor/knockoff+_result.rds b/tests/comparisons/big cor/knockoff+_result.rds deleted file mode 100644 index efcf7f176b120c72ca0405ad39e012a4fa0e1d9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 782 zcmV+p1M&PHiwFP!000001BF#fOp`$n{w){;d=U^l7>!1vUc8v-0nH=?X*_Vi#0V;> zRellDmPfHf%1tGrH$50dNyLLu6SW2b6^Ohcp**C(4?k@{tvm&RgPx4Le`nUP#5mcq zoo{EpnfZ1}GolnlF)3l;VTvh?e~o2-IQIKLpUv!(4S}DHi|)WL7?``Uvp#(u+Da$Q zFXPNaDn!IsdGbnc62{!zAT185lc40$~< zhCvO+Y1Ds+|F8as3={n1YfKF$3Ec;L!hEXNigCmHF1XkNZ-w@#LaP$<4VT?I@6YLm z0OskH+#bS+Q9c>Q&KM@<&?J7+nNQ0`hE`8ftS2c>yb~Yhd5vd~0L>WZ!#sKyq!;CN z==NIOUMF;=dmufi|96Owuk;;V={p8Pc;1V8jN~P{s!!*MJ_xVHcZT|l|C33)k1wd( zw@ZczfA%@I7s97^5yZOFH@Q{76ymhEOXq&P9`dPg>XYJSy(o_O<#{Nc{P`Yk zUNM)Suc4GikJ1EbNRk#9?FyNS-vOK zQ&GZAjCP$8u0*nZy~Ao(o$Sk2*`{1+QcT>q-jAD^+BsiD+Up$kWv+}k>ziJ3kw?&w}4owm}vWA zdd}VXjxyxNq?5aQcIM2PGxN=SyV-4vEz3%<5|a|Gghc&ug?iJr2akCzQ?Cw+-fx~M zkN!hF(_gM`*nEpFm5pWnoLWxp@Aj1JOy5YCx4L5V;n~UyM}K+A*!!}F-rRJ^rci8u z?(J<^)Y7n7N3vMRd29RZ%lm@#8|(dde9zqRrBQfix{he<=Q)1pi-{xZp$>oLO7)n$ z+A=$~r>x1QXmwv%;ij83^n;cksdH3Ilp@C_n_l_mxUpY5o2E~gJkIdi&Fk;)y>L)H zGv1Ox^MGbb|Ae_g!Iqu+$X_*J(LN-QU+`{I#gu+}pr) zT;0?Dta=QNz`1K->)#d6JwXop{lsx=m%BoB?B^i=c>IU>zwU~O58Y8{C`ix`>gDse z?;`sRytpf<9_p-e4p%uxOnn0tUw=HBbA_UOE>f+fh6dg1GimrkS45f4Op_adHC~v z#*R6_e1=5*zzy@)%D4k(%u{H!D~2Cu8E5dLhtJ7*_~Vq8)8;(t3t!dJY4U*Giyuw= zy(jq(emHv@UrP?`GW@{2Nqzti!~-svXUPxr8T~FGW__6Ze)^BT8 zQLig~X6}33v;rm%VyesD38yj4qDXt&q5D$66jyxj2YPm4)KE##zPqRPn_wq-c$P0GV zf%>s8<3LB=$P@k&FZdz8tOx$kZ^e0H>XLC#A6D5<;Ees-uFTBymvzWK04F&g@_y8f zeTkQ>1O5^Z?8|y)CektVL=~F7W5u#p=UTmi{vnH!ds+`tv?l=D51F z*v|9i7L?clWu9aFq%dd){5i%mMH}<%f}E1ij9-C2H)#9jMtm}Elrh;XqjHG3aTjmg gu*FyG&o9ce*|Malu+$E~rv7^U2Ng>b*|7}(0MyG~pa1{> diff --git a/tests/comparisons/big cor/knockoff_result.rds b/tests/comparisons/big cor/knockoff_result.rds deleted file mode 100644 index efcf7f176b120c72ca0405ad39e012a4fa0e1d9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 782 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 Ob^bqDv$@-Gg8~5V3!%OM diff --git a/tests/comparisons/big cor/liu.rds b/tests/comparisons/big cor/liu.rds deleted file mode 100644 index b0f07e964d8b9399ac89c797b572087d8e5c4549..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 246824 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

          ia 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

          tYNy@7mR08!_gvYJCyW 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 z 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

          sHAyK|G*Q~r~fJtlI$ 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%0D&x+d#?ULD{HX3*%p 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

          wp|HQ@mwE4K&=(WVvW_7f9zek6N4%gJxVZ{%ySw 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 diff --git a/tests/comparisons/big cor/randomized_partial.rds b/tests/comparisons/big cor/randomized_partial.rds deleted file mode 100644 index b73ee7c4acb6f7e2ba1c29e4972187ad2ed0ecdc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 195272 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


          jA%ZvG&G0nCG@1;>D93eFu@HgZ1?ECpOf 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
            mV@+=w^9v|Z^){5@@F8qD8;MI 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 E0Kq>~Hvj+t diff --git a/tests/comparisons/big uncorr/knockoff.rds b/tests/comparisons/big uncorr/knockoff.rds deleted file mode 100644 index eda883fe0f6501e1dd9b9b345a4099031dd00e95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 803 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 U-Nip?jH&bg07(qFyWw&I0MYbT<^TWy diff --git a/tests/comparisons/big uncorr/liu.rds b/tests/comparisons/big uncorr/liu.rds deleted file mode 100644 index 2a56e5fa13a26320846854b6e5c545f27d208cfd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 239089 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

            >vg#* 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

            ysSP(EC?U20p!oS_; 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%0D64^?v960S@p{zj5vX4hKwazWWZx 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 N{~yme7*ejb1OQ+V6#f7J diff --git a/tests/comparisons/big uncorr/randomized_partial.rds b/tests/comparisons/big uncorr/randomized_partial.rds deleted file mode 100644 index a4365b6a31dc3ce497c86f3e281ef96cee1389f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 193795 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


            jA%ZvG&G0nCG@1;>D93eFu@HgZ1?ECpOf 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
              mV@+=w^9v|Z^){5@@F8qD8;MI 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 E0Kq>~Hvj+t diff --git a/tests/comparisons/small corr/knockoff+.rds b/tests/comparisons/small corr/knockoff+.rds deleted file mode 100644 index ccee185a8dcda892b9fee221c79c4e5d2e7e6a95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 273 zcmV+s0q*`EiwFP!000001B>8dU|?WkU}k1wU}6R_g@FV+5c2`C5d#$1pD8>p14IlY z0{aK3G=}`qP%t29&O<>kAgJz=r^+NC!VteJ?s~B#R-BN241M?Hz`*`0#GSap0VYqh zxsO(Xz-s%;#$bR`-N~6CFbhctHC~>jfr0%?40ZVJhuUlZ7`y#A;|ona%zlFQ5osQ= z!2Zn{5I76-H!gSB-y|_ypzb8(FD&MQ;)T&65{;jU##ce*+h4hwy3*uj5}f}4Ce6YG z;xn)?Z~|%8yu{qpVjx3+0hBo*f?RGcLGi_jxdl0?P!XPj{PNTyR58Xp7^48jD26ha Xi}Q+L%%Y5ZAoULbEGc6D4g>%I^XYoW diff --git a/tests/comparisons/small corr/knockoff.rds b/tests/comparisons/small corr/knockoff.rds deleted file mode 100644 index 1833fa6379c67bbfa577f043d5f3580494db4187..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 350 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�zx1(9y-TJqfi{lnIm9%D`meBL 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 VUrEQ?_It4N{{VR!ZaN8X008FttBC*r diff --git a/tests/comparisons/small corr/liu_full.rds b/tests/comparisons/small corr/liu_full.rds deleted file mode 100644 index affe4ef5e2cb81c202775cb9aae040d280f8025e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42553 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 VR|I1gW#j{?e*jaCV*m~W003T@axnk^ diff --git a/tests/comparisons/small uncorr/knockoff.rds b/tests/comparisons/small uncorr/knockoff.rds deleted file mode 100644 index 8cadde01392b6c09ad0149ef139aee621c71262b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 357 zcmV-r0h<0FiwFP!000001B>8dU|?WkU}k1wU}6R_g@FV+5c2`Ck^KV(Ft9&469i^4 z-~je_p!6e8l}SKke*wyWSQ0Dlda(p9{s2wiMTk6{{{c#0HUz|6aesvhpX zo2c^8cwuyiga-wLpNYm-LFL%wp^7o)!59TFMlqDZT%1<~V-{uP1F3%ig$F6Y4g>%I D(g>c` diff --git a/tests/comparisons/small uncorr/lee_full.rds b/tests/comparisons/small uncorr/lee_full.rds deleted file mode 100644 index d740455cef4d37094ef67b489e66317f0a7aad25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15719 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 From eed2e4acfb4ee3b4dd7b74f66e57fdd9708c92a7 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Fri, 30 Mar 2018 08:03:31 -0700 Subject: [PATCH 477/493] adding gglasso dependence, using solve instead of ginv --- selectiveInference/DESCRIPTION | 1 + selectiveInference/NAMESPACE | 2 ++ selectiveInference/R/funs.full.main.R | 23 +++++++++-------------- selectiveInference/src/.gitignore | 3 +++ 4 files changed, 15 insertions(+), 14 deletions(-) create mode 100644 selectiveInference/src/.gitignore diff --git a/selectiveInference/DESCRIPTION b/selectiveInference/DESCRIPTION index 535abea..57108c2 100644 --- a/selectiveInference/DESCRIPTION +++ b/selectiveInference/DESCRIPTION @@ -11,6 +11,7 @@ Depends: intervals, survival, adaptMCMC, + gglasso Suggests: Rmpfr Description: New tools for post-selection inference, for use with forward diff --git a/selectiveInference/NAMESPACE b/selectiveInference/NAMESPACE index b0aa8b5..5e0d4d3 100644 --- a/selectiveInference/NAMESPACE +++ b/selectiveInference/NAMESPACE @@ -49,3 +49,5 @@ importFrom("stats", "glm", "residuals", "vcov") importFrom("stats", "rbinom", "rexp") importFrom("Rcpp", "sourceCpp") importFrom("adaptMCMC", "MCMC") +importFrom("gglasso", "gglasso") +importFrom("gglasso", "cv.gglasso") diff --git a/selectiveInference/R/funs.full.main.R b/selectiveInference/R/funs.full.main.R index 5047772..375bb03 100644 --- a/selectiveInference/R/funs.full.main.R +++ b/selectiveInference/R/funs.full.main.R @@ -87,7 +87,7 @@ solve_problem_Q = function(Q_sq, Qbeta_bar, lambda, penalty_factor, gradient = gradient/n #solve_QP_wide solves n*slinear_func^T\beta+\beta^T Xinfo\beta+\sum\lambda_i|\beta_i| - result = selectiveInference:::solve_QP_wide(Xinfo, # this is a design matrix + result = solve_QP_wide(Xinfo, # this is a design matrix as.numeric(penalty_factor*lambda), # vector of Lagrange multipliers 0, # ridge_term max_iter, @@ -123,8 +123,7 @@ truncation_set = function(X, y, Qbeta_bar, QE, sigma_est, restricted_soln = solve_restricted_problem(X, y, groups, group, lambda, penalty_factor=penalty_factor, loss=loss, algo=algo) } - #print("restricted soln") - #print(restricted_soln) + n = nrow(X) p = length(Qbeta_bar) I = diag(p) * sigma_est^2 @@ -188,7 +187,7 @@ tnorm.union.surv = function(z, mean, sd, intervals, bits = NULL){ }else if(z >= intervals[jj,2]){ pval[jj,] = 0 }else{ - pval[jj,] = selectiveInference:::tnorm.surv(z, mean, sd, intervals[jj,1], intervals[jj,2], bits = bits) + pval[jj,] = tnorm.surv(z, mean, sd, intervals[jj,1], intervals[jj,2], bits = bits) } } @@ -210,8 +209,8 @@ create_tnorm_interval = function(z, sd, alpha, intervals, gridrange=c(-20,20), g grid = seq(gridrange[1]*sd,gridrange[2]*sd,length=gridpts) fun = function(x) { return(tnorm.union.surv(z, x, sd, intervals, bits)) } - int = selectiveInference:::grid.search(grid, fun, alpha/2, 1-alpha/2, gridpts, griddepth) - #print(int) + int = grid.search(grid, fun, alpha/2, 1-alpha/2, gridpts, griddepth) + return(int) } @@ -223,7 +222,7 @@ selective_CI = function(observed, variance, sigma_est, center, radius, } st.error = sqrt(variance) param_grid = seq(observed+gridrange[1] * st.error, observed+gridrange[2] * st.error, length=gridpts) - interval = selectiveInference:::grid.search(param_grid, pivot, alpha/2, 1-alpha/2, gridpts, griddepth) + interval = grid.search(param_grid, pivot, alpha/2, 1-alpha/2, gridpts, griddepth) return(interval) } @@ -302,7 +301,7 @@ approximate = function(X, active_set){ Xordered = X[,c(active_set,inactive_set,recursive=T)] hsigmaS = 1/n*(t(X_active)%*%X_active) # hsigma[S,S] - hsigmaSinv = ginv(hsigmaS) # generalized inverse solve(hsigmaS) # ginv + hsigmaSinv = solve(hsigmaS) # inverse of hsigma[S,S] FS = rbind(diag(nactive),matrix(0,p-nactive,nactive)) GS = cbind(diag(nactive),matrix(0,nactive,p-nactive)) hsigma = 1/n*(t(Xordered)%*%Xordered) @@ -310,17 +309,13 @@ approximate = function(X, active_set){ if (!is_wide) { hsigma = 1/n*(t(Xordered)%*%Xordered) - htheta = selectiveInference:::debiasingMatrix(hsigma, is_wide, n, 1:nactive) + htheta = debiasingMatrix(hsigma, is_wide, n, 1:nactive) ithetasigma = (GS-(htheta%*%hsigma)) } else { - htheta = selectiveInference:::debiasingMatrix(Xordered, is_wide, n, 1:nactive) + htheta = debiasingMatrix(Xordered, is_wide, n, 1:nactive) ithetasigma = (GS-((htheta%*%t(Xordered)) %*% Xordered)/n) } M_active <- ((htheta%*%t(Xordered))+ithetasigma%*%FS%*%hsigmaSinv%*%t(X_active))/n - #M_inactive = (htheta[, (nactive+1):p]%*%t(X[,inactive_set])/n) - #M=matrix(nrow=p, ncol=n) - #M[active_set, ]= M_active - #M[inactive_set, ]=matrix(0,nrow=length(inactive_set), ncol=n) return(M_active) } diff --git a/selectiveInference/src/.gitignore b/selectiveInference/src/.gitignore new file mode 100644 index 0000000..22034c4 --- /dev/null +++ b/selectiveInference/src/.gitignore @@ -0,0 +1,3 @@ +*.o +*.so +*.dll From b4068160ff1ce5a4528c75e74e7e2dca70ec2b19 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Fri, 30 Mar 2018 08:12:04 -0700 Subject: [PATCH 478/493] removing C code --- selectiveInference/src/debias.h | 79 --- selectiveInference/src/matrixcomps.c | 266 -------- selectiveInference/src/matrixcomps.h | 12 - selectiveInference/src/quadratic_program.c | 441 ------------- .../src/quadratic_program_wide.c | 597 ------------------ selectiveInference/src/randomized_lasso.c | 411 ------------ selectiveInference/src/randomized_lasso.h | 54 -- 7 files changed, 1860 deletions(-) delete mode 100644 selectiveInference/src/debias.h delete mode 100644 selectiveInference/src/matrixcomps.c delete mode 100644 selectiveInference/src/matrixcomps.h delete mode 100644 selectiveInference/src/quadratic_program.c delete mode 100644 selectiveInference/src/quadratic_program_wide.c delete mode 100644 selectiveInference/src/randomized_lasso.c delete mode 100644 selectiveInference/src/randomized_lasso.h diff --git a/selectiveInference/src/debias.h b/selectiveInference/src/debias.h deleted file mode 100644 index da27467..0000000 --- a/selectiveInference/src/debias.h +++ /dev/null @@ -1,79 +0,0 @@ -#ifdef __cplusplus -extern "C" -{ -#endif /* __cplusplus */ - -void multiply_by_2(double *X, int nval); - -int solve_qp(double *nndef_ptr, /* A non-negative definite matrix */ - double *linear_func_ptr, /* Linear term in objective */ - double *nndef_diag_ptr, /* Diagonal of nndef */ - double *gradient_ptr, /* nndef times theta */ - int *ever_active_ptr, /* Ever active set: 1-based */ - int *nactive_ptr, /* Size of ever active set */ - int nfeature, /* How many features in nndef */ - double bound, /* feasibility parameter */ - double *theta, /* current value */ - double *theta_old, /* previous value */ - int maxiter, /* max number of iterations */ - double kkt_tol, /* precision for checking KKT conditions */ - double objective_tol, /* precision for checking relative decrease in objective value */ - double parameter_tol, /* precision for checking relative convergence of parameter */ - int max_active, /* Upper limit for size of active set -- otherwise break */ - int kkt_stop, /* Break based on KKT? */ - int objective_stop, /* Break based on convergence of objective value? */ - int param_stop); /* Break based on parameter convergence? */ - -int check_KKT_qp(double *theta, /* current theta */ - double *gradient_ptr, /* nndef times theta + linear_func */ - int nrow, /* how many rows in nndef */ - double bound, /* Lagrange multipler for \ell_1 */ - double tol); /* precision for checking KKT conditions */ - -int solve_wide(double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX/ncase = nndef */ - double *X_theta_ptr, /* Fitted values */ - double *linear_func_ptr, /* Linear term in objective */ - double *nndef_diag_ptr, /* Diagonal entries of non-neg def matrix */ - double *gradient_ptr, /* X^TX/ncase times theta + linear_func*/ - int *need_update_ptr, /* Keeps track of updated gradient coords */ - int *ever_active_ptr, /* Ever active set: 1-based */ - int *nactive_ptr, /* Size of ever active set */ - int ncase, /* How many rows in X */ - int nfeature, /* How many columns in X */ - double *bound_ptr, /* Lagrange multipliers */ - double ridge_term, /* Ridge / ENet term */ - double *theta_ptr, /* current value */ - double *theta_old_ptr, /* previous value */ - int maxiter, /* max number of iterations */ - double kkt_tol, /* precision for checking KKT conditions */ - double objective_tol, /* precision for checking relative decrease in objective value */ - double parameter_tol, /* precision for checking relative convergence of parameter */ - int max_active, /* Upper limit for size of active set -- otherwise break */ - int kkt_stop, /* Break based on KKT? */ - int objective_stop, /* Break based on convergence of objective value? */ - int param_stop); /* Break based on parameter convergence? */ - -int check_KKT_wide(double *theta_ptr, /* current theta */ - double *gradient_ptr, /* X^TX/ncase times theta + linear_func*/ - double *X_theta_ptr, /* Current fitted values */ - double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX/ncase = nndef */ - double *linear_func_ptr, /* Linear term in objective */ - int *need_update_ptr, /* Which coordinates need to be updated? */ - int nfeature, /* how many columns in X */ - int ncase, /* how many rows in X */ - double *bound_ptr, /* Lagrange multiplers for \ell_1 */ - double ridge_term, /* Ridge / ENet term */ - double tol); /* precision for checking KKT conditions */ - -void update_gradient_wide(double *gradient_ptr, /* X^TX/ncase times theta + linear_func */ - double *X_theta_ptr, /* Current fitted values */ - double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX/ncase = nndef */ - double *linear_func_ptr, /* Linear term in objective */ - int *need_update_ptr, /* Which coordinates need to be updated? */ - int nfeature, /* how many columns in X */ - int ncase); /* how many rows in X */ - - -#ifdef __cplusplus -} /* extern "C" */ -#endif /* __cplusplus */ diff --git a/selectiveInference/src/matrixcomps.c b/selectiveInference/src/matrixcomps.c deleted file mode 100644 index b7e8bbc..0000000 --- a/selectiveInference/src/matrixcomps.c +++ /dev/null @@ -1,266 +0,0 @@ -#include - -// Matrices are stored as vectors, in column-major order - -// Givens rotation of a and b, stored in c and s -void givens(double a, double b, double *c, double *s) { - if (b==0) { - *c = 1; - *s = 0; - } - else { - if (fabs(b)>fabs(a)) { - double t = -a/b; - *s = 1/sqrt(1+t*t); - *c = (*s)*t; - } - else { - double t = -b/a; - *c = 1/sqrt(1+t*t); - *s = (*c)*t; - } - } -} - -// Givens rotation applied to rows i1 and i2 of the m x n -// matrix A, on the subset of columns j1 through j2 -void rowrot(double *A, int i1, int i2, int m, int n, int j1, int j2, double c, double s) { - int j; - double t1,t2; - for (j=j1; j<=j2; j++) { - t1 = A[i1+j*m]; - t2 = A[i2+j*m]; - A[i1+j*m] = c*t1-s*t2; - A[i2+j*m] = s*t1+c*t2; - } -} - -// Givens rotation applied to columns j1 and j2 of the m x n -// matrix A, on the subset of rows i1 through i2 -void colrot(double *A, int j1, int j2, int m, int n, int i1, int i2, double c, double s) { - int i; - double t1,t2; - for (i=i1; i<=i2; i++) { - t1 = A[i+j1*m]; - t2 = A[i+j2*m]; - A[i+j1*m] = c*t1-s*t2; - A[i+j2*m] = s*t1+c*t2; - } -} - -// Downdate the QR factorization after deleting column j0, -// where Q1 is m x n and R is n x n. The other part of -// the Q matrix, Q2 m x (m-n), isn't needed so it isn't -// passed for efficiency -void downdate1(double *Q1, double *R, int j0, int m, int n) { - int j; - - double c,s; - for (j=j0+1; j=1; j--) { - // Compute the appropriate c and s - givens(w[j-1],w[j],&c,&s); - - // Pre-multiply w - rowrot(w,j-1,j,k,1,0,0,c,s); - - // Post-multiply Q2 - colrot(Q2,j-1,j,m,k,0,m-1,c,s); - } -} - -// Downdate the QR factorization after deleting the first row, -// where Q is m x m and R is m x n -void downdate2(double *Q, double *R, int *mp, int *np) { - int m,n,i; - m = *mp; - n = *np; - - double c,s; - for (i=m-1; i>=1; i--) { - // Compute the appropriate c and s - givens(Q[(i-1)*m],Q[i*m],&c,&s); - - // Post-mutiply Q - colrot(Q,i-1,i,m,m,0,m-1,c,s); - - // Pre-multiply R - if (i<=n) rowrot(R,i-1,i,m,n,i-1,n-1,c,s); - } -} - -// Update the QR factorization after adding the last row, -// where Q is m x m and R is m x n. For efficiency, Q is not -// passed, and only the first row of R is passed. Not counting -// its first row, the first q columns of R are zero -void update2(double *y, double *D, double *r, int *mp, int *np, int *qp) { - int m,n,q,j; - m = *mp; - n = *np; - q = *qp; - - double c,s; - for (j=0; j=0; i--) { - for (j=i; j0) { - d = n-m; - } - - double c,s; - for (i=r-k-1; i>=0; i--) { - for (j=i; j=0; i--) { - // Compute the appropriate c and s - givens(R[i+(i+q+1)*m2],R[i+(i+q)*m2],&c,&s); - - // Post-multiply R - colrot(R,i+q+1,i+q,m2,n,0,i,c,s); - - // Post-multiply D - colrot(A,i+q+1,i+q,m1,n,0,m1-1,c,s); - - // Pre-multiply y - rowrot(y,i+q+1,i+q,n,1,0,0,c,s); - } -} - -// Make the R factor upper triangular, by Givens rotating -// its columns and rows, appropriately. Here A is m1 x n, -// Q is m2 x m2, and R is m2 x n with rank(R) = n-q-1. The -// first q columns of R are zero. The kth row of R is the -// last row with a zero element on the diagonal -void maketri4(double *y, double *A, double *Q, double *R, int *m1p, int *m2p, int *np, int *qp, int *kp) { - int m1,m2,n,q,k,i,j; - m1 = *m1p; - m2 = *m2p; - n = *np; - q = *qp; - k = *kp; - - double c,s; - - // First rotate the columns - for (i=k-1; i>=0; i--) { - // Compute the appropriate c and s - givens(R[i+(i+q+1)*m2],R[i+(i+q)*m2],&c,&s); - - // Post-multiply R - colrot(R,i+q+1,i+q,m2,n,0,i,c,s); - - // Post-multiply D - colrot(A,i+q+1,i+q,m1,n,0,m1-1,c,s); - - // Pre-multiply y - rowrot(y,i+q+1,i+q,n,1,0,0,c,s); - } - - // Next rotate the rows - for (j=k+q+1; j // for fabs - -// Find an approximate row of \hat{nndef}^{-1} - -// Solves a dual version of problem (4) of https://arxiv.org/pdf/1306.3171.pdf - -// Dual problem: \text{min}_{\theta} 1/2 \theta^T \Sigma \theta - l^T\theta + \mu \|\theta\|_1 -// where l is `linear_func` below - -// This is the "negative" of the problem as in https://gist.github.com/jonathan-taylor/07774d209173f8bc4e42aa37712339bf -// Therefore we don't have to negate the answer to get theta. -// Update one coordinate - -double objective_qp(double *nndef_ptr, /* A non-negative definite matrix */ - double *linear_func_ptr, /* Linear term in objective */ - int *ever_active_ptr, /* Ever active set: 0-based */ - int *nactive_ptr, /* Size of ever active set */ - int nrow, /* how many rows in nndef */ - double bound, /* Lagrange multipler for \ell_1 */ - double *theta_ptr) /* current value */ -{ - int irow, icol; - double value = 0; - double *nndef_ptr_tmp = nndef_ptr; - double *linear_func_ptr_tmp = linear_func_ptr; - double *theta_row_ptr, *theta_col_ptr; - int *active_row_ptr, *active_col_ptr; - int active_row, active_col; - int nactive = *nactive_ptr; - - theta_row_ptr = theta_ptr; - theta_col_ptr = theta_ptr; - - for (irow=0; irow 0) && (fabs(gradient + bound) > tol * bound)) { - return(0); - } - else if ((*theta_ptr_tmp < 0) && (fabs(gradient - bound) > tol * bound)) { - return(0); - } - } - else { - if (fabs(gradient) > (1. + tol) * bound) { - return(0); - } - } - } - - return(1); -} - -int check_KKT_qp_active(int *ever_active_ptr, /* Ever active set: 0-based */ - int *nactive_ptr, /* Size of ever active set */ - double *theta_ptr, /* current theta */ - double *gradient_ptr, /* nndef times theta + linear_func */ - int nfeature, /* how many features in nndef */ - double bound, /* Lagrange multipler for \ell_1 */ - double tol) /* precision for checking KKT conditions */ -{ - // First check inactive - - int iactive; - double *theta_ptr_tmp; - double gradient; - double *gradient_ptr_tmp; - int nactive = *nactive_ptr; - int active_feature; - int *active_feature_ptr; - - for (iactive=0; iactive 0) && (fabs(gradient + bound) > tol * bound)) { - return(0); - } - else if ((*theta_ptr_tmp < 0) && (fabs(gradient - bound) > tol * bound)) { - return(0); - } - - } - else { - if (fabs(gradient) > (1. + tol) * bound) { - return(0); - } - } - } - - return(1); -} - - -double update_one_coord_qp(double *nndef_ptr, /* A non-negative definite matrix */ - double *linear_func_ptr, /* Linear term in objective */ - double *nndef_diag_ptr, /* Diagonal of nndef */ - double *gradient_ptr, /* nndef times theta + linear_func */ - int *ever_active_ptr, /* Ever active set: 1-based */ - int *nactive_ptr, /* Size of ever active set */ - int nfeature, /* How many features in nndef */ - double bound, /* feasibility parameter */ - double *theta_ptr, /* current value */ - int coord, /* which coordinate to update: 0-based */ - int is_active) /* Is this coord in ever_active */ -{ - - double delta; - double linear_term = 0; - double value = 0; - double old_value; - double *nndef_ptr_tmp; - double *gradient_ptr_tmp; - double *theta_ptr_tmp; - int icol = 0; - - double *quadratic_ptr = ((double *) nndef_diag_ptr + coord); - double quadratic_term = *quadratic_ptr; - - gradient_ptr_tmp = ((double *) gradient_ptr + coord); - linear_term = *gradient_ptr_tmp; - - theta_ptr_tmp = ((double *) theta_ptr + coord); - old_value = *theta_ptr_tmp; - - // The coord entry of gradient_ptr term has a diagonal term in it: - // nndef[coord, coord] * theta[coord] - // This removes it. - - linear_term -= quadratic_term * old_value; - - // Now soft-threshold the coord entry of theta - - // Objective is t \mapsto q/2 * t^2 + l * t + bound |t| - // with q=quadratic_term and l=linear_term - - // With a negative linear term, solution should be - // positive - - if (linear_term < -bound) { - value = (-linear_term - bound) / quadratic_term; - } - else if (linear_term > bound) { - value = -(linear_term - bound) / quadratic_term; - } - - // Add to active set if necessary - - if ((is_active == 0) && (value != 0)) { - update_ever_active_qp(coord, ever_active_ptr, nactive_ptr); - } - - // Update the linear term - - if (fabs(old_value - value) > 1.e-6 * (fabs(value) + fabs(old_value))) { - - delta = value - old_value; - nndef_ptr_tmp = ((double *) nndef_ptr + coord * nfeature); - gradient_ptr_tmp = ((double *) gradient_ptr); - - for (icol=0; icol 0)) { - break; - } - old_value = new_value; - } - - } - - // Check size of active set - - if (*nactive_ptr >= max_active) { - break; - } - - } - return(iter); -} - diff --git a/selectiveInference/src/quadratic_program_wide.c b/selectiveInference/src/quadratic_program_wide.c deleted file mode 100644 index ce7284b..0000000 --- a/selectiveInference/src/quadratic_program_wide.c +++ /dev/null @@ -1,597 +0,0 @@ -#include // for fabs - -// Find an approximate row of \hat{nndef}^{-1} - -// Solves a dual version of problem (4) of https://arxiv.org/pdf/1306.3171.pdf - -// Dual problem: \text{min}_{\theta} 1/2 \|X\theta\|^2/n + l^T\theta + \mu \|\theta\|_1 + \frac{\epsilon}{2} \|\theta\|^2_2 -// where l is `linear_func` below - -// This is the "negative" of the problem as in https://gist.github.com/jonathan-taylor/07774d209173f8bc4e42aa37712339bf -// Therefore we don't have to negate the answer to get theta. -// Update one coordinate - -// Throughout X is a design matrix - -double objective_wide(double *X_theta_ptr, /* Fitted values */ - double *linear_func_ptr, /* Linear term in objective */ - int *ever_active_ptr, /* Ever active set: 0-based */ - int *nactive_ptr, /* Size of ever active set */ - int ncase, /* how many rows in X */ - int nfeature, /* how many columns in X */ - double *bound_ptr, /* Lagrange multiplers for \ell_1 */ - double ridge_term, /* Ridge / ENet term */ - double *theta_ptr) /* current value */ -{ - int icase, iactive; - double value = 0; - double *bound_ptr_tmp; - double *X_theta_ptr_tmp = X_theta_ptr; - double *linear_func_ptr_tmp = linear_func_ptr; - double *theta_ptr_tmp; - int *active_feature_ptr; - int active_feature; - int nactive = *nactive_ptr; - - // The term \|X\theta\|^2_2/n, with n=ncase - - for (icase=0; icase 0) && (fabs(gradient + ridge_term * (*theta_ptr_tmp) + bound) > tol * bound)) { - return(0); - } - else if ((*theta_ptr_tmp < 0) && (fabs(gradient + ridge_term * (*theta_ptr_tmp) - bound) > tol * bound)) { - return(0); - } - - } - else if (bound != 0) { - if (fabs(gradient) > (1. + tol) * bound) { - return(0); - } - } - } - - return(1); -} - -int check_KKT_wide_active(int *ever_active_ptr, /* Ever active set: 0-based */ - int *nactive_ptr, /* Size of ever active set */ - double *theta_ptr, /* current theta */ - double *gradient_ptr, /* X^TX/ncase times theta + linear_func*/ - double *X_theta_ptr, /* Current fitted values */ - double *X_ptr, /* Sqrt of non-neg def matrix -- X^TX/ncase = nndef */ - double *linear_func_ptr, /* Linear term in objective */ - int *need_update_ptr, /* Which coordinates need to be updated? */ - int ncase, /* how many rows in X */ - int nfeature, /* how many columns in X */ - double *bound_ptr, /* Lagrange multipliers for \ell_1 */ - double ridge_term, /* Ridge / ENet term */ - double tol) /* precision for checking KKT conditions */ -{ - // First check inactive - - int iactive; - double *theta_ptr_tmp; - double *bound_ptr_tmp; - double bound; - double gradient; - int nactive = *nactive_ptr; - int active_feature; - int *active_feature_ptr; - - for (iactive=0; iactive 0) && (fabs(gradient + ridge_term * (*theta_ptr_tmp) + bound) > tol * bound)) { - return(0); - } - else if ((*theta_ptr_tmp < 0) && (fabs(gradient + ridge_term * (*theta_ptr_tmp) - bound) > tol * bound)) { - return(0); - } - - } - else if (bound != 0) { - if (fabs(gradient) > (1. + tol) * bound) { - return(0); - } - } - } - - return(1); -} - -double update_one_coord_wide(double *X_ptr, /* A design matrix*/ - double *linear_func_ptr, /* Linear term in objective */ - double *nndef_diag_ptr, /* Diagonal of nndef */ - double *gradient_ptr, /* X^TX/ncase times theta + linear_func*/ - int *ever_active_ptr, /* Ever active set: 1-based */ - int *nactive_ptr, /* Size of ever active set */ - double *X_theta_ptr, /* X\theta -- fitted values */ - int *need_update_ptr, /* Whether a gradient coordinate needs update or not */ - int ncase, /* How many rows in X */ - int nfeature, /* How many rows in X */ - double *bound_ptr, /* Lagrange multipliers */ - double ridge_term, /* Ridge / ENet term */ - double *theta_ptr, /* current value */ - int coord, /* which coordinate to update: 0-based */ - int is_active) /* Is this coord in ever_active */ -{ - - double delta; - double linear_term = 0; - double value = 0; - double old_value; - double *X_ptr_tmp; - double *X_theta_ptr_tmp; - int *need_update_ptr_tmp; - double *theta_ptr_tmp; - double *bound_ptr_tmp; - double bound; - int ifeature, icase; - - double *diagonal_ptr = ((double *) nndef_diag_ptr + coord); - double diagonal_entry = *diagonal_ptr; - - linear_term = compute_gradient_coord(gradient_ptr, X_theta_ptr, X_ptr, linear_func_ptr, need_update_ptr, coord, ncase, nfeature); - - theta_ptr_tmp = ((double *) theta_ptr + coord); - old_value = *theta_ptr_tmp; - - bound_ptr_tmp = ((double *) bound_ptr + coord); - bound = *bound_ptr_tmp; - - // The coord entry of gradient_ptr term has a diagonal term in it: - // (X^TX)[coord, coord] * theta[coord] / ncase - // This removes it. - - linear_term -= diagonal_entry * old_value; - - // Now soft-threshold the coord entry of theta - - // Objective is t \mapsto (q+eps)/2 * t^2 + l * t + bound |t| + - // with q=diagonal_entry and l=linear_term and eps=ridge_Term - - // With a negative linear term, solution should be - // positive - - if (linear_term < -bound) { - value = (-linear_term - bound) / (diagonal_entry + ridge_term); - } - else if (linear_term > bound) { - value = -(linear_term - bound) / (diagonal_entry + ridge_term); - } - - // Add to active set if necessary - - if ((is_active == 0) && (value != 0)) { - update_ever_active_wide(coord, ever_active_ptr, nactive_ptr); - } - - // Update X\theta if changed - - if (fabs(old_value - value) > 1.e-6 * (fabs(value) + fabs(old_value))) { - - // Set the update_gradient_ptr to 1 - - need_update_ptr_tmp = need_update_ptr; - for (ifeature=0; ifeature 0)) { - break; - } - old_value = new_value; - } - } - - // Check size of active set - - if (*nactive_ptr >= max_active) { - break; - } - - } - return(iter); -} - diff --git a/selectiveInference/src/randomized_lasso.c b/selectiveInference/src/randomized_lasso.c deleted file mode 100644 index 5729408..0000000 --- a/selectiveInference/src/randomized_lasso.c +++ /dev/null @@ -1,411 +0,0 @@ -#include // for fabs -#include - -// Augmented density for randomized LASSO after -// Gaussian randomization - -// Described in https://arxiv.org/abs/1609.05609 - -// Gaussian is product of IID N(0, noise_scale^2) density -// Evaluated at A_D D + A_O O + h - -// Laplace is product of IID Laplace with scale noise_scale -// Also evaluated at A_D D + A_O O + h - -// Matrices are assumed in column major order! - -double log_density_gaussian(double noise_scale, // Scale of randomization - int ndim, // Number of features -- "p" - int ninternal, // Dimension of internal data representation often 1 - int noptimization, // Dimension of optimization variables -- "p" - double *internal_linear, // A_D -- linear part for data - double *internal_state, // D -- data state - double *optimization_linear, // A_O -- linear part for optimization variables - double *optimization_state, // O -- optimization state - double *offset) // h -- offset in affine transform -- "p" dimensional -{ - int irow, icol; - double denom = 2 * noise_scale * noise_scale; - double value = 0; - double reconstruction = 0; - double *offset_ptr; - double *internal_linear_ptr; - double *internal_state_ptr; - double *optimization_linear_ptr; - double *optimization_state_ptr; - - for (irow=0; irow Date: Fri, 30 Mar 2018 08:14:25 -0700 Subject: [PATCH 479/493] more rds files --- knockoff.rds | Bin 204 -> 0 bytes liu_full.rds | Bin 3232 -> 0 bytes liu_logistic_full.rds | Bin 1546 -> 0 bytes 3 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 knockoff.rds delete mode 100644 liu_full.rds delete mode 100644 liu_logistic_full.rds diff --git a/knockoff.rds b/knockoff.rds deleted file mode 100644 index 25aad7dc22a9ac7f1a5a30669cef4f63f8836d3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 204 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 diff --git a/liu_logistic_full.rds b/liu_logistic_full.rds deleted file mode 100644 index 13d35adcca774b4cadfcace0b00416a6a519f17b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1546 zcmV+l2KD(LiwFP!000001Km~&G?Zx=o{*yCo)TS;C>P@A+@{ zAA!$-{VR)(Wy}ck-s5One_)JqUjo`%6YP24dY~n{$o8i^2eg?)`dD~RfJm3lHd5aR zQL@gJACfH5X1VI;s^_KXuzOjnr51}0qdC0Va%;i}&c@LA9RIcTU()-W?w9&}$~~F5L%?^N8#6B?7j2bfBd+pTG-l6C$UOE8{K)o{o%WN#Q!0;XU6%`C_dTPy75d=y z8n19(egx^9+MIObLNt=jTGRB@@!Y-KB*V`S4QjX8@@rWTsR?rACkfEdC{oFv>;i#c z_lA3il2DO+cDjY6IqIbjG?Ay7qtfGz)}qP+Jm0oe;BOoW9y?AdWR?~3lH~;4S|+lb zx}30D5&3$SrzB7WcIy+G9^@kE#yBeQUni%yC4B9_z+ilcu0{!8VDN=s?3u zLBy6FNocmxC_QYY58;K|XB1iJjSF>4)aA4)w})4rowPoKqx!92q9*(H6_upZ19sf2)OUS1}&^Xjql; zsuP7inWtF46yrn=U3GhV5W*(PE?V%m1@%rTD@kkZaZRJ}&Y7Mlu-9w9D$eo5z6H|R z`VaNMtzd_=)hvPUl{bmAR0+8JFnGJ$#px(Y;5K?L4Ma#*iFWeBG@Of9`VHrlaVsIw z?xe~Mc#J-0Wi9g*={4hJdctR;WM)Fw!ddaiQ#l!PFiHkFojTKfmi8br=uzkW(M;Sd zvQL`zCJKqy*X?hdtAG?*+H1@CO^A>>-}_p}6|6vuBl+s~$atc#a6W4(qMv3<@0!a* z_Hu_BPw7cGIxo`Kad8r2(wz$G%V>x%RaLRLpa@oV)TMExySOo9)4C1U2w;t;9wM%c z0*ByB;Ol7OR&{HD>GxI0dS)O{dtd{0By|qkfR3DLI}|rI+{UqmRXr&jCUVyt9J9$b z5XG8GcQp(3krtX-6n@YNXH5I1CU!B=v_{5TGi*2F;{5Cky|&_-u360Ct5IONnpK>y zl0mxR(!A?x=15rVUt=0g#HBos&E4(<6mza;Y|u!-CAOAs zh=^dNumZ2AGRVrz%8e%xaXt0)otlaDxM(NJ+aqKmUZd{NT2dE|+7a6_7^A>`df@bf zJ*r?+_s0uLULaFb-}IPq4N|L2RW=0_;eLz3#$Fon(>*oJ`)&mBUiTkY{h&LFXgdTu z55YQvG0Ms**OrKOit!(EQWEd66hWqc9!(>=QW*V-0%71M{R1h-piu3cX&w~!y<{rm z&*Uz*y%cw{BSlP(8z89^nxlu4n3AWFo%d4yQvQ)1Dj@fP9xO42-e0(9=$gT#>}oS> wI|kX6PNjTg#?#&QQQQY}qiEuUE>6S(k_?)=ICXb&>!1352Ty0~=(-F50Bx)m-~a#s From 97f87e04f4837fff36f073cff2d6db11db263a52 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Fri, 30 Mar 2018 08:23:50 -0700 Subject: [PATCH 480/493] using Q_sq NULL arg --- selectiveInference/R/funs.full.main.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/selectiveInference/R/funs.full.main.R b/selectiveInference/R/funs.full.main.R index 7d63b6d..c7f37c1 100644 --- a/selectiveInference/R/funs.full.main.R +++ b/selectiveInference/R/funs.full.main.R @@ -113,11 +113,11 @@ solve_problem_Q = function(Q_sq, Qbeta_bar, lambda, penalty_factor, truncation_set = function(X, y, Qbeta_bar, QE, sigma_est, target_stat, target_cov, group, groups, active_vars, - lambda, penalty_factor, loss, algo){ + lambda, penalty_factor, loss, algo, Q_sq=NULL){ if (algo=="Q"){ penalty_factor_rest = rep(penalty_factor) - penalty_factor_rest[group] = 10^10 + penalty_factor_rest[group] = 10^10 * penalty_factor restricted_soln = solve_problem_Q(Q_sq, Qbeta_bar, lambda, penalty_factor=penalty_factor_rest) } else { restricted_soln = solve_restricted_problem(X, y, groups, group, lambda, penalty_factor=penalty_factor, From cfb70446955ac9d3f4a1146315d58a6f01f2da9c Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Fri, 30 Mar 2018 08:25:26 -0700 Subject: [PATCH 481/493] adding line about testing --- README.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 11770b5..c681eb1 100644 --- a/README.md +++ b/README.md @@ -28,4 +28,12 @@ You will have to run ``` make Rcpp -``` \ No newline at end of file +``` + +## To test + +``` +make check +``` + +These tests are also run on [travis](http://travis-ci.org) based on .travis.yml setup. \ No newline at end of file From a0b732fb0df8eb2d0d2c26f7d41d39a7d5092e30 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Fri, 30 Mar 2018 08:33:32 -0700 Subject: [PATCH 482/493] deleting test scripts --- tests/comparisons/big uncorr/params.txt | 3 - tests/comparisons/compare_FDR_power.R | 17 --- tests/comparisons/plot_coverages.R | 63 -------- tests/comparisons/read_files.R | 59 -------- tests/comparisons/small corr/params.txt | 0 tests/comparisons/small uncorr/params.txt | 0 tests/knockoffs/cluster.R | 13 -- tests/knockoffs/single_R_run.sbatch | 39 ----- tests/knockoffs/submit_R_jobs.sh | 13 -- tests/knockoffs/test_knockoffs.R | 72 --------- tests/lee_high_dim_full/cluster.R | 11 -- tests/lee_high_dim_full/single_R_run.sbatch | 38 ----- tests/lee_high_dim_full/submit_R_jobs.sh | 10 -- tests/lee_high_dim_full/test_lee_full.R | 92 ------------ tests/liu_high_dim_full/cluster.R | 11 -- tests/liu_high_dim_full/single_R_run.sbatch | 38 ----- tests/liu_high_dim_full/submit_R_jobs.sh | 10 -- .../liu_high_dim_full/test_linear_contrasts.R | 108 -------------- tests/liu_high_dim_full/test_liu_full.R | 100 ------------- tests/liu_high_dim_full/test_logistic.R | 107 -------------- tests/real_data_analysis/estimate_sigma.R | 30 ---- tests/real_data_analysis/real_data_analysis.R | 137 ------------------ tests/real_data_analysis/single_R_run.sbatch | 38 ----- tests/real_data_analysis/submit_R_jobs.sh | 21 --- 24 files changed, 1030 deletions(-) delete mode 100644 tests/comparisons/big uncorr/params.txt delete mode 100644 tests/comparisons/compare_FDR_power.R delete mode 100644 tests/comparisons/plot_coverages.R delete mode 100644 tests/comparisons/read_files.R delete mode 100644 tests/comparisons/small corr/params.txt delete mode 100644 tests/comparisons/small uncorr/params.txt delete mode 100644 tests/knockoffs/cluster.R delete mode 100644 tests/knockoffs/single_R_run.sbatch delete mode 100644 tests/knockoffs/submit_R_jobs.sh delete mode 100644 tests/knockoffs/test_knockoffs.R delete mode 100644 tests/lee_high_dim_full/cluster.R delete mode 100644 tests/lee_high_dim_full/single_R_run.sbatch delete mode 100644 tests/lee_high_dim_full/submit_R_jobs.sh delete mode 100644 tests/lee_high_dim_full/test_lee_full.R delete mode 100644 tests/liu_high_dim_full/cluster.R delete mode 100644 tests/liu_high_dim_full/single_R_run.sbatch delete mode 100644 tests/liu_high_dim_full/submit_R_jobs.sh delete mode 100644 tests/liu_high_dim_full/test_linear_contrasts.R delete mode 100644 tests/liu_high_dim_full/test_liu_full.R delete mode 100644 tests/liu_high_dim_full/test_logistic.R delete mode 100644 tests/real_data_analysis/estimate_sigma.R delete mode 100644 tests/real_data_analysis/real_data_analysis.R delete mode 100644 tests/real_data_analysis/single_R_run.sbatch delete mode 100644 tests/real_data_analysis/submit_R_jobs.sh diff --git a/tests/comparisons/big uncorr/params.txt b/tests/comparisons/big uncorr/params.txt deleted file mode 100644 index dca935c..0000000 --- a/tests/comparisons/big uncorr/params.txt +++ /dev/null @@ -1,3 +0,0 @@ -n=1000, p=2000, rho=0, -snr = sqrt(2*log(p)/n) -nrep=100 \ No newline at end of file diff --git a/tests/comparisons/compare_FDR_power.R b/tests/comparisons/compare_FDR_power.R deleted file mode 100644 index 2349d22..0000000 --- a/tests/comparisons/compare_FDR_power.R +++ /dev/null @@ -1,17 +0,0 @@ -lee = readRDS(file="lee.rds") -liu = readRDS(file="liu.rds") -kn = readRDS(file="knockoff.rds") -kn_plus = readRDS(file="knockoff+.rds") -randomized_full=readRDS(file="randomized_full.rds") -randomized_partial=readRDS(file="randomized_partial.rds") - - -table = matrix(c(mean(lee$FDR_sample), mean(lee$power_sample), - mean(liu$FDR_sample), mean(liu$power_sample), - mean(kn$FDR_sample), mean(kn$power_sample), - mean(kn_plus$FDR_sample), mean(kn_plus$power_sample), - mean(randomized_full$FDR_sample), mean(randomized_full$power_sample), - mean(randomized_partial$FDR_sample), mean(randomized_partial$power_sample)), ncol=2, byrow=TRUE) -colnames(table)=c("FDR", "power") -rownames(table)=c("Lee", "Liu", "knockoff", "knockoff+", "randomized full", "randomized partial") -table diff --git a/tests/comparisons/plot_coverages.R b/tests/comparisons/plot_coverages.R deleted file mode 100644 index a73e5d7..0000000 --- a/tests/comparisons/plot_coverages.R +++ /dev/null @@ -1,63 +0,0 @@ - -lee = readRDS(file="lee.rds") -liu = readRDS(file="liu.rds") -rand_full=readRDS(file="randomized_full.rds") -rand_partial=readRDS(file="randomized_partial.rds") - -n=lee$n -p=lee$p -s=lee$s -snr=lee$snr -rho=lee$rho - -lee_cov = mean(lee$sel_coverages) -lee_len = median(lee$sel_lengths) - -liu_cov=mean(liu$sel_coverages) -liu_len=median(liu$sel_lengths) - -naive_cov = mean(liu$naive_coverages) -naive_len=median(liu$naive_lengths) - -rand_full_cov = mean(rand_full$sel_coverages) -rand_full_len = median(rand_full$sel_lengths) - -rand_partial_cov=mean(rand_partial$sel_coverages) -rand_partial_len=median(rand_partial$sel_lengths) - -ninf_lee = length(which(lee$sel_lengths==Inf))/length(lee$sel_lengths) -ninf_liu = length(which(liu$sel_lengths==Inf))/length(liu$sel_lengths) -c(ninf_lee, ninf_liu) - -labels = rep("",5) -labels[1] = paste("len: ", round(lee_len,2), ", cov: ", round(lee_cov,2), ", ninf: ", round(ninf_lee,2), sep = "") -labels[2] = paste("len: ", round(liu_len,2), ", cov: ", round(liu_cov,2), ", ninf: ", round(ninf_liu,2), sep = "") -labels[3] = paste("len: ", round(naive_len,2), ", cov: ", round(naive_cov,2), sep = "") -labels[4] = paste("len: ", round(rand_full_len,2), ", cov: ", round(rand_full_cov,2), sep = "") -labels[5] = paste("len: ", round(rand_partial_len,2), ", cov: ", round(rand_partial_cov,2), sep = "") - - -title = paste("n=", n,", p=", p, ", s=", s, ", signal=", round(snr,2), ", rho=", rho, sep = "") - -boxplot(lee$sel_lengths[which(lee$sel_lengths!=Inf)], liu$sel_lengths, liu$naive_lengths, - rand_full$sel_lengths, rand_partial$sel_lengths, - at = seq(1,11,2.5) - 0.25, col = "pink", las = 2, outline = F, - names = c("Lee \n (full)", "Liu \n (full)", "naive", "rand \n (full)", "rand \n (partial)"), - boxwex = 0.6, range = 0.5, - log="x", horizontal = T, xlim = c(0,12.5), cex.axis = 1) - -title(title, cex.main = 1, font.main = 1, line = 0.2) -text(labels = labels, x = c(lee_len, liu_len, naive_len, rand_full_len,rand_partial_len)+0.05, y = seq(1,11,2.5) + 0.5, cex = 1) - - - - -plot(ecdf(lee$pvalues), xlab="values", ylab="Empirical cdf", main="Selective pvalues", - col="red") -lines(ecdf(liu$pvalues), col="blue") -abline(c(0,1)) -legend("bottomright", legend=c("Lee et al", "Liu et al"), - col=c("red", "blue"), lty=1:1, cex=1.5) - - - diff --git a/tests/comparisons/read_files.R b/tests/comparisons/read_files.R deleted file mode 100644 index e5845a8..0000000 --- a/tests/comparisons/read_files.R +++ /dev/null @@ -1,59 +0,0 @@ -result.path = "/Users/Jelena/Documents/collect_cluster_results/full/" -setwd(result.path) - -#method="liu" -#method="lee" -#method="knockoff_result" -#method="knockoff+_result" -#method="randomized_full" -#method="randomized_partial" - -txt_files = list.files(pattern = paste(method, "*", sep="")) - -i = 0 - -pvalues = NULL -sel_intervals=NULL -sel_coverages=NULL -sel_lengths=NULL -naive_pvalues = NULL -naive_intervals=NULL -naive_coverages=NULL -naive_lengths=NULL -FDR_sample = NULL -power_sample=NULL - -for (file in txt_files){ - result=readRDS(file) - pvalues=c(pvalues, result$pvalues) - sel_intervals=c(sel_intervals, result$sel_intervals) - sel_coverages=c(sel_coverages, result$sel_coverages) - sel_lengths=c(sel_lengths, result$sel_lengths) - naive_pvalues=c(naive_pvalues, result$naive_pvalues) - naive_intervals=c(naive_intervals, result$naive_intervals) - naive_coverages=c(naive_coverages, result$naive_coverages) - naive_lengths=c(naive_lengths, result$naive_lengths) - FDR_sample=c(FDR_sample, result$FDR_sample) - power_sample=c(power_sample, result$power_sample) - n=result$n - p=result$p - s=result$s - rho=result$rho - snr=result$snr - i=i+1 -} - -print(i) - -setwd("/Users/Jelena/GitHub Jelena/R-selective/tests/comparisons/") - -saveRDS(list(pvalues=pvalues, - sel_intervals=sel_intervals, sel_coverages=sel_coverages, sel_lengths=sel_lengths, - naive_pvalues=naive_pvalues, - naive_intervals=naive_intervals, naive_coverages=naive_coverages, naive_lengths=naive_lengths, - n=n, p=p, s=s, rho=rho, snr=snr, - FDR_sample=FDR_sample, power_sample=power_sample), file=paste(method,".rds", sep="")) - - - - diff --git a/tests/comparisons/small corr/params.txt b/tests/comparisons/small corr/params.txt deleted file mode 100644 index e69de29..0000000 diff --git a/tests/comparisons/small uncorr/params.txt b/tests/comparisons/small uncorr/params.txt deleted file mode 100644 index e69de29..0000000 diff --git a/tests/knockoffs/cluster.R b/tests/knockoffs/cluster.R deleted file mode 100644 index 178114e..0000000 --- a/tests/knockoffs/cluster.R +++ /dev/null @@ -1,13 +0,0 @@ -setwd(getwd()) -source("test_knockoffs.R") - -args = commandArgs(trailingOnly=TRUE) -seed = round(as.numeric(args[1])) -type=toString(args[2]) - -outdir = "/scratch/users/jelenam/full/" -label=paste(type,"_result_", sep="") -outfile = file.path(outdir, paste(sep="",label, toString(seed), ".rda")) - -test_knockoffs(seed, outfile, method=type) - diff --git a/tests/knockoffs/single_R_run.sbatch b/tests/knockoffs/single_R_run.sbatch deleted file mode 100644 index c3440b1..0000000 --- a/tests/knockoffs/single_R_run.sbatch +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash -# -#all commands that start with SBATCH contain commands that are just used by SLURM for scheduling -################# -#set a job name -#SBATCH --job-name=job -################# -#a file for job output, you can check job progress, append the job ID with %j to make it unique -#SBATCH --output=jobs/%j.out -################# -# a file for errors from the job -#SBATCH --error=jobs/%j.err -################# -#time you think you need; default is 2 hours -#format could be dd-hh:mm:ss, hh:mm:ss, mm:ss, or mm -#SBATCH --time=10:00:00 -################# -#SBATCH --qos=normal -#SBATCH -p normal -################# -#number of nodes you are requesting, the more you ask for the longer you wait -#SBATCH --nodes=1 -################# -#SBATCH --mem=32000 - -# You can use srun if your job is parallel -#srun R CMD BATCH ./rtest.R -# otherwise: - -SEED=$1 -type=$2 - -# cd to program directory -cd /home/users/jelenam/R-selective/tests/knockoffs - -module load R/3.4.0 - -Rscript cluster.R $SEED $type - diff --git a/tests/knockoffs/submit_R_jobs.sh b/tests/knockoffs/submit_R_jobs.sh deleted file mode 100644 index 0729d58..0000000 --- a/tests/knockoffs/submit_R_jobs.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -# Setup bash job headers - -# load local environment - -type1=knockoff -type2=knockoff+ - -for i in {1..10} -do - sbatch single_R_run.sbatch $i $type1 - sbatch single_R_run.sbatch $i $type2 -done \ No newline at end of file diff --git a/tests/knockoffs/test_knockoffs.R b/tests/knockoffs/test_knockoffs.R deleted file mode 100644 index 0536d64..0000000 --- a/tests/knockoffs/test_knockoffs.R +++ /dev/null @@ -1,72 +0,0 @@ -library(knockoff) - -compute.knockoff = function(data, method, q=0.2, model.free=TRUE){ - - X=data$X - y=data$y - n = nrow(X) - - true.nonzero = which(data$beta!=0) - s=length(true.nonzero) - offset=0 - if (method=="knockoff+"){ - offset=1 - } - - if (model.free==TRUE){ - filter = knockoff.filter(X, y, fdr=q, offset=offset) - } else{ - filter = knockoff.filter(X, y, knockoffs = create.fixed, fdr=q, offset=offset) - } - - rejected = filter$selected - nrejected = length(rejected) - TP = length(intersect(rejected, true.nonzero)) - power = TP/s - FDR = (nrejected-TP)/max(1, nrejected) - - return(list(rejected=rejected, - power=power, - FDR=FDR, - nrejected = nrejected)) -} - - - -test_knockoffs = function(seed=1, outfile=NULL, method = "knockoff", - nrep=10, n=100, p=200, s=10, rho=0.){ - - snr = 4*sqrt(2*log(p)/n) - - set.seed(seed) - - FDR_sample = NULL - power_sample=NULL - - for (i in 1:nrep){ - #data = selectiveInference:::gaussian_instance(n=n, p=p, s=s, rho=rho, sigma=1, snr=snr) - data = selectiveInference:::logistic_instance(n=n, p=p, s=s, rho=rho, sigma=1, snr=snr) - - cat("true nonzero:", which(data$beta!=0), "\n") - - mc = compute.knockoff(data, method=method) - FDR_sample=c(FDR_sample, mc$FDR) - power_sample=c(power_sample, mc$power) - - if (length(FDR_sample)>0){ - print(c("FDR:", mean(FDR_sample))) - print(c("power:", mean(power_sample))) - } - } - - if (is.null(outfile)){ - outfile=paste(method, ".rds", sep="") - } - - saveRDS(list(FDR_sample=FDR_sample, power_sample=power_sample, - n=n,p=p, s=s, snr=snr, rho=rho), file=outfile) - - return(list(FDR_sample=FDR_sample, power_sample=power_sample)) -} - -test_knockoffs() diff --git a/tests/lee_high_dim_full/cluster.R b/tests/lee_high_dim_full/cluster.R deleted file mode 100644 index 892ff47..0000000 --- a/tests/lee_high_dim_full/cluster.R +++ /dev/null @@ -1,11 +0,0 @@ -setwd(getwd()) -source("test_lee_full.R") - -args = commandArgs(trailingOnly=TRUE) -seed = round(as.numeric(args[1])) - -outdir = "/scratch/users/jelenam/full/" -outfile = file.path(outdir, paste(sep="","lee_result_", toString(seed), ".rda")) - -test_lee_full(seed, outfile) - diff --git a/tests/lee_high_dim_full/single_R_run.sbatch b/tests/lee_high_dim_full/single_R_run.sbatch deleted file mode 100644 index d3d3d45..0000000 --- a/tests/lee_high_dim_full/single_R_run.sbatch +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash -# -#all commands that start with SBATCH contain commands that are just used by SLURM for scheduling -################# -#set a job name -#SBATCH --job-name=job -################# -#a file for job output, you can check job progress, append the job ID with %j to make it unique -#SBATCH --output=jobs/%j.out -################# -# a file for errors from the job -#SBATCH --error=jobs/%j.err -################# -#time you think you need; default is 2 hours -#format could be dd-hh:mm:ss, hh:mm:ss, mm:ss, or mm -#SBATCH --time=5:00:00 -################# -#SBATCH --qos=normal -#SBATCH -p normal -################# -#number of nodes you are requesting, the more you ask for the longer you wait -#SBATCH --nodes=1 -################# -#SBATCH --mem=16000 - -# You can use srun if your job is parallel -#srun R CMD BATCH ./rtest.R -# otherwise: - -SEED=$1 - -# cd to program directory -cd /home/users/jelenam/R-selective/tests/lee_high_dim_full - -module load R/3.4.0 - -Rscript cluster.R $SEED - diff --git a/tests/lee_high_dim_full/submit_R_jobs.sh b/tests/lee_high_dim_full/submit_R_jobs.sh deleted file mode 100644 index 4d4b4a1..0000000 --- a/tests/lee_high_dim_full/submit_R_jobs.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -# Setup bash job headers - -# load local environment - - -for i in {1..10} -do - sbatch single_R_run.sbatch $i -done \ No newline at end of file diff --git a/tests/lee_high_dim_full/test_lee_full.R b/tests/lee_high_dim_full/test_lee_full.R deleted file mode 100644 index f955d52..0000000 --- a/tests/lee_high_dim_full/test_lee_full.R +++ /dev/null @@ -1,92 +0,0 @@ -library(selectiveInference) -library(glmnet) - -# testing Lee et al type=full in high dimensional settings -- uses debiasing matrix - -test_lee_full = function(seed=1, outfile=NULL, nrep=1, n=1000, p=10000, s=50, rho=0.){ - - snr = sqrt(2*log(p)/n) - - set.seed(seed) - loss="ls" - construct_ci=TRUE - penalty_factor = rep(1, p) - - pvalues = NULL - sel_intervals=NULL - sel_coverages=NULL - sel_lengths=NULL - - FDR_sample = NULL - power_sample=NULL - - for (i in 1:nrep){ - data = selectiveInference:::gaussian_instance(n=n, p=p, s=s, rho=rho, sigma=1, snr=snr) - X=data$X - y=data$y - beta=data$beta - cat("true nonzero:", which(beta!=0), "\n") - - CV = cv.glmnet(X, y, standardize=FALSE, intercept=FALSE, family=selectiveInference:::family_label(loss)) - - #sigma_est=selectiveInference:::estimate_sigma(X,y,coef(CV, s="lambda.min")[-1]) # sigma via Reid et al. - #print(c("sigma est", sigma_est)) - sigma_est=1 - - # lambda = CV$lambda[which.min(CV$cvm+rnorm(length(CV$cvm))/sqrt(n))] # lambda via randomized cv - lambda = 0.8*selectiveInference:::theoretical.lambda(X, loss, sigma_est) # theoretical lambda - - lasso = glmnet(X, y, family=selectiveInference:::family_label(loss), alpha=1, standardize=FALSE, intercept=FALSE, thresh=1e-12) - soln = as.numeric(coef(lasso,x=X,y=y, family=selectiveInference:::family_label(loss), s=lambda, exact=TRUE))[-1] - - PVS = selectiveInference:::fixedLassoInf(X,y,soln, intercept=FALSE, lambda*n, family=selectiveInference:::family_label(loss), - type="full",sigma=sigma_est) - - abs_soln = abs(soln) - beta_threshold = abs_soln[order(abs_soln,decreasing=TRUE)][length(PVS$pv)] - active_vars = which(abs_soln>=beta_threshold) - cat("nactive:", length(active_vars), "\n") - cat("active vars:", active_vars, "\n") - - pvalues = c(pvalues, PVS$pv) - sel_intervals = cbind(sel_intervals, t(PVS$ci)) - - if (length(pvalues)>0){ - plot(ecdf(pvalues)) - abline(0,1) - } - - if (construct_ci && length(active_vars)>0){ - sel_coverages=c(sel_coverages, selectiveInference:::compute_coverage(t(PVS$ci), beta[active_vars])) - sel_lengths=c(sel_lengths, as.vector(PVS$ci[,2]-PVS$ci[,1])) - print(c("selective coverage:", mean(sel_coverages))) - print(c("selective length mean:", mean(sel_lengths))) - print(c("selective length median:", median(sel_lengths))) - } - - mc = selectiveInference:::selective.plus.BH(beta, active_vars, PVS$pv, q=0.2) - FDR_sample=c(FDR_sample, mc$FDR) - power_sample=c(power_sample, mc$power) - - if (length(FDR_sample)>0){ - print(c("FDR:", mean(FDR_sample))) - print(c("power:", mean(power_sample))) - } - } - - if (is.null(outfile)){ - outfile="lee_full.rds" - } - - saveRDS(list(sel_intervals=sel_intervals, sel_coverages=sel_coverages, sel_lengths=sel_lengths, - pvalues=pvalues, - FDR_sample=FDR_sample, power_sample=power_sample, - n=n, p=p, s=s, snr=snr, rho=rho), file=outfile) - - return(list(pvalues=pvalues)) -} - -#test_lee_full() - - - diff --git a/tests/liu_high_dim_full/cluster.R b/tests/liu_high_dim_full/cluster.R deleted file mode 100644 index 4605ee9..0000000 --- a/tests/liu_high_dim_full/cluster.R +++ /dev/null @@ -1,11 +0,0 @@ -setwd(getwd()) -source("test_liu_full.R") - -args = commandArgs(trailingOnly=TRUE) -seed = round(as.numeric(args[1])) - -outdir = "/scratch/users/jelenam/full/" -outfile = file.path(outdir, paste(sep="","liu_result_", toString(seed), ".rda")) - -test_liu_full(seed, outfile) - diff --git a/tests/liu_high_dim_full/single_R_run.sbatch b/tests/liu_high_dim_full/single_R_run.sbatch deleted file mode 100644 index 0ae7ce7..0000000 --- a/tests/liu_high_dim_full/single_R_run.sbatch +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash -# -#all commands that start with SBATCH contain commands that are just used by SLURM for scheduling -################# -#set a job name -#SBATCH --job-name=job -################# -#a file for job output, you can check job progress, append the job ID with %j to make it unique -#SBATCH --output=jobs/%j.out -################# -# a file for errors from the job -#SBATCH --error=jobs/%j.err -################# -#time you think you need; default is 2 hours -#format could be dd-hh:mm:ss, hh:mm:ss, mm:ss, or mm -#SBATCH --time=5:00:00 -################# -#SBATCH --qos=normal -#SBATCH -p normal -################# -#number of nodes you are requesting, the more you ask for the longer you wait -#SBATCH --nodes=1 -################# -#SBATCH --mem=16000 - -# You can use srun if your job is parallel -#srun R CMD BATCH ./rtest.R -# otherwise: - -SEED=$1 - -# cd to program directory -cd /home/users/jelenam/R-selective/tests/liu_high_dim_full - -module load R/3.4.0 - -Rscript cluster.R $SEED - diff --git a/tests/liu_high_dim_full/submit_R_jobs.sh b/tests/liu_high_dim_full/submit_R_jobs.sh deleted file mode 100644 index 4d4b4a1..0000000 --- a/tests/liu_high_dim_full/submit_R_jobs.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -# Setup bash job headers - -# load local environment - - -for i in {1..10} -do - sbatch single_R_run.sbatch $i -done \ No newline at end of file diff --git a/tests/liu_high_dim_full/test_linear_contrasts.R b/tests/liu_high_dim_full/test_linear_contrasts.R deleted file mode 100644 index e3bee64..0000000 --- a/tests/liu_high_dim_full/test_linear_contrasts.R +++ /dev/null @@ -1,108 +0,0 @@ -library(gglasso) -library(MASS) -library(selectiveInference) -library(glmnet) -#.libPaths("/Users/Jelena/anaconda/lib/R/library") -#.libPaths("/Library/Frameworks/R.framework/Versions/3.4/Resources/library") -#source("/Users/Jelena/GitHub Jelena/full/code/group_lasso_fns.R") - - -gaussian_instance = function(n, p, s, sigma=1, rho=0, snr=7, - random_signs=TRUE, scale=FALSE, center=FALSE){ - X = sqrt(1-rho)*matrix(rnorm(n*p),n) + sqrt(rho)*matrix(rep(rnorm(n), p), nrow = n) - if (scale==TRUE){ - X = scale(X) - X = X/sqrt(n) - } - beta = rep(0, p) - beta[1:s]=snr - if (random_signs==TRUE && s>0){ - signs = sample(c(-1,1), s, replace = TRUE) - beta[1:s] = beta[1:s] * signs - } - beta=sample(beta) - y = X %*% beta + rnorm(n)*sigma - result <- list(X=X,y=y,beta=beta) - return(result) -} - - -test_group_lasso = function(nrep=10){ - - set.seed(1) - loss="ls" - construct_ci=TRUE - n=500 - p=100 - s=10 - ngroups=50 - lambda=60/n - snr=0.3 - groups = rep(1:ngroups,each=p/ngroups) - group_sizes = rep(p/ngroups,ngroups) - penalty_factor = rep(1, length(group_sizes)) - - - pvalues = NULL - naive_pvalues = NULL - sel_intervals=NULL - naive_intervals=NULL - sel_coverages=NULL - naive_coverages=NULL - sel_lengths=NULL - naive_lengths=NULL - - - for (i in 1:nrep){ - data = gaussian_instance(n,p,s, snr=snr) - X=data$X - y=data$y - beta=data$beta - #print("beta") - #print(which(beta!=0)) - CV = cv.glmnet(X, y, standardize=FALSE, intercept=FALSE, family=selectiveInference:::family_label(loss)) - sigma_est=selectiveInference:::estimate_sigma(X,y, coef(CV, s="lambda.min")[-1]) - print(c("sigma est", sigma_est)) - - soln = selectiveInference:::solve_problem_gglasso(X, y, groups, lambda, penalty_factor=penalty_factor, loss=loss) - PVS = selectiveInference:::inference_group_lasso(X,y, soln,groups, lambda=lambda, penalty_factor=penalty_factor, - sigma_est=sigma_est, loss=loss, algo="glmnet", construct_ci = construct_ci) - - active_vars = PVS$active_vars - print("active_vars") - print(active_vars) - null_active_vars = match(which(beta==0), active_vars) - null_active_vars = null_active_vars[!is.na(null_active_vars)] - print("null_active_vars") - print(null_active_vars) - - if (length(null_active_vars)>0){ - print(PVS$pvalues) - print(PVS$pvalues[null_active_vars]) - print(PVS$naive_pvalues[null_active_vars]) - pvalues = c(pvalues, PVS$pvalues[null_active_vars]) - naive_pvalues = c(naive_pvalues, PVS$naive_pvalues[null_active_vars]) - plot(ecdf(pvalues)) - lines(ecdf(naive_pvalues), col="red") - abline(0,1) - } - - if (construct_ci && length(active_vars)>0){ - - sel_coverages=c(sel_coverages, selectiveInference:::compute_coverage(PVS$sel_intervals, beta[active_vars])) - naive_coverages=c(naive_coverages, selectiveInference:::compute_coverage(PVS$naive_intervals, beta[active_vars])) - sel_lengths=c(sel_lengths, mean(PVS$sel_intervals[2,]-PVS$sel_intervals[1,])) - naive_lengths=c(naive_lengths, mean(PVS$naive_intervals[2,]-PVS$naive_intervals[1,])) - print(c("selective covarage:", mean(sel_coverages))) - print(c("naive coverage:", mean(naive_coverages))) - print(c("selective length:", mean(sel_lengths))) - print(c("naive length:", mean(naive_lengths))) - } - - } - - return(list(pvalues=pvalues, naive_pvalues=naive_pvalues)) -} - - -test_group_lasso() diff --git a/tests/liu_high_dim_full/test_liu_full.R b/tests/liu_high_dim_full/test_liu_full.R deleted file mode 100644 index 3f75937..0000000 --- a/tests/liu_high_dim_full/test_liu_full.R +++ /dev/null @@ -1,100 +0,0 @@ -library(gglasso) -library(MASS) -library(selectiveInference) -library(glmnet) - -# testing Liu et al type=full in high dimensional settings -- uses debiasing matrix - -test_liu_full = function(seed=1, outfile=NULL, nrep=1, n=100, p=200, s=20, rho=0.){ - - snr = sqrt(2*log(p)/n) - - set.seed(seed) - loss="ls" - construct_ci=TRUE - penalty_factor = rep(1, p) - - pvalues = NULL - sel_intervals=NULL - sel_coverages=NULL - sel_lengths=NULL - naive_pvalues = NULL - naive_intervals=NULL - naive_coverages=NULL - naive_lengths=NULL - - FDR_sample = NULL - power_sample=NULL - - for (i in 1:nrep){ - data = selectiveInference:::gaussian_instance(n=n, p=p, s=s, rho=rho, sigma=1, snr=snr) - X=data$X - y=data$y - beta=data$beta - cat("true nonzero:", which(beta!=0), "\n") - - # CV = cv.glmnet(X, y, standardize=FALSE, intercept=FALSE, family=selectiveInference:::family_label(loss)) - # sigma_est=selectiveInference:::estimate_sigma(X,y,coef(CV, s="lambda.min")[-1]) # sigma via Reid et al. - sigma_est=1 - print(c("sigma est", sigma_est)) - - # lambda = CV$lambda[which.min(CV$cvm+rnorm(length(CV$cvm))/sqrt(n))] # lambda via randomized cv - lambda = 0.8*selectiveInference:::theoretical.lambda(X, loss, sigma_est) # theoretical lambda - print(c("lambda", lambda)) - - soln = selectiveInference:::solve_problem_glmnet(X, y, lambda, penalty_factor=penalty_factor, loss=loss) - #soln = solve_problem_gglasso(X, y, groups=1:ncol(X), lambda, penalty_factor=penalty_factor, loss=loss) - PVS = selectiveInference:::inference_group_lasso(X, y, soln, groups=1:ncol(X), lambda=lambda, penalty_factor=penalty_factor, - sigma_est, loss=loss, algo="glmnet", construct_ci = construct_ci) - active_vars=PVS$active_vars - cat("active_vars:",active_vars,"\n") - pvalues = c(pvalues, PVS$pvalues) - naive_pvalues = c(naive_pvalues, PVS$naive_pvalues) - sel_intervals = cbind(sel_intervals, PVS$sel_intervals) # matrix with two rows - naive_intervals = cbind(naive_intervals, PVS$naive_intervals) - - if (length(pvalues)>0){ - plot(ecdf(pvalues)) - lines(ecdf(naive_pvalues), col="red") - abline(0,1) - } - - if (construct_ci && length(active_vars)>0){ - - sel_coverages=c(sel_coverages, selectiveInference:::compute_coverage(PVS$sel_intervals, beta[active_vars])) - naive_coverages=c(naive_coverages, selectiveInference:::compute_coverage(PVS$naive_intervals, beta[active_vars])) - sel_lengths=c(sel_lengths, as.vector(PVS$sel_intervals[2,]-PVS$sel_intervals[1,])) - naive_lengths=c(naive_lengths, as.vector(PVS$naive_intervals[2,]-PVS$naive_intervals[1,])) - print(c("selective coverage:", mean(sel_coverages))) - print(c("naive coverage:", mean(naive_coverages))) - print(c("selective length mean:", mean(sel_lengths))) - print(c("selective length median:", median(sel_lengths))) - print(c("naive length mean:", mean(naive_lengths))) - print(c("naive length median:", median(naive_lengths))) - } - - mc = selectiveInference:::selective.plus.BH(beta, active_vars, PVS$pvalues, q=0.2) - FDR_sample=c(FDR_sample, mc$FDR) - power_sample=c(power_sample, mc$power) - - if (length(FDR_sample)>0){ - print(c("FDR:", mean(FDR_sample))) - print(c("power:", mean(power_sample))) - } - } - - if (is.null(outfile)){ - outfile="liu_full.rds" - } - - saveRDS(list(sel_intervals=sel_intervals, sel_coverages=sel_coverages, sel_lengths=sel_lengths, - naive_intervals=naive_intervals, naive_coverages=naive_coverages, naive_lengths=naive_lengths, - pvalues=pvalues, naive_pvalues=naive_pvalues, - FDR_sample=FDR_sample, power_sample=power_sample, - n=n, p=p, s=s, snr=snr, rho=rho), file=outfile) - - return(list(pvalues=pvalues, naive_pvalues=naive_pvalues)) -} - -test_liu_full() - diff --git a/tests/liu_high_dim_full/test_logistic.R b/tests/liu_high_dim_full/test_logistic.R deleted file mode 100644 index b6e7374..0000000 --- a/tests/liu_high_dim_full/test_logistic.R +++ /dev/null @@ -1,107 +0,0 @@ -library(MASS) -library(selectiveInference) -library(glmnet) - - -test_logistic = function(seed=1, outfile=NULL, nrep=10, n=1000, p=2000, s=30, rho=0.){ - - snr = sqrt(2*log(p)/n) - snr = 2*snr - #print(snr) - #empirical=empirical = apply(abs(t(matrix(rnorm(n*p), nrow=n)) %*% matrix(rnorm(n*1000), nrow=n)), 2, max) - #print(mean(empirical)/n) - - #empirical = apply(abs(t(matrix(rnorm(n*p), nrow=n)) %*% matrix(sample(c(0,1), n*1000, replace = TRUE), nrow=n)), 2, max) - #snr=mean(empirical)/n - #print(snr) - - set.seed(seed) - loss="logit" - construct_ci=TRUE - - penalty_factor = rep(1, p) - - pvalues = NULL - naive_pvalues = NULL - sel_intervals=NULL - naive_intervals=NULL - sel_coverages=NULL - naive_coverages=NULL - sel_lengths=NULL - naive_lengths=NULL - - FDR_sample = NULL - power_sample=NULL - - for (i in 1:nrep){ - data = selectiveInference:::logistic_instance(n=n, p=p, s=s, rho=rho, sigma=1, snr=snr) - X=data$X - y=data$y - beta=data$beta - - cat("true nonzero:", which(beta!=0), "\n") - - lambda = 0.4*selectiveInference:::theoretical.lambda(X, loss, sigma=1) - - soln = selectiveInference:::solve_problem_glmnet(X, y, lambda, penalty_factor=penalty_factor, loss=loss) - PVS = selectiveInference:::inference_group_lasso(X,y, soln, groups=1:ncol(X), lambda=lambda, penalty_factor=penalty_factor, - sigma_est=1, loss=loss, algo="glmnet", construct_ci = construct_ci) - - active_vars = PVS$active_vars - print("active_vars") - print(active_vars) - null_active_vars = match(which(beta==0), active_vars) - null_active_vars = null_active_vars[!is.na(null_active_vars)] - #print("null_active_vars") - #print(null_active_vars) - - if (length(null_active_vars)>0){ - pvalues = c(pvalues, PVS$pvalues[null_active_vars]) - naive_pvalues = c(naive_pvalues, PVS$naive_pvalues[null_active_vars]) - plot(ecdf(pvalues)) - lines(ecdf(naive_pvalues), col="red") - abline(0,1) - } - - if (construct_ci && length(active_vars)>0){ - - sel_coverages=c(sel_coverages, selectiveInference:::compute_coverage(PVS$sel_intervals, beta[active_vars])) - naive_coverages=c(naive_coverages, selectiveInference:::compute_coverage(PVS$naive_intervals, beta[active_vars])) - - #sel_coverages=c(sel_coverages, compute_coverage(PVS$sel_intervals[,null_active_vars], rep(0, length(null_active_vars)))) - #naive_coverages=c(naive_coverages,compute_coverage(PVS$naive_intervals[,null_active_vars], rep(0, length(null_active_vars)))) - - sel_lengths=c(sel_lengths, mean(PVS$sel_intervals[2,]-PVS$sel_intervals[1,])) - naive_lengths=c(naive_lengths, mean(PVS$naive_intervals[2,]-PVS$naive_intervals[1,])) - print(c("selective coverage:", mean(sel_coverages))) - print(c("naive coverage:", mean(naive_coverages))) - print(c("selective length:", mean(sel_lengths))) - print(c("naive length:", mean(naive_lengths))) - } - - mc = selectiveInference:::selective.plus.BH(beta, active_vars, PVS$pvalues, q=0.2) - FDR_sample=c(FDR_sample, mc$FDR) - power_sample=c(power_sample, mc$power) - - if (length(FDR_sample)>0){ - print(c("FDR:", mean(FDR_sample))) - print(c("power:", mean(power_sample))) - } - } - - if (is.null(outfile)){ - outfile="liu_logistic_full.rds" - } - - saveRDS(list(sel_intervals=sel_intervals, sel_coverages=sel_coverages, sel_lengths=sel_lengths, - naive_intervals=naive_intervals, naive_coverages=naive_coverages, naive_lengths=naive_lengths, - pvalues=pvalues, naive_pvalues=naive_pvalues, - FDR_sample=FDR_sample, power_sample=power_sample, - n=n, p=p, s=s, snr=snr, rho=rho), file=outfile) - - - return(list(pvalues=pvalues, naive_pvalues=naive_pvalues)) -} - -test_logistic() - diff --git a/tests/real_data_analysis/estimate_sigma.R b/tests/real_data_analysis/estimate_sigma.R deleted file mode 100644 index df5a39a..0000000 --- a/tests/real_data_analysis/estimate_sigma.R +++ /dev/null @@ -1,30 +0,0 @@ -library(glmnet) -library(selectiveInference) - -setwd("/Users/Jelena/Dropbox/kevin/jelena/real_data") -data=readRDS("real_data.rds") -X=data$X -y=data$y - -set.seed(1) - -CV = cv.glmnet(X, y, standardize=FALSE, intercept=FALSE, family="gaussian") -sigma_est=selectiveInference:::estimate_sigma(X,y,coef(CV, s="lambda.min")[-1]) # sigma via Reid et al. -print(c("sigma est via Reid et al.", sigma_est)) "sigma est via Reid et al." "0.620021797352246" - -print(c("std error of y", sqrt(var(y)))) "std error of y" "0.488729008112197" - -n=nrow(X) -m=floor(n/2) -subsample = sample(1:n,m, replace=FALSE) -leftover = setdiff(1:n, subsample) -CV = cv.glmnet(X[subsample,], y[subsample], standardize=FALSE, intercept=FALSE, family="gaussian") -beta_hat = coef(CV, s="lambda.min")[-1] -selected = which(beta_hat!=0) -LM = lm(y[leftover]~X[leftover,][,selected]) -sigma_est = sigma(LM) -print(c("sigma est from data splitting", sigma_est)) "0.481421791225578" - - - - diff --git a/tests/real_data_analysis/real_data_analysis.R b/tests/real_data_analysis/real_data_analysis.R deleted file mode 100644 index c5132a7..0000000 --- a/tests/real_data_analysis/real_data_analysis.R +++ /dev/null @@ -1,137 +0,0 @@ -library(glmnet) -library(selectiveInference) -library(MASS) -library(knockoff) - -setwd(getwd()) -args = commandArgs(trailingOnly=TRUE) -method = toString(args[1]) - -outdir = "/scratch/users/jelenam/full/" -label = paste(method, "_results", sep="") -outfile = file.path(outdir, paste(sep="",label, ".rds")) - -#setwd("/Users/Jelena/Dropbox/kevin/jelena/real_data") -set.seed(1) -loss="ls" -sigma_est = 0.62 -lambda = 0.0352479 -#lambda = 0.8*selectiveInference:::theoretical.lambda(X, loss, sigma_est) # "lambda" "0.0352479112219816" -#print(c("lambda", lambda)) - - -liu_full = function(outfile){ - data=readRDS("real_data1.rds") - X=data$X - y=data$y - n=nrow(X) - penalty_factor = rep(1, ncol(X)) - - soln = selectiveInference:::solve_problem_glmnet(X, y, lambda, penalty_factor=penalty_factor, loss=loss) - PVS = selectiveInference:::inference_group_lasso(X, y, soln, groups=1:ncol(X), lambda=lambda, penalty_factor=penalty_factor, - sigma_est, loss=loss, algo="glmnet", construct_ci = TRUE) - saveRDS(list(active_vars=PVS$active_vars, - sel_intervals=PVS$sel_intervals, naive_intervals=PVS$naive_intervals, - pvalues=PVS$pvalues, naive_pvalues=PVS$naive_pvalues), file=outfile) - - return(NULL) -} - - - -lee_full = function(outfile){ - data=readRDS("real_data2.rds") - X=data$X - y=data$y - n=nrow(X) - - lasso = glmnet(X, y, family=selectiveInference:::family_label(loss), alpha=1, standardize=FALSE, intercept=FALSE, thresh=1e-12) - soln = as.numeric(coef(lasso,x=X,y=y, family=selectiveInference:::family_label(loss), s=lambda, exact=TRUE))[-1] - PVS = selectiveInference:::fixedLassoInf(X,y,soln, intercept=FALSE, lambda*n, family=selectiveInference:::family_label(loss), - type="full",sigma=sigma_est) - - abs_soln = abs(soln) - beta_threshold = abs_soln[order(abs_soln,decreasing=TRUE)][length(PVS$pv)] - active_vars = which(abs_soln>=beta_threshold) - cat("nactive:", length(active_vars), "\n") - cat("active vars:", active_vars, "\n") - - pvalues = PVS$pv - sel_intervals = t(PVS$ci) - - saveRDS(list(active_vars=active_vars, sel_intervals=sel_intervals, pvalues=pvalues), file=outfile) - -} - - -knockoff = function(method, outfile){ - if (method=="knockoff"){ - data=readRDS("real_data3.rds") - } else if (method=="knockoff+"){ - data=readRDS("real_data4.rds") - } - - X=data$X - y=data$y - - offset=0 - if (method=="knockoff+"){ - offset=1 - } - filter = knockoff.filter(X, y, fdr=q, offset=offset) - saveRDS(list(active_vars = filter$rejected), file=outfile) -} - - -randomized = function(type, outfile){ - if (type=="full"){ - data=readRDS("real_data5.rds") - } else if (type=="partial"){ - data=readRDS("real_data6.rds") - } - - X=data$X - y=data$y - n=nrow(X) - - rand_lasso_soln = selectiveInference:::randomizedLasso(X, - y, - lambda*n, - family=selectiveInference:::family_label(loss), - condition_subgrad=TRUE) - - full_targets=selectiveInference:::set.target(rand_lasso_soln, type=type, sigma_est=sigma_est) - - PVS = selectiveInference:::randomizedLassoInf(rand_lasso_soln, - full_targets=full_targets, - sampler = "norejection", #"adaptMCMC", # - level=0.9, - burnin=1000, - nsample=10000) - active_vars=rand_lasso_soln$active_set - cat("active_vars:",active_vars,"\n") - pvalues = PVS$pvalues - sel_intervals = t(PVS$ci) # matrix with two rows - saveRDS(list(active_vars=active_vars, sel_intervals=sel_intervals, pvalues=pvalues), file=outfile) - - return(NULL) -} - -if (method=="liu"){ - liu_full(outfile) -} else if (method=="lee"){ - lee_full(outfile) -} else if (method=="knockoff"){ - knockoff(method, outfile) -} else if (method=="knockoff+"){ - knockoff(method, outfile) -} else if (method=="randomized_full"){ - randomized("full", outfile) -} else if (method=="randomized_partial"){ - randomized("partial", outfile) -} - - - - - diff --git a/tests/real_data_analysis/single_R_run.sbatch b/tests/real_data_analysis/single_R_run.sbatch deleted file mode 100644 index dd9de8e..0000000 --- a/tests/real_data_analysis/single_R_run.sbatch +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash -# -#all commands that start with SBATCH contain commands that are just used by SLURM for scheduling -################# -#set a job name -#SBATCH --job-name=job -################# -#a file for job output, you can check job progress, append the job ID with %j to make it unique -#SBATCH --output=jobs/%j.out -################# -# a file for errors from the job -#SBATCH --error=jobs/%j.err -################# -#time you think you need; default is 2 hours -#format could be dd-hh:mm:ss, hh:mm:ss, mm:ss, or mm -#SBATCH --time=10:00:00 -################# -#SBATCH --qos=normal -#SBATCH -p normal -################# -#number of nodes you are requesting, the more you ask for the longer you wait -#SBATCH --nodes=1 -################# -#SBATCH --mem=128000 - -# You can use srun if your job is parallel -#srun R CMD BATCH ./rtest.R -# otherwise: - -method=$1 - -# cd to program directory -cd /home/users/jelenam/R-selective/tests/real_data_analysis - -module load R/3.4.0 - -Rscript real_data_analysis.R $method - diff --git a/tests/real_data_analysis/submit_R_jobs.sh b/tests/real_data_analysis/submit_R_jobs.sh deleted file mode 100644 index 16a908c..0000000 --- a/tests/real_data_analysis/submit_R_jobs.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash -# Setup bash job headers - -# load local environment - -method1=liu -method2=lee -method3=knockoff -method4=knockoff+ -method5=randomized_full -method6=randomized_partial - -for i in {1..1} -do - sbatch single_R_run.sbatch $method1 - sbatch single_R_run.sbatch $method2 - sbatch single_R_run.sbatch $method3 - sbatch single_R_run.sbatch $method4 - sbatch single_R_run.sbatch $method5 - sbatch single_R_run.sbatch $method6 -done \ No newline at end of file From c8bd4ea1980f2e31c2dd64f77ce642a3592f6cda Mon Sep 17 00:00:00 2001 From: Jelena Markovic Date: Mon, 2 Apr 2018 14:41:07 -0700 Subject: [PATCH 483/493] Q_sq added back --- selectiveInference/R/funs.full.main.R | 12 ++++++------ tests/liu_high_dim_full/test_liu_full.R | 2 +- tests/real_data_analysis/real_data_analysis.R | 6 +++--- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/selectiveInference/R/funs.full.main.R b/selectiveInference/R/funs.full.main.R index 6650201..e085094 100644 --- a/selectiveInference/R/funs.full.main.R +++ b/selectiveInference/R/funs.full.main.R @@ -110,7 +110,7 @@ solve_problem_Q = function(Q_sq, Qbeta_bar, lambda, penalty_factor, # the selection event is |sigma_est^2*(target_cov)^{-1}Z+center|>radius -truncation_set = function(X, y, Qbeta_bar, QE, sigma_est, +truncation_set = function(X, y, Qbeta_bar, QE, Q_sq=Q_sq, sigma_est, target_stat, target_cov, group, groups, active_vars, lambda, penalty_factor, loss, algo){ @@ -350,7 +350,7 @@ get_QB = function(X, y, soln, active_set, loss){ QE=Q[active_set,] Qi=solve(Q) QiE=Qi[active_set, active_set] - #Q_sq = W_root %*% X + Q_sq = W_root %*% X #beta_bar = mle(X,y,loss=loss) #print("mle") #print(mle(X,y,loss=loss)) @@ -368,11 +368,11 @@ get_QB = function(X, y, soln, active_set, loss){ beta_barE = soln[active_set] + M_active %*% diag(as.vector(1/diagonal)) %*% residuals QE = hessian_active(X, soln, loss, active_set) - #Q_sq = W_root %*% X + Q_sq = W_root %*% X Qbeta_bar = t(QE)%*%soln[active_set]-gradient(X,y,soln,loss=loss) } - return(list(QE=QE, Qbeta_bar=Qbeta_bar, QiE=QiE, beta_barE=beta_barE)) + return(list(QE=QE, Q_sq=Q_sq, Qbeta_bar=Qbeta_bar, QiE=QiE, beta_barE=beta_barE)) } @@ -393,7 +393,7 @@ inference_group_lasso = function(X, y, soln, groups, lambda, penalty_factor, sig begin_setup = Sys.time() setup_params = get_QB(X=X, y=y, soln=soln, active_set=active_vars, loss=loss) QE=as.matrix(setup_params$QE) - #Q_sq=setup_params$Q_sq + Q_sq=setup_params$Q_sq QiE=as.matrix(setup_params$QiE) beta_barE = setup_params$beta_barE Qbeta_bar = setup_params$Qbeta_bar @@ -418,7 +418,7 @@ inference_group_lasso = function(X, y, soln, groups, lambda, penalty_factor, sig target_cov = as.matrix(QiE)[group_varsE,group_varsE] begin_TS = Sys.time() - TS = truncation_set(X=X, y=y, Qbeta_bar=Qbeta_bar, QE=QE, sigma_est=sigma_est, + TS = truncation_set(X=X, y=y, Qbeta_bar=Qbeta_bar, QE=QE, Q_sq=Q_sq, sigma_est=sigma_est, target_cov=target_cov, target_stat=target_stat, group=group, groups=groups, active_vars=active_vars, lambda=lambda, penalty_factor=penalty_factor, loss=loss, algo=algo) diff --git a/tests/liu_high_dim_full/test_liu_full.R b/tests/liu_high_dim_full/test_liu_full.R index 3f75937..dd062ad 100644 --- a/tests/liu_high_dim_full/test_liu_full.R +++ b/tests/liu_high_dim_full/test_liu_full.R @@ -5,7 +5,7 @@ library(glmnet) # testing Liu et al type=full in high dimensional settings -- uses debiasing matrix -test_liu_full = function(seed=1, outfile=NULL, nrep=1, n=100, p=200, s=20, rho=0.){ +test_liu_full = function(seed=1, outfile=NULL, nrep=1, n=4000, p=70000, s=20, rho=0.){ snr = sqrt(2*log(p)/n) diff --git a/tests/real_data_analysis/real_data_analysis.R b/tests/real_data_analysis/real_data_analysis.R index c5132a7..01524bd 100644 --- a/tests/real_data_analysis/real_data_analysis.R +++ b/tests/real_data_analysis/real_data_analysis.R @@ -14,9 +14,9 @@ outfile = file.path(outdir, paste(sep="",label, ".rds")) #setwd("/Users/Jelena/Dropbox/kevin/jelena/real_data") set.seed(1) loss="ls" -sigma_est = 0.62 -lambda = 0.0352479 -#lambda = 0.8*selectiveInference:::theoretical.lambda(X, loss, sigma_est) # "lambda" "0.0352479112219816" +sigma_est = 0.4814 +lambda = 0.02735951 +#lambda = 0.8*selectiveInference:::theoretical.lambda(X, loss, sigma_est) #print(c("lambda", lambda)) From 09731d89f3fd298b7d407545ee86ae48500b89ee Mon Sep 17 00:00:00 2001 From: Jelena Markovic Date: Mon, 2 Apr 2018 17:25:43 -0700 Subject: [PATCH 484/493] moved comparisons to the dropbox --- tests/comparisons/compare_FDR_power.R | 17 ------- tests/comparisons/plot_coverages.R | 63 ------------------------- tests/comparisons/read_files.R | 59 ----------------------- tests/liu_high_dim_full/test_liu_full.R | 2 +- 4 files changed, 1 insertion(+), 140 deletions(-) delete mode 100644 tests/comparisons/compare_FDR_power.R delete mode 100644 tests/comparisons/plot_coverages.R delete mode 100644 tests/comparisons/read_files.R diff --git a/tests/comparisons/compare_FDR_power.R b/tests/comparisons/compare_FDR_power.R deleted file mode 100644 index 2349d22..0000000 --- a/tests/comparisons/compare_FDR_power.R +++ /dev/null @@ -1,17 +0,0 @@ -lee = readRDS(file="lee.rds") -liu = readRDS(file="liu.rds") -kn = readRDS(file="knockoff.rds") -kn_plus = readRDS(file="knockoff+.rds") -randomized_full=readRDS(file="randomized_full.rds") -randomized_partial=readRDS(file="randomized_partial.rds") - - -table = matrix(c(mean(lee$FDR_sample), mean(lee$power_sample), - mean(liu$FDR_sample), mean(liu$power_sample), - mean(kn$FDR_sample), mean(kn$power_sample), - mean(kn_plus$FDR_sample), mean(kn_plus$power_sample), - mean(randomized_full$FDR_sample), mean(randomized_full$power_sample), - mean(randomized_partial$FDR_sample), mean(randomized_partial$power_sample)), ncol=2, byrow=TRUE) -colnames(table)=c("FDR", "power") -rownames(table)=c("Lee", "Liu", "knockoff", "knockoff+", "randomized full", "randomized partial") -table diff --git a/tests/comparisons/plot_coverages.R b/tests/comparisons/plot_coverages.R deleted file mode 100644 index a73e5d7..0000000 --- a/tests/comparisons/plot_coverages.R +++ /dev/null @@ -1,63 +0,0 @@ - -lee = readRDS(file="lee.rds") -liu = readRDS(file="liu.rds") -rand_full=readRDS(file="randomized_full.rds") -rand_partial=readRDS(file="randomized_partial.rds") - -n=lee$n -p=lee$p -s=lee$s -snr=lee$snr -rho=lee$rho - -lee_cov = mean(lee$sel_coverages) -lee_len = median(lee$sel_lengths) - -liu_cov=mean(liu$sel_coverages) -liu_len=median(liu$sel_lengths) - -naive_cov = mean(liu$naive_coverages) -naive_len=median(liu$naive_lengths) - -rand_full_cov = mean(rand_full$sel_coverages) -rand_full_len = median(rand_full$sel_lengths) - -rand_partial_cov=mean(rand_partial$sel_coverages) -rand_partial_len=median(rand_partial$sel_lengths) - -ninf_lee = length(which(lee$sel_lengths==Inf))/length(lee$sel_lengths) -ninf_liu = length(which(liu$sel_lengths==Inf))/length(liu$sel_lengths) -c(ninf_lee, ninf_liu) - -labels = rep("",5) -labels[1] = paste("len: ", round(lee_len,2), ", cov: ", round(lee_cov,2), ", ninf: ", round(ninf_lee,2), sep = "") -labels[2] = paste("len: ", round(liu_len,2), ", cov: ", round(liu_cov,2), ", ninf: ", round(ninf_liu,2), sep = "") -labels[3] = paste("len: ", round(naive_len,2), ", cov: ", round(naive_cov,2), sep = "") -labels[4] = paste("len: ", round(rand_full_len,2), ", cov: ", round(rand_full_cov,2), sep = "") -labels[5] = paste("len: ", round(rand_partial_len,2), ", cov: ", round(rand_partial_cov,2), sep = "") - - -title = paste("n=", n,", p=", p, ", s=", s, ", signal=", round(snr,2), ", rho=", rho, sep = "") - -boxplot(lee$sel_lengths[which(lee$sel_lengths!=Inf)], liu$sel_lengths, liu$naive_lengths, - rand_full$sel_lengths, rand_partial$sel_lengths, - at = seq(1,11,2.5) - 0.25, col = "pink", las = 2, outline = F, - names = c("Lee \n (full)", "Liu \n (full)", "naive", "rand \n (full)", "rand \n (partial)"), - boxwex = 0.6, range = 0.5, - log="x", horizontal = T, xlim = c(0,12.5), cex.axis = 1) - -title(title, cex.main = 1, font.main = 1, line = 0.2) -text(labels = labels, x = c(lee_len, liu_len, naive_len, rand_full_len,rand_partial_len)+0.05, y = seq(1,11,2.5) + 0.5, cex = 1) - - - - -plot(ecdf(lee$pvalues), xlab="values", ylab="Empirical cdf", main="Selective pvalues", - col="red") -lines(ecdf(liu$pvalues), col="blue") -abline(c(0,1)) -legend("bottomright", legend=c("Lee et al", "Liu et al"), - col=c("red", "blue"), lty=1:1, cex=1.5) - - - diff --git a/tests/comparisons/read_files.R b/tests/comparisons/read_files.R deleted file mode 100644 index e5845a8..0000000 --- a/tests/comparisons/read_files.R +++ /dev/null @@ -1,59 +0,0 @@ -result.path = "/Users/Jelena/Documents/collect_cluster_results/full/" -setwd(result.path) - -#method="liu" -#method="lee" -#method="knockoff_result" -#method="knockoff+_result" -#method="randomized_full" -#method="randomized_partial" - -txt_files = list.files(pattern = paste(method, "*", sep="")) - -i = 0 - -pvalues = NULL -sel_intervals=NULL -sel_coverages=NULL -sel_lengths=NULL -naive_pvalues = NULL -naive_intervals=NULL -naive_coverages=NULL -naive_lengths=NULL -FDR_sample = NULL -power_sample=NULL - -for (file in txt_files){ - result=readRDS(file) - pvalues=c(pvalues, result$pvalues) - sel_intervals=c(sel_intervals, result$sel_intervals) - sel_coverages=c(sel_coverages, result$sel_coverages) - sel_lengths=c(sel_lengths, result$sel_lengths) - naive_pvalues=c(naive_pvalues, result$naive_pvalues) - naive_intervals=c(naive_intervals, result$naive_intervals) - naive_coverages=c(naive_coverages, result$naive_coverages) - naive_lengths=c(naive_lengths, result$naive_lengths) - FDR_sample=c(FDR_sample, result$FDR_sample) - power_sample=c(power_sample, result$power_sample) - n=result$n - p=result$p - s=result$s - rho=result$rho - snr=result$snr - i=i+1 -} - -print(i) - -setwd("/Users/Jelena/GitHub Jelena/R-selective/tests/comparisons/") - -saveRDS(list(pvalues=pvalues, - sel_intervals=sel_intervals, sel_coverages=sel_coverages, sel_lengths=sel_lengths, - naive_pvalues=naive_pvalues, - naive_intervals=naive_intervals, naive_coverages=naive_coverages, naive_lengths=naive_lengths, - n=n, p=p, s=s, rho=rho, snr=snr, - FDR_sample=FDR_sample, power_sample=power_sample), file=paste(method,".rds", sep="")) - - - - diff --git a/tests/liu_high_dim_full/test_liu_full.R b/tests/liu_high_dim_full/test_liu_full.R index dd062ad..234fa6a 100644 --- a/tests/liu_high_dim_full/test_liu_full.R +++ b/tests/liu_high_dim_full/test_liu_full.R @@ -96,5 +96,5 @@ test_liu_full = function(seed=1, outfile=NULL, nrep=1, n=4000, p=70000, s=20, rh return(list(pvalues=pvalues, naive_pvalues=naive_pvalues)) } -test_liu_full() +#test_liu_full() From 7268dcd5b41ae793afc2174513473e56a0c6fb9e Mon Sep 17 00:00:00 2001 From: Jelena Markovic Date: Mon, 2 Apr 2018 17:26:02 -0700 Subject: [PATCH 485/493] moved comparisons to the dropbox --- tests/comparisons/big uncorr/params.txt | 3 --- tests/comparisons/small corr/params.txt | 0 tests/comparisons/small uncorr/params.txt | 0 3 files changed, 3 deletions(-) delete mode 100644 tests/comparisons/big uncorr/params.txt delete mode 100644 tests/comparisons/small corr/params.txt delete mode 100644 tests/comparisons/small uncorr/params.txt diff --git a/tests/comparisons/big uncorr/params.txt b/tests/comparisons/big uncorr/params.txt deleted file mode 100644 index dca935c..0000000 --- a/tests/comparisons/big uncorr/params.txt +++ /dev/null @@ -1,3 +0,0 @@ -n=1000, p=2000, rho=0, -snr = sqrt(2*log(p)/n) -nrep=100 \ No newline at end of file diff --git a/tests/comparisons/small corr/params.txt b/tests/comparisons/small corr/params.txt deleted file mode 100644 index e69de29..0000000 diff --git a/tests/comparisons/small uncorr/params.txt b/tests/comparisons/small uncorr/params.txt deleted file mode 100644 index e69de29..0000000 From b3bc535ff4f8a214fc5c49c2194ef0dd600dc053 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Wed, 4 Apr 2018 21:36:52 -0700 Subject: [PATCH 486/493] fixing indentation --- selectiveInference/R/funs.fixed.R | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 64dd026..39e2db5 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -318,20 +318,20 @@ debiasingMatrix = function(Xinfo, # could be X or t(X) %*% X / n d is_wide, nsample, rows, - verbose=FALSE, - bound=NULL, # starting value of bound - linesearch=TRUE, # do a linesearch? - scaling_factor=1.5, # multiplicative factor for linesearch - max_active=NULL, # how big can active set get? - max_try=10, # how many steps in linesearch? - warn_kkt=FALSE, # warn if KKT does not seem to be satisfied? - max_iter=50, # how many iterations for each optimization problem + verbose=FALSE, + bound=NULL, # starting value of bound + linesearch=TRUE, # do a linesearch? + scaling_factor=1.5, # multiplicative factor for linesearch + max_active=NULL, # how big can active set get? + max_try=10, # how many steps in linesearch? + warn_kkt=FALSE, # warn if KKT does not seem to be satisfied? + max_iter=50, # how many iterations for each optimization problem kkt_stop=TRUE, # stop based on KKT conditions? parameter_stop=TRUE, # stop based on relative convergence of parameter? - objective_stop=TRUE, # stop based on relative decrease in objective? + objective_stop=TRUE, # stop based on relative decrease in objective? kkt_tol=1.e-4, # tolerance for the KKT conditions parameter_tol=1.e-4, # tolerance for relative convergence of parameter - objective_tol=1.e-4 # tolerance for relative decrease in objective + objective_tol=1.e-4 # tolerance for relative decrease in objective ) { From ba5a68d7380433999a94309d6609ff079aa130cd Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Wed, 4 Apr 2018 22:20:02 -0700 Subject: [PATCH 487/493] cleanup? of approximate --- selectiveInference/R/funs.full.main.R | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/selectiveInference/R/funs.full.main.R b/selectiveInference/R/funs.full.main.R index deeb758..fc9ebf8 100644 --- a/selectiveInference/R/funs.full.main.R +++ b/selectiveInference/R/funs.full.main.R @@ -299,26 +299,16 @@ approximate = function(X, active_set){ p=ncol(X) nactive=length(active_set) inactive_set=setdiff(1:p, active_set) - X_active = X[, active_set] - X_inactive = X[, inactive_set] - Xordered = X[,c(active_set,inactive_set,recursive=T)] - hsigmaS = 1/n*(t(X_active)%*%X_active) # hsigma[S,S] - hsigmaSinv = solve(hsigmaS) # inverse of hsigma[S,S] - FS = rbind(diag(nactive),matrix(0,p-nactive,nactive)) - GS = cbind(diag(nactive),matrix(0,nactive,p-nactive)) - hsigma = 1/n*(t(Xordered)%*%Xordered) is_wide = n < (2 * p) if (!is_wide) { - hsigma = 1/n*(t(Xordered)%*%Xordered) - htheta = debiasingMatrix(hsigma, is_wide, n, 1:nactive) - ithetasigma = (GS-(htheta%*%hsigma)) + hsigma = 1/n*(t(X) %*% X) + htheta = debiasingMatrix(hsigma, is_wide, n, active_set) } else { - htheta = debiasingMatrix(Xordered, is_wide, n, 1:nactive) - ithetasigma = (GS-((htheta%*%t(Xordered)) %*% Xordered)/n) + htheta = debiasingMatrix(X, is_wide, n, active_set) } - M_active <- ((htheta%*%t(Xordered))+ithetasigma%*%FS%*%hsigmaSinv%*%t(X_active))/n + M_active <- htheta%*%t(X) / n # the n is so that we approximate the inverse of (X^TX)^{-1} instead of (X^TX/n)^{-1}. return(M_active) } @@ -361,7 +351,6 @@ get_QB = function(X, y, soln, active_set, loss){ M_active = approximate(W_root %*% X, active_set) ## this should be the active rows of \Sigma_i (W^{1/2} X)^T QiE = M_active %*% t(M_active) beta_barE = soln[active_set] + M_active %*% diag(as.vector(1/diagonal)) %*% residuals - QE = hessian_active(X, soln, loss, active_set) Q_sq = W_root %*% X Qbeta_bar = t(QE)%*%soln[active_set]-gradient(X,y,soln,loss=loss) From e2ebc9928021f479f274bc74596d70e6b7531f6c Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 5 Apr 2018 05:57:38 -0700 Subject: [PATCH 488/493] rewrote approximate a bit more using only rows of inverse, not multiplied by X --- selectiveInference/R/funs.full.main.R | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/selectiveInference/R/funs.full.main.R b/selectiveInference/R/funs.full.main.R index fc9ebf8..f6f1272 100644 --- a/selectiveInference/R/funs.full.main.R +++ b/selectiveInference/R/funs.full.main.R @@ -308,7 +308,7 @@ approximate = function(X, active_set){ } else { htheta = debiasingMatrix(X, is_wide, n, active_set) } - M_active <- htheta%*%t(X) / n # the n is so that we approximate the inverse of (X^TX)^{-1} instead of (X^TX/n)^{-1}. + M_active <- htheta / n # the n is so that we approximate the inverse of (X^TX)^{-1} instead of (X^TX/n)^{-1}. return(M_active) } @@ -320,15 +320,14 @@ get_QB = function(X, y, soln, active_set, loss){ fit = X%*%soln if (loss=="ls"){ - diagonal = rep(1,n) - W_root=diag(as.vector(diagonal)) + W = rep(1,n) residuals = y-fit } if (loss=="logit"){ - diagonal = exp(fit/2)/(1+exp(fit)) ## sqrt(pi*(1-pi)) - W_root = diag(as.vector(diagonal)) + W = exp(fit/2)/(1+exp(fit)) ## sqrt(pi*(1-pi)) residuals = y-(exp(fit)/(1+exp(fit))) } + W_root=diag(as.vector(W)) if (n>p){ Q=hessian(X, soln, loss=loss) @@ -336,24 +335,20 @@ get_QB = function(X, y, soln, active_set, loss){ Qi=solve(Q) QiE=Qi[active_set, active_set] Q_sq = W_root %*% X - #beta_bar = mle(X,y,loss=loss) - #print("mle") - #print(mle(X,y,loss=loss)) beta_bar = soln - Qi %*% gradient(X,y,soln, loss=loss) - #beta_bar = (soln - Qi %*% gradient(X,y,soln, loss=loss)+mle(X,y,loss))/2 - #print("one step") - #print(beta_bar) Qbeta_bar = Q%*%soln - gradient(X,y,soln, loss=loss) beta_barE = beta_bar[active_set] } else{ - M_active = approximate(W_root %*% X, active_set) ## this should be the active rows of \Sigma_i (W^{1/2} X)^T - QiE = M_active %*% t(M_active) - beta_barE = soln[active_set] + M_active %*% diag(as.vector(1/diagonal)) %*% residuals - QE = hessian_active(X, soln, loss, active_set) Q_sq = W_root %*% X - Qbeta_bar = t(QE)%*%soln[active_set]-gradient(X,y,soln,loss=loss) + M_active = approximate(Q_sq, active_set) ## this should be the active rows of \Sigma_i (W^{1/2} X)^T + G = gradient(X,y,soln,loss=loss) + M2 = M_active %*% t(X) + QiE = M2 %*% (diag(W) %*% t(M2)) # is there a more efficient way to do this diag multiplication? also above + beta_barE = soln[active_set] - M_active %*% G + QE = hessian_active(X, soln, loss, active_set) + Qbeta_bar = t(QE)%*%soln[active_set] - G } return(list(QE=QE, Q_sq=Q_sq, Qbeta_bar=Qbeta_bar, QiE=QiE, beta_barE=beta_barE)) From 6b50cdba9e9575502e7d72d803d8d2a6b64e4843 Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Thu, 5 Apr 2018 07:03:29 -0700 Subject: [PATCH 489/493] adding verbose argument --- selectiveInference/R/funs.full.main.R | 46 +++++++++++---------------- 1 file changed, 18 insertions(+), 28 deletions(-) diff --git a/selectiveInference/R/funs.full.main.R b/selectiveInference/R/funs.full.main.R index f6f1272..b4de063 100644 --- a/selectiveInference/R/funs.full.main.R +++ b/selectiveInference/R/funs.full.main.R @@ -343,7 +343,7 @@ get_QB = function(X, y, soln, active_set, loss){ Q_sq = W_root %*% X M_active = approximate(Q_sq, active_set) ## this should be the active rows of \Sigma_i (W^{1/2} X)^T - G = gradient(X,y,soln,loss=loss) + G = gradient(X, y, soln, loss=loss) M2 = M_active %*% t(X) QiE = M2 %*% (diag(W) %*% t(M2)) # is there a more efficient way to do this diag multiplication? also above beta_barE = soln[active_set] - M_active %*% G @@ -357,7 +357,7 @@ get_QB = function(X, y, soln, active_set, loss){ inference_group_lasso = function(X, y, soln, groups, lambda, penalty_factor, sigma_est, - loss, algo, construct_ci){ + loss, algo, construct_ci, verbose=FALSE){ active_vars = which(soln!=0) @@ -367,8 +367,10 @@ inference_group_lasso = function(X, y, soln, groups, lambda, penalty_factor, sig active_groups = unique(groups[active_vars]) nactive_groups = length(active_groups) - print(c("nactive", nactive_groups)) - + if (verbose) { + print(c("nactive", nactive_groups)) + } + begin_setup = Sys.time() setup_params = get_QB(X=X, y=y, soln=soln, active_set=active_vars, loss=loss) QE=as.matrix(setup_params$QE) @@ -378,8 +380,9 @@ inference_group_lasso = function(X, y, soln, groups, lambda, penalty_factor, sig Qbeta_bar = setup_params$Qbeta_bar QiE = QiE * sigma_est^2 end_setup = Sys.time() - cat("setup time", end_setup-begin_setup, "\n") - + if (verbose) { + cat("setup time", end_setup-begin_setup, "\n") + } pvalues = NULL naive_pvalues = NULL selected_vars=NULL @@ -402,8 +405,9 @@ inference_group_lasso = function(X, y, soln, groups, lambda, penalty_factor, sig group=group, groups=groups, active_vars=active_vars, lambda=lambda, penalty_factor=penalty_factor, loss=loss, algo=algo) end_TS = Sys.time() - cat("TS time", end_TS-begin_TS, "\n") - + if (verbose) { + cat("TS time", end_TS-begin_TS, "\n") + } center = TS$center radius = TS$radius @@ -438,11 +442,11 @@ inference_group_lasso = function(X, y, soln, groups, lambda, penalty_factor, sig sel_intervals = cbind(sel_intervals, sel_int) naive_intervals = cbind(naive_intervals, naive_int) } - } else{ - print("observation not within the truncation limits!") + } else { + warning("observation not within the truncation limits!") } } - } else{ + } else { lower = target_cov*(-center-radius)/(sigma_est^2) upper = target_cov*(-center+radius)/(sigma_est^2) @@ -453,9 +457,7 @@ inference_group_lasso = function(X, y, soln, groups, lambda, penalty_factor, sig intervals[1,] = c(-Inf, lower) intervals[2,] = c(upper, Inf) pval = tnorm.union.surv(target_stat, mean=0, sd=sqrt(target_cov), intervals) - #pval = test_TG(0, target_stat, target_cov, sigma_est, center, radius, alt="two-sided") pval = 2*min(pval, 1-pval) - #print(c("pval", pval)) pvalues = c(pvalues, pval) selected_vars = c(selected_vars, group_vars) @@ -463,29 +465,17 @@ inference_group_lasso = function(X, y, soln, groups, lambda, penalty_factor, sig naive_pval = pvalue_naive_linear(target_stat, target_cov) naive_pvalues = c(naive_pvalues, naive_pval) - if (construct_ci){ + if (construct_ci) { sel_int = create_tnorm_interval(z=target_stat, sd=sqrt(target_cov), alpha=0.1, intervals=intervals) - #print(c("tg intervals", sel_int)) - #sel_int = selective_CI(target_stat, target_cov, sigma_est, center, radius) - #print(c("jelena int", sel_int)) naive_int = naive_CI(target_stat, target_cov) - #cat("sel interval", sel_int, "\n") - #cat("naive interval", naive_int, "\n") sel_intervals = cbind(sel_intervals, sel_int) naive_intervals = cbind(naive_intervals, naive_int) } - } else{ - print("observation not within the truncation limits!") + } else { + warning("observation not within the truncation limits!") } } - - #reference = get_reference(center, radius, target_stat, solve(target_cov)) - #samples = sampling(target_cov, reference, center, radius, n=nrow(X), nsample=nsample) - #tilting_weights = compute_tilting_weights(reference, solve(target_cov), samples) - #pvalues[i] = weighted_pvalue(samples, tilting_weights, target_stat) - #naive_pvalues[i] = p_value(mvrnorm(n=nsample, mu=rep(0, length(target_stat)), Sigma = target_cov), target_stat) - #print(c("sampling", pvalues[i])) } return(list(pvalues=pvalues, naive_pvalues=naive_pvalues, active_vars=selected_vars, From 8a2a30a5f14b080e6dea476cfb0dc21d6316afdb Mon Sep 17 00:00:00 2001 From: Jonathan Taylor Date: Sat, 7 Apr 2018 12:01:01 -0700 Subject: [PATCH 490/493] indentation fix --- selectiveInference/R/funs.fixed.R | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 39e2db5..26131db 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -3,11 +3,19 @@ # min 1/2 || y - \beta_0 - X \beta ||_2^2 + \lambda || \beta ||_1 fixedLassoInf <- function(x, y, beta, - lambda, family=c("gaussian","binomial","cox"), - intercept=TRUE, add.targets=NULL, status=NULL, - sigma=NULL, alpha=0.1, - type=c("partial", "full"), tol.beta=1e-5, tol.kkt=0.1, - gridrange=c(-100,100), bits=NULL, verbose=FALSE, + lambda, + family=c("gaussian","binomial","cox"), + intercept=TRUE, + add.targets=NULL, + status=NULL, + sigma=NULL, + alpha=0.1, + type=c("partial", "full"), + tol.beta=1e-5, + tol.kkt=0.1, + gridrange=c(-100,100), + bits=NULL, + verbose=FALSE, linesearch.try=10) { family = match.arg(family) From 781c516b54e39dfe3eb1403f369c56afe42d8835 Mon Sep 17 00:00:00 2001 From: kevinbfry Date: Sun, 8 Apr 2018 01:40:15 -0700 Subject: [PATCH 491/493] Added type='full' for logistic and removed Xordered from gaussian and logistic --- selectiveInference/R/funs.fixed.R | 14 +- selectiveInference/R/funs.fixedLogit.R | 191 ++++++++++++++++--------- 2 files changed, 130 insertions(+), 75 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 26131db..3aae749 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -23,7 +23,7 @@ fixedLassoInf <- function(x, y, beta, type = match.arg(type) if(family=="binomial") { - if(type!="partial") stop("Only type= partial allowed with binomial family") + # if(type!="partial") stop("Only type= partial allowed with binomial family") out=fixedLogitLassoInf(x,y,beta,lambda,alpha=alpha, type="partial", tol.beta=tol.beta, tol.kkt=tol.kkt, gridrange=gridrange, bits=bits, verbose=verbose,this.call=this.call) return(out) @@ -177,7 +177,7 @@ fixedLassoInf <- function(x, y, beta, hbetaS = hbeta[S] # Reorder so that active set S is first - Xordered = Xint[,c(S,notS,recursive=T)] + # Xordered = Xint[,c(S,notS,recursive=T)] hsigmaS = 1/n*(t(XS)%*%XS) # hsigma[S,S] hsigmaSinv = solve(hsigmaS) # pinv(hsigmaS) @@ -188,15 +188,15 @@ fixedLassoInf <- function(x, y, beta, # Approximate inverse covariance matrix for when (n < p) from lasso_Inference.R if (!is_wide) { - hsigma = 1/n*(t(Xordered)%*%Xordered) - htheta = debiasingMatrix(hsigma, is_wide, n, 1:length(S), verbose=FALSE, max_try=linesearch.try, warn_kkt=TRUE) + hsigma = 1/n*(t(Xint)%*%Xint) + htheta = debiasingMatrix(hsigma, is_wide, n, S, verbose=FALSE, max_try=linesearch.try, warn_kkt=TRUE) ithetasigma = (GS-(htheta%*%hsigma)) } else { - htheta = debiasingMatrix(Xordered, is_wide, n, 1:length(S), verbose=FALSE, max_try=linesearch.try, warn_kkt=TRUE) - ithetasigma = (GS-((htheta%*%t(Xordered)) %*% Xordered)/n) + htheta = debiasingMatrix(Xint, is_wide, n, S, verbose=FALSE, max_try=linesearch.try, warn_kkt=TRUE) + ithetasigma = (GS-((htheta%*%t(Xint)) %*% Xint)/n) } - M <- (((htheta%*%t(Xordered))+ithetasigma%*%FS%*%hsigmaSinv%*%t(XS))/n) + M <- (((htheta%*%t(Xint))+ithetasigma%*%FS%*%hsigmaSinv%*%t(XS))/n) # vector which is offset for testing debiased beta's null_value <- (((ithetasigma%*%FS%*%hsigmaSinv)%*%sign(hbetaS))*lambda/n) diff --git a/selectiveInference/R/funs.fixedLogit.R b/selectiveInference/R/funs.fixedLogit.R index 60b6451..8d810ce 100644 --- a/selectiveInference/R/funs.fixedLogit.R +++ b/selectiveInference/R/funs.fixedLogit.R @@ -19,7 +19,8 @@ fixedLogitLassoInf=function(x,y,beta,lambda,alpha=.1, type=c("partial"), tol.bet p=ncol(x) # I assume that intcpt was used if(length(beta)!=p+1) stop("Since family='binomial', beta must be of length ncol(x)+1, that is, it should include an intercept") - nvar=sum(beta[-1]!=0) + vars = which(abs(beta[-1]) > tol.beta / sqrt(colSums(x^2))) + nvar=length(vars) pv=vlo=vup=sd=rep(NA, nvar) ci=tailarea=matrix(NA,nvar,2) @@ -29,51 +30,97 @@ fixedLogitLassoInf=function(x,y,beta,lambda,alpha=.1, type=c("partial"), tol.bet # x = obj$x # y = obj$y - m=beta[-1]!=0 #active set - - bhat=c(beta[1],beta[-1][beta[-1]!=0]) # intcpt plus active vars - sign_bhat=sign(bhat) - lam2m=diag(c(0,rep(lambda,sum(m)))) - + bhat=c(beta[1],beta[-1][vars]) # intcpt plus active vars + s2=sign(bhat) - xxm=cbind(1,x[,m]) - - etahat = xxm %*% bhat - prhat = as.vector(exp(etahat) / (1 + exp(etahat))) - ww=prhat*(1-prhat) - # w=diag(ww) - -#check KKT - z=etahat+(y-prhat)/ww - # g= t(x)%*%w%*%(z-etahat)/lambda # negative gradient scaled by lambda - g=scale(t(x),FALSE,1/ww)%*%(z-etahat)/lambda # negative gradient scaled by lambda + xm=cbind(1,x[,vars]) + xnotm=x[,-vars] + + etahat = xm %*% bhat + prhat = as.vector(exp(etahat) / (1 + exp(etahat))) + ww=prhat*(1-prhat) + w=diag(ww) + + #check KKT + z=etahat+(y-prhat)/ww + g=scale(t(x),FALSE,1/ww)%*%(z-etahat)/lambda # negative gradient scaled by lambda if (any(abs(g) > 1+tol.kkt) ) - warning(paste("Solution beta does not satisfy the KKT conditions", - "(to within specified tolerances)")) - - vars = which(abs(beta[-1]) > tol.beta / sqrt(colSums(x^2))) - if(length(vars)==0){ - cat("Empty model",fill=T) - return() - } - if (any(sign(g[vars]) != sign(beta[-1][vars]))) - warning(paste("Solution beta does not satisfy the KKT conditions", - "(to within specified tolerances). You might try rerunning", - "glmnet with a lower setting of the", - "'thresh' parameter, for a more accurate convergence.")) - - #constraints for active variables - # MM=solve(t(xxm)%*%w%*%xxm) - MM=solve(scale(t(xxm),F,1/ww)%*%xxm) - gm = c(0,-g[vars]*lambda) # gradient at LASSO solution, first entry is 0 because intercept is unpenalized - # at exact LASSO solution it should be sign_bhat[-1] - dbeta = MM %*% gm - - # bbar=(bhat+lam2m%*%MM%*%sign_bhat) # JT: this is wrong, shouldn't use sign of intercept anywhere... - bbar = bhat - dbeta - - A1=-(mydiag(sign_bhat))[-1,] - b1= (sign_bhat * dbeta)[-1] + warning(paste("Solution beta does not satisfy the KKT conditions", + "(to within specified tolerances)")) + + if(length(vars)==0){ + cat("Empty model",fill=T) + return() + } + if (any(sign(g[vars]) != sign(beta[-1][vars]))) + warning(paste("Solution beta does not satisfy the KKT conditions", + "(to within specified tolerances). You might try rerunning", + "glmnet with a lower setting of the", + "'thresh' parameter, for a more accurate convergence.")) + + #constraints for active variables + MM=solve(scale(t(xm),F,1/ww)%*%xm) + gm = c(0,-g[vars]*lambda) # gradient at LASSO solution, first entry is 0 because intercept is unpenalized + # at exact LASSO solution it should be s2[-1] + dbeta = MM %*% gm + + MM = MM*n + + # bbar=(bhat+lam2m%*%MM%*%s2) # JT: this is wrong, shouldn't use sign of intercept anywhere... + bbar = (bhat - dbeta)*sqrt(n) + + A1= matrix(-(mydiag(s2))[-1,],nrow=length(s2)-1) + b1= ((s2 * dbeta)[-1])*sqrt(n) + V = (diag(length(bbar))[-1,])/sqrt(n) + null_value = rep(0,nvar) + + if (type=='full') { + + is_wide = n < (2 * p) # somewhat arbitrary decision -- it is really for when we don't want to form with pxp matrices + + # Approximate inverse covariance matrix for when (n < p) from lasso_Inference.R + if (!is_wide) { + M = debiasingMatrix(1/n*(scale(t(x),FALSE,1/ww)%*%x), is_wide, n, vars, verbose=FALSE, max_try=linesearch.try, warn_kkt=TRUE) + } else { + M = debiasingMatrix(t(scale(t(x),1/sqrt(ww))), is_wide, n, vars, verbose=FALSE, max_try=linesearch.try, warn_kkt=TRUE) + } + + M <- matrix(InverseLinfty(hsigma,n,dim(xm)[2],verbose=F,max.try=10),ncol=p+1)[-1,] # remove intercept row + I <- matrix(diag(dim(xm)[2])[-1,],nrow=dim(xm)[2]-1) + if (is.null(dim(M))) { + M_notE <- M[-vars] + } else { + M_notE <- M[,-vars] + } + M_notE = matrix(M_notE,nrow=nvar) + V <- matrix(cbind(I/sqrt(n),M_notE[,-1]/n),nrow=dim(xm)[2]-1) + + xnotm_w = scale(t(xnotm),FALSE,1/ww) + xnotm_w_xm = xnotm_w%*%xm + c <- matrix(c(gm[-1],xnotm_w_xm%*%(-dbeta)),ncol=1) + d <- -dbeta[-1] + null_value = -(M[,-1]%*%c/n - d) + + A0 = matrix(0,ncol(xnotm),length(bbar)) + A0 = cbind(A0,diag(nrow(A0))) + fill = matrix(0,nrow(A1),ncol(xnotm)) + A1 = cbind(A1,fill) + A1 = rbind(A1,A0,-A0) + + b1 = matrix(c(b1,rep(lambda,2*nrow(A0))),ncol=1) + + # full covariance + MMbr = (xnotm_w%*%xnotm - xnotm_w_xm%*%(MM/n)%*%t(xnotm_w_xm)) + MM = cbind(MM,matrix(0,nrow(MM),ncol(MMbr))) + MMbr = cbind(matrix(0,nrow(MMbr),nrow(MM)),MMbr) + MM = rbind(MM,MMbr) + + etahat_bbar = xm %*% (bbar/sqrt(n)) + gnotm = (scale(t(xnotm),FALSE,1/ww)%*%(z-etahat_bbar)) + bbar = matrix(c(bbar,gnotm),ncol=1) + } + + if (is.null(dim(V))) V=matrix(V,nrow=1) tol.poly = 0.01 if (max((A1 %*% bbar) - b1) > tol.poly) @@ -83,31 +130,39 @@ fixedLogitLassoInf=function(x,y,beta,lambda,alpha=.1, type=c("partial"), tol.bet "(beyond the grid of values visited by glmnet).", "You might also try rerunning glmnet with a lower setting of the", "'thresh' parameter, for a more accurate convergence.")) - - - for(jj in 1:sum(m)){ - vj=c(rep(0,sum(m)+1));vj[jj+1]=sign_bhat[jj+1] - # compute p-values - junk=TG.pvalue(bbar, A1, b1, vj, MM) - pv[jj] = junk$pv - - vlo[jj]=junk$vlo - vup[jj]=junk$vup - sd[jj]=junk$sd - - junk2=TG.interval(bbar, A1, b1, vj, MM,alpha=alpha, flip=(sign_bhat[jj+1]==-1)) - - ci[jj,]=junk2$int - tailarea[jj,] = junk2$tailarea - } - - # JT: these are not the one step estimators but they are close - fit0=glm(y~x[,m],family="binomial") - sfit0=summary(fit0) - coef0=bbar[-1] #fit0$coef[-1] - se0=sqrt(diag(MM)[-1]) # sfit0$cov.scaled)[-1]) - zscore0=coef0/se0 + sign=numeric(nvar) + coef0=numeric(nvar) + + for(j in 1:nvar){ + if (verbose) cat(sprintf("Inference for variable %i ...\n",vars[j])) + + if (is.null(dim(V))) vj = V + else vj = matrix(V[j,],nrow=1) + coef0[j] = vj%*%bbar # sum(vj * bbar) + sign[j] = sign(coef0[j]) + vj = vj * sign[j] + + # compute p-values + limits.info = TG.limits(bbar, A1, b1, vj, Sigma=MM) + # if(is.null(limits.info)) return(list(pv=NULL,MM=MM,eta=vj)) + a = TG.pvalue.base(limits.info, null_value=null_value[j], bits=bits) + pv[j] = a$pv + vlo[j] = a$vlo # * mj # Unstandardize (mult by norm of vj) + vup[j] = a$vup # * mj # Unstandardize (mult by norm of vj) + sd[j] = a$sd # * mj # Unstandardize (mult by norm of vj) + + a = TG.interval.base(limits.info, + alpha=alpha, + gridrange=gridrange, + flip=(sign[j]==-1), + bits=bits) + ci[j,] = (a$int-null_value[j]) # * mj # Unstandardize (mult by norm of vj) + tailarea[j,] = a$tailarea + } + + se0 = sqrt(diag(V%*%MM%*%t(V))) + zscore0 = (coef0+null_value)/se0 out = list(type=type,lambda=lambda,pv=pv,ci=ci, tailarea=tailarea,vlo=vlo,vup=vup,sd=sd, From 20ea9c715f0656cd8305dc5e391790d490a998e6 Mon Sep 17 00:00:00 2001 From: kevinbfry Date: Fri, 20 Apr 2018 22:53:51 -0700 Subject: [PATCH 492/493] added scaling of vlo, vup, and sd to account for use of local alternatives; fixed issue where reporting p-values for wrong-sided test --- selectiveInference/R/funs.fixed.R | 2 ++ selectiveInference/R/funs.fixedLogit.R | 14 ++++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/selectiveInference/R/funs.fixed.R b/selectiveInference/R/funs.fixed.R index 3aae749..153e48a 100644 --- a/selectiveInference/R/funs.fixed.R +++ b/selectiveInference/R/funs.fixed.R @@ -231,6 +231,8 @@ fixedLassoInf <- function(x, y, beta, pv[j] = a$pv if (is.na(sign_vars[j])) { # for variables not in the active set, report 2-sided pvalue pv[j] = 2 * min(pv[j], 1 - pv[j]) + } else if (sign_vars[j]<0){ + pv[j]=1-pv[j] } vlo[j] = a$vlo * mj # Unstandardize (mult by norm of vj) vup[j] = a$vup * mj # Unstandardize (mult by norm of vj) diff --git a/selectiveInference/R/funs.fixedLogit.R b/selectiveInference/R/funs.fixedLogit.R index 8d810ce..b056d5d 100644 --- a/selectiveInference/R/funs.fixedLogit.R +++ b/selectiveInference/R/funs.fixedLogit.R @@ -110,13 +110,13 @@ fixedLogitLassoInf=function(x,y,beta,lambda,alpha=.1, type=c("partial"), tol.bet b1 = matrix(c(b1,rep(lambda,2*nrow(A0))),ncol=1) # full covariance - MMbr = (xnotm_w%*%xnotm - xnotm_w_xm%*%(MM/n)%*%t(xnotm_w_xm)) + MMbr = (xnotm_w%*%xnotm - xnotm_w_xm%*%(MM/n)%*%t(xnotm_w_xm))*n MM = cbind(MM,matrix(0,nrow(MM),ncol(MMbr))) MMbr = cbind(matrix(0,nrow(MMbr),nrow(MM)),MMbr) MM = rbind(MM,MMbr) etahat_bbar = xm %*% (bbar/sqrt(n)) - gnotm = (scale(t(xnotm),FALSE,1/ww)%*%(z-etahat_bbar)) + gnotm = (scale(t(xnotm),FALSE,1/ww)%*%(z-etahat_bbar))*sqrt(n) bbar = matrix(c(bbar,gnotm),ncol=1) } @@ -148,9 +148,19 @@ fixedLogitLassoInf=function(x,y,beta,lambda,alpha=.1, type=c("partial"), tol.bet # if(is.null(limits.info)) return(list(pv=NULL,MM=MM,eta=vj)) a = TG.pvalue.base(limits.info, null_value=null_value[j], bits=bits) pv[j] = a$pv + if (is.na(s2[j])) { # for variables not in the active set, report 2-sided pvalue + pv[j] = 2 * min(pv[j], 1 - pv[j]) + } else if (s2[j]<0){ + pv[j]=1-pv[j] + } vlo[j] = a$vlo # * mj # Unstandardize (mult by norm of vj) vup[j] = a$vup # * mj # Unstandardize (mult by norm of vj) sd[j] = a$sd # * mj # Unstandardize (mult by norm of vj) + if (type=='full') { # rescale because of local alternatives + vlo[j] = vlo[j]/sqrt(n) + vup[j] = vup[j]/sqrt(n) + sd[j] = sd[j]/sqrt(n) + } a = TG.interval.base(limits.info, alpha=alpha, From b24bb31b2a19ee3fe4a0857394188976e8723b06 Mon Sep 17 00:00:00 2001 From: kevinbfry Date: Fri, 20 Apr 2018 22:57:54 -0700 Subject: [PATCH 493/493] added 'full' as argument option in fixedLogitLassoInf --- selectiveInference/R/funs.fixedLogit.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selectiveInference/R/funs.fixedLogit.R b/selectiveInference/R/funs.fixedLogit.R index b056d5d..3a43f0f 100644 --- a/selectiveInference/R/funs.fixedLogit.R +++ b/selectiveInference/R/funs.fixedLogit.R @@ -1,5 +1,5 @@ -fixedLogitLassoInf=function(x,y,beta,lambda,alpha=.1, type=c("partial"), tol.beta=1e-5, tol.kkt=0.1, +fixedLogitLassoInf=function(x,y,beta,lambda,alpha=.1, type=c("partial,full"), tol.beta=1e-5, tol.kkt=0.1, gridrange=c(-100,100), bits=NULL, verbose=FALSE,this.call=NULL){

          geVj?-U8jF8SD%IdE{S9Q~5jO<(N_%C%lS?oRL z>BZN4P_e;K;@wDLSxu<_SrG9?Q~(7F8tf?Pm|pqn0Ol`3G`&BJ zA+_{~VSL#;45``GtXM_H>bE;H%dQwe`o4R!HX2j#j`7p(+Go;03C(;eI?sls?EExO z!>XY%Gp1|@xf82>{cpz*?4W?7N{i_<4>sLkplN@a0c9|Gkn~s>Bl?3bZ^-b#R$cvS z6=6W@*5>N6Zl0|?e4FTZ?KO7oFY%9|fu$Z+3uXMj`&b@Y+C+^=iAWDI&Bh?{{7M$RROsBz zn;&n+g@tEy`rck>0LmAJ-j-l{3>H28p)Aw^@*jl1A#jId!&D2sJ@-i1`RKbA}g#iuyD8Y z>6*{X&?tOFBL3!2$V$8Fv0g@i*5@^X&n|KyfnSXEifbv9r|tUrz^DS>rC0v7o1%f1 z#@tZ%*Gri6$5EkV_dH+`!`nuOG>m>Af5iP;Dl{FFR}>A_z!r~cg^QLZ5S{yOcPc$I zwhq62t(Ncu^FBG#N9A#1+rjiNeojsp6+V5CxStQH&!omLAsDA9zKNQ9rsb zzx}0zWoiK$xz5W_>|Ubf_(c+uZTIeC-75*bkN>%fH_>8og|>I-*A-|P&1&^s7X>qw zoI%#-G|;~8_+6aRgiT|_<1U4CP{?5N`Z_@bJgqP6Ck(1XTNO2Imd^&MVxJZ{FS1~L z;P@%EOTL);t9#pu1T&Cr3uUDeQn5m(nO0t}6NtX;pK25mut|_Xgr-#wDmp^*)0j6f zIed^M=RFa~bWbcJzB(Xz><+Ekqf|^eQ#j>^^!)|~75*M@p?TtG}1?*I?VfC?+PRCy;+N*TkOx6_1d6Mtt_Z)(#f85SF z4`MNWL`8S8*8s?q_nj1_KVm80jd?SxK|rBdwI|)PSj|jU?A}uV31T_H{4G>$mG`gm z_IL`ZJKp`d=xT@+(c^P_BqA{5KeOj%Ol{aY;4vY`X$VF4yqU~3eqw_m!%m%tbPz2& zAs8bljUn<+X?0rYp?hds$}aUxtY6L9N1Mn2RU~)bJ2G4T@N`*Nd5R7wCQ+O=Nloxx zq0F{;X%CP|DnZN_xv@ts&5|@Gi}fka)4CC7vHq1l(PPsCN_K`Rnx(iy$!poWP8}xD zmsdsnm~MfgZP9N_4txW0RdDyeLqDL=MnUABha_}~9A`-KaYuiFHl8d20U(^1Q zV#ac+tXIf=C@z`y=h2(S1l1RkZRZAoa$le#j;4OgKfLbne4{|K`6$P2>8-r}(=1_} zIt@)qZ2M$|#Id6{g|XRcF9w_UwA+6Y$FgjrNVk)6|SfCd|lHj^E{?uIJ*p%87$J=oTNOgi-YCRj(Pp5*Wf#J0~#JfUk#kk&0!A$wFD zi-UDIVvI0u=gSqs$3&=;YBd(SC57ek&l3)b z?SUo%(aWb|YO&;my_KAeJd_L#X7?yLV5^!!+GAm74BX{-DC4aFQaa54>v4~Pcm>V; z#8yot?&mq&@Ua3)V%yXrCk3#@Ps?fL!DpyzzmRh`{0fq8dDm)uJr5;UpXvH8Ucjy_ z$u|zJ3W!3*#utwkW8>$S39t7tK@Q*ESr9uW^vZo}|xLPxSU%Qm2G%m~ zJKFbg%a3DDigH98LGtWmp3tZO1UKxi%zsgiMdvD`G`O}w5y#`f%#(^3Z)^5)a$*uX z{3M@96l!2cb=UKaP(}37zM4A`pbXg`Z)pBkln*6w^>6a=GEzgEcQOrBA`YcbnmfI~ zD%ms?Q~JH$UMayx6Kjadm7Z;_=t0r}Sb5B^Glhl0ms zdm?Ttn)gX!mDLu-^7Y_acZ?Uh9Uaz#V zOGeTogYop^ zosg{d+H~{%IJS}Z#nTTxfCQ$?p;!F}A-Bv>&!1__$5azUe&r=&8B2n}o(>jhR8bgp zV@$z90rxBpT4#ufP88lLS&T{ccKXMbP5^<=O30PH4N0#Sz8!XEL-!p%Yef-;s89Zn zL1m>5S{?Y8I>&3VPUuEY-x)7mwQFh2dWD1+U>wi4@W&(1x zOI1s*%A&V`;`-3bHJ}J2Y%jZmSXdJumBbSWb@t02oBln==%Ckns+ZQF)ygydwPrX{ zpNI}03z)!A9pR&!H=Qss+oUwO@F9@;=H9-&^v>BX!A=AQ+My_IsUd2)9zL5k|Oaytya(ZuPILeTPTuab74R|$FGmYW7u?G z*}y8#6$-q^n{VA=hNgRM9y2QP(7gfnz7aFn^|Y*vCsh)&cE5IMPnN{ONadlN?Of0> zOGEdMu!)8D1^NG7?uMpxy2A&;iAb$%bt1)EV#bo@&pTVWn$N2>@v5l-n&!3AG;V*x z`XZ6#Y9)6d_IiB$q;84C4jPk{Ngg0!Rp)CyEi6&ocfnxO9V*zhj!d?zBXxT2hCzoR zroR4u&-T1Il17L2jt1310IS=M`=4l#((LqMRX$AcJvv>mk0+AEJAdp%i0HCUjnv9yqV>kKNlReah}5IjMKvN9G0dD_Vc^m?ZLaq}FA^5){3M%w*8wO)Z>xp4ow0teS*TXweIU%F z9IupL$K0M?I$;k*sDE=Yv)AYm)FW|-mL!9E%m1+{GwO*%C~SlPcBGs|!W zYNHaDOL$ITVVqhwSkjqORNU=b{{xvI7;pbAp0Bp2;k zPGk0J*;r9?B{an`_qK<4Zt?#Gg(t0VA;L@Y^>OQBe1H5y?Mj;fG+M5x5!|-;X7vYW z+-4p$op>4kGyfwrI(<9#r;HQ2Eo*KI$L+-iJEfQLo0lLcK!~P>l#A_OOosklwuV%5 z@w1=VDHxiZCv>e=70A5-YvzizSnZ| zVCcruNj(+gKL?=X?fSU^AvtVOu!}g_B>=fo-Y?1Gn%LRtYCfT+j7f7xy45K=@s+E< zwbWB}K=rk4T{#kntt8*}1WkPiHceP?y1s_*-p$AxCsCoz{6OTB$KgmmTp7&MEC9tz zZi~%VULdLH&6$1WqEK{6X8rm44eZ+K@q3D_2R`E0h2FiO!QvNZH#yn3fp|M|8}+<3 zHuSkxH70LB?0LFGSF2ns-uK`89>!mQpB(FFZ5ffc@ne9v!w(*?*QH9_*z$eZ`Fs8k zSulV3WY4V=vJiEMsJW|(0;Do!Rdw?*jJ>Ihk~V#i*Iw4Bb88K|_)GT<6)=OjZ87P% z+5*(v$>BDArvbe|r%o>3Q^&@CM;bm`EkbIbDQ8ZN9Tw|&Byq((f?8*}1pAh8q!6NS zrdsbqpPSrocH4YIa>Co*qM~5P6!f$cR2)MJ(MC^HY$uc+e|9(gmNJsuOiDix4no9< zwSt^!GG?9KEmk5^OodzLpC0xyI;&|mRmcz zy9>1FY>$UBqbJcr7h~b&TEv{6@zy-$asBk>yD-)cR+}0PZk9O@XqRw{i1sE?866cYh)DA>=a` zb8lzT#&`!&&bNO=p!xglib`_vXOFQ zeplWW=Mm(dXU+T>Mp7duwzMQd%F?gjPq(ch={Qw4)zl91i1pjP+6H4&ip11|>C2E4 zS1IBX*N>D|X}_I|29R^CkGt1R8jGJ%Chv*WKp~&JXVGsR^iCHk;#~5A>f0=emn)36 z`e#-qm28QH3>&uk=GoZhdhCYiz5|e$lQY@R?t~5R9lq)86^4=x-ss(adYCQ|F?B^Y z8|s{MxFUWkU^9bQyzbvVD1OYQ_Sd))8~MKewQ7rmtg0sd(+Zy0u29r0O3DW7H8aH% z_h`^B!s!ovfE~1Rr3+aw60mTHVP;t;3tBs=f1^)LLe2x3#mt~dph)Oekndf=!ul+u z7;i3UxhBi3dovA_xSuQQiE=@`Z9=wg@i%Pw)pj#4pBcpl9`Mrm(qNMEfoi=O0yGA9 z%)akFif+^M)ozC}fvU>e+jfwm9WPt6KJm!JGd$R!QTuf3S9aN;)*R{r`0FB)Q7 zx7&6#gA{o8{Tt_YRt1b>oW8Kwzg7Q#teeY+iZNyT#h^RO4N&%^ZdwGHi8nAsm@5l!4B4mck9xQyd@s6C>u>BWv@3smKVc4*mGZ(wGY(ZMQ5o&e1?6ffD?( z(E!6w`&_Xx6@YHRpL=5p)v%53XJ}S~I;1~+H0+}+jP(TDrvs@S;O3o|_}GgF$yS>C zzc$B!@dnFvH*RfgEv7oN>~h9OJJow0^tfW#75}Osr&~~bSZlS5r~wIPrn@GYM4|l? zhKq5}W3DeqdwRTtw7J(W6gs4_>Gr|(wUh)1b^OM#&3^&O;xEKrg*<`0XEH*^E7_rx z)OYPu?NjJ!`hIZALKSnl{u`%`YXDh#zbe;3C9MAeE_H`{AjHw9&1^Xlln=;%+c`!9 zZO3RkGAlQ+NoyrN&Vde!%4*b~#o3~1D4tfamWKA8d$-kZ{lN06SL)VZO`$%@UeV~; z1xU!>B{{=LfR1D8Q^&-dk&^1DH+HTRJbW6Tp6*J-yuWTqyLxs(!Q9N#57{k{A=G)O zaAzX)T#_XJv?WvoqgSZ2BBGszNvlIl8@5MzVZJ-4MLXo0E?bx!u{l4hq=o zX!h*g_ARb^9^G3I#fsKFqwUVGws={4>PKYMN9??P(&kIKCwSF9`Eo6ifR)+qq1>B$ zAS>-jRsTbNY{|JpJ!5;^XU{8IZio2eWlP;UcfNMe7(1QinbWaSM`%* z+4Qz};P4lN(KQGYs`B-YWkyO?moo?N0wjy+>A%Ye#I6g4OrGiHn4xlxFqfc-zM?Iw zo)_w%L+5L}P=hm4SwrrPkEUa>tej&_KLa*~2~7C>qJ;v^bCSVUo=BzgJY3j+3|$L( zhdcjU!`63u9dnKi;4^~AeRe(?ESyvG*d;0fq2{-9!dn2t5A_8{cN9aql33K!Tb9_m z%TDmqyDd&qxK}j%fPe*y?y4#OsX}Sp;*-ls;^Kl!0g^;n7dxpL^}S9=jP zAqj6HjC_{<(nCZ4!-ne)(wI$O)z!A67iv7ZTAZ{~v4Q5_n~f1xARN(qf2V&P>qb*n zL^4F6IEJjA`eHX0rAV8fDtCfrF3pJ}|F&T#g>?SQf;uF@n6LUO9Tr`?*5#i^1JN-8 zj|bSB(AAlGHs4nnnrtnd{Z~}6B766Pv6T!cGP)y`NK3)o{iaRbPR>9o{9HMD%@ql* z)+@sd+krBzp15y=A3F`NW#6n|fz%6>%kh^NP?|QMt>cm_kOh=7i}?>>XMT0$g@cH}5`*o*uMC22k}>+Pm-yA_d34Nc*%ri~2<=f5hT#n# zG4)=^zq$UcdcUzLYv_3ibJy~S2jreX&H34j>Rr_smLi!*1k&vOc1 z7z9e)gNX^725`flvwZsBpo1q>?UO?>wpa592od-&FW|7YNK*&Ko|btyD!T*}Zsoh? zzkgt^`nTJUWe!0Fuh@XZRa5MIsQ&9;Vl}>16IdV1B4g;Trsg{F4Il+-wR!p0U>)bB z!W*m4p`=_uwQLVRmgIFFo7u|<1htAJy|{5qk*YHJvCaq8ZAnXXQ}l?U7k-Cow?pBT zKwgJiH!)PA;OmsZ8g%esLT_FYwq@xzRQPbg+t1FL904>~vk&^7`f)))&0SEwv4FV; zPdU#Cuff~7m_f(Z4J@{8r(cM2gremq8M1ZL|9?M@L^iw+wyVh>IX~1P!I(??#KInE zxh^~K`O6<{-gR*x)6E%(cE`CY$huh1{AE}0DKT)2IrH6+Qv^u|h93K=OF`Vdlj}Zp zxmaPA;yd4#54B-`-XFVbhgAM;A&>6MqR(u?R~1olEKWC`XZ!L3iphua4-#6jGf)5I zT=O6jU3x5b^*_Xp4;{V%#TOxDX(IWvWgV7YZ0~k5NdWRq2VOOjCN>f{#U&(`A>|7* zm-Syctd4nf@^+>?cw3l!|0KQDXNRK7Wy`XmJ1UaF$6g5A+2+OHW<_F-r6)tg#tFzS zeH&)9>ot^qi%ZTX!`6XP|A#?xT6v#&I&+?G-|r6 zvJE4C*4Jd*(B9&e9XxUNxmb8zclGM8$B-3%t7w2D5SuxD`_4EqL7hdog~zLQti7o4 zStQpI3Jx=~nbJjL1K6W;(On=69rg|^QOA-~hc0L8e1@9#u(A^jk(l^s)TC*jFp&I5 zjJ3*?uu`OX=7(+@G`_sQE$_SwlA^;)Y>vEwBE~bC3v+iMtK>S5WHbl#(Rov{zbQjj z^xU(^BU`>o>-E<_EgUnmjasISQ=xtN>yCD|i&%BxbjA=d9+K+3uE}5Q#3Jv1D{YXRuF354TOUIEc0ArC zXNb9S`|U%^#G%YamU%a)h}60=`F*rB4N(3&dQeB916%)laB}<0HVDosQC^i}$2_kQ zn|nJfq3-6NjlKvetSY(uxPp-th=%2&{COlS9XDn;;#CR68Y45CwX&<~kK zf|6cYURV~_XSZ`gA4(IS_4OEC!49(5T4ZQ2me{B5pgG8cO?shsBRE|lBY8+y%k>1- zywDMRY8wr4{$n5Z*!v;%$N9t4{v>o9^s-*;reYJh+heSM5|YYWB=U!b-9c|tfbYLoOaE_inFhJObsHS>DSQFGYyZi z^gK*-?IOpeS>IXlR9d2Pz_)(I&V`;Nv=iK6A_|LSCCq>;K}S$wMQ z84`uRF<1 zo!3d~NW4)wQ40W4t90@BX~?VMhdXMuxD>uC!pS zAd_WIzX+y3CN&L*4`N;DVuD^G6O?u76M4m5AyDqpPNMxcsNXc@UCwCU$_v)@skMtx zyZ@oy2d*m^?rPKvy`eyMyR>7VSrChwRHE_@k3h{8C9um{KGaN*^HEZU4VyVDI@^U$9o{08@$B)Oak3rjf1pUp4o8YH5pZ|ox3%VHt7e1fe#G;39o$j>oK$BWs`P29n z%#?c{Hg#|o%I1#WKOA9&?QfXAEp}(ayOm$-qRcedlBp{b;kf~XaFTjK#uxNuQrMB% zMTPbQ!MehB=}4&#K9Tmu2;vW=ePB}$#_k<`5Gxi)sn=C|E!@Qaq{)v`W!4#vRyrT={2;J34V9mAB~Am zzCZm+sDsw;Jt|FY>{wzV5wP@25@TG(n^R2*Xf;>$w@@Gu%Xf4_ z+t*!Cwj}m~$vY3*BAnyj5G)~A4rs5ORK#u$u6Wz+>lm>RI5{7z4w+|8Ulq6|4*Bd} zIUUiVkagJH>u=ctly)80ne(ktnbK<)`pSn?tj$b5u{&`CN_HK!RvzF&%F+mP@xc)Y z_&6B;V2fYs8_oV!9?pcKXKsOXXF4$=!YgD|MF`r0LO3F$xv`O%Rzb?u2$F}i!d+ZE zup~*=u}%IM6t#?(SIjOz($T(Cs%rP4PwUGrrVw)sZT z`wd=4vL+6unj-OZYnd^@7pgWt6)LT(p>KO0k-=&KC>jfa>DMZ;$uO<$wkj1W9H{ri zOeCT1+qNH5`gfp9eer?%_bo1_$_L$lHk$64~PE=+RGGxs-lQ7@ckXvEld0 zs$X$id6;yH;f>8>Y|NGOPGN0=Qj>v4s)SKYNl#MQyfX_;?>3WL9&hCflgsV@&ap%G z+yjT<3Pa4S2q?3Dm?aK_EPfni^j7x@86$d2AMfdNw-WL; zI<5IWe#X4Lk~#cSJE2MCT~YcC6YL(Aaj@;C!+>Sg*tg}bm{Icfi7denS`+MV6`u`- z@GmK}gIeOyRl<0jeZdABpC~_)akPQdZ9dI!-Taa2L8+j)H-oQ937dP?7~nQ3BvenV_)j^lN;(%O? zFShXT>?A5`Ly~t~{1p>VFdiIHGO-eY!baPqD+Br9b(GycHkt<7zhs9Lr7a?5)AVSu z-%lvkB`*t!E@HdOl*iwu!{ElR^A*!0kyzzM*DX>2O(tv`x@XU0Yt-3ZE%peoTc`|a zUDL*LnwI~rp7sP{!CU&;vo_d5|E0`=Cl=CP`$p~#SjWn3%1<w7`- zJ=f$m78xN*l6lBqh|gFk^;9enyJ@e$W5h1Yim8IdmT)p z)whThH&`sW^@AWI`@sDq?r+#mdy+OtryAbqaDM!Cd;!w`ozoV$KnqlPqAGW`BxWkm zyuPf=1C-o}x7+Uj!S3%jo*d>5#^T5SQpSe1{9q{~P)s!+!tF8^uRblu*6ou&G&XC| zVq=#JMRx%UYjl2@xIKf~W5h%5rde42`;P-MvSM|nOz}$TvW()$2^cf@9-RFSwSb&^441pfzZY| zG!UsIf@J}R8~;hg1M%oD`Jo71GaW|jG8D zyL@FQys3@)N2f%_BD-weh(|$?a!PjSJTD*SC7Ud(asZGriccIG&&1}D_q@uI2Oxzo z=p&t=hPi~x)m3|cK;7p*XGARzVsr8?#_%;N5G%jmub@n0(M-mZz*_`JU$UbA>BtL) z#JPXuQ65N;`^WV6SUGkIr2UumAP0+?Xb&Biqs11@5$@wvmXO1gOv?JojpXlHoC(Ki z@wIqW;%r_fyf0BFMeL4*j#C`x1UIITpxO54gDDG?s2yZX|C5RN0X`0&G_0Y5Phs(_ zzX`gnf0}rk=L${jYu{hq+Xtnm`eL)ZOQ0QZyDJXg!MG=!C-uu;Z_QEerjv5+kli{bUND3Hj8&Bp+{DaE-6IlT zSAcT0EAQ1L4Yv2aPkZ=V7LyHsO49F*#WJhl^@oZ?XwLFgRK0J78AES_ckbD$zaxjZ z-~Lj-%7J(1Z!$$e)DUAlgZUD+4$VYF-V25hDL!Fv8^cD1p+v%@45W?T4Xf$Ch#5w) zzt(mcL32`ZB>f8;s7#fV`At6xm3iI&6ux+2y%VoeiLxvd(`kBqR{e)LJV%wbb6Z0l zjQswlHV3x;W^e7a2~emi*}OmR03^QtD0*2%6MBuF+sf_Vhm;p)7wEz#!S$->r^)Ss zSp5BE->tu7bR1^e$e_){n!I(D?9UUBqn~K>ioplslGT+4lv$zY!`Re5rPD}GXcl-o ztq6%f-wIlEe#2aaM$W{C43IBIhY_ z4`jb#{Y7i*yeSQo#iY$UvuJlMcWL>E~9p#m(g|@iF@H5}{K?IHYiPWFc&^1sz z?$9ug`F$aIXUqnG^jGk!g<~t0$lCqOx_%y7Y&NIooHdY?#*w4+b{$gE+5cOcs6|4$ z?1<^sr8L>@WzLwQMFN4kw37J=>iAwf)$%jMVqLleA9m}Vx(c(NEfZ4Zvi@twxz z-3Ht1h-(lT`gU7$b1zga?TtGm`Vx~?Q>F7i(gDRf)1RgU^2GWs*ZC7@v zVWFjDo1w-*XmI-QM^=6TQ>vPxU3A@{EU14+;M)cyoU)f;by$T)Er0%vlPlPCy6ukk z3wnrb^z6J*l!?Scx0fF{(nDe7!t#jVBE)!bn)hGj0qS|1JzS^wA*@g#;p0s{=-8&Y zD8&-ci;b85buEu25Y&?ckQ?QFfGOQ&}l4w zBZStr@|dFEI;i>E15$wrkSO0&-c@X2?>k zn0-X;&H0WJsNd0QMj8mlX4_nuN1A*D(6< zf?3(ew%?JJ0aDPTfe=|5ER?7S8a6C}@|CZtPvd5>QKH{>o%20}zdRw=-@ON`XQ%k? zU1Y$ARSxZbTs%lfbPi@R>xSlFi?X17*+}+3)iN>>4K|HSO`|)Qk-9tD_G;}@Y??0r za5hB%)0tQg+<(0U_5GnE!e!-nt~-HyDuo7`Y6~B}`D%>h`46IFjHZyJlbwE|S`#dc z9e6f%^`ItnHmKv2H?|3>3`%m!KuQVSnc=}nBrJ2)E0=wPQW}ma_CG$D)>WuBe@7n3 zCnghi=H+5hSa<8`t1^(I3DkH&qLm*vN@1=+PD271t78qt1d={018T#9=0`vkN;F*+4@nGai&62EId zSVybGTYFtkD?>U>Uz*EVVQBeWpl{qVgFT1*l^z~7!h+vkc3jFrNcyim_9u-lf>w)JZ>Bw**jyn0JLvo|D303I}; zS;)EbaPjU6GdA6Q^TW$`2(neGz7%fxV^MKpn##6q(E7?r+|~Ue7Rj|flo{F&^#|LV zx?OUy@YcM!>CMV}0Ioshty&Txg*8={aGs`DyTk7vvG zCifTWzlVa4ZKnm=k6<-(U<=jtt zG(Vl0Us4o^Syjaf9NGCmNcq4a@y8h3ZslH2NFVw(%Qm$wGL!9FuUrN%p!pr>J=j+2F;ooGdbDcurc`bU3Cplzee3Dl>X+%Dkg}2yE%qN~rWw|*syu~?dSRi_`o|E? z{bR7XgdSR@bC)i?p~XbL!klzmgw7+9UURxk*xOrW&~ix`D=!uJ4PSnYoyWwZo>fsW zRsB+Z9Qh&yT@y2lew7JbdL%0~xg2aeD#Nq-s}A32?7GaNxaEJp;$&-z{ocX*h}i9HL zeFiIg9HLz()uF1ZQ7T_k>Yg9CG~Wg~?j)F{6jJB2CZ$0v-z5(L{feH!9Oe{M&QOP&x>+xHlvkTe^TOr~F8hkcF9jt3}*$4}nZ1b&9<(!{T$3f=b<1 zP$+yPP>(JiU$YvzHAt;NiO9V;L8)4#>b{7-H_3=$*G~}qXz7vgPB7J;q5>IGWVH^# zbZo6U(GccK2eGO9cc0=ALGMFXcTL|MgDwf;Wu?lUnEzyv`c~Hg^_R5Yu8q-P$FUXGg_i{RS?&^NN7nLzVf9rPwNXU1HCThmiIwMfOc=A7-mZ+|OF2gYZZ> zS|f3G(D`^&eT|$59X^4DYcVv~{4jpsaihNwbS93I>z5aV6=co68L@_9ZG36oQiFwQ z(T5w6W{cmFr+w_&w&ufjPwG=kEb)7MzpPmsQ(Y6caY(WOc{+Z$Du5GBPaana%B6vp z9+TZ)cAv)ns>zj$r)Ht7z&Gj9!$l-+zh~34?-&$(_xvF5JB}q@6AB-X1wxT=6>ssj z?SP^kY%LDg0L8}YMpX1M@OIKWjm=mnx0$ng;irioPPW%rz8}SM4%Xr9Yg|ZO&R0Fw z#ewgQL!5mAs7U6kN}w;w1q;<5*8(!7A^pYG6q}GGpsbguMxSTLDmQ^`J$E&sMA$oTZzNz_<(Gh1_WclkEhE~tvg=M4G%fb4w9sh9367Cqv)^v!%7%I;m|f8sulBu`E{ znn!w&tWsX=S6Pllhk9H|ON`KX;lh~MW$N!OG^(s;2z z-##nz@>M8Q%G{~G|1frY+g*v$6vD`J@Ai@gTru0-Tl1KEBvhNeJQ?%I5nbe_Ufr$F2Y&By#pP z-5tm`RPs{4L4vLz71b|eH}K78kJekV>d^6G^l8f6Hpu<4cK(>n2cVekIeB6HGzOk{ zJhfRk2ILBF#^D)fEIgNy(>gE>sT|+8M{*})g~9yC^!+DDlHyEuFp5@UtfYw zi+L}u9v8$l%B7sCbI|BA=!DZUnCEaP=yB^kXt}-3Xvd>Uth+(0;?Zvcjl?uYn=7}G z$a&fSb6Evsg~_QrG<3n1bAtPV_M1Vjj~4H_yiIIsJZo%|=LQjR`{eCE+hJ4n>z+>+ z)FEm$z2tR*HWKz;{P{@W3pD(b66U?+heWOPOIL$vp=?&XF|mvWRWyCso`ktV@}+UM zHSsO}e_++^F7^#NB~t-!pbx)K8rUrK%hB5a6RRMNr@oB@975>QaaNIx?I3NOgi`XN+7gO zC#w7L{=`yJF!P%6amXm0aSmCdV(XL9VQ!X>kkOVapnNM8>mGLg9dRjz+|s_RhK_v@ zoKm&i{*qPMMp3HC%om=^GpE zhGVzwo)Jv3#eennQDITYID4nmYjp#2lJ2xh57I$RiPX+NV>V`eck>cWSd=&n=f6#goc?1c6-Eu zQkvoPUuG~8UlguB3Zg)gzmrqo$!u)Y?aQ^)Fov9;XOErgz6{Ar+a8Yp{Q~3(8?ipN zqgXX!C9yN-E<}6?6ZjmWiqvPNy{aK8n6o^?czdoI;uS9+%~d@C^-Qc2%_7R!`hj0K zR;3+sI0f+kkx1 zLaQUkjX?`ZtbFlQ>>SNy$a^z%meZb$5j=q!AF}+Q`PClliEDk>`jK{~q+1En)P>#) zvM6ANe90&3URU@ZJAWRI<=XuL<0zV>h@>PE36-RhWC=+WGGr=LLXjjPm6?#SL}Z>a z&+~L~&+}ktkSQcdq9jpzujh9h{qft!`@DPaXAiZX@3a0{hxG65ac+vyi&Cc zA*eYPZT0nn#*P!TfaC2*`_fGR9gFuOnOAdmT`ATq&X*0n_N*w|?_Jq)`>GNfwcZ2LC6Ew?_FO z70gXWW*vKh*z)jXXzF&PBwhieUqk`v`lU*5L>sAj`C_Bs>gUjsBeQi2k&Ki|7QM|) zxCzKIgCkGFKOs0i;e;%wD#%(mt8w2u0YNM@oCR>v&`|p&{%l)2!kQ2gP<3WQmdq9@ zj&u$r6X$<*_cI@8!JmH?)tH2oy|yVhHK_}YimI0~c)Ahh$+j*DmKtNk%C10*4|l zibKkrAXU?I9HGZgPmfvJBIWThEk{22AVk4K#Qf?2$h*EwSg0=!sZu(%cMxX?xINns zr)Hc%%J+XtHey@>%6Y}ewS_%M$xgZPEVTk4JK*jun2I7e(YY-ew<{N#k{UhL$ zbno~Ck`649biK`MvXFp2#oIm#j!@><`EY*U96}TjX-L|b235lH;q{BBk+Shb>jrIM zsJ;6UYJ{F6%nMw)Wq32B>Mg17?F|j2ZQspk7e04L*WJMPGUP78jBZV^9`i)fmiS*d zv>^|{%+#dMUc3#l0q^c{$b}+=cVCj8PCS6j(e<=1Gv-Kp(QT4xUJ8k)C$-!pBg@Y`CoGyc!`7tnm?^Ie>D$)`L!-7{tpvHy6G+U4ZX|}T@#K>KS(kipJ#jkh~dhN#} zWd;(+*=O(j`I&x5xtHGHAzm-2I$bckIp`jWYl*eJU0Q$-4!7GM9D&q4*F2i$=L2^gfwCoNzvJjm zgtYXeh4l*x_^zQ!Q8UvK%(Lx#*ce-A8qUhN-INcB>IF5Sw{gJU^Da%~NEXui?c45$ zH(~*iDvvt(`Z>Z{4qy77Nh1+;GcHO3hDc$#9#zwI5Sk_%0#{gTBkaJNkMb5}A$|^*a#-txF!ywq9S1bjDrW=Y`_PnlD8i+=nb7PB^CJ+p9Fdt3BfH;6nM( z@g-jkp9})_*7dais8yQh2Y%AYV7j9K%&&K`yh92APauTg79M-Hhmhg2eT)30qB`aWQ8cYI~&fI3qCxWDB(4FlLE z;fk!wSOk9;SDR-R19{Ea>HQV)NPR-gY3~~;P<78(KUwJ%()ewYcZ*OHl=Zqk7mzB2 z{L^ylt1j;cMrHVhF=r#BXh~`(=|T+P%3GEP>M0_10XMl`dp(58d3?}7)H#IWqQZ39 zcp51-%X?{G&4o10vaVW8K1CjGIlp>iFAkxmeI!`bR6v1{mnH}2NyMo=q`*)K<(F^g z?5(775yFl4@2Zxbg-2qGzLC34;KmbQepP`m+TLC{%M%*xzJI_ zr21PgvM2$%@sm9(hE5F@IL)Y5L&}&eSF7Y6 zz}l_N9N4rBA$+~jbTYsb%HMb(yu;H7+2-WdtKz(E*ptVGaU&5je%BEYNFd_?pm9rtYD0b@r4K>EuLDt z?W*4(dg?o5rcQDo8McvCm^746Vl?7OZn6k{7p{WKbr^{}hPYmkK<9%+ZrkyqHYEG( z@c9QlEQA)khFK)%jQEl4pK}+EA_)ri@+W8QfEB;Yn{_x7X|zjKc*4s8*pQBmnWtqC znzLcXMb8*0X5d$*yS5^DY{ud7p?Rp>Xy<dw5 z*piwY3}yM9&&?ZV5n^oa&Q&jTA;$Er#iLu|Nbw4_hlGwIAm^SYpK;YgsD?AWHzrx& z5?cGhWjP0wj^EFUaWV&%f~47n@^}P!TgsX<-V8bPosW#z@ksgZv5!Y=T>!7?M7qCc z3?XgVzlu*u5JHHTsy2q9?_FG)o}N^Pxz{bqEW{nbD{#bbFubi9_P#oFvPRdI9Yi=lPuiHc+v9 ziLsiN5wyoba+wtoiBozbdw(;!-#K>E!In;>lCAKPUv>s?kDZ5B3dA6Vri zcoo14SwKYCNd(zOFLP>=f%Ng&<8tfcpkS$e;}b&~u#zqG?Ab0zvDNm;7Gx0cr<)#` zc-BB}#5Em>5)!b&wFDc^*&_u-DT!5Vzn{)Q1Obfuxib$X7@} zkhC@TQ_ZhHRat@#~Sov+hz~H7)|iAzfh5;x2+WjIL4qFbHisciw#XK?6PsLkj@C_f^9 zZ+nR#MEi!RTro2Q+CZKS+gkv|zt;j)6&s+Qc0u*TTr5Jl8I^f)%`D{Gl%uulLHUk*TGlE72;+EQ!GYuAkh*TFlphy?R7$0KEGy*! zoS|R#JGJKsUW~AOuc|au*EI%;!5TQbtNEw%%Xu{t}R|o5}Nb7|31K+BF~235;!WIiB)8a97?q zKjelu(4TY3o4@x#>R;Rye4%?6+Q#aKFwv`!nm3!}_%Fsl=yYN2C4wkYA>S0ZVD(x} zoK9?kN-Ybgw{blPesRk9{$g>+dPWLTIOhXpCzA+kCRYIK+7t+ zy@cytql-xFL~5+J{7s-$mk+%Pae;><6H&<~N1*Q-7`w2`8L3=5Ao)P#0`0N>lQWcT zB&&SNSKe?H4to z3BeV%5|ilV*tWtjtTer)B!1%Xi2`Rgpesh86$dY;hxZi7`~=ygm__zMQfr4 z6z86s`J~o~q_#}15l{02tj=TJUN;4(ty&xSU=KIc&8ED0c&P_mMl8gV54Hkp<vl$g9bF$K5bcwD@4(*^OLCfVhWIeFh6yE8=8~YL_670)v-EKVU(< zXTjjeH*dJlJP|dZ!~#+QO9*$T6JZABjJnb4kPK<%*DH^Y!NUfgfNK%y!2I;^(h}Zr z$c!#-u(;y|jE9)0T1o)IY~3u-*NH(|ou_VXjWt7Ba6b50*6|%c7zy7#kKVFD?hW~d%}+-liAC98?y8*v;+bTrXn=_y=K(^rw!MA?`3f0~D#cCF&dB|Ikq=AW zv;x`8^gNHO8^WC5YVZi(j+BHw*1Q;Oj#MFRmlJC-fE`T5BdYC@cUus{Qzt5NV`jY53%r^&O~r9b}_d9fL5} zJqz#sx($gaaC@BoY!<<&&8?6Awg4@92ls!yF^RDFJAv=aE2Ppad-F@_c7&pIyL^k9 z7!qmjbi3BP3<<>gBZE8Zfa!hMOxl};G`UNNT40{S%|l*;FOqs7CL}HC=9$&d;ji1S zQtAPb7uHz2&{6!Bxr$$6_&!o2uClA3+yv?%cA#6v8VU2834Sa01xlZMHqg37gOYKp zHBnD1&XTP%SxO1ASL`+>06t`fUtVI{J9}s zq;zvbFK+4VT4?E%8RaG0I`bc zV6&wPAx+~XQZ6M!0V&~pIUa*BST{>Z%VLr0$kLW0ZAu7!<}hf_3qtKVjx8^)U=T{x zeVf3FX(;Rern1=*L9#xzR0K1h0=;{yi-F@HQsUrId1r?hG#_~~wY+HrYO+Plv9J<4 z#0%EmScOM2)by2Cp!gx@vfIawed-A5$z|Mi%OFHbIZ}-J9qw>nJT!EB0I7V{zGsH#BH*~%Ki(0)0@vzs zrXSv>1LMIBSt9{I1h<&z_|2~kvR2NSuF%s*+Ip$)2Vd=gvfLHk9xKI=vIn2z@x@;t zd3xK1U88*uyTM*BnlnaKtM32F2Gbk`xy8Oqo1^H9MnBSmqH z(Cd*nsPn|X9NJ|M=`VH8mh!X!uKgHKSLsp+kyv${Wf%&imwdMjkDGvRs@JQ;DqA47 zb(|JhghN_aKMs4gEfq?sr75|A(TKiZAUN-x%>6DV+vx6 zq<`6|MshCz8qHE^vz!uAE*8NKo6dpiSGCF)bZH2IOI^pLO%Ayqu#sORS__gK+qp7# zt3!v#n_5OX}okqexV8K(smyd8XzFJ={W6U=c?eouGR&WcV18y4TrJv_kcMh*x{q^gXAb5 zkxyK>55-AYxrYzEM%o6$_6nQu!foU0YZkSwMkqBaE;gLK3Py2!d(E@dkyM+tE)Oei z0=>s=r>@r?B>&UljfaKvpq0xYVM}unq<1S8J@c>x;s+USxv&PLe1~hO=6E7t$B!3y zbdwOr)Kxv5wc5v_VLY2p_#W#h5cC(p|{_OoOyg7 ziCg=sy5NR7lD=?YQ(c4yRKBlI3hU=Uu$^1N5_x?A*&a!(3*}(&rnTN!r$BebM8b>ljhh22G}m3GF-Lj zc^2HM_aAp&+=|}+xab1*3bcBW8j?>7L%TM$RWIWm(jMGmEB!49sR&seCW{@1#zo1! zQvD(5_nhf*3U`r8zhc2vvs;j?;-%-hIaY$tjs>O9vnU^^9^o}QOlMU za@A`oJBV%L`<&!E4fO2LR!LU^k`OZZD8POi#m}ogd6dT?wYD^_LUP{aB9r zb8cuN#3nHw%`z{jS-zRK?2H{ks9SZit7i?A9SK}C!Bv4=U!tp6S{4HpeXo^bp%?<( z5>~K<>VWa+D}MaMD8l%hpLOJe9FlJm$`&_vL`pV&yy)+}52|x19akG|klcl5PB&hQ zLQ|7EZfkugLXb4*8OyPUat>L27lsB>@UY3aLO~x$HXC1R`sgBrr}xiYb2o#s2kJY^ zL>v(U@#Z_Z8(DQSuv8nst^iK2PN;fDnYOnH`KgJc0k_XQ^|K^S0v}i z;a9f&Jb;&x3stl@iDcy+vL9SF21KPny)+>if#`2X@@7! zpFWkau33%{FJE31lbDM{t~t~G%C-ox=?2?!BcMHY>yd`z zqDYrt>~6bT`X~-+zjlhh4x!nuS@lq!2Dy=|-kn|_fcUS$Ha|V$2NWC5UiHPY2>FXb z)Fmnjk{69L&j{N=nVe$PhRdzcAvR|puzLqm-ZV0zQrQH!jklKhb!Z`_u9Yn7id4Y2 z#~fCDw;o}iFekkqp9ICkVEm*H2SQNXvg`fS5H#%~NH_Y7BgFTWh6eB5pv1q{G_N8X zp&D>tC+V_C?qu|bZHMiVxURWX4RuQa$v<-SvaBfLuW@2pPlpC%9^H4f<{n7Bk?WHK zFHNAJd&iPV&*cd9TNd+)@-W2rw!h2uGe^p$zerHI>Y#E5|AtZUKsxrVx9WQtjYLw+)Q$JN(RWRO+WBO+Ui)^W zqL%x_h+6Zy15p2hpCfqt-*U$C9%$oG71;Bd0|f_CfK`)x38B zQBbzdbCK@Tb$}n`i=D4N0LHWAlOF?2 zklg2-#wT_jgwzWcRyQ}4A=I_pO0HK0;clDv^lo7kPqFN7^IdxdS-WnNEGiNZoTvMu zskiBf|Dr?r26Zy%IX4X5^{N0?y22@+&p3p3OUqiKZ3NP=6B;Miu0t9d$t5f9%0P8` z)7NXlixHY9pTdPG4&;$z*O2keCgkoX+~<=SO+XLeta*B#6Dg$#E=m#&0bKUkSZui_ zl0CUJj{l<};L@ej+{HE^B_BSD_;%v~dw+YDd$cP;JsQvyhABcSKEytgZLCEoTf-@k zfPvgn+mxF07NoLEs{1(K6(DrHoPEF27HQ0=r;W@jK>79UM#sg=An&QJn={i87?-PW z2^Hmmw_fBW*-Pobo;amkuNH^k{J&|s*11B%h`Yl`c_czV@?gU=vJJ#EDN5t(pCb8| zI-m7N#Gv)As)zX^HG~}<-~UErGZMROZr|8r5|Uvovrfqxf%4v`Q*Z8hLHV1^w`;g& zfVCsiuIs=`gglAKS@iibR0wv*a&l0R8mR2#RAl;olaW@ZWdq2&F z91TE{PVKx>_Es5MG0rI$iFkyO=B{tjQ2@yrVQqG{qkw`V{bv)B^?n~N~=z@!aJl=Cx752|7Rp6Y_JfsO##Rb zos`V+ZpiTM_oFqs0Ly2dt?NufC?A>EU**?AaLLh_gsmi`{7(AFSDR44GWE8u#cCn( zrcuw=5N3fg$?0CYAMI;qlB&c#qrl?Yo27cR2WicxrycG)3Rziq&ho2Jk@%I7AD&vT z1IqeyYm8+cA;l{s6llauAT-~s9QfFc6z((oLf^~+nh;f<7Z?ajCCx|f>JY@9Ot})u zOGDbiwYnsSbf7R!;)`DC0+M`;dzO251T>wuvi|z^AjDi+IAHW?9k7<&^Q_sUhZF?g zH`{z>FSK@Fz~onDBelV#i}ur6kX|P2Gw4P^YG-k}PM1?5$S&%Ol1@K@H&@~evT%kn zXQ{&b{akB_XYS(pMHWnL!QLPCGx&Jftn7iI@CR5sKdx9=Eo! zLn=;9sCCCT0LE6m=f%=Aqz>M1p1@l`new_<_3~JxCN%d^oYxeT8-+;Zt2{&~_a4U$ zugOC0&+pQ!5@12iQ%ve^c~2C_MSt8vKLJ&okJo$JtOe#7Y00y+El3HMvY>7>1KL<= zo2k6Y2vy7U)b5SENNmvIQ7v6Zq~iK%H*H-PAcjwE>d-*nbx)!;tW*ZpJN}v)DIFy1 zfcb{R7$d+qqzdz@Y9UEM2`6Q$ya2z}a&FNBJp|$CIlg701X1}Q!Dk`C7@#2mr+jiP5Z3C~-lQc(NI=oPR7+bwB;V~#xJFJqPACWk3@j6&i=6nJmb?Y2*RI>25sILAe7E0FBrnqBdg0=#JQ7k>l0L66W(Td! zg1*|EE=b;b4feMMZKzvgDRBJVHH3I2h|?!s4N6}<*mcx79Wt#kwbk3wfjANJHPE^Q zX*$yEYo{;?RV{80J}x##XiJZFa#wgmhLzKjcWEaPDz%$H)DnQ}F=ew3VFO6pl}i)% z4ivzn?n;;39ok4b?#!aG`C-78l08;1$w*ZqY0bxn@lam!z~HT-4#N0kdtRHmob(>4)l7H1 z`#=|39xUFpM{pfdrs|=`X?+%m*PfopI2nml5*?)FR+vH2#cdp~xW$ng4KII@ByXtO zdd<#fnLI)*C33ihY9Mu4=MHaQg-4PF#zL1<79hLc#Nbik7kEhTKIgDi8Sox0-|n)q z5azL0MHA?`vo2^-5*euoYximXnH3+Ag3W|w5z9jnytsY3PU0jKug=~6#+(5K%UjpY zY)J){CkYV|#UoiDm>yW51$F)7-_+*V;9Y2lh@2V##))-SAw8-HzQc9WJG%kW--+$( z{ZNk7Cf`_jN3}<}d*}g% zVP3w!wcda4I``T8?){vz&bn(qdk3?N4%rM4#e^rlT+=P44t+)y%GEg)27*ApB6FH( zy7e?PT0}XPAe!zNGwV}sWqQo|1I024!>^gl*AQF!Hw;;_WZV)-bCdD^_Kesb;@Nxd zX^lVk?KHW1J=cw#&MiX-NDch@^{e+6e6`|50v>T=aout=8whp9S6-afbe|&T@HK1K z1sAtFSZMvttw9U^5Zm!A7f~mO_rP{o<2BZ>1z6}s=xy5`R1&9kHFkW{u!BA+Si3Cj z#uec3dU$gjdVQp%P{|ElSu(%eg3s849&8~@@RnaYE^zp?_7lBCyz|WRhV#$>Vq+`g zq+sdT?f~ELKf9OSQ_C9~Se${+jUHa+&M~0`JSOkqgc`oc@5Uq&|EvX{dKt-!Pi=%sc0f(SJL+#Sb6CW!`&rPH z_bDdm>dFF#Z`k`kpS=~9g>d+}5&RkU@;h#M7hRdK=iG-+oQ4L-L+fxIa_!44x6o_o zb;I`mt)E@Ht+~N1`rx;3!ZQ#Dk$59$M=D3e2z~<3kF&YmZnlfWTOHimcHoB(5gX`{ z_69`vp&i>+M=W+m5r3yq{r@;4xUd<#T|8#_3TJS9V{{&LWwC!#c!B4~chsJu_ivYi zZ;j-Xt`~9RBg-2YbVV25e|hA@HgaeQx{JPx*(tVW>ll53cgEr*4cv`gX$|^B1C7l%aleQx#VKVa-T|QNuVHj8gNKQZe))<9ztdob=;d=ajr6n!&wjQ0qPq{rDr`m-vv+zLW5 zayO;>w-dV?8F#DyXSM7uWeqv_${5TYOwG1kzY^{SUmFaizaxtGz>E;?#xU}%?Jjuu zqD%bZt&$r?1A&>D#+k|~x#Mo8?sA8P1}xwOF!-9Sjf_2fNn>Pc2cGW^b*}ApIzXxP zwk{aIje!QTLeo1C8@IQ2;h#CY^Bvt>h!{G=pN*7v3?S<8clj>3g_gE0@BWWpr>A5|*3M z%jMYbH#S>WH8|Yor<^_3+SlFXPg8f@aPMy5^iP}ed64P?&!beh+jjuCn^mbCibJ3b9y-< zDwf^R4HbC31N_7t{R%>`8`pQcRby%fLANDzaAOe&bT34lL z?8wP!(9CJ&EcR~m6k=~(!lCJl|AW7S81X%{OX;|_#ZN>i&110!5$g!*8N|UB^t$pc z%1So)Fbuxz8k4(r_my=4cjpKG40=cS5eM|l1%CGURu6xd=G(*O>!83}er(4S9&v!q zxVX*1*_~p;Fu1HXjtD$-@^G0A?LD-&yn#pf+Ts1NN?N(MR%@3nH#aVKZ&xmK1zqWl zV9@IgOY`V+j9%py#|B1esEZ>WlX!@qJw3kLK8qOWBwFdb9eUPuo0DT#gLl5dTil&S zV?H-hp|wbexA7UrI~AKY*RTF*jNXAzit6Mw4FY1}H;ISU6XcAb)$g z)UWvwmXsGw-tVo16!jP3FOW2u>@Dfb?sPf6E?;l zxyLQ&a`2|lhmo&{8klHnE0f4PrFmXvZr(gI1phoN&hIlk?se{;MZSI5O>>CG(Y&<% z)MtXCp){2EOM$DE|H#S8w|YEpKS92DAxIvV6Rdu%4jlf-!s*mNqI7%+yus2(mw#}C zY>~G)h1juYZq=1Who8e=HkZwp{sRO*P!rAjOI`J@Q;#{|5z?S3Y$Lq2(K7$tH!uP%rK{YlVkgp(sT6P90RS)bkUWC1ouiB9>|*PL}U9B z!M)~`_>fI5lyoCDyPb)2J18HMyQ7TWF=(Fr#VPLX^k*k5jJ^P)L0-AoK)o%g5td_f z1etTpTuMG9dOc=H^Le`gmA>^*q?sPJJ#AEo_UFK@pkQuut(Z3fclr2YSo{|%X z4XJ~1#}+lS&fX*Fv1G}J(m~CAZQ38K)<&l0cI!g*!E-SU$Cz?|=e4L|rxH9wCa6xZ33 zAo5AjKV6d38Pf-U^vvyKljTQo$*)pcjS}WpOnxe+0@=H<&xZ&e6HOne1;}=>z&1jJ zTObI+ySji`>`WZ2y|+;I=u~)gK+y7v4N7i2Q8$_Gvmf z-hr7$K?`a2QcaxsiBzZ+?p*t8U$>K@*=m`_^(EB?>gC2n7gYKRLBLpn# zMMFrU5y9M-L@uq(EO>G_5-S-%|p-CigB@mws) zZHQiIgc77G?6GWL^He|0a6ut46!`dGOsk6~a}s}iI&1bZA@glf#Mv2nE#>}PbqE$f z#adBAarhE+(%g%VKtBV7iH?m!qZNgRw#j6k8c3amCpXp{M7QN`b81!s3Q7Ix&-D0y(JPZb&#*%fG)4&u9cB{#*NOGE zQAT4#;r2rY#I)XoA|Zr?E-pC zSwkr@>A77MiO7)c#|PKfjTCd^Un$X}#{}w#J_~vrYpUXQrLdw1@cbcLubwR{B(m&7EIL|%kX3yk1QaP=Og(3f-)jD#;&eqIysgzJ zX@^l?X2^)Y*5sz@BKIR%Bss~g z#2zI2(bK+^=xj$kilMw}omO9o=G-r&xVz1S}gy^+SDrBE2omeZ3()=;2?!1$1j zWkgAl^!I3q%2#^OXng{{tT~l9$uat7xOI}q^uxmK_wP?Q4TrKaL{#Asf6NZbYy^@h z?LO-tZ2+6CyL)i|3?N*79q|kPz&|^>L(T7FVJvJGb#I#4kA4c35e$u9uaC#XR<=;= zhq1_(HjM>yXlK0ln*$oTE{e9uJuF(jYwqG2fm)cLdi^_y#0?XzWYAYI;WstPD;OtOUBz1D^exQ$BRAZmBs^uw9Z*JSQK#`&074Nf$-dtN z{QFp*6`N}UcxCdkOxlx_3LVcTSM~zDx>psF7s9WfV!@hdD@1Gxml_$evVvReIG-dR zlDvkC{ZNavgjM<0S2Q)#R9%*IZc|#i*f@Q3>{U`BHTw@rD~s4poiAiNp9bNk-KI?a zy;j0MpsE}g&8u}so?!A$`xckhe;ryNGuLiTdNKe8FMKHd_&|RLgl_a+>Vb5$r-)h# zA25zce0J*1f(2N|uZxLLymz7uc&bJSkIJ-;|2{t2Eaz%RtxS;KSHuxH$oj`pH0JP2 zJ%nU)!C`HMg7)w$b#Ac_Qqf{wP3Z~X;APKqb+fv>1NE-9`!#{6h@=6Nx=+Nb*`Dg@ zSC$ZkDt>ovclwWPk>jbuL`dsgmz61NlJaL=ivKXcdkb+2y)zE5zX5yednU}NvtETK zJ}027wS{NZ57@Wwg}+ftza%oxQd!Cn$`7F#&&Z_C1J8305C4Z1uO(GtouoY?{I6V$ ziJ_f=Clmakzs?)(rQa2C79%5^F>+8TMFGrb?P$5G%YdbQp?+fA4yGRoE8MNCN4@6g z%bgbkOzJRPH3yax?Iw2(yk0GU8OR3k9_NS(mvIddQfGj!7WfPM6=}@~s+Op`bKpsm zc9-HmAKbH0Z6B5tr!0Q_^BmDV78H44p_|N8d&=Wf9M1+`ofS`D_jsxwYa_{i7*Cu& zWW`XJA8t>W%NTDbOTHMcAVr5b1D5*u|JxptK#?f%42G5g`Dd%^D4*tnhJw{_)~V9^ z#yC()ZfkVt_VUa}JIdNcjo%(2f}jnEb+3z-wEl+sH}b%O)Acfk;I!SlhB~wD?jPBR z|IQ0qFL0N@o~E6>QcVL4K20*S`35{_ZLRK%K*J;E`9(aKl*B2x1!5DHqJ}?5O!#!Z z&<_eR`(i^%Xl^Ff#_{qEK)_*LJuHexfA#fsZOv%==?cAL3Z*RijDqV>Pt~VqZ5Pv2 zeLh<6)4%&*iK(d9+01Gp7Z_MCLs662o=R0xBrXy`Gx5h$pon$zUwx)3oZ7nSOZAgrA}`ZR zf3K%Wr+4FnGU%Q=*8lr6ticD^V$@AyP(};9=}q^pR0npr83=XM1Cr{AHyVh-0dDH! zxvgis_T7D0evWS~Bany7 zHb$DS0Xj3^$O|4PT=e$j*nDFuVz5}q_JDz9LmUSVo!cQY)?+-F{oWAFqRQLPy=$9?A%A0;B8RACoPb+Z}pAjsa+Vtc> zSSuQxXBI%>`Df{arzI}XjyLCq4>_v*q(1Gvwjl_e-rL%z4MFujwGB)0qkKbORu|pV z0~@QjQEq3gvuZRlv@aj1x)o8d? zm!~42`75-a;F;7OTRcZBI3}vD@59F#ls^YGhmt(;kknHeU0Xw<&gKC--d9qv*6@uB zu5u~3Jx+g5vqCWGb-a`*53a6c$sZW$^J@y6@4Vw326$u+-ws7qZay;+8nn* zo`MRI^B)@FOI*#{&Dk89o|mid8&pnB*}m%QWfD#=O!r|WRJOma_xjEYzjo~Qk^?8JK)Wv7l<*FfFG011R@b3IqI7; z>Eu~5mUkUqAef|&)shn|2q=2(Gvu@tXunISP!SeD?2_$9AoorjX{#r4*)G}dc%@^* zozDNk(1)n7rC3H^iuQy2&J@w3|M~=ecu~^^zq)r=!Xqdroc`t2A+WZv^ChCPCGSq{ z8t(9%`L2M>dPwUZPXfQ~mRIb_$Id~&SY3{H{I{__H9YMa#GAMtowkeS2k80jQ(1ofL2v+V|+ zRd3W|UU$R8H8_98xf8i`2{F_d<^l?~11AxnwG!Dvexffmk9X=;XERi?#xMPzsL$KB@y>-XZnb`lv;xNyQ7CAq}$EqU( zDA(!wb6v@!$XXs**F{817U8H=$Xk1-@-mP3u}`p&{Dz%R)H1PrIoXpxO@GOdCjOj` zcvrjY7F@=PEVqr^bg*ZvTI+Xd4A^e%ws8)$t|$I^ye8y~r9xIRHMEM=F#J*UKK5e< zqpn3Ex7*GHlgVR$23-9hq&2ezWy|*jM1^z(JT*d$3S#11jpdU}=@}IxAA?iVL>b?C znc4T3FU(fuQQWJx6c}Q6UJ0oU_^*GDnv?F&vb@o!lS3jQFoimMRT^#X^iU|!LQ(~6 z5y0`+NYd(Zb4VXQxQ119fLTb{z^(p)f;$Aa46&v>cF<=E3(iti%{oi=J1-!Uv23-X zs|1$b&bfzGf}wWIJH58!0K3^gFX|?Vdc=kpT*Y6wq$stWl6}5^Nme5CjE2~Ty_tpSzI?E< z#Han`aET~xg({IHajeNARLuCWpP=e@SKR7%Q$XKQxe8v2KFNKgB_@aRT~yk_H9CEn zs3iX|C6`2zGxIQ}z0dCLg;t@~m%?GdL3f?n$bWLMitBAt?P#u12T2Y)Uik2gp6Eh* z(|6Q~#qssAfLv|IEaJb?f#(6f(_?LW#CamC`X_8csm|Qni39U_=R9RY=&A_Pss=ge zd_)RpeJk9S(to4?ebaU7)nU(R{)VN^_jEx%cd<}@{<6B9a)w%^0_KO* z4&!xM_4U}8UbPw$r3dtk*BN93gKoR&YrrpHLh7>DQl-FOw|&QaFBns$;=E!OBAAZO zww_wewF9i&X2K$`1&aPn30t?!5#Eh$Tno1}28wySX`H-aPg>ni{FtjiPMfGYLQP1U zLAn!rblZk+C8n=APZ{4Sw_|6SE> zlj!&74%_|wO3>QO5HHU_kvcaZ@~KoEIAbQH>=H)&_e*Rr)1&)517tHf)w~3TWsTjl z4cDmtkw%?kHJ|0tXVGD%g?SR3hfAH0&vJ&i60(C?K=IL7bGm5KTGHJ1Be)dPHny{W z=u#WT!-8nq;s^c_qSrmxw4(HUD{i|r^cpg*+C4aW`qLaZy)&W*+OYm)gco3aeZ9o8 z7P3O&@$Wh}HQO2f_5IX;f7yth2c?H6VISFFmbzvaMuJRVZ++TrltPh(=Nr*7P}E*j zG6s}Bqit}e^$HfC@UMAWX-k(6Gf)Zk6>9>vq|c7$T+nXB&uHdqV1QjBdDG#VMNZ24)ji!uIQmCm(7s=QQ*f8#uC~GE)~ZzgwPPr441r>A1nZ zV>bQ?d{9NLcI>zQNPc(m#ar>0$pik-g=G3usS7p$`?r9d`UjiP{HUn@UKkIp48vh)Ddwo*T|$stC5=vU}@nhkJja}73< z>n9yqLVM;(0Nc{oE)MtZQGvd2%frYryWfskyWqy?q+62L)nN~mMRB{dce2q{lB;T2 zo=O%?#o$vuVYWGc`P6P;$hElt><@kiMuiQeuKPdw(P zdP812%%XQ!-a+tR7F7L3h)AuD{i)NFP1rZI+g|efRaKS2FJ;)5FdO}AdE+3K{yp1o zmF9By<8(vYo3ANQw*IVP)s-aXv5t&mL5Sz2nP&8uLw}d~R+H%gJrHAsnLNk0BT%-P z$dS7pc;zzph}=RO?6tAap3ita+~%IH%NPlWIt^{OYI8)1)`ZGU{$%`UInSqM(BdE8 zHHCiP4%yRq*MHD?%2SzsWEswM&;|awc!<`4F=Z`Fa5UW4bURjIHi?Bx{=w*s%&_yE zNR7Am5dZ?Dl$PWQh%~>mu?ULYz-|O!GTY+BzpK~fn2dOoDj5Bb+xSUS1&XyU$})+c zR}6Kn28rrR@c#W#RK=(n!*c$;<_B=3id)N#9@OU5TJ*u0Y6v=GJz>n3)I>v`{ni22 zo#gUtH%X4Ow%wkvT?b^_jugLzDSTovgwHR3@5yG!wjt+6A!Xq`Yq0F;lZSlvytPAnX|w&MdD6B+MjjB3T_Fm(Z=3Z% z$L?P3k#|2)k-Wx{me%xtN)vh+q*H+^R)6}$L}`wQ(6x(|JHQu)v%S)J0CPEqUGML0 zfN4?8$=h~U7lt>uEQQ$ijJE+_LJSrL7Alcgod2iE1P}>nc zf3o%HEX{bCE5nnbPJ-s&?9{PC;-(ooimw6Pi4!2U-~VxDEGeA6J`j%yo11P;VS-&q zTsc2+3 zWA?Xt$DIIa@I!@jL!#d*!`f2SZ1U|i?^ncFb{B+WWY4-WkioLvyC3270W8v_Gt1EC z?S|7x%T1orXXgvou@55^UW)Ba|E31P&I&6QX94Un0~I`#?e|k_vOj&O0Yk=L?J@l2 z0iRyIe=9vjlG7Ec%kJn0p(knWOwb~72+)Dv+Olyvx>>c1Fg>?g*4NXLAu3Y&51u`| zO!U0;=f2nolfBUDxWMBEKsBe!&VDE;=|ntDL`3z>c6wMb-3eeM0}uMl(a%>@sI#S4 z2NdBud>LsjQYE3&p2|c4dZ+{MIvunrqV`;k_S}R`H61rsby8IoYoN#W1p%(!Se0K^ z+atvN2-=Q7^*ybLWK0gT{BrQ)8A%J)Of%=JyDWVOYzh9g4kNKwACCCl#|IkYmKk4n z;u_7U^Q~-1B#NobEdR!8$z8d$X#30fT@P1l1v;k;<|A%ukAd@Yvh5DckJbSM8o1IO zQ;Fdx$y=9E|AJ6|u@L@W!%UhQQ(lC&7L@Bj108?jy_NSSg-wc4q>QeECOdkfa3AR2 zaj*K?Xh4;)>t_~*B+7`8<4q%3d#)#njMj(1mv3D3bX%q83U>z`*Yxs(zxMZKmcg5U zv(b-Zr9f9c>2wRXB$=C}2_;!{Fjpuhbn87q)mxKys(f9G6aeIQGi2ra)R6rG! ztFD{3wg=&~i;8~*f+vYmopANWNS|G>p$gMP;Qv~aJl$#&xY%td3wcMxKRm=T(q;#E zTiYGb5Wocq{ODh~+`?>*9exE$r&G@E>hgQuf&qQluF>Q94lL>#|5VBa${V};brPgW zlnD;2sbq+GJ|Gh>bTL>6nPwAfITIkV9AE6MbL1U`?OkAw1_|6E{h-n7hMfK0T91b# zKWwSY&*kWh0J=*=ehN&|^NfS_?ATs`$_?QsH*uUv+2Jgd-)F(Y6AGdV#N{LTSgD@F zGD4z65t9}LkV|C%olO}F^4Z!Vz4nQT{ex*O4ZSB|^#R@6q7LR!g~JP_CweLhd%wno zOW&aG?jaNlAKS$ceO6%ssjzzg@I2vU7MCT2_g390;1%LTiZ_mb^c{<7>q6qmzxz5h zm02$#x19c?ZhzQ{dQCpoF|@(D@qyiA{~RIA&<^9mOA>nrub_Z%W$gJtCSk9i6wHbH zb4tq`Wkg0qbM`b5Py#Z#?n}>+6c|y(bN?9F9~U$>F#i}r=MkSM-~hmde=7+2Yk}-{ z^-O2C^O()zEmS4FwMvJDshVCw2g_s8|fU{sCO!HtnF89tQ8uqW%&7X1_NS(Lhe4 zA6`@8C0}X7Z0X4m*m&qoT)*8MANM zfPN#kazM`G6J%wsrn=vRiLtd1qj+XPdiH99Y%p7%^Lt^vQZftSOY;upnqVd>+lhlg z`9Xv5GImk1PRf14tktNrmyj7BvM7!$8DUiG^x< zgvdr)4eN@X!zU}Mhli=556K6cCmK}}QviFMe=}^02q&ecWXWCAA@Z>bhQFDJzVV#; z#p3|`ssFq~X?P)(%QtJNlZ75iF*? zn{4zBI4bobQZ^v^{#0X|9PN+ic?W$`5?1Gc?J9a*&ENaLasT4!ly}KIx^#=jk8b4e zwMG@IDp8<<6eEXx^eD?ye(z749HMysUMVVR)Be4(6;X!oK)!AHAywJ`EIOQq?zICR zdq?Y=9Lm~n8NC1VDjde)VUC{m_;^9L{$s7ejgvHW*vrrAj-&ITJ>g3zY9*|$UnI## z_X~=TP&x3Vv<=*q)-1*Im^$F_Im9AjHS4X&T(3n&1^bj5*5)KSWIkg1>!Mdf?tm24 zwh@-?=f?unWz~Kh^e-7zZpnv|YXzdGBO2QfCIUPj za_}(pl30H2gdg}CES{aI(Gu^UiilDJJLyvL#;4p*h3A0cx^+Cw#f@w@*L-gL8uMHAwBF_mnnGB$H|Np2J;v+yh`A#99Msb^N{bwgt*@<= z@lLAX{NG)(Lug|754FabT4e^!p%hiFE<$8nk6uh60q_%5fp;@aw5Y_xrN<<6kdPVo zNt!C)o7qP}-@1YT7FZ{{p(;MA1BC`DXbYid-y;woxeS~w&wFo@5onyv5S3X_1DVT; za4TZ$7RwHOTr;SDO9#z;mHY;1-h#;Bf|`>*q4wx-=K%ymYxd)w60KBZT?yu2fYMw8 zlrFUy?R9%Ky+}U7d^<}{O9Z_j5$NXC+EZfAt@e#8R1KJC_V=$#J}vl>$Qw(n*0U-E zi=G!Fhw@fDy3o0bq9|S=~EW%rx|3#U#YG8s2r3vN>T8}3(a9$NCLmJj$MJdX-e|(3}%@ysN zCocCd^{su-YNC2F{c_$cI?hGEfsap*lkzjU#;ySQQL{%g!yfs<(U~ zW37BT7CzK(Qrv{@nPdPE{Ug~uI>60%PJ?&+{uL%|#@kI<;Ien1uVH#4klvGnWy6b9 zFyEn@j7swf zXO0b23fNJ1!*4HH@4vqg^Pm1F;SQ5_5#|zKiQ06<0D^MmM)S`RXG^@m9+6Lnyb-mw z%&aE|-UwiFJLOhL8A+0lryZ7J2z2fj_bdI!2CQSVKJdUrL4Q|5xP2o974uE_f;qqS zQYLz=P=wa`b&b6B%nrb5Wi1b0IjjGow#HYMmEvPj=F#n>6~tfq`O;A}MK{w8X`7Y@ zOugMDy}IDOx$j(r{J~q;D zi7izH9$@vW_aP_jJ>@n(0ohc!9G|0+9hMD8>!eVSM$erZz^PF4V>8lKhI$uWZsIx>Ef zLK3EikF0MjoWQ~!plzojf!hs+QiQLGz*wSO+EX6VsxFEzOyz#4!Q$Bl+=&D&K9RSW zBZBhm-Fa#ICrgzU$dJW%cSa=LQ;!H6_zCi)t{!fo3$r?DSM+^FExa(<$YqrZcN#ms zOdtTp7pj%qz9k-YCjUOlME;vK=$-v(xc#P+rWPY|nL+Kq{g6)``>&-K{D9H^tKg)` zv>jP$%6HyBkxVG=C&P&KIU*0aLlfXh6lC6W-Q<9c;4CIPtHt*PN`Hc(P4vTb-F(IS zqadE#bdmFgjWp0C>#>uN86UX(zrUptdG{G7D~>5EwBSqIKZ5Y=F)E2veVDF4C_zeR zk#u(m!`ANCJd#>UGxot42R`7xz+$%1URZ6o)U@QqQ+<_hq01WPU=yDj26VqT@};1X zvEYZ36e_>C!Vfh1l3|hh*>S|7y5oliP+B{E!J%}U27oBE(to@(4dP~#t$JJu*cEHq zZho)L>B^-kv!)4|<8GwsAc~;0GBYdX-+^yto+xag6$qxkV3^Sf7~p4@&&getB(w{F zpu_k9Ie0-{|5DRQ@EA+b-kJ)-p#HbZDD(h;` z(Zb#V7B))%PcW+(B5VCaW-Xk9Y6RobjCe+0>n{$0SosO{p{ znkQH;aqnPAl7S*NNV&8_wU#!W@JY-%yY_uz{jeot6R`q7WoDso2iJo?7a9X=zSDpL z8pP#v9^IUR;)|Y({L{4(^(323Vx-K)AiY}|SaiOnXQf?C_~-IoPpGDf-`A4760|N- zTb2Ex&E|)C^`@F=$#dlmtWfOrg*s5eL@+e$p(R6l)^`r}VP)rzF*e?v|^jD_wc^yGfnTEuFPOgwn0;9zJ8e;XL7;|gz z+}6R8Ai*Ic(bIx|WiDr~w02vIi|wmSqgFUATMpGLoNoN^rERV4l90@lc{xdNe6-pO z11;RcIn)hXt!&?2>-G7s1JRQQ`EM(_T#@C~bIYjZ_p2*UpdCr_$eFLwMoWiev@<3W zrBV8=1L4gw;%;;+B{P_Fb>vNM^*vU;9N2$9#A=f5XojM-x}Df)5qm=saglIv7OtyC zNY9IC;Q;B`ndJ!4I{dx7ic!XvUsvhaNm8*haAzS@uj;M0V8J;GqZ3~z1iv=jcLJ8O zvqT9ZeKgE5Z5bb?Jy{6e#ew0~-}zTH-KE9JA_grVJ|%pebFRX~bOF(pl8Lx@d|mN0 z*>0vk3vgwm(my}51(%n2(Yh&UwD&V&U}F?WwF%&h%ca7dWO^p!Bg70i)>*k;bGx`>>+{Uw`cC z+0V1YXPuO=>huRi;fAy>KOS3n5thP#I^+a1Q5^IdE_Bkx(c1sXak1M@e|~(uIJoUE zXYX;n%W?T&R&AFT|VY9TLiTuVW_ z+MG_M7q9s>j>~py>fK9IkwdTJw!e#k%9ogL>%5+D4pR5_Q!uG4zQf?GMVn#ScJSZo zJivoL>R;Dg=#LMqz{`&-A;wR z2;Wz_Z>9=H1`%;PDCVhC;M^O0EZZ_eI;edXo_B zZ|k$#Bqp-;k@?N1$`3S)g@&IH=SxEe++!>J+)!Bw#=J9zz!*%mM5<#m&xjX$y4JDs z)_UmRk6UAxfeN9Q3(fS~@=XU^kJV7-4HH&~+^CazlZ+Eg!PRDhwR&(Z-T0kC*gq={ zWYHsaY?{nwU&pZO@Y`Sddq$`SMOSaQZz6Y|=;v2_9dV^5Ojg?J zlPk>4QtD~bj{FTP;_KjalL=Zucot+mJ4ZQlx)$nXR&7&O8D)Z-{=_T zv&9fVpQQ3GktF2@pk)>lFjCBpVx?Sgnt6NjLqbot+{KP8Zm97C*Pg+WLf}KsKCM)Z z?ox#JeAFhc$fEN1M~bTUi12YHTYz{1z=Fv`>3Ud^#mdAG&Y5~uWX-l=62fuh^JoHc z6R7X&dXLzCxpk~u_T4ZSW@Fx(f($UQ6%n$oR-1r0tV&tPCCO=Ad%$Lyj7t8wxKVNh zyt{t<8t@$rvhawquKq_s@x^h`SqigmceTZ)X!ss3qO~7YEUu;A0>> z?V-NkXR}Zd(fi_{HIvmDPFf8sy(B?3@QYT(naX`|l{?d7CMnOznz&Kgo3QxY5&W9J z7X4`btROG7|NC9ITAE(^8c>d{vUchn!FmkvCVq5dv{mCa;5U7$9br~aQvxgDzSO5! zbx`S8v%Rk*+XzwA^))wUlW0_C|DX8P{f+Kr5B7cGW=FfjVBMpeBe5{)sNCz5fEm%FEwn82~ z;L0PTI z!ggeX5Ox2fwfU|CIbD<*L+^WkxKDypAWaUX_%K7*Ohb9pf5kKz#qy>4xyWi+g-_sn z7aJ!m!u-hLmZSFyHpBsQrp+>2BcKiSQ) zg=HPBEj9x>D4yti9K%>!tGN{Ehkr8qeD5PSi5R@D{Y`J5#GFe+PL;Pp%=G7@96ewc z1}QW4IUw!>aZjKe2S+SBXYp_U3Jx;x+@@KZ&z>33WTF7oHbbeIZF@ z{ufJ5N3GU$`DzV}&ZXtcNfIC~2I#cmca2JCr(%z!C%#N0d@MN4V=Gp(*%m3xQq(E3 zZ`jX{{DJoD_#t**H8eBY>64&70y^v}*bnY>*>{M(c;a$5=tb_Na+x@X$!)iGkZ9Tz z|FlMMlqL_H?toT7IhoQw46UNXg@mhL#^{r zMayiYu-A-Yms`*qBCPtYE?Ha%HTWBOL0d65Uj5AvKODPz;79iS77;jSWW?WRHeSA@ zj2uklq%>qj19R=(uEzAjE~fMA*F>;9#0LIs*oPCHCT1cEIo8)Xrl8B>8O7R8ZjCsB zorbRZu{$xSKe79{;RA$&LgQ^;gkHmatMa#A$-HIr~cwPjlB)dS*Ssb-`3tUW`Sq7`$KFZ~> zCtCNMpY}6 zj2vj^s>K`n5L`yLe4V=|r@~@@OYs8}*M{h9{gyg;e(F=#?Oq=Vd^uZjpJjsy*`YXF zVp>jk*7?o7b(tC|yGalfok=!2t-(~-7EUQ%+?EGYm@!zgIFRZIqu#bNBU@NA28H%3 zqy&+tLlm8{y!!VxDrL-`S2VH%I`b^1UwY69FEU<^AR0hv7^1C<-vpdrcGaOi@gT{O z`WM4C=@5}Desc2;x+Amhc#n5cfb8+9v#0*V`hm{Z7jN{QTN!Swaq;Qjz9<mY`VW0mNT+aZl>>}q#Crsa&BdvmTf4@TMCKf0U2LAiclHBja)4c;j${yqzn zth%I|@zfc3JLkMMyV-C9u)|eYd)l!Id#Q5VJo2EpeALme7Ze1E-~U3O$o=B}*`&9tvBb8ltui~K5IJg= zm`ar`g!}dRsh7UO3>!9N&k%JXX!CPFQ+o7o#dxK^2JCx@&{W4mif&g{ex_u$QArb4 zyGJU3m>vS+o>7`^KBjcb-B}1ix^=TlSBdl48JS5F5#Z@x*FOwmpEk>f#be_Eu2#G3 zgNh`^-%5_2@Wnn?*;AYuk(uKWv@y5vt0d(4oPV2n;~C+{1pxv9GVd9wlMH>@JmybHOzrpy8G zd9y>sQ+J5>M}e)h!`F-xX19@Y)Kf&M~=? z(i14oK_2L-xdD*?`%F%20c)*}knMmB)KGR1b|1$8VTsi4qnprqw`#W1K&uF?tM_r1 zh4s+*Kt-_Dx(*0t@1h6Ow18G`6ZOW50?g66LVgZcsKLnfExoJ&M4#g(S<9^f|AgBm z*t8djNqfw8y=4F)(c@rZv@6gm`t1?t)zFqz*e1Re2RNm*zUSopfWB4tisi~XyuHFLVF7lOe z=>p8r;>)I2KS7m4d57&IPGDZAlo47C0Jr&6z(XzFWTg&aK$tW6#vwpUYuzHuQiQu{Q}W#ZJ!QyPHv+!)X0rvSL}iwU=s-GSsZ z^C9At0E$l+6jHym14E?@D_pP`#R*ls9uLETXmV&JT-gS+eutNV>jHq`xDm2zA3^O= zmB}>+t^hU0-=zK?3yOv!XDmSl*glU|g5zh@t`1&9=oV1a@%9|01Ay}xQE-eN0K$!# zg`{QZJNs(A&ceXS*t&*3$vgv9}`!?JL+%osq}Z3Id5O z^K9|FM@9IbTk6~^NYotS|!jX zq89iN#YZ&vXD1%#W~2D*%JGvA>H*`ZWqWJh1}bhjUEjJS5US#^eo2qh0T*DlFC=y| zilemODs{a9_MKAv>nksSgfXTaKsCk6{qGQgk~n~$+k zehE7cSu8^5R+qx6PI>h64L1GzuImBz`QS9JbSDts&v>!DoPcgHXBO|p56p8IzsH{~ zfE7Xwca7QtY>`io0xC3t=tOzucKr!3(|4a)HiP0&TiF>4p{GFUcz3!mH3BfW)t+*! z1(dfKa`_+j0?Mk0E8O=4fTEE%AT8gpr$ z;sa{g!T{x39JJ+xJ}~v}15&M%&1cd^V0B?vi4iz}^3birdEX3>ExZjxD(0Y7%hqA) zRX5s?JL0EX_M-FK)BM>O%F}4ocDrV>QJxVpsiesQX7g*3&ie*nGwmNU82Fk9*M;uZr0H<2xdBA%N$cnEl zc9wDhIdV?Sne7bN&(Y!2isL{nF;{8&b`zc7T^YLr?SaVkbi?!wJ7B3C+A1A_;=Pr} zSbjR2QG3aYyYx7rUGfm=VwNhJG_kg!iuXGVR2rQh)jspe?K+o?xb2)e^P&ccE&f~`c zzt*JQNRtEz24?#Y_z}lC7OqfN%LJ2&^q24%b*+r-1EMD*0WVW z_U^klS{MP991NjlZRS7?YwfFYngrI(BRRLjJ%QyEN_X8i2FyOaqOO)zfVHfO(AfGI znvU{VJ)7GLSXRq}hmozokPd2o;BE)lY7xHBvuIqA{iM}?bc* zp!Jn{?oNm$FwYmRGb*?TjZy4MO#+JhDOvAKjcS0hW7)2*3Y7Qrt=`GUZ47kJpsM?$ z?!Y`0J!_M4vf*$d+rW*LW5q!InER496C$#HkPzP>**AJ ziGn@QMP3L5m8$?DT6oRjC8Izui)*FXwgB}ASx)zeCfW}}TU-r|fceQ{vU#8r=*Q>z zrY+F9dGFx4Jx{HnlJnjtZ&`OBw&Rff&-H;({wDlVzb%j-yYc!T--^zQfR1mzPi9e}xaQKP1aIWTk<>3gsh0e94Tzt+iWAT61^Lwzz1?ESl?1I;f2>1edb zt&#gcJ-;Q-`12GH#CkT4EieI}9UWjI+yu0dE)(TEH|Ve&B(yc4@h{J{@ZBl~B)`F2 zWs?|SsTE_l_KE{5)l8vyLj$z-hcyOP@&V0C-C~w_3)-7xQq$%ofRwb@I_H=*u=Kga z^%RYOdcuaxRjCS8z2cTl?jHc@R}tDycm`zSD_$W-C4i8*>RBJg6*A-AKi5&Z2*k}n zls(GFfWqy?t5~ug2zzo4#&tac8f%da*ULem4tK2elidyUwjKK~6c+(*Tv$@$fETn# z*FR}F=myPe5A0wZz6o@l=^5_PTY#w+UK7So1Cnx6;-b22AYd$qpBtck+x=Om&UHTM zxEHi(|A}QlF-i8dOb!R!vI7B=D^VO5zVdFSlK`;$`T0CX5`aw?Q8g(+>nCnSO=Exw z&}6r7EI1+nlsmXBocmWo<<+nYDjNyFA_VYD9pZx8`ta5I!xcdG-RpBF+ztpX?+TUb zrh!4Pc+VJQp~39jcp;uVe`wgm|~l z8-15W0R8!@1^-n9U^s28`_MBEL@VcKW)YguxYN=8mTv+yANnG2@)OEq=3iC(>)&H& zXCk$nL%5(B8Tc85I(Po^-8}EWZB&=oiAjdt*hD-zqu4JblpDR#3*R94wiUn z$q5Yh_L-0UK|uD|w0e(31yDYGF`h!-5AEaGO5H8jfFvszxid>2u)e*t0RAmNnl9PT z5h4z$O}_1mZ0vx7jPKDoy8|dUMv06KC{OHt)rB=m1(t^1>*TH+$XNA^rue!FXt>+7 z#U*AyW}2S*Dy9LH$?N37kGBBlc6yU+ggh|Y`NEHMCqlcX&ufQ|CP0)?uTZ+Lj?TB? zm3E)hfy8)VfAd8q%A;`AqS+OI`0l(>rGxq%+-fn;5&+Vp1JBPaCj%)y)j{MO%3qj^ zQuf~WLUG4Z+#Vvj9viy;Mw}lIDp(2kMNuARcZ{g}U>e9X950I{<$#{(jU+x11jdsu(10E`!z28064=LfU9~E% zg-*c$Ia%u^K)E%(+P<3s#3wP21Ig;pE-*O0>uLwk+m8`*v*v*~vE=pB=C$Zt^AFCQ zMtSyP`@8eWC~t}SRC|PI0mKBWvZO#Fko~vK7)ho8YxgnTwlhp1FMk=Ns@emTEO>R-Ix6oSs_yqvS`L*qcp9uQ6q-3vrU z+svE#Fd(1f+**_q1e8ZjfsuS+3w141-wSPADT%!mLKzwjQOz`h4Y zuBWv5=daM|9kBl{)*d=?wsmj!!~i4tME}XnDM07l6tWC61I*Q`p3{Q!fUy)g_13-) z@E1zAn@x@Y`{I1_rcWHes=X~a?}hTR<`og#Izm8t=EvLhufN}rBox#`MtQh-QAx?M zK%hS!7x=moou7+rU#z1A18Z%XmC0R6l!rYt`Yap+7`gu2H#oe}&qqo=W1axx$aVX% z!)GD+z2m7cpH^Vzco9D~J_C}pUe)TA=y^@G1M4=N1*Y*HOQWuNVCuv~ZVPbz*S~YL zA8tn9v$w3(gk(6{|GK0&H>m;M%F^SYQ6@0n@*f%3mjLSe2O{$GB*0I#H9eci2a0hG zy+{ki`&SHdRMGiCop{fUE0c%zUANtKxfcP!D&YOOMk&BOYjX2b70~g zZS_4h4!E;U+pgR?3pk&}b5cB~(7sHJst!c!|EU0JbQ2v|BXeh*?G^(gZMC|6L6RGY7K`_e20-Jtfwmj zafWPDc~cA8!a_gwu3ioV4m-=R_bq^PO5lhe+zph=I;11kF@OtibG~vv32^48U7Yv( z0m(ghV(?-gU~9felJ6`By42Z#WYMLl{~M7d4x539VG#riGXN8PQBiM?E3lSdvz0Pj z3~k~E0+w&J0^&#a4nwKO(EeB$sPxGCAi(P05PG_=3C&l7 zcf?x?V3VfDzhPTpT;#L{?WrxwZIv(jgaBCi#(pOwE5X%Az z@0GkdSq!w!t(@jBVL@f<$rC9hX8|Krb30##2inX;mMdCK0PQ)APa|dwu!ox)K5|ik z^xkB+Y{m-cI|YO!jYEKNfpbx{iX1v8*1Va1x(5hdyA2Mc;m#+7Kn6L2U(!SAnT^7!#=8Ppl4Z zw+5`9>bcbh_CW4e6*+UYAKINnLU_)#18)E3)&>=Mz_kpVsV_PVtibhl4sRYp&B|qG z3dj{eok47{Y%9q6eEghNeiXDGikxKX4+6vajQf{$;lNzVxpUdE0U&T0y2Wc30XgKr zE`4kR(A5vNZ+1udtoL>NIerSzwwZSD^@jqf%b)Xwi3M4j{Rkj0DHRFr)Vm#pX z$s6F)!=X)P^=9ImcA&j=(lkBZ4dkah*N@|7fmK{`=;);^bPg*-38z>9?up{`L|_*X zcT8^mdYuL}G*9;Qa~U+gjRTu3QJ!`~gKWyEL3z$l$@yc>kUz@3a^`C*up62EL(kNq zaW=AVd*NeXof594iM@wbVIJwBtwn$_Z)z8tK=E|-ny065+9ymS z_&MuGAEGOO@$rsvV_Yc^(|E*=Mm&eAde@uRPX6ovJ?mwL1la-pV`yuC#RSmTT)5?O zN(#u5iVL(YVkkck9J|P61lXe#@sE2K0JCZ{&MX$Kqnzv2o40uY-PlfipC%cIkt4X8 zq%oj~Tsi;g+&)Nv`qAZZ{Oib5qsQksz@8A^syNs}bWJdgK04+w>lq(UhblJf88{hpqGef|G?E!MTJ zZQpx1_jw*ea^KH;2yfPzW%v_L!x9R@G=hQ_+-v({*9S(AXsB7!Gb!4TM*Mj6`Mc!|a4+)Y zqPE3DEUJB3I(jN zU6@4t<5&7#m-7rzB|--*D;Ay<+ ze9Ezfc+r-7D*|Frdu?08vi)S8#kOT3MRQOiTT3!mqUbp7BlY$(@KXHW->m8acPMWtE4u*{BiZ#T=VOTPjyw43>1a^r z{ywcM)I$AHJ#Nu*6NnZquPk})io$0OrposgfX*5UlKbWW{;iU?SLA~rFz#%F!%J{K zbjS`%T!-kl1HUkojoW?!$L7(}!E-;w^>9`I?NohVr^+WVOJq)WOALa)Wl>V16!vXf>^C^!U?YU#`(*yd?VOj=7e~{OJ&T)8Ei3x!|=f z-}+uhC-EXLkv zW~n|uz^Ia0*7cp_iHX*srdKCG?Jm}~oTpBF(un4cxx}9`mR7ZgY(#a|hg8Wg-r(+x zw)>Kr2#%+P)bVRIU@7RoiZ;;)Gok3@UY`&!>bx$#-6IXr^4EsVZ{LF^y?sI7GFfmR zC1>oK83V>H-7op8d?EbiLs2ZMfH*YSG3owR2-?4=cQoE7`f8uuRgY&x|H?B!b_~Kd0yV2X%6mJRT_<= z?onn}^vxjFm>Tiy?HMp<&bR5lK8R}nx$%BK+rc|C`%T)DBVZ@Z4G#Cw1y#5t<*Yar)bOdV z8Bh2?b^FMSt)Tqa?CD_W3DG9KiRsR-QM4;M&-eUl@U^sqZ{9eE>gGEePRywS-+cSE zx^{cenkYL**AiVAG(KC@=0)(JbNNT2rv>R|Hy=IS4)*6ciPc;$@aw02_qp&5T-VR` zw_of7Q*pl6vK?Nij@1xk#{35R_Jb4aJ)I#k*>aGv#SO^?1|{1r6My9V`$cNQRtVqO z8DGeBNA(vIui$^)pWCK&#Z5msqEA!(l|62ORi5EJVQ4gXUBwR-9|R-$ppDrL>0RJc z{olz59+NmnFr=6bV7E&1dpOl#WY(^kuuhBcN5Ruy?pwg zy*N92{&nzLmeB;aPJq9hYq+{83@i_)d7l(CK=ti$JmfMAL9$oE^_o54eOW&v_9yY> zBZli2u80O(zR&1oq&^sa9dXQrT+osfr`$f?3I6t#G1lb-S0B$XXnQ^ze5^ci)O;hD z>wiYxU785i+EXFF+=-7*FwUBhbOKD5CxHX*(h!6Mh3&0A0HIDUH(6sL1j~LXK6|zv z?2q?-V#}mKy}4}XY{e5K?lNC?g_WTE`q;8jRo!6U(zsgnDh+kRgKi%rY6-3%U7OVr zgYwPCn@0_7LFL(v%`;@fh(0-_$9@$H=CKni9X)EnpV(dIVp0r7(7RDeg;fNnjr0tIh9uOfC1(kii$=|I+)`x-0#{) z@Y%-LbYn#e1Re}tT`I}HuDf;nkKThoO)FhfcQWxQlb7%J$OfZAMd!}qQJ{sr+tr>G z2hp5uqq_~Rg7$c1#<+@}YySmvu9^Bx}V{fQ-pqyEMT){6EtZ;Yfv#*{*uwZx9u?J&7yX3d^ zq>%@BdneO3nJIyOOfO`M&ohFz$tUYKrxBf;rdBKp0B?!qyO%Phpt{vMraZh1?!6m@ z_aq5lT-{dqc5)>OZ=RF9p>hY*I*;>`L6)c;Idy13xd@!|uRkx%*$3XIB+vbqKY;&Y z=7TqpgAm@Ca^=96n-FckZp2L_c{VF{8vo)Q2trS{uZSc%?e|j8H)n~?c$t1|znvQ> ztlV?HLwivEa>fDfl3@sY)Y|W+iom;3s;?`W0@2Z&&isgZ%Nne`^YphKeh<+;hcQJnmO{0^d&P4-;`;|XE`I8E#Eo&m4B6?f zD7HTE@Y2zD5Jg}9yy;B~__>FF-^h^z+vK(B(fTORcdY+#{aHD(-Cxb!f71(87FTn< z48f<)lB)=T+k{cy~U{zt>54b8k-hdeaABF(Ro;)owuefK@#A zdp)=rL0e2#_9E^3l~*Q9wh}+R)8N|^BT!BHf8DWv58nBjL+eybAyKdRP&>D^9mlG!(#Ir5EufhtylynDynUS5PaX^|5_H3xq!R zoqsmggOR&vLT<1P#9ucHj3|%5H|xvDKTPWPcEpaOlZYRWFi=~$tO@+iE>oAjbg=b` z4IXIz0%hA;!|sr!;6=P=M7@{|da+E0{Y-1rUI+_s)IAM;=+~YgpJcG>{9NCEC;5J4 zL-Mr=Enu`#mls{DN11oemjg2IAa+@CAnJxQ9;j2!y1w{~JDEAOxoR=s)jV}n?a_s3 zmG6M16~Xy{ej~^F(PTfRdMwi(Fbuv(^xg=E$XaEN-eVTH>EYTVtABv~Ezfk7wK=$& zcc08-6F=vEdMstKH^d3d8(OlLLA!jkQu|yMM7108ydEDz#kz5pN-I3UT~+z&(AZ%V zUKpL6TCyChmv`Xoj*q!`c#9Rdx42f;bBaMb6g2+qdS_5&emG~$s04#++ULAC0@Z4_at@s# zeks)5Zl=f#Y)+!4@1P`@dqOJmzp5k6ksFz}QV%5>eN?5TU7){xbo}fxW$Pd+m59YlGTpYx?UIWP>J<3bIIzU+B%cG$uT zjAUWUpv@3?Zx1|g&V3DTrPGSvQp(_~w}#RVX@b-LdwRt-XD~-@#cA%015fdEY1i;w z@Kzes%Y;2A`EC2r`FknBoi*M3AZ>7OdyF%ZatHGZ?e2t8$*56Yy}+?M0)i{I`&X&_ z^S*;YffD(8ptc-ZcVJTwc!6#o`aVaZxb``(+n%iH z2_;(FS7Y^jWiV1yTKA7~MD3B;wj(YlAbR98K~|U!hJ`5lO8!`I;_CxSzFr3J`U{gc z6Vt)5l{bCxegy>Eo70uG$v6eGH1_=VhTwI@;JtPm@bVPf7uxeGSoqjgBk7p`uz9&g|v^sI} z^>nbTos25od%%v|x$a9%DQfmVuanDNRd)H~MW+ z>>>E#wKH>Q)-u$_>V|BumquCC-YW|Jeh@aQpJuDaLcrG>8=2cf>dYX91(FZvh2mX$ zNuV0bnXB))2KwayV@I1s5UMJ$mY*l}!h2)Njoyh$-Jz=r`v`tc>abEdOLWtks-E_Z z2SIt~-1e4#34HFhso&(Dfc{|Pbmz)oZg-yfP zNhGcd-^R4ZOayE6u}OzZ9SJ|B@69N>0A8{}rL3tW*yik3Td_Ad528dmd3q2{zI63` zXd*-|QbiR%$^7+QxxB@vz;dy8A2o^wfumg1xiq4OtG5*C;{e#*c8v-f30}2sRkO1Q z1z&HTt?kl0aF>Kc^Oe0pVb4m5-dF+QdzCZlV}1}GmEZ0=eK~4#voF}v?}7W9=GXnW zgyaW&50!<2Gq&tN@#*p4J~e&1oJm8qkMtLMkR3RpMcHAhX5h_jI@Vos3zQbCdx8U= z5Pujoj=Rke!ePO~T)hr3E*~?vf4`8N>&4i({t@t+>MWME-UQn$UwTW!Go-$psru*! z4V;Iv8TYP8qqc+XJJWJMD%*x`uFmQtIJ;SeSE2$|tLpEUO%b3&IQClWH&mD29!T9H z4`%14SVyZ=u!M8oXE$-c*X+oRmY)cQY?Px;BGKhXXRH5McbL5HNbunwl>|5LTdB{= zglO1Y>%M9%C^nl8IK7$!w$H=uJ31{%e|8$JY5@e1G5fo>)q(#(dZp1kqNmy8RaWGF z1O43UT`m!4AfR6zr5G{>oV!^wE(?f$j@&TaCO(bmDq~4+F7ZFVS1ytYBlSIS%Xxh} z;o;2TNxs}q;LGXXdDf){{>MkdvWrN5Pik5jGSdRw8^Jq{^i4y>j5WvYRv!Xu*XoCB zo|1FCIeW~yRU5&cI8>q~oebLYC2Tjj`7}6P8>N$Fj6Vgdf^#WD{`=+J`>-0O`lRT1F z(6Mja26mam;)!=FLI0v|(KYox=uf8RDbHvIvn+ajmsAtj7r$(v(ul9RvL?*v_$+V} zZ$vwd-46a>ZT0R&RIt9Trfa&dN9{4wxs-0AYnQ&UWNm)~>a0<+x%Ncw)GJzzGUuS~ z@hIc!bwr0xYcY8H={HzOOv$4cdEhc%nI}(}3D(h5^Tw{b3+9$hUb9oKf|a~5hf+)U z^lW~5aiuibrw2DITmwmA&yrGu+rYaRm-pC!;6^~R&g%ok;3j;Ds-IN~k!*pJefBX3 zM0urWCv|{j*FWX6$!5?Nowf2)8G_inHGT09q8G-`;koQMjM`pR_J)0C5Kc+v#p@7X zzc1j`hx~0|mVC4qwAC@`$wNCm&V1Fnhc*?Y<{ zBrdLRxQ7;??&D(f_kP(B^lUOUjNJ%c{LJ~`N^8Jft9(3nyd1>0LWd6RbB4gC+4u#` z9YXQpX4BbS;7RuEnZ3Chl)8+lUI(IkB3VbcBb}iBer{ECD;xBCyNi#lSqJeog(Wi$ ziSHX{u+3zb3-Jq9F+PDeATpZSAtl%V5o^wJ4%izbr{+N-bCy6_ti6 zjKRIH;HMdM9t}snPfEFS8+BEO!n)4(L-gQt>nF=%h$B0nC{RegK6!ANagpe$lF-$M zbOaFH^%%OlG!1Oe>)OZ941)7`b@fvjEwGL&y*)0u8tgBhdg7#L;0GT}|G51)!QJm$ z&w7#gZS|wfUEoddw5(-YG0{O5xo?{_d0^TsmDM{)c=u4dwRx>87z?Q{rq^3SbnR73 z)DeA@hFRr4ceDeq!|%X7XJ0TI&DM;2_XV`X(>FLN)?l~2=5ASN2u{lVV=J#ZLip?8 z03tF7-g;%_J@FxWM{)W4-W+fgeW~WO)u>{XTh~4DC3$sAW7S6qFij>jYMQ2jF?G{3 zwv;B=Lw7b>mz9C%B+v;ydJ2NfH&*k)gCNk|W=736LiI@>{r(_Hi26Lf&{l7U$n2g! zZT@9&XoB>$ay;;EKU?x{u?6^zv8&ZC-3PDxeC}dJqN8qIemt27Wc~aRNFnE&ywra@n{0K{m6vdj?+oJLKOEOVS#ntFmFSEENIPZUsr^5L0~eV z&&WRjIy0rATfPdyStb0plik7U`x;kmrHYClmO(N1v>;3jzo`9&_}Yxa52r9jqa@9* zbfGJWd+gKfc{ktSw%NO#f$y6@U2=AP{l;JjI#xgSa1;{XOr2Wd*9^heR@>uSQb-fM|!%caoVV1fS#6`0uOH#uZj+k0a-~?wed=Stl5a2Pa&X=s>1Wt2F+>0hB-4 zqq}i^5NL&G7E!jo1ZVpE`3G&az}-kOw@KCmd%D}^iY{A}ERKCQZ-p+n;jc`eGQ7c! z-(~yX#_<3OGO92IZY^L#SK1u%&w! znAQ(G4PTLSb^Cl#epLlHVQsfN8s~x+(kHiVKAq?yF=tk7Dbc0oV{DaK;H!>%XmH0H z{37{Rn*%+;@C>x$SC@gcQagIi)>zQ<6()XE9Ruow_@*U!#h}mF{bi!lRm?Eg%@EW} zfFmpP-+W9T^v@PWhwC4LHazrr({owywQ^g0X48lcnE#uhw;2@O*{#Q|c7V%|zVKl3 z5Ey-`4)gZaLuByimHGHo)Mn4A+$+uJ(I1#6#`M8wQDwXY!(OiX1Ty}-<9Do``(0>i1fm;Gb_qKjkr=j8~0Y?>}~ z`a33YX6_{uh^!`k z8F{*k)T#8%g+_!YcjPrcyHEJ~@Vh0ZQL+$bpQc@nvjt^<9_l$k2h1^)JM>WsV2y1U zJ<-0O#A9j4@<0I?en*E|&oLnSId;>BefPoNePrIKoUITaPW<4avk=rxb)6H`j)LXx zsCUn|6vER>gI}-v41SX5dSmf(vi@%x6ly~Uv)9UNB^dK0 z7l-9}p?t|CTenGTApVqpIp)X|a38WVdX5r3xMV47W**_EgfU$M60^6(HfjN zPK%zswFUFL^mqC8DG-f1f2yaN)Mwfu*W)=$z&qQW^nMfZp{whK6V(?WpE~gt4Ht>; zdqmNjq(St{$W?=`3NRf?-(1^$fbe2{!F)G@OU>HXQ!BQhdP+^Im}d_5;SV?KFFAle za&D=@x@z#!uWLan1uV9)0-9K3iL zwIw~9pVt%nhW%T8M7F_w-$Rl?7-gS6}xXhyo?L>V%pq$@8t$focZHD}!6kU!CH> zmQsw7y-M^(;ye3dn-}+<_7&*tM>{~d8@I6i4;avlY`%T*uTS~$Ao9+Gn_X6;(qb!Op z?}32jsWCgjmG}wIZ;w9S1oKo1ZQv0Dg1rUfoMztzf8BG{K24$r-^u8V>`w&qbouA5 zL=l(<9h%Cs22k^}tWqQ20>WKS1Y2)pfmbjwD<*pis9|gGiRb?F?>BCnR-EVr{ZfnF zjv4k4NJu&DT(=c$zq%0xD4E}u z>c1-tylXhz53_@wTc&Nz1Btc~YNI+5Beugf}n1^9g_FoGwC*=IE(2k9QHh$v5gRoC(gO z=w-Yy>R{C8?__SR0ROYE==$zP6hBm&=(<%NwW^FA!-oPPT);lM_Kg}?{Wp%O1QNU- z|NG~Pg~Zp&=~lQ$5Is3_hMB>J2(U-x@JGj1K$KjTY4m{biOR8SmonqQnq^rfT^SA@ zg?97;?+2KDjF@9*ucO*tIo~yw@bFy2tcuF>V4Z4V&ekURR+|28*;RK^A1U%zho$~` zzt;oF2H(MN*W}LeNr)TA_`+cZ?1-;!jx9q{~|FyMlH0b=!PDeQ>9|pJV@!@VVR6p>a2s zf)j91S@kUgbZzC4)pINe?r!y5KQ|B*)ug1sStH<1o4dPr+&u8}?W-F3pHN-XcJxfT zkoX7AflnDRLA};Eq#4rSXGGCQ76p)jh;)+j( zsK}Y)T5n3$r}oLAULg{U9owfmU9}>3|Mk+R=?s(`U1)8sqY+=bQcLYCh%dWt+))rt z{8d-^+b>#R{!S^We7lsy&G-B3<&L0lRJhQ3=sn4EharvREYzOcRnvW~9o)MSv!a4R z!Bv@5ax;VI;|7N8F>OPFOO|r8V<@8=!`z53C|de*+QM6d}uw`lX}KizrBko-=A#1q9+02-50OV9Qy{5gK1%K zj}gT4SZ%em#}M4{nU(4A9Mn%!;^d8nz}nsa$}WbqKbYUCdUyzw8s3HU+a{=a{%c{F zIyv{Nf~ShFq9Hb3ow&kGg49d+x`Gqspxd9SRQ3%AV~GQ^`>i$jopE0kRs^ADaZ#Sh zz+RL^_DpK*o*`{u(uf+^hPV62Fv&dHhb$|P41&Aj=9U4`b8uH3Tv=8{{8Doo^HHQ8sy_|8 zE`IV8+)yR2m6l(@uZ^zF-*Fzisa`fYqt#KakS6`WeFUsxA8YPV1q5N+d!RcJf_Js@ z=X@2w2$Q@r^gsofR)&HPN*Q1seEM?lq6%=UntL;&PC*zLIW2KtI|Rx*44Q8$LVWaa zwVDda+w+w!9qr|y@^!dzTGv4rnP6hCBDe!%2BxvRAt-m-;7f3p6*@lUS=(5!qTj3y zGM6WMzk>@aKfE4!6HNTL@xev+w}YcRs28sk0l_$3-h$urK>x*y zJsov};NB4B`SmpLa>ngk>Ej2Ebp2qUQY`Ac^3wyh2ZJ?u=jm%DL-3<)VpOiL1Ltsi z*fiG@5FS_mA-$IlzRTFV6Q+{a@qCtam~2ChMzzfJ5`vdj(|gxkkp#!%`E1wIeGo(} zvCN%28>|*lw6{|!C^OXjxS}*rXQyl{dDH;jdeP%OKYyc^Ic~|F+r6OIjW2b2QV%9= zfpvgPH!5?39H(Crfflu4$tlx5)cB@{e{Y{m_H!=4HZcQ&)T>h0#~ugg>4Aw;ADx1D zcFnbQcgKR>XA*Qf{u2aVO7C-zSU{kY?lSL{B!nBKs^mXLfnMmp*MZ|e&W(BZki$>V z?#|d~F<%edF%#t?dPttT7}h@QNI{)N<(Pt#tN!_1vG)cwwGb@xs_~rR2ilCE>4$4b z-S1jB*Fx(WM4M|HTV;s9yZ@_AA=e+wac4h7Cw&1$F>ZohKH-TiLV;@iGl&nx1Y3*{ zADJ2~u;E@o4OgN$d1@}$H7<7g3R9w-?-Mheea`($^>LQ5N&kK~3B);-?b;#)F z9$??Dwy3@153aZQ;%Ei3&Oy6TW}C=9)%QG&b9@QjZdb!MQgkq?E~UlB7lZZusq2qi zBQUmTgg520APCk89TT<%wWDUPT6E+bvZr##j!7f9|FFKk<|gs2b@R*}?TOA-{dP%y z;WlvO7pmPkBM-KlZR+hCBoBKg-yUuxe6pl$N981f12a^NeN@k&R%6&@wJ?$R&6v#0 zsi~kluPyDW??U-cs|RhG?%`9V2zxd9mNzuRv4b|7yO z>)P6EqRYnI;LhI5gUIGsn$%q1u!%=f5mSz#WTjHQMcO!($ z^j2<9ZUJWx=YrUJH5l)_HJT4B0Y%no#8o$Nw5e&d8kT2=6{{Lw=}Ls3wAb z%y>=lH65_d?2t<6H3lV6%=Dl|f_Hqr)4s?F5I4TqIOX6Vc&ly*`d_XC|9xqHU`94X z*XC;^uuF zR%^RfX&;4XKRni#IzpVE5%>MjB=BR`j_4aELL?iab~N`qgo|t^HJKcSNZIgg{nRK_ zTYZpwQSS+Jp@q5FTdCOMXrK zhIq8fape=lFWwv#_Vy#Fnaf|cZde1_oZ*V8>2~04-u`^-_Xs?^eLwT3oGS5kzbB5P ze+T31?)YmmZD4t*jH^BL6Qb+E7Y-flLY<*s_@qnG5cT^gPLVhYv9{7s%g8U#Y)3Mm z(5yiVyj`0ZP!Aq$$CNL3Q$eW?Y6)jXg7r%!yeMG;xH@Scocj%tU)5Q?S1|_y&V&K_ zMi1~?CO*3UCJsWM#SMcwhrnTsUvm9oFL()0j#pTOg6{A0YFgA};@cn3eE(w+guYWQ zEiRr3+P#o&`4=z2y}uygn3E;w0n-+GSs8&V{`RX+t_`AnhTT3#GElpFl1Ypj6RcI5 zN6cw$pk7+$dwmY^2Me4=%Vk@D+m-(%)~gfTT}oP(XQCkXSVGIgDU|c}Z#htM1iWX< zGc2vtz&o03b>T)l1dT#JKeeqy4UFgw8&4cN9V(mh?Yf6nKN&?_VsXYY`n7-mRG9nz*omWYe~NQIV%-{*VM~B+S9;D3^`qivdpI(ep~nyg<3|cB@9`T?k#) z4t+=+CVqGWzi4zgYBwEwSePgafr~%2uul%W3=h8}=8dRUI9HSPBo@rdCzR)BhCo{v zaBIYT9;l}%C$rOwkXvnjHT_}_xVMyOl84qnc+_XH?q)af#0{0MgRRYG`tngRU!K_FO*yErUt?L z_Her|ZD8;3^r_HE18Zb~oN2o}D6ebP=D8b!w{Jy<&ngFqw~jGswXlIOpg(Ux>_jj- zb*3ihI)Xjz_x(GZgw`K=#50*PPxm&|klkSaZ?@{4wvh9Y6gT zG}rtU-Cw?vxJg)jJ6jEkweiI!$3)bhmV9t%vnqI6x;sy35+9c0Iqj4LsFyw7S~|^wAau;mw+iiGDh`geWD=i#Pqg=n+;j+zPYs|< zC3@%1b_1gwvEWy3(=r(C2VQbpo%tvV=mpo$M9AJmwQj-l5(83ydl)9^I>f&ZZRj7X z+YI)lyg-TR6%emq;AB2C7Tl}hyuGJo!FbB~P(3Lg!ukF)pO%Ti8+|RYGpY+b&oV8s zCKtkk(Vyv5;+GX1j5SzZ;Ja^^3{CC_BYH~20f9Gu$mym&FtuOY{jKK+PEmrp=(-O0 zwk8)(y-5VmKibvRF&Dg9%}chNY6JgN4fprtXz&&lilg2=N4AqA>#=zPMAIjyT^*PN zA?@qrsjL79&1Ps$yz>hDL4R zaYw+89Fd7x2ykO_j5g>9Aa1?d-u-0^*o^txic|N29}wK@b$d5za`tR}+_V++bMaGN z+gyQY+^u`u05epk?wqW0Z!*LdvTB##yMX4ReSL9}GdMB((?vC#aFMSOdhOXfaLx=K zkaRBxcd`8JPhkW{rDtp%ZRm}xXZii+!Q;RTY&D(}UW|Iv6`ecX+fiHX9CAvXQB^kVF>asmA^&wDj+24Fa5;Yxn zsAqbuz;#?<_*hB-qFJZ1Lu99sdiK%re}5N@Yo`sg+pA>Gt?$RLa{5dIG+6bTO%Rv0?v_l{L0-|bfwkYfz@2P4er(MwaGO4zx~1g>M&In`o}mP*+#u1`hPsS};PWa}uj%m|z4e&kox2s&71J3qnccJ`eR1`c8tURC( ze*S~7a-H{}_p^FOH55V=@qzj%{R`obX~))ZI*C62xPjM8`t^34zd^eO+Qzf<^5!H% z=uJy@*17`TnNhy8{FZ|Iah{9fQ4Rz*9@>rlo)1p?b(PM$uTj%GE9uE@k}vB%m+nvt z!ea}2-$#4*LR_s@aOS=r=-Cer)|YvsPG;XZoxt%VPra2N)p$Xy`q<#SPbfJL)~xu> zR#4t?M|3oIf;*VKqg=EWf}77w`#ZJ4wHvEiPpg}C;omhTS!h6Xte{X{ zc070|T3+)hYan{mzc4_;4K-ii8O3%KLs+YsabOz3uUCoPlRV=fQqPxsaYGgKvyY}s zdhH6P{mwO>rq3ZrJar-M1_RWF@5N7E`JpazL%eFg3`F0RibQ@3P%YQKX}6y*iSMD= zbDoa@UD^u!is9k=)NAkxC(1o>= z^;RthdspbaMa(YH2F9c(7sru#FBQ(-YXy#9?1P=Y8K{n`I$Oo60MB>g5A=KnQ;BE4 zb>sp><|z+V3mw6;OMWy^+z+n#0=3Y`yFpzrX~ig&G>D!gs5>p_22Y+Ft?OimR5z21 zgB%8GRu*1==f4UJts{Fsx#@z%SMV7mjrjHDT#XZdo&lPRqD9Hy|B6kE~RUTN@x=J*D#MfG()ptri`z?*Ju% z6ZJAOndlx%GY_UEsrT=nFJICFeF1%@NR#N^mTOlo_-mthidO!OE00n9dhzb5aW4r@ zTr-NXNCjKGvG|+*b}zdZxC1ASpa>{IaQ zh1-?nF)%-x7i{@7-?C29sB)=e>bf5Ye)uv_>yAx`(>a%%sTM&8sQ6XU;mIXSHRiuAV*sJ37Dae-4~1m zqD;oBSHFh*{Bp<5Ih$HgC^5eG%I9xjx=6(8zEuLRL%Q@?S24t!QY;_u)CD_q^@5f4 zLa>Uu54@V>4c@s6zLItOKo7S2dFN;qcpF2K+*RIz@5oP-TtMp0(pF>txnb~%H?xHC zk08GH{^U}J383E++unZ`i0a0V@0EY-C;a)F`y=cdczolg(MEGXUu%$e`_pLf@9eo> znWcwHvDzo96v_XLCEbNZ+7SJ&==&MG4cvWiZWfK4IkKDzFPAC!Bey18UH{Ck)?mqRY1~{(ge+?Xtyd z?h@YRhrH;U+6r*C6%R+N2_SkMAHH1m8+lu{yjatf2^KFV>tcHyXz`BY z8;|cp!C>~(v(y|2GXe_a*dnk_3|BwdO?1`#6&pBvZNWbDcAk~KGT74N-2%#qugcix zUm3m;we8cTM*ev}Lr-lUSNjwAp1=7Qbdw>tnsVFOcn=*PAvUXRQSfDTU#>z5__r20yKN@^ zTy|T*ah3hx-=;a1B=v!Fz|OVTw~*+Kr#mOiHb8CO+aXPPGYA#Wnp*XK1AC2c{cQbA z)bKy-KM*DlLED_!-;+HcI+dcN`)C0K_H*8Bx%CC2v_j{u7KlJ!AW1l^}d9v+6)R z(FK<-6?hW;&yblqqqF)jgof1|xBMkwUwuCIw@WE_pO4{uAL-YrG^}zp9b%V^9~*s~ zL3N+{OIe%p&;ReEXHO=&ylTanlQq3yynl6DNryxHU+wdUlP*E@W~Y&l*Aj^M*Q%|J zZBe~Q+OIh@m-w39=f@?zhw!F2YWdP2RF}BDI~LG`>Xn?d&hTJxjwQDzhns=J-PCez zQ50Ce2;o($d9PGof$eCMRMcS#QA>#G`?PS-oWIp= z>n=m(w;Q%C<O%79oweh4&UAt^RGyF1bI>!6?W|AQ3f4#QGoxE$QDU-d`@8f8Fk0e<6`q}j@XCtn zGa+xlQU5%#b2#xSx)ME9E7`l&onZ1HiDksT0CjyM=+n8 zvflNR_3V2Rb!4&@xW!u=v;O(qztQFU-@l&*Hg&3t;R*qG<4$!9M@K;TTxR?C+Nq#c zUMrEBeiVbCv}VtTuwLc5Rxi;br+&!<4jO}c?bZCnwjaTn z@FKe4^G)y`w>(?7sS<1xs4kstf~qeo+D&&%1=k{HYm?jw2$yRlotjinbWO)StIF#T z&R8n*K)n=AU{Z*bay`Cas@vJq~Om>(V`xbtoF=^{MAA8`+stzSuoq z0G?jxo*h$%Ky{f#Wmta!dxY<|m@*q2sTBRT*QCzwq?TUUtd26rSv%Kg5nmOme&lnf z18Q!z&5G9|de$PbQSS>AoGCe+`|GcOs~w>l+FS_1$6t#2&44(1cSg%hX_UO5)EO4A zgy_HBAs1gw03%YHv+7ha1cfHva;d2hU)>O08N40h(&RZo_uheJwAr5X)duwaJC@eV zk@HdNF&ZyL>P(-u`(mOO_{X+fyJtNGBHbl-msETMy)pGd&Why_?hF1wja&j|SZwMU z*>&JaKG?ZpDT%v->+*SLzJP!4TCz1I3e>dv-(L@zf-lkOz9o_PaXtKwR~8L(=; zcbee&Xlna{XGcL@cJ|qsB{E?e8APWn+!9sn z@V66WZNXZ&*RU_~9O%Xy3+HCU;@+&>buZ`M1GP)GVy_YLmugR2Vm)*r?jE?rOgjX6 zdqJk*xi;|k-tBbh9}D4!?KdJHvLG1z<*;?nHB?TH5NihCLoMTqYSZ99@0-6r(4f&3 zoXoLd>tud{eWD?#vw-;Y2X^B`rA-j6esOZ^65_vO8*&CV#1Pzi?Rn2m2B}^Pl9tBJ zB6zc^nbMRE%7h|!vwfpMKl;h^Q0irrCj|e9O}-A%D|VJMI$)IeN!xRX4x2k?fp?k+ z)JcU$6(UE2vuR_x?$3*$ct&O0a(+W}MmQ)(4F=ormafG3U*IgB__gF6S@--MQ^(Fe z2}Zzac?lg!;`@`$3@#F%d+S@zF?m05Y6DbGaF;{yfiAB$Nc3z+n#Cy2exmbUvdxr8 z-u3^QD9s`Ms8X?7Y3whEW)$67G_oHeukzK>=*R!xRr`T1ksEx`~!@pt~!PjqEa=PKphe9*1swY}Cj zgHPYL=JCbx;A$S(`sB(zF#WGIKA_5iH}~sUmFzT7Y7Q?*`CtNymC6ihn|f3nZKt31 zIt;qs4S$J%A>{sAblEhL2HvR$L4hkbqpCY5)GS99Y{_L$TO*CY-D2U2suZx!3VY&S zcY^CsHf`bDCI}?5KiD7agHWgRfUfig)Xx8KZus?UaCpN?$7PA1)>>B^Fg%2^2l6vI z#a-Z)Z+1Q{GqqB<*gd?#^SD8A&qE*F9^V~&Q89t+CY?~}u)E+snotVW_-1_WQ} zpL!j8z^8?`UzEBB!P)S(^){!#@u@pi{mu<{s+O>p%%@#K*HTyx#+NS#22C8n{57iHr`QqV?fVvAG*u<~VBtL5z(=_7 z>+c^VasP4qf~n$R@TFdC&{R_W=lA=b=5wULZfxUat&|3@ zFEV+S7ttw!dh~L=SO~(xbY_Nyfyr>xdFg5eTK=@;HPlg=K`41YxA9-`GYsJ>>#7*2k|Xqe|(cFLiy`9-aA=Il!=m_b%op~zI3zhu%aqB zZvMZwpWFz+nh1=`>Y)^3fR+yM6OZ&IBR8z6dAT={d(e6U&m6X^G(AzHHc+=)oy z8xz7Jo{qN$Th7ztWQqZV^RGIs67wN?{)!X%Fcgfouw@pD`@uOM^W=5HdQf`T(S1ra zA(DP{cH7(rQ1^t4e$hhKx6Wu!cofk|(MDOP7A-}s#hYP9=|`ni%W&D`mz4nl$YRyUhrM5 zPC<4{c43qEbZ~c_?*Tw9A+dqt_2T&?RO+Rr9S*C z^EbHrEp8o=Oa|rf^5f4-IpANP@=4%-6qLtuH(T=Gg1>LZ$;q2Mz_!_Q&`IeEa$B^m zHr>?+Z_@lx9V02Aw6>1RztIkn#?gV%wSA~8kvlW?kuo@PZt-h&IHLB1V0u^FIB=pT zMjQzG1lH2~&R0cbe`b@qdT2EeN?(r_hGl?RdwS7V%REpz%TluTo&hChvP{tlvTh@z z>Qz^Ng2TUNYp|{uqTT+r3%`bfof-3fwa6VDYI)3QiSu9`k<4{|oCfCSiBiV~$D(G) zYp+{+5Ez{s7AU5qfH`i+xkZuasO_PwNLCOy&Xsd~E-#08|J&lf|1jCUtgM| zYHwTn_zA0UbMc+al4HMtrlQt4GfxZrd34d_WyWBQd1IEuC;7ICc0V^toA|2F=ggM2 z65TLvrr=gR=sjtV?>+8BO~zh>{+UO>I!V!-HXMigZS!{}c!ooexkXNH>SHi$x-@6i z-v?t+{7Z|XQxLs;lcIQx#6z>OXa{>K#EY~f)L82vd=sS=`a_781KM|a_TIQY;a01i z(i|GjoeDp;pCXY6|=0?+ro`Jq)7ps#T&N@}o&;KV-K<~>2+Mkjw+ zWE~BW;nLZAbVtB4-qNuBdn-ga8GEbBI#I8%PQ=J(p*pRj=WRhZc&oFNTvrRg3h@b_ z=WrR^Q%=vu9<;^$MM1Z7wiDlZW^=6C5RIJwTi%Dc5qMho`1%oDS%@7o^(q*5!Sz`a zOled?-r@}RkmwZ9vpp;h=Wd7SXPN7&MosXV(*pK5N}|H-^)r(rYrwNzoRDm62tlu| zmT0amgm;S`ta&*b&$f*=dCKj#P1@J%z_;2xbH9}v=%MGw8&}&BTnk%M(ftWxR#Zo8suw6P zKbRamXamZUxQq)8js!pCeSa$N25%s(m7y*PVXkd$d1DnsQMdA3rwoA?llqQRN%)bo z`0Q?LBd|`1n_jdvfVPA`#zE!)avOJ7jBj^GfuP6v0i_>;zROl#`?o;!;o1E(rFw9e zeRCZoJYHSYqPbr&6x<^lSz|p8gK54}Lv#0O)HKZvyuR%;c;EJCC`G1&V`cDiO(W4U zV$Q;^OR1pR_!YVyivuloeVoQQYdlDeO}q4cJQ%-fHaBh=fFPqwZQ!*R1bp>{!sI^C z)nwj8xEuj*UTONX>JzAzG}_~CYX)ZYT-*4_5%815VMpa9Aavdryg$eZ)VSS?WHWDq zv(J5YUj7)c#{aN4%91B~e0-X6AP4lRvO?#b4q*N~ZDu!O2O-75@TwvY6zv1+BMb&m zX5c@uX0ajo(*v(Rc5@>8ZXDCPW-NGZUfH)kJOV?DcCg^$MwD;*p~DdnfA_Q9!Sk6c z=nA$sl+M`_|6{T=|9ck7V+U5umAVFgdyd342Jt@@8+;_|C@6Ft)KALO0Ml`2`ng_{MNP!VRTB?Vz!a+tCUvKQ^<$Z$?WG75gc#d8a}>d?a5YGX zI1FB(PWjmJX%IST_OEL81*hY1=l3x;A%57oHer+#IK?@K`g)e4Xq#o=$9eXswsk45 z2qpf`dT&TuIjO_#i7h7A;=vemr}^Ol2Dof7j@&s%;t_VEe6=?!LY|tfv!#O786TQd ze-r#25~Z=biy;>7s#@Z`8(dvU{g2JbU|*8d{hnfqn&pGi!kU$!_KH5vNFqE}JjZ!g zVjV=k&vi!J@*q5Un<;vj4$-_@qpv&}jSAP-_mvtKqHbM_=}T)pu-`Z6q^(W?*QovW zksd8DBfn^d`H{MfNfSBu5}kPEtac=S5VZ@tQojbwMV*JqsBznri9YPp`C&a8?Bk+{ zwd)Q;q<-i0s_VPKz8n{@NP*z2!78Vj918fm{oh$_&Vab1WYw#M71@@47e^oJ+UIDQ_YCBdwJ_yrCTYm8tZ-{ryDe-g#m#oDSyV zv|}ft!ciS^@WskGpTMp0-)WF?0yVcWaZxtG&xw}vzAh*JhgLkhkoYZT`D@$dWu#vB zx9*>Qm*|!)$~{-(8F-JO-HOcLnJo4C z69i{h#%HRn0-Lg_duLoQ1nJrnbyjeZTkHIx_hJP2<{C@mi(Z0xYD>5c7na{xx2*+qUXmlT1P9-1Ji24^=VsPpyeU+Wz^X;RR5ajSDG;qv=hQ* z>!xzdz8K%}iCZOs^2lw^R#}gMU`?!a>`z@1#|_20CvJlEbnny|dY?dd_2@2-Rs^d! zJVUOf5M17r37^h2g0FIP#U`;d1nZ4O3Y8L=U$)D0;~WW47%l}_#@V2@W=*ztW9am=g~(@_?Ba-C zh%1$O8+&}fe|*8l*?Ka>!*yA|B3e=Tw$&)Idl39>l!n$*B##Tl%hrDIBRGHfQRF)d zaHXC<;B$uwpY)zSq&5n7YZ-?gs|^xgptjN2^$SFwSx;0WT)}bVHlNFIg;4#4M9C(9 z(6^R&1vRWf&A3%n(=P5I{>pk&d1yFlww&9qveXhnTXv_uI+gHCn1+o$;a6K*&85^4 z;v44`NZM`%KRirv+$0&Y9tHD+;2wzjE8ZV79wz$uO3|KElOaqPt(&{xBq-PXkA2)q z^6z_9!PS`^;A<^XIJWuQKfG42Dj@Zp#`M#YdW0%fwbuCSlHi5zd>^i{6&(B0Dc3p& zz;onk)p#3#o_~72>#TREGw|E=_4I6rsysbc&$tWzTdH5>L!vvLNW$gPVJX6$8AJ1O8O%K8&P6Z>kW<$_Ianhe@42H7ZOxZjRxEYMZ z>(~6j<#=DzPId<8VN1FG(G+kxHBt-?ZU8G?x`StJ2F@#+`Geb@5nnpv>X2yw_voz#Ec&-OTzc{Oe?SmjFxs3+nfG&}gSK4$}RX~{iZzsEro z(>U_eRvJXXZZ^{S0a~9@v+=k>&^M0Rw$M)j+$@ooA#*h73#VUoI5bG&F~&wgTNgt5 zE90kycfmV2u6j(HKKO=peHSE5AT}76Ulb|}zMoUG{2h{ib~{&7WKN<=e#t#b(pZw0 zp=C=VqQI>>kx9F<44jjxb6VC!fpOb>S6=K1@V%o?Egkm;l&+sXOIYEc?iTx)aym%= zMf4A0T@VfUr|s>j0wcM5tApl3uo6|AGG2`bTjE=8wAm|&9#oy%C?fvYoc+%2j15E^ z4*uF31cE!C<6ihL1l>J*sr@D5`+rTG@cL5{_y^X{55B_%KjVy)@69Su%JP4Fl~RUa z{;$`mkBh)+J=D0EVgY7S{04=umm!Qib1*ct2P{|G!c~`=h#ro2e4PClB5XRNdiMm_ z*G_LyNjwWyrs=lIE7f4yIA=CGID>a-O2aSRc8E9E#jPv0CH2g3a&a{Sw{J*J#$F9v ziq5Mx3qvqx_%}@2F${+9dad_Lg1s;iDU>^1D7=o(`wu#gI=AdwK z(c-Pg_dzW8s5`nj415=h5J}G<@XP~x)6NWlzW(#dm0S1Y1#3Y=c=cJ(C+dXcCuV_D ze`N6z+bD?6?4LDs?juB_okcI~2(BpQ{#4jL9(*Ucb~8SiZ;Fvrk4-z+)jb_{G!uwU zJ~jL`cQ^ReqFejB?7>RyZ@nbl3E}dv8Ro7j;Hg(g7Jm!}m;1X}=HoF4zb;p7`St}u z%X>PDh(8rb^p(UK1b}kAr*GrKrC{FLxbKTS;gzU`g%e6TAuy#rboJLqjn2|EU7bS^ zT-X`AE^$048>tqrTnyEnRswDDKhoRTfn(#bISCz6xc>J~K?{9+XG1Y#)rXP4Mcbdyzb%1lt?0o9+ zP2lQp9lmZyd}pM-O_}j8)Y*T2YnibOEMY^<>^*>xO%+=x$|AaaNT=pP8z@@qp0BNI z2lJ5Gs&VOs5aevxGc)!X_*)rnO@=L?N6{WP(oUgr6}3^W4yayXQ5^qzI=Ie*r9WTR zfwt=7!*_wv;08sz{S;-PcEXg_gaQqSZeCFw`z0RY&k}tHHnc&wbzAVlhHEJI`}q9O zkql7$#!xKd7elyXLfNEET13~DgoIX8AxJDcp4l7$-pJe=>f4C!%1j%dkT3um+vD}7 zi~&$O=kk6&uKee7sa{x!K0$OOu~;+i205=;6{FGz|M`E&YkSw*gYGrIc1vqN_^oc{ zMx81|Uq0=!mCgtArDjA#-)SVi30G9vN$NptFA!~y0PW<;Hp!r1avqAZPY=!p`@sob zz+4AV>Pla2x$qkm1z&F@CHR3pxqg(&B3Ceu6n2lYvIlz;b#T&9JOuN?SA|s4z<(q= z?Ltxk=*v=Hw5c0|=iZ?Z(IyY}lX;H*eZHW?5MFon2LDHsSE#ET(J@*rVP!{9qqI-E znbwc=a~H4O+`A0y&hn`iDh^=ZU$bu6#klEC;OQte$f!TTqgHaI*hVU$8X2 zKfBCX3A&SSz)bo15Qu%*4-{j-8~-!5CV}YquexEE_v#X#BW0J6J_*z@BKK`rMDYH% zZu*5mu+8(<_7!|2di~PHb$xrlPI~L*BKsZU-OEkpBt8MV@Vy;l^G=9!_pXo1Fa}km z)*XDm1f0Ta?-~VPx+g*hDitaS;Tw=dQ959onYL%DR}SrBM# z-s2MeUxL?e%(K>V17qr!fbmPo`HhS5);VegcFC^zq}onA-LU^^w!SBrjUCB5b{Zo# zC6Axg@eSOhUzR%|2de3deU0C0!B@J)?RayEoV)7To+}TD&tlJSjr0YhS|ZSU+bU2# z8w3W7Nd}80IB@Vh;g@|nu^YLBzq;j?eS|I=tm5wN-zw5N#9nA1U!xmv>LmQJsH(@;93tzH4P9G_ z7Pv(?V;pGuEE5C?ZqB~6IxMgUg4zI573kXB4 zqP(_Iq6b9RZd#xEnu59&@ILnBHAD#-*M9D<1?T-!o|gM9P!5ZK4^9|>$jfv`ci0(- z9}n(Na+wZJMcuKl7ljayxBWbs@*Mm(n_qpC-vvRyiYbR@le#`3`C^jsBe0b8uGfBN zgB`Fh;M$>XFmu)$)CkErJ}@~nXtfaBgkwb-^NG%B4*g`X)B&Xvitdce-%j+uw9`Ff zY1BIG>h9}}N3G486Uk@apE4u zIIw@p%B*EbfK`>SVykxtDpT@fjhuf&@b!G5Joh))#SNYvC9fcs*c7zGm;pxK&03R0 zf?HR%iGR4<2km^(GBoqR3D6twIbB3}f-#DfWe5SQe$M16*CE=K@Y8)l1cWhnk7c-W zaJRYfy-pYhJcXH;j<0b?wNQnoaq}z$?0|O8O((EzhgV2;~!-Rj1A z@U$s)?^W|5s7>8*X8!<~^YW*x4xfi3>yHK-MEgOQst`9imgot?#Wzpqe}`c3=mLgA z5;)pZ-yOYdh;rwBOElL#foOcsjy0!85qwX2@jgr*l$(WlNgiK7|NQpN`}4-&n#{~v zeB2DYV8@%qP6WRO8t19(yN}8=w?)3;4d6sP%r$y>46Ly$CwQ-a1X}!IyJ>ExNuE5M z`s(5`h!;-U_&l!#B3qYy-c;fv6fciY|1AI~Nsk^Lmk5sX*l+#y?;%!tz1penC%CmT z=Y{v0z>^NTw{Kw=SPnUre6>>$Z0H}qta2Yj{15Lpoc|7&hTd zk|{JVgv!HL)Nbg5lcx7!IX@h% zN$)yJ_1NIP)_!reAp-Pp4KMNha&Q~6gG;6p-IDg<=Y&^8|4z6systs(uC6`3`S}pU zaU0KU^wWaads1|euQwQ`><9ZbhrsDw7aSifi9GwZ#9qBsVAZOmEPYP$*eJUDvdY^9GCC~6qf8mBP_ zeCO}18DTw83DB`y7bOAi!r!ml3T(h^D&D(#T`)wZcib%}R)RBr+NQ99@u0fNCrlYu zL-n;EpEN%@fEoHLB4E8W7_?Uj&kR+-d^$e2(Iy+*l0B2Vbp>Fl&3iSQ-v-h7yir|h ziwVxDO8&TA4C#U#NEu4}n>#xAmfm0BmQ0rHNc4(Tg?r!b9{Snxkc5+Ors};z>E8 z{$dDuAr7sxgb*0T|CF-)imYyztG_8CqW@az0&4Doc_UEoX7NZ)vcC>5aYsAjIa ztOQQ8!G(p>N+GJ(IukRn28`f&FOQB%1hxFe&hOf4;GH}F>6)16sjZ$Bo})gYq~T)K zPTC%bLRPL#bX*5c>d{rsr>CG+$(Vgs+1{1lzBu!_w@;4vx&<^tze-U2&rW^lZw@iBSSaAcaM#kHr5C{m2JO`#;AifT|gh|WP-~& zaaq6xeHfJT z`3p{}bHKT1v_khf@oD=b0`;FcfNpi;>Odz8!h08oHlFzb_Fk3avM0$pXO0c=F&Yb+ zs)SHH*M<11SjU@_2tQ>#%GykDfim9ri2 zp+EBcm$wkKR@xVL`Qm}g41RIuKYvFQIH}x~3;L$5W2g|#Hz*L>jcBBx@6zFo z?Ew z>PE0P#L3)DxKH$$>sA%h*$|&HbzNv^4A$D27c%y%f@b=5*SwZ46gs@Qp!_KjwL-sN zANac9bE2b^%Vr~Q+>4J*V>g2DyELx<*$~POXdE=ztPkowd~ohl2Ag@kdX^o@Pvh6q z4A*Q2E6d!jdOPu{H=By$v&0a#4cU)bLFz5>U0jBdJJ>B6w4fV@2tH_is1H{`jj%-c z&0Pdx-JUN`&yQl32sIQ#3svp25ZILwi7}15TDl_BN_h^qM@5*x#Mp@xLesZ zH#ixL_k#S#4Vw~F#x~qx&!a3K$-lDUxHCr3( zX}sH7SF4Cl7xtVqNP{r+vc>)VAHXy`qSTk_0G8*+4p!C+FjI6y*`3A^wR>i{WJ*IA zqBecf;1IaI?Tl@9Q4mVkemZ3OjrfFvt)lx!AsCo)GUI?P#B;o*DWh~Cdh+{*%(z@s z2Yzo6G}1sHt#4hmHXq#S?!zySrh+1CT9Gzj4dFpA8PQKqQ0*HwCr-Bn>zsnLcJh6Q z7ROmh@QLod=4ule>;~rk*_@Tkm0-5LE*cv{0aZmtVxY=DCA04PXmCE(n!jmS0%82LW2#b> zsQztQx7qR=m`nTnxZ*lgmTQ$2OH?7p&7Iv4QHh#gWAfCy%fUIESi0U>73`Pe?_8Wg z^oRT9MN~gEaJ*k1`AHolNHZmrrLos#pujol{8e3Gaongml@7U294bt zGmq#^^@BEE2S7QycFKxdw;(bz~!N|_a z)x=NF_?pqOF-$^2;`d+QlgYO`p4t7+1^&gRTNj&Bz`p*^m5idb;v+6IEm87+o+bXh z{`)yg;{Uop|92d&Phm6pLczb!f5xY5P>Um95dHPKzn^pe?f36^f4Bel{AXP8)c?8u zYp*l-p9?&H<{a_`=D+)>{`cqg|K9(s=g&U>?7!ik)%z6vuj}|T?w|Xgb=3Tyb^JHp zpE&(#Z~9;M$)EW@FZi$h&$|9u&8>^i|3CBoiSwWM{@ea{T>g8`%Q2ajV>11}b^eJ* z+h6DQXFTe^{n>w=JL|9b{#oar*Ztl9PrU!cx42-tvFr_~(57jQ{8S|2*gXmskI%PX6@& zEARe${xi>?e$W5CH<$f$mH*f8&%N>3|6Kpw|BUzNb$`bDd)z<${vP-5_L9H)|Cxv1 z`p@<9zkBPy_doOeY5&vz?|uKh-~VlYt$)q)r~U8#|682?yzWnXyXya3|DQPhdH#D} zfAah9eg9eapY@gebzbbh;{W&h|F?7dd%b_2|BU;m|LcGI|9M^OU*rEh&)@U^op*oF z^S|ZK+rQ%d=l;Lt!=HKntoQFc_$!VQ5|X1OBu0&pkjs+qi4u|$6Ucp>-%&U3K#zcb zA7uhOymue)J>qegH2+_Xdk-D;IPA9Xzn+u+Y4rB+-FIaFfBk&j4jlE^{eO=*<^MGP xJ?6j7e~fhw?*3T&@qq0f7%FJ{y(&C+?Dyd1OS&nT|WQ- diff --git a/tests/comparisons/big uncorr/knockoff+.rds b/tests/comparisons/big uncorr/knockoff+.rds deleted file mode 100644 index a4365b6a31dc3ce497c86f3e281ef96cee1389f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 193795 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

      geVj?-U8jF8SD%IdE{S9Q~5jO<(N_%C%lS?oRL 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 diff --git a/tests/comparisons/big uncorr/knockoff+.rds b/tests/comparisons/big uncorr/knockoff+.rds deleted file mode 100644 index a4365b6a31dc3ce497c86f3e281ef96cee1389f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 193795 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

geVj?-U8jF8SD%IdE{S9Q~5jO<(N_%C%lS?oRL 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 literal 0 HcmV?d00001 diff --git a/tests/comparisons/big uncorr/knockoff+.rds b/tests/comparisons/big uncorr/knockoff+.rds new file mode 100644 index 0000000000000000000000000000000000000000..a4365b6a31dc3ce497c86f3e281ef96cee1389f1 GIT binary patch literal 193795 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 t;iiSH!5)=$5A_{__D1s4?21En}K|rD)StJPx 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 + cat("nactive:", length(active_vars), "\n") + cat("active vars:", active_vars, "\n") + + pvalues = c(pvalues, PVS$pv) + sel_intervals = cbind(sel_intervals, t(PVS$ci)) + + if (length(pvalues)>0){ + plot(ecdf(pvalues)) + abline(0,1) + } + + if (construct_ci && length(active_vars)>0){ + sel_coverages=c(sel_coverages, selectiveInference:::compute_coverage(t(PVS$ci), beta[active_vars])) + sel_lengths=c(sel_lengths, as.vector(PVS$ci[,2]-PVS$ci[,1])) + print(c("selective coverage:", mean(sel_coverages))) + print(c("selective length mean:", mean(sel_lengths))) + print(c("selective length median:", median(sel_lengths))) + } + } + + saveRDS(list(sel_intervals=sel_intervals, sel_coverages=sel_coverages, sel_lengths=sel_lengths, + n=n,p=p, s=s, snr=snr, rho=rho), file="lee_full.rds") + + return(list(pvalues=pvalues)) +} + +test_lee_full() + + + diff --git a/tests/high_dim_full/test_linear_contrasts.R b/tests/liu_high_dim_full/test_linear_contrasts.R similarity index 100% rename from tests/high_dim_full/test_linear_contrasts.R rename to tests/liu_high_dim_full/test_linear_contrasts.R diff --git a/tests/high_dim_full/test_lasso.R b/tests/liu_high_dim_full/test_liu_full.R similarity index 59% rename from tests/high_dim_full/test_lasso.R rename to tests/liu_high_dim_full/test_liu_full.R index 1f43b95..5661eae 100644 --- a/tests/high_dim_full/test_lasso.R +++ b/tests/liu_high_dim_full/test_liu_full.R @@ -2,15 +2,16 @@ library(gglasso) library(MASS) library(selectiveInference) library(glmnet) -#source("/Users/Jelena/GitHub Jelena/full/code/group_lasso_fns.R") -test_high_dim_lasso = function(nrep=10){ +# testing Liu et al type=full in high dimensional settings -- uses debiasing matrix + +test_liu_full = function(nrep=50, n=100, p=200, s=10, rho=0){ + + snr = sqrt(2*log(p)/n) set.seed(1) loss="ls" construct_ci=TRUE - n=100 - p=300 penalty_factor = rep(1, p) pvalues = NULL @@ -23,29 +24,29 @@ test_high_dim_lasso = function(nrep=10){ naive_lengths=NULL for (i in 1:nrep){ - X=matrix(rnorm(n*p), nrow=n) - beta = rep(0,p) - #beta[1:10]=1 - y = X%*%beta+rnorm(n) + data = selectiveInference:::gaussian_instance(n=n, p=p, s=s, rho=rho, sigma=1, snr=snr) + X=data$X + y=data$y + beta=data$beta + cat("true nonzero:", which(beta!=0), "\n") CV = cv.glmnet(X, y, standardize=FALSE, intercept=FALSE, family=selectiveInference:::family_label(loss)) - # print(CV$lambda.min) - # lambda via randomized cv - # lambda = CV$lambda[which.min(CV$cvm+rnorm(length(CV$cvm))/sqrt(n))] - # sigma via Reid et al. - sigma_est=selectiveInference:::estimate_sigma(X,y,coef(CV, s="lambda.min")[-1]) + + sigma_est=selectiveInference:::estimate_sigma(X,y,coef(CV, s="lambda.min")[-1]) # sigma via Reid et al. print(c("sigma est", sigma_est)) - # theoretical lambda - lambda = 0.8*selectiveInference:::theoretical.lambda(X, loss, sigma_est) + #sigma_est=1 + # lambda = CV$lambda[which.min(CV$cvm+rnorm(length(CV$cvm))/sqrt(n))] # lambda via randomized cv + lambda = 0.8*selectiveInference:::theoretical.lambda(X, loss, sigma_est) # theoretical lambda soln = selectiveInference:::solve_problem_glmnet(X, y, lambda, penalty_factor=penalty_factor, loss=loss) #soln = solve_problem_gglasso(X, y, groups=1:ncol(X), lambda, penalty_factor=penalty_factor, loss=loss) PVS = selectiveInference:::inference_group_lasso(X, y, soln, groups=1:ncol(X), lambda=lambda, penalty_factor=penalty_factor, sigma_est, loss=loss, algo="Q", construct_ci = construct_ci) active_vars=PVS$active_vars + cat("active_vars:",active_vars,"\n") pvalues = c(pvalues, PVS$pvalues) naive_pvalues = c(naive_pvalues, PVS$naive_pvalues) - sel_intervals = cbind(sel_intervals, PVS$sel_intervals) + sel_intervals = cbind(sel_intervals, PVS$sel_intervals) # matrix with two rows naive_intervals = cbind(naive_intervals, PVS$naive_intervals) if (length(pvalues)>0){ @@ -53,22 +54,28 @@ test_high_dim_lasso = function(nrep=10){ lines(ecdf(naive_pvalues), col="red") abline(0,1) } + if (construct_ci && length(active_vars)>0){ sel_coverages=c(sel_coverages, selectiveInference:::compute_coverage(PVS$sel_intervals, beta[active_vars])) naive_coverages=c(naive_coverages, selectiveInference:::compute_coverage(PVS$naive_intervals, beta[active_vars])) - sel_lengths=c(sel_lengths, mean(PVS$sel_intervals[2,]-PVS$sel_intervals[1,])) - naive_lengths=c(naive_lengths, mean(PVS$naive_intervals[2,]-PVS$naive_intervals[1,])) + sel_lengths=c(sel_lengths, as.vector(PVS$sel_intervals[2,]-PVS$sel_intervals[1,])) + naive_lengths=c(naive_lengths, as.vector(PVS$naive_intervals[2,]-PVS$naive_intervals[1,])) print(c("selective coverage:", mean(sel_coverages))) print(c("naive coverage:", mean(naive_coverages))) - print(c("selective length:", mean(sel_lengths))) - print(c("naive length:", mean(naive_lengths))) + print(c("selective length mean:", mean(sel_lengths))) + print(c("selective length median:", median(sel_lengths))) + print(c("naive length mean:", mean(naive_lengths))) + print(c("naive length median:", median(naive_lengths))) } - } + saveRDS(list(sel_intervals=sel_intervals, sel_coverages=sel_coverages, sel_lengths=sel_lengths, + naive_intervals=naive_intervals, naive_coverages=naive_coverages, naive_lengths=naive_lengths, + n=n,p=p, s=s, snr=snr, rho=rho), file="liu_full.rds") + return(list(pvalues=pvalues, naive_pvalues=naive_pvalues)) } -test_high_dim_lasso() +test_liu_full() diff --git a/tests/high_dim_full/test_logistic.R b/tests/liu_high_dim_full/test_logistic.R similarity index 100% rename from tests/high_dim_full/test_logistic.R rename to tests/liu_high_dim_full/test_logistic.R From daa5125ef7de140a8f6d13dea0c072a49f89835b Mon Sep 17 00:00:00 2001 From: Jelena Markovic Date: Wed, 21 Mar 2018 17:16:30 -0700 Subject: [PATCH 451/493] tests --- tests/knockoffs/test_knockoffs.R | 65 +++++++++++++++++++++++++ tests/lee_high_dim_full/test_lee_full.R | 23 +++++++-- tests/liu_high_dim_full/test_liu_full.R | 30 +++++++++--- 3 files changed, 106 insertions(+), 12 deletions(-) create mode 100644 tests/knockoffs/test_knockoffs.R diff --git a/tests/knockoffs/test_knockoffs.R b/tests/knockoffs/test_knockoffs.R new file mode 100644 index 0000000..87c855f --- /dev/null +++ b/tests/knockoffs/test_knockoffs.R @@ -0,0 +1,65 @@ +library(knockoff) + +compute.knockoff = function(data, method, q=0.2, model.free=TRUE){ + X=data$X + y=data$y + n = nrow(X) + + true.nonzero = which(data$beta!=0) + s=length(true.nonzero) + offset=0 + if (method=="knockoff+"){ + offset=1 + } + + if (model.free==TRUE){ + filter = knockoff.filter(X, y, fdr=q, offset=offset) + } else{ + filter = knockoff.filter(X, y, knockoffs = create.fixed, fdr=q, offset=offset) + } + + rejected = filter$selected + nrejected = length(rejected) + TP = length(intersect(rejected, true.nonzero)) + power = TP/s + FDR = (nrejected-TP)/max(1, nrejected) + + return(list(power=power, + FDR=FDR, + nrejected = nrejected)) +} + + + +test_knockoffs = function(nrep=50, n=100, p=200, s=10, rho=0.5){ + + method = "knockoff" + snr = sqrt(2*log(p)/n) + + set.seed(1) + + FDR_sample = NULL + power_sample=NULL + + for (i in 1:nrep){ + data = selectiveInference:::gaussian_instance(n=n, p=p, s=s, rho=rho, sigma=1, snr=snr) + + cat("true nonzero:", which(data$beta!=0), "\n") + + mc = compute.knockoff(data, method=method) + FDR_sample=c(FDR_sample, mc$FDR) + power_sample=c(power_sample, mc$power) + + if (length(FDR_sample)>0){ + print(c("FDR:", mean(FDR_sample))) + print(c("power:", mean(power_sample))) + } + } + + saveRDS(list(FDR_sample=FDR_sample, power_sample=power_sample, + n=n,p=p, s=s, snr=snr, rho=rho), file=paste(method, ".rds", sep="")) + + return(list(FDR_sample=FDR_sample, power_sample=power_sample)) +} + +test_knockoffs() diff --git a/tests/lee_high_dim_full/test_lee_full.R b/tests/lee_high_dim_full/test_lee_full.R index 995f42d..3983738 100644 --- a/tests/lee_high_dim_full/test_lee_full.R +++ b/tests/lee_high_dim_full/test_lee_full.R @@ -3,7 +3,7 @@ library(glmnet) # testing Lee et al type=full in high dimensional settings -- uses debiasing matrix -test_lee_full = function(nrep=50, n=100, p=300, s=10, rho=0){ +test_lee_full = function(nrep=50, n=100, p=200, s=10, rho=0.5){ snr = sqrt(2*log(p)/n) @@ -17,6 +17,9 @@ test_lee_full = function(nrep=50, n=100, p=300, s=10, rho=0){ sel_coverages=NULL sel_lengths=NULL + FDR_sample = NULL + power_sample=NULL + for (i in 1:nrep){ data = selectiveInference:::gaussian_instance(n=n, p=p, s=s, rho=rho, sigma=1, snr=snr) X=data$X @@ -26,8 +29,9 @@ test_lee_full = function(nrep=50, n=100, p=300, s=10, rho=0){ CV = cv.glmnet(X, y, standardize=FALSE, intercept=FALSE, family=selectiveInference:::family_label(loss)) - sigma_est=selectiveInference:::estimate_sigma(X,y,coef(CV, s="lambda.min")[-1]) # sigma via Reid et al. - print(c("sigma est", sigma_est)) + #sigma_est=selectiveInference:::estimate_sigma(X,y,coef(CV, s="lambda.min")[-1]) # sigma via Reid et al. + #print(c("sigma est", sigma_est)) + sigma_est=1 # lambda = CV$lambda[which.min(CV$cvm+rnorm(length(CV$cvm))/sqrt(n))] # lambda via randomized cv lambda = 0.8*selectiveInference:::theoretical.lambda(X, loss, sigma_est) # theoretical lambda @@ -59,9 +63,20 @@ test_lee_full = function(nrep=50, n=100, p=300, s=10, rho=0){ print(c("selective length mean:", mean(sel_lengths))) print(c("selective length median:", median(sel_lengths))) } + + mc = selectiveInference:::selective.plus.BH(beta, active_vars, PVS$pv, q=0.2) + FDR_sample=c(FDR_sample, mc$FDR) + power_sample=c(power_sample, mc$power) + + if (length(FDR_sample)>0){ + print(c("FDR:", mean(FDR_sample))) + print(c("power:", mean(power_sample))) + } } - saveRDS(list(sel_intervals=sel_intervals, sel_coverages=sel_coverages, sel_lengths=sel_lengths, + saveRDS(list(sel_intervals=sel_intervals, sel_coverages=sel_coverages, sel_lengths=sel_lengths, + pvalues=pvalues, + FDR_sample=FDR_sample, power_sample=power_sample, n=n,p=p, s=s, snr=snr, rho=rho), file="lee_full.rds") return(list(pvalues=pvalues)) diff --git a/tests/liu_high_dim_full/test_liu_full.R b/tests/liu_high_dim_full/test_liu_full.R index 5661eae..495f7ac 100644 --- a/tests/liu_high_dim_full/test_liu_full.R +++ b/tests/liu_high_dim_full/test_liu_full.R @@ -5,7 +5,7 @@ library(glmnet) # testing Liu et al type=full in high dimensional settings -- uses debiasing matrix -test_liu_full = function(nrep=50, n=100, p=200, s=10, rho=0){ +test_liu_full = function(nrep=50, n=100, p=200, s=10, rho=0.5){ snr = sqrt(2*log(p)/n) @@ -15,14 +15,17 @@ test_liu_full = function(nrep=50, n=100, p=200, s=10, rho=0){ penalty_factor = rep(1, p) pvalues = NULL - naive_pvalues = NULL sel_intervals=NULL - naive_intervals=NULL sel_coverages=NULL - naive_coverages=NULL sel_lengths=NULL + naive_pvalues = NULL + naive_intervals=NULL + naive_coverages=NULL naive_lengths=NULL + FDR_sample = NULL + power_sample=NULL + for (i in 1:nrep){ data = selectiveInference:::gaussian_instance(n=n, p=p, s=s, rho=rho, sigma=1, snr=snr) X=data$X @@ -32,9 +35,9 @@ test_liu_full = function(nrep=50, n=100, p=200, s=10, rho=0){ CV = cv.glmnet(X, y, standardize=FALSE, intercept=FALSE, family=selectiveInference:::family_label(loss)) - sigma_est=selectiveInference:::estimate_sigma(X,y,coef(CV, s="lambda.min")[-1]) # sigma via Reid et al. - print(c("sigma est", sigma_est)) - #sigma_est=1 + #sigma_est=selectiveInference:::estimate_sigma(X,y,coef(CV, s="lambda.min")[-1]) # sigma via Reid et al. + #print(c("sigma est", sigma_est)) + sigma_est=1 # lambda = CV$lambda[which.min(CV$cvm+rnorm(length(CV$cvm))/sqrt(n))] # lambda via randomized cv lambda = 0.8*selectiveInference:::theoretical.lambda(X, loss, sigma_est) # theoretical lambda @@ -68,11 +71,22 @@ test_liu_full = function(nrep=50, n=100, p=200, s=10, rho=0){ print(c("naive length mean:", mean(naive_lengths))) print(c("naive length median:", median(naive_lengths))) } + + mc = selectiveInference:::selective.plus.BH(beta, active_vars, PVS$pvalues, q=0.2) + FDR_sample=c(FDR_sample, mc$FDR) + power_sample=c(power_sample, mc$power) + + if (length(FDR_sample)>0){ + print(c("FDR:", mean(FDR_sample))) + print(c("power:", mean(power_sample))) + } } saveRDS(list(sel_intervals=sel_intervals, sel_coverages=sel_coverages, sel_lengths=sel_lengths, naive_intervals=naive_intervals, naive_coverages=naive_coverages, naive_lengths=naive_lengths, - n=n,p=p, s=s, snr=snr, rho=rho), file="liu_full.rds") + pvalues=pvalues, naive_pvalues=naive_pvalues, + FDR_sample=FDR_sample, power_sample=power_sample, + n=n, p=p, s=s, snr=snr, rho=rho), file="liu_full_empty.rds") return(list(pvalues=pvalues, naive_pvalues=naive_pvalues)) } From ba79191f73b3acf4a5bb9e404a3b83e831ffd02b Mon Sep 17 00:00:00 2001 From: Jelena Markovic Date: Wed, 21 Mar 2018 17:17:03 -0700 Subject: [PATCH 452/493] selective plus BH added --- selectiveInference/R/funs.full.high.dim.R | 49 ++++++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/selectiveInference/R/funs.full.high.dim.R b/selectiveInference/R/funs.full.high.dim.R index 6b0856e..81bd1b0 100644 --- a/selectiveInference/R/funs.full.high.dim.R +++ b/selectiveInference/R/funs.full.high.dim.R @@ -1,4 +1,52 @@ +selective.plus.BH = function(beta, selected.vars, pvalues, q){ + + if (is.null(selected.vars)){ + return(list(power=NA, FDR=NA, pvalues=NULL, null.pvalues=NULL, ci=NULL, nselected=0)) + } + + nselected = length(selected.vars) + p.adjust.BH = p.adjust(pvalues, method = "BH", n = nselected) + rejected = selected.vars[which(p.adjust.BH0){ + null.pvalues = pvalues[selected.nulls] + print(paste("selected nulls", length(selected.nulls), "vars:",toString(selected.vars[selected.nulls]))) + } + + return(list(power=power, + FDR=FDR, + pvalues=pvalues, + null.pvalues=null.pvalues, + nselected=nselected, + nrejected=nrejected)) +} + + AR_design = function(n, p, rho, scale=FALSE){ times = c(1:p) cov_mat <- rho^abs(outer(times, times, "-")) @@ -544,7 +592,6 @@ inference_group_lasso = function(X, y, soln, groups, lambda, penalty_factor, sig } - #reference = get_reference(center, radius, target_stat, solve(target_cov)) #samples = sampling(target_cov, reference, center, radius, n=nrow(X), nsample=nsample) #tilting_weights = compute_tilting_weights(reference, solve(target_cov), samples) From 24c8fc796da1d5e1d7b0e8ce5724770f252b8267 Mon Sep 17 00:00:00 2001 From: Jelena Markovic Date: Wed, 21 Mar 2018 17:18:07 -0700 Subject: [PATCH 453/493] randomized test --- tests/randomized/test_randomized_full.R | 94 +++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 tests/randomized/test_randomized_full.R diff --git a/tests/randomized/test_randomized_full.R b/tests/randomized/test_randomized_full.R new file mode 100644 index 0000000..03038b4 --- /dev/null +++ b/tests/randomized/test_randomized_full.R @@ -0,0 +1,94 @@ + + + +test_randomized_full = function(nrep=50, n=100, p=200, s=10, rho=0){ + + snr = sqrt(2*log(p)/n) + + set.seed(1) + loss="ls" + construct_ci=TRUE + penalty_factor = rep(1, p) + + pvalues = NULL + sel_intervals=NULL + sel_coverages=NULL + sel_lengths=NULL + + FDR_sample = NULL + power_sample=NULL + + for (i in 1:nrep){ + data = selectiveInference:::gaussian_instance(n=n, p=p, s=s, rho=rho, sigma=1, snr=snr) + X=data$X + y=data$y + beta=data$beta + cat("true nonzero:", which(beta!=0), "\n") + + #CV = cv.glmnet(X, y, standardize=FALSE, intercept=FALSE, family=selectiveInference:::family_label(loss)) + #sigma_est=selectiveInference:::estimate_sigma(X,y,coef(CV, s="lambda.min")[-1]) # sigma via Reid et al. + #print(c("sigma est", sigma_est)) + sigma_est=1 + # lambda = CV$lambda[which.min(CV$cvm+rnorm(length(CV$cvm))/sqrt(n))] # lambda via randomized cv + lambda = 0.8*selectiveInference:::theoretical.lambda(X, loss, sigma_est) # theoretical lambda + + + rand_lasso_soln = selectiveInference:::randomizedLasso(X, + y, + lambda*n, + family=selectiveInference:::family_label(loss), + condition_subgrad=TRUE) + + full_targets=selectiveInference:::set.target(rand_lasso_soln, type="full") + + PVS = selectiveInference:::randomizedLassoInf(rand_lasso_soln, + full_targets=full_targets, + sampler = "norejection", #"adaptMCMC", # + level=0.9, + burnin=1000, + nsample=10000) + active_vars=rand_lasso_soln$active_set + cat("active_vars:",active_vars,"\n") + pvalues = c(pvalues, PVS$pvalues) + sel_intervals = cbind(sel_intervals, t(PVS$ci)) # matrix with two rows + + + if (length(pvalues)>0){ + plot(ecdf(pvalues)) + #lines(ecdf(naive_pvalues), col="red") + abline(0,1) + } + + if (construct_ci && length(active_vars)>0){ + + sel_coverages=c(sel_coverages, selectiveInference:::compute_coverage(t(PVS$ci), beta[active_vars])) + sel_lengths=c(sel_lengths, as.vector(PVS$ci[,2]-PVS$ci[,1])) + print(c("selective coverage:", mean(sel_coverages))) + print(c("selective length mean:", mean(sel_lengths))) + print(c("selective length median:", median(sel_lengths))) + #naive_coverages=c(naive_coverages, selectiveInference:::compute_coverage(PVS$naive_intervals, beta[active_vars])) + #naive_lengths=c(naive_lengths, as.vector(PVS$naive_intervals[2,]-PVS$naive_intervals[1,])) + #print(c("naive coverage:", mean(naive_coverages))) + #print(c("naive length mean:", mean(naive_lengths))) + #print(c("naive length median:", median(naive_lengths))) + } + + mc = selectiveInference:::selective.plus.BH(beta, active_vars, PVS$pvalues, q=0.2) + FDR_sample=c(FDR_sample, mc$FDR) + power_sample=c(power_sample, mc$power) + + if (length(FDR_sample)>0){ + print(c("FDR:", mean(FDR_sample))) + print(c("power:", mean(power_sample))) + } + } + + saveRDS(list(sel_intervals=sel_intervals, sel_coverages=sel_coverages, sel_lengths=sel_lengths, + pvalues=pvalues, + FDR_sample=FDR_sample, power_sample=power_sample, + n=n,p=p, s=s, snr=snr, rho=rho), file="randomized_full.rds") + + return(list(pvalues=pvalues)) +} + +test_randomized_full() From f0db0326bedc37eaa7f7424f87b7e3ccfd9ad5f2 Mon Sep 17 00:00:00 2001 From: Jelena Markovic Date: Wed, 21 Mar 2018 21:00:46 -0700 Subject: [PATCH 454/493] cluster files --- selectiveInference/R/funs.randomized.R | 10 +++++++--- tests/comparisons/compare_FDR_power.R | 13 +++++++++++++ tests/comparisons/plot_coverages.R | 5 ++++- tests/knockoffs/test_knockoffs.R | 2 +- tests/liu_high_dim_full/cluster.R | 13 +++++++++++++ tests/liu_high_dim_full/test_liu_full.R | 12 ++++++++---- tests/randomized/test_randomized_full.R | 14 +++++++------- 7 files changed, 53 insertions(+), 16 deletions(-) create mode 100644 tests/comparisons/compare_FDR_power.R create mode 100644 tests/liu_high_dim_full/cluster.R diff --git a/selectiveInference/R/funs.randomized.R b/selectiveInference/R/funs.randomized.R index 5d9f42c..5d2f7f7 100644 --- a/selectiveInference/R/funs.randomized.R +++ b/selectiveInference/R/funs.randomized.R @@ -405,6 +405,7 @@ conditional_opt_transform = function(noise_scale, set.target = function(rand_lasso_soln, type, + sigma_est=1, construct_pvalues=NULL, construct_ci=NULL){ @@ -421,14 +422,17 @@ set.target = function(rand_lasso_soln, if (rand_lasso_soln$family == 'gaussian') { glm_y = glm(y ~ X_E-1) + sigma_res = sigma(glm_y) + glm_cov = vcov(glm_y)*sigma_est^2/(sigma_res^2) } else if (rand_lasso_soln$family == 'binomial') { glm_y = glm(y ~ X_E-1, family=binomial()) + glm_cov = vcov(glm_y) } if (type=="partial"){ observed_target = as.vector(glm_y$coefficients) - cov_target = vcov(glm_y) + cov_target = glm_cov if (sum(is.na(observed_target)) > 0) { stop("unregularized (relaxed) fit has NA values -- X[,active_set] likely singular") @@ -483,8 +487,8 @@ set.target = function(rand_lasso_soln, residuals = y-X%*%lasso.est scalar = 1 #sqrt(n) observed_target = lasso.est[active_set]+scalar*M_active %*% residuals - cov_target = vcov(glm_y) + scalar^2*M_inactive %*% t(M_inactive) - crosscov_target_internal = rbind(vcov(glm_y), scalar*t(X_inactive) %*% t(M_inactive)) + cov_target = glm_cov + sigma_est^2*scalar^2*M_inactive %*% t(M_inactive) + crosscov_target_internal = rbind(glm_cov, sigma_est^2*scalar*t(X_inactive) %*% t(M_inactive)) } diff --git a/tests/comparisons/compare_FDR_power.R b/tests/comparisons/compare_FDR_power.R new file mode 100644 index 0000000..f5148c9 --- /dev/null +++ b/tests/comparisons/compare_FDR_power.R @@ -0,0 +1,13 @@ +lee = readRDS(file="lee_full.rds") +liu = readRDS(file="liu_full.rds") +kn = readRDS(file="knockoff.rds") +kn_plus = readRDS(file="knockoff+.rds") + + +table = matrix(c(mean(lee$FDR_sample), mean(lee$power_sample), + mean(liu$FDR_sample), mean(liu$power_sample), + mean(kn$FDR_sample), mean(kn$power_sample), + mean(kn_plus$FDR_sample), mean(kn_plus$power_sample)), ncol=2, byrow=TRUE) +colnames(table)=c("FDR", "power") +rownames(table)=c("Lee", "Liu", "knockoff", "knockoff+") +table diff --git a/tests/comparisons/plot_coverages.R b/tests/comparisons/plot_coverages.R index aa686e4..fda6921 100644 --- a/tests/comparisons/plot_coverages.R +++ b/tests/comparisons/plot_coverages.R @@ -22,7 +22,7 @@ labels[1] = paste("len: ", round(lee_len,2), ", cov: ", round(lee_cov,2), sep = labels[2] = paste("len: ", round(liu_len,2), ", cov: ", round(liu_cov,2), sep = "") labels[3] = paste("len: ", round(naive_len,2), ", cov: ", round(naive_cov,2), sep = "") -title = paste("n=", n,", p=", p, ", s=", s, ", signal=", snr, ", rho=", rho, sep = "") +title = paste("n=", n,", p=", p, ", s=", s, ", signal=", round(snr,2), ", rho=", rho, sep = "") boxplot(lee$sel_lengths[which(lee$sel_lengths!=Inf)], liu$sel_lengths, liu$naive_lengths, at = seq(1,11,4) - 0.25, col = "pink", las = 2, outline = F, @@ -36,3 +36,6 @@ ninf_lee = length(which(lee$sel_lengths==Inf))/length(lee$sel_lengths) ninf_liu = length(which(liu$sel_lengths==Inf))/length(liu$sel_lengths) c(ninf_lee, ninf_liu) +plot(ecdf(lee$pvalues)) +lines(ecdf(liu$pvalues)) +abline(c(0,1)) diff --git a/tests/knockoffs/test_knockoffs.R b/tests/knockoffs/test_knockoffs.R index 87c855f..b40b8f6 100644 --- a/tests/knockoffs/test_knockoffs.R +++ b/tests/knockoffs/test_knockoffs.R @@ -33,7 +33,7 @@ compute.knockoff = function(data, method, q=0.2, model.free=TRUE){ test_knockoffs = function(nrep=50, n=100, p=200, s=10, rho=0.5){ - method = "knockoff" + method = "knockoff+" snr = sqrt(2*log(p)/n) set.seed(1) diff --git a/tests/liu_high_dim_full/cluster.R b/tests/liu_high_dim_full/cluster.R new file mode 100644 index 0000000..d8a6ce3 --- /dev/null +++ b/tests/liu_high_dim_full/cluster.R @@ -0,0 +1,13 @@ +setwd(getwd()) +source("test_liu_full.R") + +args = commandArgs(trailingOnly=TRUE) +seed = round(as.numeric(args[1])) + +outdir = "/scratch/users/jelenam/full/" +outdir = paste(outdir, method, "_n", n, "p", p,"_", regen, sep='') +dir.create(outdir) +outfile = file.path(outdir, paste(sep="","list_result_", toString(seed), ".rda")) + +test_liu_full(seed, outfile) + diff --git a/tests/liu_high_dim_full/test_liu_full.R b/tests/liu_high_dim_full/test_liu_full.R index 495f7ac..a01d781 100644 --- a/tests/liu_high_dim_full/test_liu_full.R +++ b/tests/liu_high_dim_full/test_liu_full.R @@ -5,11 +5,11 @@ library(glmnet) # testing Liu et al type=full in high dimensional settings -- uses debiasing matrix -test_liu_full = function(nrep=50, n=100, p=200, s=10, rho=0.5){ +test_liu_full = function(seed=1, outfile=NULL, nrep=10, n=1000, p=2000, s=30, rho=0.){ snr = sqrt(2*log(p)/n) - set.seed(1) + set.seed(seed) loss="ls" construct_ci=TRUE penalty_factor = rep(1, p) @@ -82,14 +82,18 @@ test_liu_full = function(nrep=50, n=100, p=200, s=10, rho=0.5){ } } + if (is.null(outfile)){ + outfile="liu_full.rds" + } + saveRDS(list(sel_intervals=sel_intervals, sel_coverages=sel_coverages, sel_lengths=sel_lengths, naive_intervals=naive_intervals, naive_coverages=naive_coverages, naive_lengths=naive_lengths, pvalues=pvalues, naive_pvalues=naive_pvalues, FDR_sample=FDR_sample, power_sample=power_sample, - n=n, p=p, s=s, snr=snr, rho=rho), file="liu_full_empty.rds") + n=n, p=p, s=s, snr=snr, rho=rho), file=oufile) return(list(pvalues=pvalues, naive_pvalues=naive_pvalues)) } -test_liu_full() +#test_liu_full() diff --git a/tests/randomized/test_randomized_full.R b/tests/randomized/test_randomized_full.R index 03038b4..b03caf0 100644 --- a/tests/randomized/test_randomized_full.R +++ b/tests/randomized/test_randomized_full.R @@ -1,7 +1,7 @@ -test_randomized_full = function(nrep=50, n=100, p=200, s=10, rho=0){ +test_randomized_full = function(nrep=50, n=100, p=200, s=10, rho=0.){ snr = sqrt(2*log(p)/n) @@ -39,14 +39,14 @@ test_randomized_full = function(nrep=50, n=100, p=200, s=10, rho=0){ family=selectiveInference:::family_label(loss), condition_subgrad=TRUE) - full_targets=selectiveInference:::set.target(rand_lasso_soln, type="full") + full_targets=selectiveInference:::set.target(rand_lasso_soln, type="full", sigma_est=sigma_est) PVS = selectiveInference:::randomizedLassoInf(rand_lasso_soln, - full_targets=full_targets, - sampler = "norejection", #"adaptMCMC", # - level=0.9, - burnin=1000, - nsample=10000) + full_targets=full_targets, + sampler = "norejection", #"adaptMCMC", # + level=0.9, + burnin=1000, + nsample=10000) active_vars=rand_lasso_soln$active_set cat("active_vars:",active_vars,"\n") pvalues = c(pvalues, PVS$pvalues) From b1fbe5ebf2a8fcf7e281c809b7f212176c3bd809 Mon Sep 17 00:00:00 2001 From: Jelena Markovic Date: Wed, 21 Mar 2018 21:05:16 -0700 Subject: [PATCH 455/493] cluster files again --- tests/liu_high_dim_full/single_R_run.sbatch | 38 +++++++++++++++++++++ tests/liu_high_dim_full/submit_R_jobs.sh | 10 ++++++ 2 files changed, 48 insertions(+) create mode 100644 tests/liu_high_dim_full/single_R_run.sbatch create mode 100644 tests/liu_high_dim_full/submit_R_jobs.sh diff --git a/tests/liu_high_dim_full/single_R_run.sbatch b/tests/liu_high_dim_full/single_R_run.sbatch new file mode 100644 index 0000000..f7c3008 --- /dev/null +++ b/tests/liu_high_dim_full/single_R_run.sbatch @@ -0,0 +1,38 @@ +#!/bin/bash +# +#all commands that start with SBATCH contain commands that are just used by SLURM for scheduling +################# +#set a job name +#SBATCH --job-name=job +################# +#a file for job output, you can check job progress, append the job ID with %j to make it unique +#SBATCH --output=jobs/%j.out +################# +# a file for errors from the job +#SBATCH --error=jobs/%j.err +################# +#time you think you need; default is 2 hours +#format could be dd-hh:mm:ss, hh:mm:ss, mm:ss, or mm +#SBATCH --time=5:00:00 +################# +#SBATCH --qos=normal +#SBATCH -p normal +################# +#number of nodes you are requesting, the more you ask for the longer you wait +#SBATCH --nodes=1 +################# +#SBATCH --mem=4000 + +# You can use srun if your job is parallel +#srun R CMD BATCH ./rtest.R +# otherwise: + +SEED=$1 + +# cd to program directory +cd /home/jelenam/R-selective/tests/liu_high_dim_full + +module load R/3.4.0 + +Rscript cluster.R $SEED + diff --git a/tests/liu_high_dim_full/submit_R_jobs.sh b/tests/liu_high_dim_full/submit_R_jobs.sh new file mode 100644 index 0000000..4d4b4a1 --- /dev/null +++ b/tests/liu_high_dim_full/submit_R_jobs.sh @@ -0,0 +1,10 @@ +#!/bin/bash +# Setup bash job headers + +# load local environment + + +for i in {1..10} +do + sbatch single_R_run.sbatch $i +done \ No newline at end of file From 4bead7cfc771b104d1722383972f1ee1f036ef88 Mon Sep 17 00:00:00 2001 From: Jelena Markovic Date: Wed, 21 Mar 2018 21:37:58 -0700 Subject: [PATCH 456/493] cluster again --- liu_full.rds | Bin 9781 -> 0 bytes randomized_full.rds | Bin 0 -> 35141 bytes tests/X.csv | 50 ------------------ tests/Y.csv | 50 ------------------ tests/comparisons/lee_full.rds | Bin 23430 -> 21222 bytes tests/comparisons/liu_full.rds | Bin 9781 -> 42553 bytes tests/comparisons/small corr/knockoff+.rds | Bin 0 -> 273 bytes tests/comparisons/small corr/knockoff.rds | Bin 0 -> 350 bytes tests/comparisons/small corr/lee_full.rds | Bin 0 -> 21222 bytes tests/comparisons/small corr/liu_full.rds | Bin 0 -> 42553 bytes tests/comparisons/small uncorr/knockoff+.rds | Bin 0 -> 271 bytes tests/comparisons/small uncorr/knockoff.rds | Bin 0 -> 357 bytes tests/comparisons/small uncorr/lee_full.rds | Bin 0 -> 15719 bytes tests/comparisons/small uncorr/liu_full.rds | Bin 0 -> 31871 bytes .../small uncorr/randomized_full.rds | Bin 0 -> 35115 bytes tests/knockoffs/test_knockoffs.R | 2 +- tests/liu_high_dim_full/cluster.R | 2 - tests/liu_high_dim_full/single_R_run.sbatch | 2 +- 18 files changed, 2 insertions(+), 104 deletions(-) delete mode 100644 liu_full.rds create mode 100644 randomized_full.rds delete mode 100644 tests/X.csv delete mode 100644 tests/Y.csv create mode 100644 tests/comparisons/small corr/knockoff+.rds create mode 100644 tests/comparisons/small corr/knockoff.rds create mode 100644 tests/comparisons/small corr/lee_full.rds create mode 100644 tests/comparisons/small corr/liu_full.rds create mode 100644 tests/comparisons/small uncorr/knockoff+.rds create mode 100644 tests/comparisons/small uncorr/knockoff.rds create mode 100644 tests/comparisons/small uncorr/lee_full.rds create mode 100644 tests/comparisons/small uncorr/liu_full.rds create mode 100644 tests/comparisons/small uncorr/randomized_full.rds diff --git a/liu_full.rds b/liu_full.rds deleted file mode 100644 index e1499ba842759d56034e5734ff762dd37d84401c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9781 zcmV-5Cd%0#iwFP!000001MPeVP*u&c?k1>!5)=$5A_{__D1s4?21En}K|rD)StJPx zNKgbtf&>9Y0R;(?RgfT2hMaTU3D}t&Odu-oIOo6T)_JGi|IWGp`R}WDtDLH}XZ5#w zdU~zt>6xz8Ya4Q4Fc@YG3kx%bndL91ysJNJS8FZ|hUp3FtKRUYQFa-cRLvcn!Z{H6 z9I#{OFG8n#oNwltB{X~?#wJbV71WjMRNuT+jK~uD$;xMJpm;+?h0V!sG_WUGmjzS1r(_xV^TY zhZ9wBJ-eh4zzieJCx{k(0jMra3R&Ja1XD$lP>|??I)YL-R98X z-H7FQp&1~%Tq(@k{uI@esj&{-%7%fnBWk^~X3!_$z1cPD6wG<#Ewxtxq8X`KUoSWX zHHT^&J?PA6$lXdz_i7FFhW`j?ua!cbwsqk*T*6@Vu92ic%4&a}<0ae+{Lp>dNA#Mo z9drou-v~{*1{0JDfi^`x)Hi2uRTKM88-3HvitWTe8Q~pm9b9< zzxmZ{cAF^FRSoc8`e=x#OdZxozHNe@JLi~p?%0ZkwYD3?PNzVfc{H3J){NcqZ+rC!)ITow7I)0|nI@FXfkRBg)?5 ztGXE{Adf@u48=zUHOt3VjNdQ<96O9Ye;WhQ*G$UB29|+*F=1)W_}On1A6DOcfoK!>c4rpis_&j3|+tR;<<|ALz5##+()_{{ebd-FSRlntq$Z;$83QFdoHj4JhGtUQg*)4T?;;mq8+mq+5 z&*M?bocx~CsuMuZRi_GX`GLCk9(Yt!;R<7)Yq#>$e1Wc>4$^aRVVK@@-@M~v2^zG- z$cSFP0`+GCPZ%BSM-8W5ERh`hf%fRk*8~ANih1=-SJrnLs0EyNuOI3~q>}q%lO7t- z5PvG;l4>m?R!}%GSLUGNg}A?Z-h0&5q-)*CZw37i4D_{2FCct~RkCg`H%X6;csXnl3h1e>P|w39Jx?9m8eU(8&V>EVPHk@A&8 z0{fx1+eVIsM;sVa=G{D{36SwHbUJr&9I)e)rSeffQCDDK$|>dZ&>uGX<&f4+L}7Sl z>`Wa)ZHqzEz2D1F%p)kLE< zbBbi&Nz@{ovGt@v6yRb)$qkWAXz0}puk)k;VEIlk&DvqmphlV5VRdEbu8x11DDo5y zCaBHW9J&s5gA=speZ#1wr*GT7iz?8?v9y2aYB(aqOg^&ge+V7+`AkkcPtd@qX_6OZ z2lU#P`J~_rp(jz(v-}hVa7DPj=qwV#pJ~69(Wwc|=k*zeL)q}g@YGLTX?CC*es$Pw zZ-Z#z7l{)4&!W;?7e4hcRfKbpJ74-%9~yt~a(7wnKm`ev)x4%BfJm9I=zZ0Qa9^BN zH&iD>S3*&R!nil;OI`cojpZl|9_G7BO1O#$s-ouBT!+w0y|IM*I##IJorswZ+ySKG z4J?jXK7h!V__@cFR_!}p+2x}GB3nBr9@^l7vi7HY)P|7|;k2ouncovA>uO%BwQCm| zC-(ac8f-&&@1vM4=e1DOMRYbSSP+JZG~7qRS=5_d3fpX(sII} z;d*;|&Dz!Rw>sG4nLG;vS6O<+y?YTc)99JOxoF5wH{z}g)j=PA1dFtB>jI9epyadw zA0oy{hO4CLL&ev&9;_A%qTaWmMF#UD)O%5aKCps1k9Mg9$(6&f4qH84x*GNSRQfl& z9)&)+cb3-HbSM`;8le)k9>^~@x=T1&qptH6<0*X3(EFUQ(M90|8f-5X7(0Cto(OLc z{Bdvwji`!Amx+FW0zs`G*7@%c?gv%&=C%~*a*BICBKa6KpY$u3GnWJGz_UvmT3rxM zx2oxBfDzQD^cFIvZlE6H1a^gwmN2BsnV6To1W}ecL{(O?HOXF& zI>2(-$vZ zI|WV08+v-J8iA_VTzD>m3$NazHz@!rl#MpNU zyCo|SX`7zmq+JeBUWmSkK6DHXb;Yjb2zw4Kt>+#;;`c?#nA3ey4#mKT)@u*;8$r#* z($>y{I2hY|*hPTL7@`vN@{=##1NyMB>CM|85zRla_JhAWwEJv7TKP;Db!)V99n&KK z?Q`Cs7N{edd)G0b9sV-j*9BqERtmA7UG;}LZ62G9491)c5InSTBqMHBi;(P3q~xH9&d0UaI)< zMnrfWbHTb$eAV704$!LH(6qzs+8b4G(V&)^-w&NFs4?B8aE;tDP}3sBT&>ts_=$ELw*~4J21?$hM;9_r5sh9fF9^Du<+}AE53dqGwWP38JM6?M@n@<%RfulkFY=yT?#fDJuiTA7GYw`QHrJwH+C{u=2zDNI4w zMf2=;d#fdLN#R>mwdwxb(_y#ox0u% zW!^Vdn#K#Dbq}wicpe?-(#M?Uw{1jCJZvf7_@{uD7^QVmh8b0Qkl!xW&j3mC{Y>}i zNkkIZ7?Mm)fQmDBqMkLWBZh1XhLczi$b|O<^G+W`N#1$OM7$VkuH4mRII$qymY$Sq7RfoC7_ zUXu?fs3C6tK$b5j^zPz)8EQ&Fr!AUHoGFEddzlJ;(~H39oAMCgyMS>1 zIS%F--teL0;q8OVEGYZE@5S!nyU?s~Nx87z``(YP`aPVa2eo)-2Z7oK`E&zlJow9WDRB!nVrdY~f^cbM>6}KX{f` z51zmB{>HQJrj6s3YtC-J$Y10y@)!Aw{6+pEf04h)U*s?He;)bU4xbD2*J$9k0&{laB8&G4DOK z#xVt^rNm^G_H)8W8q0a*92sC>Mdm2QBp9Qg)Yo+Mg)#qJeV!OEm^I?iE>sYP$>U<@ zRf1RbF#1|0Ztxw*wqnt9wWBcgQBvNxX>JuaS1>WIffjDD*< zuM+7248O8Pf|(4AdBsk%9oGO-skAD`v0R|Yty`9$T!Sgan>ME(BmxcIl_xmc0)-l{ z$j1l-G8eB8Yhw?Po2#wN4zB~Ek_~pw?J&@}(^}_+y?|koq10!P1@tK`KQ*ih(8QSL zxaX6A(%T@+CPM~NTSh=q3Q)IVUkfxBO6OQ=157x_z4~--JB+(teS6{P>iwFI zH9oP4ged`@*;&U_7<+Xop1vs$CU9ciYxu`t#%8;xUF%t3_jq} zO(3TvXT;&zfO6_6w)yz6)$x1a=;$#4RNdV7@1CW>1o1IPu6P8{f+T!L-%kOV^`(?i z*endWT|NFW@(|E%Qq(rQodCM{1}-i$JE$-_eBCtn8&KUV-0gR*_J7|s^zv~PARAcW zk`^n0QfPUtYxWb6=rYH`6gYsczKLmXe+1AcIPaashyhM}a3J(AZ`Jwkvt+Jk27>R1 zLc*9MjHKE*J;+c2(vQZfMUjJm1NVhkOEQdn!gScDHUnuiCYZOJ4s^>DUKRrn7`5To z>E^NkQs%;Rsz(8kR9i^p++Tn^scpVwvK~e@F8E%JzX6PSPd7e0t-ri3{h&j=31HqzQcn&?H<;<8x4+vKk7w?6@t zPy3j}?tTT*<4+Mk4yyun%_EjCTjYW25LVu=WCbL}9a;xSqA>iXQe15dGms9MozL@m z1N3iiVyt}nfW(@4>+3;I7|N;aPWrO?98IKrg7@NKIOL~T2J-+=;tj!RcLUJEqa^SK z*MVVty99gZ88Ci4+PG114}3H}3k(&rH80Mb1KX}EyvlmJUfw!C~7PK1byC ztiB5M?WiD1wfdCG2Gq;7=z7hA6A=o{Mx09fzlQpv1d8B~qnnzbR!VPAq1_VD_&A&!g+&n6?cC|Y z)1Oe1gmTuUu_W-49!d&+=zh$K&0}7>))vl;3wGD z-@lDXcUv!wDC-CpH;%HR3`sU!x87|~HT1Q?ZhseyW?s8tXlw~J4C63mE+?RTj&8TV zyc>;dm%e+iiVJ!63rLP1G)KMq{#+uLMWAkS+l$xt+R>QOm*`G|*Qk5TQmUqmA(~;+ z5iBoIM1+d$uY-{Yk=MMQ_Ve{b1s1t8oeQ3b<`gT<5~zoYo8Ip=*LOrD{@@2M8)eZu zqvLmKGYV06`4z`+y!=q7%QJH|$QX^)?49v^^%(W?kB6*q>!5lIyvY$3FX-Fg?I1ri z2K{y6>*p%$V2lP`88ot#@8r|;Ke4Zl1_1A5KD`hjjxQ67lDFlC8oe5PJfg_ds0{hWbwzY>9siO%J8KpLnmXyJ0P1{6u9m zxW}QWK>Q#yN{G!pXn%o*6Hz~tbS=Ek;4}KL+Zy`lIf-igaWJRfFun2C7~~`ybT|oN zfigc&nK^bDO}H=~DXPVxt{^_?`j6kyD37{pNZln=b}}ktPgO7)6MB04)Nlu?tKxEN zQ7VI)Dm}Voku{979gNlSVu9kQIngir@`p; zqYg>!pF{0K0)D+e!lD16LH_pvH8f;ODC)m9k4meg3qM#3p|>GQ+ghUQpr0~8V`J+< z1it5)H#di&_bk`sHJ=GV3cZ);$}|N;y83>b?}n(1!m?L(bt?%hgXrDMoKwNd zH0U?|kf@BMApCPT6C3Askn5M(??Z@1y|sw~Q=&$YdGmg7{opoecWJ-H7%&Ce$)e2c zQ@*IIs^RQ-TNw1d=PlwS>p=I(TwgD4X<&ShE@UOhLB86$yfl_Vz)sq;4+}V;?h^L% z)c7k zsJE*xhHB))aYIca= zfBDgI&5I~B2*d3ekRahOU-Y@qQ z`l`0}?I>?RMLkL@WKT8dlc|5aCruxRxYUT$A3RgIwqwCn_fD_D6%@P!n zJhBf)9#0-#|0oy{UKUI3vyVe@*Ph4Ta>bzji)e?ZLWfhN9BTW#A2(6H#e$&SkS9Ed8o6;@?QSmARKo;oA8s|qfJ*?>(W1}Zu&PtEux0{P|Uq0L^Ss4q1rWRA@o@>Q*~ zWmC7K!FG~Ka&jX0%P}i;_f(;g8`e~}peU4gJD9D_bqWzOM5+YDnNjq!(VSzNE|AH) zutQ;69uPzCJ5`8QBHWFFnT4`AND12-sQ*(?Xp`+x4U@RZx-sp44L;W6<+$S>!hNFeDxtjn<}Q!f?Xcz_I)H zAnjUa?Wmsy5Pi<%Fu@7j)JX9dGbJL-5IyD%oh!x7Laky zv_z!?9T%FW%Mih-Yj;5S1j;0`h%6mWLIe5APpYil;FUiA2g&dX)X%HEl(IVzUf%TD z1lJ6~Pm4GxmQV!)2e?Ul6mLN}XJCuogglVHoC)IjL_#6W!k50C;{m+*1=i4Yd63M7 z*&VGe1jI(%l<;m1sA(F@E_<*VUnoe`HlEBzBT=caBCBPC>ogq@!a74_BWf^X`oB zLQpYn$~C)z0SdR#)2Xs}M2hY9s8gGTI*F9c53AY`twgYsO(_NCJ2u_%`TPW`lyX(8 z#<5S54Zc(UnOpCN$w1lyK_JZ*K6Hvtzdp=B20_bCsgJ*@dBRaRDz3a~*R2b*F zJ1jU73L?to>hk%3PJFmcO)y|}z4w-4=&PbPB?_0{+-^dp@BNnwYmH&p%SgN`u1{rt`aJr9Q@K3v>k?QIs2Hk zBha`dLn!5nFzUF?P0)Yv1*%nUek?eA3TRT|Yi=d*LD9D>Osr-2lN*smy*`cJ>_)}_+?)rK}@(E~LDcy^nOr($VMP)+8 zeBFUQw<(}3B?j~z?m^U|u?&x?PE?|nk@=j&gQgvsk}t=%BdoYpR?}PreAsnC?vUv> zpvmWa2u*m67`L}QuDV@~nj9XNs&6`iMvbf^f?m;4mtcT&y?zaX zac@I?Kg|UFE!v>zj=T%uUMw2@nl(}TgMoT;FYyhI9zjp$Ji5*XuKE`nSZQ8wi6VGb zvWo>)_m>VQx-KVkpvsY52QX!17+}>N63q@keYj4|q_-OIq3ywUkB@kiw^p!!fin>X z4?Y~-*mwky3>ZUKGh9%K(OvhVrykJ0o%8g~oFJe}8#nGhmjyNPmOGVO<$=z$tia^7 z2W%ZZy z6>Y&HYOv!&TsIyySgft`XsbkySDDuTc<%?;MD5UPYVwG%%~L+Bq7ou2b?0|X@Id>h zu9;dwD=-ELGyVg|QEi>5N2Kr(==r)?!l&{+bhPGNW-J_o>5bJ}YK~SwId%+gi2v6e-!^cef}B#uakeF@$i^0+xTf<9((QnD zy!WN^Gd`ebJ0CDpjRfk1>?Cu^98ez}KEn}R0@N3^%w3wrK>cPWd*+QQP-d@0&fmiT zS+aeN=~)e+gkHAU7~=+1b^*Ce(>p+l;b_Ij^#Ijn3R9`&48)t?^a|c>fZ_MUT&+9w zV5p7rvUkEm7;&7uckwm`Na8U=uc2g4t(#tw|U0wU|Hy%+Cw!O+XEY1OitraB}+)31kyA@MGOFP(+m7 zOHM@qL$-utnaT=ed9v*~>kB}UyzD-t^#Z8PTNP~_Re&-VJ+l6SInWIG%@$j;fznb? z@G>S0=xZ>(&nylBnKZVQYi%VAnxpzO1aWZF$rV4@7`_SLrd^=F&Z!G59uY-Z< zPPTNO8Nd~+tlMoO0sW7wjjrU@0X{e)cM!iFaO?Ym_xe%+SD)$hYWz72hlY6YjeEmD z4_5>$SsrlZtT7hc9e}qzbCyld9f;-b8A!T@XhdEq&xwL zV`_LK)l+~sIihuW*bT6@2k(D#ECK9c%-fs>YZ%#mSaeIS9N^PLBFcl)04rsTj&nFb z|2|7s8{8ovV5zLO4_^Z=Q=fMSiydIecDcM_j(~ftS<%291$YDFOgF{LfEPdT&N^Y8%W z_9j(DhgP84=jU|>D+A@-{P`We-axV4fOm`757b7?#$=zHK((7QsFKhJN{~b4^q@SD z*p7FMtj-IP;Do(w_$t1;5Bn@Z9w<`&W6w(^fLu!vZ~KrABbD1WZBBj&!&Cc9i$vOh zDmo-#u9Xhtv`>9wRhxh$htb(O#R8-yj?}#`e1XjBcDL#<@2dZ?7rOT_A4W2->~|KI zTJ;B^%Qsc80qJ#bzLiTmkPWojJof|wDYklk@4IOrS;(Y0pEv@;PgEw)3w32Zl_l+VhR3VW?tTrYLUJpK8ptDcIKlL2A>B zM-N{BKF(>#Vq6&rgKwu^pa>wD*u2jxmw=%U_pYBMZ-QZtb?51{ ze|*_vbHl^J@#f!yR@XgjZdhEk`5UWvj@5`B(7N?_jW0^pYjwL??TBDBX%*iqD*t|5)aWTlY-@aaShY|`qw`-};Ju@J`Ne_rnDMU@N z9)2%BPXXn|=Z~AdHX_14FWd75iSQwp>%m){S}3``nThYY7z}k^R^$7b3Q3wuaSxAh z!^B#ypYKxiQT?3duD#oRpaC@5^$)b7-c=mxU41UlFgS5vXO}7Jsvp$IF>{5MoH)td zD?gy*J;J9}J=p?;Tt%*lu$ll^VKpv7a_W^&$!@g0DA2S2>qWfo>=wB?_R-)y~i! zN|V;6RwDnGw{JNFngK;j=(?QOchpc9yV13$9XjHJ<7@K2qU!Sg^K)x+ppE@b`R)@t zQN2LPMuXK$fuc93%IR|y_0(jN0)9n8NrS|NhyEex9rM_ps*Fc4{K@kN%MvCCWcy&( zuO|ScSTe1x|0t@T_&O4~Z#}fIr7z1n=774xO(}Q8S|BGZ?%|W%7pPC*W6ac(Z_s!o zBLD;0_RkwQN^mktG}e|p>M{CbHBt4 z2yA5JDl_I(5pDq3X{fDPlKR!zv2;vz_+ORTPuW5 z0T8!Iu3+2o4aIEZDGa&i1w*Xq&y8JU5h1IqW@B;%w9Q|;l&@8f3adDsqTn=;-?b1Q zZ!||u&9_?v4|xH}Vr>G4xFss9_itAGNrSe#-Dur;1yp=f+bAwl33|@yF0$2Gi5ikz znx90hf=-|JtD?J4pp5pqn1}70Djw%4f|wd#BvrEXXQ4c8tPn%DKAf^{KtJXzg9 z?OFHC;C?2w+C{N%+PM`*xo_kK5c5z`k^PaY8@qwnvgza6;eDt(W_5&2L>km=Yi2%r zV;1$L@M_H2-hr?QHJ7(PR1hU5EAGg*A(Rnm?zL%`8Y;?ZAL3op2JMSfhu*$aM}!uC zv$Qczczd=ax66ru2t_`~UD6ynY!Vd6``l5}eLm~BM=a3r{qw`q)fDte(8vcaZudKJ7zj!IGAv<^x>e7*uzBi1J)xELH?54!vQ(-X-1>|D6!MK9#q7xRBn z5`ig8zl0Jbl;m#$o8p%5S&$E{5{` zJ3sg?4~8DICWo8P6;Wo`y{@Z)kAT2EfAS9JU1&^ytQ+^;68iNgmgsMOftt4n3~XnQ zhGMR#!+mWdsM$VbOj}_9TCac6_)ZJJ@=cwy4eb`B=GpJt-6xLPSHC~*)oTT9&Mq61 z&vYU}pZ%x9R6(e2@t%}q9Yt-Qt{11iErgHp+o@+~;-NG}&DO9Y7>4<$PjhLPqtOuV z-L(`I)S}@(+h2Yebp-U-&>X#>;lsy|ldJeqnaf(cGb$F);2+w2pp%ArR=)IiP4$8T zwxPbQKenNgic+2zMkUZu+j*6+{3{~GukBYGazpWx^}Kncqv(0{w!$S3eW9iAw&Ae; z2b5#_+V<(TEFhd)9KTY+1`WNCsdnBRg9=qb3ntdNp&_S8oxs?BsC9n7<>Qet6nlL6 z!xbG-K)AMc6JN+ic+-oFeTHX&a?*V6Ht#HIlq&pWUML6I-&)>%&nt)Yt0i664*CG` ztkHu=wx6hbzjw=6lMoOLIfhts8WA!IayC_RgPt2DJ}(y)qiQL+ks3oeXzZIisuyO1 zI-V;fKQ*6&dND((S62`stTL%sU1tDA#Se3g__ia`jm99t%^WDawpcLNI~tK5T=|l6 z_9irysPS#$rJ+tkozBr-Q7m6h-XiXLjY#=%5lp{qAmaPW$}g`5(7@6jc8@nRD0R;o zrl+j&$WP)}8m}o8`tk(}-o!6O1epZ==JYW5M7W-J(m)LnD?1vWiJw9lYN4?oTzybV zYjSh}#SCb_RK?@%eIW9CF!_4#5KugN_O^a~f`;Sr3%-=Hpt#iP%g-vgQOg6#xf|vR z&|o@XPA!{3d0Pj?mai!XQvOhjZk#jf=y$B+qs~Kv_B)F{!UOc_>eqD#J`Vt4nS3yPwSqpEAL}iSDD4_k6FT(Yt94{A{P8WI1d1eI{Mhbac(7TPMPy z&sV%=d?EnVqjLvW>6Ai;p%Z7;t;eYMWn_3`&luF}d`n&&nuppW9Mz=QQ=nmq`7^%7 zE>K$ja#7`YGW3t?Gr7%eL5Yv%=lM5BK!0WDAvx{6P_e#UA^La@j4jzP^sLk$b#?8V zDdzD5nt1Tc`r;d?@mWyXa1-|P1Su+EdmhKqAR+?J@T{~0X z*x#X`wA*1->9Ha(R+_aaM6C-Il_c5rys-y@ii*+VhI-WQTr@yhwi>#&uB(lW-Gyp~ zmk`GecVYES@yb+(8ETOD_0lqLBXkWk7Ci|TK^0c%x!EjgK(MuE=e3SSNXW~%1t>IF_5<%2*?t|Af)B~~HcCpa~ zJJgr*HU^jhgCQ?>RcWh6YhNMdAtqYC6Snx!q<6KJ9wR+;CI^^$fiI zj`Y=lbb$I0o?S&9M`bRhS#?3}X^z8!Apxk^VA}9!cmi|}A3hOn?u1GoegCvIi3R#h zI9_}1{f;W5yyZUBazf{{__~|rI}qW9Z}e5Y9YFAoPH6ZZgqp|L)#G~GfihraX17ZS zHIAk8l8vLGK4?|RW?=`Ed)fNH^{W}sA=E25|5c@&>h6oFuFq(bq^O8y|560nxC$9Cau_d@NZ7Lxm6PCJa~L9 z_a8(Ay&IF#CU%ftnd=h$au@2qmwo>11u2x@d?8*?EC`jpE}Cv}^@fJ+t`lp;HlfZp zE0gmFJ)!s5ru8|iJyAA)-dB;O96+@>_4EBsdo&#OO-0UP4mEzFPCFUaqasg_p3RHJ zq5aC+%pU`Oh}@q3?nc2{NWC~}Sjeh|+D?lexbXZPHvaq9!uwXD#zk2qu0bDYN}eWP z>f}S!%av~xS*?KfC)>u4@7G4;8;+ZpKg1&=k87PN%1nsnKX*fA5j&Lgk6wI99)X)D zYxhl0F###M%gyaW5Gq=Eu!pac2;G`I2abwkeBxX(7hCv2Xd2q1^0;&ob&m@ssgZ1; ze%WesW!XfO_Bri9yVD$y$ySbvU+2-t^CnfLRufd^UH5kAV-6x-j!n|`W`p8OS2csu z_dxfu(|)?{95CTEvpLYv0g)FANJiC*K)c#fK?}kJYW7f6n2hR!p4iPi$=yb%$F1jp%iYV+eCCxhPxL$@JiB+hHf{yfbKR-h z_PHEUBww=giJe0EmkM_jPRXH0$280N9CxU%wa=EgV}Y8VY|A=3KLZ(6rKz!rL1=L6 z%Wuau*P^T|FP=#E8lcIrjr?Sy8zdlR~bDrh*M z@JRFH^Qh^UN8P?5Nz`k(&eTGh0KITM_19%D)b^BhJmPC7G(VGP{}y~2ee%1v$~WHw z2-Zi8Cwzhsfo1uw%N6Air*h`(DgHP_X5(YMf2tfB`8au0pLn5x9=42E_j@7zNRoTN zmKoIeX4}|yyQk1C6`}B|<~*^BnuMqo`xJ@`tGCI8=wOTPN;3fcm;t zH^wQJL6xJ~jOPkl)NHkAf9SX!5XE%Yy*5ZjUBVyMt_Xe&}HtMxZS*`1fP@f2|w z97*Nc*^rKC$9wYTZ>d08`y|J5!6WERcO1%~L;&qPn<}40K1z@CVW~Qr14Nm%zRVM^ zP!H4DTf2G=K;`d10pw^_+-Z-FQ7A4;(3IfkMD4l ztn_|Fit}ITv{4m0qE$|@Eeb=abvtFReaHurhu*B;1rDfukiBUIDIcg_pRWftCZWFT zHm}$R9HE}m&s zz+CG37d&RD>K&{5X#7d&HXz+j%b10vZ$4+MpJYQ%RI?8c#-l=Wv}Fs@xS?P3!>7a2 zt*9)8ykFwlerTJ@-+M|j57p0iP^YvXK*Y21f1n9pgd_eTH2WlIgzGSSGfug0)9NFLg0woRCNwvSi<|9K-_PnhF za&Y0d-N&s4RMhd^X+I!>Pv@TNwz^RDnIn~d=V{bErT59?v=g+)yIr-*P)B6pD(%OW z`=Isi_dLmyZm98vU3;fmJP>#6QC+-*AKh6jzhO4R1BOgyRD>n`P-okU<2uprq1kXh zE%crPs>={vy+YpzI#9@lMGXz8LmBa_QddDfNy2hdBUedxs_>kRMhzH zttD-TB~%7*)pHuQq3XLEyf%0#WB9`}iFeEp^|_up<+|7x8f`pEwZl%$q{r3(3&cF=sNivk?^@A+nDN z(ST+t)Zt@z1{EMb#ifdRewd-l#|sN0Wq{z1!8Xjwf~#cq-Vsm?NQDp!60iszYa zOIDeozW9&_?VVI;v0i)Z-jgv@>a)+=N>Ud(cpR8BN-iMM82fVLf|_So1@i8XK@U&F&3%jJQMa+i15kPc z4L4&GMebcjecrY!ko#h2wrCYyRZ|ZcH@;U_-D!pquAh7(KF+A;!5!*PQ(dSRI?1xi zXaqHliAt7yG=+w3E_azk@=>`d$NSroS?m-pjKpK|1Zs-d_v|>$3QE@8Uaj54-!QIiqX=qv!H#E9g1~qGa3}qtOL95J=-m*jo)Fg3bt@p!vXj6CM zYHw&q74ADNIgVEVfj#iE2P;Bdw!M4jCv1SAeQJ4NT_Nh&_c4BM%?@a|@T1+w5W_Ev z-OL`}G>6*9RZ$x+NTMp|Z51Eit3X@EgBJ>$OHix3o``8)HTL;*(rB^)YME}hbMd$X zG-;dg6t*X$&vW-zDTJ2&zhXQ)Z=vQ-n`J|N_d)X$jg92IAVhh^!6qd60=;40_E~UUJL)|0 z>SwO?1E^Sg`em-*5Gqm-4nFo)6guAAY0BP1Ld4*aSE8{bC^K~x8Wh9ul44R!!>eD= zeJwFizJO3GNnA-r&s6(LoK}jU7}kp#Mu#^+534~_-_BlCnZ3sUZwmwswqfI`!&}i6X+PvgL%sYoTqtEpoUL ze=pdx%*~8pN#1Eww+A|TAF@@wi$?W3PF=Y&`UqO?$WY(0DIf|nze$;^JY;&R z69;}6pkWh{A)oSb$TmMFa-Yu~b^8~5x~*1@Ua?N?2(^kpRC;71)fId9ZHOF?g7O0VV*j6e3QVAr7p zK-)p@3D%&^C>i~*95pP5z75XthYfvD4duJA*C``tv5ng3n2z~l{OifJud0DqxZ+px zyJ*PI8eE(a`5cDAkIz~kNJFFhD-LaZWr8Z!JH)Z~Cm_i}>UBb(au0EUNPs?BMvb)_J`bSYyg5@b+C`+Qq(E@Wz!E9A!ricQm6RI z7WLX5_;Gt_6m(}RxgPeXAo6VvYZFQ&ichjwf3DFCQ7j-YHn0{_zWEr2-hP4_K5NZo z)gOR1+layNM}w$U!jfOL#Rv#w>oT^-m8c@Kij?wn4tgy|R($_5g=$KkO}w?@hR&s2 zOIddGb7?q3TU#IlA!zwX+2Z#tYg&n@doVw7Dc2)0D1xHZ6h*3q@~yihO~} zc2$Uc`H0Rav^GE**h-Qi@0d8!u|oFRY9&eFSZqN1dWP zN>NX`rKg2yAe7|v2^#hcqSQ1WpVEzW(DyXjWNPXQ7Qa{I&!3Zrwv$J6)76bp)R5?+ zuEV}SY|JlHA>KtzT2g0Z@|~b*`B{-G1~*Xb;a6363J5^#xWw{Bd>RqWZeQtBd<=Ql zVpxN8bx~WAT<%(w0QDRRyT#3qp`Iko`-g)cz{llIlV0Aun7vu=n(cd`Hbu3L!ce(uv!wMpo_L%MtOYdh+0d~RI- zE(==yi(BuIVi9q2WS7>vZ&20cFCS*L8TB)nJ|A0S4uS86*R6YQhQ+Lb$%;}+TZX^hQ$tZ+5}vzd za)7jq|1~f9E*iAj6KYcH30GG7U2Qn2hT3m&Mt06)_;>UDbq}z*NIDX<`}s0IXu2-5 zXj6UlI2eS9m~p5&%r3Co!wQ?oH~}mR-lhE2s+O*Qzl@5AUn_~ErZIn zyPDUIorHEbg<7L_E!16>JCdo_2&5Hj?lf&oMkI~o(*wD+P#chYTWWL_>eL(aBnRAt z(m0Zek9a$(F<)s#$X)@Y`*8)^`yZp?Q{%U{&T2saI%fN^OS7n&OQb&S1A?Z@!eXWq zJ5hl@?e(=UjnLkpaAI*@2THrN>gnu~a%lLndgp|!FvjmEFSr@ALW9{PQ>2+GRK|1t zTsqqblWg0*eLeaR5wf2;Td6;V8oP{4#|!0%@a&DRvQ8+Fct}>~$1_pio+?*kUq2`% z*XcN|D?*gB#q0`8jnJ#;XS;F>xlwa@+Pm{i)j;A@o+4e6Lxi<)#TkLepzZPnsz*@< zDm!l7Y9As1-Opu@D&M<`NM?Fx_SmKYg)H>Schd_*e12_0x<3+&mopJppR=NN!JBGV zt~x>GqaTi3zXnmej^?^GvMLx}zUO?ITMD%lKjU7}y&O6g3nqq|7NWY#KHXVMy@0@Z zNwYJh9SzC*D`fl3L$%AP>z96#&{Mtj;=F!BK>nC5?bMrx`d&pRyvRs`PKPL}XNd~x zC3-*c&uWHL*ReUP2WhBnWXYN**_A-;;auVxR)9#0-(`(4dqF4BWZ4@Jgj(L^L>=dk z0fOpL77CdawNdhRT*|rwgUhnM_1PCA>V#%tq6y7S za}6)FQ6uHSw|(9l;9AR;XFU3|(3RO#_G6JfYBRAFYs7W+T&#*!S!xO+;h9LRkUb7w~aQF#rqVF~9lXb3rH?{|-aNGyH^0hjkc>qPl72d~4Z zby36ko!dpw_HqPj9W@YfW42$*&`}^gE6MBX5k-StMHSm=HYokWz41+hr%}a?E48+4 zSasQ2Q>2fFo%P-j*4 zNPrxL`mbT`~}PWHPQ$@+ldfmKVVGXxMR(|Gp|tz*z~!|dSr zvu4z>#CWN%s5$iP^Z58_$xSr2P*NE32Y?0+yfK>^JLtaEAQP$;QRw9N79% z4@~-!AVVv4&_+QJ6$y%uv|kf~-l#W@)F%e$o%5r%C0Ry56qA`g#CqD zd+hqU45Uzxe(rlRTMYF07L!&v^P|?qXKdfMM*=}M>({bzSCpT|CUIK*5cG{$h}z}O zp!#n2No9{{Aa9Ylo4>mmweL*lV7+bxUCMWBJVR)xL21PHn_duf#+`eeWE+UcjlNq* z!%=|Z*!)<#4#TJTra8y;)j<2=+aGQ>jf%Ip4dgvg0E+XbI*A*p@Nxf%uq5khpkC3= zj^6tk^=|D@;b=PywONg;s@mpI^`T=K>MFaSPffPWF-Q^(>^+IPr*ok&q^)b(^A&2* zRa(}W;|SeHk3Gu^>q8l(yzI^a>d@|)ad7$m{isr|-*~62BM_H+=WT3mMwQpSL&o>p zL6>mts!Z2)$ZL~Q{%L^;Aiv+LA^3U>3LmSywcKn5Lu?!87wc-Hj+YtrX3H-@hofa} zez_IoUCt$EUoZix@U?3vUpAn+pqWRbOa{;^J8~k7i;B90Mott^JfST3)9XIlP=qdB zaJ!@92AwBPd%rYThA3Q@dOtll3NDr2%RU}4gJiCI(xve?fnrE_qb{q4hN@|O2R4{P zs=`FJ&~vPwRjpqt)jk6i-8w8QBJ5GwkVk#Wz-j1;yCP>|I)(b~3SkMd3mP^)R1SZ8 z5Hg6Xb4**>vK6TQs>_$Q=M-q&@l|WDbw27VkhynDdkS(hvf#Kk2bRB;jxAc^3r#E5 zS*Bp?U+>R0$o?%K$Y;3*KJ%PJ`E7zq?uj`-yEUeFN%;+;#0?DZpbS70tFMwwdo5}Y ze4w;#wpB~noLi=;5a zFEUV9)N$?e^sk9}P{K9S z=_N};o#m0Iey!DmCY}%dmLf8!auuX1f+bKx7PIyqlz=KF{sNB^%|NkzyWGkl9#LK! zJ$mp%3KEvS?&!>CLe2UG0b9SDLj8sdiCW%97(QvWcs;QdrKH~-D$h_v9oy?*@xC-5 z-&K_ygu^k=89_H&cHM_3VQ5(XPMTTl3?!tn9&uYn zK!tKr0@Z_}KxMwbwx5)aXd7FuujI5s_eDO8bOHxtci=cQ?0ddnB`Xp&8SLrYu$2Za9<5nyEt^pD zFR2aJwsb;^$+tdBJ!8}!twMPDEfKmjjw@IQEJw6G#Sb1OSqTZ%g$~CE?jS(hR$iW^7OEIt86p}VDuwd1`%~jS zxuRAJkGnvWk@S5!E{*_}~vgl<47o)QzBq+B}*9 z3Zs*t>G_D*o3bQSv@B^Lc#s!5#lFy<51XNZ#GN`FYg18vw5py$ela?)=e>PTl?U{5 z9-L8raS+uVaE{RET?|c}9bdPzW}%MfH!Yhf8c@m?`*985UDR0RD_dmu2uN)2NCL|y zFus*}oPC=d)SN(eH0!6R*XkHmt~U%46Q6}I`)-9gGTQ6+l31W(^uyVCN(>s>vMG4e z%ZsQq)BQ0epdAr}_d$7c##*RnyZvji^`m3#A_-K{0o`M=ZxD zxF@mW#wHsPpr#T0b)IXWktch8x{c+d&>pAVsbnV9e%v}|N90}Tl|I1!_TU&I-BZ6c z^T`I;o^#_y`b?sYH42%h*raX#(+c z1g~`E9P07UaAwZN@b{*-{%?rZsGXm7U_N6A%EI20E)RY~)uEK{?b)xP?ahvj%41ku zXzwO}37LmBmZF#0q4S8CVN<+|%^0qK;z$NV?9RMf-d^MKL?#A(W*?I+Dpy~H$Ok@_Pnetw=w zs(FNpt1ftoTUP=hsD(Ek@uB+MoRZ_rqtLLD!@EyQ5X-kOWO$rRp#EpYDVo_W)P3{Y z_a9@spwjogKy0uN3SRSEPVb}#P?kPPymV0rWu{skaSRUv3S}MdiFH9(zG`CAVLt>V z!Mm>e69!O${&tR|v0H)IP@T+ z8o_XB#9ePL3>DUr4qnfp=A7&~)1L7skI}cZHMTOpL$KyCAp?i5m@yWwWq3}8B z$nc0h3}mnQzBs@F6|S?p^y@(m5ST){Opj6#k>_f5TPY{_3QjHibTA*)S6$eF6ic9K z^0Kq!x=ScGF;q5BpA9!G%vEX$8eb3^?VJ;ABv8HlW0=ANQ+8GYP7cSiu@ zS8cN!dV)o7Lf7?YZgH+>7s^w@`4A&x{r0#|f23 z)!U&<>^Nm@xCrVhOE9_3VFxv9IBOQMvmm7I%OT2T4t>|ww9U!Kp(es`gDVKDyY5IH#(M21Ij~f(?-HVQSb7*8yjP_p;o%8=}JyDYE|3ocaY=? z%`!K?vR|@AO?CX5lT>VeoirtMw+H?mET!9 zho}Sl-OV2R0ZAu4nSHYnqFk3}@>o3!P2H32EC&j$DZ{M=! za4bjfxU!ZoQPiN}!THHTt?fXfZoOe?nu^+eMj{h$_(B^Oja@m63srrd-+jtl0*ESH z$Ia94LV}ddM9`@?=(A_l_tM*nx>Px`JqmMAn%=vjhNJz}eJ8r1ZDiZmo(s;Xm~dV7@~Z35(z@(}!b~M1 z7|cptD!K)gFZ_J&`0qqf3HAHZlFgtuBKYDqQU~gmXv)8v`v{s2EzQaN-hl>uB*QKB zbAhn?5fgu|Hfqmr6wJHL0Zm(0BpehsN6n50h1o90LzBGdfp%vmRCsY&6ieeS=svui zq-XgJ^(Y#S4^h8BgAdb}ROeVkXp{08cgce2^xhDYT3bY+2HMRlsiN2enC1pPDsnKdRSUH}3hgNT_63@M^34(Uv7qLtN3wi^Qqa}iSDRq7Dx3v5bYOYv3@x_1_n$%l8R*yxXUd|wg z?ooh>UBn;Vtq)Lp_Ri0@IE|s1f3;;Gb2)0>z3lMtVPj}=i{j+j_!t#rEWI>y#uM5_ zz63bS+oCR>3+W1{mP38)6PM#3CK2I|REk-~13)i_)`tGLis~o7oPP408;GPGQq`f% zsM!C6w-Q$UJ2y)EWnWN5r5ydgoY>T%cc-jDIBf_eI8^X(i#>z(AA_QM6Q83hGCaJ( zq7I$g{XUb3lBn0kY5wkOXJ~wGwY1_Q1vN}$8;m~|hn8pY6n2Ufs`>QrlfH2h^cMSQ z#MN0~`DncC`I1vmnpPuw_$51P+2Qe`l5h|j>Th#Lpv6RE3KGndF~Qd~*}(&2HFjQr`&8$M@^>T2G;VPu>d}Ka-)bW#YEm z)q|+-R50fi6E7&+d#UF^crt3_b`1HTF##PXi(V>E?naLbj_-aulmx`J$B*BChxzyQ z(@#VP1b`6!3vO+B=0yl^{ylo@#rZaSR{IQ12giNvvZqjE*oe98 zT|a0z?4&eu#T>HZV-tPj4Pa_X_YdpDUkD|!ylea+2~<-2;|*?|h$8m>^0qUdpp|lD zL*+FmRJm@&lK1TKK#-Fo@ZHoxo%82B9eHAaa%20=;-gxq>w9?`C%-ln&PO-7b_AoI z%%8>SSbZ;iy78vEwH374m5cN@9E9=9kH2gVD}&q?jhElMg@9J-*lL^Yjhb@uLpX8{ zK!f{0VC~QF-?L zM_U-3iEGG-S zI^GASED{h|>)NpY(pX5p@P2qDYd4CWWL+6~UK{$2ziGQ4sz4oIC#nuVd;sO{>y{Ht zicw37$k31YL}-`n+F+sf8r7M-V;5dF54|HbhQS~LT-tlhd(duteUh^l1S z%pX9*R;HI%n2Mr?(rV6%E2~ha*CXj4udYFdd39C0*ACR3zM-Q+`6`r?`)dp;W}w)i z?Le^|7C+}~9EJ#Sh&C2L=yCRYK4@vyAg+9-)r7LqbB! zxPj6ZezUD!3-ugZVq7Vvh+bQW8jDv%pdmehVjm+9RLoo7XyK578k(e5x6;l4DgODc zZ`)*0ubrc{%`qJyDZhPLK2ZctY^?dW#-P-Kx!qxT7$WXGc<9&Jc_0;A%hlepLuFELQ$kx# z15rujx{qi%YBg`#O^rGVErzozo}a+#*=Ff}yA}1&xN@NDq2xhS)wAQ;uMPdsb$Lxd zU#8vJ&-44W+;ccPH%oZ1}tpzP5Db6b% z>!H?G;&h(rD#%MKFw9u00XY|6l|-=_0F_(oY@b3cYOZ(ZUbaCBN@oQ&yBahilCmaO zZ}om?i=R?m!o!W4wJMJ*xjq8I8BLQ_bE&9`Si|b7i_MqkuA5RB2B}4bjBUPG`h+!>2S69pof{#?^v70)Ne*BK@nof|ox)Vfoax-%Bw*E-i7q zs?Qz~gk|qKvzEZH$!JONa3><)W=^dsw1}|$2Fr;LP%Edq z>D~Y~h%vFr)ns{uT4f#Ie(B?Y(ilVU*B^5b<;C{v?)+I$`b9@G#WEk&7&agL@;C-+ z{MZ*Uaco1R2Mrcah1eid)BNTwQD;;~m>zuUNCUzSPZ`~7QivGse0JiI0Q7~f{~Ug9 zAL?6=t}%-TL9ttbeQ88K>J0vRsywm;YV`Il-X*7s3cj*t4~fq~&+E4r@13_r1RL#| z5{*izJvO#~P=FKFXT6*32wxA)obi!21!hn`f0i7-B`1pMny7pdIE#8dXQxIe3PJft zvm5d6D5#M2y9wcO0uW@^tZarIj!|w0Kq5?0YC)<$v^>5EDwdA2oN+ z+6@RfCzs0Xl0rSv`sLk0+)#AKt?4863+jIGNjL1m9;m;$Qh~qlBI>)z($f%!!s%Fhc-s%u_~DTzYoQ?2^9<;wHT9vo zWS6s-hrEE0;MJB;dk9r{N!>eJI0t>tJ`X;!FhiZ6m}_60(T7I2S~&%#8q^Un{O)yvVr&_ zo6{kvsx!|qYH1jBZqDZ4(LIma*6&-<{yH9Vo&|RAi*`aCH){mT8#hA1o@vd7CQnr8 z#p5tJ*$7?lS(u(CFrh{X_7MH)Bxu`uitBb{9;#b(bB>eA5qg&eF=sPtf-~yzg;$P{lx#H~5cW&vvSXl}bm$DW<)Xf5FJeyd9!XzTSF7wgWiGaqFgVsD> zj8LBSWwx=?RzR%mKY5L>8uj_zm$AJ$4<#9=dDSVF@XIXz0hU!na#1$Px%|1td zK36k``r~6sa=Ph=sM|h06DtUhl@HaeUgC?ogC)Xvq)tM@OR?(lvo%mMBW%$w5d{PC zfpVJ-A|VG^sn?KVfO^OwIHS`F)edS}t(2R?@ZSebKcihtOl&MnOiav7Y)nhAcUBAQ zOW518fBj#)|Meeh*WX;ifn8#E_R@Jr?3nN0ubapIasTVJ|8@sY0w6zGSF^g|{3q4L6^H2qo`sf9yXxrIYH`o|Qd z7Y>!^hswA^`k15^j${^&B<`!xCgyBM#v4hLf&&tuqAx9qve#&uyO#hey-3I*Z<5Chm{V4xFES$eD zoReSp1bvkjCY)tql5w81;I;I0{HG)=OG>;xh2Uz;RV&AvNIQ4QCn76>;V$;yg|1cO$X2Sh%e;Ju@wwlVM=`!ZUHv zft&4xBgP39H}AL^#${D`+#%g~dHTZ8-Cl-1#S0eGJw-wKcRT5&Z6P<~?ZkTm{ZN)} zy)4}fTxr7<0(_j{1|t8v_1N0riUxx;!Ay@5dcl+ZeVj`4;HQsCfx+mca8(SKL2=H4 zJH#a`TnztlTV@8e3zt9XGf!U)I(S<6gd!tfkzqKm`1Qv*??T3;`>xdQvxf6$y6@0) zi!y`xqX!cX?np886ugzn4Cj(T5~ODbT-ebUoSqEniH}~C=s96w>2YNQ2QP6}O4Cil zW%$3y<+$>RJEX5Uy%;T=Tfl!TvJ1bZdn-MA(9<0~kI-xIKk%G|PtajEzTh#2arE`W z1u`DS;nFF6W^jv!2d4D13ogt2$FFhKdck-cpi}yN3gqb1LWdy>*DW{;ixNH9>D*%B z9IhTnGaNS_?a{}LFJ-uK33KF2Md0{ykOnm?-9`9`a&wjad0_$LZ=_mK{`Dq=y07r zQ}nEdiwXKraV-&ij>8o-T=e4T7q0ZuZ-!4+^qjpgB6NKM9jDQ8{_o4gD4qQU_Lsrs zI2`c6@hF_@%KttvI_ku^DIF@&gO@?a1m|@0;<4~qT=7t5WI5xg#M1>FwD?Eu0bKD= zW&jx&h8DdX((|e!gK^-j$JvR40=S%lV>mbh!;s4;{KMM9$PaO|&!9r!R^)eh^OsNt zH|4l;feSR;0CANA*PUPpdlYb7jB$d+A)r4lpaUF+DUu#t48RO7e&}r+I=I8d4=x|# z_y;as;NpiNxx^O)Tz`&kJlzQy@D5xs(eWrf1CV2W&pij;noNj zJNRZNZ53xNU^988_Vw`%3t390N%I7yEsTHeML)qAgT>ydTmFHY4c4 za9p@2>>@56c)8e=06*B`o zM;|*5vC+9L9l-wmJpLEm28JyLoU1A@z$bq(2u8qw-rl6!NiXCK_Iq$B?Dw6YKQjkh zLY8JYAcoCP{2muB3~?jIEj)v74A8+Dt`DlrV3;_XfZKtUWn>7>tCW8Su(;L-oklaN zYV(e0?uEsI0e2f7g&LbIatKb(EwNpXdq22+ea2s8!==AJeIM%IzGb)^`>6{inEv$oFQO` z{r{`;`yaLMZ(sk}*Z=Q+?tk~b|5M}j|F!o&UjHoX@SpX(|LA@Gv!4Gy_5F|6fA@X< z_VxeDy!=ml|Ks)l>hu1y?fz%8|9{nS`SPsjPUKmS+H=YQ4n{{QB$|F`qRf7X5e z*~j^R+pd3ByZ_nW|9Jg(+ws3@*MHRB|LEub*`D*a_y4bc-hbD;{I6dBzkA>Rzs&dl zl=nYg|JC>TKmGlG_xpd;zW?aw{#oAtr`!Mk$~%MCzwK`izPTIUnq~&X(#Z?cZc@-A zD5<-PmIM7e<*Lp1%fQ&h7`KDhPIG4tWFZe$_PW(g0#6pWjW7)j)0K*JSn-hr!3Dn@?A6f{|4N&9}c& zfMUwp+!8zllxOv(%o~=$*wM5vj#E`Y50q;ii{iC{6J>wvfrtd594*lo1$9nV8l*fw~1~dkOIz~D_nd5Ms~cj z7~kUw)ESZ7?Ia}_`|00q>Sqd+$DTK3j%WZiZ^NMY5i202-N+41_JNVpr|VN6w*uwV zW}U6(88Eu}b#HI+Js_>gyI~ez2Bhz;Kc#fEfk^h!kXsT41F4%nMt=#0{-ULs6GJbc z|3&($COKuG!DsVxXIBBaF|lK8StXD?q(|J{P6BOTkU>z85Ddqx-qE~80ET@oq}-9+ z3nN*pycV@e!@$WGw|2?zf|0`}FZFb`05OBdAT${pXZ@@Ip;iEBYXh&nQdNL~)l0q| zyFvvrA);Mu)(wWly`CD)*#ogdBFm*x0%)Zy#j`V6Kn-WAzjWCM2n}4DbS&2bG04ui zN+uErlP!sD$5sPr+q;}6Z=GS(xu$MQlLoAqBJw;S_| z4Y97N=lx;eLYeQ-?JqD=wc)hf@+lbZG~Uw~76Y`xhl$f!89-_>vxulu2eL-p)5*{d z=o&v<^39+Udbg8%g{DG*diB7X*AKFQ?DNW_(cA+1%X#;Ngl~WW{zloCw3W~;dPjAc z=qOOF#MD1OGY8UaC7fbn1L~{&4=xs0Lyz`We-{@4AXP8E>APkbkc@ltTGxF5Liaq4 zf9?ddnP~8F4MzicEW6`fEfHu-xI*Sc4!|U*rC*=>B#=05SFpW6Ko+{rJ`kk@9Xpja zoV`MWo{hJnEk7B-m`hdjk4Bryd9H?DIg;)Ouz*?;Aw&1s-6_Q=@YEDZf? z_)k6T!{XoyFO!zd1PreT`*0z^99v%ll_YCzpn5CQ>{#7_pq-o;E$j~D9k~Z1m^VR> zcYtgD5I+pM^1FC_;03at?2~YpC>Z?Z`2DBxSs*)cCMG>y2{fPm-x4l;1nP@rFTats zfGjBT)mFG0249S<2)Lt64_C#QIgY8o9E7W?}X49;*R#o}Bqr9=8dbhgG9S+_f;QXEFVHDjSHY zo35uR^FTkD_3hJ2189E0>v+b>9>$e|r>9Q}VR=U4X0~+*^x0q2aVhtOe&^`;%Ki+*Hu8jY`2tLrWz1G@3BATy9KCwg3;EJB%n?nR3UE_1d?VwIY!wS2%l^{ z16sGkh>)DlCmtK1e%`zC&4nN!+6bt$ZyErK*R~@eEIB|ncM$57$zl zMG6Z!viAZt{ft4L#3<1G*$X}-KLIkU@{;*W1Q_4EUb#)}1q?Ffs##to0y%4|rR_Tc zkWb2LzTf%+Mt^>v5xOb`lw)ltRpQuTz-9kx^?-LkV9{Y7dpH5ad_FCa;8f@z$`B3h zSqc3fF;4PE89?m4Rp?RE0{y-Q#5-@X=hv^79td-Qfw4V%HJ@YoG*st;MbtD9c(%Bj zTh;>cH6IVZ@FaAWuDcLm(*e|OOWOF7qcCpIf3;ue8;~0|^SgXG34{8^Z@*e-17-W> zqe%~sLT{e;>inmgP~I<4rr4{MkMl|zF&(?tb_Pi?XaM2CQQpLswg^azaU zSKgDZPX^k`&>M#i2w~%la4QIl0^-|dDeoJ6FtY5$QpvY|FdY58{4(zx^jmkYJh~?l zhR(~s*i~@?C_*E}ojbA5S6Xbk7M=&gCk_`}uC|8pO9%PGg`I)IRrA=9G72NQg3K(7 zu=tOx9a=uk36#aQ+NVyYV)5AVYclN{OvQy;*2%a6QQ43=^qf3U3ORi9_K<+|cyeVw zr2?ip(_Hx@zr%ou@V>XEDnL!N*WlDw0@^aZ2onMe3{bO0l$|@F?*qwuK41+@{H%;t zeE$k)Q7x-BN2|i*FmF|N`%{?OKy_Zd(Fun3C^#=Yvl<30BvRIpjG(PKtM|U|8kp2A zdmrYp9R_QL(h^kVfb2byx2dHR24GMs`V3CUh5l@d}RP+NRYWPIMLca~hZ^o+6Zdr!mBgNit zLix~Bc;94QDiieQPyRBC>;zg+?!n?U>M)R%%k=0+D9}P*v-VwY04l$X$g}-{&|&E? z8dh>22DUw%9RYVB(u}6APk#h*`J&^$HfX}|QmePzHxI(l<;ZI{9(BRcIm*`$x%|-2 zdg1+U$E7eFmLMr35f7us`UIA~a)y@8Wq0g#-a>y%)fx|vtw5zziyf{pgMKd|8#iZh z7^=IllIm{)W9Q1>z599_hFq`4U6rtbp;#X7cS~)d|JnOjGXl$jQq#IhD;KL%t*qZ! z#%-Z@1l-E}Zb0AY`@_S=jhG+b%j9WSh5<*N0I~gjFmYh)iooJXAT2u8l^HhyLt;H~ zAJXK3yz-oB^#ykrw7JxfCS?cx{L+@Sr^Ydyn8~SaxClnVTw3h4usZBx;?H{{5=H~Q zun4<*1F7oJW9>~5Ks3wLAU?+OD7W%*O~G^+@HEWMx|9sm^2Tc!d&V%_z|AbZnzej2WDsgVG#O4l+_dD^M#=U{z_b;lQ zO;xm(3tm<-s`1=4MHPMlxVh@zJ^6~j%wm`Q1tWoKQ;WNAFw}*as0x|qRy@T&A3^(YAn@r`x zfML?QYs;Ns@VNJSDwj4)mA-i{_$v-*JZ$`VPvwB(#j6RsG}yehB%WD%DC7xS+?d#@HomM0So zWsd`?VAZ)3BGEvJxIgcWb_4N%xKmWcEKo9D1cvv$g)xP#AM4+61F5}iTYxhe!$BsQ zY%e2Vto-8P7Z=Y!XSQe1b5~UuTpZHJXBi0tSN+~*jAM0&*g7qPWs>%H?)aPX88j0%{|syPJ!%|0ak#)cKp&mEYrC!4DtWbm4oD)!A4>HA>VdK4iQGM%I zP8jj!B~wS`pday_x69Lk!Jyb3v7D|z)pX{y(A)|X!$k+pYXe}|q_1y9_8Ay4;(yj} z@*QY(AD?+`Ndd}_dq##ad8=KACS)8`K7NakHs5d@3O`+40oCL z2S2k1@>Xrs$mxvvgJEC7SstM7RB+HM5Cn4f6*mzcCLny9jB4u{gn_U)esBE@=r_J| z*ZZ0sjMi$#7>zQ)SiZscDwQ4>Oxz)`RZ|8A2I>|ksIx-<)6j`F_H{5}v0`*b2Il|V z$_=_~dtp#RTfKVtHV{)f<(3GZ#NvB#d&_+KWgQ@h-QWce%QNeEfv6!m|_@ z^t1Y?bwvS&j_DBOMpR*hYrE>B#AFz}xkvX*h&2rSst5``vK)rz_MED?fZ>^=`X;g$ zFr23Bwr6$!VHoTuBDrt;7;j0ee{$q14AP|5TCO?{BeFmBlqHt{A?rj*_qn@3s0wN# znr?tLJ(CtY`NtT}os?T)k_5x11~c!?hcF(uFS*qCkFs>k`dbUazM#>g< zOL|~&yf0;(-%A$y#}!RJryl^~ESWsA%Mf~542)MSAA(WWu~V8KEik|BTOIQq<1@W# zQSIbR=x68kKd?j<2)C@iM6R9!@<{Zn!yNV4yJ^rj5A65cobM%Hs{t+b&UQn^CD6Zg z4#YNjLVqH2zSVUBn3CpC5%azP{kv`Y_8t2MeJTc`*Y%%b_&xR%e}*y8F3JR1${mCL z(R*lLra6pWUt$)`lMBO}Z2N?tPQbX!+L!Arb%7Ks9=Dno<8=br{p;)A0!5(n^A;M0 zyMuF>ioyvnv`^x6WQ!?`UMkR<%R3FjiZ*HIx~hO8=D7C3_N3-q6%Usn40>uUF&4)7w6 zV{sT6IGWzkYyktcnvJ?2Vxc!xr7GUW2;+w+=*sJl7@jS6FnTZq)LBiNpNFz;rM%EH!lqCddCcP>@a>{tAZGm!bpnN z)!>I~fpldp6ZxeB#&>__<^bOgIzF`mf9CU4TLet z4~w<+jsSVa#`H)AFNQbPUni_k0?Mj;Y=nmx|7#-EkdJJJkzbYtXTyu3Km4}hJ?;}g zvMe;JIyM31Kv%Q%ffzm;y|Ct*;uH)?RIZYqy$Az5W0ybJH~`go^4)1;?EZb*=Nw1; zfVN5^;OCBDpjmedy}P*<$V_~+)rEb~-}feWv>4-a2M!!nRZ+xvh{2<7lWw5g$<|(* z&JDCZhvQ>9xM4`&*5y>435>6y736?Ekdv0n=#^*yZFI|q>-LaDCQZD9apAT@|;^>8;R@TIcAsL{~ zb;W#$#`tl1&QM)yCJ^n@y`;<=vHI?LYe^U{bn9M;G?oZ&;j$SW&4thbuj+O6PdVrDgj8s{T3^^^kK;PrV8N^H@~DQVP@CvGbcB$gwokjFr+5}5iaPy)lo zJDD46Re(6PeqD&+G>~TN^^R>i2;{f7@;Zbt9`L=NnaM>G#v8)A)!i(B((}oM^>#cA zz3bmcx%3=cS8=-rzUM&wG>|?R_Xb&O0QKzr&0s2q zw^O+;+&upXNHNb(uZ~p*%E}FvOCKKv%H3I~9=RYOULklbeT!oD8041h1>NP%?qb+hqpI^qP{!EF-zo`k{7nqLC4CRbqW z{D+a-dyc^1MlJ1TpbwMKxBS{Sa(i9<2j}kX;z? z3B+)}y=p|a9L$*Y9?A7(!SJI!#Y;a8$ju6Jc8;wW4(>cDVZ{agr{7N>NjwT9^)UOl zTCah8^w-Q!)6eS9LTpknqyQj zKda0L@O&+V;fx!qkGs@>dO^2={0Z}Widx+LgiIjqeoUHF3WLcwVaKPNPQjpWz`j?n z%wa_F!QCjqVxYQjaSJuv0o1gRV8;+FPsE=2Wz&k`$o?gLr_+L=DKyaH;spXsmA$#D zfByoIcg~x_(l8h{=ia|!Ifl2CAClfbS`MUJ2c85kVu9iN%l50!Jp?LY|Es&HHb5!a zaJ|?4DiFVXJoFI5=@UnI&8}?R1%vJJw6)!8F#fcOi96T&)UL`^0b0rKh+n5Afh1tM{rOA=P`$#6hvS8T=2Y+6F^1L6ltGcL zW~mt7Y@_rp+6|-{*Vq*nu0T1~pm&md9R^kg>Rmdv7061pgUjSNfMTyB_jpJU`q!si z?FhOGB(Ja5aZ%4=`%w;m{x^~GZKwJ=!a#Az910z<0D z>kZ`}LN8+7Bz&j|ruIte+MmSopjP3?sBI(+y?tvF`!Enl7nD_e7sbOMyZh|~m1O95 z*Uk`>Uk(FGYE?%^GhqC2Xrk7L3Q*26EBB~K!obTF59V1m!JtS)O}m&9P?c==j~twY zfuSJT^N&7aykp4`lhrXmNRS)nt}BI!)^m%dhA%+ZChz5M{a7(xW$|!ycO!=Hc4|?= z%wZzq@;g|z8^$B24h-&ZhRN%j{ni%qz~s-`ZBCPE(07?_{M+3-bN6Je;Wloz$b=*-xGU#r)LOl+Hp7*WFaOP2&cliy$pAI175c z^bgpYZ3d!eW9-&+4IpgNFytBMlcGEa1Fj$PR_I`L{>evfG5PH< z5%Qkx)3L)qo6nxI(j=pyts{>opF=vc*- zIwWZbgrd5u=enk0=y<;N(3lPM*k9WGLl@&OpKhjVG980~O-S-%<5rl++Baq<(u2*{ zqgBbfF#mg9HJ;py;m*TPqR{To(Em&04Dzc6l6l<0Z6-^A>hojsMafQ}ZkGSHTk|eZ zQddW(m#_orIs3ZGv)(W&yV3nXRM(Yfmw zzus}B{+^^4(A;8&1>rsR^YZsa7tDa1%JK4Kkq^+kX?u->FuxHtxREr#4x@W6jWaEk zhQXQ~v6yjxAfCz5?ykhvCqzt&vwRF_l6O~&M2-XPqDJ*Y)y)Pj-@eam|x1QNB zh0T{_(TCgw3Q%KgH*zWm0fqDaW~M9A(7Ug{bkP4G5SO1j-QI)Y6en-f#mBA!B{r$a zMn@57j%{~HGeB^?BfI@vAq>~4>}t@e2I`BIyLtOw0#)|( zy3%q@`21?@1V=?5knDsFsigrxY<**X>8vFX6y9;QJva!Y48N0;2bF=C<{fxuJs%KU z-py6Im@qN1{M-KaP_7Wi8zpVHvn>WGH7|x%`{Tup4-r&5N1OV&4FcgM@ATGlfiR*L zIJ<~d7YGgpH^%xafVx_$_gm;QXu7_<>Z?>KkUC#~uiZWcv<zv7;MvjJ1Yg9 z)?>$m8U=vH5|vPPR1wNoDKLdkal(M<@=5*-KWGj8@MK^r9}2k&(wMykusTv{;IqjD ziVrTmTbFYfe8lfNj6Pw4#J$leY2uRiO# zzZ?b$&P4IgTc9m+_FZbQ64ZapxG!d@4o|7?F1>#l0mMzc!&Bv)Fcum$dfea(HUpoQa_bbY3Kb(gGbuxPcp8%whFS6=Sh`^YG z!CFg847a2Tmv+5%hW@B&$1VJwkT13WjqOt|piM}vjEKN+;HKGAGpi#ZNpJtU>#i7I z5_P*bEgA*mfrY*z9uYt)&dSUtltQ6(tdBYm6O5knKeShL7c^e@tZr;X0YY%tH|f2P zpnHq`%a7ey{%um7NYBCi@l-j#+u3@kS6R7ZATA2VbaVIXebW9{1XxS4N=AJ=;eim!dsIPi=A9Mv z+-+anwwD72?zwj4kD5Sp^B1|@*=EpUguuN zWze{bJ@=864~(Ym?e30#4TLk2@0Y|SK^0f1%UH}Tcz3Dp%(C?OQF~Q3gD#GkE^v<4MRL)V;kTb^@yW-^86e)ecV{yx^5K zxepBz2X-5v7ASh=HS}>&K716iA6r>ZfQI?Pwv%qk5IOE@P$=L5W30Out;yj6qMY^` z)^x0{ezK6ba0KK1ht(fYbOfQLvE-oktLMd1MW|wSq{N-sFwYI~ z`&8MJ&SJPYseC)rxt-96MtyiV%VB`u{LwQT6KGtWqi$pA1w*{VbiEZ`P=0HV>zO89 zXlXgosKF!!`Ko+f>%#fqrDx4+<1jU-m(K|OY{v)0C$k4nn_dNSw&h``D^@@hX-v4P zp$dfUg)uxYLg0Z^9?^^B0cBgi85#E-g?lesr3arg!NBotC)%Xzp(kdsh28}<2$8tB z{ENhQ$Qg+}^>kAvJlV3b`AAv@gj|o7IBLBXMpq9m_B?VIh7&c9$Qj*+jukAC+KIkU zcb6&Rb`KMv9=Y8`r}e;lZ|lYtKQR8isb%}a0}?QHgm97fS~e7O5oY_Um7tSwH>20W z3dZ%cdi?!Q0ns4%sOe2RAX%I^c1|C|M}23%w#`OD$Iqy`gT=-$VEbUa#`rx9I^B1( zvi1S$*j2ry>4NZVWmek((>NHJS`~J}R{(064IgabRRQWfKC2+57ceTeGk&{>JrFXF z44rFC0z!nnR)M4{(3UUJRku@z(M9nYr*rc#9{N$!e;PY~z46>eMN?>8#P;b>xCN9Q zPZmvh<_k2dgb#+D%?o}?oALP3J7o`}EqYq~!}p-)B+=q-mIjPDZa4Y3B^$;ha^F_& zorQ-DU9@kJOwjNo?iJ5TUC4i7?r-v33Yv>|JQwMXfKjB&MVXw#_z91!7{*`5hUUjv zKbAmqfwas=%jfV)*nYL)NjV@Kc__O=O#p@xx9xs$;}O(vcH&ugCuqSQl0n`aqzXWV z>e)@2KZ}5(zo{pz_cn}h_iZ0qu>(j|qlT&nd?9nuwPjDDXQ1V7T72nsLr6E@#e9nF z0qyd_Xlz3~5Zu1EhWLI5vi3nL|8g-XKj_75dc7Syza`biyzqh6M?zK8oR=1!OD*0S zOH53J!Mi`#tVvxDqv{O;?4?Z5^ju#~$_|TXwcTS0C$9n8PIx|HG63VR%!fA!dqQ4n z_G|9M2pCpUk-XmQ2tzrU_gIYGp{nxgo|`gE5P#rTwAG#n7*E)}x0pu=8hfGnUhgan z=VZIA7+3*)5z{}~aw_1-@_aB*U&qa zk**&h3U#mSkMBOb4*E@{-gK}j0Chkwucw#_Bb2cgVW+)7wKR)+zRm%NiRXT@e>e<7 zb9_q!!tCI--^DfO2p&-1PRllO_J#t7qtu^?FQDiA7v{Bj+(5{Z95(YN=xx`Es&(^5pj@ZqyZzAn~dKpJX3|CD?cMjiZRXoef0C4SKXU1b#*>rlN_ zoIML=OMi}SXFUq350}TC_s<8?I+D-9_!1bEc&v2nb2pT~=jS;yX$Bq1hp&peOai6; z+og(c7SO!uR9jr{R|pEzd$8Y%3F`E+?}SKtfV=O;5G&DrFy4Q?>4th7)ZD#Y{_3nd zj0mmf^XN`p@U!%1#hugx@1Sk3`l|8${V-DMY}MCKgH*P_q_i9PP^x(`TSD&*miO$+ zcxY@8waco+O~)F-E*#%mUZn=Z*{cVQk79gfmA$>-Dx$9s0neP5Sy1zI;kAjFqGSv!l z(^VBEPc;EmEi2!>$`fLRJUyxf^C3S<_=;#?J#@~& z&;2@1wZU2-SRPg@GO304BG*Py8&;QJ?W%90o`Qy+?7LigOpp|N_)5dq3@B5Xi;iu7 z1X;%NL&Pig&?mt9z3E0cj5uDGXrWjDc~#(q&QKOmxG9MmFTX&x+WhS#1Hzh2 z%}x~$Am+M%mojq%>iOsA3B^A#{$L?7lN<+)M&+*WZfZk2bQN!Sp$knK=PEKJl3=v4 z>U-YNRT$sVTJQXQ3k?5UC0IG44UIMwJ8SP8X!2y*J!5PJ{Q?Q^l}|s1m|Ih}TuKoz z^5jQI+>;{c_TpOdO@eK~UtX6-|B#6N3cXA>+hj1D(@zk*?JAo9!&3E55{tuu#O0$m zZPo;_!G|Uaw=w~Fuwm5pP&ym=b>Y4ZTXQ4yURXg% zFroSI8xLr9lQejATm#a&d*@Hy#_+sO^srMX6$Z?sX20y-1-;?DnXfDM044M4sokOG z7*D&wBPjP4Mk8D@m5Kyl{2s^6)^mz5erDr|b1P57$c*i}(5zYLlkXhsykh|awBZ{y z7ujK89eGlbEf@%DtWq3Ytw206Y_epLAM{68edAi60i)TT9LHL8pD8({*5ze9y6E@nU}uh@OK>IIZ6aewx@h69Fd zm|ZrUF@S;iT~2)SBp6!HZbK!M!Po;|o~KdOKvX`fmj09%NYB_!T4z*X*m?VzC(=<+ zH!6N%Pj)R-zM8z_VgCS_X9RWr>}96clprxZLD24w84S&T zR#08^4aU07FR$S+hIhX9505Mkg0g`1rtut(Fnotoow;}`3|PEm<=D>#WFf(p~7dnSQN(C3S-?*-57$1V>zF`Q+7SbF{UqcF0I(~tLyz*WqIZf51{*0=_9))br}C;alc%64~$gi znS5T0wz$93snsN+b1o1LxcK+JxW1~qM>Y8cUYhV0Y(OwKmX#} zw=lm&wM!Z7VSlIVK4w4=Q_zU(>V}fOw89*Y+mMsrZP2`RDIEQ! zvaBUg6zVndTa6r>ft+ug@j-YUjAlJwa?h(9h(_+V<1Xi6Q~=^X$pphtg6%Jd1GX@h zey?mqRupJeqxL)HHbIg=a7TCI1Q01^kIt{|hJLXl%mT09W-8D{2Ue2|^V8PZRHBDQfEn2bE z9f|<*j&Yle%THj`78!0jPSaO;$g5V7w&TKT3fghB!y8J?)L4Rxa~Fc|{D6PI8-Ce?AQ3@4l2+Z4QCa zHu=5M4GGZLvDZP%mkZwMJV3lXBG4*1eY}0KFT@9t-*dBgV0>JmriQl#NXkpvoJ#GX zu1uWwnUNEW=VvGG zgYj?oc*lb@;JNAbY5!~aK=ju+5v9il9d}k}P6=Ou#>EQa;;u@N^N8=uBfCj>>ppNG zEju4dPMDBM>_4I7fr3GNkSKJuJ-pNRYzt6I-vtx4@sJeUeQakaQ1=R^MZ7-=Z6+!wF0bo^QSB1{V3!E!6=HSszaVPsOSMb<*vqwtkp2~CQRnOA~y`YfBIwk1ja|!oJ!LoV0l9K=cM}@0K(Ho^VNaD z(DwS<&4WGpP^tAnP~+YOC_FN6EAnOl8b5PI9dXC-lHv&-)%3^UyGKSstFoOvG1Fe>eBY<%6z!ovrLZCS_KV0R?1#Nye58Qccun=c0 zo`tR2zlvZ?t?tI!C)w~;uWVm&t|E|kzgV&+Gzdn85(}CQMzDG|K)&9@4aGlQbRR@H zK>ajX^voH1$o9GBXzr*5qcb-aSCU0BKf5Ymjg-K_AZOn`FD9t}Qhepon>$e2)ZlD-NEK4y0%>>I}8pY|=6PCg8UVgk0(9ZE2e zq&w^PND*S|uWJ1|D+pcUU)e6NtAoPJC-uVzw?Inouh542M=-En^;L@h9MD2USH(s0 z!RQnJd%C>kP=7zr9*QI2ty^4|A&sGIs|PRKb%hHB|+M8 zy%m<1@*$k0Bx+@l|()Yt-Mw5Y}_VbG9rGa(K{JBz1d zSBIe3*12Z&T@k3%dGY;wMFh0-URD-yvx9cEr?-x2%)p?x-nTs6r!e|$d8JWCEf80U zxW5ll0zw3L#g6J!X!rbdR{oL+JiK2iQB1>deY(t*!*=|DUT51qIw}U^E#z?NZ-=3U zkervp&JP0zTOM#-z5{`$!;d+Q&B5p==DMdkmGIUyDstO@-B!P*$Py#mmV`W55u6$^07FNIOyN_ng8dnGHCtsCMw!%0?1aL$4Zy2gTjt$ zeZ=*y5TCCU!$PP8ipH^Uz6&d$+?+O+&2|sQ*>2I+X9_?&N9RvAKFklzGF4uMaKZR{ z9gJ6|V3yFLGjZOfxz=;U${&UHs% ztj|;b4*3hzr%SMlDtTe`S;m&fV=vU}=DyL%%mDIH>17rrso4B{s^1Y-51kjevS+u> zKykKSuyunO#zXr}4w0RK*ga0VBYhCYJhtA}42}d+w^2CdCNFfQA9(i6LKBACr+mE5 zOT%!Ux7K*@BcR4a-b`e{p64gHhNbc_ynSgm|B;&jV>^v1Ln05uh~SmF)0#Vg;Jf=n z#rqA=U>ujtbo4W{&%8&+0@GmNU7v}A8VsoJ zV%l5D0wnGydfvOQ0(I%(#Q{&;AbT>?*M3q8_C>fS96ZzlL)ub(Ys>e*xaSbt;X^Vo zN}Kv=<%{t`i#G{;eWnnz!^9?9oe65(wx#XS%!i(`yf1~!cG~; zKK!cE_Z2tL3{t*F`Rc;x*AotL&QlOvdwl8qs2cQt+o*F!CLabJhg5ANvHW-WNMy!h zA4t+>PYPMb4dVxE-ZiZtK#zmT{n#bJFt$y8Me+2!W=E#UjhVZ-`~(Z zoHPPWf?ubC#&rQLb&WfE&f5IEW|iPjUjPUdc?L+-exwTiCsA6w9L-N_;aMg3y_=I@!@-DU3O6 zbEdI!z~BkpZjW^_&{>wllw>^z)!#2k1L_ZIb zZ{Ji4c8!3sRQFZ?(hnHA79k{Kpb4XSPknlsc)`zlY3$Pq48L6N-OF>x3YzaUxgY2*Z?aQJupswG{vdGFF+UF*g+OpL{%OPXcm#gD}a$BG@ z=JqCxpIkbjm(m8EfhYV5Km+3=mlVHh-iJzk%C$ATvQS<+G0-d`urv0iz zfhfJ}k&<8zbQEyghrgKv;xk&XVz?NLB;075Rp*3+frc3Mb+4iAl~1JF=SFCZYELO( z(txp;`d`*3Pr{hX!+P@-H0VlLMd@B`0OdFNB}+6jV7O)r^`-T3s5U?SBLOC$-d$Bb zRSBR(RMkD}&1H=L-W+sgnt`t8B1@{j%0WR$uKy)25g0euG;f*bhv?q4+EG!AzsYQE zIh-~PEo!Tsv`XWkT1Z9IW1j%DcD$c^F|h*35o9JEpI{6Re%$;e(E-SB>+}xoT@IaH z&BN&(VlX6b;4|@{7kZPHeu{X_1YLaV4TUD;U|{>Ku)gOc_=c&ME8Aa!oXx9uWMRCd z`OQxurv1~kHK z3P^06cNA*^pvlDU?c1gtX!Xq+l+oC-5TBF>kr@fj7~a}dMEQJZ3$!f{Ut(sD;f{o? zO=mx2IParlz?KUL@)~}9sp!#yl9iE1qCAQqR_wb;Xlg!0ooG$Ys>68yx^`spq?w6{ zjRm_c^S}Su@vL}+YUEq( zqvV_p6B|)!L#4tn#${3DL7~z4a$npicdVsmX68%2M76u3&30^Dz8xkudw+aBzudp@ z`Qh__yk5@|ZriYrzah%sPjtC-YyR?&vgusK13ZIt8t$l+XzY(f-^#1=bd2847Zkgq z{mbs2*{$$d|q3iXuDddC6+^t)a?1HnU~P2{DjM|*ImP!Z7X z-3($cIVc(S=J4|Ae!v3WtDObRJN6pvUsDy5_bY_a=4~%8hYAC#^gI5BJs^Gv4jL!Mmeo*eG=&s~uH){P@G@(p)t4zdxygdv)~w&dfE+=S)Z)79sNAq@?Y6N z*gj~|V%j*xZGaJ9#S-*kc+webmy%pFn7~?kj||_XlpF{lJC>y-{$o}=UtjT0PNZSn z!SHIdSv1WQ<*SUs=t_Z^dK13n zXVGd))Zu^%`$yr?92+OEBj5|UQ-*evC~prC2QM(oWHHv7DCdovNWu_1WXooe*{hzD zT5$)1knLwHOY;4?pX%xO*H&ET>_*r*0LVW}RofZ}uSn-M@Gf`7h~8|lXb%v3Lih$K zUSnVF*JC0JlwLr|Sh7}ZekDM?d0vpl&Pwrf#6c3Oe!+*eneMC?{lvl}NwfUw`AnY7WeX1Ua#?re4Qsv9qXpC6D(JTe;<5yn<# zK$ur=Yy4b~T0K+K(S)R_xrdfjDdu59jiT@=zbk>59ht3d*Uc-2# zdDpZ#lFu`R(<6^h*}kf?t3ANDf*w5uxar4~R4#IMS$l57r;ZI2R!cN?8E5;Tz z%X`U3nPtNmctgOAG}j$i_NTfIib7Ic=j-v1Dj9>Iv*4wJToYVEt&=l9`x<8VoFKpR zwfN9OS1n!(N;d4s8kM2Da?p_DxY*ZIF|WrGd|Tjp-^p&!U;~x=`PDggPZ&7{EE9>x z1IGJGptU&Imdd@<1zd4Us&`?#6c3Hh>er0Cvd&&;Ta7pW?z02QEjq%J*KIBhbSqw6{WNuRAW)>WYS9;Vsl0DA|{$g&_X2<=b= zPLt@*uqo{9ct#!KG6i$qP*%gt^7T)IDNPgzeR=BkmT7$rYgs6qcK$!T@xMWD-1;{0 z;Vhvcu9BGDwR(*(nxZBUsGTm=O_~ikSDhgkq+W-BS2ebt>)xB2-y8;CrGl--b09BM zk4njsQiU9_LB#zzc!u!uJ(o#nRb8H0Z^_ckr&?3N6$23{P!SMdxM-`~R{ch9`SC*O zmPjOi2X-)3gQ~C88%L;DCcU2&&5GaVM+~J;g@ekrHL==BBWKnrL4PP5Kc}?R4^%?H~T**)m&yo5_MzqdVx1Hu3aVT(v;A=le^~5%a??8v^S)W Rmo%VG{jHbMp~W3L{teJ+Pm%xt literal 0 HcmV?d00001 diff --git a/tests/X.csv b/tests/X.csv deleted file mode 100644 index 9e3bf14..0000000 --- a/tests/X.csv +++ /dev/null @@ -1,50 +0,0 @@ --1.178998180891155656e-01,-1.431240072891293569e-01,-1.032612207595051818e-01,-3.032187959649952358e-01,3.623527555657671262e-02,7.140070893198336571e-03,1.994856139137879403e-01,-2.091539772440898642e-02,-1.016086254290284319e-01,4.225480470043030748e-03 -1.900091741547343949e-02,8.527956006600532352e-03,-2.360627728880385912e-01,-7.614938655092416860e-03,-1.549697289040389246e-02,2.249142191975829854e-04,9.680233904138081658e-02,-2.051414424020579219e-01,4.630024394840283053e-01,-2.965171494849212080e-02 --3.699631581918050305e-02,-1.722594123029470847e-01,-2.811921500130166226e-03,-2.389563150481890941e-01,-1.075624889112302696e-01,-7.804616804476580127e-02,-3.706328230757107572e-02,-3.503804035374127185e-02,-2.647277697909438676e-01,-6.682759619509875959e-02 --5.130177317722107305e-02,2.268018482998235275e-02,-4.179689023642386980e-02,-1.623091275446776893e-01,1.450083194821685240e-01,2.219597463120694947e-01,2.533842648572138742e-02,2.771331081546550557e-02,3.581273753830072765e-02,8.722251846321744939e-02 --1.306936424111264927e-01,4.432794698567819186e-02,-9.941966213181395451e-02,-8.715861166850324970e-02,-2.303285613309095925e-01,3.078294089253613142e-01,3.344919445579297435e-03,1.196830919307750318e-01,-1.253076375038724988e-01,-1.148761269817597519e-01 --2.250204095659052439e-01,1.113238116713928527e-01,-5.290002031147110484e-02,7.830761098391121611e-02,7.066607013335457488e-02,6.565522345102817181e-02,-6.308067898881258850e-02,2.025286101924284737e-02,-6.818604986842312365e-02,-1.070102801614746246e-01 --2.882057940922741479e-02,1.799983072585507882e-01,1.130515074865423159e-01,9.460393874312598983e-02,-7.352923330349291076e-02,-2.755771198440996536e-02,-1.310648265859815260e-02,-2.475061797099528116e-01,2.427234406663877353e-01,2.583612973537190993e-01 -9.611602736254980239e-02,6.273551721516337776e-02,-4.324306198998925654e-02,-3.860336044312057818e-02,-8.403781067825444318e-02,9.562097685082457388e-02,1.492509493676312526e-01,-2.943327955367435744e-01,-2.877171607065032860e-02,4.951010186454657749e-03 --3.465380375344423447e-01,2.176487162155849725e-02,-3.693161931323302866e-02,1.619662116578308719e-01,-2.564291959900348236e-03,-1.637987837220862553e-01,-3.342210830973137148e-02,-6.685343093833395756e-02,-8.554318254825124535e-02,1.613775288161613530e-01 -5.313251489880643774e-02,3.890058088332522257e-02,-4.613812296420412296e-02,-1.034537934089800326e-01,-9.631838877144843769e-02,-3.092370301090547474e-02,-1.419742935886602053e-01,2.380517554927013592e-03,7.079890010442424497e-02,-3.648327087249821354e-01 -5.102527195639846441e-02,-1.362508515419207089e-01,8.159140673817973088e-02,-1.244854531841070727e-01,-2.606170884965469323e-02,1.511382743326344924e-02,-2.255344304610490958e-01,6.236460909959602728e-02,-2.657951209176429019e-01,-1.594365214738231729e-02 -7.926342892815507746e-02,6.482707539961192478e-02,2.087256857963709078e-01,1.292814475123448825e-01,-1.796195585005122275e-01,1.525550407724216850e-01,5.475504271088289798e-02,2.868404636974628344e-02,1.264796115328103154e-01,-1.555090411723416069e-02 -1.181696244748224739e-01,1.999694578685428381e-01,1.807315761292420109e-01,1.229014824059724564e-01,4.895454174242171164e-02,-1.833503379863557770e-01,6.881950937845732197e-02,-7.141605983769011567e-02,-3.849053159713680498e-03,1.119597953540091562e-01 --1.454915981077725406e-01,-2.266794840632963548e-01,-1.298952558056660489e-01,5.437551156666114299e-02,6.183066340902761832e-02,1.035937403404784546e-01,-2.570107980749361878e-02,-3.093760287832481026e-01,1.134096421692707829e-01,-9.223798086734372181e-02 -8.709274188337053080e-02,-9.556231597509272369e-02,2.118423200194279044e-01,-8.774546066090892563e-03,2.769267035538602317e-01,-9.815821608839980783e-02,1.709472261185437285e-03,-2.153557681348250430e-02,4.148111640994667226e-02,5.196811833848381107e-02 -1.880295620305566864e-02,-5.850999774080740262e-02,-5.301122779276247476e-02,3.537499672221694480e-02,2.852315743834457629e-02,-6.942851976899913624e-02,2.276894587717699092e-01,1.172152546047936506e-01,6.257413318528345057e-03,-1.682213921871343956e-02 -2.569990952013931906e-01,-1.736032991395405622e-01,1.511557448386198835e-02,2.441813032135399242e-01,-1.105916475419813361e-01,1.472489542271989138e-01,2.295846712275041168e-01,4.356843384762421750e-02,-5.142855348130226378e-02,-2.450933945023268251e-02 --3.281672906942039586e-02,-1.258316028084845439e-01,-1.229551514195627165e-01,-1.497473216257483863e-01,1.213383871403065223e-01,5.912940006733528181e-02,-3.442255150142065068e-02,1.684351304854427023e-01,7.878512914823442015e-02,6.141853050739853360e-04 -2.985043940771188800e-02,2.697852036140859222e-01,7.513858261740154199e-02,1.691617277348242410e-01,-7.715021687363131375e-02,-1.590745317353356725e-01,5.564786782697213330e-02,-2.145953101463689283e-02,5.036342539549311381e-02,-2.798631226235559488e-01 --1.206199609736929718e-01,5.952016584844534164e-02,-2.588323978913500273e-02,-3.610815652054708697e-02,-7.111461594831880451e-02,1.716009403396910049e-01,1.945097583365250696e-02,1.682441279803628120e-01,2.416197565576874359e-02,-8.446813595188230883e-02 --8.788855601271274021e-02,2.870664460710737470e-02,-2.150701597306006463e-01,8.942026820589549230e-02,-6.406031432030431794e-02,-7.238901051636800754e-02,-2.847790921066896686e-01,-1.791769561572375546e-01,-8.985812560956656092e-02,-1.557232758585813948e-01 -1.122914496490508562e-01,-9.161001903716270434e-02,5.898245165418002783e-02,7.666824641318797928e-02,1.144428476261267896e-01,1.279510610165440210e-01,2.794793837130695249e-02,-1.769334059940223525e-01,1.395088287951896100e-01,1.531099359177416630e-01 --1.756665362986270865e-02,2.243400472787894853e-02,-2.313766383513476965e-02,5.985349262422249433e-02,1.623952653335277718e-01,7.219739543308523189e-02,1.650650206991929048e-01,3.373066648957191438e-01,1.293144667091710442e-01,-1.198206084743443922e-01 --1.591288826029353398e-01,1.441961795141566763e-02,2.691263563648352286e-01,-7.631601786004396648e-02,-2.035897032262034834e-01,1.839999945230586520e-01,-3.040797131486546595e-02,-2.072195591278232774e-01,-2.582099955618117823e-02,-4.968369036922733184e-02 -1.971222793011394997e-02,2.857593552133443071e-02,1.076526115126625743e-01,-1.169588063781885623e-01,-1.493986053584963822e-02,-9.939156163385284848e-02,5.728631166051838947e-02,1.318076226667439788e-01,-6.559944705762067729e-02,2.000054553822710746e-01 -1.442536217074669447e-01,1.860705352618353958e-01,2.376560497530317284e-01,-4.452755353807675426e-02,-1.479992243428359389e-01,-1.024421274656733688e-01,2.219827293941429441e-02,2.744560730041187280e-01,-1.749229054677335360e-01,2.486267968156883126e-02 --1.173525007136980713e-01,-1.589063344657667964e-02,-4.855377240993334620e-02,-1.710166455399014795e-01,2.238197997257449501e-01,-3.902440146587572017e-02,-2.277246088212442343e-01,-2.225027033096296514e-01,-1.600856785452938746e-01,-3.513128354873073979e-03 -1.553053556117380551e-01,1.776336988981010168e-01,-5.584732869767267127e-03,4.337629217125157921e-02,1.343992700388582096e-01,2.241754083007339304e-01,-3.804363791330121480e-01,-2.248707918941276335e-02,9.449528681409452568e-02,2.019673102132814868e-01 -8.811133006768176457e-02,-2.495992576632576343e-01,-2.107789429909177337e-01,-7.656628888881508721e-02,-1.571965217975497819e-01,-3.994837344190730472e-02,1.798000461817380116e-02,-3.929477959092856493e-02,8.199998236736730228e-02,-1.771336014986007457e-01 -3.084293724362072164e-02,2.870830338863302744e-01,1.390985439227190867e-01,-1.761267638611300201e-01,-3.030878823823451168e-02,1.283420126059948152e-01,-7.032782881930829677e-02,3.028267745870127925e-01,2.763235193260478728e-01,1.297259596484676494e-02 --2.980209117205826486e-01,-1.599628570960875684e-01,3.717563457838087004e-02,-1.715739500198807110e-01,1.156109940448075690e-01,2.861100896544049865e-01,-3.224456561914625097e-02,1.883841526758878449e-01,3.120995870006536277e-02,-1.666346081723748540e-01 -1.964845154373343616e-01,-3.262271620530284716e-02,7.539790456017420039e-02,-1.390837387106441114e-01,1.432200744039294031e-02,6.588671044290296541e-02,-7.918721856950346194e-02,4.179783781885562655e-02,-2.963364199479299327e-02,-1.282878362461941923e-01 -3.939736847129866049e-01,-1.330499698590044688e-01,1.620818289382975064e-01,1.086385707584531096e-01,-3.063136061977774771e-01,-7.367331881484205647e-02,2.938740010160398874e-01,-5.544842822282580047e-02,-1.217766056376768796e-01,2.308853011600819627e-01 --8.747965097463808459e-02,-1.216303641899998678e-01,-2.000717572673424427e-02,-1.394174966077489641e-01,-7.675363917563379768e-02,-2.418816225068699255e-01,5.774342472104643936e-02,-6.667810796688183883e-02,-9.383247246491349669e-02,1.803148190365377324e-01 -2.154878276681011437e-02,7.274723003733224447e-02,8.493890250496327621e-02,2.317676008980297797e-01,1.202666302268647763e-01,-1.795717633338488883e-01,1.194104887456467895e-01,-2.409833230096719917e-02,4.209919073379941867e-02,1.805717730414188316e-01 --7.417287534784343384e-02,3.280186400443500516e-01,-1.569651800380269802e-01,1.352031133976719091e-01,-6.623571067636253862e-02,1.821579193654246642e-01,-2.611616781264873843e-01,1.257537100225379623e-01,-1.544128139339268624e-01,-8.073570852093319913e-03 --1.055845973894932038e-01,9.447582815065415363e-02,-1.280223934974548394e-01,-2.467957463871607027e-01,-1.981722006802176250e-01,-2.174114263242006573e-01,-5.258326868244974500e-02,8.632670058414107506e-02,1.278124112560487524e-01,-7.596235162571260413e-02 --1.319143228822058644e-01,1.105849050743873824e-01,-1.261348865766407090e-01,8.221827529651301592e-02,-1.637828607024564287e-01,2.207216837530200787e-02,-1.572736510450976899e-01,-6.353661633164614519e-02,4.310413166262661022e-02,-8.635729489274258930e-02 -4.002677023935117401e-02,-1.246790995864136553e-01,1.009436985538858939e-01,-3.086445086254718112e-02,-3.105499027327088268e-02,-2.181299643306329195e-01,-1.991706313934264727e-01,1.032401876848659389e-01,-1.392292225465681099e-01,-2.573769322082897770e-01 --2.365500867481928893e-01,-2.882697181199892489e-01,1.870462413268927579e-02,3.123314847933006955e-01,-1.785379221860150523e-01,-2.620626819754759973e-01,-1.335680157458384310e-01,6.717891508607608253e-02,-9.085066963483198754e-02,-6.554344870038303350e-02 -7.134202132377859273e-02,3.078481712498531628e-02,3.676960617998211722e-01,-4.372148762455418426e-03,1.825773262745455927e-01,-3.602444328216306696e-02,-1.305462273222839364e-01,6.325133697926907383e-02,2.284845903167492809e-02,1.813943850568317806e-01 --2.036121292893071366e-02,-3.142619518413359431e-02,-7.057387951297722228e-02,-3.212426316839919055e-02,-1.333403450390204525e-01,-4.290173490181348193e-02,8.144726830020809771e-02,6.951860368824913650e-02,2.310857100535866626e-01,1.643640418057101538e-01 --4.494358712990566967e-02,-8.381098939796007008e-02,5.585039387477649248e-02,9.349073094042398280e-02,-4.148446400739889961e-02,-2.271966867947378677e-01,1.164965341773331886e-01,-1.489054888468986371e-01,1.828198888111968318e-02,-1.253330759037772635e-02 -1.174485886256576572e-02,1.871862923440414939e-01,1.869800905400307023e-01,1.475135435476520041e-01,3.487327309591684577e-01,-8.075531082494548374e-02,-5.490566974763481239e-02,6.693169941538162915e-02,-6.657868205049911892e-02,-5.753564084435989351e-02 -3.540435546439159031e-01,9.799883325759614280e-03,-3.415790785183550060e-01,-1.596069478373152994e-01,1.046321772486082657e-01,8.214960553207252547e-02,3.174383744532797286e-02,3.673108366507741446e-02,-2.228283171016489095e-01,2.236729660172086798e-01 -7.908879265315697793e-02,1.056173691729681563e-01,-1.225984712485288508e-01,3.452599100424690731e-02,2.263175856748587678e-01,7.209894748504550033e-02,6.735185685735761707e-02,2.797405442112595522e-02,1.086462076787598763e-01,-9.525407972667455925e-02 --1.047538936926625287e-02,-2.035197426425463807e-01,4.146899650406307702e-02,2.132037546098831671e-01,1.850498989115796356e-01,3.755941130259579652e-02,2.809178713198516308e-01,5.339383417911759688e-02,2.288817980479154746e-02,8.112997281404138450e-02 -2.844937002629225817e-02,-5.576917528583905624e-03,-1.424582369180357466e-01,-2.106624435129897388e-02,-5.564091055486999893e-02,-1.191495376277207918e-01,5.941614686177779971e-03,-1.434047109196132375e-01,-1.667172935642340648e-01,-6.724920468473376267e-02 --2.651010312069623440e-02,-1.752677763399616284e-01,-1.808210581864507782e-01,-9.838386442528869458e-02,9.001532723491878496e-02,1.286355518885316795e-01,1.642453070463370246e-01,-3.123338511306213497e-02,-1.787111417596190521e-01,-3.559049574174898839e-02 -9.747590412046723551e-02,8.023771182677955083e-02,-4.335500350404396241e-02,2.468657521277872746e-01,1.317215783176759469e-01,-9.871658217557859050e-02,2.709271520186684948e-02,-6.092659889691063452e-02,1.531815724573990511e-01,2.589356068507616682e-01 diff --git a/tests/Y.csv b/tests/Y.csv deleted file mode 100644 index 468003d..0000000 --- a/tests/Y.csv +++ /dev/null @@ -1,50 +0,0 @@ -5.981823865387593253e-01 -9.205037786951145717e-01 -2.471950462023575767e-01 -8.302149645795311450e-01 -3.481518894602156911e-01 -1.021133394037474273e+00 -7.737332812607098376e-01 --1.072378967160714680e+00 --2.435746837075756510e-01 -1.740226263339641199e-01 -8.402225800803131417e-01 -7.504940266953664674e-01 --1.243144022380434421e+00 -1.501124988881830546e+00 --2.891958991875613894e-01 --3.132123608567724538e-01 -1.173545818815739494e+00 -5.085036448838163858e-01 -5.556170151317273431e-01 --3.381951833174929312e-01 --6.636571462865884508e-01 --1.066616503782338743e+00 --1.567776891895226454e-01 --2.086621657630242765e+00 --7.369246383379658427e-01 --1.479829646839075641e-01 -9.141209849808230592e-01 --4.535606299122550422e-01 --1.439446509501642879e-01 --1.298232476681334235e+00 -2.091428840290059821e+00 -5.383099610413618619e-01 -8.572788062341546445e-01 --2.508913668580619039e-01 -3.275009893336582323e-01 -3.278337436330956978e-01 --3.138873228756299261e-01 -6.287829585785361663e-01 --6.461561991866940913e-01 -1.159738714281874084e-01 -1.347361280586111265e+00 -2.804011720873073044e-02 -1.431756971602339057e+00 --1.370351105419743254e+00 -1.197179345676374851e+00 -9.454381529223232494e-01 -6.052977328571994553e-01 -8.951900192671614631e-01 --1.503900798080590295e+00 --1.866233032607558462e+00 diff --git a/tests/comparisons/lee_full.rds b/tests/comparisons/lee_full.rds index 6191396115b8bc090391d8dd8fd6a95f90225b16..054c277095cdafd4302b1a83249d982d297be34c 100644 GIT binary patch literal 21222 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�zx1(9y-TJqfi{lnIm9%D`meBL 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 VUrEQ?_It4N{{VR!ZaN8X008FttBC*r literal 23430 zcmV(hK={8OiwFP!000001MR&9RF_THFHCoLcSuO6AYkl4DU}cuMX^u;MFa&5q)|~3 zL6EXg0VxqlY3Blw5(EV4?(WXd_pEbsf9tu|^F8l*<9na?oU_;Zv#+VW_w1SZ&7S!O zW^^PZBxEGy{`=4G2QnrS5*mHn+n^PweT>FlO%uCDd-y9 zsrgYQ6%T6hk{`HK311E=yiq;3g2zo68Q~Z5gxu)hnO4W!G1(MoN+)Y(X3@aSBIk{7Cyhd3P@3c{ z>s}mNd3Pl7njAFPrDJkS5pVyg)V1x2|HPLX~Js22beWw$L z3Tx8F@45}ar&~CCL};K#VMk`ARWEMIdCdFc^HpeTkqGXmJB~Y91yZ@Cj^kTG&+ah2 zdyMnwcB==FR6;vV8Q*nMSzPRd{qiXbVPH%q`t~+Ah)8o(ey8yay8M^}C(nMv&6Wpp z`uEpDWB65jwTcBiUgYNq8X?-hHlJ_S6kJsQFvuA9LYukMYvITAv{C#X+80g-YBW-f)zL z$^jSMZT&vK{UL5iIbACgdks6-$R$2#sKh<=GXDMBcyP6ek)`^13%nt*B$!-i0cF49 zMpj%;;a&ypmErM&IB!DP|0aJpZdqr!xYP9wq)b0o+J7n?*VnDzwz_Z%+OH@m?eQPN zjrRKX&if2uYMb_AchgEsyr#|u_TKF3lsVD>4i z@^b9pALYc>RT|N(Y+*#TkGGlqgWYER>Emnk~yeqA{WJ*P@6 zmBsJF2&r&VX~4iA^`ZAzK$HvVx4-m<7|bzftk|=e9^-edp4qwbN16~wO*reewiS2H z71_3sxFWH*mp{#hYjN40gVtvq$&rkjjk4Z@ueevJq+S0?3=*CEVr+F}91nk%4Tx>b zg|(;AIXhMQp&Y#YNE~+{!P^^bvFdjS5mEP+De_)e@(k5vDxg6^ulrZe@)4S>dUs+j}Y9OAu8;jv}tRiA%oIuo}u-gDL%pi!#R_;-Zql z9oD?ONJ3FkGjii1t|23D?8?ip%96kKwJ*@~>Eh5E7C$_tYoeT3#g1sge(tl4zKm-{_}*0h z65I6O@<-|6y|G7O@qq2Vw#f`U@)DFqzqG?>UmL>>prb-RFZ&9>)zyNdh56jb*#~SUxt~XZ^|{2Rd|N1aW<~S0w!Xi)^>*k z{yOHuKCToBBOY9D%_TYUGOyN<$$P9g%rrZUT7YXwIN1vv3ey?YJf$%38m+=&hV%>JD z7(_0#x5s@-@^^d^CfU8=44o!Nc}8Qd;dl3`O{ct^VX-Y;s_H7nllXE<192W!7nYPe zeAaQN-RxD4bM{CIMJkdtH4r4&=EqTaAsBWwoa6J0CMdR8TD5#Nhp64X`|eoE;bwml zjZy0kn0S^&ncKr>w=Ihhy1IOMiIfX)tmr4qy%Vp^Tn*v5%8$Pce>}R| z>?lD`E8AsKy9{*^6$R|%>KRe|O^DN`G`hjB8ikE6j}%jI$CNW;fPh_JQP>XYp@;Xh-|goc)aG zMuO)u0=;nG{D~{^fn?Ch?!j%|=Yh*VWnWgSm_;1V3XE<|)!?p=4|Y>gvLLc`V`uHz z-{bYl*W3x^Bk8ygWv$`bgxH$|LA$3NNIitU;G)>Y7!Gn}L zLak{KuRWcXskSVh`ut^&oroGton-NyZ9PbkUo|h96^?+ZDZBR{6dw|7Bo}#|IE|6u zD>s#vyN&QVyD;d)Y7Sy{dag5(Vnax;D9|L>WWf@@wwaadOH5EV=im776=v!$+UxV$ z;JMM7`sl;~B$|~`lKR4qASry9d9b|zdJhP8drZyX!7rh0rHvP0)>d?`tZ6@R=TN9l4d@#0ogw(w>i7huk07?8kZbqkPY^6zp%KSM`;b67 z)5~+dh+x$Dm9Ze!2Ez=wr^V8L65P#S#rB#+L;Kvk;~wmc7c6QQ+-^Mm9S_s?ImB=f z)M-chCQsQwru68+<5+$Z&*sU8io85dLqxjoJT>zk7^tRwvx`d$XML0z^SoyV1Bu~v zGx3tREL`0+PSFS&&F^-;e58rHbGNr>`iev6Eg{;848XlRBy}^V7$E&U>#e8bhw#9| zj+E6v7Wi4UviA-74E|ywGq zMMe#pLH2dPi)4cQ1?7aH_*tmw)PMU?B@EYuR{7|2n8Pq{&`m#o4%`tRw5$FK8Pshr zC7o-J!c}%Tl}uBIVI^m3tkqipCvM$y`N2jujGRBho$8;CE7rCegprFu^Wt$qmlPjd z>10HbzU??vjtJvc5rtDm6so;z4XlmDo^H9+0^LYKl7<8UF$b2m+0ryP4&M|b*ho7bo z3$stp;T{pei!3V3Fxt(^?vSO2f1NL5uC0lNy5YpGZ>|&geZaME=f|6%`D$%#zurAu zEoa>qg?M4@)sH<(S@ZaVVGw$Eo*YI_c}qXPOoLJDaU(h2P51pS&%qgPXTiiub7R!0Bf@R=&Pm#jRD%yRLPxLH$_m z^BPKB+%1{N*FZI@U?N=8glAeN~=2jXo}qHoF0dJ zFNBQGXZAsc&LQP`zkJ+Z$eaIUJAy*q`*wzR8F8=O>jJHWCLp@WV%Tk2acBSY?OK9| zVPSAX*_UyArFg?z8Uz>sdr!Y&CY2~hXQn>-A|H?suh zdY|IzJ8~DEEboI+2i|0dNpYOblS`#V?rl8%yC29>!|0_#dx&L zCeTzr1%5fM*L5!^;O_L0Rw=Szs9(M5Gj}5qdw%g;EBrAEJbYT(uWjD^)2RhUVv^7u08hJTSOXw~ex2ouUr&yYPl4TT2OtJzzBAj-*eDr|QS z5R|`c5)Ew$7|qQQ?06TAN9>#i2TOm)%a)(J-l`Vim0fbXoAtIJ8b*`s)N8l!>O$5z z1Ll)3FZb1AAf^kiT+l5!c##W69({a%TC0Vi6y%i-<*M_})qCt;KlZ zX#<7hE=%ZK9;cBx$%1D!=Q*xaaQ1bkL;pD42-Pz zu8m#By*?kKO$L{thwZMLrQHrZ60)5umfHpDoF0bW{OpWp72Y)!xthbTw(on2cUa(; z`w(?iY${Cn-hQ*qz6wvgcG3~?JhCcPz9^8Q&s`mG?LdWx+n&DO3a0Ab&=2DqM zFmc}X1Rr+_F6lk$LGSS%hHmiHc-e>IR*E`_rEmN&s;>XiSMUuU&)&D)AgdGd4Or?^ ztyFMrUHQ=gkJ~MHlyfh87yU8l z$=MQead;9Bx;I@mT-XC0?|e?y<%Ywn#HHFoo9i&_bK~tE{1|`#38AZ*UNHVtt~+|@ z18(-ZtDzlB34^-(3a%Oeo(}$1b%LQD(a}$A8@_4tSPl#CvGg5s{I1 zs4p~7T`-^3RVRWlGQCURbUYbJ!TFcAORU&bTy#F~Ka+VSZO*Dl<6FK|qA?VA;slAVO!F))8rsVa0+#BflOo8SCjPjlOcGRnxpijv8vH$5Cs2!4~ z@VcsndvvH?I;aUBO!%eo%h`sqi!&%%ZDe)7)L~)^L-6?CeSI+VT8w^1y#W8bGqaQs;kbF;Yly3`u351|d><#iRV~us zfdl7W?|eLsNDfh05^UmxoOt0Ew*+5AwW{mrsdjd=zu({QDa?M;g$tEB$F`<_MVt@1 zR>fQo5n@kcerdk@469#)oNn_TgppV6rVXZEoBgK}CHZi1ts7DGJRTwZ{h<7|ezIaC zY}&KLvzJXNpJ_F0{D!c#K-oj)HWKsRHA z$KZ$op5CV&oXyYzwI4%{Mkx#8F0VeXwHNzg0Ns9U7S5073M*UXpSQz|wCzyfrC_HcA6=>oqr^}EmZ#KY+8EF)`6A%aHNez`-p4Td}}`2