效應量的計算——Cohen's d statistic

2022-01-10 Listenlii

在統計學中,效應量(effect size)是對現象量級的定量度量。其包括兩個變量之間的相關性,回歸中的回歸係數,平均差,甚至是發生某事的風險:如有多少人在心臟病發作後倖存下來。

效應量也是用抽樣誤差來估計的。大多數情況下效應量的絕對值越大,效應就越強,但是優勢率(odds ratio)這個指標除外。效應量是對統計檢驗的補充,可以評價統計的強度。

特別是在meta分析中,其目的是將多個效應量結合起來,因此效應量的標準誤差(S.E.)至關重要。

效果量的結果有助於解釋研究的實質意義,而不是統計意義的顯著性。

基於樣本的效應量不同於假設檢驗中使用的檢驗統計量,因為它們只是估計了關係的強度,而沒有指定一個顯著性水平來反映所觀察到的關係的大小是否可能是偶然的。效果量並不直接決定顯著性水平。
如果樣本量足夠大,非空統計比較總是會得到統計上顯著的結果,除非總體效應量恰好為零(即使效應量恰好為零,也會由第一類錯誤而顯示統計上的顯著性)。例如樣本量為1000,皮爾遜相關係數為0.01的樣本也會具有統計學意義。

標準的效應量包括r, Cohen's d和odds ratio。不標準的效應量包括組間均值或非標準化回歸係數的差異。以下情況要使用標準的效應量:
1.研究變量的度量沒有內在意義
2.綜合多項研究
3.綜合不同尺度的研究
4.群落中由於變化而產生的效應大小

目前已經有50~100種表徵效應量的方法;
如皮爾森相關的r值,r = 0.1,0.3,0.5分別被定義為small,medium,large的效應量。
本文主要關注的Cohen's d,d = 0.01,0.2,0.5,0.8,1.2,2.0分別被定義為very small,small,medium,large,very large和huge的效應量。


>install.packages("compute.es")
>library(compute.es)





>tes(t=1.74, n.1=30, n.2=31)
Mean Differences ES: 

 d [ 95 %CI] = 0.45 [ -0.07 , 0.96 ] 
  var(d) = 0.07 
  p-value(d) = 0.09 
  U3(d) = 67.21 % 
  CLES(d) = 62.37 % 
  Cliff's Delta = 0.25 

 g [ 95 %CI] = 0.44 [ -0.07 , 0.95 ] 
  var(g) = 0.07 
  p-value(g) = 0.09 
  U3(g) = 67 % 
  CLES(g) = 62.21 % 

 Correlation ES: 

 r [ 95 %CI] = 0.22 [ -0.04 , 0.45 ] 
  var(r) = 0.02 
  p-value(r) = 0.09 

 z [ 95 %CI] = 0.22 [ -0.04 , 0.49 ] 
  var(z) = 0.02 
  p-value(z) = 0.09 

 Odds Ratio ES: 

 OR [ 95 %CI] = 2.24 [ 0.88 , 5.75 ] 
  p-value(OR) = 0.09 

 Log OR [ 95 %CI] = 0.81 [ -0.13 , 1.75 ] 
  var(lOR) = 0.22 
  p-value(Log OR) = 0.09 

 Other: 

 NNT = 6.85 
 Total N = 61

#更加複雜一點,假設存在5個t檢驗:
>dat <- data.frame(id=1:5,t=rnorm(5, 2, .5), 
                  n.t=round(rnorm(5, 25),0), 
                  n.c=round(rnorm(5, 25),0))
  id        t n.t n.c
1  1 2.318254  25  24
2  2 1.943387  27  26
3  3 1.708333  25  26
4  4 1.631865  25  26
5  5 1.795588  24  24

#tes分析,結果會以數據框形式返回
>tes(t=t, n.1=n.t, n.2=n.c, level=95, dig=2, id=id, data=dat)
  id N.total n.1 n.2    d var.d   l.d  u.d  U3.d  cl.d cliffs.d pval.d    g var.g
1  1      49  25  24 0.66  0.09  0.07 1.25 74.62 68.03     0.36   0.03 0.65  0.08
2  2      53  27  26 0.53  0.08 -0.03 1.10 70.33 64.71     0.29   0.06 0.53  0.08
3  3      51  25  26 0.48  0.08 -0.09 1.05 68.39 63.25     0.26   0.10 0.47  0.08
4  4      51  25  26 0.46  0.08 -0.11 1.03 67.62 62.67     0.25   0.11 0.45  0.08
5  5      48  24  24 0.52  0.09 -0.07 1.11 69.79 64.30     0.29   0.08 0.51  0.08
    l.g  u.g  U3.g  cl.g pval.g    r var.r   l.r  u.r pval.r fisher.z var.z   l.z
1  0.07 1.23 74.28 67.76   0.03 0.32  0.02  0.04 0.56   0.03     0.33  0.02  0.04
2 -0.03 1.08 70.06 64.51   0.06 0.26  0.02 -0.02 0.50   0.06     0.27  0.02 -0.02
3 -0.09 1.03 68.12 63.05   0.10 0.24  0.02 -0.05 0.49   0.10     0.24  0.02 -0.05
4 -0.11 1.01 67.37 62.49   0.11 0.23  0.02 -0.06 0.48   0.12     0.23  0.02 -0.06
5 -0.07 1.09 69.49 64.08   0.08 0.26  0.02 -0.04 0.51   0.09     0.26  0.02 -0.04
   u.z   OR l.or u.or pval.or  lOR l.lor u.lor pval.lor  NNT
1 0.63 3.33 1.14 9.70    0.03 1.20  0.13  2.27     0.03 4.37
2 0.55 2.63 0.95 7.29    0.06 0.97 -0.05  1.99     0.06 5.58
3 0.53 2.38 0.85 6.71    0.10 0.87 -0.17  1.90     0.10 6.32
4 0.52 2.29 0.81 6.45    0.11 0.83 -0.21  1.86     0.11 6.65
5 0.56 2.56 0.88 7.48    0.08 0.94 -0.13  2.01     0.08 5.77

還發現了另外幾個包也可以做相同的分析:


set.seed(45)                        
>x <- rnorm(10, mean=10, sd = 1)                
>y <- rnorm(10, mean = 5, sd = 5)

>cohens_d <- function(x, y) {
  lx <- length(x)- 1
  ly <- length(y)- 1
  md  <- abs(mean(x) - mean(y))        
  csd <- lx * var(x) + ly * var(y)
  csd <- csd/(lx + ly)
  csd <- sqrt(csd)                     

  cd  <- md/csd                        
}
 >res <- cohens_d(x, y)
 >res
[1] 0.5199662


>install.packages("lsr")
>library(lsr);?lsr
>set.seed(45)
>x <- rnorm(10, 10, 1)
>y <- rnorm(10, 5, 5)
>cohensD(x,y)
[1] 0.5199662


>install.packages("effsize")
>library(effsize); ?effsize
>set.seed(45) 
>x <- rnorm(10, 10, 1) 
>y <- rnorm(10, 5, 5) 
>cohen.d(x,y)
 Cohen's d
 d estimate: 0.5199662 (medium)
 95 percent confidence interval:
        inf        sup 
 -0.4353393  1.4752717

###pwr也可以,略過

Reference
https://en.wikipedia.org/wiki/Effect_size#Cohen's_d
https://stackoverflow.com/questions/15436702/estimate-cohens-d-for-effect-size


一個環境工程專業卻做生信分析的深井冰博士,深受拖延症的困擾。想給自己一點壓力,爭取能夠不定期分享學到的生信小技能,亦或看文獻過程中的一些筆記與小收穫,記錄生活中的雜七雜八。

歡迎大家掃描下方二維碼關注我的公眾號,若有問題也可直接加我的微信:水岸風堤(lii32703)。

歡迎分享,轉載請聯繫我。

相關焦點

  • 效應量:Cohen's d與η2
    在同一個實驗中,如果有幾個自變量,可以根據效應量將自變量的重要性排序。另一方面,效應量的計算還可以為改進研究設計、提高檢驗力提供了根據。例如,獨立樣本t 檢驗發現,t 值不足以拒絕虛無假設,即差異不顯著。這時可以計算效應量,如計算出的效應量的值達到中等以上,就可以通過增加實驗中的樣本容量的辦法再進行實驗,這時候就能夠拒絕虛無假設,達到顯著性水平。
  • 使用JASP輕鬆計算T檢驗cohen's d效應量指標
    t檢驗中常用Cohen's d效應量指標,表明兩個均數之間的標準差異;而η^2(偏η^2)主要用於ANOVA,表明與變量X的水平變化有關的變量Y的變化比率。 在常見的SPSS統計軟體中,t檢驗過程並沒有提供Cohen's d指標的計算,因此當有需要報告該效應指標時,我們還需自己手工計算或者使用其他統計軟體完成。
  • 計算獨立樣本t檢驗的效應量(effect size):Cohen's d
    kappa, Cohen's d, and Cohen's h等。舉個例子,如果Cohen's d 為0.4(或-0.4),那麼效應量為小;如果Cohen's d 為0.1,即使p<0.05有統計學差異,其效應量也是小到可忽略的。進入實戰操作部分。
  • t檢驗-合理和正確解釋P<0.05(Cohen's d 效應量指標)(一)
    通過上圖兩獨立樣本t檢驗的公式可以看出,決定t值大小的因素有樣本均數X,樣本數n和標準差S,大樣本量勢必影響t值的大小。一味地去關注P是否小於0.05,而忽略了數據本身的情況是不可取的。關於正確理解P值的含義,我在此推薦程開明老師的這篇文獻。由於篇幅所限,在此就不過多展開。
  • 響應比(Response Ratio)、功效(power)、效應量(effect size)
    通過將不同處理的STR ws和PTR wp值與control進行比較,計算Cohen’s d作為對不同處理的STR Ws和PTR Wp值的效應值大小的估計。在Cohen’s d中,正的d值表示處理中的響應變量(本例中為ws和wp)大於對照組,反之亦然。根據Cohen’s估計,0.2~0.5的效應值較小,0.5~0.8的效應值中等,>0.8的效應值較大,本文利用effsize包計算。
  • 統計知識 | 使用SPSS、R和JASP計算效應量的置信區間
    在心理學研究中,最常用的效應量有兩種:一種是表示相關性的效應量(correlational),常見的指標有r(r^2)和R(R^2),其中η^2也是r「家族」中的一個;另一種是均值差異(mean difference),常見的指標如本文重點介紹的cohen's d等。
  • 效應量估計:目前的使用、計算和解釋
    谷歌學術引用次數1611次的必讀文章,文章詳細介紹了效應量的計算及其使用情況。
  • t檢驗的效應量
    t檢驗的效應量,我們用Cohen's d表示,簡寫為d,反映兩個均數之間的標準差異:其中分母是兩個獨立樣本的聯合標準差,計算方法為兩個樣本標準差的平方平均數,即不過注意了,這是獨立樣本的計算方法,配對樣本中共同標準差採用配對數據差值的標準差即可,不用這一公式。
  • 原始研究效應量報告指南
    效應量是元分析的分析單元,但是在做元分析的時候會發現很多原始研究沒有報告相應的效應量或者能夠計算效應量的數據,這給元分析帶來了一定的困難,也不利於科學證據的積累。疊加目前對虛無假設檢驗的批評,報告效應量及其置信區間越來越成為研究的規定步驟,但是很多研究人員對效應量的理解不夠深刻,解釋更是困難重重,基於此我們推薦了這篇文章。這篇文章介紹的是如何在原始研究中報告效應量,相信一定會對大家有所啟發。
  • 方差分析、事後比較及簡單效應分析中的效應量
    這一過程中的效應量則不會受調整方法的影響,因此可以使用我們曾製作的t檢驗效應量計算器進行計算(也可以使用網上的效應量計算器)。根據輸出表中「成對比較」的結果查看調整後的t分數差異顯著性。下圖為「兩兩比較」選項卡的設置。
  • 科研——關於效應量(effect size)你不知道的那些事兒
    效應量(effect size):一種度量效應大小的指標.效應量具有與測量單位無關、單調性、不受樣本容量的影響等基本性質.效應量可以解決P值無法刻畫相關程度大小和差異大小的問題,也可以避免「P值操控」現象。效應量衡量實驗真實效果大小或者變量關聯強度的指標, 它不受樣本容量大小的影響 。
  • Effect-Size(效應量)——我不是故意讓你一臉懵逼
    而後面這個差多少,其實就是效應量。因此我們不難理解,所謂的效應量(也就是效應大小),其實對應著一個真實的差異或者關聯,效應量就是這種真實差異或關聯的強度。對了,這感覺就是效應量,效應量就是一個這麼抽象的東西。效應量不是一個單一的指標,而是一種真實的差異,這種差異需要通過一些指標(能夠反應效應量的指標)來體現。讓我們來舉個例子:我們想知道吃不吃維生素對孩子身高的影響。這裡面因素是吃/不吃維生素,效應是組間身高的差別。這裡面效應量是什麼呢?一定是能夠反應身高差別的指標啦!但是身高差別都需要什麼指標來評價呢?真的只有比較均數麼?
  • R與生物專題 | 第五十四講 R-樣本量及實驗效能計算
    使用太少的樣本,可能會得出不確定的結果。而樣本太大,會浪費資源。所以,我們需要在實驗設計時,便計算好實驗所需的樣本量。α代表錯誤拒絕零假設(原假設)H0並獲得錯誤積極效應(假陽性結果)的概率。通常將α設置為0.05,以達到95%的顯著性水平。
  • 永遠懷念LEONARD COHEN
    二零一六年十一月十一日,leonard cohen去世了。leonard cohen我本來想用個什麼有寫作技巧的開頭,但是人真的悲傷的時候是不會去照鏡子的,語無倫次,那就慢慢講吧。我第一次聽他的歌是聽IGGY POP 後期作品時因為聲音低沉而性感,有的樂評人說乍聽像leonar cohen。我當時就納悶這傢伙是誰。
  • Hotelling's t-squared test及在R語言中的計算
    Hotelling's t-squared test及在R語言中的計算有同學後臺留言諮詢Hotelling's t-squared test,本篇簡單梳理下這種方法。Hotelling's t-squared test是T檢驗(t-test)的多元形式,「多元」表示每個對象具有多組變量(Hotelling, 1931)。
  • 計算個「P值」,咱也不太懂,咱也不敢信
    當增加了樣本數量後,t檢驗計算的到的P值具有顯著性。這個例子反映出:對於方差較大的分布,採樣個數不足夠多時,「本來顯著差異」的兩組樣本可能得到「並不顯著的P值」。對於統計小白來說,計算個「P值」,「咱也看不懂,咱也不敢信」。對於第一種情況,根據我們之前的討論說明,需要增加樣本的個數,來降低對均值估計的標準誤差。對於第二種情況,進行了很多次假設檢驗的時候,就要進行「多檢驗矯正」(multiple-testing correction),也就是計算FDR或者q-value了(本文暫不進行深入討論)。
  • 相關係數、偏相關係數、復相關係數計算