如何计算 R 中 ARIMA 模型的参数 p 值?

机器算法验证 r 时间序列 卡方检验 有马
2022-01-26 11:22:22

在 R 中进行时间序列研究时,我发现它arima 仅提供拟合模型的系数值及其标准误差。但是,我也想获得系数的 p 值。

我没有找到任何提供 coef 意义的函数。

所以我想自己计算,但我不知道系数的 t 或 chisq 分布的自由度。所以我的问题是如何获得 R 中拟合 arima 模型系数的 p 值?

3个回答

由于arima使用最大似然进行估计,因此系数是渐近正态的。因此,将系数除以其标准误差以获得 z 统计量,然后计算 p 值。这是 R 中的示例以及arima 帮助页面中的第一个示例:

> aa <- arima(lh, order = c(1,0,0))
> aa

Call:
arima(x = lh, order = c(1, 0, 0))

Coefficients:
         ar1  intercept
      0.5739     2.4133
s.e.  0.1161     0.1466

sigma^2 estimated as 0.1975:  log likelihood = -29.38,  aic = 64.76
> (1-pnorm(abs(aa$coef)/sqrt(diag(aa$var.coef))))*2
         ar1    intercept 
1.935776e-07 0.000000e+00 

最后一行给出了 p 值。

您也可以coeftestlmtest包中使用:

> aa <- arima(lh, order = c(1,0,0))

> coeftest(aa)

z test of coefficients:

          Estimate Std. Error z value  Pr(>|z|)    
ar1        0.57393    0.11614  4.9417 7.743e-07 ***
intercept  2.41329    0.14661 16.4602 < 2.2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

“t 值”是系数与标准误差的比值。自由度 (ndf) 将是观察数减去模​​型中的最大差异阶数减去估计系数的数量。“F 值”将是“t 值”的平方为了准确计算概率,您必须调用非中心卡方函数并传入 F 值和自由度 (1,ndf)或者干脆调用 F 函数查找。