remove_vars combines lists of predictors that were not selected from multiple leading sets into a single set to remove, using either a liberal (union) rule or a conservative (progressive intersection) rule.

remove_vars(listnotselect, 
  method = c("conservative_begin", "conservative_end", "liberal"))

Arguments

listnotselect

A list of vectors, each containing names of the predictors not selected in the corresponding leading set.

method

Aggregation rule; one of "conservative_begin", "conservative_end", or "liberal". Referring to the sets (vectors included in listselect) of not-selected predictors:

"liberal"

Returns the union of all sets: unique(unlist(listnotselect)).

"conservative_begin"

Returns the last non-empty intersection when intersecting the first \(i=1,2,\dots\) sets in order (note that, the first set is assumed to be non-empty, because that will automatically be true if remove_vars is being called by S3VS or its family-specific engines). The procedure stops once the running intersection becomes empty and returns the previous (last non-empty) intersection. Order of listnotselect matters.

"conservative_end"

Returns the last non-empty intersection when intersecting the last \(i=1,2,\dots\) sets in order (if the last set is empty, the function finds the first non-empty set from the end, and then, starts the intersection process from that set). The procedure stops once the running intersection becomes empty and returns the previous (last non-empty) intersection. Order of listnotselect matters.

Details

The liberal rule favors inclusiveness (drop all predictors that were not selected in an iteration), whereas the conservative rule favors stability across earlier/latter leading sets (drop only predictors consistently absent in earlier/latter leading sets).

Value

Vector with names of the predictors that are not selected till the current S3VS iteration and to be removed from all future iterations.

Author

Nilotpal Sanyal <nsanyal@utep.edu>, Padmore N. Prempeh <pprempeh@albany.edu>

Examples

listselect <- list(
  c("V1","V2","V23"),
  c("V4","V2","V23"),
  c("V4","V5","V23")
)
remove_vars(listselect, method="liberal")
#> [1] "V1"  "V2"  "V23" "V4"  "V5"