2017-05-19 1 views
3

성공/실패 데이터 (일정 기간 동안 생존/사망 한 나무)가 있고 각 관측치 (7 개 사이트)와 관련된 이항 분포의 오류를 추정하고 싶습니다. . 지금까지 나는 glm을 사용하여 다음과 같이했습니다.성공/실패 오류 추정 R

s <- c(1,20,0,40,2,1,0) # success 
f <- c(2,0,20,4,50,0,1) # failure 

#for each observation I would calculate this error: 

error <- vector() 
z_scores <- vector() 
p_value <- vector() 

    for (i in 1:7) { 
    models <- glm (cbind (s[i], f[i]) ~ 1, family = 'binomial') 
    error [i] <- summary (models)$coefficients[2] 
    z_scores [i] <- summary (models)$coefficients[3] 
    p_value [i] <- summary (models)$coefficients[4] 
    } 

이것이 최선의 방법일까요?

여기서 이항 분포의 확률은 어떻게됩니까? s 또는 f 중 하나가 여기에 =0

답변

5

때 성공과 실패에 상관없이 번호가 내 오류가 매우 높은

참고 사용하지 않고 (0으로 인한 극단적 인 것들 제외) 결과의 대부분을 다시 계산하는 몇 가지 코드 glm인데 그 뒤에있는 의미를 설명합니다.

s <- c(1, 20, 0, 40, 2, 1, 0) # success 
f <- c(2, 0, 20, 4, 50, 0, 1) # failure 

#for each observation I would calculate this error: 

error <- vector() 
z_scores <- vector() 
p_value <- vector() 

for (i in 1:7) { 
    models <- glm(cbind(s[i], f[i]) ~ 1, family = 'binomial') 
    error[i] <- summary(models)$coefficients[2] 
    z_scores[i] <- summary(models)$coefficients[3] 
    p_value[i] <- summary(models)$coefficients[4] 
} 

logit <- function(x){ 
    log(x/(1 - x)) 
} 

dlogit <- function(x){ 
    1/x/(1 - x) 
} 

p_hat <- s/(s + f) 
## sqrt(p_hat * (1 - p_hat)/(s + f)) 
## is the standard error of p_hat 
## error1 is the standard error of logit(p_hat) 
error1 <- dlogit(p_hat) * sqrt(p_hat * (1 - p_hat)/(s + f)) 
## divide the estimation by the standard error, you get z-score 
z_scores1 <- logit(p_hat)/error1 
p_value1 <- 2 * pnorm(-abs(z_scores1)) 

당신이 알아야 할 첫 번째 것은 우리가 처음이 경우 일부 모델 (이 통계에서 등 표준 오류, Z 점수, p 값이 뒤에 근거이며, 이항 모델 : s|(s+f) ~ Binomial(s + f, p)) 및 우리는 데이터가 무작위로 생성되기 때문에)

2)이 경우 (p을 추정를 얻을 수)에 우리가 가지고있는 데이터와

1에 맞게 사용하려면, 우리는 여기에 온다, 우리의 추정 ​​방법을 잘 알고 싶어 표준 오차, z- 점수 및 p- 값을 사용하여 "추정의 난수를 측정"하고, 여기에 몇 가지 중요한 "트릭"이 있습니다. t 우리는 약 만드는 가정

에 의해 우리의 추정에 임의성을 계산할 수, 데이터를 생성 진정한 메커니즘을 알고

가) 우리의 모델 (또는 실제 데이터 생성의 메커니즘과

B)과 유사) 실제 매개 변수는 우리의 추정과 유사합니다 (이 경우에는 큰 샘플 크기가 필요합니다.이 경우 샘플 크기는 s + f이므로 s + f은 추론 (표준 오류, z- 점수 및 p- 값)을 검증 할 수있을만큼 커야합니다) . 그리고 i = 1, 6 및 7 인 경우 표본 크기가 실제로 작아서 해당 표준 오류, z- 점수 및 p- 값이 놀라운 것을 알 수 있습니다.

그리고 나서 계산에 대한 기술적 인 세부 사항과 그 의미에 대해 이야기 할 수 있습니다.

logit(p) ~ N(mu, sigma^2)

을 그리고 로짓 함수를 그냥 내 코드에서 그와 같다 : glm에서는 Binomial(n, p) 모델 외에, 당신은 또한이 같은 p에 대한 모델을 가정합니다. 이 간단한 경우

는 이항 확률 p 대한 추정은 단지 p_hat <- s/(s + f) (사용 glm 여부)이며, 이항 변수의 분산 식으로부터, 우리는 상기 추정 된 확률에 대한 분산을 얻을 수 p 여기하다면 p * (1 - p)/n이고 우리는 p_hat <- s/(s + f)이 가정 b에 의해 p 실제와 유사하다고 생각하고 p을 대체하기 위해 사용하면 p으로 표준 오류를 얻을 수 있습니다.CLT 및 델타 방법에 따라 샘플 크기가 충분히 큰 경우 s/(s + f) 또는 logit(s/(s + f))을 정규 분포에 따라 처리 할 수 ​​있습니다. 예를 들어 s/(s + f)은 약 N(p, s * f/(s + f)^3)이고 logit(s/(s + f))은 약 N(logit(p), dlogit(s/(s + f))^2 * s * f/(s + f)^3)입니다.

단순히 말하면, glm이 계산하는 표준 오차, z- 점수 및 p- 값은 logit(s/(s + f))에 대한 표준 오차, z- 점수 및 p- 값입니다. 귀무 가설에 대한 유효한 결과는 logit(p) = 0, 즉 p = 0.5입니다. 따라서 glm에서 얻은 z 점수와 p 값은 s + f이 큰 경우 sf이 동일한 확률로 발생하는지 테스트하는 것입니다.

그리고, I는 0 s 또는 f 0, f 또는 s 이것이 사실이라면, 1 할 것이다 발생의 추정 확률과 동일 의한 극한 값 얘기한다은 데이터 생성 메커니즘은 실제로 비 - 랜덤 !! !! 처음에 우리는 추정치를 사용하여 추정치를 대략적으로 계산한다고 말했고, s 또는 f이 0과 같다고 가정 할 때, 추정치를 근거 진리로 사용한다면 추정치를 100 %로 믿어야합니다 , 그것은 우스운 종류 다. 그런 경우 glm과 같은 많은 메소드가 유효하지 않습니다. 일반적으로 샘플 크기가 s + f이면 충분히 크며 또는 f = 0 인 경우 s 또는 f의 확률은 실제로 작지만 6 또는 7과 같이 샘플 크기가 실제로 작 으면 실제로 도달 할 수 없다고 생각합니다. 결론.

이항 모델이 glm 결과에서, 참이면 결론적으로, 위의 규정 내 코드 내 분석, 우리는 경우 i = 2, 3, 4, 5에, sf의 확률이 서로 크게 다르다는 것을 말할 수있다.