Skip to content

Commit f64ec99

Browse files
feat: closes #214
1 parent 75537ce commit f64ec99

File tree

1 file changed

+20
-3
lines changed

1 file changed

+20
-3
lines changed

R/ols-step.R

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
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, ...) {
22

33
if (details) {
44
progress <- FALSE
@@ -110,6 +110,10 @@ ols_step_forward <- function(model, metric = c("aic", "sbic", "sbc", "rsq", "adj
110110
}
111111
}
112112

113+
if (!is.null(steps)) {
114+
mlen_p <- steps
115+
}
116+
113117
while (step < mlen_p) {
114118

115119
aics <- c()
@@ -239,7 +243,7 @@ ols_step_forward <- function(model, metric = c("aic", "sbic", "sbc", "rsq", "adj
239243
return(out)
240244
}
241245

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, ...) {
243247

244248
if (details) {
245249
progress <- FALSE
@@ -400,6 +404,15 @@ ols_step_backward <- function(model, metric = c("aic", "sbic", "sbc", "rsq", "ad
400404
ols_stepwise_details(step, rpred, preds, response, base_metric, "removed", criteria)
401405
ols_stepwise_metrics(da2, criteria, da2$predictors, aics, bics, sbics, rsq, arsq, "remove")
402406
}
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+
}
403416
} else {
404417
end <- TRUE
405418
if (progress || details) {
@@ -440,7 +453,7 @@ ols_step_backward <- function(model, metric = c("aic", "sbic", "sbc", "rsq", "ad
440453
return(out)
441454
}
442455

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, ...) {
444457

445458
if (details) {
446459
progress <- FALSE
@@ -494,6 +507,10 @@ ols_step_both <- function(model, metric = c("aic", "sbic", "sbc", "rsq", "adjrsq
494507
if (progress) {
495508
ols_progress_init("both")
496509
}
510+
511+
if (!is.null(steps)) {
512+
mlen_p <- steps
513+
}
497514

498515
while (step < mlen_p) {
499516

0 commit comments

Comments
 (0)