Фон
Использование R для прогнозирования следующих значений в серии.
Проблема
Следующий код генерирует и строит модель для кривой с некоторым равномерным шумом:
slope = 0.55
offset = -0.5
amplitude = 0.22
frequency = 3
noise = 0.75
x <- seq( 0, 200 )
y <- offset + (slope * x / 100) + (amplitude * sin( frequency * x / 100 ))
yn <- y + (noise * runif( length( x ) ))
gam.object <- gam( yn ~ s( x ) + 0 )
plot( gam.object, col = rgb( 1.0, 0.392, 0.0 ) )
points( x, yn, col = rgb( 0.121, 0.247, 0.506 ) )
Модель раскрывает тренд, как и ожидалось. Проблема заключается в прогнозировании последующих значений:
p <- predict( gam.object, data.frame( x=201:210 ) )
Прогнозы не выглядят правильными при построении графика:
df <- data.frame( fit=c( fitted( gam.object ), p ) )
plot( seq( 1:211 ), df[,], col="blue" )
points( yn, col="orange" )
Предсказанные значения (начиная с 201 года) кажутся слишком низкими.
Вопросы
- Являются ли предсказанные значения, как показано, на самом деле самыми точными предсказаниями?
- Если нет, то как можно улучшить точность?
- Как лучше объединить два набора данных (
fitted.values( gam.object )
и p
)?