引导测试相关系数之间的差异

机器算法验证 相关性 t检验 引导程序 重采样 神经科学
2022-03-13 17:57:47

我有两个相关系数(),在同一个样本(20 个受试者)中获得。我的目标是测试它,它们有很大的不同。 是条件 A 中神经生理参数和行为参数之间的相关性;是条件 B 中相同的神经生理参数和相同的行为参数之间的相关性。r1r2r1r2

我正在考虑对每个条件应用一个引导程序,以获得两个相关分布。然后,我可以简单地运行两个样本的 t 检验,以测试显着差异。

我的问题:

  1. 这个程序看起来是否合理以达到我的目的?(测试是否显着不同)r1r2
  2. 有没有办法决定迭代次数,还是完全任意的?(例如..我可以用 1000 吗?)
2个回答

我认为在您的情况下,最好使用置换测试,您可以在其中计算每个条件的置换相关性,然后计算它们的差异。例如,您可以将条件 A 下的两个变量和条件 B 下的两个变量逐行连接,因此您最终得到一个矩阵 (20*2 2)。然后您在这 40 行中进行置换并获得 p 值,如以下 R 代码所述:×

# fix the # permutations
nperm <- 5000 # needs to be large enough but depends on the samp. size

# set a void vector for the dif of correl.
cor.dif <- rep(NA, nperm)

# simulate some fake data
n1 <- n2 <- 10
x1a <- runif(n1)
x2a <- rnorm(n2)
x1b <- rnorm(n1)
x2b <- runif(n2)

X1 <- cbind(x1a, x2a) # the two measurements in cond. A
X2 <- cbind(x1b, x2b) # the two measurements in cond. B

# concatenate row-wise X1 and X2
X <- rbind(X1, X2) # this is the matrix of 20*2 x 2

# now start permuting
for(i in 1:nperm){

  # sample an index
  idx <- sample(na+nb,na, replace = FALSE)

  # calculate the permuted correlation in the first condition
  cor.1 <- cor(X[idx,1],X[idx,2])

  # calculate the permuted correlation in the second condition
  cor.2 <- cor(X[-ida,1],X[-idx,2])

  # store the dif. of correlations
  cor.dif[i] <- cor.1-cor.2
}

# compute the empirical/actual difference of correlations
emp.cor.dif <- cor(x1a, x2a)-cor(x1a, x2a)

# see at the plot
hist(cor.dif)
abline(v = emp.cor.dif)

# compute the Monte Carlo approximation of the permutation p-value
2*min(mean(cor.dif>emp.cor.dif), mean(cor.dif<emp.cor.dif))

如果您正在测试两种不同条件下行为参数对神经生理参数的影响。您可以测试两种不同条件和行为的相互作用是否对神经生理学产生影响。如果添加的交互项很重要,则可以说神经生理值与两种不同的情况相关。