R 语言 ggplot2 PCA 主成分分析(虚拟数据集)

这篇具有很好参考价值的文章主要介绍了R 语言 ggplot2 PCA 主成分分析(虚拟数据集)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

生成虚拟数据集

library(ggplot2)

data.matrix <- matrix(nrow = 100, ncol = 10)

colnames(data.matrix) <- c(
  paste("wt",1:5,sep = ""),
  paste("ko",1:5,sep = "")
)


rownames(data.matrix) <- paste("gene",1:100,sep = "")

head(data.matrix)

以上代码生成了100行基因,10列样本的矩阵
前五列命名wt开头+1-5,表示正常基因
后五列命名ko开头+1-5,表示缺少基因的样本(knock-out)

给每行基因都统一命名gene+1-100

head()函数默认查看前6行

R 语言 ggplot2 PCA 主成分分析(虚拟数据集)
现在只是定义了矩阵的shape和name,还没填充数值

for (i in 1:100){
  wt.values <- rpois(5, lambda = sample(x=10:1000, size = 1))
  ko.values <- rpois(5, lambda = sample(x=10:1000, size = 1))
  data.matrix[i,] <- c(wt.values, ko.values)
}

head(data.matrix)

这段代码的作用是生成一个大小为100x10的数据矩阵data.matrix,其中前5列是"wt"(wild-type)样本的值,后5列是"ko"(knockout)样本的值。

在循环中,对于每个i的取值(从1到100),首先使用sample(x=10:1000, size = 1)从10到1000之间的整数中随机抽取一个数作为泊松分布的参数lambda。然后,使用rpois(5, lambda)函数生成一个具有泊松分布的随机数向量,其中每个元素表示一个基因在"wt"样本中的表达量。同样的过程也用于生成"ko"样本中的表达量。

最后,通过c(wt.values, ko.values)将"wt"和"ko"样本的表达量合并为一个长度为10的向量,并将其赋值给data.matrix的第i行。

for循环给依次给1-100行的前五列和后五列赋值,填充值介于10-1000之间。

R 语言 ggplot2 PCA 主成分分析(虚拟数据集)
初始虚拟数据集创建完毕,接下来用prcomp()函数分析各样本之间关系。该函数默认情况下以基因为列,样本为行,和我们创建的矩阵互为转置,因此需要用到转置函数t()

pca <- prcomp(t(data.matrix), scale = TRUE)

plot(pca$x[,1], pca$x[,2])

pca.var <- pca$sdev^2
pca.var.per <- round(pca.var/sum(pca.var)*100, 1)

barplot(pca.var.per, main = "Screen Plot", xlab ="principal component", ylab = "percent variation")

prcomp(, scale = TRUE)表示对数据进行标准化
每一列表示一个基因所对应的10个样本,即一列只有十个数据
plot 生成一个2D的图,前两个主成分的散点图
R 语言 ggplot2 PCA 主成分分析(虚拟数据集)
pca.var 表示 标准差的平方

pca.var.per 表示 每个变量所占的百分比,保留小数点后一位
R 语言 ggplot2 PCA 主成分分析(虚拟数据集)
可以看到前两个成分所占比例最大,尤其是第一个成分

用 barplot 来直观每个成分所占比例

R 语言 ggplot2 PCA 主成分分析(虚拟数据集)

ggplot2绘图

pca.data <- data.frame(sample = rownames(pca$x),
                       X = pca$x[,1],
                       Y = pca$x[,2]
                       )

ggplot(data = pca.data, aes(x = X, y = Y,label = sample))+
  geom_text()+
  xlab(paste("pc1-", pca.var.per[1], "%", sep = ""))+
  ylab(paste("pc2-", pca.var.per[2], "%", sep = ""))+
  theme_bw()+
  ggtitle("my pac graph")

先按 ggplot2 需要的方式格式化数据,x轴用第一个成分,y轴用第二个成分

R 语言 ggplot2 PCA 主成分分析(虚拟数据集)
可以发现数据分布在了两侧,我们用prcomp()调用负载得分loading scores 的参数rotation

通过分析pca$rotation,可以了解该主成分与哪些基因相关性较高,哪些基因对主成分的贡献较大。这对于解释主成分分析的结果和理解数据的结构和变化模式非常有帮助。

loading_scores <- pca$rotation[,1]

gene_score <- abs(loading_scores)
gene_score_ranked <- sort(gene_score,decreasing = TRUE)
top_10_genes <- names(gene_score_ranked[1:10])


pca$rotation[top_10_genes, 1]

这里我们查看 PC1 的负载得分,因为 PC1 解释原始数据的 93.6%的方差

loading_scores <- pca$rotation[,1] 这行代码的作用是将PCA分析结果中第一个主成分(即第一列)的负载得分(即100个基因数据)提取出来并赋值给loading_scores变量。

R 语言 ggplot2 PCA 主成分分析(虚拟数据集)

abs()取绝对值,再从小大到小排序,选取排名靠前的前十个基因top_10_genes

R 语言 ggplot2 PCA 主成分分析(虚拟数据集)
若想显示每个基因对应的 rotation,用以下代码即可,展示的是带正负值的

pca$rotation[top_10_genes, 1]

排名前10的基因在第一主成分上的负载得分

总的来说,本文对基因表达数据进行了主成分分析,并可视化结果。
通过PCA主成分分析,可以降维并找到影响数据变化最大的主要因素,进而进行数据的可视化和分析。
文章来源地址https://www.toymoban.com/news/detail-507759.html

到了这里,关于R 语言 ggplot2 PCA 主成分分析(虚拟数据集)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • R语言ggplot2——散点图

    示例输入数据:

    2024年02月13日
    浏览(26)
  • R语言ggplot2——柱形图

    BMI.txt

    2024年02月16日
    浏览(30)
  • R语言可视化【ggplot2】

    文章的文字/图片/代码部分/全部来源网络或学术论文或课件,文章会持续修缮更新,仅供学习使用。 目录 R语言可视化【ggplot2】 一、可视化介绍 二、不同情况适用的图形 类别比较:  数值关系: 数据分布:  时间序列:  局部与整体: 举几个例子:  类别比较:柱形图

    2023年04月19日
    浏览(23)
  • 【数据处理方法】主成分分析(PCA)原理分析

            笔者最近在学习的过程需要使用一些数据分析和处理的方法,而PCA就是其中常用的一种手段。但在自学的过程中,由于笔者水平有限,对一些博客中的公式不是能很好理解(数学不好的辛酸Ծ‸Ծ),导致总是对整个方法的原理没有一个透彻的理解。后来在视频用

    2023年04月09日
    浏览(27)
  • R语言tidyverse教程:ggplot2绘图初步

    R语言系列: 编程基础💎循环语句💎向量、矩阵和数组💎列表、数据帧 排序函数💎apply系列函数 tidyverse :readr💎tibble ggplot2有其独特的绘图语法,想要实现数据绘图,除了数据和集合形状之外,还需要一个叫做 aesthetic 的东西,这个不知道应该怎么翻,后面就统一叫做美术

    2024年02月04日
    浏览(27)
  • R语言的ggplot2绘制分组折线图?

    R绘制分组折线图.R 首先看数据情况:group有3组。Time有3组,数据意思是在3组3个时间点测量了某指标,现在要绘制组1、组2、组3某指标y按时间的变化趋势 数据情况: 看看最终的效果图如下: 下面是本次使用的代码 .libPaths () setwd ( \\\"C:/Users/12974/Desktop/百度经验/03图形绘制/03R绘

    2024年01月22日
    浏览(30)
  • R语言ggplot2 | R语言绘制物种组成面积图(三)

       利用R语言绘制物种组成图。本文以堆叠面积图的方式与大家分享。 面积图又叫区域图。它是在折线图的基础之上形成的, 它将折线图中折线与自变量坐标轴之间的区域使用颜色或者纹理填充,这样一个填充区域我们叫面积。颜色的填充可以更好地突出趋势信息(比如时

    2024年02月13日
    浏览(27)
  • R语言画图的-- ggplot2(实现图例的精细修改)

    ggplot2 是R中用来作图的很强的包,但是其用法比较多且各种参数比较复杂,我自己使用的时候还经常需要查阅一些关键参数等,因此想要写一个 r 中 ggplot2 的作图文档,方便自己查阅。 但是今天突然发现了一个网站,这个网站里面包含了 ggplot2 作图的几乎所有内容。有各种图

    2024年02月13日
    浏览(41)
  • 数据降维之主成分分析法PCA

    参考链接:https://www.bilibili.com/video/BV1E5411E71z 主成分分析(Principal Component Analysis,PCA), 是一种统计方法。通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫主成分。 在用统计分析方法研究多变量的课题时,变量个数太多就会增

    2023年04月11日
    浏览(32)
  • 数据分析案例-基于PCA主成分分析法对葡萄酒数据进行分析

    🤵‍♂️ 个人主页:@艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏 📂加关注+ 目录 1.项目背景 2.项目简介 2.1分析目标 2.2数据集介绍 2.3技术工具 3.算法理论 4.实验过程

    2024年02月03日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包