Как рассчитать 95% интервал прогнозирования от NLS - PullRequest
0 голосов
/ 24 октября 2018

Заимствование данных примера из этого вопроса , если у меня есть следующие данные и я подгоняю к ним следующую нелинейную модель, как я могу вычислить прогноз 95% интервал для моей кривой?

library(broom)
library(tidyverse)

x <- seq(0, 4, 0.1)
y1 <- (x * 2 / (0.2 + x))
y <- y1 + rnorm(length(y1), 0, 0.2)

d <- data.frame(x, y)

mymodel <- nls(y ~ v * x / (k + x),
            start = list(v = 1.9, k = 0.19),
            data = d)

mymodel_aug <- augment(mymodel)

ggplot(mymodel_aug, aes(x, y)) +
  geom_point() +
  geom_line(aes(y = .fitted), color = "red") +
  theme_minimal()

enter image description here

В качестве примера я могу легко рассчитать интервал прогнозирования из линейной модели, подобной этой:

## linear example

d2 <- d %>%
  filter(x > 1)

mylinear <- lm(y ~ x, data = d2)

mypredictions <-
  predict(mylinear, interval = "prediction", level = 0.95) %>%
  as_tibble()

d3 <- bind_cols(d2, mypredictions)

ggplot(d3, aes(x, y)) +
  geom_point() +
  geom_line(aes(y = fit)) +
  geom_ribbon(aes(ymin = lwr, ymax = upr), alpha = .15) +
  theme_minimal()

enter image description here

1 Ответ

0 голосов
/ 24 октября 2018

Исходя из связанного вопроса, похоже, что функция investr::predFit будет делать то, что вы хотите.

investr::predFit(mymodel,interval="prediction")

?predFit не объясняет, как вычисляются интервалы, но ?plotFit говорит:

Полосы достоверности / прогнозирования для нелинейной регрессии (т. Е. Объекты класса 'nls') основаны на линейном приближении, как описано в Bates & Watts (2007).Эта функция [c] была создана в [s] функцией 'plotfit' из пакета 'nlstools'.

, также известный как Дельта-метод (например, см. emdbook::deltavar).

...