【问题标题】:Convert dataframe to list for Farrington algorithm algo.farrington将数据帧转换为 Farrington 算法 algo.farrington 的列表
【发布时间】:2017-04-09 19:19:58
【问题描述】:

我有以下示例数据框:

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

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

【问题讨论】:

    标签: r surveillance


    【解决方案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”对象可以通过sts2disProg() 转换为过时的“disProg”类,如 Roman 的回答所示。但是,这种转换不是必需的,因为函数farrington() 可以直接与“sts”对象一起使用(它在内部调用algo.farrington())。

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

    【讨论】:

      【解决方案2】:

      这样的?

      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
      

      【讨论】:

      • 这似乎有效,但是当我尝试使用 algo.farrington(xsts) 时出现错误:disProgObj$observed 中的错误:$ 运算符未为此 S4 类定义
      • @Joep_S 您需要将stsdisProg 函数的结果保存到变量中并在algo.farrington 中使用。
      猜你喜欢
      • 2016-05-21
      • 1970-01-01
      • 1970-01-01
      • 2023-01-21
      • 1970-01-01
      • 2019-10-29
      • 1970-01-01
      • 1970-01-01
      • 2021-12-26
      相关资源
      最近更新 更多