在R中使用ts()函数
我正在开始我的时间序列数据分析工作,我被告知在R中使用ts数据函数。但是,我的时间序列数据没有遵循直接的趋势 例如,在线教程解释了如果您有月度、季度或年度趋势,如何创建时间序列。 但是,我记录的时间是0、5、11、15、20、30和50 我想知道是否有人对如何解决这个问题有什么建议?在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中的数据帧,名为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组,也可以用于我的其他软件包。