Можно ли классифицировать данные на основе временных рядов с использованием статистических моделей, таких как AR, MA и ARMA? - PullRequest
0 голосов
/ 15 мая 2018

Я пытаюсь классифицировать данные многомерного временного ряда, и я использовал алгоритмы машинного обучения, такие как SVM, Neural Network, KNN на основе DTW и т. Д. Теперь я собираюсь использовать статистическую модель, такую ​​как Авторегрессия, для классификации моих данных и для этого я написал некоторый код на R, но, похоже, классификация невозможна, поскольку в результате получаются некоторые числа с плавающей запятой, а не категориальные числа. есть ли у вас опыт в этом деле? вот мой код:

## status is the label of my data which is 0: Not exercising 1: 
#exercising

образец набора данных

library(vars)

dt=read.csv('data.csv')

# plot.ts(diff(dt$gx))
# plot.ts(dt$my)
# Box.test(dt$yaw,lag = 20,type = 'Ljung-Box')

attach(dt)

var=cbind(ax,ay,az,status)

#VARselect(var, lag.max = 10, type = "both")

model=VAR(var,type = 'const',lag.max = 10,ic = 'AIC',p = 4)
arch.test(model, lags.multi = 10)
# grangertest(status ~ ax, order = 4)

prd=predict(model, n.ahead = 10, ci = 0.95, dumvar = NULL)

результат статуса:

$ статус

          fcst        lower      upper      CI
  [1,] 0.002911329 -0.1104069 0.1162295 0.1133182
  [2,] 0.005366295 -0.1551971 0.1659297 0.1605634
  [3,] 0.008643568 -0.1880706 0.2053577 0.1967141
  [4,] 0.009482430 -0.2172989 0.2362637 0.2267813
  [5,] 0.012580248 -0.2405501 0.2657106 0.2531303
  [6,] 0.014794586 -0.2618808 0.2914700 0.2766754
  [7,] 0.015800219 -0.2825497 0.3141501 0.2983499
  [8,] 0.015899414 -0.3023957 0.3341945 0.3182951
  [9,] 0.016415702 -0.3200783 0.3529097 0.3364940
  [10,] 0.017935262 -0.3354627 0.3713333 0.3533980

Однако я ожидал 0 или 1 для этого.

1 Ответ

0 голосов
/ 18 мая 2018

Вы не получите категориальные значения 0 или 1, потому что VAR не предназначен для использования под надзором (например, когда ваш набор данных содержит метки типа status, как в вашем случае), но для проблем временного ряда,Фактически, VAR построен на основе многих моделей линейной регрессии lm, но используется необычно (я могу сказать вам это, потому что мне удалось реализовать VAR на Spark, следуя реализации в R).

Итак, когда вы устанавливаете var=cbind(ax,ay,az,status), вы говорите VAR, что status - это непрерывная переменная, поэтому вы получаете удвоенный результат.То, что вы делаете, немного похоже на попытку использовать линейную регрессию для предсказания status и ожидания того, что выходные данные всегда будут 0 или 1, когда выходные данные всегда непрерывны, а не категориальны.В этой ситуации вы бы предпочли использовать логистическую регрессию.

...