内容

1内容

2SPsimSeq简介

SPsimSeq是一种半参数模拟程序,用于模拟大量和单细胞RNA-seq数据。它旨在最大限度地保留真实RNA-seq数据的特征,并具有合理的灵活性来模拟广泛的场景。在第一步中,从给定的真实数据集中使用每百万次读取的对数计数(log-CPM)值用于半参数估计基因分布和基因间相关结构。特别地,概率分布的估计使用了基于对数线性模型的快速密度估计方法Efron和Tibshirani (1996)而且林赛(1974).该方法利用高斯copulas(Cario和Nelson, 1997)保留基因间的相关结构,由Hawinkel等人(2019)用于微生物组数据模拟。任意大的数据集,具有实际变化的文库大小,可以从这些分布中采样,同时保持基因之间的相关结构。我们的方法有一个额外的步骤来明确解释零计数的高丰度,这是单细胞RNA-seq数据的典型特征。这一步将零计数的概率建模为基因的平均表达和细胞的文库大小(读取深度)的函数(均为对数尺度)。然后将零计数添加到模拟数据中,以保持观察到的关系(平均表达式和库大小的零概率)。此外,我们的方法通过分别估计源数据中不同人群(例如治疗组)的基因表达分布来模拟DE,然后从每个组中采样一个新的数据集。SPsimSeq过程、实现和基准测试结果的详细信息可以在补充文件中找到。

在本文档中,我们将演示用于模拟散装和单细胞RNA-seq的SPsimSeq,随后将模拟数据的特征与真实源数据进行比较。

3.安装SPsimSeq

可以通过以下命令安装和加载包:

安装SPsimSeq库(devtools) install_github(" centerforstatistics - uent /SPsimSeq")

或来自BioConductor

##安装SPsimSeq库(BiocManager):: Install ("SPsimSeq")
#加载SPsimSeq包库
# #

4示范

4.1例1:模拟bulk RNA-seq

RNA-seq数据(Zhang et al. 2015)数据包含498个成神经细胞瘤。简而言之,在HiSeq 2000仪器(Illumina)上进行了非链聚(A)+ RNA测序。得到长度为100个核苷酸的配对末端reads。为了量化完整的转录组,原始fastq文件用Kallisto v0.42.4处理(用GRCh38-Ensembl v85建立索引)。伪对齐工具Kallisto???在其他定量方法中选择它,因为它的性能同样好,但速度更快。在这项研究中,我们选择了172个具有高风险疾病的肿瘤(样本),分为两组:MYCN扩增组(\ (n_1 \)= 91)和MYCN非放大(\(甲烷\)= 81)肿瘤???.有时我们把这个数据集称为张氏数据或张氏成神经细胞瘤数据。该数据集的一个子集(5000个随机选择的基因)可与SPsimSeq包一起使用,仅用于演示目的。

#加载张大体RNA-seq数据(随包提供)data(" Zhang .data.sub") #筛选表达量充足的基因(避免bug的重要步骤)张大体。计数<- zhang.com data。子数MYCN美元。status <- zhang.data.sub$MYCN。分组变量

这个数据集现在被用作半参数数据生成的模板。我们仅模拟具有以下属性的单个数据(n.sim = 1): - 3000个基因(n.genes = 3000) - 172个样本(tot。样本= 172)-等于源数据-样本平均分为2组,每组90个样本(组。Config = c(0.5, 0.5)) -几乎等于源数据-所有样本都来自单个批次(batch. c)。config = 1) -我们添加10% DE基因(pDE = 0.1) - DE基因在源数据中至少有0.5的对数折叠变化(lfc. config = 1)。THRLD = 0.5) -我们不单独对零建模,它们是密度估计的一部分(model.zero。问题= FALSE)

Set .seed(6452) #为重现性设置种子#模拟数据sim.data.bulk <- SPsimSeq(n。Sim = 1, s.data =张。计数,组= MYCN。状态,n.genes = 3000,批处理。Config = 1, group。Config = c(0.5, 0.5), tot。样本= ncol(zhang.counts), pDE = 0.1, lfc. counts。THRLD = 0.5,结果。format = "list", return.details = TRUE)
##评估特征相关性…
##选择候选DE基因…
##注:源数据中null基因(非DE)数量为968个,模拟数据中需要包含的null基因数量为2700个。因此,对候选空基因进行替换采样。
##注:源数据中检测到的DE基因数量为32个,模拟数据中需要包含的DE基因数量为300个。因此,对候选DE基因进行替换取样。
##估算密度…
##配置设计…
##模拟数据…
# #……1 / 1

接下来,我们将研究刚刚生成的数据。

sim.data。Bulk1 <- sim.data.bulk$sim.data. bulk[[1]] (sim.data列表。Bulk1 $counts[, seq_len(5)]) #计数数据
## Sample_1 Sample_2 Sample_3 Sample_4 Sample_5 ## Gene_1 12 1 4 25 64 ## Gene_2 0 7 0 4 1 ## Gene_3 5 0 2 0 2 ## Gene_4 4 1 0 0 2 # Gene_5 4 1 0 9 7 ## Gene_6 3 0 3 0 0 0 0
head(sim.data.bulk1$colData) #示例信息
##批量组simm . lib . size ## Sample_1 1 1 762054 ## Sample_2 1 1 665409 ## Sample_3 1 1 727419 ## Sample_4 1 1 385784 ## Sample_5 1 1 495890 ## Sample_6 1 1 774708
head(sim.data.bulk1$rowData) #基因信息
## DE.ind源代码。Gene_1 TRUE ADAMTS19 ## Gene_2 TRUE RP11-44F14.8 ## Gene_4 TRUE RP11-662J14.2 ## Gene_5 TRUE RP11-326L2.1 ## Gene_6 TRUE RP5-998H6.2

自从我们设定return.details= TRUE时,我们可以获得所有的密度估计值,可以使用evaluateDensities函数。

geneDens = evaluatedenences (sim.data.;)返回每个样本的中点(mid)和相关密度(gy)

接下来,我们将用SPsimSeq生成的数据与原始数据属性进行比较,以显示它们是真实的并且接近于真实数据。

#比较平均表达式的分布,变异性,#和每个基因库(LSD)的零计数分数#生成热图图#归一化计数进行比较Y0.log。cpm <- log2(edgeR::cpm(zhang.counts)+1) Y1.log。cpm <- log2(edgeR::cpm(sim.data.bulk1$counts)+1) Y0.log。cpm < - Y0.log.cpm [rowMeans (Y0.log.cpm > 0) > = 0.1) Y1.log。cpm <- Y1.log.cpm[rowMeans(Y1.log.cpm>0)>=0.1,] rowVars <- function(X){apply(X, 1, var, na.rm=TRUE)} rowCVs <- function(X){apply(X, 1, function(X) sd(X, na.rm=TRUE)/mean(X, na.rm=TRUE)} par(mfrow=c(1,3)) boxplot(list(real.data=log(colsum (zhang.counts)), simulation .data=log(sima .data.bulk1$colData$ sima . lib . size)), main="库大小")boxplot(list(real.data=rowMeans(Y0.log.cpm), simulation .data=rowMeans(Y1.log.cpm)), main="基因的平均表达")boxplot(list(real.data=rowMeans(Y0.log.cpm),simulation .data=rowVars(Y1.log.cpm)), main="基因表达方差")

库的大小是相同的,因为他们没有建模(见variable.lib.size参数在?SPsimSeq)。接下来,我们看看均值-方差趋势

#比较均值与变异系数的关系(mfrow=c(1,3), mar=c(4,4,4,1)) heatscatter(rowMeans(Y0.log.cpm), rowCVs(Y0.log.cpm), ylim=c(0,6), xlim=c(0,16), colpal="bl2gr2rd", xlab="mean log2-CPM", ylab="变异系数",cexplot=0.5, alpha = 60, cex.lab=1.25) heatscatter(rowMeans(Y1.log.cpm), rowCVs(Y1.log.cpm), ylim=c(0,6), xlim=c(0,16), main="SPsimSeq", xlab="mean log2-CPM", ylab="变异系数",cexplot= "mean log2-CPM", ylab="变异系数",cexplot= "mean log2-CPM", ylab="变异系数",cexplot= "mean log2-CPM", ylab="变异系数",cexplot=0.5, alpha = 60, alpha = 60,Colpal ="bl2gr2rd", cex.lab=1.25) n.grid <- 1000 min.g <- seq(0,20, length。Out = n.grid +1)[-n.]导)马克斯。G <- seq(0,20,长度。= n.gride + 1) [1] mid.g < - (min.g + max.g) / 2 f.real < vapp (seq_len (n.gride),有趣。VALUE = double(1), function(r){x <- Y0.log.cpm[rowMeans(Y0.log.cpm)<=最大值。g[r] & rowMeans(Y0.log.cpm)>min。g [r]] y < - ifelse (! is.null(暗(x)),意味着(rowCVs (x)),意味着(sd (x) / (x))) y}) f.SPsim < vapp (seq_len (n.gride),有趣。VALUE = double(1), function(r){x <- Y1.log.cpm[rowMeans(Y1.log.cpm)<=max. cpm]g[r] & rowMeans(Y1.log.cpm)>min。g [r]] y < - ifelse (! is.null(暗(x)),意味着(rowCVs (x)),意味着(sd (x) / (x))) y}) sm1 < -黄土(我(f.SPsim-f.real) ~ mid.g)情节(中期。g, f.SPsim-f。real, xlim=c(0,14), col="lightskyblue", pch=20, cex.lab=1.25, cex.main=1.4, main="SPsimSeq - real data", ylab="difference", xlab="mean log2-CPM")G,predict(sm1, newdata = mid.g), col="blue", lwd=3)

我们模拟了在真实数据中发现的相关网络(见genewiseCor参数)。现在我们检查合成数据中的相关模式是否与真实数据中的相似。

比较基因与样品之间的相关性。Y0 <- cor(t(Y0.log.cpm))Y1 <- cor(t(Y1.log.cpm))Y0 <- cor.mat.Y0[upper.tri(cor.mat.Y0)]Y1 < - cor.mat.Y1 [upper.tri (cor.mat.Y1)] par (mfrow = c (1,3), 3 = c(4 4、3.5、1))(cor.vec嘘。Y0, nclass = 30, probability = TRUE, border="gray", col="steelblue1", main="real data", xlab="Genewise correlation ", ylim=c(0,3.5), xlim=c(- 1,1), cex.lab=1.25) hist(cor.vec。Y1, nclass = 30,概率= TRUE, border="gray", col="steelblue1", main="SPsimSeq", xlab="Genewise correlation ", ylim=c(0,3.5), xlim=c(- 1,1), cex.lab=1.25) plot(seq(- 1,1,0.1), seq(- 1,1,0.1), type="n", xlab="quantile(真实数据)",ylab="quantile(模拟数据)",main="correlation quantile-quantile plot") abline(0,1, col="gray") points(分位数(cor.vec.)Y0, seq(0,1,0.001)),分位数(cor.vec。seq日元(0.001 0 1)),坳=“蓝色”,pch = 20, cex = 1.5, cex.lab = 1.25)

4.2例2:模拟单细胞RNA-seq(包含读取计数)

成神经细胞瘤NGP细胞scRNA-seq数据(NGP数据)从检索(Verboom et al. 2019)(GEO接入GSE119984):此数据集是为C1仪器上的细胞扰动实验生成的(SMARTer协议)(Verboom et al. 2019).这个总RNA-seq数据集包含83个NGP成神经细胞瘤细胞,其中31个用8\μ(\ \)M的nutlin-3和其他52个细胞用载体(对照)处理。在接下来的章节中,这个数据集被称为NGP单细胞RNA-seq数据。

我们仅模拟单个scRNA-seq数据(n.c im = 1),具有以下属性- 4000个基因(n.c engenes = 4000) - 100个细胞(tot。样本= 100)-细胞平均分为2组,每组50个细胞(组。Config = c(0.5, 0.5)) -所有单元格都来自单个批处理(batch. c)。config = 1) -我们添加10% DE基因(pDE = 0.1) - DE基因的对数折叠变化至少为0.5 -我们分别对零进行建模(model.zero。prob = TRUE) -输出将在singlecel实验类对象(结果。format = " SCE ")

库(SingleCellExperiment)
##加载所需包:摘要实验
##加载所需包:MatrixGenerics
##加载所需的包:matrixStats
## ##附加包:'matrixStats'
##下面的对象被屏蔽__ `。GlobalEnv': ## ## rowVars
## ##附加包:'MatrixGenerics'
##下面的对象被屏蔽__ `。GlobalEnv': ## ## rowVars
下面的对象从package:matrixStats中屏蔽:## ## colAlls, colAnyNAs, colanyans, colAvgsPerRowSet, colCollapse, ## colCounts, colCummaxs, colCummins, colCumprods, colMadDiffs, colIQRs, colLogSumExps, colMadDiffs, ## colMads, colMaxs, colMeans2, colMedians, colMins, colOrderStats, ## colProds, colQuantiles, colRanges, colRanks, colSdDiffs, colSds, ## colSums2, colTabulates, colVarDiffs, colVars, colWeightedMads, ## colWeightedMeans, colWeightedMedians, colweighteddsds, ## colweighttedvars, rowAlls, rowAnyNAs, rowAnys, colIQRs, colLogSumExps, colMadDiffs,rowAvgsPerColSet, ## rowCollapse, rowCounts, rowCummaxs, rowCummins, rowCumprods, ## rowcumsum, rowDiffs, rowIQRDiffs, rowIQRs, rowLogSumExps, ## rowMadDiffs, rowMads, rowMaxs, rowMeans2, rowMedians, rowMins, ## rowOrderStats, rowProds, rowQuantiles, rowwranges, rowwranks, ## rowSdDiffs, rowSds, rowSums2, rowTabulates, rowVarDiffs, rowVars, ## rowWeightedMads, rowWeightedMeans, rowWeightedMedians, ## rowweighteddsds, rowWeightedVars
##加载所需软件包:GenomicRanges
##加载所需的包:stats4
##加载所需的包:BiocGenerics
##加载所需的包:并行
## ##附加包:“BiocGenerics”
以下对象将从'package:parallel'中屏蔽:## ## clusterApply, clusterApplyLB, clusterCall, clusterEvalQ, ## clusterExport, clusterMap, parApply, parCapply, parApply, ## parapplylb, parRapply, parSapply, parSapplyLB
以下对象从'package:stats'中屏蔽:## ## IQR, mad, sd, var, xtabs
##以下对象从'package:base'中屏蔽:## ## Filter, Find, Map, Position, Reduce, anyduplication, append, ## as.data.frame, basename, cbind, colnames, dirname, do。调用,## duplicate eval evalq get grep grepl, intersect, is。Unsorted, ## lapply, mapply, match, mget, order, paste, pmax, pmax.int, pmin, ## pmin.int, rank, rbind, rownames, sapply, setdiff, sort, table, ## tapply, union, unique, unsplit,其中。马克斯,which.min
##加载所需的包:S4Vectors
## ##附加包:“S4Vectors”
以下对象从'package:base'中屏蔽:## ## I,展开。网格,unname
##加载所需的包:IRanges
##加载所需包:GenomeInfoDb
##加载所需的包:Biobase
##欢迎访问Bioconductor ## ##小插图包含介绍性材料;查看## 'browseVignettes()'。要引用Bioconductor,请参见##“citation(“Biobase”)”,以及软件包的“citation(“pkgname”)”。
## ##附件:“Biobase”
下面的对象从“package:MatrixGenerics”中屏蔽:## ## rowMedians
以下对象从'package:matrixStats'中屏蔽:## ## anyMissing, rowMedians
#加载NGP的nutlin数据(可在包中使用,使用smart /C1协议处理,并包含读取计数)data("scNGP.data") set.seed(654321) #模拟数据(我们在这里只模拟一个数据,n.m sim = 1) sim.data.sc <- SPsimSeq(n. SPsimSeq)sim = 1, s.data = scNGP。data, group = scNGP.data$ features ..处理,n.genes = 4000,批处理。Config = 1, group。Config = c(0.5, 0.5), tot。样本= 100,pDE = 0.1, lfc。thrld = 0.5, model.zero.prob = TRUE,结果。format = "SCE")
##评估特征相关性…
##选择候选DE基因…
##注:源数据中null基因(非DE)数量为981个,模拟数据中需要包含的null基因数量为3600个。因此,对候选空基因进行替换采样。
##注:源数据中检测到的DE基因数量为19个,模拟数据中需要包含的DE基因数量为400个。因此,对候选DE基因进行替换取样。
##拟合零概率模型…
##估算密度…
##配置设计…
##模拟数据…
# #……1 / 1

快速浏览一下数据。

sim.data。Sc1 <- sim.data。sc[[1]]类(sim.data.sc1)
## [1] " singlecel实验" ## attr(,"package") ## [1] " singlecel实验"
(计数(sim.data.sc1) [seq_len (5)))
## Sample_1 Sample_2 Sample_3 Sample_4 Sample_5 ## Gene_1 0 25 47 25 0 ## Gene_2 77 381 14 609 184 ## Gene_3 0 0 0 37 0 ## Gene_4 0 35 0 0 0 0 ## Gene_5 18 0 52 27 8 ## Gene_6 7 24 85 0 12
colData (sim.data.sc1)
sim.Lib.Size ## <字符> <字符> <数字> ## Sample_1 1辆车6842 ## Sample_2 1辆车31644 ## Sample_3 1辆车29766 ## Sample_4 1辆车34072 ## Sample_5 1辆车19042 ## ... ... ... ...##抽样_96 1 nutlin 41566 ##抽样_97 1 nutlin 36668 ##抽样_98 1 nutlin 19377 ##抽样_99 1 nutlin 33645 ##抽样_100 1 nutlin 21125
rowData (sim.data.sc1)
## DataFrame 4000行2列ID ## <逻辑> <字符> ## Gene_1 TRUE ENSG00000105613 ## Gene_2 TRUE ENSG00000166508 ## Gene_3 TRUE ENSG00000119946 ## Gene_4 TRUE ENSG00000164306 ## Gene_5 TRUE ENSG00000105613 ## ... ... ...## Gene_3996假ENSG00000101608 ## Gene_3997假ENSG00000239335 ## Gene_3998假ENSG00000100890 ## Gene_3999假ENSG00000213171 ## Gene_4000假ENSG00000125386

看看基本的数据属性。

# normalize计数比较Y0.log。cpm <- log2(edgeR::cpm(counts(scNGP.data))+1) Y1.log。cpm <- log2(edgeR::cpm(counts(sim.data.sc1))+1) Y0.log。cpm < - Y0.log.cpm [rowMeans (Y0.log.cpm > 0) > = 0.1) Y1.log。cpm <- Y1.log.cpm[rowMeans(Y1.log.cpm>0)>=0.1,] rowVars <- function(X){apply(X, 1, var, na.rm=TRUE)} rowCVs <- function(X){apply(X, 1, function(X) sd(X, na.rm=TRUE)/mean(X, na.rm=TRUE)} rowZeroFrac <- function(X){apply(X, 1, function(X) mean(X =0, na.rm=TRUE))} par(mfrow=c(1,3)) boxplot(list(real.data= colsum (counts(scNGP.data)), simulation .data=colData(simd .data.sc1)$ simd . lib . size), main="库大小" boxplot(list(real.data=rowMeans(Y0.log.cpm), simulation .data=rowMeans(Y1.log.cpm)),main="基因的平均表达量")boxplot(list(real.data=rowVars(Y0.log.cpm), simulation .data=rowVars(Y1.log.cpm)), main="基因表达量方差")

比较均值-方差分布

#比较均值与变异系数的关系(mfrow=c(1,3), mar=c(4,4,4,1)) heatscatter(rowMeans(Y0.log.cpm), rowCVs(Y0.log.cpm), ylim=c(0,6), xlim=c(0,16), colpal="bl2gr2rd", xlab="mean log2-CPM", ylab="变异系数",cexplot=0.5, alpha = 60, cex.lab=1.25) heatscatter(rowMeans(Y1.log.cpm), rowCVs(Y1.log.cpm), ylim=c(0,6), xlim=c(0,16), main="SPsimSeq", xlab="mean log2-CPM", ylab="变异系数",cexplot= "mean log2-CPM", ylab="变异系数",cexplot= "mean log2-CPM", ylab="变异系数",cexplot= "mean log2-CPM", ylab="变异系数",cexplot=0.5, alpha = 60, alpha = 60,Colpal ="bl2gr2rd", cex.lab=1.25) n.grid <- 1000 min.g <- seq(0,20, length。Out = n.grid +1)[-n.]导)马克斯。G <- seq(0,20,长度。= n.gride + 1) [1] mid.g < - (min.g + max.g) / 2 f.real < vapp (seq_len (n.gride),有趣。VALUE = double(1), function(r){x <- Y0.log.cpm[rowMeans(Y0.log.cpm)<=最大值。g[r] & rowMeans(Y0.log.cpm)>min。g [r]] y < - ifelse (! is.null(暗(x)),意味着(rowCVs (x)),意味着(sd (x) / (x))) y}) f.SPsim < vapp (seq_len (n.gride),有趣。VALUE = double(1), function(r){x <- Y1.log.cpm[rowMeans(Y1.log.cpm)<=max. cpm]g[r] & rowMeans(Y1.log.cpm)>min。g [r]] y < - ifelse (! is.null(暗(x)),意味着(rowCVs (x)),意味着(sd (x) / (x))) y}) sm1 < -黄土(我(f.SPsim-f.real) ~ mid.g)情节(中期。g, f.SPsim-f。real, xlim=c(0,14), col="lightskyblue", pch=20, cex.lab=1.25, cex.main=1.4, main="SPsimSeq - real data", ylab="difference", xlab="mean log2-CPM")G,predict(sm1, newdata = mid.g), col="blue", lwd=3)

均值和零

#比较平均值和零数分数之间的关系par(mfrow=c(1,3), mar=c(4,4,4,1)) heatscatter(rowMeans(Y0.log.cpm), rowZeroFrac(Y0.log.cpm), ylim=c(0,16), colpal="bl2gr2rd", xlim= "mean log2-CPM", ylab=" mean log2-CPM", ylab="零数分数",cexplot=0.5, alpha = 60, cex.lab=1.25) heatscatter(rowMeans(Y1.log.cpm), rowZeroFrac(Y1.log.cpm), ylim=c(0,1), xlim=c(0,16), main="SPsimSeq", xlab="mean log2-CPM", ylab="零数分数",cexplot=0.5, cexx .lab= "零数分数",cexplot=0.5,Alpha = 60, colpal="bl2gr2rd", cex.lab=1.25) n.grid <- 1000 min.g <- seq(0,20, length。Out = n.grid +1)[-n.]导)马克斯。G <- seq(0,20,长度。= n.gride + 1) [1] mid.g < - (min.g + max.g) / 2 f.real < vapp (seq_len (n.gride),有趣。VALUE = double(1), function(r){x <- Y0.log.cpm[rowMeans(Y0.log.cpm)<=最大值。g[r] & rowMeans(Y0.log.cpm)>min。g [r]] y < - ifelse (! is.null(暗(x)),意味着(rowZeroFrac (x)),意味着(x = = 0)) y}) f.SPsim < vapp (seq_len (n.gride),有趣。VALUE = double(1), function(r){x <- Y1.log.cpm[rowMeans(Y1.log.cpm)<=max. cpm]g[r] & rowMeans(Y1.log.cpm)>min。g [r]] y < - ifelse (! is.null(暗(x)),意味着(rowZeroFrac (x)),意味着(x = = 0)) y}) sm1 < -黄土(我(f.SPsim-f.real) ~ mid.g)情节(中期。g, f.SPsim-f。real, xlim=c(0,14), col="lightskyblue", pch=20, cex.lab=1.25, cex.main=1.4, main="SPsimSeq - real data", ylab="difference", xlab="mean log2-CPM")G,predict(sm1, newdata = mid.g), col="blue", lwd=3)

在这里我们还会看到相关网络

#比较基因与样本Y0.log的相关性。cpm2 <- Y0.log.cpm[rowMeans(Y0.log.cpm>0)>0.25,] Y1.log. cpm。cpm2 <- Y1.log.cpm[rowMeans(Y1.log.cpm>0)>0.25,]Y0 <- cor(t(Y0.log.cpm2))Y1 <- cor(t(Y1.log.cpm2))Y0 <- cor.mat.Y0[upper.tri(cor.mat.Y0)]Y1 < - cor.mat.Y1 [upper.tri (cor.mat.Y1)] par (mfrow = c (1,3), 3 = c(4 4、3.5、1))(cor.vec嘘。Y0, nclass = 30,概率= TRUE, border="gray", col="steelblue1", main="真实数据",xlab="基因间的成对相关性",ylim=c(0,3.5), xlim=c(- 1,1), cex.lab=1.25)Y1, nclass = 30,概率= TRUE, border="gray", col="steelblue1", main="SPsimSeq", xlab="基因间的成对相关性",ylim=c(0,3.5), xlim=c(- 1,1), cex.lab=1.25) plot(seq(- 1,1,0.1), seq(- 1,1,0.1), type="n", xlab="分位数(真实数据)",ylab="分位数(模拟数据)",main="相关分位数-分位数图")abline(0,1, col="gray")点(分位数(cor.vec.)Y0, seq(0,1,0.001)),分位数(cor.vec。seq日元(0.001 0 1)),坳=“蓝色”,pch = 20, cex = 1.5, cex.lab = 1.25)

sessionInfo ()
## R版本4.1.0(2021-05-18)##平台:x86_64-pc-linux-gnu(64位)##运行在:Ubuntu 20.04.2 LTS ## ##矩阵产品:默认## BLAS: /home/biocbuild/bbs-3.13-bioc/R/lib/libRblas。所以## LAPACK: /home/biocbuild/bbs-3.13-bioc/R/lib/libRlapack。所以## ## locale: ## [1] LC_CTYPE=en_US。UTF-8 LC_NUMERIC= c# # [3] LC_TIME=en_GB LC_COLLATE= c# # [5] LC_MONETARY=en_US。utf - 8 LC_MESSAGES = en_US。UTF-8 ## [7] LC_PAPER=en_US。UTF-8 LC_NAME= c# # [9] LC_ADDRESS=C lc_phone = c# # [11] LC_MEASUREMENT=en_US。UTF-8 LC_IDENTIFICATION=C ## ##附加的基本包:##[1]并行stats4统计图形grDevices utils数据集##[8]方法基础## ##其他附加包:[1] SingleCellExperiment_1.14.0 SummarizedExperiment_1.22.0 ## [3] Biobase_2.52.0 GenomicRanges_1.44.0 ## [5] GenomeInfoDb_1.28.0 IRanges_2.26.0 ## [7] S4Vectors_0.30.0 BiocGenerics_0.38.0 ## [9] MatrixGenerics_1.4.0 matrixStats_0.58.0 ## [11] lsd_1 .1-0 SPsimSeq_1.2.0 ## [13] BiocStyle_2.20.0 ## ##通过命名空间加载(并且没有附加):[4] htmlTable_2.2.1 XVector_0.32.0 base64enc_0.1-3 ## [7] rstudioapi_0.13 bit64_4.0.5 annotationdbi_1.54 4.0 ## [10] fansi_0.4.2 mvtnorm_1.1-1 codetools_0.2-18 ## [13] splines_4.1.0 doParallel_1.0.16 cachem_1.0.5 ## [19] Formula_1.2-4 jsonlite_1.7.2 phyloseq_1.36.0 ## [25] WGCNA_1.70-3 cluster_2.1.2 GO.db_3.13.0 ## [25] png_0.1-7 BiocManager_1.30.15 compiler_4.1.0 ## [28] httr_1.4.2[40] GenomeInfoDbData_1.2.6 reshape2_1.4.4 dplyr_1.0.6 ## [43] rcpps_1.0.6 jquerylib_0.1.4 rhdf5filters_1.4.0 ## [46] vctrs_0.3.8 Biostrings_2.60.0 multtest_2.48.0 ## [49] nlme_1 . 3.1-152 ape_5.5 preprocesscore_1.4.0 ## [52] iterators_1.0.13 xfun_0.23 fastcluster_1.1.25 ## [55] string_1 .4.0 lifecycle_1.0.0edgeR_3.34.0 ## [58] zlibbioc_1.38.0 MASS_7.3-54 scales_1.1.1 ## [61] hms_1.1.0 biomformat_1.20.0 rhdf5_2.36.0 ## [64] RColorBrewer_1.1-2 yaml_2.2.1 memoise_2.0.0 ## [67] grdextra_2.3 ggplot2_3.3.3 sass_0.4.0 ## [70] rpart_1 .4.1 -15 latticeExtra_0.6-29 stringi_1.6.2 ## [73] RSQLite_2.2.7 highr_0.9 foreach_1.5.1 ## [76] permute_0.9-5 checkmate_2.0.0 rlang_0.4.11 ## [79] pkgconfig_2.0.3 bitops_1.0-7 evaluate_0.14 ## [82] lattice_0.20-44 Rhdf5lib_1.14.0 purrr_0.3.4 ## [85] htmlwidgets_1.5.3 bit_4.0.4tidyselect_1.1.1 ## [88] plyr_1.8.6 magrittr_2.0.1 bookdown_0.22 ## [91] R6_2.5.0 magick_2.7.2 generics_0.1.0 ## [94] Hmisc_4.5-0 DelayedArray_0.18.0 DBI_1.1.1 ## [97] mgcv_1.8-35 pillar_1.6.1 foreign_0.8-81 ## [100] fitdistrplus_1.1-3 survival_3.2-11 KEGGREST_1.32.0 ## [103] RCurl_1.98-1.3 nnet_7.3-16 tibble_3.1.2 ## [106] crayon_1.4.1 utf8_1.2.1 rmarkdown_2.8 ## [109] jpeg_0.1-8.1 progress_1.2.2 locfit_1.5-9.4 ## [112] grid_4.1.0 data.table_1.14.0 vegan_2.5-7 ## [115] blob_1.2.1 digest_0.6.27 munsell_0.5.0 ## [118] bslib_0.2.5.1

5参考文献

马恩·C·卡里奥和巴里·l·尼尔森,1997。用任意边际分布和相关矩阵建模和生成随机向量。工业工程系;管理科学,西北大学,埃文斯顿,伊利诺伊州。

布莱德利·埃夫隆和罗伯特·蒂布谢拉尼,1996。使用特别设计的指数族进行密度估计统计年鉴24(6): 2431-61。

Hawinkel, Stijn, Federico Mattiello, Luc Bijnens和Olivier Thas, 2019。“一个不兑现的承诺:微生物组差异丰度方法不能控制错误发现率。”生物信息学简介会20(1): 210-21。http://dx.doi.org/10.1093/bib/bbx104

林赛,JK。1974.统计模型的构建与比较皇家统计学会杂志。乙组(方法学), 418 - 25所示。

Verboom, Karen, Celine Everaert, Nathalie Bolduc, Kenneth J Livak, Nurten Yigit, Dries Rombaut, Jasper Anckaert等。2019。“更智能的单细胞总RNA测序。”核酸研究47 (16): e93-e93。https://doi.org/10.1093/nar/gkz535

张文茜,于莹,Falk Hertwig, Jean Thierry-Mieg,张文伟,Danielle Thierry-Mieg,王健,等。2015。RNA-seq和基于微阵列的临床终点预测模型的比较基因组生物学16(1): 133。