Orijinal verileri giriş olarak kullanırken predict () işlevi tarafından R'de döndürülen tahmini değerler nelerdir?


11

reg <- lm(y ~ x1 + x2, data=example)Bir veri kümesinde formun bir regresyonunu çalıştırdıktan sonra , kullanarak tahmin edilen değerleri alabilirim

predict(reg, example, interval="prediction", level=0.95)

Gerçek veri kümesini tahmin etmek için regresyonu kullanırken tahmin edilen değerlerin gerçekte ne anlama geldiğini merak ediyorum. Orijinal değerleri elde etmem gerekir mi?

Yanıtlar:


18

Çalıştığınız model formu alıyor

yi=μ+β1x1i+β2x2i+ϵi (1)

burada ϵi , sıfır ortalama normal dağılımından geldiği varsayılan bir hata terimidir.

Modeli eklediniz ve şu tahminleri aldınız: , ve .μ^β^1β^2

Onların aralığında değişken değerlerini düzeltmek Şimdi, eğer, demek ve , bir tahmin değeri hesaplanmasıyla elde edilebilirx1benx2benyben

yben=μ^+β^1x1ben+β^2x2ben (2)

Modeliniz verilerinize mükemmel bir şekilde uyuyorsa, öngörülen değerler gerçek değerlerdir. Ancak, genel olarak, değerleri değerlerinin basit bir doğrusal kombinasyonu olarak tam olarak elde edilemez (" Tüm modeller yanlış, ancak bazıları faydalıdır "). Diğer bir deyişle, (1) 'deki hata teriminin varyansı genel olarak sıfır değildir. Ancak, temel olarak, (veya bunların ölçekli bir versiyonu) "küçük" ise model (1) iyi bir yaklaşımdır .yxyben-yben

Düzenle

Yorumlarınızda predict()gerçekte ne yaptığını sordunuz . İşte basit bir açıklayıcı örnek.

    #generate a simple illustrative data set
> x <- runif(10)
> y <- 5 + 2.7 * x + rnorm(10, mean=0, sd=sqrt(0.15))
> 
>   #fit the model and store the coefficients
> regLin <- lm(y~x)
> coef <- coef(regLin)
> 
>   #use the predict() function
> y_star2 <- predict(regLin)
>   #use equation (2)
> y_star1 <- coef[1] + coef[2] * x
>   #compare
> cbind(y, y_star1, y_star2) 
          y  y_star1  y_star2
1  7.100217 6.813616 6.813616
2  6.186333 5.785473 5.785473
3  7.141016 7.492979 7.492979
4  5.121265 5.282990 5.282990
5  4.681924 4.849776 4.849776
6  6.102339 6.106751 6.106751
7  7.223215 7.156512 7.156512
8  5.158546 5.253380 5.253380
9  7.160201 7.198074 7.198074
10 5.555289 5.490793 5.490793

1
Yazıldığı gibi (1) modeli varsayar (1) Not x1ve x2sürekli bir risk faktörü değildir kategorik olanlardır. (Neden kesişim ?)β0
chl

@ocram Öyleyse aynı veri kümesini ve karşılık gelen regresyon denklemini kullandığımda tahmin işlevi tam olarak ne yapıyor?
yukarı

@chl, tahminin kategorik öngörücülere sahip bir glm (veya glm.nb) modelinde olmaması gerektiği anlamına mı geliyor? Ex: dat <- data.frame için (y = as.numerik (c (10,15,12,1,0,2,180,200,188,181,300,288)), p = asfactor (c (rep ("evet", 6), temsil ("hayır", 6))), t = faktör. c (rep ("tp1", 3), rep ("tp2", 3), rep ("tp1", 3), rep ("tp2" , 3)))) gerektirir (MASS) nb_fit <- glm.nb (y ~ p * t, veri = dat) pre_fit <- tahmin (nb_fit, type = "yanıt")
Arun

@chl: Haklısın: , normal dağılımın ortalamasıyla karıştırılmamalıdır. kesinlikle daha iyi bir gösterimdir. μβ0
ocram

1
@ Arun Hayır, bu, tahmincilerin ölçüm ölçeğini (zorunlu olarak) değil, model seçimini yönlendiren yanıt değişkeninin türüdür. İkili bir sonuçla, tahminciler ne olursa olsun bir lojistik regresyon (bir GLM arasında) kullanabilirsiniz. Sadece seviyeli kategorik bir öngörücü için regresyon katsayılarına sahip olacağımızı vurgulamak istedim . kk-1
chl
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.