ฉันสามารถตีความการรวมคำศัพท์กำลังสองในการถดถอยโลจิสติกส์เพื่อระบุจุดเปลี่ยนได้หรือไม่?


12

ในการถดถอยโลจิสติกับการเชิงเส้นและสมการกำลังสองแง่เท่านั้นถ้าฉันมีค่าสัมประสิทธิ์เชิงเส้นβ1และสมการกำลังสองค่าสัมประสิทธิ์β2ผมสามารถพูดได้ว่ามีจุดของความน่าจะเปลี่ยนที่β1/(2β2) ?

คำตอบ:


17

ใช่คุณสามารถ.


รูปแบบคือ

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

เมื่อβ2ไม่ใช่ศูนย์นี้มีเอ็กซ์ทั่วโลกที่x=β1/(2β2)beta_2)

การถดถอยโลจิสติกประมาณการค่าสัมประสิทธิ์เหล่านี้เป็นb_2) เพราะนี่คือการประเมินความน่าจะเป็นสูงสุด (ML และประมาณการของการทำงานของพารามิเตอร์ที่มีฟังก์ชั่นเดียวกันของประมาณการ) เราสามารถประมาณสถานที่ตั้งของเอ็กซ์เป็นที่(2b_2)(b0,b1,b2)b1/(2b2)

ช่วงความเชื่อมั่นสำหรับการประมาณนั้นน่าสนใจ สำหรับชุดข้อมูลที่มีขนาดใหญ่พอสำหรับทฤษฎีความน่าจะเป็นสูงสุดของซีมโทติคที่จะนำไปใช้เราสามารถหาจุดสิ้นสุดของช่วงเวลานี้ได้โดยการแสดงในแบบฟอร์มอีกครั้งβ0+β1x+β2x2

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

และค้นหาว่าสามารถเปลี่ยนแปลงได้มากน้อยเพียงใดก่อนที่ความน่าจะเป็นของบันทึกจะลดลงมากเกินไป "มากเกินไป" คือ asymptotically ครึ่งหนึ่งของ quantile ของการแจกแจงแบบไคสแควร์ที่มีอิสระในระดับหนึ่งγ1α/2

วิธีการนี้จะทำงานได้ดีหากช่วงของครอบคลุมทั้งสองด้านของยอดเขาและมีจำนวนการตอบสนองที่และเพียงพอในค่าเพื่ออธิบายจุดสูงสุดนั้น มิฉะนั้นที่ตั้งของจุดสูงสุดจะมีความไม่แน่นอนสูงและการประมาณการเชิงซีโมติกอาจไม่น่าเชื่อถือx01y


Rรหัสที่จะดำเนินการนี้อยู่ด้านล่าง มันสามารถใช้ในการจำลองเพื่อตรวจสอบว่าครอบคลุมช่วงความเชื่อมั่นใกล้เคียงกับความคุ้มครองที่ตั้งใจไว้ สังเกตว่าจุดสูงสุดที่แท้จริงคือและ - โดยดูที่แถวล่างของฮิสโทแกรม - ขีดจำกัดความเชื่อมั่นที่ต่ำกว่าส่วนใหญ่จะน้อยกว่ามูลค่าที่แท้จริงและขีด จำกัด ความเชื่อมั่นส่วนใหญ่ส่วนใหญ่นั้นสูงกว่าค่าที่แท้จริง อย่างที่เราหวัง ในตัวอย่างนี้ความครอบคลุมที่ตั้งใจไว้คือและความครอบคลุมจริง (ลดสี่ในกรณีที่การถดถอยโลจิสติกไม่ได้มาบรรจบกัน) เท่ากับซึ่งบ่งชี้ว่าวิธีการทำงานได้ดี (สำหรับชนิดของข้อมูลจำลอง ที่นี่)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 ในกรณีเช่นนี้? ฉันเคยทำแบบนั้นเพื่อแสดงให้เห็นว่าจุดสูงสุดของเส้นโค้งกำลังสองที่เหมาะสำหรับกลุ่มหนึ่งนั้นมากกว่ากลุ่มอื่น
gung - Reinstate Monica

มันอาจใช้งานได้ @ gung แต่ทฤษฎี bootstrapping ก็มีไว้สำหรับกลุ่มตัวอย่างขนาดใหญ่ ในใบสมัครของคุณอาจมีการทดสอบการเปลี่ยนแปลง
whuber

เย็น. แต่จุดเปลี่ยนอาจไม่อยู่นอกช่วงข้อมูลหรือไม่ แล้วมันจะเป็นอันตรายหากคาดการณ์
Peter Flom - Reinstate Monica

@ Peter ถูกต้องซึ่งเป็นเหตุผลที่ฉันให้ความเห็นว่า "วิธีการนี้จะทำงานได้ดีหากช่วง x ครอบคลุมทั้งสองด้านของยอด"
whuber

@ เมื่อโอ๊ะฉันพลาดไปแล้ว ขออภัย
Peter Flom - Reinstate Monica
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.