从 R 中的 T 检验中查找 P 值分数
Finding P-value Fraction from T-test in R
给定来自完全相同正态分布的 500 个值的 2 个样本(均值为 10,标准差为 2),我 运行 t 检验 100,000 次:
replicate(100,000, (t.test(rnorm(500,10,5), rnorm(500,10,5))))
输出是这样的:
[1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
[50] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
[99] 0 0
[edit] 如果我删除逗号到 运行 它 100000 因为显然它不是以前,
结果是
[,98011] [,98012]
[,98013] [,98014]
[,98015] [,98016]
[,98017] [,98018]
[,98019] [,98020]
[,98021] [,98022]
[,98023] [,98024]
[,98025] [,98026]
我对这些输出有点困惑...
我现在如何找到 P 值低于 0.05 的情况的分数,当它只显示零时?
请原谅我早些时候的脑力失误(漫长的一天)。试试这个。
x <- replicate(100000, {
sample1 <- rnorm(500,10,5);
sample2 <- rnorm(500,10,5);
test <- t.test(sample1, sample2);
test$p.value
})
hist(x)
length(x[x < 0.05])/length(x)
[1] 0.04936
当您有逗号时,您将“000”复制 100 次(IE-t 测试上的额外代码将被忽略)。由于 000 == 0
,return 是一个零向量。
当你复制t.test(...)
100000次时,你得到t.test()
的return,这是一个列表。您似乎想要 t 检验的 p 值,而不是完整的对象...请参阅 ?t.test
sum(replicate(10^5, t.test(rnorm(500,10,5), rnorm(500,10,5))$p.value) < 0.05)
# or for the fraction
sum(replicate(10^5, t.test(rnorm(500,10,5), rnorm(500,10,5))$p.value) < 0.05) / 10^5
给定来自完全相同正态分布的 500 个值的 2 个样本(均值为 10,标准差为 2),我 运行 t 检验 100,000 次:
replicate(100,000, (t.test(rnorm(500,10,5), rnorm(500,10,5))))
输出是这样的:
[1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
[50] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
[99] 0 0
[edit] 如果我删除逗号到 运行 它 100000 因为显然它不是以前, 结果是
[,98011] [,98012]
[,98013] [,98014]
[,98015] [,98016]
[,98017] [,98018]
[,98019] [,98020]
[,98021] [,98022]
[,98023] [,98024]
[,98025] [,98026]
我对这些输出有点困惑...
我现在如何找到 P 值低于 0.05 的情况的分数,当它只显示零时?
请原谅我早些时候的脑力失误(漫长的一天)。试试这个。
x <- replicate(100000, {
sample1 <- rnorm(500,10,5);
sample2 <- rnorm(500,10,5);
test <- t.test(sample1, sample2);
test$p.value
})
hist(x)
length(x[x < 0.05])/length(x)
[1] 0.04936
当您有逗号时,您将“000”复制 100 次(IE-t 测试上的额外代码将被忽略)。由于 000 == 0
,return 是一个零向量。
当你复制t.test(...)
100000次时,你得到t.test()
的return,这是一个列表。您似乎想要 t 检验的 p 值,而不是完整的对象...请参阅 ?t.test
sum(replicate(10^5, t.test(rnorm(500,10,5), rnorm(500,10,5))$p.value) < 0.05)
# or for the fraction
sum(replicate(10^5, t.test(rnorm(500,10,5), rnorm(500,10,5))$p.value) < 0.05) / 10^5