2

ドキュメントでこの質問に対する答えを見つけることができません。オブジェクトzooの基礎になっているので、これは機能すると思いますが、次のようになります。xts

  1. オブジェクトに対して 通常lagdiff関数を使用できますか?xts
  2. ある意味でオブジェクトに対してrollapply関数を実行したい場合(重複しない領域で機能する関数があることを知っています)、オブジェクトで使用するだけで、下にあるのでもう一度機能する必要がありますか?xtszooxtsperiod.applyrollapplyxtszoo

zoo編集:私は詳細を調べたところ、それが実際にの根底にあるようには見えませんxts。誰かがこれについてコメント/確認できますか?

4

2 に答える 2

11

できますが、期待した結果が得られない場合があります。

これは、オブジェクトにlag適用された1年の遅れです(これは組み込みのデータセットであり、のヘルプファイルで例として使用されているため、試してみることができます)。ラグセットは1年前に開始されます(すべてのデータが表示されます)。tsldeathslag

ldeaths
#       Jan  Feb  Mar  Apr  May  Jun  Jul  Aug  Sep  Oct  Nov  Dec
# 1974 3035 2552 2704 2554 2014 1655 1721 1524 1596 2074 2199 2512
# 1975 2933 2889 2938 2497 1870 1726 1607 1545 1396 1787 2076 2837
# 1976 2787 3891 3179 2011 1636 1580 1489 1300 1356 1653 2013 2823
# 1977 3102 2294 2385 2444 1748 1554 1498 1361 1346 1564 1640 2293
# 1978 2815 3137 2679 1969 1870 1633 1529 1366 1357 1570 1535 2491
# 1979 3084 2605 2573 2143 1693 1504 1461 1354 1333 1492 1781 1915
lag(ldeaths, 12)
#       Jan  Feb  Mar  Apr  May  Jun  Jul  Aug  Sep  Oct  Nov  Dec
# 1973 3035 2552 2704 2554 2014 1655 1721 1524 1596 2074 2199 2512
# 1974 2933 2889 2938 2497 1870 1726 1607 1545 1396 1787 2076 2837
# 1975 2787 3891 3179 2011 1636 1580 1489 1300 1356 1653 2013 2823
# 1976 3102 2294 2385 2444 1748 1554 1498 1361 1346 1564 1640 2293
# 1977 2815 3137 2679 1969 1870 1633 1529 1366 1357 1570 1535 2491
# 1978 3084 2605 2573 2143 1693 1504 1461 1354 1333 1492 1781 1915

xts次に、データセットをオブジェクトに変換してみます。

ldeaths.x = as.xts(ldeaths)
head(lag(ldeaths.x, 12), n=14)
#          [,1]
# Jan 1974   NA
# Feb 1974   NA
# Mar 1974   NA
# Apr 1974   NA
# May 1974   NA
# Jun 1974   NA
# Jul 1974   NA
# Aug 1974   NA
# Sep 1974   NA
# Oct 1974   NA
# Nov 1974   NA
# Dec 1974   NA
# Jan 1975 3035
# Feb 1975 2552

おっと。あなたが期待したものではありません。ただし、のヘルプファイルには次のように記載されているため、期待する必要があります。lag.xts

...ラグのデフォルトの動作は、その演算子の一般的な時系列解釈と一致する必要があることが決定されました。具体的には、時間't'の値は、正のラグの時間't-1'の値である必要があります。これは、lag.zooやlag.tsとは異なります。

だから、やってみましょうk = -12

head(lag(ldeaths.x, -12), n=14)
#          [,1]
# Jan 1974 2933
# Feb 1974 2889
# Mar 1974 2938
# Apr 1974 2497
# May 1974 1870
# Jun 1974 1726
# Jul 1974 1607
# Aug 1974 1545
# Sep 1974 1396
# Oct 1974 1787
# Nov 1974 2076
# Dec 1974 2837
# Jan 1975 2787
# Feb 1975 3891

楽しみのために、zooオブジェクトはどうなりますか?まず、に変換してzooから試してください。

ldeaths.z = zoo(ldeaths.x)
head(lag(ldeaths.z, 12), n=14)
# 
# Jan 1974 2933
# Feb 1974 2889
# Mar 1974 2938
# Apr 1974 2497
# May 1974 1870
# Jun 1974 1726
# Jul 1974 1607
# Aug 1974 1545
# Sep 1974 1396
# Oct 1974 1787
# Nov 1974 2076
# Dec 1974 2837
# Jan 1975 2787
# Feb 1975 3891
于 2012-08-08T07:11:55.937 に答える
4

xtsオブジェクトは、「下」の動物園オブジェクトではありません。$.zooxtsはzooのサブクラスです。つまり、ジェネリック関数(egおよび)に対してxtsメソッドが存在しない場合にzooメソッドが呼び出され$<-.zooます。zooオブジェクトとxtsオブジェクトはどちらも、順序付けられたインデックス属性を持つ行列です。xtsでは、インデックスが時間ベースである必要があります。

はい、xtsオブジェクトで使用できlagますdiff。mrdwabが指摘し たように、意図的におよびとlag.xtsは異なる動作をします。lag.tslag.zoo

rollapplyxtsオブジェクトでzooの関数ファミリーを使用することもできますがas.xts、結果が必要になる場合があります。

于 2012-08-08T11:19:10.423 に答える