#r
#r
Вопрос:
В настоящее время я выполняю упражнение, и я предполагаю сделать прогноз на следующий год, используя множественную линейную регрессию, но у меня ошибка.
Линейная регрессия работает, но я не могу предсказать будущие значения, используя R.
mod5 <- tslm(tsdata[,5]~tsdata[,10] tsdata[,11] tsdata[,12] tsdata[,13] tsdata[,14] tsdata[,28] tsdata[,29] tsdata[,30] tsdata[,31] tsdata[,32] tsdata[, 15] tsdata[, 16] tsdata[,17] tsdata[,18] tsdata[,6] tsdata[,7] tsdata[,8] tsdata[,9] tsdata[,1])
fmod5 <- forecast(mod5,h=12)
tsdata <- structure(c(1, 2, 3, 4, 5, 6, 2008, 2008, 2008, 2008, 2008, 2008,
1, 2, 3, 4, 5, 6, 76, 115, 77, 84, 114, 87, 59, 64, 59, 48, 80,
78, 0.56, 0.4, 0.61, 0.58, 0.66, 0.7, 0.13, 0.12, 0.18, 0.22,
0.23, 0.19, 0.19, 0.43, 0.2, 0.19, 0.09, 0.1, 0.1, 0.03, 0, 0,
0, 0, 0.26, 0.24, 0.14, 0.3, 0.28, 0.22, 0.27, 0.43, 0.2, 0.19,
0.09, 0.14, 0.26, 0.13, 0.11, 0.11, 0.26, 0.26, 0.19, 0.13, 0.42,
0.32, 0.31, 0.26, 0, 0.06, 0.1, 0.05, 0.04, 0.09, 0.4, 0.53,
0.29, 0.27, 0.28, 0.1, 0.39, 0.21, 0.53, 0.45, 0.54, 0.65, 0.19,
0.25, 0.16, 0.27, 0.17, 0.24, 0.25, 0.51, 0.51, 0.35, 0.34, 0.34,
0.03, 0, 0, 0, 0, 0, 0.26, 0.21, 0.05, 0.08, 0.14, 0.32, 0, 0,
0, 0, 0, 0.05, 0.1, 0.25, 0, 0.01, 0.06, 0.08, 0.17, 0.12, 0.27,
0.23, 0.15, 0.27, 0, 0, 0, 0, 0, 0, 0.25, 0.33, 0.42, 0.34, 0.36,
0.19, 0.06, 0.01, 0.02, 0.07, 0.2, 0.06, 0.1, 0.06, 0.22, 0.25,
0.06, 0, 0.27, 0.31, 0.42, 0.5, 0.51, 0.44, 0.21, 0.15, 0.29,
0.15, 0.21, 0.14, 0.4, 0.46, 0.05, 0.09, 0.21, 0.4, 0, 0, 0,
0, 0, 0, 0.1, 0.06, 0.22, 0.25, 0.06, 0, 0, 0, 0, 0, 0, 0, 0,
0.0087, 0.01, 0.07, 0, 0, 0, 0, 0.05, 0.03, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0.01, 0, 0, 0.06, 0.01, 0.06, 0.11, 0.04, 0, 0.76,
0.9, 0.68, 0.59, 0.77, 0.94, 0, 0, 0, 0.04, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0087, 0, 0, 0.03, 0, 0, 0, 0.01,
0.01, 0, 0.02, 0, 0, 0, 0, 0, 0, 0.03, 0.02, 0.1, 0.05, 0, 0,
0.05, 0, 0, 0, 0.07, 0, 0, 0, 0, 0, 0, 0, 0.01, 0.01, 0, 0.03,
0.00877, 0, 0, 0, 0.05, 0, 0.00877, 0, 0, 0, 0, 0, 0, 0, 0.01,
0.0087, 0, 0.01, 0.01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0.0087, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0.01, 0, 0.04, 0.02, 0.01, 0, 0, 0, 0, 0, 0.03, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0.01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 98, 92,
101, 110, 100), .Dim = c(6L, 67L), .Dimnames = list(NULL, c("period",
"year", "month", "numadmit", "numrt", "cc1", "cc2", "cc3", "cc4",
"hr1", "hr2", "hr3", "hr4", "hr5", "age1", "age2", "age3", "female",
"tumEA", "tumLA", "tumLP", "tumNC", "tumOC", "tumOT", "tumPH",
"tumSL", "tumTH", "c0", "c1", "c3", "c4", "c7", "h800", "h801",
"h802", "h803", "h804", "h805", "h807", "h808", "h809", "h812",
"h814", "h820", "h824", "h826", "h829", "h831", "h833", "h834",
"h835", "h843", "h844", "h848", "h850", "h851", "h852", "h855",
"h856", "h868", "h894", "h908", "h949", "h950", "h952", "h972",
"numdiag")), .Tsp = c(1, 1.41666666666667, 12), class = c("mts",
"ts", "matrix"))
Комментарии:
1. Опубликуйте некоторые данные, какие пакеты вы используете, и сообщение об ошибке.
2. я использую fpp2, прогнозирую,
3. Это мое установленное значение, но я хочу иметь прогноз на следующий год:
4. Вы можете использовать
dput(head(tsdata))
для отображения некоторых ваших данных (отредактируйте исходный вопрос и вставьте туда результаты).5. Спасибо, мистер @EricKrantz, я внес изменения
Ответ №1:
У вас должны быть значения для переменных предиктора / функции, если они не являются месяцами или сезонами, чтобы прогноз сработал.
Также лучше попробовать использовать формат формулы в функции tslm, чтобы упростить задачу. Вот пример из книги fpp2.
fit.consBest <- tslm(Consumption ~ Income Savings Unemployment,
data = uschange)
newdata <- data.frame(
Income = c(1, 1, 1, 1),
Savings = c(0.5, 0.5, 0.5, 0.5),
Unemployment = c(0, 0, 0, 0))
fcast.up <- forecast(fit.consBest, newdata = newdata)