Ggplot regresyonlar için güven aralıklarını nasıl hesaplar?


15

R çizim paketi ggplot2, ilişkili güven bandıyla bir regresyon çizgisini (veya eğri) çizmek için stat_smooth adında harika bir işleve sahiptir .

Ancak regresyon hattı (veya "yöntem") her zaman için, bu güven bandının tam olarak nasıl üretildiğini bulmakta zorlanıyorum. Bu bilgiyi nasıl bulabilirim?


2
Bağlantınızdaki "Ayrıntılar" başlıklı bölüme bakın.
Stéphane Laurent

1
@ StéphaneLaurent: Bu bölümü okudum ama noktaları birleştirmekte hala sorun yaşıyorum. Bir satır takmak için "rlm" yöntemini kullanın, güven aralığı nasıl hesaplanır (matematiksel olarak, hangi denklem / algoritma?)? Bu bilgiyi nasıl bulabilirim?
static_rtti

1
Bu yüzden daha kesin bir soru sormalısınız.
Stéphane Laurent

1
Sorunuzun makul olduğunu düşünüyorum ... ama burada bir cevap alamayacağınızdan şüpheleniyorum. Ggplot2 google grubunda daha iyi şansınız olabilir: groups.google.com/forum/?fromgroups#!forum/ggplot2
russellpierce

Yanıtlar:


22

Gönderen Detailsyardım bölümüne

Hesaplama (şu anda belgelenmemiş) predicff jenerik fonksiyonu ve yöntemleri ile yapılır. Çoğu yöntem için güven sınırları, tahmin yöntemi kullanılarak hesaplanır - istisnalar, t-temelli bir yaklaşım kullanan lös'tür ve normal güven aralığının bağlantı ölçeğinde oluşturulduğu ve daha sonra yanıt ölçeğine geri dönüştürüldüğü glm'dir.

Yani predtdf genellikle çağıracak stats::predictve bu predictda yumuşatma yöntemi için doğru yöntemi çağıracaktır . Stat_smooth'u içeren diğer işlevler de dikkate alınmalıdır.

Çoğu model uydurma işlevinin model predictile ilişkili bir yöntemi olacaktır class. Bunlar genellikle standart hataların eklenip eklenmeyeceğini gösteren bir newdatanesne ve bir argüman alır se.fit. ?predictDaha fazla ayrıntı için (bkz. ).

se
pürüzsüz etrafında güven aralığı görüntülemek? (Varsayılan olarak DOĞRU, kontrol edilecek seviyeye bakın

Bu, uygun standart hataları döndürmek için doğrudan tahmin yöntemine geçirilir (yönteme bağlı)

fullrange
uygunluk çizimin tüm aralığını veya yalnızca verileri kapsarsa

Bu , tahminlerin değerlendirileceği newdatadeğerleri tanımlarx

level kullanılacak güven aralığı aralığı (varsayılan olarak 0.95)

Güven aralığı (örneğin, uygun kritik değeri tanımlamak, böylece doğrudan geçirilen yöntem tahmin predict.lmkullanım qt((1 - level)/2, df)standart hataları ile çarpılmalıdır için

n daha düzgün değerlendirilecek nokta sayısı

Nesnedeki değerleri fullrangetanımlamak için ile birlikte kullanılır .xnewdata

Bir çağrı içinde stat_smoothTanımlayabileceğiniz sekısmen eşleştirilir budur se.fit(veya se) ve tanımlayacaktır intervalgerekirse argüman. levelgüven aralığının seviyesini verecektir (varsayılan 0.95).

newdataNesne oluşan bir ayarına bağlı olarak, işlem içinde tanımlanır fullrangeuzunlukta bir dizisi ile narsa veya veri geniş bir aralık içinde.

Senin durumunda, kullanarak rlm, bu kullanacaktır predict.rlmolarak tanımlanan,

predict.rlm <- function (object, newdata = NULL, scale = NULL, ...)
{
    ## problems with using predict.lm are the scale and
    ## the QR decomp which has been done on down-weighted values.
    object$qr <- qr(sqrt(object$weights) * object$x)
        predict.lm(object, newdata = newdata, scale = object$s, ...)
}

Bu yüzden dahili olarak ayrışma ve argümanın predict.lmuygun bir ölçeklendirmesi ile çağırıyor .qrscale


... ve predict.rlm MASS içinde gizlidir ... ve predtdf'e yapılan çağrı, predict.rlm için model, xseq, se ve seviye argümanlarını geçer ... ama bu değerler nereden geldi? Peki, bu argümanlar stat_smooth'tan StatSmooth $ new'a geçirildiğinde ne olduğuna bağlı ... sanırım daha sonra çağrı yapıyor ...
russellpierce

1
Demek istediğim, cevabınızın doğru yönde atılmış bir adımdır, ancak OP sorusunu tamamen cevaplamak ilk göründüğü kadar önemsiz değildir (biri kodun mantıklı davranmasını beklese de, biri tam olarak izlemedikçe emin değilim )
russellpierce

2
predictYöntem standart bir şekilde kurulmuşsa , kodun mantıklı davranması beklenir . İlk yorumunuzda ortaya çıkan sorunları ele almak için cevabımı düzenledim.
mnel

@mnel: Bu çok detaylı ve kullanışlı cevap için çok teşekkürler!
static_rtti
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.