2021-06-26 相关性及PCA分析

2021-06-26  本文已影响0人  学习生信的小兔子



准备数据

rm(list=ls())
options(stringsAsFactors = FALSE)
setwd('D:\\GEO数据挖掘与meta分析\\练习\\相关性及PCA分析(代码\)\\相关性及PCA分析(代码)')
expr <- read.csv(file='exprs-19samples.csv',row.names = 1, 
                 header = TRUE, sep=",", stringsAsFactors = FALSE)

pearson相关系数

p <-cor(expr,method="pearson")#默认
p <-cor(expr)
head(p)
p_1<-round(p, 2)#取前小数点两位
head(p_1)
#画图
heatmap(cor(expr),scale="none")
h<-heatmap(cor(expr),Rowv = NA, Colv = NA, scale="none")

异常值的处理

# 通过correlation,如果发现某个sample与同一組其他sample之间距离很远,则需要删除。
# 假设需要删除的是第三个sample
expr <- expr[,c(-3)] #删除第3列

# Correlation between the samples again
heatmap(p,scale="none")
3.06.png

斯皮尔曼相关系数

s <-cor(expr,method="spearman")
heatmap(s, scale = "none")

PCA分析

expr <- read.csv(file='exprs-19samples.csv',row.names = 1, 
                    header = TRUE, sep=",", stringsAsFactors = FALSE)

expr_df <-as.data.frame(t(expr))#转置

datTraits_df <- read.csv(file='datTraits.csv',row.names = 1,
                    header = TRUE, sep=",",stringsAsFactors = FALSE)#分组信息
#R语言常用PCA分析函数有prcomp与princomp, 二者主要是计算方法的差别,建议采用prcomp(SVD方法)
pca.results <- prcomp(expr_df, center = TRUE, scale. = FALSE)
#定义足够多的颜色,用于展示分组
mycol <- c("#223D6C","#D20A13","#088247","#FFD121","#11AA4D","#58CDD9","#7A142C","#5D90BA","#431A3D","#91612D","#6E568C","#E0367A","#D8D155","#64495D","#7CC767")

#画图
install.packages("ggimage")
install.packages("devtools")
install.packages("qrcode")
library(devtools) #未发布至CRAN 需要devtools安装
devtools::install_github('fawda123/ggord')
devtools::install_github("GuangchuangYu/yyplot")
#如果下载yyplot不顺利,可以直接调用文件夹里的geom_ord_ellipse.R
source('./geom_ord_ellipse.R') 
#library(yyplot)

library(devtools)
install_github('fawda123/ggord')
library(ggord)


library(ggimage)
library(ggplot2)
library(plyr)
library(ggord)

#用ggord画基本PCA图
ggord(pca.results, grp_in = datTraits_df$treat_type, repel=TRUE,
      ellipse = FALSE, #不显示置信区间背景色
      size = 2, #样本的点大小
      alpha=0.5, #设置点为半透明,出现叠加的效果
      #如果用自定义的颜色,就运行下面这行
      cols = mycol[1:length(unique(datTraits_df$treat_type))],
      arrow = NULL,txt = NULL) + #不画箭头和箭头上的文字
  theme(panel.grid =element_blank()) + #去除网格线
  
  #用yyplot添加置信区间圆圈
  geom_ord_ellipse(ellipse_pro = .95, #设置置信区间
                   size=1.5, #线的粗细
                   lty=1 ) #实线

#保存到pdf文件
ggsave("PCA.pdf", width = 6, height = 6)

dev.off()
网络不好 安装不上ggord,一会再试试
上一篇下一篇

猜你喜欢

热点阅读