예비 :
G * Power 설명서 에서 설명한 것처럼 해결하려는 항목에 따라 여러 가지 유형의 전력 분석이 있습니다. (즉, , 효과 크기 , 및 power는 서로 관련되어 있습니다.이 중 세 가지를 지정하면 네 번째를 풀 수 있습니다.) E S αNESα
- 설명에서 및 power = 80 %로 지정한 응답 속도를 캡처 하는 적절한 을 알고 싶습니다 . 이것은 우선권 입니다. α = .05Nα=.05
- 우리는 post-hoc power ( , response rate, & alpha가 주어진 결정 힘 )로 시작하여 개념적으로 더 간단 할 수 있습니다.N
@GregSnow의 우수한 게시물 외에도 CV에 대한 시뮬레이션 기반 전력 분석에 대한 또 다른 훌륭한 안내서는 여기에서 찾을 수 있습니다 . 통계 전력 계산 . 기본 아이디어를 요약하려면 :
- 당신이 감지 할 수있는 효과를 파악
- 그 가능한 세계에서 N 데이터를 생성
- 그러한 가짜 데이터에 대해 수행하려는 분석을 실행하십시오.
- 선택한 알파에 따라 결과가 '유의한지'저장
- 여러 번 ( ) 반복 하고 그 에서 (사후) 전력의 추정값으로 '유의 한 %'를 사용합니다NBN
- 사전 전력을 결정하려면 가능한 검색 하여 원하는 전력을 산출하는 값을 찾으십시오. N
특정 반복에 대한 중요성을 찾을 수 있는지 여부는 확률 (여기서 는 거듭 제곱) 인 Bernoulli 시행의 결과로 이해 될 수 있습니다 . 반복 에서 찾은 비율을 통해 실제 를 근사 할 수 있습니다 . 더 나은 근사값을 얻으려면 를 늘릴 수 있지만 시뮬레이션 시간이 더 오래 걸립니다. p B p BppBpB
R에서, 주어진 '성공'확률로 이진 데이터를 생성하는 주요 방법은 ? rbinom입니다.
- 예를 들어 확률이 p 인 10 개의 Bernoulli 시행에서 성공 횟수를 얻으려면 코드는 다음
rbinom(n=10, size=1, prob=p)
과 같습니다 (결과를 저장을 위해 변수에 할당하려고합니다)
- ? runif 를 사용하여 이러한 데이터를 덜 우아하게 생성 할 수도 있습니다 .
ifelse(runif(1)<=p, 1, 0)
- 결과가 잠재 가우스 변수에 의해 중재된다고 생각되면 ? rnorm 과 공분산의 함수로 잠재 변수를 생성 한 다음 결과를 확률로 변환
pnorm()
하여 rbinom()
코드 에서 사용할 수 있습니다.
"모든 곡률을 설명하기 위해 다항식 Var1 * Var1을 포함 시키십시오"라고 명시합니다. 여기에는 혼란이 있습니다. 다항식 항은 곡률을 설명하는 데 도움이 될 수 있지만 이는 상호 작용 항입니다.이 방법으로는 도움이되지 않습니다. 그럼에도 불구하고 귀하의 응답률은 모델에 제곱 항과 교호 작용 항을 모두 포함해야합니다. 구체적으로, 모델에는 기본 항을 넘어 , 및 합니다. v a r 1 ∗ v a r 2 v a r 1 2 ∗ v a r 2var12var1∗var2var12∗var2
- 다른 질문의 맥락에서 작성되었지만 여기에 대한 대답 : 로짓과 프로 빗 모델의 차이점 에는 이러한 유형의 모델에 대한 많은 기본 정보가 있습니다.
여러 종류가 있습니다 것처럼 유형 I 오류율 여러 가설 (예를 들어, 거기에 별 대비 오류율 , familywise 오류율 , 당 가족 에러율 ), 그래서 전력 *의이 다른 종류 (예를 들어,에 있습니다 하나의 미리 지정된 효과 , 모든 효과 및 모든 효과 ). 또한 특정 효과 조합을 탐지하는 힘을 찾거나 모델 전체를 동시에 테스트하는 힘을 구할 수도 있습니다. SAS 코드에 대한 귀하의 설명에서 나는 그것이 후자를 찾고 있다는 것입니다. 그러나 귀하의 상황에 대한 설명에서 최소한 상호 작용 효과를 감지하고 싶다고 가정합니다.
검정력과 관련된 문제를 생각하는 다른 방법은 여기에서 내 대답을 참조하십시오 . 표본 크기를 정당화하는 맥락에서 상관 관계를 추정 할 때 일반적인 정밀도를보고하는 방법.
R의 로지스틱 회귀 분석을위한 간단한 사후 처리 능력 :
긍정적 인 반응 속도는 세계의 실제 상황을 나타내며 10,000 개의 문자를 보냈다고 가정 해 봅시다. 이러한 영향을 감지하는 힘은 무엇입니까? (저는 "코믹하게 비효율적 인"코드를 작성하는 것으로 유명합니다. 다음은 효율성을 위해 최적화 된 것이 아니라 따르기 쉽게하기위한 것입니다. 실제로 속도는 느립니다.)
set.seed(1)
repetitions = 1000
N = 10000
n = N/8
var1 = c( .03, .03, .03, .03, .06, .06, .09, .09)
var2 = c( 0, 0, 0, 1, 0, 1, 0, 1)
rates = c(0.0025, 0.0025, 0.0025, 0.00395, 0.003, 0.0042, 0.0035, 0.002)
var1 = rep(var1, times=n)
var2 = rep(var2, times=n)
var12 = var1**2
var1x2 = var1 *var2
var12x2 = var12*var2
significant = matrix(nrow=repetitions, ncol=7)
startT = proc.time()[3]
for(i in 1:repetitions){
responses = rbinom(n=N, size=1, prob=rates)
model = glm(responses~var1+var2+var12+var1x2+var12x2,
family=binomial(link="logit"))
significant[i,1:5] = (summary(model)$coefficients[2:6,4]<.05)
significant[i,6] = sum(significant[i,1:5])
modelDev = model$null.deviance-model$deviance
significant[i,7] = (1-pchisq(modelDev, 5))<.05
}
endT = proc.time()[3]
endT-startT
sum(significant[,1])/repetitions # pre-specified effect power for var1
[1] 0.042
sum(significant[,2])/repetitions # pre-specified effect power for var2
[1] 0.017
sum(significant[,3])/repetitions # pre-specified effect power for var12
[1] 0.035
sum(significant[,4])/repetitions # pre-specified effect power for var1X2
[1] 0.019
sum(significant[,5])/repetitions # pre-specified effect power for var12X2
[1] 0.022
sum(significant[,7])/repetitions # power for likelihood ratio test of model
[1] 0.168
sum(significant[,6]==5)/repetitions # all effects power
[1] 0.001
sum(significant[,6]>0)/repetitions # any effect power
[1] 0.065
sum(significant[,4]&significant[,5])/repetitions # power for interaction terms
[1] 0.017
따라서 10,000 개의 문자가 이러한 응답 속도를 감지하기 위해 실제로 80 %의 전력을 얻지는 못합니다. (이러한 접근 방식 간의 명백한 불일치를 설명하기 위해 SAS 코드가 무엇을하는지 충분히 확신하지 못하지만이 코드는 개념적으로 간단하지만 느리다면 확인하는 데 시간이 많이 걸렸습니다. 결과는 합리적입니다.)
로지스틱 회귀 분석을위한 시뮬레이션 기반 사전 우선권 :
여기에서 아이디어는 원하는 전력 유형의 원하는 수준을 산출하는 값을 찾을 때까지 가능한 을 검색 하는 것입니다. 이론). 이러한 작은 효과를 포착하기 위해 이 필요하다는 것을 감안할 때, 더 효율적으로 수행하는 방법에 대해 생각할 가치가 있습니다. 나의 전형적인 접근법은 단순히 무차별적인 힘이다. 즉, 내가 합리적으로 고려할 수있는 각각의 을 평가하는 것이다. (그러나, 나는 일반적으로 작은 범위만을 고려할 것이며, 적어도 이것과 비교하여 일반적으로 매우 작은 으로 작업하고 있습니다.) N N NNNNN
대신, 나의 전략은 가능한 을 괄호 로 묶어 전력의 범위를 파악하는 것이 었습니다. 따라서 을 500,000으로 선택 하고 코드를 다시 실행했습니다 (동일한 시드를 시작하는 데 1 시간 30 분이 걸렸습니다). 결과는 다음과 같습니다. NNN
sum(significant[,1])/repetitions # pre-specified effect power for var1
[1] 0.115
sum(significant[,2])/repetitions # pre-specified effect power for var2
[1] 0.091
sum(significant[,3])/repetitions # pre-specified effect power for var12
[1] 0.059
sum(significant[,4])/repetitions # pre-specified effect power for var1X2
[1] 0.606
sum(significant[,5])/repetitions # pre-specified effect power for var12X2
[1] 0.913
sum(significant[,7])/repetitions # power for likelihood ratio test of model
[1] 1
sum(significant[,6]==5)/repetitions # all effects power
[1] 0.005
sum(significant[,6]>0)/repetitions # any effect power
[1] 0.96
sum(significant[,4]&significant[,5])/repetitions # power for interaction terms
[1] 0.606
이를 통해 효과의 크기가 상당히 다양하므로이를 감지하는 능력이 다양하다는 것을 알 수 있습니다. 예를 들어, 의 효과는 감지하기가 특히 어려우며 5 억 개의 문자로도 시간의 6 %에 불과합니다. 반면에 모델 전체는 항상 null 모델보다 훨씬 낫습니다. 다른 가능성은 사이에 배열됩니다. 대부분의 '데이터'는 각 반복마다 버려지지만 여전히 약간의 탐색이 가능합니다. 예를 들어, 행렬을 사용하여 다른 변수의 확률이 유의 한 상관 관계를 평가할 수 있습니다 . var12significant
결론적으로, 복잡한 상황 과 큰 이 귀하의 상황에 수반 되었기 때문에 이것은 초기 의견에서 의심 / 주장한 것처럼 간단하지 않았습니다. 그러나 여기에 넣은 내용을 통해 일반적인 방법과 전력 분석과 관련된 문제에 대한 아이디어를 얻을 수 있습니다. HTH. N