前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >主成分分析和时序分析神器

主成分分析和时序分析神器

作者头像
作图丫
发布2022-03-29 14:00:07
6630
发布2022-03-29 14:00:07
举报
文章被收录于专栏:作图丫

导语

GUIDE ╲

ggfortify作为ggplot2的补充包,不仅可以应用于时序分析领域,还能应用于各种统计分析领域。

背景介绍

ggfortify是一个应用起来非常简单的R包,可以仅用一行代码绘制各种统计图,更为简洁易懂,能够满足我们各种绘图的需求。

接下来小编将给大家介绍如何通过ggfortify和ggplot2进行主成分分析和时序分析等多种图片的可视化!

R包安装

代码语言:javascript
复制
#bioconductor安装
BiocManager::install("ggfortify")
library(ggfortify)
#github安装
library(devtools)
install_github('sinhrks/ggfortify')
library(ggfortify) 

函数介绍:

代码语言:javascript
复制
autoplot(object, #目标对象
         data = NULL, #数据输入
         colour = 'Species' ,#通过分类变量设置颜色
         label = TRUE ,#标签
         label.size = 3, #标签的大小
         label.colour,   #标签的颜色
         label.alpha,    #透明度
         label.angle ,   #旋转的角度
         loadings = TRUE, #画特征向量
         loadings.colour = 'blue',  #特征向量颜色
         loadings.label = TRUE ,    #特征向量的标签
         loadings.label.size = 3 ,  #特征向量标签的大小
         frame = TRUE,   #把每个类圈出来
         frame.colour = 'Species' #对分类变量进行颜色标注
         frame.type = 't' ,  #选择圈的类型
         ...)

R包的使用

01

时序分析可视化

使用AirPassengers数据集绘制基本时序分析图片

代码语言:javascript
复制
#AirPassengers数据集
autoplot(AirPassengers)

使用 ts.colour和ts.linetype改变线的颜色和形状

代码语言:javascript
复制
autoplot(AirPassengers, ts.colour = 'red', 
ts.linetype = 'dashed',xlab = "time",ylab = "number",
main= "time series")

通过changepoint包识别时间序列中均值和方差的变化,strucchange包检测数据跳跃。

代码语言:javascript
复制
BiocManager::install("changepoint")
library(changepoint)
autoplot(cpt.meanvar(AirPassengers))
BiocManager::install("strucchange")
library(strucchange)
autoplot(breakpoints(Nile ~ 1))

多变量的时序分析:

代码语言:javascript
复制
BiocManager::install("vars")
library(vars)
data(Canada)## Canada数据集,包含e、prod、rw和U四个变量
autoplot(Canada)#fig.1
#也可以指定相应变量,只画后3列
autoplot(Canada[,-1])#fig.2
#使用 facets = FALSE 可以把所有变量画在一条轴上。
autoplot(Canada, facets = FALSE)#fig.3

fig.1

fig.2

fig.3

02

主成分分析

首先绘制最基本的图形(使用iris数据集):

代码语言:javascript
复制
df <- iris[, -5]
# 主成分分析
pca <- prcomp(df, scale. = TRUE)
# 绘图
autoplot(pca, loadings = TRUE, loadings.label = TRUE,
         data = iris, colour = 'Species')

K均值:

Kmeans对象不储存原始数据,因此需要原始数据

代码语言:javascript
复制
autoplot(kmeans(USArrests, 3), data = USArrests,
         label = TRUE, label.size = 3, frame = TRUE)

Cluster plot:

ggfortify支持cluster :: clara,cluster :: fanny和cluster :: pam,这些函数返回包含原始数据的对象,因此无需原始数据。

代码语言:javascript
复制
library(cluster)
autoplot(pam(iris[-5], 3), frame = TRUE, frame.type = 'norm')

03

绘制其他统计图形

热图:

代码语言:javascript
复制
# Heatmap
df <- mtcars[, c("mpg", "disp", "hp", "drat", "wt")]
df <- as.matrix(df)
autoplot(scale(df))

绘制线性模型:

代码语言:javascript
复制
#构建线性模型
m <- lm(Petal.Width ~ Petal.Length, data = iris)
# 绘图
autoplot(m, which = 1:6, ncol = 2, label.size = 3)
代码语言:javascript
复制
# 按照类别改变颜色
autoplot(m, which = 1:6, label.size = 3, data = iris,
         colour = 'Species')

散点图

代码语言:javascript
复制
# 数据预处理
df2 <- df[, c("wt", "mpg")]
colnames(df2) <- c("V1", "V2")
#绘图
autoplot(df2, geom = 'point') +
  labs(x = "mpg", y = "wt")

分面设计:

代码语言:javascript
复制
library(purrr)
res <- purrr::map(c(3, 4, 5), ~ kmeans(iris[-5], .))
autoplot(res, data = iris[-5], ncol = 3)

小编总结

ggfortify作为一个操作起来十分简便的R包,相信大家已经基本了解了它的功能!虽然ggfortify已经在CRAN上,但是由于它很多的功能都还在快速增加,还是推荐大家从Github上下载和安装。大家在做主成分分析等统计分析过程中都可以用到哦!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作图丫 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档