Lojistik regresyona ikinci dereceden bir terimin dahil edilmesini bir dönüm noktası olarak yorumlayabilir miyim?


12

Lineer ve kuadratik terim içeren bir Lojistik Regresyon sadece ben varsa doğrusal katsayısı β1 ve kuadratik katsayısı β2 , diyebilirim ki orada en olasılık dönüm noktası β1/(2β2) ?

Yanıtlar:


17

Evet yapabilirsin.


Model

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

Tüm sıfır ise, bu küresel bir extremum sahip .β2x=β1/(2β2)

Lojistik regresyon bu katsayıları olarak tahmin eder . Bu maksimum olabilirlik tahmini olduğundan (ve parametrelerin işlevlerinin ML tahminleri tahminlerin aynı işlevleridir), ekstremumun olduğunu tahmin edebiliriz .(b0,b1,b2)b1/(2b2)

Bu tahmin için bir güven aralığı ilgi çekici olacaktır. Asimptotik maksimum olabilirlik kuramı uygulamak için yeterince büyük olan veri setleri için, bu aralığın son noktalarını bulabilirsiniz yeniden ifade şeklindeβ0+β1x+β2x2

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

ve günlük olasılığı çok fazla azalmadan ne kadar değiştirilebileceğini bulmak . "Çok fazla", asimptotik olarak, bir serbestlik derecesine sahip ki-kare dağılımının kantilinin yarısıdır .γ1α/2

Bu yaklaşım, aralıkları zirvenin her iki tarafını da kapsıyorsa ve bu zirveyi tanımlamak için değerleri arasında yeterli sayıda ve yanıt olması koşuluyla iyi çalışır . Aksi takdirde, zirvenin yeri oldukça belirsiz olacaktır ve asimptotik tahminler güvenilir olmayabilir.x01y


RBunu gerçekleştirmek için kod aşağıdadır. Güven aralıklarının kapsamının hedeflenen kapsama yakın olup olmadığını kontrol etmek için bir simülasyonda kullanılabilir. Gerçek zirvenin nasıl olduğuna ve - histogramların alt sırasına bakarak - alt güven sınırlarının çoğunun gerçek değerden daha az ve üst güven sınırlarının çoğunun gerçek değerden daha büyük olduğuna dikkat edin, umduğumuz gibi. Bu örnekte, amaçlanan kapsam ve gerçek kapsam ( lojistik regresyonun yakınsamadığı vakadan dördünün iskonto edilmesi ) olup, yöntemin iyi çalıştığını gösterir (simüle edilen veri türleri için) buraya).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")

Sonuçlar

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, harika cevap. Bazı uyarılardan asimptotik yaklaşımdan bahsediyorsunuz; Bu gibi durumlarda CI'yi önyüklemeyi düşünüyorsunuz? Bir keresinde, bir grup için kuadratik eğrinin zirvesinin diğer gruba göre daha büyük olduğunu göstermek için yaptım.
gung - Monica'yı eski durumuna getirin

Çalışabilir @ gung, ancak önyükleme teorisi de büyük örnekler içindir. Başvurunuzda belki de bir permütasyon testi haklı görülebilir.
whuber

Güzel. Ancak dönüm noktası veri aralığının dışında olmayabilir mi? Ve sonra tahmin etmek tehlikeli olur.
Peter Flom - Monica'yı eski durumuna döndürün

@Peter Doğru, bu yüzden "Bu yaklaşım, x aralıkları zirvenin her iki tarafını kapladığı sürece iyi çalışacaktır" şeklinde yorum yaptım.
whuber

@whuber Hata! Bunu kaçırdım. Üzgünüz
Peter Flom - Monica'yı eski durumuna döndürün
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.