【发布时间】:2019-10-15 11:26:39
【问题描述】:
我正在尝试在 R 中进行自举相关。 我有两个变量 Var1 和 Var2,我想获得 Pearson 相关性的引导 p.value。
my variables look like this:
x y
1 .6080522 1.707642
2 1.4307273 1.772616
3 0.8226198 1.768537
4 1.7714221 1.265276
5 1.5986213 1.855719
6 1.0000000 1.606106
7 1.1678940 1.671457
8 0.6630012 1.608428
9 1.0842423 1.670619
10 0.5592512 1.107783
11 1.6442616 1.492832
12 0.8326965 1.643923
13 1.1696954 1.763181
14 0.7484543 1.762921
15 1.0842423 1.591566
16 0.9014748 1.718669
17 0.7604917 1.782863
18 0.8566499 1.796216
19 1.4307273 1.913675
20 1.7579695 1.903155
到目前为止,我有这个:
data = as.data.frame(data)
x = data$Var1
y = data$Var2
dat = data.frame(x,y)
library(boot)
set.seed(1)
bootCorTest3 <- function(data, i){
d <- data[i, ]
results <- cor.test(d$x, d$y, method='pearson')
c(est = results$estimate, stat = results$statistic, param = results$parameter, p.value = results$p.value, CI = results$conf.int)
}
b3 <- boot(dat, bootCorTest3, R = 1000)
b3
# Original (non-bootstrap) statistics with label
b3$t0
colMeans(b3$t)
boot.ci(b3, type = c("norm", "basic", "perc", "bca")) #bootstrapped CI.
引导的 p 值应该是我使用 colMeans(b3$t) 得到的值,对吧?
colMeans(b3$t) 给了我这个:
est.cor stat.t param.df p.value CI1 CI2
0.28495324 2.13981008 48.00000000 0.14418623 0.01438146 0.51726022
似乎一切正常。问题是我在不同的软件上运行了相同的统计数据,结果大相径庭。我在这里得到的 p 值比另一个要高得多。 我认为我在这里可能做错了什么,因为我在 R 方面并不强。
谁能给我一些关于这段代码的反馈?难道我做错了什么?你会得到 Pearson 相关性的引导 p.value 吗?
感谢您的宝贵时间。
【问题讨论】:
-
自举复制在 t 矩阵的 行 中。
-
是的,好的。所以如果我这样做 (mean(b3$t) (or colMeans(b3$t)) 我应该得到引导的 p.value,对吧?
-
我会想到一些使用 rowMeans 或仅仅意味着的东西。
-
rowMeans 应该是逐行的平均值。在 b3$t 我得到 1 列 1000 行。每行一个p.value(对吗?)。所以,如果我做 rowMeans(b3$t) 我会得到 1000 个结果。我认为 colMeans 或只是意味着有效,因为我只得到一个值,如果我在 excel 中导出并执行平均值,我会得到相同的值。问题是这个值和其他软件还是有很大区别的……
-
“大不相同”。或许你可以更具体一点?
标签: r correlation statistics-bootstrap