ARIMA(1,0,0)与滞后值回归的差异及R代码疑问
R中AR(1)模型:lm()与arima()的差异解析
一、两段代码的功能拆解
1. lm() 代码的作用
ar_1 <- lm(df$VALUE ~ lag(df$value)) summary(ar_1)
这段是用普通最小二乘法(OLS)拟合线性回归,把df$VALUE(注意这里和自变量的df$value大小写不同,若为笔误应统一为同一列)当作因变量,用它的一阶滞后值做自变量。
核心特点:
- 自动丢弃因变量/自变量中含缺失值的行——
lag()生成的第一个值为缺失,因此实际仅拟合从第2个到最后一个观测值。 - 完全遵循普通线性回归的「残差独立同分布」假设计算系数和标准误,未考虑时间序列的自相关特性。
2. arima() 代码的作用
arima_values <- arima(df$value, order=c(1,0,0)) arima_values
这段是用极大似然估计(MLE)拟合纯AR(1)时间序列模型——order=c(1,0,0)对应ARIMA(p,d,q)参数:p=1(一阶自回归)、d=0(不做差分)、q=0(无移动平均),即标准的AR(1)模型。
核心特点:
- 基于时间序列的概率模型框架,会利用全部观测值(不会直接丢弃第一个观测),通过模型逻辑处理初始值问题。
- 拟合时会考虑时间序列的残差自相关结构,估计的系数和标准误均符合AR模型的统计假设。
二、结果不同的核心原因
虽然AR(1)的公式看起来和「一阶滞后回归」类似,但两者底层逻辑存在本质差异:
- 估计方法不同:
lm()以最小化残差平方和为目标(OLS),arima()默认以最大化模型似然函数为目标(MLE),优化逻辑不同导致结果差异。 - 观测值利用不同:
lm()少用了第一个观测(滞后后缺失),arima()用了全部数据,样本量差异会直接影响系数结果。 - 标准误计算逻辑不同:
lm()的标准误假设残差独立,完全未考虑时间序列自相关;arima()的标准误结合AR模型的自相关结构计算,更贴合时间序列特性。 - 模型假设不同:
arima()针对平稳时间序列设计,lm()无此限制,两者在中心化、截距处理的细节逻辑上也有差异。
内容的提问来源于stack exchange,提问作者ameyashete
相关产品推荐
相关产品推荐

