6

私は行列を遅らせようとしています:

> B = matrix( c(2, 4, 3, 1, 5, 7),  nrow=3, ncol=2)
> B
     [,1] [,2]
[1,]    2    1
[2,]    4    5
[3,]    3    7
> lag(B)
     [,1] [,2]
[1,]    2    1
[2,]    4    5
[3,]    3    7

lag(B)与えない理由:

> lag(B)
     [,1] [,2]
[1,]    0    0
[2,]    2    1
[3,]    4    5
4

4 に答える 4

1

R で行列を遅らせる最も簡単な方法は、「embed()」関数を使用することです。再現可能な簡単な例を次に示します。

> # Create a 5x2 matrix
> m <- replicate(2, 1:5)
> m
     [,1] [,2]
[1,]    1    1
[2,]    2    2
[3,]    3    3
[4,]    4    4
[5,]    5    5
> 
> # Use the 'embed()' function to lag the matrix
> lag_m <- embed(m, 3)
> lag_m
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    3    3    2    2    1    1
[2,]    4    4    3    3    2    2
[3,]    5    5    4    4    3    3

embed() 関数とその出力に関するいくつかの重要な言葉。

  • この関数は次のように使用されます。embed(matrix, lag+1)

関数の最初の引数は、ラグしたい行列です。2 番目の引数。ただし、必要なラグの数は「プラス 1」です。したがって、embed(matrix, 3) は、行列を 2 期間遅らせることを意味します。

  • 関数の出力はラグ行列で、次のようになります。

. 最初の 2 列は元の m 行列を表しますが、行数はラグの数に合わせて調整されます (元の 5 行から 2 期間のラグを差し引いたもの)。

. 列の 2 番目のセット (列 3 と 4) は、1 期間遅れた m 行列です。

. 列の 3 番目のセット (列 5 と 6) は、2 期間遅れた m 行列です。

于 2015-02-24T22:05:11.890 に答える
1
l <- matrix(0,nrow(B),nrow(B))
l[-1,-nrow(B)] <- diag(nrow(B)-1)
l
##     [,1] [,2] [,3]
## [1,]    0    0    0
## [2,]    1    0    0
## [3,]    0    1    0

l %*% B
##      [,1] [,2]
## [1,]    0    0
## [2,]    2    1
## [3,]    4    5
于 2013-05-20T13:25:57.243 に答える