使用阶跃函数执行模型选择并将结果写入 0/1 向量 (R)

Perform model selection with step function and write outcome into 0/1 vector (R)

我正在尝试编写一个在 R 中执行以下操作的算法:

  1. 在数据集上dat使用step函数执行glm从一组J个候选变量中选择j个协变量的模型
  2. 取 j 个变量的最终 call 并与完整向量 J 进行比较。将结果写入 1xJ 向量,其中 1 表示变量在最终 call 中,否则为 0。

示例:

在以下示例中,三个变量 (x,y,z) 是预测变量 dep 的候选对象。 Step用于变量选择。我的目标是最终得到一个向量,指示哪些输入变量最终出现在最终模型中,所以在这里,c(1,0,1).

n=1000
x <- rnorm(n,0,1)
y <- rnorm(n,0,1)
z <- rnorm(n,0,1)

dep <- 1 + 2 * x + 3* z + rnorm(n,0,1)

m<-step(lm(dep~x+y+z),direction="backward")

我很难从最终 m$call 中提取变量名称并创建向量。

我认为这样做:

n=1000

x <- rnorm(n,0,1)
y <- rnorm(n,0,1)
z <- rnorm(n,0,1)

dep <- 1 + 2*x + 3*z + rnorm(n,0,1)

m<-step(lm(dep~x+y+z),direction="backward")

matt <- attributes(m$terms)
matt$term.labels
#[1] "x" "z"

v <- c("x","y","z")
as.integer(v %in% matt$term.labels)
#[1] 1 0 1