R语言估计时变VAR模型时间序列的实证研究分析案例

简介: R语言估计时变VAR模型时间序列的实证研究分析案例

加载R包和数据集


上述症状数据集包含在R-package  中,并在加载时自动可用。加载包后,我们将此数据集中包含的12个心情变量进行子集化:


mood_data <- as.matrix(symptom_data$data[, 1:12]) # 变量子集
mood_labels <- symptom_data$colnames[1:12] # 变量标签
colnames(mood_data) <- mood_labels
time_data <- symptom_data$data_time


 

对象mood_data是一个1476×12矩阵,测量了12个心情变量:



> dim(mood_data)
[1] 1476 12
> head(mood_data[,1:7])
Relaxed Down Irritated Satisfied Lonely Anxious Enthusiastic
[1,] 5 -1 1 5 -1 -1 4
[2,] 4 0 3 3 0 0 3
[3,] 4 0 2 3 0 0 4
[4,] 4 0 1 4 0 0 4
[5,] 4 0 2 4 0 0 4
[6,] 5 0 1 4 0 0 3


time_data包含有关每次测量的时间戳的信息。数据预处理需要此信息。


> head(time_data)
date dayno beepno beeptime resptime_s resptime_e time_norm
1 13/08/12 226 1 08:58 08:58:56 09:00:15 0.000000000
2 14/08/12 227 5 14:32 14:32:09 14:33:25 0.005164874
3 14/08/12 227 6 16:17 16:17:13 16:23:16 0.005470574
4 14/08/12 227 8 18:04 18:04:10 18:06:29 0.005782097
5 14/08/12 227 9 20:57 20:58:23 21:00:18 0.006285774
6 14/08/12 227 10 21:54 21:54:15 21:56:05 0.006451726



该数据集中的一些变量是高度偏斜的,这可能导致不可靠的参数估计。在这里,我们通过计算自举置信区间(KS方法)和可信区间(GAM方法)来处理这个问题,以判断估计的可靠性。由于本教程的重点是估计时变VAR模型,因此我们不会详细研究变量的偏度。然而,在实践中,应该在拟合(时变)VAR模型之前始终检查边际分布。



估计时变VAR模型


通过参数lags = 1,我们指定拟合滞后1 VAR模型,并通过lambdaSel =“CV”选择具有交叉验证的参数λ。最后,使用参数scale = TRUE,我们指定在模型拟合之前,所有变量都应缩放为零和标准差1。当使用“1正则化”时,建议这样做,因为否则参数惩罚的强度取决于预测变量的方差。由于交叉验证方案使用随机抽取来定义折叠,因此我们设置种子以确保重现性。

在查看结果之前,我们检查了1476个时间点中有多少用于估算,这在调用控制台中的输出对象时打印的摘要中显示



> tvvar_obj
mgm fit-object
Model class: Time-varying mixed Vector Autoregressive (tv-mVAR) model
Lags: 1
Rows included in VAR design matrix: 876 / 1475 ( 59.39 %)
Nodes: 12
Estimation points: 20


估计的VAR系数的绝对值存储在对象tvvar_obj $ wadj中,该对象是维度p×p×滞后×estpoints的数组。



参数估计的可靠性



res_obj <- resample(object = tvvar_obj,
data = mood_data,
nB = 50,
blocks = 10,seeds = 1:50,
quantiles = c(.05, .95))


res_obj $ bootParameters包含每个参数的经验采样分布。


计算时变预测误差


函数predict()计算给定mgm模型对象的预测和预测误差。


预测存储在pred_obj $预测中,并且所有时变模型的预测误差组合在pred_obj中:


> pred_obj$errors
Variable Error.RMSE Error.R2
1 Relaxed 0.939 0.155
2 Down 0.825 0.297
3 Irritated 0.942 0.119
4 Satisfied 0.879 0.201
5 Lonely 0.921 0.182
6 Anxious 0.950 0.086
7 Enthusiastic 0.922 0.169
8 Suspicious 0.818 0.247
9 Cheerful 0.889 0.200
10 Guilty 0.928 0.175
11 Doubt 0.871 0.268
12 Strong 0.896 0.195



可视化时变VAR模型

可视化上面估计的一部分随时间变化的VAR参数:



# 网络图


Q <- qgraph(t(mean_wadj), DoNotPlot=TRUE)
saveRDS(Q$layout, "Tutorials/files/layout_mgm.RDS")

# 选择画图的时间点
tpSelect <- c(2, 10, 18)

# 设置颜色
tvvar_obj$edgecolor[, , , ][tvvar_obj$edgecolor[, , , ] == "darkgreen"] <- c("darkblue")
lty_array <- array(1, dim=c(12, 12, 1, 20))
lty_array[tvvar_obj$edgecolor[, , , ] != "darkblue"] <- 2

for(tp in tpSelect) {
  qgraph(t(tvvar_obj$wadj[, , 1, tp]),
         layout = Q$layout,
         edge.color = t(tvvar_obj$edgecolor[, , 1, tp]),
         labels = mood_labels,
         vsize = 13,
         esize = 10,
         asize = 10,
         mar = rep(5, 4),
         minimum = 0,
         maximum = .5,
         lty = t(lty_array[, , 1, tp]),
         pie = pred_obj$tverrors[[tp]][, 3])
}



CIs <- apply(res_obj$bootParameters[par_row[1], par_row[2], 1, , ], 1, function(x) {
    quantile(x, probs = c(.05, .95))
  } )
  
  # 绘制阴影
  polygon(x = c(1:20, 20:1), y = c(CIs[1,], rev(CIs[2,])), col=alpha(colour = cols[i], alpha = .3), border=FALSE)
  

  
}



图显示了上面估计的时变VAR参数的一部分。顶行显示估计点8,15和18的VAR参数的可视化。蓝色实线箭头表示正关系,红色虚线箭头表示负关系。箭头的宽度与相应参数的绝对值成比例。


相关文章
|
5月前
|
数据采集 机器学习/深度学习 数据可视化
R语言从数据到决策:R语言在商业分析中的实践
【9月更文挑战第1天】R语言在商业分析中的应用广泛而深入,从数据收集、预处理、分析到预测模型构建和决策支持,R语言都提供了强大的工具和功能。通过学习和掌握R语言在商业分析中的实践应用,我们可以更好地利用数据驱动企业决策,提升企业的竞争力和盈利能力。未来,随着大数据和人工智能技术的不断发展,R语言在商业分析领域的应用将更加广泛和深入,为企业带来更多的机遇和挑战。
|
4月前
|
数据挖掘 C语言 C++
R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。
【10月更文挑战第21天】时间序列分析是一种重要的数据分析方法,广泛应用于经济学、金融学、气象学、生态学等领域。R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。本文将介绍使用R语言进行时间序列分析的基本概念、方法和实例,帮助读者掌握R语言在时间序列分析中的应用。
79 3
【R语言实战】——带有高斯新息的金融时序的GARCH模型拟合预测及VAR/ES风险度量
【R语言实战】——带有高斯新息的金融时序的GARCH模型拟合预测及VAR/ES风险度量
|
9月前
|
数据可视化 数据挖掘 API
【R语言实战】聚类分析及可视化
【R语言实战】聚类分析及可视化
|
5月前
|
数据采集 数据可视化 数据挖掘
R语言在金融数据分析中的深度应用:探索数据背后的市场智慧
【9月更文挑战第1天】R语言在金融数据分析中展现出了强大的功能和广泛的应用前景。通过丰富的数据处理函数、强大的统计分析功能和优秀的可视化效果,R语言能够帮助金融机构深入挖掘数据价值,洞察市场动态。未来,随着金融数据的不断积累和技术的不断进步,R语言在金融数据分析中的应用将更加广泛和深入。
|
6月前
|
机器学习/深度学习 数据采集 数据可视化
R语言在数据科学中的应用实例:探索与预测分析
【8月更文挑战第31天】通过上述实例,我们展示了R语言在数据科学中的强大应用。从数据准备、探索、预处理到建模与预测,R语言提供了完整的解决方案和丰富的工具集。当然,数据科学远不止于此,随着技术的不断发展和业务需求的不断变化,我们需要不断学习和探索新的方法和工具,以更好地应对挑战,挖掘数据的潜在价值。 未来,随着大数据和人工智能技术的普及,R语言在数据科学领域的应用将更加广泛和深入。我们期待看到更多创新的应用实例,为各行各业的发展注入新的动力。
|
6月前
|
数据采集 存储 数据可视化
R语言时间序列分析:处理与建模时间序列数据的深度探索
【8月更文挑战第31天】R语言作为一款功能强大的数据分析工具,为处理时间序列数据提供了丰富的函数和包。从数据读取、预处理、建模到可视化,R语言都提供了灵活且强大的解决方案。然而,时间序列数据的处理和分析是一个复杂的过程,需要结合具体的应用场景和需求来选择合适的方法和模型。希望本文能为读者在R语言中进行时间序列分析提供一些有益的参考和启示。
|
6月前
|
资源调度 数据挖掘
R语言回归分析:线性回归模型的构建与评估
【8月更文挑战第31天】线性回归模型是统计分析中一种重要且实用的工具,能够帮助我们理解和预测自变量与因变量之间的线性关系。在R语言中,我们可以轻松地构建和评估线性回归模型,从而对数据背后的关系进行深入的探索和分析。
|
6月前
|
机器学习/深度学习 数据采集
R语言逻辑回归、GAM、LDA、KNN、PCA主成分分类分析预测房价及交叉验证
上述介绍仅为简要概述,每个模型在实施时都需要仔细调整与优化。为了实现高度精确的预测,模型选择与调参是至关重要的步骤,并且交叉验证是提升模型稳健性的有效途径。在真实世界的房价预测问题中,可能还需要结合地域经济、市场趋势等宏观因素进行综合分析。
110 3
|
9月前
|
数据采集 数据可视化
利用R语言进行因子分析实战(数据+代码+可视化+详细分析)
利用R语言进行因子分析实战(数据+代码+可视化+详细分析)