Instrukcje: przewidywanie interwałów regresji liniowej za pomocą ładowania początkowego

14

Mam problem ze zrozumieniem, jak używać ładowania początkowego do obliczania przedziałów predykcji dla modelu regresji liniowej. Czy ktoś może nakreślić procedurę krok po kroku? Szukałem przez Google, ale nic tak naprawdę nie ma dla mnie sensu.

Rozumiem, jak używać ładowania początkowego do obliczania przedziałów ufności dla parametrów modelu.

Max
źródło
1
Jest to szczegółowo omówione w książce Davisona i Hinkleya, Metody ładowania początkowego i ich zastosowanie , wraz z wyraźnym algorytmem (Algorytm 6.4). Wyjaśniają pojęcia, pułapki i szczegóły w sposób dłuższy niż jest to możliwe w rozsądnej odpowiedzi tutaj.
Glen_b
@Glen_b Dzięki za odniesienie. Niestety nie jestem na uniwersytecie ani w firmie, więc nie mam środków na zakup książki.
Maks.
Można go zamówić w Amazon; pełne wyjaśnienie algorytmu i wszystkich powiązanych zastrzeżeń i problemów nie jest tak naprawdę czymś, co można opisać w kilkuset słowach lub nawet na jednej stronie.
Glen_b
1
@Glen_b Napisałem algorytm od Davisona i HInkely --- jest kilka pytań na temat CV na ten temat, więc pomyślałem, że było warto. Wszelkie uwagi będą mile widziane. stats.stackexchange.com/questions/226565/…
Bill
Ten wątek wydaje się odpowiadać na twoje pytanie: stats.stackexchange.com/questions/226565/…
user2683832

Odpowiedzi:

7

Przedziały ufności uwzględniają niepewność szacowania. Przedziały prognoz dodają do tego fundamentalną niepewność. R predict.lmda przedział predykcji dla modelu liniowego. Stamtąd wszystko, co musisz zrobić, to uruchomić go wielokrotnie na próbkach bootstrapped.

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) ,]) )

Wynikiem replicatejest trójwymiarowa tablica ( nx 3x n.bs). Wymiar długości 3 składa się z dopasowanej wartości dla każdego elementu danych oraz dolnej / górnej granicy 95% przedziału predykcji.

Metoda Gary'ego Kinga

W zależności od tego, co chcesz, istnieje fajna metoda Kinga, Tomza i Wittenberga . Jest stosunkowo łatwy do wdrożenia i pozwala uniknąć problemów z ładowaniem w przypadku niektórych oszacowań (np max(Y).).

Przytoczę tutaj jego definicję fundamentalnej niepewności, ponieważ jest ona dość przyjemna:

Druga forma zmienności, podstawowa niepewność reprezentowana przez składnik stochastyczny (rozkład f) w równaniu 1, wynika z niezliczonych zdarzeń losowych, takich jak pogoda lub choroba, które mogą wpływać na Y, ale nie są uwzględnione w X. Nawet jeśli znaliśmy dokładne wartości parametrów (eliminując w ten sposób niepewność oszacowania), podstawowa niepewność uniemożliwiłaby nam przewidywanie Y bez błędu.

Ari B. Friedman
źródło
3
Nie wiesz, jak zbudować przedział ufności z tej macierzy przedziałów predykcji n.b.
B_Miner
1

Bootstrapping nie zakłada żadnej wiedzy o formie podstawowego rozkładu macierzystego, z którego powstała próbka. Tradycyjne klasyczne oszacowania parametrów statystycznych opierają się na założeniu normalności. Bootstrap dotyczy nienormalności i jest bardziej dokładny w praktyce niż metody klasyczne.

Bootstrapping zastępuje surową moc obliczeniową komputera rygorystyczną analizą teoretyczną. Jest to oszacowanie rozkładu próbkowania terminu błędu zestawu danych. Bootstrapping obejmuje: ponowne próbkowanie zestawu danych określoną liczbę razy, obliczanie średniej z każdej próbki i znalezienie standardowego błędu średniej.

Poniższy kod „R” demonstruje tę koncepcję:

Ten praktyczny przykład pokazuje przydatność ładowania początkowego i szacuje błąd standardowy. Błąd standardowy jest wymagany do obliczenia przedziału ufności.

Załóżmy, że masz wypaczony zestaw danych „a”:

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

wizualizacja przekrzywionego zestawu danych

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

Wykonaj procedurę ładowania początkowego:

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
Ragy Isaac
źródło
1
Dzięki Ragy za przykład. Jednak z tego, co widzę, twoja odpowiedź nie obejmowała obliczania przedziałów prognoz za pomocą bootstrapu. Jak powiedziałem w mojej odpowiedzi, już rozumiem, jak używać ładowania początkowego do obliczania przedziałów ufności - co wydaje się robić twój kod.
Maks.