【问题标题】:Iterated models in RR中的迭代模型
【发布时间】:2018-05-06 08:59:12
【问题描述】:

假设我想创建 n 个随机变量,然后创建 n-1 个模型,对响应中的每个变量进行回归。我可以这样做:

x1 <- rnorm(1000, 0, 1)
x2 <- rnorm(1000, 0, 1)
x3 <- rnorm(1000, 0, 1)
x4 <- rnorm(1000, 0, 1)
x5 <- rnorm(1000, 0, 1)
x6 <- rnorm(1000, 0, 1)
x7 <- rnorm(1000, 0, 1)
x8 <- rnorm(1000, 0, 1)
y <- rnorm(1000, 0, 1)

model1 <- lm(y ~ x1)
model2 <- lm(y ~ x2)
model3 <- lm(y ~ x3)
model4 <- lm(y ~ x4)
model5 <- lm(y ~ x5)
model6 <- lm(y ~ x6)
model7 <- lm(y ~ x7)
model8 <- lm(y ~ x8)

summary model1

等等。显然,这很笨重,需要大量记账,并且为拼写错误打开了大门。

我认为有一种更直接的方法可以做到这一点,而且不会有太多出错的余地?

编辑:解决 cmets 我对缺乏明确性表示歉意。这里的细节和数据生成过程对我来说并不是特别重要。我只包含了玩具数据,因为我注意到人们通常会在有问题时包含玩具数据,我认为这是惯例。

我真正在寻找的是解决这个排序问题的过程。在我的工作中,拥有大型数据集并希望生成大量模型来比较不同的变量对是很常见的。我一直在使用上面描述的过程,我手工写出每个模型,或者在 excel 中执行某种命令连接,然后剪切粘贴。它只会产生非常低效的代码,我认为在 R 中必须有一种更简洁的方法来处理这个问题,因为这似乎是人们经常要做的事情。

【问题讨论】:

  • 您的预期输出是什么?你想要模型摘要吗?你想要模型吗?你想要随机数据吗?生成“随机变量”需要多大的灵活性?在这一点上,你的问题还很不清楚
  • 取决于你想创建多少数据并使用回归运行,如果比较小,你可以使用for循环。例如,要创建变量:for (i in 1:8){ assign(paste0("X", i, sep=""), rnorm(1000, 0, 1)) }

标签: r loops variables iteration


【解决方案1】:

使用replicate 绘制样本并在每个样本上使用apply 来估计模型:

X <- replicate(n = 99, expr = rnorm(1000))
y <- rnorm(1000)
apply(X, 2, function(z) { lm(y~z) })

【讨论】:

    【解决方案2】:

    使用复制

    y <- rnorm(1000, 0, 1)
    
    f = function(y){lm(y~rnorm(1000, 0, 1))}
    
    models = replicate(10, f(y), simplify = FALSE)
    
    summary(models[[1]])
    

    【讨论】:

      【解决方案3】:

      你可以的

      result_list <- lapply(1:8,function(i){
          summary(lm(y ~ get(paste0("x",i))))
      })
      

      这将为您提供一个包含所有结果的列表。

      如果您不需要将输入作为单个变量,您可以将它们放入矩阵中:

      y <- rnorm(1000)
      x_mat <- sapply(1:8,rnorm, n = 1000)
      apply(x_mat,2,function(x){
          summary(lm(y ~ x))
      })
      

      这将再次生成一个包含结果的列表

      【讨论】:

      • 不客气!如果有帮助,请随时accept and upvote
      • 我试过了,但不幸的是我(还)没有投票的声誉。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-20
      相关资源
      最近更新 更多