P-Value
為什麼我使用 Fisher 方法獲得的組合 p 值如此之低?
我有多個人,我為他們收集了一些參數的兩個時間序列。對於每個人,我計算了這些時間序列是否相關。所以,如果我有 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 值這麼低?**我是否在計算或假設方面犯了錯誤?
您的 p 值看起來是正確的。
考慮如果原假設為真,則 p 值應該是一致的;當你有很多它們時,你實際上是在檢查你的 p 值集合是否與均勻性一致,而不是它們比你對製服的預期要小(Fisher 的方法測量這種程度太小)一種特殊的方式)。
您的值偏低(例如,考慮 7 個值低於 0.25,但只有 2 個值高於 0.75)。Fisher 的方法可以發現您的 p 值往往太小。
如果 p 值來自製服,它們應該靠近該圖中的紅線(F 值是製服分數;本質上 ecdf 向下移動了(相當於該點前後 ecdf 的平均值)):
[
我們可以看到大的 p 值往往太小(它們位於靠近圖頂部的線的左側)。因此,Fisher p 值非常小。