是否可以使用AR,MA和ARMA等统计模型对基于时间序列的数据进行分类?

时间:2018-05-15 18:15:29

标签: r time-series classification autoregressive-models

我正在尝试对多变量时间序列数据进行分类,并且我使用了机器学习算法,如SVM,神经网络,基于DTW的KNN等。现在我将使用像Auto Regressive这样的统计模型来对我的数据进行分类。为了做到这一点,我已经在R中编写了一些代码,但似乎分类是不可能的,因为结果是一些浮点数,而不是分类数。你有这方面的经验吗? 这是我的代码:

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

dataset sample

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 :(得分:0)

您不会获得分类值01,因为VAR并非设计用于监督问题(即当您的数据集包含status等标签时你的情况)但是对于时间序列问题。实际上,VAR是基于许多线性回归模型lm构建的,但是以一种奇特的方式使用(我可以告诉你,因为我设法在Spark上实现了VAR R)。

因此,当您设置var=cbind(ax,ay,az,status)时,您告诉VAR status是一个连续变量,这就是您获得双倍输出的原因。您正在做的有点类似于尝试使用线性回归来预测status并期望输出始终为01,而输出始终是连续的,而不是绝对的。在那种情况下,你宁愿使用逻辑回归。