《R的极客理想—工具篇》—— 2.1 R语言时间序列基础库zoo

2023-10-13 07:10

本文主要是介绍《R的极客理想—工具篇》—— 2.1 R语言时间序列基础库zoo,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本节书摘来自华章出版社《R的极客理想—工具篇》一 书中的第2章,第2.1节,作者:张丹,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.1 R语言时间序列基础库zoo

问题
R语言怎么处理时间序列数据?
screenshot

引言
时间序列分析是一种动态数据处理的统计方法,通过对时间序列数据的分析,我们可以感觉到世界正改变着什么!R语言作为统计分析的利器,对时间序列处理有着强大的支持。在R语言中,单独为时间序列数据定义了一种数据类型zoo,zoo是时间序列的基础,也是股票分析的基础。本节将介绍zoo库在R语言中的结构和使用。

2.1.1 zoo包介绍

zoo是一个R语言类库,zoo类库中定义了一个名为zoo的S3类型对象,用于描述规则的和不规则的有序的时间序列数据。zoo对象是一个独立的对象,包括索引、日期、时间,只依赖于基础的R环境。zooreg对象继承了zoo对象,只能用于规则的时间序列数据。R语言中很多其他的程序包,都是以zoo和zooreg作为时间序列数据的基础的!zoo包的API主要有6类,下面一一介绍。
(1)基础对象
zoo: 有序的时间序列对象。
zooreg: 规则的时间序列对象,继承zoo对象。与zoo相比,不同之处在于zooreg要求数据是连续的。
(2)类型转换
as.zoo: 把一个对象转型为zoo类型。
plot.zoo: 为plot函数提供zoo的接口。
xyplot.zoo: 为lattice的xyplot函数提供zoo的接口。
ggplot2.zoo: 为ggplot2包提供zoo的接口。
(3)数据操作
coredata: 查看或编辑zoo的数据部分。
index: 查看或编辑zoo的索引部分。
window.zoo: 按时间过滤数据。
merge.zoo: 合并多个zoo对象。
read.zoo: 从文件读写zoo序列。
aggregate.zoo: 计算zoo数据。
rollapply: 对zoo数据的滚动处理。
rollmean: 对zoo数据的滚动计算均值。
(4)NA值处理
na.fill: NA值的填充。
na.locf: 替换NA值。
na.aggregate: 计算统计值替换NA值。
na.approx: 计算插值替换NA值。
na.StructTS: 计算季节Kalman滤波替换NA值。
na.trim: 过滤有NA的记录。
(5)辅助工具
is.regular: 检查是否是规则的序列。
lag.zoo: 计算步长和差分。
MATCH: 取交集。
ORDER: 值排序,输出索引。
(6)显示控制
yearqtr: 以年季度显示时间。
yearmon: 以年月显示时间。
xblocks: 作图沿x轴分割图形。
make.par.list: 用于给plot.zoo 和 xyplot.zoo 数据格式转换。

2.1.2 zoo安装

本节使用的系统环境是:
Win7 64bit
R: 3.0.1 x86_64-w64-mingw32/x64 b4bit
注 zoo同时支持Windows 7环境和Linux环境。
zoo包的安装过程如下:

~ R  # 启动R程序
> install.packages("zoo")  # 安装zoo包
> library(zoo)  # 加载zoo包
2.1.3 zoo包的使用
  1. zoo对象
    zoo对象包括两部分,即数据部分和索引部分。首先是函数定义:

zoo(x = NULL, order.by = index(x), frequency = NULL)
其中x是数据部分,允许类型为向量、矩阵、因子;order.by是索引部分,字段唯一性要求,用于排序;frequency是每个时间单元显示的数量。
以下代码构建一个zoo对象,以时间为索引,产生的结果是图2-1。特别要注意的一点是,zoo对象可以接受不连续的时间序列数据。

> x.Date <- as.Date("2003-02-01") + c(1, 3, 7, 9, 14) – 1  # 定义一个不连续的日期的向量
> x.Date
[1] "2003-02-01" "2003-02-03" "2003-02-07" "2003-02-09" "2003-02-14"
> class(x.Date)
[1] "Date"> x <- zoo(rnorm(5), x.Date)  # 定义不连续的zoo对象
> x
2003-02-01 2003-02-03 2003-02-07 2003-02-09 2003-02-14
0.01964254 0.03122887 0.64721059 1.47397924 1.29109889
> class(x)
[1] "zoo"> plot(x)  # 画图显示

screenshot

接下来,我们以数字为索引创建多组时间序列。用如下代码,生成一个有12个元素的4行3列的矩阵,以数字0:10为索引,创建一个zoo类型对象y,并以图形输出y,产生的结果如图2-2所示。

> y <- zoo(matrix(1:12, 4, 3),0:10)
> y
0  1 5  9
1  2 6 10
2  3 7 11
3  4 8 12
4  1 5  9
5  2 6 10
6  3 7 11
7  4 8 12
8  1 5  9
9  2 6 10
10 3 7 11> plot(y)  # 矩阵的每一列为一组时间序列图

screenshot

  1. zooreg对象
    首先是函数定义:
zooreg(data, start = 1, end = numeric(), frequency = 1,
deltat = 1, ts.eps = getOption("ts.eps"), order.by = NULL)

下面是参数说明。
data: 数据部分,允许类型为向量、矩阵、因子。
start: 时间部分,开始时间。
end: 时间部分,结束时间。
frequency: 每个时间单元显示的数量。
deltat: 连续观测的采样周期,不能与frequency同时出现,例如,取每月的数据,为1/12。
ts.e

这篇关于《R的极客理想—工具篇》—— 2.1 R语言时间序列基础库zoo的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/201573

相关文章

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

高效录音转文字:2024年四大工具精选!

在快节奏的工作生活中,能够快速将录音转换成文字是一项非常实用的能力。特别是在需要记录会议纪要、讲座内容或者是采访素材的时候,一款优秀的在线录音转文字工具能派上大用场。以下推荐几个好用的录音转文字工具! 365在线转文字 直达链接:https://www.pdf365.cn/ 365在线转文字是一款提供在线录音转文字服务的工具,它以其高效、便捷的特点受到用户的青睐。用户无需下载安装任何软件,只

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

uva 10131 最长子序列

题意: 给大象的体重和智商,求体重按从大到小,智商从高到低的最长子序列,并输出路径。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#include <vect

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

AI基础 L9 Local Search II 局部搜索

Local Beam search 对于当前的所有k个状态,生成它们的所有可能后继状态。 检查生成的后继状态中是否有任何状态是解决方案。 如果所有后继状态都不是解决方案,则从所有后继状态中选择k个最佳状态。 当达到预设的迭代次数或满足某个终止条件时,算法停止。 — Choose k successors randomly, biased towards good ones — Close

POJ1631最长单调递增子序列

最长单调递增子序列 import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.io.PrintWriter;import java.math.BigInteger;import java.util.StringTokenizer;publ