怎么样把繁杂的数据变简单?用R语言做主成份分析呗

小微 科技怎么样把繁杂的数据变简单?用R语言做主成份分析呗已关闭评论76字数 2440阅读模式
摘要当我们做完基因、RNA等芯片之后通常会拿到一组特别恐怖的数据,几百个基因几×几十个样本,这时候候候我想看这些基因的表达差异是否影响到样本的分布。可是有这么多基因,它们各自肯定都有影...

当咱们做完基因、RNA等芯片以后通常会拿到一组尤其恐怖的数据,几百个基因几×几十个样本,这时候候我想看这些基因的表达差异是不是影响到样本的散布。可是有这么多基因,它们各自确定都有影响,一个个看是否很不现实。

比如这个模样,甲基化芯片检测了416个位点的甲基化程度,看不一样本间是不是有差异。一共132个样本,分两组。文章源自微观生活(93wg.com)微观生活-https://93wg.com/23276.html

这固然只展现了一很小的部份。文章源自微观生活(93wg.com)微观生活-https://93wg.com/23276.html

每一个样本由416个位点来描写,也就是416个变量,或叫416个维度。我们生活的空间是3维的啊,如果要精确描写这132个样本的位置,就是建一个416维的空间把它们定位,这是很不现实的。所以要对它进行降维处理以后再察看。文章源自微观生活(93wg.com)微观生活-https://93wg.com/23276.html

主成份分析(PCA)就是经常使用的一种降维办法,提掏出这么多变量中对样本影响最大的成份。但它不是挑拣出某几个变量,而是依据它们的方差贡献,经由线性变换,得到新的变量,即“主成份”。文章源自微观生活(93wg.com)微观生活-https://93wg.com/23276.html

但再细心察看,你会发现这表格的坑至关多,从代测公司拿回来就这样。我拉展开示变量名称的那几列,都只是在用不同的参数描写一个样本!文章源自微观生活(93wg.com)微观生活-https://93wg.com/23276.html

小数点前面是样本编号;小数点后面的Signal A是非甲基化等位基因密度(U),Signal B是甲基化等位基因密度(M),Beta值即甲基化水平值,Beta = M / (M+U+100),而Intensity就是Signal A + Signal B。文章源自微观生活(93wg.com)微观生活-https://93wg.com/23276.html

况且,它这样样本为行甲基化位点为列,做出来的PCA其实反映的是样本对不同位点甲基化水平的影响,这跟咱们的钻研目的是相反的,所以要把它倒过来。文章源自微观生活(93wg.com)微观生活-https://93wg.com/23276.html

你再细心找找说不定还出缺失值,也有可能等你做了一半才发现,这都是惨然的现实。文章源自微观生活(93wg.com)微观生活-https://93wg.com/23276.html

你已经能想到处理它要有多头痛了。不但要提取每一个样本的beta值那一列,还要把它的行以及列翻转过来^0.0^我知道大家毕竟医学出生,对R语言代码有点怵,但若表格简单一点、范围小一点,用SPSS也能够简单完成,但面对如斯严酷的事实,我们还是硬着头皮敲代码吧。其实做下来也不是那么难。文章源自微观生活(93wg.com)微观生活-https://93wg.com/23276.html

数据预处理文章源自微观生活(93wg.com)微观生活-https://93wg.com/23276.html

先检查一下缺失值,还都是beta值(唉不能不倒回来处理)。在Excel中打开表格,全选,Ctrl+G,在弹出的对话框中点定位前提,查找空值:

肯定以后会自动选中缺失值的单元格,咱们随意填个色彩标注出来。处理缺失值的一般办法,可以删除了那个样本,或者以均值或中值填充。但既然在本案例中咱们知道它的含意,而且有前提算出来,那我还是计算一下吧。

找到一个填了色彩的空值,在其中按Excel格式输入公式,使其相符beta值的计算办法,比如D82的空值就应当输入“=F82/(E82+F82+100)”,然后选中该单元格并Ctrl+C,维持它被选中有虚线缭绕的状况。

然后再做一次找空值的操作,这回可以全选表格来查找,也能够只选中有数据的表格(由于后面有几列是跟PCA无关的内容)。找到空值以后Ctrl+V,就把刚才的公式填上了。这样就能够导入RStudio。

下面,书写的格式,就按R中的习惯吧,“

rm(list = ls)

setwd(\"D:/PCA\")

library(pca3d)

library(rgl)

library(readxl)

Raw <- read_excel(\"Raw.xlsx\", sheet = \"Tissues\")

这样就能够在Environment选项卡中看到这个超大的表格。之后操作进程中可以随时察看这个选项卡中添加了哪些元素。

num <- seq(from = 4, to = 663, by = 5)

Data <- Raw[,num]

DataRev <- t(Data)

Group <- c(rep(\'Ca\',66), rep(\'NA\',66))

DataRevG <- data.frame(DataRev, Group = Group)

到这里,筹备工作才做完。

PCA运算及绘图

DataRevG_sub <- subset(DataRevG, select = -Group)

DataRevG.pca <- prcomp(DataRevG_sub, scale. = TRUE)

Pca.sum <- su妹妹ary(DataRevG.pca)

Importance <- data.frame(Pca.sum$importance)

PC1是第一个主成份(Principal Component),它的贡献率是30.51%,PC2贡献了8.95%,二者积累39.46%,依此累推。这就抉择咱们选取几个主成份来察看样本。一般来讲,选取积累贡献率达到80%-90%的前几个,有时候2个就知足了,可以做个二维图,不行就三维。

但本例中有点意外,前3个PC贡献率并无那么高,说明影响较大的主成份比较多。这时候可以画个碎石图来察看主成份的散布规律。

screeplot(DataRevG.pca, type = \'line\', lwd = 2)

这样看来,第三个主成份以后,方差贡献趋于平缓,那咱们还是选取前三个来作图分析。

open3d

par3d(windowRect = c(100, 100, 612, 612))

pca3d(DataRevG.pca, components = 1:3, group = DataRevG$Group, col = c(\'Ca\' = \'light blue\', \'NA\' = \'yellow\'), show.axes = T, show.axe.titles = F, shape = \'sphere\', show.plane = F)

axes3d(edges = \'bbox\', labels = T, box = F)

legend3d(\"topright\", legend = c(\'Ca\',\'NA\'), col = c(\'light blue\',\'yellow\'), pch = 16, cex = 1, inset = c(0.02))

rgl.postscript(\'Example.eps\', fmt = \'eps\', drawText = T)

就这样做好了。

以上就是微观生活(93wg.com)关于“怎么样把繁杂的数据变简单?用R语言做主成份分析呗”的详细内容,希望对大家有所帮助!

继续阅读
 
小微
  • 版权声明: 本文部分文字与图片资源来自于网络,转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们(管理员邮箱:81118366@qq.com),情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!
  • 转载请务必保留本文链接:https://93wg.com/23276.html