Nasıl yapılır: Önyükleme yoluyla doğrusal regresyon için tahmin aralıkları


14

Doğrusal bir regresyon modeli için tahmin aralıklarını hesaplamak için önyüklemenin nasıl kullanılacağını anlamakta sorun yaşıyorum . Birisi adım adım bir prosedürü özetleyebilir mi? Google üzerinden arama yaptım ama hiçbir şey benim için gerçekten anlamlı değil.

Model parametreleri için güven aralıklarını hesaplamak için önyüklemenin nasıl kullanılacağını anlıyorum.


1
Bu, Davison ve Hinkley, Bootstrap Metodları ve Uygulamaları tarafından açık bir algoritma ile birlikte ayrıntılı olarak tartışılmıştır (Algoritma 6.4). Kavramları, tuzakları ve ayrıntıları burada makul bir cevapta mümkün olandan daha uzun bir şekilde açıklarlar.
Glen_b

@Glen_b Referans için teşekkürler. Ne yazık ki bir üniversitede veya şirkette değilim, bu yüzden kitabı alacak kaynaklara sahip değilim.
Maksimum

Amazon'dan sipariş edilebilir; Algoritmanın ve ilgili tüm uyarılar ve sorunların tam açıklaması, birkaç yüz kelimeyle veya hatta bir sayfalık cevapla kaplayabileceğiniz bir şey değildir.
Glen_b

1
@Glen_b Davison ve HInkely'den algoritmayı yazdım --- bu konuda CV hakkında birkaç soru var, bu yüzden çabaya değer olduğunu düşündüm. Herhangi bir yorum mutluluk duyacağız. stats.stackexchange.com/questions/226565/…
Bill

Bu konu soruya cevap veriyor gibi: stats.stackexchange.com/questions/226565/…
user2683832

Yanıtlar:


7

Güven aralıkları tahmin belirsizliğini dikkate alır. Tahmin aralıkları buna temel belirsizliği ekler. R'ın predict.lmsize doğrusal bir model için tahmin aralığını verecektir. Oradan, tek yapmanız gereken bootstrapped örnekleri üzerinde tekrar tekrar çalıştırmak.

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

Sonucu replicate3 boyutlu bir dizidir ( nx 3x n.bs). Uzunluk 3 boyutu, her bir veri elemanı için takılmış değerden ve% 95 tahmin aralığının alt / üst sınırlarından oluşur.

Gary King yöntemi

Ne istediğinize bağlı olarak, King, Tomz ve Wittenberg tarafından harika bir yöntem var . Uygulanması nispeten kolaydır ve belirli tahminler için önyükleme sorunlarından kaçınır (örn. max(Y)).

Buradaki temel belirsizlik tanımından alıntı yapacağım, çünkü oldukça güzel:

İkinci bir değişkenlik biçimi olan Denklem 1'deki stokastik bileşen (f dağılımı) tarafından temsil edilen temel belirsizlik, hava veya hastalık gibi Y'yi etkileyebilecek, ancak X'e dahil olmayan sayısız şans olayından kaynaklanmaktadır. parametrelerin kesin değerlerini biliyorduk (böylece tahmin belirsizliğini ortadan kaldırarak), temel belirsizlik Y'yi hatasız tahmin etmemizi engelleyecektir.


3
Bu n.bs tahmin aralığı matrisinden nasıl bir güven aralığı oluşturduğunuzdan emin değilim.
B_Miner

1

Önyükleme, örneğin ortaya çıktığı altta yatan ana dağılımın şekli hakkında herhangi bir bilgi kabul etmez. Geleneksel klasik istatistiksel parametre tahminleri normallik varsayımına dayanmaktadır. Bootstrap normallik ile ilgilenir ve pratikte klasik yöntemlerden daha doğrudur.

Bootstrapping, titiz teorik analizler için bilgisayarların ham bilgi işlem gücünün yerine geçer. Bir veri kümesi hata teriminin örnekleme dağılımı için bir tahmindir. Önyükleme şunları içerir: veri kümesinin belirtilen sayıda yeniden örneklenmesi, her örnekten ortalama hesaplanması ve ortalamanın standart hatasını bulma.

Aşağıdaki “R” kodu konsepti göstermektedir:

Bu pratik örnek, önyüklemenin kullanışlılığını gösterir ve standart hatayı tahmin eder. Güven aralığını hesaplamak için standart hata gerekir.

Eğri bir veri kümesi "a" olduğunu varsayalım:

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

çarpık veri kümesinin görselleştirilmesi

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

Önyükleme prosedürünü uygulayın:

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
Örnek için teşekkürler Ragy. Ancak cevabını görebildiğim kadarıyla bootstrap kullanarak tahmin aralıklarının hesaplanmasını kapsamadım. Cevabımda söylediğim gibi, güvenlik aralıklarını hesaplamak için önyüklemeyi nasıl kullanacağımı zaten anlıyorum - kodunuzun yaptığı gibi.
Maksimum
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.