Ваша модель передбачає, що успіх гнізда може розглядатися як азарт: Бог перекидає завантажену монету зі сторонами, позначеними "успіх" і "провал". Результат обертання одного гнізда не залежить від результату перекидання для будь-якого іншого гнізда.
Однак у птахів щось для них відбувається: монета може сильно сприяти успіху при деяких температурах порівняно з іншими. Таким чином, коли у вас є шанс спостерігати гнізда при заданій температурі, кількість успіхів дорівнює кількості успішних обертів однієї і тієї ж монети - одна для цієї температури. Відповідний біноміальний розподіл описує шанси на успіх. Тобто вона встановлює ймовірність нульових успіхів одного, двох, ... і так далі через кількість гнізд.
Одна розумна оцінка залежності між температурою та тим, як Бог завантажує монети, дається пропорцією успіхів, досягнутих при цій температурі. Це максимальна оцінка ймовірності (MLE).
Наприклад, припустимо, що ви спостерігаєте гнізд при температурі градусів, і з цих гнізд є успішними. MLE - Тобто ми вважаємо, що Божа монета має шансів проявити успіх. Відповідний біноміальний розподіл побудований у першому рядку рисунка (див. Нижче) під заголовком "10 градусів". Він представляє шанси з висотами вертикальних відрізків ліній. Червоний сегмент відповідає спостережуваному значенню успіхів.71033/7.3/73
Температура повинна змінюватись у ваших даних. Як приклад, припустимо, що при температурі градусів ви спостерігали успіху серед гнізд. Цей набір даних побудований за допомогою сірих кіл на панелях "Fit" фігури. Висота кола представляє його успішність. Площі кола пропорційні кількості гнізд (тим самим підкреслюючи дані з більшою кількістю гнізд).5,10,15,200,3,2,32,7,5,3
У верхньому рядку рисунка показані ПДЧ при кожній із чотирьох спостережуваних температур. Червона крива на панелі "Fit" відстежує, як завантажується монета, залежно від температури. За побудовою цей слід проходить через кожну з точок даних. (Що це робить при проміжних температурах, невідомо; я жорстоко пов'язав значення, щоб підкреслити цю точку.)
Ця "насичена" модель не дуже корисна, саме тому, що вона не дає нам підстави оцінювати, як Бог буде завантажувати монети при проміжних температурах. Для цього нам потрібно припустити, що існує якась крива «тренду», яка пов’язує навантаження монети з температурою.
Нижній ряд фігури відповідає такій тенденції. Тенденція обмежена тим, що вона може робити: коли намічається графік у відповідних координатах ("коефіцієнти журналу"), як показано на панелях "Логічний відповідь" зліва, він може слідувати лише прямій лінії. Будь-яка така пряма лінія визначає завантаження монети при будь-яких температурах, як показано відповідною вигнутою лінією на панелях "Fit". Це навантаження, у свою чергу, визначає біноміальні розподіли за всіх температур. У нижньому ряду наводяться ті розподіли за температурами, де спостерігалися гнізда. (Пунктирні чорні лінії позначають очікувані значення розподілів, допомагаючи їх досить точно визначити. Ви не бачите цих рядків у верхньому рядку фігури, оскільки вони збігаються з червоними сегментами.)
Тепер слід здійснити компроміс: лінія може проходити близько до деяких точок даних, лише переходити далеко від інших. Це змушує відповідний біноміальний розподіл присвоювати менші ймовірності більшості спостережуваних значень, ніж раніше. Це можна чітко бачити при 10 градусах і 15 градусах: ймовірність спостережуваних значень не є найбільшою можливою ймовірністю, а також не близькою до значень, призначених у верхньому рядку.
Логістична регресія ковзає і розмахує можливими лініями навколо (в системі координат, що використовується панелями "Відповідь Логіта"), перетворює їх висоту в біноміальні ймовірності (панелі "Придатний"), оцінює шанси, присвоєні спостереженням (чотири праві панелі ) і вибирає лінію, яка найкраще поєднує ці шанси.
Що таке "найкраще"? Просто, що сукупна ймовірність усіх даних максимально велика. Таким чином, жодна єдина ймовірність (червоні сегменти) не може бути по-справжньому крихітною, але зазвичай більшість ймовірностей не будуть настільки високими, як це було у насиченій моделі.
Ось одна ітерація пошуку логістичної регресії, де лінія повернута вниз:
По-перше, зауважте, що залишилось незмінним: сірі точки в розсипці "Fit" фіксуються, оскільки вони представляють дані. Так само фіксуються діапазони значень і горизонтальні положення червоних сегментів у чотирьох двочленних графіках, оскільки вони також представляють дані. Однак ця нова лінія завантажує монети докорінно іншим чином. При цьому він змінює чотири біноміальних розподілу (сірі сегменти). Наприклад, він дає монеті приблизно 70% успішності при температурі градусів, що відповідає розподілу, ймовірність якого найбільша за 4 до 6 успіхів. Цей рядок насправді чудово справляється зі зміною даних для1015градусів, але жахлива робота зі встановлення інших даних. (При 5 і 20 градусах біноміальні ймовірності, присвоєні даним, настільки крихітні, що навіть червоних сегментів ви не бачите.) Загалом, це набагато гірше, ніж ті, що показані на першій фігурі.
Я сподіваюся, що ця дискусія допомогла вам розробити ментальний образ зміни біноміальних ймовірностей, що змінюються, коли лінія змінюється, зберігаючи дані однаковими. Лінія, що відповідає логістичній регресії, намагається зробити ці червоні смуги максимально високими. Таким чином, зв’язок між логістичною регресією та сімейством біноміальних розподілів є глибоким та інтимним.
Додаток: R
код для отримання фігур
#
# Create example data.
#
X <- data.frame(temperature=c(5,10,15,20),
nests=c(2,7,5,3),
successes=c(0,3,2,3))
#
# A function to plot a Binomial(n,p) distribution and highlight the value `k0`.
#
plot.binom <- function(n, p, k0, highlight="#f02020", ...) {
plot(0:n, dbinom(0:n, n, p), type="h", yaxt="n",
xlab="Trials", ylab="Probability", ...)
abline(v = p*n, lty=3, lwd=2)
if(!missing(k0)) lines(rep(k0,2), c(0, dbinom(k0,n,p)), lwd=2, col=highlight)
}
#
# A function to convert from probability to log odds.
#
logit <- function(p) log(p) - log(1-p)
#
# Fit a saturated model, then the intended model.
#
# Ordinarily the formula for the saturated model would be in the form
# `... ~ factor(temperature)`, but the following method makes it possible to
# plot the predicted values in a visually effective way.
#
fit.0 <- glm(cbind(successes, nests-successes) ~ factor(round(temperature/5)),
data=X, family=binomial)
summary(fit.0)
fit <- glm(cbind(successes, nests-successes) ~ temperature,
data=X, family=binomial)
summary(fit)
#
# Plot both fits, one per row.
#
lfits <- list(fit.0, fit)
par.old <- par(mfrow=c(length(lfits), nrow(X)+2))
for (fit in lfits) {
#
# Construct arrays of plotting points.
#
X$p.hat <- predict(fit, type="response")
Y <- data.frame(temperature = seq(min(X$temperature), max(X$temperature),
length.out=101))
Y$p.hat <- predict(fit, type="response", newdata=Y) # Probability
Y$lambda.hat <- predict(fit, type="link", newdata=Y) # Log odds
#
# Plot the fit in terms of log odds.
#
with(Y, plot(temperature, lambda.hat, type="n",
yaxt="n", bty="n", main="Logit Response",
ylab=expression(hat(lambda))))
if (isTRUE(diff(range(Y$lambda.hat)) < 6)) {
# Draw gridlines and y-axis labels
p <- c( .10, .25, .5, .75, .9)
q <- logit(p)
suppressWarnings(rug(q, side=2))
abline(h=q, col="#d0d0d0")
mtext(signif(p, 2), at=q, side=2, cex=0.6)
}
with(Y, lines(temperature, lambda.hat, lwd=2, col="#f02020"))
#
# Plot the data and the fit in terms of probability.
#
with(X, plot(temperature, successes/nests, ylim=0:1,
cex=sqrt(nests), pch=21, bg="Gray",
main="Fit"))
with(Y, lines(temperature, p.hat, col="#f02020", lwd=2))
#
# Plot the Binomial distributions associated with each row of the data.
#
apply(X, 1, function(x) plot.binom(x[2], x[4], x[3], bty="n", lwd=2, col="Gray",
main=paste(x[1], "Degrees")))
}
par(mfrow=par.old)