Идентичные квадратичные и кубические предсказания

#r #modeling #lm #dplyr #predict

#r #моделирование #lm #dplyr #предсказать

Вопрос:

Для следующих данных:

 require(dplyr)
require(ggplot2)

ds <- read.table(header = TRUE, text ="
obs  id year attend
                 1  47 2000      1
                 2  47 2001      3
                 3  47 2002      5
                 4  47 2003      8
                 5  47 2004      6
                 6  47 2005      4
                 7  47 2006      2
                 8  47 2007      1
                 9  47 2008      2
                 10 47 2009      3
                 11 47 2010      4
                 12 47 2011      5

                 ")
print(ds)
 

Я хотел бы вычислить прогнозируемые значения линейных моделей

 linear<-    predict(lm(attend ~ year, ds))
quadratic<- predict(lm(attend ~ year   I(year^2),ds))
cubic<-     predict(lm(attend ~ year   I(year^2)   I(year^3),ds))

ds<- ds %>% dplyr::mutate(linear=linear, quadratic=quadratic, cubic=cubic)
print(ds)

   obs id year attend   linear quadratic    cubic
1    1 47 2000      1 3.820513  3.500000 3.500000
2    2 47 2001      3 3.792541  3.646853 3.646853
3    3 47 2002      5 3.764569  3.758741 3.758741
4    4 47 2003      8 3.736597  3.835664 3.835664
5    5 47 2004      6 3.708625  3.877622 3.877622
6    6 47 2005      4 3.680653  3.884615 3.884615
7    7 47 2006      2 3.652681  3.856643 3.856643
8    8 47 2007      1 3.624709  3.793706 3.793706
9    9 47 2008      2 3.596737  3.695804 3.695804
10  10 47 2009      3 3.568765  3.562937 3.562937
11  11 47 2010      4 3.540793  3.395105 3.395105
12  12 47 2011      5 3.512821  3.192308 3.192308
 

Вопрос: Несмотря на то, что временные ряды имеют четкую кубическую форму, квадратичные и кубические предсказания идентичны. Почему? Это ошибка?

Комментарии:

1. Еще одна ошибка , которую можно было бы предотвратить с помощью poly() . Когда они когда-нибудь научатся.

Ответ №1:

Это связано с тем, что 2011 ^ 3 — очень большое число (больше tha, и это приводит к тому, что коэффициент возвращается как NA . Если бы вы осмотрели модели, вы бы заметили это.

 coef(lm(attend ~ year   I(year^2)   I(year^3),ds))
#   (Intercept)          year     I(year^2)     I(year^3) 
# -7.025524e 04  7.009441e 01 -1.748252e-02            NA 
 

Его разумнее использовать poly для создания ортогональных многочленов

 linear<-    predict(lm(attend ~ year, ds))
quadratic<- predict(lm(attend ~ poly(year,2),ds))
cubic<-     predict(lm(attend ~ poly(year,3),ds))


ds<- (ds %>% dplyr::mutate(linear=linear, quadratic=quadratic, cubic=cubic))
ds
# obs id year attend   linear quadratic     cubic
# 1    1 47 2000      1 3.820513  3.500000 0.7435897
# 2    2 47 2001      3 3.792541  3.646853 3.8974359
# 3    3 47 2002      5 3.764569  3.758741 5.5128205
# 4    4 47 2003      8 3.736597  3.835664 5.9238539
# 5    5 47 2004      6 3.708625  3.877622 5.4646465
# 6    6 47 2005      4 3.680653  3.884615 4.4693085
# 7    7 47 2006      2 3.652681  3.856643 3.2719503
# 8    8 47 2007      1 3.624709  3.793706 2.2066822
# 9    9 47 2008      2 3.596737  3.695804 1.6076146
# 10  10 47 2009      3 3.568765  3.562937 1.8088578
# 11  11 47 2010      4 3.540793  3.395105 3.1445221
# 12  12 47 2011      5 3.512821  3.192308 5.9487179
 

Комментарии:

1. Это имеет смысл. Я действительно забыл о центрировании. Спасибо!