Прогнозирование следующего слагаемого с использованием синуса в R - PullRequest
0 голосов
/ 09 февраля 2019

Моя цель - вписать Синус во временные ряды и угадать следующий термин.Это будет один из индикаторов для более крупной модели, которую я строю (получено множество строк данных ряда в реальном времени).Простая базовая версия моей проблемы построена ниже.

Простой 8-элементный фрейм данных:

a <- data.frame(Trial = c(-1,0,1,0,-1,0,1,0))

Легко видеть, что это имеет синусоидальную кривую, такую ​​как колебание за периоды,1 / -1 не обязательно должно быть макс / мин синусоиды, но общая тенденция понятна.Следующим термином явно является «-1», то есть 9-й элемент.

Как мне получить его (9-й элемент) в R с помощью функции 'lm'?Я просмотрел другие посты, связанные со стековым потоком, но не нашел ничего убедительного в прогнозировании следующего термина.

Я пытался смоделировать, используя:

Temp_DF <- data.frame(a, X_values = 1:8)

Sine_Model = lm(Temp_DF$Trial~ I(sin(pi*2*Temp_DF$X_values)))

Теперь, как мне оценить следующий член ряда?

Ответом не должно быть '-1', поскольку нигде нет места, чтобы сообщить модели, что верхние / нижние границы1, -1 .. Но 9-й член должен быть меньше 0. Это увеличит предсказательную силу моей модели.

Следующая строка предсказания дает ошибку, запрашивая в общей сложности 8 входных данных.Очевидно, что каждая строка воспринимается как входной символ, что явно не является моим намерением.

predict(object = Sine_Model, newdata = data.frame(X_values = 9))

Как насчет подстановки чего-то вроде a + b sin (c Икс) ?Тогда как прогнозировать?

...