Какие прогнозируемые значения возвращаются функцией предиката () в 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 тогда, что именно делает функция предсказания, когда я использую тот же набор данных и соответствующее уравнение регрессии?
выше

@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 ("yes", 6), rep («нет», 6))), t = as.factor (c (rep («tp1», 3), rep («tp2», 3), rep («tp1», 3), rep («tp2») , 3)))) require (MASS) nb_fit <- glm.nb (y ~ p * t, data = dat) pre_fit <- Foregnit (nb_fit, type = "response")
Арун

@chl: Вы правы: мой не следует путать со средним значением нормального распределения. - определенно лучшая запись. μβ0
Октябрь 11.11

1
@Arun Нет, это тип переменной отклика, который определяет выбор модели, а не (обязательно) шкалу измерения предикторов. С бинарным результатом вы можете использовать логистическую регрессию (один GLM среди других), какими бы ни были предикторы. Я просто хотел подчеркнуть тот факт, что для категориального предиктора с уровнями у нас будет коэффициент регрессии. kk1
хл
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.