Как: интервалы прогнозирования для линейной регрессии с помощью начальной загрузки

14

У меня возникли проблемы, чтобы понять, как использовать начальную загрузку для расчета интервалов прогнозирования для модели линейной регрессии. Может кто-нибудь наметить пошаговую процедуру? Я искал через Google, но на самом деле ничего не имеет смысла для меня.

Я понимаю, как использовать начальную загрузку для расчета доверительных интервалов для параметров модели.

Максимум
источник
1
Это подробно обсуждается в книге Дэвисона и Хинкли « Методы начальной загрузки и их применение» , а также в явном алгоритме (Алгоритм 6.4). Они объясняют концепции, подводные камни и детали более подробно, чем это возможно при разумном ответе здесь.
Glen_b
@Glen_b Спасибо за ссылку. К сожалению, я не в университете или компании, поэтому у меня нет ресурсов для приобретения книги.
Макс
Это можно заказать у амазонки; Полное объяснение алгоритма и всех связанных с ним предостережений и проблем не совсем то, что вы можете охватить несколькими сотнями слов или даже одностраничным ответом.
Glen_b
1
@Glen_b Я написал алгоритм от Дэвисона и Хинкли - в CV есть несколько вопросов по этому поводу, поэтому я подумал, что это стоило усилий. Любые ваши комментарии будут оценены. stats.stackexchange.com/questions/226565/…
Билл
Эта ветка, кажется, отвечает на ваш вопрос: stats.stackexchange.com/questions/226565/…
user2683832

Ответы:

7

Доверительные интервалы учитывают неопределенность оценки. Интервалы прогнозирования добавляют к этому фундаментальную неопределенность. R predict.lmдаст вам интервал прогнозирования для линейной модели. Оттуда все, что вам нужно сделать, это запустить его несколько раз на загруженных сэмплах.

n <- 100
n.bs <- 30

dat <- data.frame( x<-runif(n), y=x+runif(n) )
plot(y~x,data=dat)


regressAndPredict <- function( dat ) {
  model <- lm( y~x, data=dat )
  predict( model, interval="prediction" )
}

regressAndPredict(dat)

replicate( n.bs, regressAndPredict(dat[ sample(seq(n),replace=TRUE) ,]) )

Результатом replicateявляется трехмерный массив ( nх 3х n.bs). Измерение длины 3 состоит из подогнанного значения для каждого элемента данных и нижних / верхних границ интервала прогнозирования 95%.

Метод Гэри Кинга

В зависимости от того, что вы хотите, есть классный метод Кинга, Томза и Виттенберга . Это относительно легко реализовать и позволяет избежать проблем начальной загрузки для определенных оценок (например max(Y)).

Я процитирую его определение фундаментальной неопределенности здесь, так как это довольно приятно:

Вторая форма изменчивости, фундаментальная неопределенность, представленная стохастическим компонентом (распределение f) в уравнении 1, является результатом неисчислимых случайных событий, таких как погода или болезнь, которые могут влиять на Y, но не включаются в X. Даже если мы знали точные значения параметров (таким образом устраняя неопределенность оценки), фундаментальная неопределенность помешала бы нам предсказать Y без ошибок.

Ари Б. Фридман
источник
3
Не уверен, как вы строите доверительный интервал из этой матрицы интервалов прогнозирования n.bs.
B_Miner
1

Начальная загрузка не предполагает каких-либо знаний о форме основного родительского распределения, из которого возникла выборка. Традиционные классические статистические оценки параметров основаны на предположении о нормальности. Bootstrap имеет дело с ненормальностью и более точен на практике, чем классические методы.

Самозагрузка заменяет вычислительную мощь компьютеров на строгий теоретический анализ. Это оценка распределения выборки члена ошибки набора данных. Начальная загрузка включает в себя: повторную выборку набора данных указанное количество раз, вычисление среднего значения для каждой выборки и поиск стандартной ошибки среднего.

Следующий код «R» демонстрирует концепцию:

Этот практический пример демонстрирует полезность начальной загрузки и оценивает стандартную ошибку. Стандартная ошибка необходима для расчета доверительного интервала.

Предположим, у вас есть перекос данных «а»:

a<-rexp(395, rate=0.1)          # Create skewed data

визуализация искаженного набора данных

plot(a,type="l")                # Scatter plot of the skewed data
boxplot(a,type="l")             # Box plot of the skewed data
hist(a)                         # Histogram plot of the skewed data

Выполните процедуру начальной загрузки:

n <- length(a)                  # the number of bootstrap samples should equal the original data set
    xbarstar <- c()                 # Declare the empty set “xbarstar” variable which will be holding the mean of every bootstrap iteration
    for (i in 1:1000) {             # Perform 1000 bootstrap iteration
        boot.samp <- sample(a, n, replace=TRUE) #”Sample” generates the same number of elements as the original data set
    xbarstar[i] <- mean(boot.samp)} # “xbarstar” variable  collects 1000 averages of the original data set
    ## 
    plot(xbarstar)                  # Scatter plot of the bootstrapped data
    boxplot(xbarstar)               # Box plot of the bootstrapped data
    hist(xbarstar)                  # Histogram plot of the bootstrapped data

    meanOfMeans <- mean(xbarstar)
    standardError <- sd(xbarstar)    # the standard error is the standard deviation of the mean of means
    confidenceIntervalAboveTheMean <- meanOfMeans + 1.96 * standardError # for 2 standard deviation above the mean 
    confidenceIntervalBelowTheMean <- meanOfMeans - 1.96 * standardError # for 2 standard deviation above the mean 
    confidenceInterval <- confidenceIntervalAboveTheMean + confidenceIntervalBelowTheMean
    confidenceInterval
Рэги Исаак
источник
1
Спасибо Рэги за пример. Однако из того, что я вижу, ваш ответ не охватывал расчет интервалов прогнозирования с использованием начальной загрузки. Как я уже сказал в своем ответе, я уже понимаю, как использовать начальную загрузку для вычисления доверительных интервалов - что, по-видимому, делает ваш код.
Макс