【问题标题】:Vectors for simulations用于模拟的向量
【发布时间】:2021-12-07 01:36:35
【问题描述】:

我目前的代码写在下面。这是模拟,所以没有实际数据。我有两个问题:

  1. 我有两个向量(treat 和 cont),但我需要将它们放入我所做的一个向量中(vect),但是,我需要另一个向量来编码治疗与控制。我该怎么做?
  2. 对于我的模型(模型),我需要拟合一个线性模型来测试治疗效果,但我不知道如何将该效果添加到我所拥有的或者它在我拥有的代码中测试的内容中?
    library(car)
    
    treat=rnorm(3, mean = 460, sd = 110)
    treat
    cont=rnorm(3, mean = 415, sd = 110)
    cont
    vect=c(treat, cont)
    vect
    
    nsims = 1000
    
    p.value.saved = coeff.saved = vector()
    
    for (i in 1:nsims) {
      treat=rnorm(3, mean = 460, sd = 110)
      cont=rnorm(3, mean = 415, sd = 110)
      vect=c(treat, cont)
      
      model = glm(treat ~ cont, family = poisson)
      
      p.value.saved[i] = Anova(model)$P[1]
      coeff.saved[i] =  coef(model)
    }

谢谢!

【问题讨论】:

  • 代码是成对比较,你的问题听起来像是要建模vect ~ is_treat,即不成对,你需要两者中的哪一个?
  • 我认为你是对的,第二个。我想我希望 vect 作为响应变量,但我不希望将其视为编码处理与控制的向量的函数。但这就是我不知道该怎么做。因为 vect 和 Treat 和我现在的长度不一样。
  • 基本上我想要一个包含treat和cont的向量,然后是第二个向量来编码treat vs cont。
  • 第二个向量应该编码每个值来自两个处理中的哪一个。

标签: r vector simulation


【解决方案1】:

这样的? (请注意,在对连续数据运行泊松回归时会收到一堆警告。

n <- 3
nsims <- 10
do.call(
  rbind, 
  lapply(1:nsims, function(.) {
    treat <- rnorm(n, mean = 460, sd = 110)
    cont <- rnorm(n, mean = 415, sd = 110)

    # Instead of vect
    df <- data.frame(
      y = c(treat, cont), 
      x = rep(c("treat", "cont"), each = n)
    )

    # Model the values vs treatment indicator
    model <- glm(y ~ x, data = df, family = poisson)

    # Extract the model's p-value and coefficient of treatment.
    data.frame(p = car::Anova(model)$P, coef = coef(model)[2])
  })
)

【讨论】:

  • 这对我来说似乎是正确的! “rerun”应该是“return”吗?
  • 我没用过“rerun”功能所以不太熟悉。
  • 尝试运行代码时找不到重新运行。
  • 啊,抱歉,rerun 是一个purrr 函数。这也可以用 lapply 来完成,看我的编辑
  • 基本类似物是replicate,所以你可以do.call(rbind, replicate(nsims, {&lt;simulation}, simplify = FALSE))
【解决方案2】:

第一个创建字符串,第二个将组合它们。在您的示例中,它们的长度均为 3,因此 rep("trt",3) 中的 3 次重复

treat_lab = c(rep("control", 3),rep("trt", 3))
treatment <- cbind(treat_lab,c(treat,cont))

【讨论】:

  • 那么第二位(治疗)只是一个结合了治疗和继续的向量?那么我将如何创建另一个矢量编码处理 vs 续?对于我的线性模型的第二部分。所以它会是 glm(治疗 ~ ____)
  • 第二个向量需要编码每个值来自两个处理中的哪一个,我相信这将是空白。
猜你喜欢
  • 1970-01-01
  • 2014-10-25
  • 1970-01-01
  • 2020-06-15
  • 1970-01-01
  • 1970-01-01
  • 2022-01-12
  • 2012-04-05
  • 2015-12-09
相关资源
最近更新 更多