R 中时间序列数据的差异

问题描述 投票:0回答:1

我正在从事时间序列分析。为了测试数据的平稳性,我想从数据中得到第一个差异。该数据有 22 个特征列和许多行。数据头如下:

我的问题是,我试图计算出每列(不应使用第二列和第三列)的第一和第二阶差异(不是滞后),以将它们放入平稳性测试中。我的尝试是这样的:

diff1<- c()
for(i in 1:length(city)){

   diff1[i]<- paste(city[i],"diff1",sep=".")  }                                         

for(x in 1:length(city)){

  assign(paste(df[x]), diff((eval(parse(text = city[x])))[,1]))
 }

我觉得不应该这么复杂,而且上面的代码并没有算出每个城市列的差异。我该怎么做呢?谢谢。

r time-series
1个回答
0
投票

tsibble
包可以帮助计算差异。此示例添加具有三个特征的第一个差异的列。

library(dplyr)

set.seed(123)
df <- data.frame(
  date = c('2000-01-20', '2000-02-20', '2000-03-20', '2000-04-20', '2000-05-20', '2000-06-20'),
  Composite.20 = runif(6, 100, 120),
  Nation.US = runif(6, 100, 120),
  AZ.Phoenix = runif(6, 100, 120)
)

df
#>         date Composite.20 Nation.US AZ.Phoenix
#> 1 2000-01-20     105.7516  110.5621   113.5514
#> 2 2000-02-20     115.7661  117.8484   111.4527
#> 3 2000-03-20     108.1795  111.0287   102.0585
#> 4 2000-04-20     117.6603  109.1323   117.9965
#> 5 2000-05-20     118.8093  119.1367   104.9218
#> 6 2000-06-20     100.9111  109.0667   100.8412

df |>
  mutate(across(-date, tsibble::difference, .names = '{.col}_first_diff'))
#>         date Composite.20 Nation.US AZ.Phoenix Composite.20_first_diff
#> 1 2000-01-20     105.7516  110.5621   113.5514                      NA
#> 2 2000-02-20     115.7661  117.8484   111.4527               10.014552
#> 3 2000-03-20     108.1795  111.0287   102.0585               -7.586564
#> 4 2000-04-20     117.6603  109.1323   117.9965                9.480810
#> 5 2000-05-20     118.8093  119.1367   104.9218                1.148998
#> 6 2000-06-20     100.9111  109.0667   100.8412              -17.898216
#>   Nation.US_first_diff AZ.Phoenix_first_diff
#> 1                   NA                    NA
#> 2             7.286271             -2.098745
#> 3            -6.819681             -9.394174
#> 4            -1.896406             15.938006
#> 5            10.004372            -13.074745
#> 6           -10.069984             -4.080564

创建于 2024-04-06,使用 reprex v2.0.2

© www.soinside.com 2019 - 2024. All rights reserved.