r语言数据分析常用函数(R语言34)

Tibble的特点和存在意义

在许多应用中,数据可能分散在许多文件或数据库中,存储的形式也不利于分析;通过数据规整聚,可以实现数据的聚合、合并、重塑及分组

在R语言中进行数据分析处理的二维表格的经典数据结构

data.frame:最基本,大多函数的设计基于此种结构;读写速度一般

data.table:在data.frame上的改进,读写速度最快;加入了索引操作,结合索引数据处理更方便

tibble:主要在dplyr和tibble包中有效,主要关注于列list,支持整洁格式;数据进行懒加载

涉及到的相关包:

  • dplyr 数据处理:dplyr包定义了tbl类型,作为实际数据源的包装类型。它封装数据源病提供了一组统一的方法操作数据,该包当前支持的数据源包括:标准数据框(以tibbles的形式)、几个数据库管理系统以及其他数据源。
  • tidyr 数据清理
  • purrr 函数化编程
  • tibble 数据类型定义:tibble包括定义tibble为特定的数据框,它改变了标准数据框的一些行为;两者主要差异主要包括三点:
  1. tibble 不会像数据框一样默认改变字符串列为因子类型;
  2. tibble 对列的命名要求更宽松;
  3. tibble 的打印方法对大数据集特别方便。

tibble对data.frame做了重新的设定:

  • 不关心输入类型,可存储任意类型,包括list类型
  • 没有行名设置 row.names
  • 支持任意的列名
  • 会自动添加列名
  • 类型只能回收长度为1的输入
  • 会懒加载参数,并按顺序运行
  • 是tbl_df类型

Tidyverse之dplyr

Tidyverse是R语言的一个程序包;Tidy的意思是干净、整洁,Verse的意思是诗歌、歌曲,Tidyverse的意思就是干净整洁的语句。而dplyr包可以看作是plyr包的一个扩展,主要是针对数据框的数据操作;在使用dplyr包中的函数对数据框进行操作之间,最好将其转换为tbl对象。

dplyr用于数据规整,堪比瑞士军刀;dplyr有许多方便的函数,非常建议将它用于数据分析:

  • select() 提取列并返回一个tibble。
  • arrange() 更改行的顺序。
  • filter() 根据其值选择行。
  • mutate() 添加作为现有变量函数的新变量。
  • rename() 轻松更改列的名称
  • summarise() 将多个值减少到单个摘要。
  • pull() 提取单个列作为向量。
  • _join()的两个数据帧合并到一起的函数组,包括(inner_join(),left_join(),right_join(),和full_join())。

dplyr提供了很多函数可以很容易处理tbl数据对象;如何查询数据?可以利用select() 和 filter() 函数实现,前者过滤列,后者过滤行。


Tidyverse 之Tidyr

Tidyr的目的是拥有组织良好或整洁的数据,Tidyverse将tidydata其定义为:

  1. 每个变量作为一列
  2. 每个观测作为一行
  3. 每个值占一个单元格

Tidyr有两个主要函数,gather()和spread()。这些函数允许在长数据格式和宽数据格式之间进行转换。

gather()函数将宽数据格式更改为长数据格式。

spread()函数与gather()函数相反。key列的类别将成为单独的新列,value列中的值将根据关联的key列进行拆分。

r语言数据分析常用函数(R语言34)(1)

「链接」

reshape2也可以实现数据的“长、宽”转换

reshape2包是由Hadley Wickham开发的一个R包,从其命名不难看出,reshape2包可以对数据重塑,就像炼铁一样,先融化数据,再重新整合数据,它的主要功能函数为cast()和 melt(),实现了长数据格式与宽数据格式之间的相互转换。

melt.list()函数能够递归地拆分列表元素。

ccc<-c(1:10,c(NA,2,3,4))

ccclist<-as.list(ccc)

melt(ccclist)

cast()函数具有两种形式:

  • dcast() :输出为数据框
  • acast() :输出为向量、矩阵、数组
aggregate()的数据整合功能

#产生一个df #省略四个变量的输入 a<-data.frame(name,gender,age,height) b <- aggregate(a[,3:4], by=list(gender=gender), FUN=mean) a;b

r语言数据分析常用函数(R语言34)(2)


ACF(自相关系数)和pacf(偏自相关系数)

acf的全称是AutoCorrelation Function,即自相关函数。但这个函数不仅可以计算自相关,也可以计算自协方差。

1、画图,acf(ts)、pacf(ts)

举例:

r语言数据分析常用函数(R语言34)(3)

2、数值,acf(ts)$acf、pacf(ts)$acf

#举例 > acf(1:13,type = c("correlation"))$acf , , 1 [,1] [1,] 1.00000000 [2,] 0.76923077 [3,] 0.54395604 [4,] 0.32967033 [5,] 0.13186813 [6,] -0.04395604 [7,] -0.19230769 [8,] -0.30769231 [9,] -0.38461538 [10,] -0.41758242 [11,] -0.40109890 [12,] -0.32967033 > summary(acf(1:13,type = c("covariance"))) Length Class Mode acf 12 -none- numeric type 1 -none- character n.used 1 -none- numeric lag 12 -none- numeric series 1 -none- character snames 0 -none- NULL > > summary(pacf(1:13,type = c("correlation"))) Length Class Mode acf 11 -none- numeric type 1 -none- character n.used 1 -none- numeric lag 11 -none- numeric series 1 -none- character snames 0 -none- NULL

r语言数据分析常用函数(R语言34)(4)

3、自相关含义解释:

自己 与 自己的过去 是否具有线性相关?

范围是-1~1;绝对值越靠近1越相关,绝对值越靠近0越不相关。

当纵线落入虚线以内,则认为该数值与0无显著差异,即可认为不相关。

4、深层次用法:

在时间序列分析过程中,一种分析手段是:根据 自相关系数图 和 偏自相关系数图 来猜测时间序列可能属于哪一种时间序列模型。

故需要分析人员大量浏览各种可能的已知时间序列模型,并熟悉他们的自相关系数图(acf函数)、偏自相关图(pacf函数);并结合扩展的自相关函数(eacf函数,Tsay,Tia0,1984 W.S.Chan.1999 )实现模型定阶,注意——eacf的使用,必须先library(TSA)。

AR(p)

MA(q)

ARMA(p,q)

ACF

拖尾

q阶截尾

拖尾

PACF

p阶截尾

拖尾

拖尾

拖尾的话,ar模型或者arma模型;

截尾的话,ma模型;根据超出两倍标准差的阶数,确定移动平均模型的阶数。

或者,可以用auto.arima函数,或者TSA包的eacf函数,确定阶数。

5、关于eacf的补充

计算存储在 z 中的时间序列的样本扩展 acf (ESACF)。ESACF 的矩阵,其 AR 阶最高为 ar.max,MA 阶最高为 ma.max,存储在矩阵 EACFM 中。

eacf(z, ar.max = 7, ma.max = 13)

z

时间序列数据

ar.max

最大 AR 订单;默认=7

ma.max

最大 MA 订单;默认=13

#简单 > data(arma11.s) > arma11.s Time Series: Start = 1 End = 100 Frequency = 1 [1] -0.764596332 1.297195966 0.668426838 -1.607385082 -0.626004808 [6] 1.484327417 1.885497663 -0.009316681 -0.339675938 -0.972070263 [11] -1.867989789 0.894912243 2.638806318 2.946696256 2.877056296 [16] 1.162570774 0.930328598 1.722330050 1.985158627 2.427853650 [21] 1.465286143 3.264971869 3.673337069 4.362467628 3.849652801 [26] 2.203451041 1.766208327 2.045552176 0.510890846 -0.837718447 [31] 1.127791121 0.850939383 -0.587615131 0.040573137 -0.274500005 ...... > eacf(arma11.s) AR/MA 0 1 2 3 4 5 6 7 8 9 10 11 12 13 0 x x x x o o o o o o o o o o 1 x o o o o o o o o o o o o o 2 x o o o o o o o o o o o o o 3 x x o o o o o o o o o o o o 4 x o x o o o o o o o o o o o 5 x o o o o o o o o o o o o o 6 x o o o x o o o o o o o o o 7 x o o o x o o o o o o o o o

左上角为0的模型,为最适合的模型;

EACF在适度大的样本容量,似乎有优良的样本性质;

EACF统计误差,左上0值附近的均可尝试对比。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。