我有多个人,我为他们收集了一些参数的两个时间序列。对于每个人,我计算了这些时间序列是否相关。所以,如果我有 20 个人,结果我有 20 个 rho 和 20 个 p 值。然后,我想将这些值分组为一组 p 值。首先,我尝试了 Fisher 的方法(维基百科、MRC 维基)。
这是我使用的 MATLAB 代码示例,为了重现性,我也提供了我的输入值:
pvals = [0.265337997085488
0.00408191031608826
3.39739013503740e-05
0.254982443552454
0.165041294656449
0.416553830442594
0.854810976365062
0.555604221080550
0.256959004076953
0.371337447007835
0.705098835272764
0.122815481253417
0.562862850057724
0.781570743043581
0.248570986138274
0.448488806357779
0.179768419684463
0.560862182877956
0.169198118710575
0.681402534954493
0.723443480957150];
%// pvals is vector of (21,1) shape which holds individual p-values
chi_vals = -2.*log(pvals);
group_pval = 1 - chi2cdf(sum(chi_vals),2*length(pvals));
nsig = sum(pvals < 0.05)
我会觉得这已经足够了,但有些事情真的让我担心——我得到一个 0.0054 的组 p 值,而在我的个人 p 值中只有 2 个值是“显着”的. 这没有意义,对吧?为什么我的组 p 值这么低?我是否在计算或假设方面犯了错误?
