ARIMA 模型中的自由度

机器算法验证 时间序列 t检验 有马
2022-04-15 17:33:35

我通过 R 中的 arima 函数估计了 ARIMA 模型的参数,并计算了每个参数的 t 比率或 t 统计量。现在我想找到 t 检验的 p 值,我的自由度是多少?是我观察的次数吗?

2个回答

假设你有一个ARIMA(2,0,0), 和长度n=100,那么你有98自由程度。然后您正在建模的变量的前两个值被“使用”,您将拥有98拟合值,和98自由程度。

在 R 中使用 AR:

对于 ARIMA(2,0,0),df = N - 2

包括截距 df = N - 3

包括截距和时间趋势(即 xreg = 1:N)df = N - 4。

在下面的代码中,使用最大似然估计系数来完成 AR(2)。在其他语言(如 SAS)中,平方误差和均方误差之和是使用适当的自由度数自动计算的。

您可以看出自由度为 N + X(其中 X = -4),因为:

一开始所有积分都是免费的。X = 0

它是 AR(2),因此两点不是自由的。

X = X - 2

包括一个拦截,另一个点失去了自由:

X = X - 1

包括一个外部回归量(这里是时间分量,1:长度(y),即 1 到 y 的数量),另一点失去了自由度:

X = X - 1

因此 X = -4 因为 4 个点失去了自由。

y_ar <- arima(y, order = c(2,0,0), # AR(2) 
method = "ML,        # maximum likelihood 
include.mean = TRUE,  # include intercept 
  # see the following link for details on irregularities in R 
  # given this parameter 
  # https://www.stat.pitt.edu/stoffer/tsa2/Rissues.htm
transform.pars = FALSE,  # best practice for method = "ML"
xreg = 1:length(y))   # includes time trend as external regressors 

sse = sum(y_ar$residuals^2)
mse = sum(y_ar$residuals^2)/(length(y) - 4)
     # 4 parameters