将数据框转换为 Farrington 算法的列表 algo.farrington

Convert dataframe to list for Farrington algorithm algo.farrington

我有以下示例数据框:

data.frame(WEEK=c(1:10),YEAR=2000,
           NUMBER=c(0,1,4,25,9,7,4,2,9,12))

   WEEK YEAR NUMBER
1     1 2000      0
2     2 2000      1
3     3 2000      4
4     4 2000     25
5     5 2000      9
6     6 2000      7
7     7 2000      4
8     8 2000      2
9     9 2000      9
10   10 2000     12

我想使用 R 中 surveillance 包中的 Farrington 算法 algo.farrington。但是,为了这样做,我的数据必须是 class disProgObj 的对象。根据我在 surveillance 包的 PDF 中找到的示例,结果应该是一个列表。

有谁知道如何转换我的数据以便让算法正常工作?

是这样的吗?

library(surveillance)

x <- data.frame(WEEK=c(1:10),YEAR=2000,
                NUMBER=c(0,1,4,25,9,7,4,2,9,12))

xsts <- sts(observed = x$NUMBER, start = c(2000, 1), frequency = 52)

sts2disProg(sts = xsts)

以上转换产生了一个 "disProg" 对象,打印如下:

-- An object of class disProg -- 
freq:        52 
start:       2000 1 
dim(observed):   10 1 

Head of observed:
     observed1
[1,]         0

为了处理此类数据,R 包 surveillance 提供了 S4 class "sts"(监视时间序列),它取代了 "disProg" class。要将您的数据转换为 "sts" 对象:

x <- data.frame(WEEK=c(1:10), YEAR=2000, NUMBER=c(0,1,4,25,9,7,4,2,9,12))
xsts <- sts(observed = x$NUMBER, start = c(2000, 1), frequency = 52)
xsts

产生:

-- An object of class sts -- 
freq:        52 
start:       2000 1 
dim(observed):   10 1 

Head of observed:
     observed1
[1,]         0

此 "sts" 对象可以通过 sts2disProg() 转换为过时的 "disProg" class,如 Roman 的回答所示。但是,这种转换不是必需的,因为函数 farrington() 可以直接与 "sts" 对象一起使用(它在内部调用 algo.farrington())。

包作者鼓励使用较新的 "sts" class 来封装计数时间序列。有关爆发检测工具的说明,请参阅 http://doi.org/10.18637/jss.v070.i10 上发布的软件包 vignette("monitoringCounts")