gpt4 book ai didi

r - 为什么 r 中的滞后不适用于矩阵?

转载 作者:行者123 更新时间:2023-12-04 14:46:36 25 4
gpt4 key购买 nike

我试图滞后一个矩阵:

> 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

最佳答案

这是因为滞后移动了 的对象,而不是数据值。它真正适用于时间序列对象。

lag用于普通矩阵,B , lag.default方法被调用。由于没有与普通矩阵相关的时间,因此假设时间为 1, 2, ..., NROW(B) :

> time(B)
[1] 1 2 3
attr(,"tsp")
[1] 1 3 1

并将时间移一,以便它们现在从 0 开始:
> time(lag(B))
[1] 0 1 2
attr(,"tsp")
[1] 0 2 1

如果要组合具有时间的对象,请使用时间序列类。 (第一列是下面显示中的时间。)
> library(zoo)
>
> # zooreg - regular series or almost so
> B.zr <- zooreg(B)
> merge(B.zr, lag(B.zr))
B.zr.1 B.zr.2 lag(B.zr).1 lag(B.zr).2
0 NA NA 2 1
1 2 1 4 5
2 4 5 3 7
3 3 7 NA NA

> # zoo - irregular series
> B.z <- zoo(B)
> merge(B.z, lag(B.z))
B.z.1 B.z.2 lag(B.z).1 lag(B.z).2
1 2 1 4 5
2 4 5 3 7
3 3 7 NA NA

注意 lag.zooreg之间的区别它可以超出原始时间的范围,产生 0 时间和 lag.zoo不能,因为后者没有规律性假设。

我们也可以使用 ts假定规律性的类,因此可以产生 0 时间,但没有 merge.ts使它在这里不太有用。

关于r - 为什么 r 中的滞后不适用于矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16650461/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com