为什么我在 R 中得到这个月度时间序列数据的频率为 1?

Why am I getting a frequency of 1 for this monthly time series data in R?

我正在使用 R 进行时间序列分析,我有以下 csv 文件已加载到 R:

CSV file:

我已经使用 zoo 包将我的数据框转换为 ts 对象:

library(zoo)
df1_ts <- as.ts(read.zoo(df1, FUN = as.yearmon))

运行:

class(df1_ts)
# [1] "mts"    "ts"     "matrix"`

但是当我 运行 head(df1_ts) 时,我得到以下结果:

head(df1_ts)
# Time Series:
# Start = 2014 
# End = 2018 
# Frequency = 1 
#      Jan  Feb  Mar  Apr  May  Jun  Jul  Aug  Sep  Oct  Nov  Dec
# 2014 4621 3569 4249 4593 3320 1970 2483 3474 4302 5670 5788 5570
# 2015 5747 4346 5176 5362 5360 3707 3883 5138 5568 6034 5989 5648
# 2016 5821 5164 5781 5346 5339 4743 5417 5514 5880 5899 6014 5641
# 2017 5980 5341 5890 5596 5753 5470 5589 5545 5749 5938 5864 5567
# 2018 5655 5392 5766 5268 5680 5337 5197 5714 5802 5935 5955 5637

为什么我得到 Frequency=1?我希望 Frequency 为 12,因为这些是月度数据?

我该如何解决这个问题?

我尝试了以下方法,但没有成功:

df1_ts <- as.ts(read.zoo(df1, FUN = as.yearmon), freq=12)

问题中显示的代码正在创建一个由 12 个序列(每个月列一个)组成的多元时间序列,其时间索引为年份;然而,我们需要的是一个单一的单变量月度系列。

使用最后在注释中重复显示的 df1,首先使用转置将 data.frame df1 转换为矩阵,然后逐列将转置后的矩阵分解为单个矩阵向量使用 c。现在我们可以直接定义ts系列:

tt <- ts(c(t(df1[-1])), start = df1$Year[1], freq = 12)

给予:

frequency(tt)
## [1] 12
tt
##      Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 2014   1   2   3   4   5   6   7   8   9  10  11  12
## 2015  13  14  15  16  17  18  19  20  21  22  23  24
## 2016  25  26  27  28  29  30  31  32  33  34  35  36
## 2017  37  38  39  40  41  42  43  44  45  46  47  48
## 2018  49  50  51  52  53  54  55  56  57  58  59  60

备注

不要使用图像来显示您输入的数据,因为这意味着任何想要回答的人都需要重新输入。将其作为 R 代码可重现地提供。这次我已经为你做了这件事,更改数据以避免输入所有这些数字。

df1 <- as.data.frame(cbind(2014:2018, matrix(1:60, ncol = 12, byrow = TRUE)))
names(df1) <- c("Year", month.abb)