0

希望是简单的编码问题:如何在函数中包含统计测试。具体来说,我正在处理时间序列,并且我想标记不是静止的曲线。我在 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

我想要的是将测试结果合并到一个函数中。

4

0 回答 0