1

我有以下示例数据框:

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 包中的 Farrington 算法algo.farringtonsurveillance但是,为了这样做,我的数据必须是类 disProgObj 的对象。根据我在监视包的 PDF 中找到的示例,结果应该是一个列表。

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

4

2 回答 2

1

像这样的东西?

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
于 2016-11-25T12:07:52.520 回答
1

为了处理这些数据,R 包监控提供了 S4 类“sts”(监控时间序列),它取代了“disProg”类。要将您的数据转换为“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”对象可以转换为过时的“disProg”类,sts2disProg()如 Roman 的回答所示。但是,这种转换不是必需的,因为该函数farrington()可以直接与“sts”对象一起使用(它在内部调用algo.farrington())。

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

于 2017-01-09T11:06:31.567 回答