如何计算模拟中重要p值的数量?

时间:2018-06-15 00:14:55

标签: r loops simulation

假设我有一项临床试验,其中有32只小鼠感染了一种疾病。我用他的治疗方法治疗了16个,并将其他16个作为对照。在进行实验之前,我正在进行模拟。我将从统一(0,1)分布中绘制32个观测值。我想计算一下我达到p值的<模拟结束后0.01。我觉得自己几乎就在那里,但我不知道怎么把它放在一起:

mysite

1 个答案:

答案 0 :(得分:2)

此解决方案不是最优雅的,但使用magrittrdplyr进行数据处理。首先,我创建了一个矩阵来保存模拟数据:

library(magrittr)
library(dplyr)

n <- 100
control.years <- as.data.frame(matrix(runif(16*n, min=0, max=1),ncol=16))
treat.years <- as.data.frame(matrix(runif(16*n, min=0, max=1),ncol=16))

然后我创建了一个数据结构来捕获所有t检验的p值:

for (i in 1:n) { p[i] <- t.test(control.years[i,],treat.years[i,])$p.value }

您可以过滤掉您喜欢的范围内的p值:

> as.data.frame(p) %>% filter(p<0.05)
       p
1 0.03173299
2 0.01652114
3 0.00471807

或者您可以创建一个新变量来告诉您是否重要:

> as.data.frame(p) %>% mutate(sig=ifelse(p<0.05,1,0)) 
             p sig
1   0.65233254   0
2   0.50731231   0
3   0.11657045   0
...
29  0.03173299   1

或者你可以找出有多少重要的p值:

> z <- as.data.frame(p) %>% mutate(sig=ifelse(p<0.05,1,0)) 
> table(z$sig)

 0  1 
97  3