|
1 | | -ols_step_forward <- function(model, metric = c("aic", "sbic", "sbc", "rsq", "adjrsq"), include = NULL, exclude = NULL, progress = FALSE, details = FALSE, ...) { |
| 1 | +ols_step_forward <- function(model, metric = c("aic", "sbic", "sbc", "rsq", "adjrsq"), include = NULL, exclude = NULL, progress = FALSE, details = FALSE, steps = NULL, ...) { |
2 | 2 |
|
3 | 3 | if (details) { |
4 | 4 | progress <- FALSE |
@@ -110,6 +110,10 @@ ols_step_forward <- function(model, metric = c("aic", "sbic", "sbc", "rsq", "adj |
110 | 110 | } |
111 | 111 | } |
112 | 112 |
|
| 113 | + if (!is.null(steps)) { |
| 114 | + mlen_p <- steps |
| 115 | + } |
| 116 | + |
113 | 117 | while (step < mlen_p) { |
114 | 118 |
|
115 | 119 | aics <- c() |
@@ -239,7 +243,7 @@ ols_step_forward <- function(model, metric = c("aic", "sbic", "sbc", "rsq", "adj |
239 | 243 | return(out) |
240 | 244 | } |
241 | 245 |
|
242 | | -ols_step_backward <- function(model, metric = c("aic", "sbic", "sbc", "rsq", "adjrsq"), include = NULL, exclude = NULL, progress = FALSE, details = FALSE, ...) { |
| 246 | +ols_step_backward <- function(model, metric = c("aic", "sbic", "sbc", "rsq", "adjrsq"), include = NULL, exclude = NULL, progress = FALSE, details = FALSE, steps = NULL, ...) { |
243 | 247 |
|
244 | 248 | if (details) { |
245 | 249 | progress <- FALSE |
@@ -400,6 +404,15 @@ ols_step_backward <- function(model, metric = c("aic", "sbic", "sbc", "rsq", "ad |
400 | 404 | ols_stepwise_details(step, rpred, preds, response, base_metric, "removed", criteria) |
401 | 405 | ols_stepwise_metrics(da2, criteria, da2$predictors, aics, bics, sbics, rsq, arsq, "remove") |
402 | 406 | } |
| 407 | + |
| 408 | + if (!is.null(steps)) { |
| 409 | + if (step == steps) { |
| 410 | + end <- TRUE |
| 411 | + if (progress || details) { |
| 412 | + ols_stepwise_break("backward") |
| 413 | + } |
| 414 | + } |
| 415 | + } |
403 | 416 | } else { |
404 | 417 | end <- TRUE |
405 | 418 | if (progress || details) { |
@@ -440,7 +453,7 @@ ols_step_backward <- function(model, metric = c("aic", "sbic", "sbc", "rsq", "ad |
440 | 453 | return(out) |
441 | 454 | } |
442 | 455 |
|
443 | | -ols_step_both <- function(model, metric = c("aic", "sbic", "sbc", "rsq", "adjrsq"), include = NULL, exclude = NULL, progress = FALSE, details = FALSE, ...) { |
| 456 | +ols_step_both <- function(model, metric = c("aic", "sbic", "sbc", "rsq", "adjrsq"), include = NULL, exclude = NULL, progress = FALSE, details = FALSE, steps = NULL, ...) { |
444 | 457 |
|
445 | 458 | if (details) { |
446 | 459 | progress <- FALSE |
@@ -494,6 +507,10 @@ ols_step_both <- function(model, metric = c("aic", "sbic", "sbc", "rsq", "adjrsq |
494 | 507 | if (progress) { |
495 | 508 | ols_progress_init("both") |
496 | 509 | } |
| 510 | + |
| 511 | + if (!is.null(steps)) { |
| 512 | + mlen_p <- steps |
| 513 | + } |
497 | 514 |
|
498 | 515 | while (step < mlen_p) { |
499 | 516 |
|
|
0 commit comments