Как предсказать один временной ряд из другого временного ряда, если они связаны

14

Я пытался решить эту проблему больше года без особого прогресса. Это часть исследовательского проекта, которым я занимаюсь, но я проиллюстрирую его на примере истории, которую я составил, потому что реальная область проблемы немного сбивает с толку (отслеживание глаз).

Вы - самолет, следящий за вражеским кораблем, который путешествует через океан, поэтому вы собрали серию (x, y, время) координат корабля. Вы знаете, что скрытая подводная лодка путешествует вместе с кораблем, чтобы защитить его, но, хотя между их позициями существует корреляция, подводная лодка часто отклоняется от корабля, поэтому, хотя она часто находится рядом с ней, она также может находиться на другой стороне мир изредка. Вы хотите предсказать путь подводной лодки, но, к сожалению, она скрыта от вас.

Но один месяц в апреле вы замечаете, что подводная лодка забывает прятаться, поэтому у вас есть серия координат для подводной лодки и корабля на протяжении 1000 рейсов. Используя эти данные, вы хотели бы построить модель, чтобы предсказать путь скрытой подводной лодки, учитывая только движения корабля. Наивной базовой линией было бы сказать «предположение о положении подводной лодки = текущее положение судна», но из апрельских данных, где была видна подводная лодка, вы заметили, что есть тенденция к тому, что подводная лодка немного опережает корабль, поэтому «положение подводной лодки» «Угадай = положение судна за 1 минуту» - еще лучшая оценка. Кроме того, апрельские данные показывают, что, когда корабль останавливается в воде в течение длительного периода, подводная лодка, вероятно, будет далеко патрулировать прибрежные воды. Существуют и другие модели конечно.

Как бы вы построили эту модель, учитывая апрельские данные в качестве учебных данных, чтобы предсказать путь подводной лодки? Мое текущее решение - это специальная линейная регрессия, в которой используются такие факторы, как «время в пути», «координата судна x», «время простоя судна в течение 1 дня» и т. Д., А затем R вычисляет вес и выполняет перекрестную проверку. , Но мне бы очень хотелось, чтобы эти факторы автоматически генерировались из апрельских данных. Кроме того, модель, которая использует последовательность или время, была бы хороша, так как линейная регрессия нет, и я думаю, что это актуально.

Спасибо, что прочитали все это, и я был бы рад уточнить что-нибудь.

Каргошип и Подводная Лодка
источник
5
TJ(р(TJ),θ(TJ))рθ|θ|рр
2
Я собирался предложить что-то похожее на вероятность ошибки - вам нужна переменная, которая является расстоянием между кораблем и подводной лодкой. Хорошая вещь о полярных координатах состоит в том, что эта информация, а также направленность, также включены. Затем вы можете попробовать линейную регрессию для этой новой переменной.
ученик
Спасибо за предложения. Одна вещь, за которую я борюсь с полярными координатами, это то, что, если я пытаюсь предсказать переменную угла, она «зацикливается», так что 0 == 360, что не имеет смысла с точки зрения прогнозирования. Есть предложения как с этим бороться?
Cargoship And Submarine
@probabilityislogic Подумав об этом немного больше, имеет ли смысл использовать полярные координаты, но использовать синус (тета) вместо тета в качестве переменной для предсказания? Хотя тогда он будет вести себя как delta_y.
Cargoship And Submarine
Что касается использования полярных координат, вы можете прочитать о Направленной статистике .
stablefish

Ответы:

3

Вот подход, который не использует никакой «контекстной» информации, то есть он не учитывает тот факт, что «подводная лодка следует за кораблем». С другой стороны, легко начать с:

Обозначить через

ИксsUб(T),YsUб(T)

Иксsчасяп(T),Ysчасяп(T)

T

ИксdяsT(T)знак равноИксsчасяп(T)-ИксsUб(T)

YdяsT(T)знак равноYsчасяп(T)-YsUб(T)

Я предлагаю вам прогнозировать каждый из них в отдельности (вы можете связать их позже).

Икс

потом

ИксdяsT(T)знак равно100±10весяграммграммLе(T)

весяграммграммLе

ИксYвесяграммграммLеμσИксdяsT

ИксdяsT(T)знак равноμ+σWИкс(T)

WИкс(T)ИксdяsT

Другая стратегия, которую используют люди (которая, я думаю, сработает для вас), состоит в том, что они разбивают свои серии на

Polynomial base + Cyclic pattern + Bounded randomness

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

Есть инструменты, которые могут понять это для вас. Вот два, которые я знаю:

  1. DTREG (30-дневная оценочная лицензия)
  2. Алгоритм временных рядов Microsoft, который является частью их продукта SQL Server. В настоящее время я использую их 180-дневную ознакомительную версию, она проста в использовании.

Вот скриншот из инструмента SQL Server (пунктирная часть является прогнозом):

введите описание изображения здесь

Один алгоритм, который они используют, называется ARIMA. Желая узнать, как это работает, я немного погуглил и нашел эту книгу: Первый курс по временным рядам (и не волнуйтесь, вам не нужен SAS, чтобы следовать за ним. Я не знаю). Это очень читабельно.

Вам не нужно знать, как работает ARIMA, чтобы использовать эти инструменты, но я думаю, что всегда легче, если у вас есть контекст, так как есть «параметры модели», которые нужно установить и т. Д.

Рохит Чаттерджи
источник
Инструменты ARIMA для R: stat.ethz.ch/R-manual/R-patched/library/stats/html/arima.html
zzk,