Які прогнозовані значення, повернені функцією predict () в R при використанні вихідних даних в якості вхідних даних?


11

Після запуску регресії форми reg <- lm(y ~ x1 + x2, data=example)на наборі даних я можу отримати передбачувані значення, використовуючи

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

Мені цікаво, на що насправді посилаються передбачені значення, коли я використовую регресію для прогнозування фактичного набору даних. Чи не можу я отримати вихідні значення?

Відповіді:


18

Модель, з якою ви працюєте, приймає форму

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

де - термін помилки, який вважається похідним від нормального нульового розподілу.ϵi

Ви встановили модель і отримали оцінки: , та .μ^β^1β^2

Тепер, якщо ви зафіксуєте значення коваріату в їх діапазоні, скажімо, і , передбачуване значення для можна отримати за допомогою обчислення.x1ix2iyi

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

Якщо ваша модель ідеально відповідає вашим даним, то передбачувані значення - це фактичні значення. Але, як правило, значення не можуть бути точно отримані як проста лінійна комбінація значень (" Усі моделі неправильні, але деякі корисні "). Іншими словами, дисперсія терміна помилки в (1) взагалі не дорівнює нулю. Але, в основному, модель (1) є хорошим наближенням, якщо залишки (або масштабована їх версія) "малі".yxyiyi

Редагувати

У своїх коментарях ви запитали, що predict()насправді робить. Ось простий показовий приклад.

    #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) Зверніть увагу , що модель (1) , як написано передбачає , що x1і x2є безперервними предикторами, а не категорично з них. (Чому б не перехоплення через ?)β0
chl

@ocram, що саме робить функція передбачення, коли я використовую той самий набір даних та відповідне рівняння регресії?
upabove

@chl, чи означає це, що прогноз не повинен бути на моделі glm (або glm.nb) з категоричними предикторами? Наприклад: dat <- data.frame (y = as.numeric (c (10,15,12,1,0,2,180,200,188,181,300,288)), p = as.factor (c (rep ("так", 6), rep ("ні", 6))), t = as.factor (c (rep ("tp1", 3), rep ("tp2", 3), rep ("tp1", 3), rep ("tp2" , 3)))) вимагають (MASS) nb_fit <- glm.nb (y ~ p * t, data = dat) pre_fit <- прогнозувати (nb_fit, type = "відповідь")
Arun

@chl: Ви маєте рацію: мою не слід плутати із середнім значенням нормального розподілу. , безумовно, краще позначення. β 0μβ0
ocram

1
@Arun Ні, це тип змінної відповіді, який керує вибором моделі, а не (обов'язково) шкалою вимірювання прогнозів. З двійковим результатом можна використовувати логістичну регресію (один GLM серед інших), якими б не були прогнози. Я просто хотів виділити той факт, що для категоричного прогноктора з рівнями у нас будуть коефіцієнти регресії . k - 1kk1
chl
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.