首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对每一行应用时间序列模型

对每一行应用时间序列模型
EN

Stack Overflow用户
提问于 2016-12-23 05:34:03
回答 1查看 572关注 0票数 1

我有一个dataframe (df),它是具有以下结构的宽数据集,

代码语言:javascript
复制
ID 2015/01/01 2015/02/01 2015/03/01 2015/04/01
A1 42         42        24          32 
A2 22         22        24          32 
A3 12         15        19          22 
A4 8          12        18          24 
  • 我希望为每一行建立时间序列模型,因此将有N个时间序列模型,其中N=数据中的行数。

I厌倦了以下几点:

代码语言:javascript
复制
ts_1 <-  ts(df[1:1,], start = c(2015, 05), frequency = 12)

ts_1_stl <- stl(ts_1, s.window = "periodic")

,但我得到的错误是:

代码语言:javascript
复制
Error in stl(ts_1, s.window = "periodic") : only univariate series are allowed
  • 我做错了什么,怎么才能适用于每一行?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-23 05:41:37

如果我们在每一行上应用(第一列是'ID',这是一个字符类列,这是不需要的),我们可以将applyMARGIN = 1结合使用。

代码语言:javascript
复制
apply(df[-1], 1, FUN = function(x) ts(x, start = c(2015, 05), frequency = 12))

对于整个数据集,我们需要unlist

代码语言:javascript
复制
ts(unlist(df[-1]), start = c(2015, 05), frequency = 12)

我们假设“df”有更多的列,以便有足够的观测值,即至少有两个周期才能使“周期”工作。

代码语言:javascript
复制
set.seed(24)
df <- cbind(Col1 = LETTERS[1:4], as.data.frame(matrix(rnorm(31*4), ncol=31)))
res <- apply(df[-1], 1, FUN = function(x) stl(ts(x, start = c(2015, 05),
           frequency = 12), s.window = "periodic"))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41295701

复制
相关文章

相似问题

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