로지스틱 회귀 분석에 2 차 항이 포함되어 전환점을 나타내는 것으로 해석 할 수 있습니까?


12

선형 및 2 차 있는 로지스틱 회귀 분석에서 선형 계수 및 2 차 계수 가있는 경우 확률의 전환점이 있다고 말할 수 있습니까?β1β2β1/(2β2)

답변:


17

그래 넌 할수있어.


모델은

Pr(Y=1)=11+exp([β0+β1x+β2x2]).

경우 β2 제로이고, 이는에서의 글로벌 극한치 갖는다 x=β1/(2β2) .

로지스틱 회귀 분석 에서는 이러한 계수를 로 추정 합니다 . 이것은 최대 우도 추정치이므로 매개 변수 함수의 ML 추정치는 추정치와 동일한 함수이므로 극한의 위치는 입니다.(b0,b1,b2)b1/(2b2)

해당 추정치에 대한 신뢰 구간이 중요합니다. 점근 적 최대 우도 이론을 적용하기에 충분히 큰 데이터 집합의 경우 를 다음 형식 으로 다시 표현하여이 구간의 끝점을 찾을 수 있습니다.β0+β1x+β2x2

β0+β1x+β2x2=β0β12/(4β2)+β2(x+β1/(2β2))2=β+β2(x+γ)2

로그 가능성이 너무 낮아지기 전에 얼마나 많은 가 변할 수 있는지 찾는 것. "너무 많이"는 무증상으로 1 자유도를 갖는 카이 제곱 분포 의 분위수의 1/2 입니다.γ1α/2

이 방법은 의 범위가 피크의 양 측면을 커버 하고 값 사이에 해당 피크를 묘사 하기에 충분한 수의 과 응답이있는 한 잘 작동 합니다. 그렇지 않으면, 피크의 위치는 매우 불확실하고 점근 적 추정치는 신뢰할 수 없을 것이다.x01y


R이를 수행하는 코드는 다음과 같습니다. 신뢰 구간의 적용 범위가 의도 한 적용 범위에 가까운 지 확인하기 위해 시뮬레이션에서 사용할 수 있습니다. 실제 피크가 이고 히스토그램의 맨 아래 행을 보면 신뢰 하한의 대부분이 실제 값보다 작고 신뢰 상한이 대부분이 실제 값보다 큰 방법에 유의하십시오. 우리가 바라는대로. 이 예에서 의도 된 적용 범위는 이고 실제 적용 범위 ( 물류 회귀가 수렴하지 않은 사례 중 4 개 제외 )는 이며 방법이 제대로 작동하고 있음을 나타냅니다 (시뮬레이션 된 데이터 종류에 대해) 여기).1/212(0.05)=0.905000.91

n <- 50            # Number of observations in each trial
beta <- c(-1,2,2)  # Coefficients
x <- seq(from=-3, to=3, length.out=n)
y0 <- cbind(rep(1,length(x)), x, x^2) %*% beta

# Conduct a simulation.
set.seed(17)
sim <- replicate(500, peak(x, rbinom(length(x), 1, logistic(y0)), alpha=0.05))

# Post-process the results to check the actual coverage.
tp <- -beta[2] / (2 * beta[3])
covers <- sim["lcl",] <= tp & tp <= sim["ucl",]
mean(covers, na.rm=TRUE) # Should be close to 1 - 2*alpha

# Plot the distributions of the results.
par(mfrow=c(2,2))
plot(x, logistic(y0), type="l", lwd=2, col="#4040d0", main="Simulated Data",ylim=c(0,1))
points(x, rbinom(length(x), 1, logistic(y0)), pch=19)
hist(sim["peak.x",], main="Estimates"); abline(v=tp, col="Red")
hist(sim["lcl",], main="Lower Confidence Limits"); abline(v=tp, col="Red")
hist(sim["ucl",], main="Upper Confidence Limits"); abline(v=tp, col="Red")

결과

logistic <- function(x) 1 / (1 + exp(-x))

peak <- function(x, y, alpha=0.05) {
  #
  # Estimate the peak of a quadratic logistic fit of y to x
  # and a 1-alpha confidence interval for that peak.
  #
  logL <- function(b) {
    # Log likelihood.
    p <- sapply(cbind(rep(1, length(x)), x, x*x) %*% b, logistic)
    sum(log(p[y==1])) + sum(log(1-p[y==0]))
  }
  f <- function(gamma) {
    # Deviance as a function of offset from the peak.
    b0 <- c(b[1] - b[2]^2/(4*b[3]) + b[3]*gamma^2, -2*b[3]*gamma, b[3])
    -2.0 * logL(b0)
  }
  # Estimation.
  fit <- glm(y ~ x + I(x*x), family=binomial(link = "logit"))
  if (!fit$converged) return(rep(NA,3))

  b <- coef(fit)
  tp <- -b[2] / (2 * b[3])

  # Two-sided confidence interval:
  # Search for where the deviance is at a threshold determined by alpha.
  delta <- qchisq(1-alpha, df=1)
  u <- sd(x)
  while(fit$deviance - f(tp+u) + delta > 0) u <- 2*u # Find an upper bound
  l <- sd(x)
  while(fit$deviance - f(tp-l) + delta > 0) l <- 2*l # Find a lower bound
  upper <- uniroot(function(gamma) fit$deviance - f(gamma) + delta, 
                   interval=c(tp, tp+u))
  lower <- uniroot(function(gamma) fit$deviance - f(gamma) + delta, 
                   interval=c(tp-l, tp))

  # Return a vector of the estimate, lower limit, and upper limit.
  c(peak=tp, lcl=lower$root, ucl=upper$root)
}

+1, 좋은 답변입니다. 점근 적 접근 방식에 대한 몇 가지주의 사항을 언급했습니다. 이와 같은 경우 CI 부트 스트랩에 대해 어떻게 생각하십니까? 한 번은 한 그룹에 대한 2 차 곡선의 피크가 다른 그룹의 피크보다 크다는 것을 보여주기 위해 그렇게했습니다.
gung-모니 티 복원

@gung에서도 효과가있을 수 있지만 부트 스트랩 이론은 큰 샘플에도 적용됩니다. 응용 프로그램에서 아마도 순열 테스트가 정당화 될 수 있습니다.
whuber

멋있는. 그러나 전환점이 데이터 범위를 벗어나지 않을 수 있습니까? 그리고 외삽하는 것은 위험합니다.
Peter Flom-Monica Monica 복원

@Peter 맞습니다. "이 접근 방식은 x의 범위가 피크의 양쪽을 모두 덮으면 잘 작동합니다."라고 말했습니다.
whuber

@ whuber 죄송합니다. 죄송합니다
Peter Flom-Monica Monica 복원
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.