Прогнозная популяция с lm () в R. Резюме, возвращающее «ВСЕ 10 остатков равны 0» - PullRequest
0 голосов
/ 05 апреля 2020

Я пытаюсь прогнозировать численность населения штата в 2025 году, основываясь на данных за 2010-2019 годы. Мой CSV-файл выглядит следующим образом (для краткости я опубликую первые три года)

 Year     Population
 2010     375,344
 2011     378,522
 2012     381,222

У меня две проблемы. Прежде всего, следующий код дает мне «Остатки: ВСЕ 10 остатков равны 0: нет остаточных степеней свободы!» и ниже этого состояния:

Остаточная стандартная ошибка: NaN на 0 степенях свободы Множественный R-квадрат: 1, Скорректированный R-квадрат: NaN F-statisti c: NaN на 9 и 0 DF, p- значение: NA "

model <-lm(formula = Population ~ Year, data = pop_OK)

summary(model)

Во-вторых, я не уверен, как использовать lm, чтобы предсказать 5 лет в будущем. Я видел пример того, как это сделать, если вы ввели свои данные в датаграмма, но не CSV. Любые идеи или ссылки, на которые я могу посмотреть? (Я предпочитаю это, чем просто ответы, если это возможно).

1 Ответ

4 голосов
/ 05 апреля 2020

Вероятно, ваш Population не числится c. Попробуйте transform после очистки с помощью gsub.

pop_OK <- read.table(text="Year     Population
 2010     375,344
 2011     378,522
 2012     381,222
", header=TRUE)

pop_OK <- transform(pop_OK, 
                    Population=as.numeric(gsub("\\D", "", Population)))

до predict, мы хотим, чтобы в data.frame была добавлена ​​новая зависимая переменная, включающая прогнозируемые годы.

model <- lm(Population ~ Year, pop_OK)
pred <- predict(model, newdata=data.frame(Year=2020:2025))
setNames(pred, 2020:2025)
# 2020     2021     2022     2023     2024     2025 
# 404813.7 407752.7 410691.7 413630.7 416569.7 419508.7 
...