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,一会再试试