我正在尝试编写一个在R中执行以下操作的算法:
dat
上使用step
函数从一组J候选变量中执行j {协变量的glm
模型选择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
中提取变量名并创建向量。
答案 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")
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