R语言VARS包中Canada数据集拟合值比原序列少2个数据点的原因咨询
VAR模型拟合后观测值减少的原因分析
问题描述
我在R语言中使用vars包及其内置的Canada数据集分析时发现一个现象:原Canada时间序列的维度是84×4,但拟合VAR模型后的结果维度变成了82×4,少了2个数据点。我用到的代码片段如下:
library(vars) rm(list=ls(all=TRUE)) data(Canada) # 绘制时间序列 par(mfrow=c(1, 1)) plot(Canada, plot.type="m", mar=c(gap=0.3, 5.1, gap=0.3, 2.1)) # 使用VARselect选择模型阶数 # VARselect(Canada, lag.max = ...)
原因解释
这是VAR模型的正常行为:当你拟合一个滞后阶数为p的VAR模型时,模型需要用前p个观测值来构建滞后项,因此会自动舍弃前p个原始观测值,最终得到的拟合结果(比如模型的残差、拟合值等)的观测数会是原始观测数 - p。
从你的数据维度变化(84→82)来看,说明你最终选择的是p=2的VAR模型。比如运行VARselect(Canada)时,默认lag.max为10,系统通常会推荐p=2(这也是Canada数据集的常见最优阶数),当你用VAR(Canada, p=2)拟合模型后,输出的拟合值或残差就会是82行(84-2=82)。
验证方法
你可以通过以下代码验证这一点:
# 选择最优阶数 var_select <- VARselect(Canada, lag.max = 10) print(var_select$selection) # 查看推荐的滞后阶数,通常是2 # 拟合VAR(2)模型 var_model <- VAR(Canada, p = 2) # 查看拟合值的维度 dim(fitted(var_model)) # 输出应该是82×4,和你观察到的一致
这种观测数减少完全是因为模型需要依赖滞后项进行拟合,属于正常的模型逻辑,并不是数据或代码出错哦~
内容的提问来源于stack exchange,提问作者Anna
相关产品推荐
相关产品推荐

