Як обчислити довірчий інтервал x-перехоплення в лінійній регресії?


9

Оскільки звичайна помилка лінійної регресії зазвичай задається для змінної реакції, мені цікаво, як отримати довірчі інтервали в іншому напрямку - наприклад, для перехоплення x. Я вмію уявити, що це може бути, але я впевнений, що для цього повинен бути простий спосіб. Нижче наводиться приклад в R, як це візуалізувати:

set.seed(1)
x <- 1:10
a <- 20
b <- -2
y <- a + b*x + rnorm(length(x), mean=0, sd=1)

fit <- lm(y ~ x)
XINT <- -coef(fit)[1]/coef(fit)[2]

plot(y ~ x, xlim=c(0, XINT*1.1), ylim=c(-2,max(y)))
abline(h=0, lty=2, col=8); abline(fit, col=2)
points(XINT, 0, col=4, pch=4)
newdat <- data.frame(x=seq(-2,12,len=1000))

# CI
pred <- predict(fit, newdata=newdat, se.fit = TRUE) 
newdat$yplus <-pred$fit + 1.96*pred$se.fit 
newdat$yminus <-pred$fit - 1.96*pred$se.fit 
lines(yplus ~ x, newdat, col=2, lty=2)
lines(yminus ~ x, newdat, col=2, lty=2)

# approximate CI of XINT
lwr <- newdat$x[which.min((newdat$yminus-0)^2)]
upr <- newdat$x[which.min((newdat$yplus-0)^2)]
abline(v=c(lwr, upr), lty=3, col=4)

введіть тут опис зображення


1
Ви можете самонастроювання це: library(boot); sims <- boot(data.frame(x, y), function(d, i) { fit <- lm(y ~ x, data = d[i,]) -coef(fit)[1]/coef(fit)[2] }, R = 1e4); points(quantile(sims$t, c(0.025, 0.975)), c(0, 0)). Для зворотних інтервалів прогнозування у довідковому файлі chemCal:::inverse.predictнаведено таке посилання, яке також може допомогти вивести КІ: Massart, LM, Vandenginste, BGM, Buydens, LMC, De Jong, S., Lewi, PJ, Smeyers-Verbeke, J. (1997 ) Посібник з хіміометрії та кваліметрики: Частина А, с. 200
Роланд

1
Що ви показуєте на графіку, це не ІС для перехоплення. Ви показуєте точки, де нижня та верхня довірчі лінії прогнозів перетинають вісь.
Roland

1
Часто в лінійній регресії є модель, яка говорить приблизно так:
Yi=α+βxi+εiwhere ε1,εni.i.d. N(0,σ2),
так що Ys трактуються як випадкові та хs як зафіксовано Це може бути виправдано, кажучи, що ви шукаєте умовного розподілу з огляду нахс. На практиці, якщо ви берете новий зразок, зазвичай це не тількиYs, але також хs, що змінюються, пропонуючи в деяких обставинах їх також вважати випадковими. Цікаво, чи це стосується пристойності
Майкл Харді


1
@AdrienRenaud - мені здається, що ваша відповідь надто спрощена, враховуючи асиметричні аспекти, про які я згадував, і підкреслюється вправою завантаження, яку проілюстрував Роланд. Якщо я не прошу занадто багато, можливо, ви могли б розширити можливий підхід, про який ви згадали.
Марк у коробці

Відповіді:


9

Як обчислити довірчий інтервал x-перехоплення в лінійній регресії?

Припущення

  • Використовуйте просту регресійну модель уi=α+βхi+εi.
  • Помилки мають звичайний розподіл, що залежить від регресорів ϵ|ХN(0,σ2Ян)
  • Підходять, використовуючи звичайний найменший квадрат

3 процедури обчислення довірчого інтервалу на х-перехопленні

Розширення Тейлора першого порядку

Ваша модель є Y=аХ+б з розрахунковим стандартним відхиленням σа і σб на а і б параметри і кошторисна коваріація σаб. Ви вирішуєте

аХ+б=0Х=-ба.

Потім стандартне відхилення σХ на Х задається:

(σХХ)2=(σбб)2+(σаа)2-2σабаб.

MIB

Дивіться код від Марка в полі в розділі Як обчислити довірчий інтервал x-перехоплення в лінійній регресії? .

CAPITANI-POLLASTRI

CAPITANI-POLLASTRI забезпечує функцію кумулятивного розподілу та функцію густини для відношення двох корельованих нормальних випадкових величин. Він може бути використаний для обчислення довірчого інтервалу x-перехоплення в лінійній регресії. Ця процедура дає (майже) однакові результати, як і результати MIB.

Дійсно, використовуючи звичайний найменший квадрат і припускаючи нормальність помилок, β^N(β,σ2(ХТХ)-1) (перевірено) та β^'s є співвіднесеними (перевіреними).

Процедура така:

  • отримати OLS-оцінювач для а і б.
  • отримати матрицю дисперсії та коваріації та витяг, σа,σб,σаб=ρσаσб.
  • Припустимо, що а і б слідкуйте за двокваріатним корельованим нормальним розподілом, N(а,б,σа,σб,ρ). Тоді функція щільності та функція кумулятивного розподілухiнтеrcеpт=-ба даються CAPITANI-POLLASTRI.
  • Використовуйте функцію кумулятивного розподілу хiнтеrcеpт=-ба обчислити бажані кванти та встановити інтервал впевненості.

Порівняння трьох процедур

Процедури порівнюються з використанням наступної конфігурації даних:

  • х <- 1:10
  • a <- 20
  • b <- -2
  • y <- a + b * x + rnorm (довжина (x), середнє = 0, sd = 1)

10000 різних проб генерують та аналізують за допомогою 3-х методів. Код (R), який використовується для створення та аналізу, можна знайти за посиланням: https://github.com/adrienrenaud/stackExchange/blob/master/crossValidated/q221630/answer.ipynb

  • MIB та CAPITANI-POLLASTRI дають рівноцінні результати.
  • Розширення Тейлора першого порядку істотно відрізняється від двох інших методів.
  • MIB та CAPITANI-POLLASTRI страждає від недостатнього покриття. Встановлено, що 68% (95%) ci містить справжнє значення 63% (92%) часу.
  • Розширення Тейлора першого порядку страждає від надмірного покриття. Встановлено, що 68% (95%) ci містять справжнє значення 87% (99%) часу.

Висновки

Розподіл х-перехоп асиметричний. Це виправдовує асиметричний довірчий інтервал. MIB та CAPITANI-POLLASTRI дають рівноцінні результати. CAPITANI-POLLASTRI має приємне теоретичне обгрунтування, і це дає підстави для MIB. MIB і CAPITANI-POLLASTRI страждає від помірного недоохоплення і може бути використаний для встановлення довірчих інтервалів.


Дякую за цю приємну відповідь. Чи означає цей метод, що стандартна помилка перехоплення x є симетричною? Інтервали передбачення на моїй фігурі означають, що це не так, і я бачив посилання на це в інших місцях.
Марк у коробці

Так, це означає симетричний інтервал. Якщо ви хочете асиметричний, ви можете використовувати ймовірність профілю, який розглядає параметри вашої моделі як параметри неприємності. Але це більше роботи :)
Адрієн Рено

Не могли б ви детальніше пояснити, як ви отримуєте це вираження (σХ/Х)2?

@fcop Це розширення Тейлора. Подивіться на en.wikipedia.org/wiki/Propagation_of_ucurityity
Адрієн Рено

2

Я рекомендую завантажувати залишки:

library(boot)

set.seed(42)
sims <- boot(residuals(fit), function(r, i, d = data.frame(x, y), yhat = fitted(fit)) {

  d$y <- yhat + r[i]

  fitb <- lm(y ~ x, data = d)

  -coef(fitb)[1]/coef(fitb)[2]
}, R = 1e4)
lines(quantile(sims$t, c(0.025, 0.975)), c(0, 0), col = "blue")

Отриманий сюжет

Те, що ви показуєте на графіку, - це точки, де нижня / верхня межа довірчої смуги прогнозів перетинає вісь. Я не думаю, що це межі надійності перехоплення, але, можливо, вони є приблизним наближенням.


Чудово - це вже виглядає розумніше, ніж приклад з вашого коментаря. Знову дякую.
Марк у коробці
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.