关于算法:R语言时变向量自回归TVVAR模型分析时间序列和可视化

38次阅读

共计 4268 个字符,预计需要花费 11 分钟才能阅读完成。

原文链接:http://tecdat.cn/?p=22350 

在心理学钻研中,集体主体的模型正变得越来越风行。起因之一是很难从人之间的数据推断出集体过程。另一个起因是,因为挪动设施无处不在,从集体取得的工夫序列变得越来越多。所谓的集体模型建模的次要指标是开掘潜在的外部心理现象变动。思考到这一指标,许多钻研人员曾经着手剖析集体工夫序列中的多变量依赖关系。对于这种依赖关系,最简略和最风行的模型是一阶向量自回归(VAR)模型,其中以后工夫点的每个变量都是由前一个工夫点的所有变量(包含其自身)预测的(线性函数)。

规范 VAR 模型的一个要害假如是其参数不随工夫变动。然而,人们往往对这种随工夫的变动感兴趣。例如,人们可能对参数的变动与其余变量的关系感兴趣,例如一个人的环境变动。可能是一份新的工作,节令,或寰球大流行病的影响。在探索性设计中,人们能够钻研某些干涉措施(如药物医治或医治)对症状之间的相互作用有哪些影响。

在这篇博文中,我十分简要地介绍了如何用核平滑法预计时变 VAR 模型。这种办法是基于参数能够随工夫平滑变动的假如,这意味着参数不能从一个值 “ 跳 “ 到另一个值。而后,我重点介绍如何预计和剖析这种类型的时变 VAR 模型。

通过核平滑预计时变模型

核平滑法的核心思想如下。咱们在整个工夫序列的持续时间内抉择距离相等的工夫点,而后在每个工夫点估计 “ 部分 “ 模型。所有的部分模型加在一起就形成了时变模型。对于 “ 部分 “ 模型,咱们的意思是,这些模型次要是基于靠近钻研工夫点的工夫点。这是通过在参数估计过程中对观测值进行相应的加权来实现的。这个想法在下图中对一个数据集进行了阐明。

这里咱们只阐明在 t = 3 时对部分模型的预计。咱们在右边的面板上看到这个工夫序列的 10 个工夫点。红色的一列 w\_t\_e= 3 示意咱们在 t = 3 时预计部分模型可能应用的一组权重:靠近 t = 3 的工夫点的数据失去最高的权重,而更远的工夫点失去越来越小的权重。定义这些权重的函数显示在右图中。左图中的蓝色柱子和左边相应的蓝色函数示意另一种可能的加权。应用这种加权,咱们联合了更少的工夫上靠近的观测值。这使咱们可能在参数中检测到更多的 “ 工夫可变性 ”,因为咱们对更少的工夫点进行了平滑解决。然而,另一方面,咱们应用的数据较少,这使得咱们的估计值不太牢靠。因而,抉择一个加权函数,在对 “ 时变性 “ 的敏感性和稳固的预计之间获得良好的均衡是很重要的。在这里介绍的办法中,咱们应用了一个高斯加权函数(也称为核),它是由其标准差(或带宽)定义的。咱们将在上面探讨如何抉择一个好的带宽参数。

加载和检查数据

为了阐明预计时变 VAR 模型,我应用了 12 个情绪相干变量的 ESM 工夫序列,这些变量每天最多测量 10 次,间断测量 238 天。这些问题是 “ 我感到放松 ”、” 我感到丧气 ”、” 我感到焦躁 ”、” 我感到称心 ”、” 我感到孤单 ”、” 我感到焦虑 ”、” 我感到激情 ”、” 我感到狐疑 ”、” 我感到高兴 ”、” 我感到内疚 ”、” 我感到当机立断 ”、” 我感到刚强 ”。每个问题都用 7 分的李克特量表答复,范畴从 “ 不 “ 到 “ 十分 ”。

咱们看到数据集有 1476 个察看样本:

## \[1\] 1476   12
head(data)

time_data 蕴含每个测量的工夫信息。咱们将利用测量产生的日期、测量提醒和工夫戳(time)。

抉择最佳带宽

抉择好的带宽参数的办法之一是在训练数据集上用不同的候选带宽参数拟合时变模型,并在测试数据集上评估它们的预测误差。此外,数据驱动的带宽抉择可能须要相当长的工夫来运行。因而,在本文中,咱们只是将带宽固定为曾经抉择的最佳值。

bandwidth <- .26

预计时变 var 模型

咱们当初能够指定工夫变动的 VAR 模型的预计。咱们提供数据作为输出,并通过 type 和 level 参数指定变量的类型以及它们有多少个类别。在咱们的例子中,所有的变量都是间断的,因而咱们设置 type = rep(“g”) 示意间断高斯。咱们抉择用 lambdaSel = “CV “ 的穿插验证法来抉择正则化参数,并且咱们指定 VAR 模型应该包含一个滞后期 = 1 的单滞后期。参数 bee 和 day 提供了每个测量的日期和某一天的告诉数量。此外,咱们还提供了所有测量的工夫戳,工夫点 =time,来阐明缺失的测量。然而,请留神,咱们依然假如滞后期大小为 1。工夫戳只是用来确保加权的确给那些最靠近以后预计点的工夫点最高的权重。

对于时变模型,咱们须要指定两个额定的参数。首先,用 seq(0, 1, length = 20) 咱们指定咱们想在整个工夫序列的持续时间内预计 20 个部分模型(被归一化为 [0,1])。预计点的数量能够任意抉择,但在某些时候,减少更多的预计点意味着减少了不必要的计算成本,因为后续的部分模型基本上是雷同的。最初,咱们用带宽参数指定带宽。

# 残缺数据集的估算模型
tvvar(data,
                    type = rep("g"),
                    lambdaSel = "CV",
                    lags = 1,
                    estpoints = seq(0, 1, length = 20), 
                    bandwidth = bandwidth,

咱们能够输入对象

# 查看应用了多少数据
obj

其中提供了模型的摘要,也显示了 VAR 设计矩阵中的行数(876)与数据集中的工夫点数量(1476)。前者的数量较少,因为只有在给定的工夫点也有滞后 1 年的工夫点时,能力预计 VAR(1)模型。

计算时变预测误差

与规范 VAR 模型相似,咱们能够计算预测误差。从模型对象中提供新数据和变量能够计算新样本的预测误差。

参数 errorCon = c(“R2”, “RMSE”) 指定解释方差的比例(R^2)和均方根误差(RMSE)作为预测误差。最初一个参数 Method 指定了如何计算工夫变动的预测误差。选项 Method = “closestModel “ 应用最靠近的部分模型对一个工夫点进行预测。这里抉择的选项 tvMethod = “weighted”,提供了所有部分模型预测的加权平均值,应用以以后工夫点的地位为核心的加权函数进行加权。通常状况下,这两种办法失去的后果十分类似。

pred_obj <- predict(object = obj, 
                    data = data, 
                    errorCon = c("R2", "RMSE"),
                    Method = "weighted")

次要的输入是以下两个对象。
tverrors 是一个列表,包含每个预计点部分模型的预计误差;errors 蕴含整个预计点的平均误差。

将模型的局部内容可视化

在这里,咱们抉择了两种不同的可视化形式。首先,咱们来查看预计点 1、10 和 20 的 VAR 交互参数。

for(tp in c(1,10,20))igraph(wadj\[, , 1,tp  \], 
                             layout = "circle",
                             paste0("预计点 ="))

咱们看到,VAR 模型中的一些参数随工夫变化很大。例如,” 放松 “ 的自相干效应仿佛随着工夫的推移而缩小,” 强烈 “ 对 “ 称心 “ 的正效应只呈现在预计点 20,” 称心 “ 对 “ 有罪 “ 的负效应也只呈现在预计点 20。

咱们能够通过绘制这些单个参数与工夫的函数来放大它们。

# 画图
title(xlab = "预计点", cex.lab = 1.2)
title(ylab = "参数估计", cex.lab = 1.2)

for(i in 1:nrow(display)) {lines(1:20, ests\[par_row\[1\], \], lty = i) 


legend<- c(expression("轻松"\["t-1"\]  %->%  "轻松"\["t"\]),
                   expression("强烈"\["t-1"\]  %->%  "称心"\["t"\]),
                   expression("称心"\["t-1"\]  %->%  "羞愧"\["t"\]))

咱们看到,在工夫序列的开始阶段,” 放松 “ 对其自身的影响是比拟强的,但随后会向零降落,并在预计点 13 左右放弃零。“强烈”对“称心”对下一个工夫点的穿插滞后效应在预计点 9 之前等于零,但随后仿佛枯燥地减少。最初,” 称心 “ 对 “ 羞愧 “ 的穿插滞后效应也等于零,直到预计点 13 左近,而后枯燥地缩小了。

预计的稳定性

与规范模型相似,能够应用 bootstrap 采样散布来评估时变参数的稳定性。

是否有工夫变动?

在某些状况下,可能须要决定一个 VAR 模型的参数是否具备牢靠的时变性。为了做出这样的决定,咱们能够应用一个假设检验,其原假如是模型不具备时变性。上面是进行这种假设检验的一种办法。首先对数据进行规范的 VAR 模型的拟合,而后重复模仿这个预计模型的数据。对于每个模仿的工夫序列数据集,咱们计算出时变模型的汇合预测误差。这些预测误差的散布可作为原假如下预测误差的抽样散布。当初咱们能够计算时变 VAR 模型在教训数据上的汇合预计误差,并将其作为一个测试统计量。

总结

在本文中,我展现了如何用核平滑法预计一个时变 VAR 模型,该办法是基于所有参数是工夫的平滑函数的假如。除了预计模型外,咱们还探讨了抉择适当的带宽参数,如何计算(时变的)预测误差,以及如何将模型的不同方面可视化。最初,介绍了如何通过 bootstrap 法评估估计值的稳定性,以及如何进行假设检验,人们能够用它来抉择规范的和时变的 VAR 模型。


最受欢迎的见解

1. 在 python 中应用 lstm 和 pytorch 进行工夫序列预测

2.python 中利用长短期记忆模型 lstm 进行工夫序列预测剖析

3. 应用 r 语言进行工夫序列(arima,指数平滑)剖析

4.r 语言多元 copula-garch- 模型工夫序列预测

5.r 语言 copulas 和金融工夫序列案例

6. 应用 r 语言随机稳定模型 sv 解决工夫序列中的随机稳定

7.r 语言工夫序列 tar 阈值自回归模型

8.r 语言 k -shape 工夫序列聚类办法对股票价格工夫序列聚类

9.python3 用 arima 模型进行工夫序列预测

正文完
 0