Independence tests using coin package in R Jinheum Kim(Univ. Suwon), Jungdong Lee(Univ. Suwon, Master student) 2014.11.14
OUTLINE Permutation test: review Introduce 15 built-in functions in coin package Explain how to use independent test function Illustrative examples Concluding remarks
Preliminary 검정통계량의영가설 (null hypothesis) 분포는모집단분포에의존하는데, 모집단의분포를모르면결국검정통계량의분포도알수없는데, 이때모집단의분포를가정하여영가설분포를직접유도하거나혹은자료가주어졌을때검정통계량의조건부분포를영가설분포로대체하여검정할수있음 전자의방법을무조건검정이라고하고, 후자의방법을조건부검정혹은순열검정 (permutation test) 이라고함 (Fisher, 1935) Strasser & Weber (1999) 는 permutation test 를통합할수있는이론적근거를마련함
Preliminary Hothorn et al. (2006, 2008) 은 Strasser & Weber (1999) 의 permutation test 이론을 coin 패키지로구현 coin 이란이름은 conditional inference 의줄임말 조건부독립성검정은총괄적인형태의함수인 independence_test() 를통해서할수있음 잘알려진몇가지독립성검정에대해서는사용자가편리하도록간편한함수가패키지에포함되어있음 본논문에서는이런간편함수에대응하는 independece_test() 함수를정의하고자함 관측변수의적절한변환과관측값의 weight 와 block 값에대한정의가필요
Permutation test: review Data: Y i, X i, w i, b i, i = 1,, n, X i, Y i : 표본공간 X, Y 로부터얻어진 i 번째괸측값이고, data type 은 numeric 또는 factor w i : i 번째관측값의 weight, default=1 b i : i 번째관측값의 block 값, default=1 j 번째 block 에대한영가설 : H 0 : D(Y X, j) = D(Y j), j = 1,, k
Permutation test: review 영가설을검정하기위한통계량 : n T j = vec I i=1 T= k j=1 T j R pq, (b i = j)w i g(x i )h(y i ) g: X R p : 관측값 X 를변환하는함수 h: Y R q : 관측값 Y 를변환하는함수 R pq, j = 1,, k h(y i ) = h(y i, (Y 1,, Y n )): influence function 이라고도하는데, Y i 들의관측값에는의존하지만 Y i 들의배열에는의존하지않음
Permutation test: review S j : j 번째 block 에속한관측값들의모든순열들의집합 j 번째 block 에대해, h 의조건부평균벡터와공분산행렬은, n 1 E h S j = w j I b i = j w i h Y i, j = 1,, k, i=1 w j 1 n I Cov h S j = (b i = j)w i (h(y i ) E(h S j ))(h(y i ) E(h S j )), i=1 j = 1,, k n w j = i=1 I (b i = j)w i : j 번째 block 에속한 weight 의합
Permutation test: review j 번째 block 에대해, T j 의조건부평균벡터와공분산행렬은, n E(T j S j ) = vec i=1 I (b i = j)w i g(x i ) E(h S j ), j = 1,, k, Cov(T j S j ) = 1 n w j 1 Cov h S j I :Kroneker product w n j w j 1 Cov(h S j) I i=1 i=1 b i = j w i g X i I j = 1,, k (b i = j)w i (g(x i ) g(x i ) ) n i=1 b i = j w i g X i,
Permutation test: review 모든순열들의집합 S가주어졌을때, 영가설하에서, 통계량 T의조건부평균벡터와공분산행렬은 k개 block의결과를합쳐 (Strasser & Weber, 1999), k μ = E T S = E Σ = Cov(T S) = j=1 k T j S j, j=1 C ov(t j S j )
Permutation test: review 통계량 T R pq 를 R 로보내는단변량통계량중에서, pq = 1 이면, 검정통계량 c scalar (T, μ, Σ) = diag(σ) 1/2 (T μ) 을사용하고, pq > 1 이면, 검정통계량 c max T, μ, Σ = max diag(σ) 1 2(T μ) 또는 c quad (T, μ, Σ) = (T μ) Σ + (T μ) 을사용 Σ + : Σ 의 Moore-Penrose inverse
Permutation test: review 영가설하에서, 검정통계량 c의조건부분포는 Pr c T, μ, Σ z S z 를초과하지않는순열의개수를전체순열의개수로나눈값으로근사 z: 검정통계량의 c 의관측값
X:factor, Y: numeric 인경우 Test p q Comments W-M-W 1 1 Independent data Location Normal quantile 1 1 Median 1 1 Kruskal-Wallis #(G) 1 #(B)=1, weight=1 #(G)= 독립모집단수 Dispersion Ansari-Bradley 1 1 Fligner-Killeen #(G) 1 Censored data Log-rank #(G) 1 Censoring 정보필요 #(B)=1, weight=1 #(G)= 독립모집단수 Dependent data Signed-rank 1 1 n =#(B) #(G) [2 #(B)] weight=1 Friedman #(G) 1 #(G)= 독립모집단수
X:numeric, Y: numeric 인경우 Test p q Comments Spearman 1 1 #(B)=1, weight=1 Maximally selected statistic #(G)-1 1 #(G)= 서로다른 X i 들의개수 #(B)=1, weight=1
X:factor, Y: factor 인경우 Test p q Comments Chi-square #(R) #(C) #(R)=2 차원분할표의행수 #(C)=2 차원분할표의열수 n =#(R) #(C) #(B)=1, weight= 셀빈도 Independent pair data CMH #(R) #(C) #(R)=2 차원부분분할표의행수 #(C)=2 차원부분분할표의열수 #(B)= 제어변수의수준수 n =#(B) #(R) #(C), weight= 셀빈도 Linear-by-linear 1 1 #(B)= 제어변수의수준수 n =#(B) #(R) #(C), weight= 셀빈도 Matchedpair data Marginal homogeneity 1 #(I) #(B)=I I 2 차원분할표의총셀빈도 #(I)=I I 2 차원분할표의행수 ( 열수 ) n =2 #(B), weight=1
X:factor, Y: numeric 인경우 Test p q Comments W-M-W 1 1 Independent data Location Normal quantile 1 1 Median 1 1 Kruskal-Wallis #(G) 1 #(B)=1, weight=1 #(G)= 독립모집단수 Dispersion Ansari-Bradley 1 1 Fligner-Killeen #(G) 1 Censored data Log-rank #(G) 1 Censoring 정보필요 #(B)=1, weight=1 #(G)= 독립모집단수 Dependent data Signed-rank 1 1 n =#(B) #(G) [2 #(B)] weight=1 Friedman #(G) 1 #(G)= 독립모집단수
surv_test() 함수 : censored data 두개이상의모집단 (p 2) 의생존함수가서로동일한지를검정하기위한 log-rank test (Kalbfleisch & Prentice, 2002) Data: { X i, Y i, δ i, w i = 1, b i = 1, i = 1,, n} X i : i 번째개체가속한그룹 (X i = 1,, p) Y i : i 번째개체의생존시간 δ i : i 번째개체의우중도절단여부를나타내는값 (δ i = 0,1)
surv_test() 함수 : censored data Y (1) < < Y (c) : 관측된서로다른생존시간 Y l1,, Y lml : 구간 [Y l, Y l+1 ) 에서중도절단된시간, l = 0,, c Y (0) = 0, Y (c+1) = l d h s l = 1 h=1 : Y n (l) 에서이벤트가발생한개 h 체들의스코어, l = 1,, c l d h S l = h=1 : 구간 [Y n l, Y l+1 ) 에서중도절단 h 된개체들의스코어, l = 1,, c S 0 = 0
surv_test () 함수 : censored data Transformations g X i = I X i = 1,, I X i = p, i = 1, n h Y i = c l=1 R-code s l I(Y i = Y l, δ i = 1) + S l I(Y i = Y lj, δ i = 0) i = 1,, n m l j=1, > independence_test(surv(time, event) ~ stadium, data = ocarcinoma, ytrafo = function(data) trafo(data, numeric_trafo = logrank_trafo))
X:factor, Y: numeric 인경우 Test p q Comments W-M-W 1 1 Independent data Location Normal quantile 1 1 Median 1 1 Kruskal-Wallis #(G) 1 #(B)=1, weight=1 #(G)= 독립모집단수 Dispersion Ansari-Bradley 1 1 Fligner-Killeen #(G) 1 Censored data Log-rank #(G) 1 Censoring 정보필요 #(B)=1, weight=1 #(G)= 독립모집단수 Dependent data Signed-rank 1 1 n =#(B) #(G) [2 #(B)] weight=1 Friedman #(G) 1 #(G)= 독립모집단수
wilcoxsign_test () 함수 : dependent data 서로다른 k 개의 block 내에있는두모집단의모평균이서로동일한지를검정 (Wilcoxon, 1945) Data: { X i, Y i, w i = 1, b i, i = 1,, n(= 2k)} X i : i 번째개체가속한그룹 (X i = 1,2) Y i : i 번째개체의관측값 b i : i 번째개체가속한 block 값 (b i = 1,, k)
wilcoxsign_test () 함수 : dependent data Transformations g X i = I X i = 2, i = 1, n n h Y i = R i I b l = b i I Y i < Y l, i = 1,, n n 1 l i n D j = i 1 =1 i 2 =i 1 +1 I b i1 = j = b i2 Y i1 Y i2 : j번째 block 내에있는두관측값의절대편차, j = 1,, k k j 1 =1 k j 2 =1 R i = I(b i = j 1 ) I(D j2 D j1 ), i = 1,, n
wilcoxsign_test () 함수 : dependent data R-code > x = c(1.83, 0.50, 1.62, 2.48, 1.68, 1.88, 1.55, 3.06, 1.30) > y = c(0.878, 0.647, 0.598, 2.05, 1.06, 1.29, 1.06, 3.14, 1.29) > xydat = data.frame(y = c(y, x), x = gl(2, length(x)), block = factor(rep(1:length(x), 2))) > a = as.numeric(rep(x > y, rep(2, length(x)))) > b = rep(c(0, 1), length(x)) > arank = as.numeric(a == b) * rep(rank(abs(x - y)), rep(2, length(x))) > d = data.frame(d.x = rep(0:1, length(x)), d.y=c(x, y), block = factor(rep(1 : length(x), rep(2, length(x))))) > independence_test(d.y ~ d.x block, data = d, ytrafo = function(data) numeric_trafo = arank)
X:numeric, Y: numeric 인경우 Test p q Comments Spearman 1 1 #(B)=1, weight=1 Maximally selected statistic #(G)-1 1 #(G)= 서로다른 X i 들의개수 #(B)=1, weight=1
max_stat() 함수 : maximally selected statistic X 의가능한모든값을기준으로두그룹으로나눈후, 통계량의최대값으로두그룹의모평균이서로동일한지를검정하기위한최대선택통계량검정 (Müller & Hothorn, 2004) Data: { X i, Y i, w i = 1, b i = 1, i = 1,, n} X i, Y i : i 번째개체의관측값 X (1) < < X (p) < X p+1 : 서로다른 X 의값
max_stat() 함수 : maximally selected statistic Transformations g X i = I X i X 1,, I X i X p, i = 1, n h Y i = Y i, i = 1,, n R-code > independence_test(counts ~ coverstorey, data = treepipit, xtrafo = function(data) trafo(data, numeric_trafo = maxstat_trafo), teststat = "max")
X:factor, Y: factor 인경우 Test p q Comments Chi-square #(R) #(C) #(R)=2 차원분할표의행수 #(C)=2 차원분할표의열수 n =#(R) #(C) #(B)=1, weight= 셀빈도 Independent pair data CMH #(R) #(C) #(R)=2 차원부분분할표의행수 #(C)=2 차원부분분할표의열수 #(B)= 제어변수의수준수 n =#(B) #(R) #(C), weight= 셀빈도 Linear-by-linear 1 1 #(B)= 제어변수의수준수 n =#(B) #(R) #(C), weight= 셀빈도 Matchedpair data Marginal homogeneity 1 #(I) #(B)=I I 2 차원분할표의총셀빈도 #(I)=I I 2 차원분할표의행수 ( 열수 ) n =2 #(B), weight=1
cmh_test() 함수 : independent pair data 3 차원분할표에서두범주형변수의조건부독립성을검정하기위한 Cochran-Mantel- Haenszel 검정 (Cochran, 1954; Mantel & Haenszel, 1959) X, Y 의범주수가각각 p, q 개이고, 제어변수 (block 변수 ) 의범주수는 k 개라고가정 Data: { X i, Y i, w i, b i, i = 1,, n(= p q k)} X i, Y i : i 번째 X, Y 범주쌍의값 (X i = 1,, p; Y i = 1,, q) w i : i 번째 X, Y 범주쌍의관측개체수 b i :i 번째 X, Y 범주쌍의속한 block 값 (b i = 1,, k)
cmh_test() 함수 : independent pair data Transformatrion g X i = I X i = 1,, I X i = p, i = 1,, n h Y i = I Y i = 1,, I Y i = q, i = 1,, n R-code > independence_test(job.satisfaction ~ Income Gender, data = jobsatisfaction, weights = ~ as.vector(jobsatisfaction), teststat = "quad")
X:factor, Y: factor 인경우 Test p q Comments Chi-square #(R) #(C) #(R)=2 차원분할표에서행수 #(C)=2 차원분할표에서열수 n =#(R) #(C) #(B)=1, weight= 셀빈도 Independent pair data CMH #(R) #(C) #(R)=2 차원부분분할표에서행수 #(C)=2 차원부분분할표에서열수 #(B)= 제어변수의수준수 n =#(B) #(R) #(C), weight= 셀빈도 Linear-by-linear 1 1 #(B)= 제어변수의수준수 n =#(B) #(R) #(C), weight= 셀빈도 Matchedpair data Marginal homogeneity 1 #(I) #(B)=I I 2 차원분할표의총셀빈도 #(I)=I I 2 차원분할표행수 ( 열수 ) n =2 #(B), weight=1
mh_test () 함수 : matched-pair data 대응비교처럼한쌍 ( 예, 대조군대시험군 ) 으로부터얻어진관측값을행과열의범주값으로하는 q q 2 차원분할표에서, Original data: { X i, Y i, w i, b i = 1, i = 1,, n (= q 2 )} X i, Y i : i 번째 X, Y 범주쌍의값 (X i, Y i = 1,, q) w i : i 번째 X, Y 범주쌍의관측개체수
mh_test () 함수 : matched-pair data 두범주형변수의주변합독립성 ( 혹은주변동질성 ) 을검정을위해 q q 2차원분할표를 k 2 2차원분할표로변형 (Stuart, 1955; Maxwell, 1970) n 변형된분할표에서행은 block을나타내고 ( k = w i i =1 ), 열은서로다른두처리를나타냄 Transformed data: { X i, Y i, w i = 1, b i, i = 1,, n (= 2k)} X i : i번째개체가속한그룹 (X 2j 1 = 1, X 2j = 2, j = 1,, k) Y i : i번째개체의관측값 (Y i = 1,, q) b i : i번째개체가속한 block 값 (b 2j 1 = j = b 2j, j = 1,, k)
mh_test () 함수 : matched-pair data Transformation g X i = I X i = 1, i = 1, n h Y i = I Y i = 1,, I Y i = q, i = 1,, n
mh_test () 함수 : matched-pair data R-code > opinions = c("always wrong", "almost always wrong","wrong only sometimes", "not wrong at all") > PreExSex = as.table(matrix(c(144, 33, 84, 126, 2, 4, 14, 29,0, 2, 6, 25, 0, 0, 1, 5), nrow = 4, dimnames = list(premaritalsex = opinions, ExtramaritalSex = opinions))) > cw = rep(names(margin.table(preexsex, 2)), as.vector(margin.table(preexsex, 2))) > rw = rep(rep(rownames(preexsex), times = dim(preexsex)[2]), as.vector(preexsex)) > y = factor(c(rw, cw), levels = rownames(preexsex)) > x = c(rep(1, sum(preexsex)), rep(0, sum(preexsex))) > block = factor(rep(1:sum(preexsex), 2)) > mh.preexsex = data.frame(x = x, y = y, block = block) > independence_test(y ~ x block, data = mh.preexsex, teststat = "quad")
Illustrative examples Test Dataset No. obs X/Y Log-rank ocacinoma 35 Wilcoxon signed-rank Maximally selected statistic xydat 18 f/n treepipit 86 n/n f/n CMH jobsatisfaction 104 Marginal homogeneity preexsex 475 f/f P 값비교 점근분포에의한 P 값 Permutation test 에기초한 P 값 1,000 번 10,000 번 100,000 번 Exact test 에의한 P 값
Illustrative examples
Concluding remarks coin 패키지에내장된독립성검정을위한간편함수를 independence_test() 함수로표현두변수 X, Y를적절히변환하였으며, 관측값의 weight와 block 값에대해정의정의한 independence_test() 함수를써서실제자료의점근분포와 permutation test, exact test에기초한 P값을구하고그결과를서로비교 Permutation test 방법은검정통계량의분포를모를때유용한데, 독립성검정에대한실제자료분석에서살펴본것처럼 permutation의횟수가증가함에따라 exact test의결과에가까워질뿐만아니라자료의크기가크면점근분포에의한결과와도유사함을알수있었음본논문에서살펴본 15 개의독립성검정이외다른독립성검정문제에대해서도, 본논문에서한것처럼, 두변수에대해적절한변환을정의하고, weight와 block 값을정의한후에, permutation test 방법에의해영가설분포를모르는검정통계량의 P값을구할수있을것으로기대됨
THANK YOU!!!