【问题标题】:Perform model selection with step function and write outcome into 0/1 vector (R)使用阶跃函数执行模型选择并将结果写入 0/1 向量 (R)
【发布时间】:2015-07-02 23:22:40
【问题描述】:

我正在尝试编写一个在 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 中提取变量名并创建向量。

【问题讨论】:

  • 显示您的实际代码以及示例输入(并考虑同时使用r 标签标记您的问题)
  • 我无法显示我的实际输入,但我会花点时间准备一个模拟示例。
  • 而在这一边,我们无法通过占卜来猜测您的输入和您的代码来了解您卡在哪里:D
  • @Tensibai 查看更新

标签: r call modeling glm names


【解决方案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

【讨论】:

  • 你需要和str一起学习垃圾箱潜水。看看 Hadley Wickhams 的书“Advanced R”,该书可在线获得。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-22
  • 2021-08-21
  • 2014-10-26
  • 1970-01-01
  • 2020-12-11
  • 2018-02-14
  • 1970-01-01
相关资源
最近更新 更多