r - 如何将`lapply`函数应用于一组时间序列数据集
问题描述
我有时间序列数据。数据包含几年内的四个单变量时间序列列。我想ARIMA
为前 4 年的每一年的每个单变量时间序列数据拟合模型。
我试过这个:
library(ggplot2)
library(forecast)
library(tseries)
library(zoo)
library(dplyr)
library(data.table)
data("EuStockMarkets")
dat <- EuStockMarkets
res <- lapply(split(as.zoo(EuStockMarkets), as.integer(time(EuStockMarkets))), as.ts)
datNew <- lapply(5:8, function(i) ts(res[[i]]))
dat.log <- lapply(1:4, function(i) log(datNew[[i]]))
dat.diff <- lapply(1:4, function(i)diff(dat.log[[i]]))
Logreturns <- dat.diff
以下代码无法正常工作,因为它只给了我 4 个值。但是,我接受它给我 16 个值(4 年,每年 4 个单变量时间序列)
Arima.model <- lapply(1:4, function(i)auto.arima(Logreturns[[i]][,i]))
解决方案
我认为您需要的是 double lapply
,一个迭代每个列表,另一个迭代列表的每一列。
result <- unlist(lapply(seq_along(Logreturns), function(i)
lapply(seq_len(ncol(Logreturns[[i]])), function(j)
auto.arima(Logreturns[[i]][,j]))), recursive = FALSE)
推荐阅读
- testing - 生成 HTML 报告期间的 JMeter 问题
- javascript - 来自客户端浏览器的 Ping(延迟)请求,而不是来自虚拟主机
- react-final-form - 在加载表单上的字段上显示错误
- python - 添加新的搜索过滤器
- php - 即使数据正确,Ajax Post 也无法正常工作
- ruby - 对于每个用户名,如何使用 Linux useradd 命令关闭读取 CSV 文件来创建用户帐户
- java - java中多个json到xml的高效处理
- c# - 可疑演员表 解决方案中没有继承自两者的类型
- javascript - 创建一个 JavaScript npm 包 - 是否需要提供一个转译的 dist?
- wordpress - 有没有一种快速的方法可以将图像添加到 WooCommerce 商店中的所有产品?