【问题标题】:How should I store data in a matrix from my simulation study?我应该如何将模拟研究中的数据存储在矩阵中?
【发布时间】:2026-02-09 17:05:02
【问题描述】:

我目前正在做一个蒙特卡罗模拟,我正在测试哪种模型最适合变量选择。这样做时,我需要将来自每个模拟的信息存储在一个矩阵中,以便以后进行分析。作为 R 的新手,我在执行此任务时遇到了困难。 以下是相关代码:

iter <- 2000

results.matrix <- matrix(ncol = 12, nrow = iter )

for (i in iter) {
  Ylink <- (1 * (age - mean(age)) + (1.5 * (gender == "1")) + 1.2 * (inkomst - mean(inkomst)))
  Yprob <- 1/(1 + exp(-Ylink))
  Y <- rbinom(2000, size = 1, prob = Yprob)
  df <- data.frame(x1, x2, x3, x4, x5, x6, x7, age, gender, inkomst, Y)
  glm0 <- glm(Y ~ x1 + x2 + x3 + x4 + x5 + x6 + x7 + age + gender + inkomst, data = df)
  summary(glm0)
  results.matrix[,1] <- summary(glm0)$coef[, "Pr(>|t|)"]
}

尝试出现以下错误时:“要替换的项目数不是替换长度的倍数”

【问题讨论】:

    标签: r statistics simulation logistic-regression montecarlo


    【解决方案1】:

    试试这个:

    iter <- 2000
    
    results.matrix <- matrix(ncol = 12, nrow = iter )
    
    for (i in seq_len(iter)) {
      Ylink <- (1 * (age - mean(age)) + (1.5 * (gender == "1")) + 1.2 * (inkomst - mean(inkomst)))
      Yprob <- 1/(1 + exp(-Ylink))
      Y <- rbinom(2000, size = 1, prob = Yprob)
      df <- data.frame(x1, x2, x3, x4, x5, x6, x7, age, gender, inkomst, Y)
      glm0 <- glm(Y ~ x1 + x2 + x3 + x4 + x5 + x6 + x7 + age + gender + inkomst, data = df)
      results.matrix[i,] <- summary(glm0)$coef[, "Pr(>|t|)"]
    }
    

    【讨论】:

    • 我试过了,出现以下错误代码:results.matrix[i, ] |t|)"] 中的错误:数字要替换的项目数不是替换长度的倍数
    • @kevinsingh13 如果您创建一个小的可重现示例以及预期的输出,这将更容易提供帮助。阅读how to give a reproducible example
    最近更新 更多