假设我有一项临床试验,其中有32只小鼠感染了一种疾病。我用他的治疗方法治疗了16个,并将其他16个作为对照。在进行实验之前,我正在进行模拟。我将从统一(0,1)分布中绘制32个观测值。我想计算一下我达到p值的<模拟结束后0.01。我觉得自己几乎就在那里,但我不知道怎么把它放在一起:
mysite
答案 0 :(得分:2)
此解决方案不是最优雅的,但使用magrittr
和dplyr
进行数据处理。首先,我创建了一个矩阵来保存模拟数据:
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