혼란스러운 언어입니다. 보고 된 값의 이름은 z- 값입니다. 그러나이 경우 실제 편차 대신 추정 표준 오차를 사용합니다 . 따라서 실제로 t- 값에 더 가깝습니다 . 다음 세 가지 출력을 비교하십시오.
1) summary.glm
2) t-test
3) z-test
> set.seed(1)
> x = rbinom(100, 1, .7)
> coef1 <- summary(glm(x ~ 1, offset=rep(qlogis(0.7),length(x)), family = "binomial"))$coefficients
> coef2 <- summary(glm(x ~ 1, family = "binomial"))$coefficients
> coef1[4] # output from summary.glm
[1] 0.6626359
> 2*pt(-abs((qlogis(0.7)-coef2[1])/coef2[2]),99,ncp=0) # manual t-test
[1] 0.6635858
> 2*pnorm(-abs((qlogis(0.7)-coef2[1])/coef2[2]),0,1) # manual z-test
[1] 0.6626359
정확한 p- 값이 아닙니다. 이항 분포를 사용하여 p- 값을 정확하게 계산하면 더 잘 작동합니다 (현재 컴퓨팅 성능으로 문제가되지 않음). 오차의 가우스 분포를 가정 할 때 t- 분포는 정확하지 않습니다 (p를 과대 평가하고 알파 수준을 초과하면 "실제"에서 덜 자주 발생 함). 다음 비교를 참조하십시오.
# trying all 100 possible outcomes if the true value is p=0.7
px <- dbinom(0:100,100,0.7)
p_model = rep(0,101)
for (i in 0:100) {
xi = c(rep(1,i),rep(0,100-i))
model = glm(xi ~ 1, offset=rep(qlogis(0.7),100), family="binomial")
p_model[i+1] = 1-summary(model)$coefficients[4]
}
# plotting cumulative distribution of outcomes
outcomes <- p_model[order(p_model)]
cdf <- cumsum(px[order(p_model)])
plot(1-outcomes,1-cdf,
ylab="cumulative probability",
xlab= "calculated glm p-value",
xlim=c(10^-4,1),ylim=c(10^-4,1),col=2,cex=0.5,log="xy")
lines(c(0.00001,1),c(0.00001,1))
for (i in 1:100) {
lines(1-c(outcomes[i],outcomes[i+1]),1-c(cdf[i+1],cdf[i+1]),col=2)
# lines(1-c(outcomes[i],outcomes[i]),1-c(cdf[i],cdf[i+1]),col=2)
}
title("probability for rejection as function of set alpha level")
검은 색 곡선은 평등을 나타냅니다. 빨간색 곡선이 그 아래에 있습니다. 이것은 glm 요약 함수에 의해 주어진 계산 된 p- 값에 대해,이 상황 (또는 더 큰 차이)이 p- 값이 나타내는 것보다 실제로 덜 자주 발견됨을 의미합니다.
glm