在R中使用ts()函数

在R中使用ts()函数,r,time-series,dataset,trend,R,Time Series,Dataset,Trend,我正在开始我的时间序列数据分析工作,我被告知在R中使用ts数据函数。但是,我的时间序列数据没有遵循直接的趋势 例如,在线教程解释了如果您有月度、季度或年度趋势,如何创建时间序列。 但是,我记录的时间是0、5、11、15、20、30和50 我想知道是否有人对如何解决这个问题有什么建议? 非常感谢:下面的代码使用了一个内置在R中的数据帧,名为AirPassenger,而这是一个ts,当对它进行变异时,可以很好地使用GGPlot2进行绘图。我相信这个数据集是12年144行的每月数据,但我们得到的是一个

我正在开始我的时间序列数据分析工作,我被告知在R中使用ts数据函数。但是,我的时间序列数据没有遵循直接的趋势

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

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

下面的代码使用了一个内置在R中的数据帧,名为AirPassenger,而这是一个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


下面的代码使用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

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

使用zoo软件包(可直接表示此类序列)将原始表示形式保持为不规则间隔的时间序列,或在转换为zoo后使用其上的as.ts将其转换为具有可能多个NAs的规则间隔序列

忽略时间,只使用1,2,3。。。相反在这种情况下,序列的间隔是规则的,因此我们可以使用ts

使用间隔中的最后一个值或平均值将数据离散成规则间隔。在这种情况下,序列的间隔是规则的,因此我们可以使用ts

将样条曲线拟合到数据中,并从数据中拾取规则间隔的点,从而生成可由ts表示的规则间隔序列

如果序列具有自然周期性,那么您可能需要修改序列表示为ts的方式,以反映其频率,但由于问题没有给出这方面的信息,我们将在此处忽略这一点

另外,根据具体的应用程序,可能会有一些包具有可以使用的特定于应用程序的方法。看

比如说,

# 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))
关键问题是ts系列的间隔是规则的,而您的不是,但是有很多方法可以获得规则间隔的ts类系列:

使用zoo软件包(可直接表示此类序列)将原始表示形式保持为不规则间隔的时间序列,或在转换为zoo后使用其上的as.ts将其转换为具有可能多个NAs的规则间隔序列

忽略时间,只使用1,2,3。。。相反在这种情况下,序列的间隔是规则的,因此我们可以使用ts

使用间隔中的最后一个值或平均值将数据离散成规则间隔。在这种情况下,序列的间隔是规则的,因此我们可以使用ts

将样条曲线拟合到数据中,并从数据中拾取规则间隔的点,从而生成可由ts表示的规则间隔序列

如果序列具有自然周期性,那么您可能需要修改序列表示为ts的方式,以反映其频率,但由于问题没有给出这方面的信息,我们将在此处忽略这一点

另外,根据具体的应用程序,可能会有一些包具有可以使用的特定于应用程序的方法。看

比如说,

# 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))

这是一个不规则的时间序列。它有一个包裹。这是一个不规则的时间序列。它有一个包裹。谢谢,如果我的数据集是基因相关的,你知道我是使用原始数据还是转换数据吗?也许x轴上的时间、y轴上的值以及整个绘图都是针对一个基因的,或者你可以在同一个绘图上用不同的线颜色绘制多个基因谢谢,如果我的数据集是基因相关的,你知道我使用的是原始数据还是转换后的数据吗?也许x轴上的时间、y轴上的值以及整个绘图都是针对一个基因的,或者你可以在同一个绘图上用不同的线颜色绘制多个基因。我如何表示其中有3个重复,似乎每当我把频率设为3时,它就会把值分开?如果x是一个有规则间隔的序列,使用答案中的一个备选方案导出,那么假设你希望时间从0开始,频率为3,那么使用:tsx,start=0,频率=3 rollapply的特定版本旨在降低功能,以换取一些附加速度。在github在R社区流行之前,zoo于2002年首次发布。为了提供功能建议,说明文件包含维护人员的联系信息,而不是zoo软件包的我。。我在我的SO配置文件和我维护的sqldf、gsu的R包的描述文件中有联系信息
bfn,nls2。sqldf还有一个google组,也可以用于我的其他软件包。我如何表示我在其中有3个重复,似乎每当我把频率设为3时,它就会把值分开?如果x是一个有规则间隔的序列,使用答案中的一个备选方案导出,那么假设你希望时间从0开始,频率为3,那么使用:tsx,start=0,频率=3 rollapply的特定版本旨在降低功能,以换取一些附加速度。在github在R社区流行之前,zoo于2002年首次发布。为了提供功能建议,说明文件包含维护人员的联系信息,而不是zoo软件包的我。。我在我的SO配置文件和我维护的sqldf、gsubfn、nls2的R包的描述文件中有联系信息。sqldf还有一个google组,也可以用于我的其他软件包。