You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:19:28