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

时间:2015-07-02 23:22:41

标签: r call modeling glm names

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

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

    在以下示例中,三个变量(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中提取变量名并创建向量。

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")

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