Попытка использовать lm () в r с годом - PullRequest
0 голосов
/ 26 марта 2020

Мой набор данных:

structure(list(year = 2010:2019, pop = c(9574323, 9657592, 9749476, 
9843336, 9932887, 10031646, 10154788, 10268233, 10381615, 10488084
), ye = 1:10), row.names = c("1", "2", "3", "4", "5", "6", "7", 
"8", "9", "10"), class = "data.frame")

Я только линейная регрессия столбцов Год и Поп. Когда я запускаю сводку (lm) для этих двух столбцов, я получаю следующее:

> summary(lm(pop~year, data = this))

Call:
lm(formula = pop ~ year, data = this)

Residuals:
 Min       1Q   Median       3Q      Max 
-27821.4 -10094.9    656.5  12968.3  27549.8 

Coefficients:
          Estimate Std. Error t value Pr(>|t|)    
(Intercept) -196556312    4240960  -46.35 5.19e-11 ***
year            102539       2105   48.71 3.49e-11 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 19120 on 8 degrees of freedom
Multiple R-squared:  0.9966,    Adjusted R-squared:  0.9962 
F-statistic:  2372 on 1 and 8 DF,  p-value: 3.493e-11

Неверное уравнение перехвата наклона. Но когда я запускаю lm с помощью столбца ye, он корректен.

итоговый отчет (lm (pop ~ ye, data = this))

Call:
lm(formula = pop ~ ye, data = this)

Residuals:
 Min       1Q   Median       3Q      Max 
-27821.4 -10094.9    656.5  12968.3  27549.8 

Coefficients:
        Estimate Std. Error t value Pr(>|t|)    
(Intercept)  9444234      13062  723.00  < 2e-16 ***
ye            102539       2105   48.71 3.49e-11 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 19120 on 8 degrees of freedom
Multiple R-squared:  0.9966,    Adjusted R-squared:  0.9962 
F-statistic:  2372 on 1 and 8 DF,  p-value: 3.493e-11

Это не не то, что я ищу, потому что хочу прогнозировать на 2020, 2021 годы и так далее. Что мне нужно изменить, чтобы столбец года работал в уравнении? Я попробовал это в Excel тоже, и это то же самое.

Ответы [ 2 ]

1 голос
/ 26 марта 2020

Этот ответ от Cross Validated очень подробно описывает ваш вопрос, но краткий ответ является эквивалентным, за исключением термина перехвата.

Для интерпретируемости вы можете захотеть установите базовый год, затем установите данные года регрессии на основе этого базового года (например, 2010 = базовый год 0, 2015 = 5 год), так же, как вы сделали со столбцом ye.

другой комментатор предлагает использовать predict() для прогнозирования 2020 и 2021 годов, что будет работать для обоих методов (либо с использованием c(2020, 2021) или c(20, 21) соответственно).

0 голосов
/ 26 марта 2020

Мы можем сделать это с predict.

model <- lm(pop~year, data = this)
predict(model,data.frame(year=c(2020,2021)))
       1        2 
10572162 10674701 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...