Як ggplot обчислює довірчі інтервали для регресії?


15

Пакет R-графіки ggplot2 має дивовижну функцію під назвою stat_smooth для побудови лінії регресії (або кривої) з пов'язаною смугою довіри.

Однак мені важко зрозуміти, як саме формується ця смуга довіри для кожного періоду регресії (або "методу"). Як я можу знайти цю інформацію?


2
Дивіться розділ «Деталі» у вашому посиланні.
Стефан Лоран

1
@ StéphaneLaurent: Я прочитав цей розділ, але у мене все ще виникають проблеми з підключенням крапок. Я використовую метод "rlm" для встановлення рядка, як обчислюється довірчий інтервал (математично, яке рівняння / алгоритм?)? Як я можу знайти цю інформацію?
static_rtti

1
Тому я думаю, вам слід задати більш точне запитання.
Stéphane Laurent

1
Я думаю, що ваше запитання досить точне ... але я підозрюю, що ви тут не отримаєте відповіді. Можливо, вам пощастить у групі ggplot2 google: groups.google.com/forum/?fromgroups#!forum/ggplot2
russellpierce

Відповіді:


22

З Detailsрозділу довідки

Розрахунок виконується за загальною функцією прогнозованого PDF (та на даний момент недокументованою) та її методами. Для більшості методів довірчі межі обчислюються за допомогою методу прогнозування - винятки становлять льосові, які використовують наближення, засноване на t, і для glm, коли нормальний довірчий інтервал побудований за шкалою зв'язку, а потім перетворений на шкалу відгуку.

Таким чином, передбачуваний файл , як правило, викликає stats::predict, що, в свою чергу, називатиме правильний predictметод методу згладжування. Інші функції, що включають stat_smooth , також корисні для розгляду.

Більшість функцій підгонки моделі матимуть predictметод, пов'язаний із classмоделлю. Зазвичай вони беруть newdataоб'єкт і аргумент, se.fitякий позначатиме, чи будуть встановлені стандартні помилки. (див. ?predict) для отримання детальної інформації.

se
інтервал довіри відображення навколо гладкого? (TRUE за замовчуванням, див. Рівень для контролю

Це передається безпосередньо методу прогнозування для повернення відповідних стандартних помилок (метод залежить)

fullrange
якщо відповідність охоплює весь діапазон сюжету, або лише дані

Це визначає newdataзначення, за xякими будуть оцінюватися прогнози

level рівень довірчого інтервалу для використання (0.95 за замовчуванням)

Передається безпосередньо методу прогнозування, щоб інтервал довіри міг визначити відповідне критичне значення (наприклад, predict.lmвикористання qt((1 - level)/2, df)стандартних помилок, помножених на

n кількість балів, щоб оцінити плавніше

Використовується спільно з fullrangeдля визначення xзначень уnewdata об'єкті.

У межах дзвінка до stat_smoothвас можна визначити se, що саме частково відповідає se.fit(або se), і визначити intervalаргумент, якщо потрібно.levelдасть рівень довірчого інтервалу (за замовчуванням 0,95).

newdataОб'єкт визначається в межах обробки, в залежності від настройки fullrangeдо послідовності довжиниn в межах повного діапазону ділянки або даних.

У вашому випадку, використовуючи rlm, це використовуватиме predict.rlm, що визначено як

predict.rlm <- function (object, newdata = NULL, scale = NULL, ...)
{
    ## problems with using predict.lm are the scale and
    ## the QR decomp which has been done on down-weighted values.
    object$qr <- qr(sqrt(object$weights) * object$x)
        predict.lm(object, newdata = newdata, scale = object$s, ...)
}

Тож це внутрішнє виклик predict.lmіз відповідним масштабуванням qrрозкладання та scaleаргументу.


... і predict.rlm приховано всередині MASS ... і заклик до predictdf передає аргументи моделі, xseq, se та аргументу рівня для predict.rlm ... але звідки вони взялися ці значення? Ну, мабуть, це залежить від того, що станеться, коли аргументи передаються від stat_smooth до StatSmooth $ new ... який потім по черзі дзвонить ...
russellpierce

1
Моя думка полягає в тому, що ваша відповідь - це крок у правильному напрямку, але відповідь на питання ОП повністю не настільки тривіальна, як спочатку здається (хоча можна очікувати, що код поводитиметься розважливо ... ніхто не впевнений, якщо хтось не простежить його повністю )
russellpierce

2
Можна очікувати, що код поводиться розважливо, якщо predictметод був налаштований стандартним чином. Я відредагував свою відповідь, щоб вирішити проблеми, порушені у вашому першому коментарі.
Менель

@mnel: велике спасибі за цю дуже детальну та корисну відповідь!
static_rtti
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.