在 R 中进行时间序列研究时,我发现它arima
仅提供拟合模型的系数值及其标准误差。但是,我也想获得系数的 p 值。
我没有找到任何提供 coef 意义的函数。
所以我想自己计算,但我不知道系数的 t 或 chisq 分布的自由度。所以我的问题是如何获得 R 中拟合 arima 模型系数的 p 值?
在 R 中进行时间序列研究时,我发现它arima
仅提供拟合模型的系数值及其标准误差。但是,我也想获得系数的 p 值。
我没有找到任何提供 coef 意义的函数。
所以我想自己计算,但我不知道系数的 t 或 chisq 分布的自由度。所以我的问题是如何获得 R 中拟合 arima 模型系数的 p 值?
由于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 值。
您也可以coeftest
从lmtest
包中使用:
> 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 函数查找。