目前我编写的代码如下:这是模拟的,所以没有实际数据。我有两个问题:
- 我有两个载体(治疗和控制),但我需要把它们变成一个单一的载体,我做了(vect),然而,我需要另一个载体是编码治疗与控制。我怎么做呢?
- 对于我的模型(模型),我需要拟合线性模型测试治疗效果,但我不知道如何将该效果添加到我所拥有的效果中,或者它是在我所拥有的代码中测试的?
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)
}
谢谢!
像这样?(请注意,对连续数据运行泊松回归会得到一堆警告。
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])
})
)
第一个创建字符串,第二个将它们合并。在您的示例中,它们的长度都是3,因此在rep("trt",3)
中重复为3。treat_lab = c(rep("control", 3),rep("trt", 3))
treatment <- cbind(treat_lab,c(treat,cont))