计算 p 值等于或小于 0.05 的行数
Count number of rows with a p-value equal to, or lower than 0.05
我是 R 编程新手。我面临着解决这个问题的问题:
数据集:
set.seed(897)
ME <- matrix(rnorm(24000),nrow=1000)
colnames(ME) <- c(paste("A",1:12,sep=""),paste("B",1:12,sep=""))
使用 apply() 计算 ME 中每一行的统计检验。您想询问 A 组和 B 组是来自同一总体还是来自均值不同的总体。您可以假设数据呈正态分布。
计算 p 值等于或小于 0.05 的行数。
我试过了
>P<- apply(ME , 1 , function(ME){ t.test(ME[1:1000])$p.value })
> length(which(P <= 0.05))
皱眉表情,但这是不正确的
如果列名没有特定的顺序,那么我们可以使用grep
来查找以A
开头的列名的索引,也可以是B
。
ind1 <- grep('^A', colnames(ME))
ind2 <- grep('^B', colnames(ME))
然后我们使用 apply
和 MARGIN=1
按行执行 t.test
pval <- apply(ME, 1, FUN=function(x) t.test(x[ind1], x[ind2])$p.value)
head(pval)
#[1] 0.4987050 0.0303736 0.7143174 0.2955703 0.5082427 0.2109010
我们通过与0.05比较得到一个逻辑索引
v1 <- pval <= 0.05
获取 TRUE
值的 sum
以查找 p.value
小于 0.05
的行数
sum(v1)
#[1] 55
我是 R 编程新手。我面临着解决这个问题的问题:
数据集:
set.seed(897)
ME <- matrix(rnorm(24000),nrow=1000)
colnames(ME) <- c(paste("A",1:12,sep=""),paste("B",1:12,sep=""))
使用 apply() 计算 ME 中每一行的统计检验。您想询问 A 组和 B 组是来自同一总体还是来自均值不同的总体。您可以假设数据呈正态分布。 计算 p 值等于或小于 0.05 的行数。
我试过了
>P<- apply(ME , 1 , function(ME){ t.test(ME[1:1000])$p.value })
> length(which(P <= 0.05))
皱眉表情,但这是不正确的
如果列名没有特定的顺序,那么我们可以使用grep
来查找以A
开头的列名的索引,也可以是B
。
ind1 <- grep('^A', colnames(ME))
ind2 <- grep('^B', colnames(ME))
然后我们使用 apply
和 MARGIN=1
t.test
pval <- apply(ME, 1, FUN=function(x) t.test(x[ind1], x[ind2])$p.value)
head(pval)
#[1] 0.4987050 0.0303736 0.7143174 0.2955703 0.5082427 0.2109010
我们通过与0.05比较得到一个逻辑索引
v1 <- pval <= 0.05
获取 TRUE
值的 sum
以查找 p.value
小于 0.05
sum(v1)
#[1] 55