在統計學中,效應量(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)。
歡迎分享,轉載請聯繫我。