Apa nilai prediksi yang dikembalikan oleh fungsi predict () di R saat menggunakan data asli sebagai input?


11

Setelah menjalankan regresi formulir reg <- lm(y ~ x1 + x2, data=example)pada dataset, saya bisa mendapatkan nilai yang diprediksi menggunakan

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

Saya bertanya-tanya apa nilai prediksi sebenarnya merujuk ketika saya menggunakan regresi untuk memprediksi dataset yang sebenarnya. Tidakkah seharusnya saya mendapatkan nilai asli?

Jawaban:


18

Model yang Anda kerjakan mengambil formulir

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

di mana adalah istilah kesalahan yang diasumsikan berasal dari distribusi normal rata-rata nol.ϵi

Anda telah memasang model dan Anda telah mendapatkan taksiran: , , dan . β 1 β 2μ^β^1β^2

Sekarang, jika Anda memperbaiki nilai kovariat dalam rentang mereka, katakanlah dan , nilai prediksi untuk dapat diperoleh dengan menghitung x 2 i y ix1ix2iyi

yi=μ^+β^1x1i+β^2x2i (2)

Jika model Anda sangat cocok dengan data Anda, maka nilai prediksi adalah nilai aktual. Tetapi, secara umum, nilai-nilai tidak dapat secara tepat diperoleh sebagai kombinasi linear sederhana dari nilai-nilai (" Semua model salah, tetapi beberapa berguna "). Dalam istilah lain, varians dari istilah kesalahan dalam (1) tidak nol secara umum. Tetapi, pada dasarnya, model (1) adalah perkiraan yang baik jika residual (atau versi yang diskalakan) adalah "kecil".x y i - y iyxyiyi

Edit

Dalam komentar Anda, Anda bertanya apa yang predict()sebenarnya dilakukannya. Ini adalah contoh ilustrasi sederhana.

    #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
(+1) Perhatikan bahwa model (1) sebagaimana ada tertulis mengasumsikan bahwa x1dan x2merupakan prediktor berkelanjutan, bukan yang kategorikal. (Mengapa tidak menunjukkan intersepsi oleh ?)β0
chl

@ocram lalu apa sebenarnya fungsi prediksi lakukan ketika saya menggunakan dataset yang sama dan persamaan regresi yang sesuai?
atas

@ chl, apakah ini berarti bahwa prediksi tidak boleh menggunakan model glm (atau glm.nb) dengan prediktor kategoris? Sebagai contoh: dat <- data.frame (y = as.numeric (c (10,15,12,1,0,2,180,200,188,181,300,288)), p = as.factor (c (rep ("yes", 6), rep ("tidak", 6))), t = as.factor (c (rep ("tp1", 3), rep ("tp2", 3), rep ("tp1", 3), rep ("tp2" , 3)))) memerlukan (MASSA) nb_fit <- glm.nb (y ~ p * t, data = dat) pre_fit <- prediksi (nb_fit, ketik = "respons")
Arun

@ chl: Anda benar: my tidak boleh bingung dengan rata-rata distribusi normal. jelas merupakan notasi yang lebih baik. β 0μβ0
ocram

1
@Arun Tidak, ini adalah jenis variabel respons yang memandu pilihan model, bukan (harus) skala pengukuran prediktor. Dengan hasil biner, Anda dapat menggunakan regresi logistik (satu di antaranya GLM), apa pun prediktornya. Saya hanya ingin menyoroti fakta bahwa untuk prediktor kategori dengan level kita akan memiliki koefisien regresi . k - 1kk1
chl
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.