【问题标题】:Create a function method for all possible time series classes为所有可能的时间序列类创建一个函数方法
【发布时间】:2013-07-08 07:40:51
【问题描述】:

这是从这个 (R: Recreate historical membership from a list of changes in membership) 问题继续的问题。

那里讨论的问题实际上源于金融界普遍关注的问题,我们通常拥有指数的成员股票,然后指数成员资格发生变化。通常我们希望重新创建此成员资格,而手头的数据是当前成员资格和更改日期。

但是,典型的问题是为定期的时间序列(例如每天、每周等)生成此成员资格,而更改本身就是不规则的时间序列。

上面链接的问题中建议的方法可以在这里以这样的方式使用:

  1. 查找所有已知更改时间的成员。
  2. 以所需的频率创建一个偏好时间类的序列。
  3. 使用成员资格的最后一次已知变化复制序列中每次的成员资格。

我想为 recreate.memship 函数编写函数方法,它可以为 R 中任何时间序列类中给出的 indx 做正确的事情。我能想到的一种方法是为每个函数定义一个方法已知类,例如 tsDatezooxts,... 存在 seq 方法。

这个冗长的讨论之后的问题有两个:

  1. 是否有一种聪明的方法来定义方法,这样我就不必为每个已知的时间类编写新方法。 (换句话说,比我聪明的程序员如何设计这个?)
  2. 对于这个问题/问题类别是否有已知的解决方案?

【问题讨论】:

    标签: r time-series finance


    【解决方案1】:

    xts 已经允许这样做。查看package vignette 的第 4 节。

    基本上,您在函数的开头调用try.xts,在结尾调用reclass。我在 TTR 包中使用了这个范例。例如:

    R> momentum
    function (x, n = 1, na.pad = TRUE) 
    {
        x <- try.xts(x, error = as.matrix)
        if (is.xts(x)) {
            mom <- diff(x, n, na.pad = na.pad)
        }
        else {
            NAs <- NULL
            if (na.pad) {
                NAs <- rep(NA, n)
            }
            mom <- c(NAs, diff(x, n))
        }
        reclass(mom, x)
    }
    <environment: namespace:TTR>
    

    【讨论】:

    • 这太棒了!非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-05
    • 1970-01-01
    • 2019-11-15
    • 2017-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多