首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在R中使用ts()函数

在R中使用ts()函数
EN

Stack Overflow用户
提问于 2020-06-09 10:39:05
回答 2查看 922关注 0票数 1

我开始研究我的时间序列数据分析,我被告知在R中使用ts()数据函数,然而,我的时间序列数据并没有遵循一个直接的趋势。

例如,在线教程解释了如果您有月度、季度或年度趋势,如何创建时间序列。但是,我的记录时间是0、5、11、15、20、30和50。

我想知道是否有人会对如何解决这个问题有任何建议?非常感谢:)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-09 17:51:22

关键问题是,ts系列有规则的间隔,而您的系列没有,但是有许多方法可以获得一个有规则间隔的ts类系列:

  1. 使用动物园包(可以直接表示这种序列)或在转换到动物园后使用as.ts将原始表示形式保持为不规则间隔的时间序列。
  2. 忽略时间,只使用1、2、3的时间。而不是。在这种情况下,序列是有规律的间隔,所以我们可以使用ts。

  1. 将数据离散为有规律的间隔,使用区间中的最后一个值或平均值。在这种情况下,序列是有规律的间隔,所以我们可以使用ts。
  2. 在数据上拟合一个样条,并从数据中取出有规律的间隔点,给出一个有规则间隔的序列,可以用ts.

表示。

如果序列有一个自然的周期性,那么您可能需要修改这个序列是如何表示为ts的,以反映它的频率,但是由于这个问题没有给出任何有关这方面的信息,我们将在这里忽略它。

另外,根据确切的应用程序,可能有一些包具有特定于应用程序的方法,可以使用这些方法。请参阅https://cran.r-project.org/web/views/

例如,

代码语言:javascript
复制
# 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))
票数 2
EN

Stack Overflow用户

发布于 2020-06-09 10:56:24

下面的代码使用一个内置在R中的名为AirPassengers的数据文件,而它是一个ts(),当对它进行变异以使其与GGPlot2很好地绘制时。我相信这个数据集是每月12年(144行),但我们得到的是一个时间序列。

代码语言:javascript
复制
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")

请注意

代码语言:javascript
复制
class(AirPassengers)
dff <- melt(AirPassengers)
class(dff)

其中ts()变成一个data.frame。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62280645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档