중요한 결과 (예 : )가 얻어 질 때까지 (즉, p- .. 해킹) Type I 오류율이 증가 할 때까지 왜 데이터를 수집하는지 궁금합니다 .
R
이 현상에 대한 시연 도 대단히 감사하겠습니다 .
중요한 결과 (예 : )가 얻어 질 때까지 (즉, p- .. 해킹) Type I 오류율이 증가 할 때까지 왜 데이터를 수집하는지 궁금합니다 .
R
이 현상에 대한 시연 도 대단히 감사하겠습니다 .
답변:
문제는 시험에 합격 할 기회가 너무 많다는 것입니다. 이 대화 상자의 멋진 버전 일뿐입니다.
저녁을 누가 지불하는지 보도록하겠습니다.
좋아, 나는 머리를 부른다.
쥐, 이겼어 3 점 중 2 점?
이를 더 잘 이해하려면 이 순차적 절차의 단순화 된 모델이지만 현실적인 모델을 고려하십시오 . 특정 수의 관측치에 대한 "시험 실행"으로 시작하지만 p- 값이 미만이되도록 더 오래 실험하려고한다고 가정합니다 . 귀무 가설은 각 관측치 X i 가 표준 정규 분포에서 (독립적으로) 나온다는 것입니다. 대안은 X i 가 0이 아닌 평균을 갖는 단위 분산 정규 분포와 독립적으로 오는 것입니다. 시험 통계는 모두의 평균 될 것입니다 n 개의 관측 ˉ X 개개인의 표준 오차로 나눈 1 / √ . 양측 검정의 경우 임계 값은표준 정규 분포의0.025및0.975% 포인트,Zα=±1.96입니다.
이 방법은 고정 된 표본 크기 사용한 단일 실험에 적합합니다 . n 이 무엇이든 상관없이 귀무 가설을 기각 할 확률 은 정확히 5 % 입니다.
이것을 모든 n 값 의 합 , S n = X 1 + X 2 + ⋯ + X n = n ˉ X 에 대한 등가 테스트로 대수적으로 변환합시다 .
따라서 데이터는 "중요"
그건,
우리가 영리하다면 손실을 줄이고 이 매우 커지고 데이터가 여전히 중요한 지역에 들어 가지 않으면 포기할 것 입니다.
랜덤 워크 대해 설명합니다 . 수식 ( 1 ) 임의의 거리의 플롯 주위 곡선 포물선 "차단"또는 벽을 세움 금액 ( N , S의 N ) : 만약 결과가 "중요한"인 임의의 랜덤 거리의 지점 펜스 안타.
우리가 충분히 오래 기다린다면 어느 시점에서 결과가 크게 보일 가능성이 매우 큰 것은 무작위 보행의 특성입니다 .
테스트는 계속 모든 4 개의 "중요한"경우에, 데이터는 것을 알 중지 몇 가지 점에서 의미를 찾고 있습니다. 실제 생활에서 일찍 멈추는 실험자는 그러한 "회복"을 관찰 할 기회를 잃고 있습니다. 선택적 중지를 통한이 선택성 은 결과를 바이어스합니다.
정직하고 순차 순차 테스트에서 장벽은 선입니다. 여기에 표시된 곡선 장벽보다 빠르게 퍼집니다.
library(data.table)
library(ggplot2)
alpha <- 0.05 # Test size
n.sim <- 20 # Number of simulated experiments
n.buffer <- 5e3 # Maximum experiment length
i.min <- 30 # Initial number of observations
#
# Generate data.
#
set.seed(17)
X <- data.table(
n = rep(0:n.buffer, n.sim),
Iteration = rep(1:n.sim, each=n.buffer+1),
X = rnorm((1+n.buffer)*n.sim)
)
#
# Perform the testing.
#
Z.alpha <- -qnorm(alpha/2)
X[, Z := Z.alpha * sqrt(n)]
X[, S := c(0, cumsum(X))[-(n.buffer+1)], by=Iteration]
X[, Trigger := abs(S) >= Z & n >= i.min]
X[, Significant := cumsum(Trigger) > 0, by=Iteration]
#
# Plot the results.
#
ggplot(X, aes(n, S, group=Iteration)) +
geom_path(aes(n,Z)) + geom_path(aes(n,-Z)) +
geom_point(aes(color=!Significant), size=1/2) +
facet_wrap(~ Iteration)
가설 검정에 익숙하지 않은 사람들은 일단 ap 값이 0.05 미만으로 떨어지면 참가자를 더 추가하면 p 값이 더 낮아질 것이라고 생각하는 경향이 있습니다. 그러나 이것은 사실이 아닙니다. 귀무 가설 하에서 ap 값은 0과 1 사이에 균일하게 분포되며 해당 범위에서 상당히 약간 튀어 오를 수 있습니다.
R에서 일부 데이터를 시뮬레이션했습니다 (R 기술은 매우 기본적 임). 이 시뮬레이션에서는 무작위로 선택된 그룹 구성원 (0 또는 1)과 무작위로 선택된 결과 측정 값 ~ N (0,1)을 갖는 5 개의 데이터 포인트를 수집합니다. 참가자 6부터는 매번 반복 할 때마다 t- 테스트를 수행합니다.
for (i in 6:150) {
df[i,1] = round(runif(1))
df[i,2] = rnorm(1)
p = t.test(df[ , 2] ~ df[ , 1], data = df)$p.value
df[i,3] = p
}
p 값은이 그림에 있습니다. 샘플 크기가 약 70-75 일 때 중요한 결과를 얻습니다. 내가 거기에서 멈 추면 내 p 값이 더 큰 샘플로 되돌아 갔다는 사실을 놓 쳤기 때문에 내 연구 결과가 중요하다는 사실을 알게 될 것입니다 (실제 데이터로 한 번 나에게 일어났습니다). 두 모집단의 평균이 0임을 알고 있기 때문에 이것은 오 탐지 여야합니다. 이것은 p <.05까지 데이터를 추가 할 때 발생하는 문제입니다. 충분한 테스트를 수행하면 p는 결국 .05 임계 값을 넘어 데이터 세트에 큰 영향을 줄 수 있습니다.
R
코드가 전혀 실행되지 않습니다.
df
먼저 (바람직하게는 최종 크기로) 작성해야합니다 . 코드 행 6 (답의 텍스트에 맞는) 암시에서 쓰기 시작부터 이미 5 개 행이 존재 df라고 이미 가득 차 있다는 것이다 어쩌면이 같은 의도되었다. n150<-vector("numeric",150); df<-data.frame(gp=n150,val=n150,pval=n150); init<-1:5; df[init,1]<-c(0,1,0,1,0); df[init,2]<-rnorm(5)
(다음 위의 코드를 실행) 아마도 : plot(df$pv[6:150])
이 답변은 궁극적으로 "중요한"결과를 얻을 가능성과 @whuber의 모델에서이 이벤트에 대한 시간 분포에 관한 것입니다.
R 코드 :
# Fig 1
par(mfrow=c(1,2),mar=c(4,4,.5,.5))
set.seed(16)
n <- 20
npoints <- n*100 + 1
t <- seq(1,n,len=npoints)
subset <- 1:n*100-99
deltat <- c(1,diff(t))
z <- qnorm(.975)
s <- cumsum(rnorm(npoints,sd=sqrt(deltat)))
plot(t,s,type="l",ylim=c(-1,1)*z*sqrt(n),ylab="S(t)",col="grey")
points(t[subset],s[subset],pch="+")
curve(sqrt(t)*z,xname="t",add=TRUE)
curve(-sqrt(t)*z,xname="t",add=TRUE)
tau <- log(t)
y <- s/sqrt(t)
plot(tau,y,type="l",ylim=c(-2.5,2.5),col="grey",xlab=expression(tau),ylab=expression(Y(tau)))
points(tau[subset],y[subset],pch="+")
abline(h=c(-z,z))
# Fig 2
nmax <- 1e+3
nsim <- 1e+5
alpha <- .05
t <- numeric(nsim)
n <- 1:nmax
for (i in 1:nsim) {
s <- cumsum(rnorm(nmax))
t[i] <- which(abs(s) > qnorm(1-alpha/2)*sqrt(n))[1]
}
delta <- ifelse(is.na(t),0,1)
t[delta==0] <- nmax + 1
library(survival)
par(mfrow=c(1,1),mar=c(4,4,.5,.5))
plot(survfit(Surv(t,delta)~1),log="xy",xlab="t",ylab="P(T>t)",conf.int=FALSE)
curve((1-alpha)*exp(-.125*(log(x))),add=TRUE,col="red",from=1,to=nmax)
위의 논의는 당신이 존재할 수있는 기회가 아니라 데이터가 더 극단적 일 수있는 기회로부터 다중성이 나오는 빈번한 세계관에 대한 것입니다. 문제의 근본 원인은 p- 값과 유형 I 오류가 뒤로 시간 뒤로 정보 흐름 조절을 사용하기 때문에 "여기에 도착한 방법"과 대신 발생할 수 있는 일이 중요하다는 것입니다. 반면 베이지안 패러다임은 데이터가 아닌 매개 변수 자체에 미치는 영향에 대한 회의론을 인코딩합니다. 이렇게하면 5 분 전에 효과의 다른 사후 확률을 계산했는지 여부에 관계없이 각 사후 확률이 동일하게 해석됩니다. 자세한 내용과 간단한 시뮬레이션은 http://www.fharrell.com/2017/10/continuous-learning-from-data-no 에서 확인할 수 있습니다 .
이 문제는 이미 P. Armitage, CK McPherson 및 BC Rowe (1969), 왕립 통계 학회지에 의해 해결 된 것으로 보입니다 . 시리즈 A (132), 2, 235-244 : "누적 데이터에 대한 반복적 유의성 테스트" .
여기서도 논의 된이 문제에 대한 베이지안 관점은 Berger and Wolpert (1988), "우연성 원리" , 섹션 4.2 에서 논의되었다 .
다른 대한 임계 값을 증가시키는 함수로서의 크기
의 함수로 5 % 테스트를 복원하도록 임계 값 조정
reps <- 50000
K <- c(1:5, seq(10,50,5), seq(60,100,10)) # the number of attempts a researcher gives herself
alpha <- 0.05
cv <- qnorm(1-alpha/2)
grid.scale.cv <- cv*seq(1,1.5,by=.01) # scaled critical values over which we check rejection rates
max.g <- length(grid.scale.cv)
results <- matrix(NA, nrow = length(K), ncol=max.g)
for (kk in 1:length(K)){
g <- 1
dev <- 0
K.act <- K[kk]
while (dev > -0.01 & g <= max.g){
rej <- rep(NA,reps)
for (i in 1:reps){
k <- 1
accept <- 1
x <- rnorm(K.act)
while(k <= K.act & accept==1){
# each of our test statistics for "samples" of size n are N(0,1) under H0, so just scaling their sum by sqrt(k) gives another N(0,1) test statistic
rej[i] <- abs(1/sqrt(k)*sum(x[1:k])) > grid.scale.cv[g]
accept <- accept - rej[i]
k <- k+1
}
}
rej.rate <- mean(rej)
dev <- rej.rate-alpha
results[kk,g] <- rej.rate
g <- g+1
}
}
plot(K,results[,1], type="l")
matplot(grid.scale.cv,t(results), type="l")
abline(h=0.05)
cv.a <- data.frame(K,adjusted.cv=grid.scale.cv[apply(abs(results-alpha),1,which.min)])
plot(K,cv.a$adjusted.cv, type="l")