我开始研究我的时间序列数据分析,我被告知在R中使用ts()数据函数,然而,我的时间序列数据并没有遵循一个直接的趋势。
例如,在线教程解释了如果您有月度、季度或年度趋势,如何创建时间序列。但是,我的记录时间是0、5、11、15、20、30和50。
我想知道是否有人会对如何解决这个问题有任何建议?非常感谢:)
发布于 2020-06-09 17:51:22
关键问题是,ts系列有规则的间隔,而您的系列没有,但是有许多方法可以获得一个有规则间隔的ts类系列:
as.ts将原始表示形式保持为不规则间隔的时间序列。,
表示。
如果序列有一个自然的周期性,那么您可能需要修改这个序列是如何表示为ts的,以反映它的频率,但是由于这个问题没有给出任何有关这方面的信息,我们将在这里忽略它。
另外,根据确切的应用程序,可能有一些包具有特定于应用程序的方法,可以使用这些方法。请参阅https://cran.r-project.org/web/views/
例如,
# create some test data
set.seed(123)
m <- matrix(rnorm(35), 7)
tt <- c(0, 5, 11, 15, 20, 30, 50)
# 1. zoo series
library(zoo)
z <- zoo(m, tt)
ts1 <- as.ts(z) # make regularly spaced ts series but with many NAs
# 2. ignore times
ts2 <- ts(m)
# 3. discretize to regularly spaced grid - z is from #1
zd <- aggregate(z, 20 * ceiling(tt/20), tail, 1)
ts3 <- as.ts(zd)
# 4. spline
Ls <- apply(m, 2, spline, x = tt) # list of splines, one per column
zs <- zoo(sapply(Ls, "[[", "y"), Ls[[1]]$x) # as single zoo object
ts4 <- unname(as.ts(zs))发布于 2020-06-09 10:56:24
下面的代码使用一个内置在R中的名为AirPassengers的数据文件,而它是一个ts(),当对它进行变异以使其与GGPlot2很好地绘制时。我相信这个数据集是每月12年(144行),但我们得到的是一个时间序列。
library(ggplot2)
library(reshape2)
dff <- melt(AirPassengers)
ggplot(data = dff, aes(x = 1:length(dff[[1]]), y = dff$value)) + geom_line() + labs(x = "Time", y = "Value")请注意
class(AirPassengers)
dff <- melt(AirPassengers)
class(dff)其中ts()变成一个data.frame。

https://stackoverflow.com/questions/62280645
复制相似问题