LOESS için tahmin aralıkları nasıl hesaplanır?


17

Bana bunu veren bir LOESS modeli R kullanarak bazı veriler var:

resim açıklamasını buraya girin

Verilerin bir öngörücüsü ve bir yanıtı vardır ve heterossedastiktir.

Ayrıca güven aralıkları ekledim. Sorun şu ki, aralıklar çizgi için güven aralıklarıdır, oysa tahmin aralıklarıyla ilgileniyorum. Örneğin, alt panel üst panelden daha değişkendir, ancak bu aralıklarla yakalanmaz.

Bu soru biraz ilgili: Polinom regresyonundan güven bandını , özellikle @AndyW'nin cevabını anlamak, ancak örneğinde interval="predict"var olan nispeten basit argümanı kullanıyor predict.lm, ancak yok predict.loess.

Bu yüzden çok ilgili iki sorum var:

  1. LOESS için noktasal tahmin aralıklarını nasıl alabilirim?
  2. Bu aralığı yakalayacak değerleri nasıl tahmin edebilirim, yani sonunda orijinal verilere benzeyecek bir dizi rastgele sayı oluşturabilirim?

LOESS'e ihtiyacım yok ve başka bir şey kullanmalıyım, ancak seçeneklerime aşina değilim. Temel olarak, hat için hata tahminleri ve ayrıca farklı açıklayıcı değişkenler için farklı varyanslar vererek, yerel regresyon veya çoklu doğrusal regresyon kullanarak çizgiye uymalıdır, böylece yanıt değişkeninin (y) belirli x değerlerindeki dağılımını tahmin edebilirim .


Bu anlamlı bir tahmin aralığı mı?
Glen_b -Manica

Bununla ne demek istiyorsun"? Ve bunun doğru olup olmadığından emin değilim. Soru 2 aradığım şey - maalesef terminolojiye aşina değilim.
Gimelist

'Bu' demek istediğim, "sorunun başlıkta sorduğu şey"
Glen_b -Restate Monica

Emin değilim - önceki yorumuma bakın. Temelde sorumda açıklandığı gibi veri noktalarındaki gerçek varyansı yakalayacak bir aralık arıyorum.
Gimelist

1
Yayılma değişken olabilir (bu yüzden ilk etapta yerel regresyonu seçtim). Tek bir yordayıcı.
Gimelist

Yanıtlar:


12

Ben orijinal ile tahmin bantları nasıl bilmiyorum loessfonksiyonu ancak bir fonksiyon vardır loess.sdiçinde msirpaketin tam da bunu yapar! msirBelgelerden neredeyse kelimesi kelimesine :

library(msir)
data(cars)
# Calculates and plots a 1.96 * SD prediction band, that is,
# a 95% prediction band
l <- loess.sd(cars, nsigma = 1.96)
plot(cars, main = "loess.sd(cars)", col="red", pch=19)
lines(l$x, l$y)
lines(l$x, l$upper, lty=2)
lines(l$x, l$lower, lty=2)

resim açıklamasını buraya girin

İkinci sorunuz biraz daha karmaşıktır, çünkü loess.sdbir tahmin fonksiyonu ile gelmez, ancak tahmin ettiğiniz araçları ve çıkardığınız SD'leri doğrusal olarak enterpolasyon yaparak loess.sd(kullanarak approx) birlikte hackleyebilirsiniz . Bunlar da, tahmini araçlar ve SD'lerle normal bir dağılım kullanarak verileri simüle etmek için kullanılabilir:

# Simulate x data uniformly and y data acording to the loess fit
sim_x <- runif(100, min(cars[,1]), max(cars[,1]))
pred_mean <- approx(l$x, l$y, xout = sim_x)$y
pred_sd <- approx(l$x, l$sd, xout = sim_x)$y
sim_y <- rnorm(100, pred_mean, pred_sd) 

# Plots 95% prediction bands with simulated data 
plot(cars, main = "loess.sd(cars)", col="red", pch=19)
points(sim_x, sim_y, col="blue")
lines(l$x, l$y)
lines(l$x, l$upper, lty=2)
lines(l$x, l$lower, lty=2)

resim açıklamasını buraya girin


Tam aradığım şey. Kodu görerek kullandığı yönteme bakarken, başka bir soruya yapılan yorumdaloess.sd @rnso'nun önerdiğinden çok farklı değil . Teşekkürler!
Gimelist

Aralıkları oluşturmak için Bootstrap?
HelloWorld
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.