Description Usage Arguments Details Value Examples
same as step()
in R, but able to check marginal effects.
1 2 3 |
model |
an output of |
scope, trace, steps, k |
see |
data |
a data.frame used in regression. |
family |
used as the argument for |
IC_method |
either 'AIC' or 'BIC', will overwrite the |
test_suit |
used to specify the correct marginal effect you want to check.
It is a list with names as raw variable and values as arguments of the function |
STOP |
whether stop and wait your response for each step. |
For each step of regression, you can first choose the models with correct marginal effect and then choose the one with highest AIC/BIC within them
a stepwise-selected model. If test_suit
is specified, then the returned model is the one with highest AIC/BIC within those that get
correct marginal impact.
The silde effect is to print a data.frame containing diagnostic informations for each step. The 'correct_effect_ind' column is a boolean vector to show whether the model has correct marginal effect or not.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | # starting model:
# can have a dirty formula like below
set.seed(413)
traing_data = ggplot2::diamonds[runif(nrow(ggplot2::diamonds))<0.05,]
nrow(traing_data)
diamond_lm3 = lm(formula = price ~ cut + carat - cut , data = traing_data)
scope = list(lower = price ~ 1,
upper = price ~ I(carat^2) + I(carat^3) + I(carat * depth) + depth + carat)
# traditional stepwise regression with no marginal effect check
model1 = stepwise2(model = diamond_lm3, scope = scope,k = 2,
trace = TRUE, data = traing_data, STOP = TRUE)
model1
# result is exactly same using the default step() function.
model2 = suppressWarnings(step(diamond_lm3,scope = scope, k = 2))
model2
#__ How to Specify the Correct Marginal Effects in Stepwise Regression __
# this test_suit means we will check the marginal effect of both 'carat' and 'depth'
# for 'carat', we will only focus on 4 coeff vars :
# "I(carat^3)","I(carat*depth)","I(carat^2)","carat"
# for 'depth', as we do not specify any particular coeff vars there,
# we will check all coeff var related to 'depth'
test_suit = list(
carat = list(
# the list name must be the raw var
focus_var_raw = "carat",
# must specify the focus_var_raw (see deleting_wrongeffect() ) as the raw var
focus_var_coeff = c("I(carat^3)","I(carat*depth)",
"I(carat^2)","carat") ,
# optional # If not defined, then we to check all coeffs related to the raw var
focus_value =list(carat = seq(0.5,6,0.1)),
Monoton_to_Match = 1 # optional. Default is 1
),
depth = list(
focus_var_raw = "depth",
Monoton_to_Match = 1
)
)
model3 = stepwise2(model = diamond_lm3, scope = scope, trace = TRUE,
data = traing_data,
STOP = FALSE, test_suit = test_suit)
# see the difference from model1
effect(model3,focus_var_raw = "carat", focus_value =list(carat = seq(0.5,6,0.1)))
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.