希望是简单的编码问题:如何在函数中包含统计测试。具体来说,我正在处理时间序列,并且我想标记不是静止的曲线。我在 R 中需要这样的东西:
flag<- list()
for (i in 1:length(obsv)) {
if adf.test(i) FAIL {
append(flag, i)
}}
使用可重现的示例进行编辑:
>df
DATE ID VALUE
2012-03-06 1 5.67
2012-03-07 1 3.45
2012-03-08 1 4.56
2012-03-09 1 20.30
2012-03-10 1 5.10
2012-03-06 2 5.67
2012-03-07 2 3.45
2012-03-08 2 4.56
2012-03-09 2 5.28
2012-03-10 2 5.10
2012-03-06 3 5.67
2012-03-07 3 7.80
2012-03-08 3 8.79
2012-03-09 3 9.43
2012-03-10 3 10.99
您可以看到,对象 2 是静止的,但 3 表现出趋势,而 1 在 3/09 有一个脉冲。因此,我想标记 1 和 3。
>library(tseries)
>adf.test(df[which(df$ID==1), 3])
Augmented Dickey-Fuller Test
data: data
Dickey-Fuller = 11.1451, Lag order = 16, p-value = 0.01
null hypothesis: non-stationary
>adf.test(df[which(df$ID==2), 3])
Augmented Dickey-Fuller Test
data: data
Dickey-Fuller = 11.1451, Lag order = 16, p-value = 0.99
alternative hypothesis: stationary
>adf.test(df[which(df$ID==3), 3])
Augmented Dickey-Fuller Test
data: data
Dickey-Fuller = 11.1451, Lag order = 16, p-value = 0.04
null hypothesis: non-stationary
我想要的是将测试结果合并到一个函数中。