1

これは、この ( R: メンバーシップの変更のリストから過去のメンバーシップを再作成する ) の質問から続く質問です。

ここで議論されている問題は、実際には金融への一般的な関心の問題から生じます。この場合、通常、インデックスのメンバー株式があり、インデックスのメンバーシップが変化します。多くの場合、このメンバーシップを再作成する必要があり、手元にあるデータは現在のメンバーシップと、変更を伴う変更の日付です。

ただし、典型的な問題は、変更自体が不規則な時系列であるのに対し、定期的な時系列 (毎日、毎週など) に対してこのメ​​ンバーシップを生成することです。

上記にリンクされている問題で提案されている方法は、次のような方法でここで使用できます。

  1. 変更のすべての既知の時間でメンバーシップを検索します。
  2. 希望する頻度で優先時間クラスのシーケンスを作成します。
  3. メンバーシップの最後の既知の変更を使用して、シーケンス内の各時間のメンバーシップを複製します。

recreate.memshipR の任意の時系列クラスで与えられた関数に対して正しいことを実行できる関数メソッドを書きたいと思います。考えられる 1 つの方法は、、、、、、などの既知のindxクラスごとにメソッドを定義することです。 ..メソッドが存在します。tsDatezooxtsseq

この長ったらしい議論の後の質問は 2 つあります。

  1. 既知の時間クラスごとに新しいメソッドを作成する必要がないように、メソッドを定義するスマートな方法はありますか? (言い換えれば、私より賢いプログラマーはこれをどのように設計するのでしょうか?)
  2. この問題/問題のクラスに対する既知の解決策はありますか?
4

1 に答える 1

2

xts はすでにこれを許可しています。パッケージ 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>
于 2013-07-10T11:39:02.000 に答える