p- 값이 다른 이유
두 가지 효과가 있습니다.
값의 불연속성 때문에 '가장 일어날 가능성이 높은'0 2 1 1 1 벡터를 선택합니다. 그러나 이것은 (불가능) 0 1.25 1.25 1.25 1.25와 다를 수 있습니다.χ2 값.
결과적으로 벡터 5 0 0 0은 더 이상 극단적 인 경우로 계산되지 않습니다 (5 0 0 0은 더 작음 χ20 2 1 1 1보다). 이것은 이전의 경우였습니다. 두 단면 2 × 표 수가 제 또는 동일 극한으로서 제 2 그룹에있는 5 개의 노출 두 경우에 피셔 시험.
이것이 p- 값이 거의 요인 2만큼 다른 이유입니다 (정확히 다음 지점이 아니기 때문에)
똑같이 극단적 인 경우 5 0 0 0을 잃는 동안 0 2 1 1 1보다 더 극단적 인 경우 1 4 0 0 0을 얻습니다.
차이점은 χ2값 (또는 정확한 Fisher 테스트의 R 구현에서 사용되는 직접 계산 된 p- 값). 400의 그룹을 100의 4 개의 그룹으로 나누면 다른 경우보다 다른 경우가 '극단적'으로 간주됩니다. 5 0 0 0 0은 이제 0 2 1 1 1보다 '극단적'입니다. 그러나 1 4 0 0 0은 '극단적'입니다.
코드 예 :
# probability of distribution a and b exposures among 2 groups of 400
draw2 <- function(a,b) {
choose(400,a)*choose(400,b)/choose(800,5)
}
# probability of distribution a, b, c, d and e exposures among 5 groups of resp 400, 100, 100, 100, 100
draw5 <- function(a,b,c,d,e) {
choose(400,a)*choose(100,b)*choose(100,c)*choose(100,d)*choose(100,e)/choose(800,5)
}
# looping all possible distributions of 5 exposers among 5 groups
# summing the probability when it's p-value is smaller or equal to the observed value 0 2 1 1 1
sumx <- 0
for (f in c(0:5)) {
for(g in c(0:(5-f))) {
for(h in c(0:(5-f-g))) {
for(i in c(0:(5-f-g-h))) {
j = 5-f-g-h-i
if (draw5(f, g, h, i, j) <= draw5(0, 2, 1, 1, 1)) {
sumx <- sumx + draw5(f, g, h, i, j)
}
}
}
}
}
sumx #output is 0.3318617
# the split up case (5 groups, 400 100 100 100 100) can be calculated manually
# as a sum of probabilities for cases 0 5 and 1 4 0 0 0 (0 5 includes all cases 1 a b c d with the sum of the latter four equal to 5)
fisher.test(matrix( c(400, 98, 99 , 99, 99, 0, 2, 1, 1, 1) , ncol = 2))[1]
draw2(0,5) + 4*draw(1,4,0,0,0)
# the original case of 2 groups (400 400) can be calculated manually
# as a sum of probabilities for the cases 0 5 and 5 0
fisher.test(matrix( c(400, 395, 0, 5) , ncol = 2))[1]
draw2(0,5) + draw2(5,0)
마지막 비트의 출력
> fisher.test(matrix( c(400, 98, 99 , 99, 99, 0, 2, 1, 1, 1) , ncol = 2))[1]
$p.value
[1] 0.03318617
> draw2(0,5) + 4*draw(1,4,0,0,0)
[1] 0.03318617
> fisher.test(matrix( c(400, 395, 0, 5) , ncol = 2))[1]
$p.value
[1] 0.06171924
> draw2(0,5) + draw2(5,0)
[1] 0.06171924
그룹을 나눌 때 힘에 미치는 영향
p- 값의 '사용 가능한'수준에서 불연속적인 단계와 Fishers의 정확한 테스트의 보수성으로 인해 약간의 차이가 있습니다 (이 차이는 상당히 커질 수 있습니다).
또한 Fisher 검정은 데이터를 기반으로 (알 수없는) 모형을 적합시킨 다음이 모형을 사용하여 p- 값을 계산합니다. 이 예의 모델은 정확히 5 명의 노출 된 개인이 있다는 것입니다. 다른 그룹에 대해 이항으로 데이터를 모델링하면 때때로 5 명보다 많거나 적은 개인을 얻게됩니다. 피셔 테스트를 여기에 적용하면 일부 오차가 고정되고 잔차가 고정 마진 테스트와 비교하여 더 작아집니다. 결과는 테스트가 너무 보수적이고 정확하지는 않다는 것입니다.
그룹을 무작위로 나누면 실험 유형 I 오류 확률에 미치는 영향이 그리 크지 않을 것으로 예상했습니다. 귀무 가설이 참이면 대략적으로α사례의 백분율이 유의 한 p- 값입니다. 이 예에서는 이미지가 보여 주듯이 차이가 큽니다. 주된 이유는 총 5 회의 노출에서 3 가지 수준의 절대 차이 (5-0, 4-1, 3-2, 2-3, 1-4, 0-5)와 3 개의 개별 p- 값 (400의 두 그룹의 경우).
가장 흥미로운 것은 거부 할 확률의 도표입니다 H0 만약 H0 사실이라면 Ha사실이다. 이 경우 알파 수준과 불연속성은 그다지 중요하지 않으며 (실제 거부율을 표시 함) 여전히 큰 차이가 있습니다.
이것이 가능한 모든 상황에 적용되는지 여부는 여전히 남아 있습니다.
전력 분석 (및 3 개 이미지)의 3 배 코드 조정 :
이항 법을 사용하여 5 명의 노출 된 개인의 경우로 제한
거부 할 유효 확률의 도표 H0선택된 알파의 기능으로. Fisher의 정확한 테스트는 p- 값이 정확하게 계산되지만 소수의 단계 (단계) 만 발생하므로 테스트는 선택한 알파 수준과 관련하여 너무 보수적 일 수 있습니다.
400-100-100-100-100 경우 (파란색)에 비해 400-400 경우 (빨간색)의 효과가 훨씬 더 강하다는 것을 알면 흥미 롭습니다. 따라서 우리는 실제로이 분할을 사용하여 전력을 증가시키고 H_0을 거부 할 가능성이 높아집니다. (우리는 제 1 종 오류 가능성을 높이는 데 크게 신경 쓰지 않지만 전력을 높이기 위해이 분할 지점이 항상 그렇게 강한 것은 아닙니다)
노출 된 개인 5 명으로 제한하지 않는 이항 법 사용
이항을 사용하는 것처럼 400-400 (빨간색) 또는 400-100-100-100-100 (파란색) 두 경우 모두 정확한 p- 값을 제공하지 않습니다. Fisher 정확한 테스트에서는 고정 된 행과 열의 총계를 가정하지만 이항 모형을 사용하면 자유로울 수 있기 때문입니다. Fisher 검정은 잔차 항을 실제 오차 항보다 작게 만드는 행 및 열 합계에 '적합'합니다.
증가 된 전력은 비용이 듭니까?
우리가 거부 할 확률을 비교하면 H0 사실 일 때 Ha (첫 번째 값이 낮고 두 번째 값이 높기를 바랍니다) 실제로는 Ha 유형 1 오류가 증가하는 비용없이 증가 할 수 있습니다.
# using binomial distribution for 400, 100, 100, 100, 100
# x uses separate cases
# y uses the sum of the 100 groups
p <- replicate(4000, { n <- rbinom(4, 100, 0.006125); m <- rbinom(1, 400, 0.006125);
x <- matrix( c(400 - m, 100 - n, m, n), ncol = 2);
y <- matrix( c(400 - m, 400 - sum(n), m, sum(n)), ncol = 2);
c(sum(n,m),fisher.test(x)$p.value,fisher.test(y)$p.value)} )
# calculate hypothesis test using only tables with sum of 5 for the 1st row
ps <- c(1:1000)/1000
m1 <- sapply(ps,FUN = function(x) mean(p[2,p[1,]==5] < x))
m2 <- sapply(ps,FUN = function(x) mean(p[3,p[1,]==5] < x))
plot(ps,ps,type="l",
xlab = "chosen alpha level",
ylab = "p rejection")
lines(ps,m1,col=4)
lines(ps,m2,col=2)
title("due to concervative test p-value will be smaller\n leading to differences")
# using all samples also when the sum exposed individuals is not 5
ps <- c(1:1000)/1000
m1 <- sapply(ps,FUN = function(x) mean(p[2,] < x))
m2 <- sapply(ps,FUN = function(x) mean(p[3,] < x))
plot(ps,ps,type="l",
xlab = "chosen alpha level",
ylab = "p rejection")
lines(ps,m1,col=4)
lines(ps,m2,col=2)
title("overly conservative, low effective p-values \n fitting marginals makes residuals smaller than real error")
#
# Third graph comparing H_0 and H_a
#
# using binomial distribution for 400, 100, 100, 100, 100
# x uses separate cases
# y uses the sum of the 100 groups
offset <- 0.5
p <- replicate(10000, { n <- rbinom(4, 100, offset*0.0125); m <- rbinom(1, 400, (1-offset)*0.0125);
x <- matrix( c(400 - m, 100 - n, m, n), ncol = 2);
y <- matrix( c(400 - m, 400 - sum(n), m, sum(n)), ncol = 2);
c(sum(n,m),fisher.test(x)$p.value,fisher.test(y)$p.value)} )
# calculate hypothesis test using only tables with sum of 5 for the 1st row
ps <- c(1:10000)/10000
m1 <- sapply(ps,FUN = function(x) mean(p[2,p[1,]==5] < x))
m2 <- sapply(ps,FUN = function(x) mean(p[3,p[1,]==5] < x))
offset <- 0.6
p <- replicate(10000, { n <- rbinom(4, 100, offset*0.0125); m <- rbinom(1, 400, (1-offset)*0.0125);
x <- matrix( c(400 - m, 100 - n, m, n), ncol = 2);
y <- matrix( c(400 - m, 400 - sum(n), m, sum(n)), ncol = 2);
c(sum(n,m),fisher.test(x)$p.value,fisher.test(y)$p.value)} )
# calculate hypothesis test using only tables with sum of 5 for the 1st row
ps <- c(1:10000)/10000
m1a <- sapply(ps,FUN = function(x) mean(p[2,p[1,]==5] < x))
m2a <- sapply(ps,FUN = function(x) mean(p[3,p[1,]==5] < x))
plot(ps,ps,type="l",
xlab = "p rejecting if H_0 true",
ylab = "p rejecting if H_a true",log="xy")
points(m1,m1a,col=4)
points(m2,m2a,col=2)
legend(0.01,0.001,c("400-400","400-100-100-100-100"),pch=c(1,1),col=c(2,4))
title("comparing H_0:p=0.5 \n with H_a:p=0.6")
왜 힘에 영향을 미치는가
문제의 핵심은 "유의 한"것으로 선택된 결과 값의 차이에 있다고 생각합니다. 상황은 400, 100, 100, 100 및 100 크기의 5 개 그룹에서 5 명의 노출 된 개인이 그려지고 있습니다. '익스트림'으로 간주되는 다양한 선택이 가능합니다. 두 번째 전략을 진행할 때 (유효한 유형 I 오류가 동일하더라도) 전력이 증가합니다.
첫 번째 전략과 두 번째 전략의 차이점을 그래픽으로 스케치하면 그런 다음 확률이 특정 수준 이하인 편차 거리를 나타내는 가설 값과 표면에 대한 점이있는 5 축 (400100100100 및 100 그룹)의 좌표 시스템을 상상합니다. 첫 번째 전략으로이 표면은 원통이며, 두 번째 전략으로이 표면은 구입니다. 실제 값과 그 주변의 오류도 마찬가지입니다. 우리가 원하는 것은 가능한 한 겹치는 부분이 겹치는 것입니다.
차원이 다른 약간 다른 문제를 고려할 때 실제 그래픽을 만들 수 있습니다.
Bernoulli 프로세스를 테스트하려고한다고 상상해보십시오 H0:p=0.51000 번의 실험을함으로써 그런 다음 1000을 그룹으로 나누고 크기가 500 인 두 그룹으로 나눠서 동일한 전략을 수행 할 수 있습니다. X와 Y는 두 그룹의 카운트가 어떻게됩니까?
이 도표는 단일 그룹 1000 대신 500 및 500 그룹이 어떻게 분포되어 있는지 보여줍니다.
표준 가설 검정은 X와 Y의 합이 531보다 크거나 469보다 작은 지 여부를 평가합니다 (95 % 알파 수준).
그러나 이것은 X와 Y의 불균등 한 분포를 포함합니다.
분포의 변화를 상상해보십시오 H0 에 Ha. 그런 다음 가장자리의 영역은 그다지 중요하지 않으며 더 많은 원형 경계가 더 의미가 있습니다.
그러나 그룹의 분할을 무작위로 선택하지 않고 그룹에 의미가있을 때 이것은 (necesarilly) 사실이 아닙니다.