内容

库(knitr)库(rmarkdown)
## ##附加包:'rmarkdown'
以下对象从'package:BiocStyle'中屏蔽:## ## html_document, md_document, pdf_document
针织::opts_chunk$set(echo = TRUE)

1简介

1.1总结

当我们对高通量分析(“omic”数据)整理的高斯多元数据使用回归模型时,响应变量通常在方差-协方差矩阵及其逆中具有潜在结构。传统方法在回归中给出这些结构的假设。例如,在重复测量方差分析中,协方差矩阵给出了固定形式的结构。然而,除非有现成的信息,否则这些假设是不真实的。准确的方差协方差矩阵信息和精度矩阵信息可以更好地估计回归系数。在方差-协方差矩阵中只有少量非零协方差项的响应变量的情况下,它们等价于一个稀疏无向网络图,其中节点表示变量,边表示变量之间的非零链接。

我们的方法是利用高斯图模型(GGM)估计稀疏方差-协方差矩阵及其逆矩阵(精度矩阵)的结构,以改进多元广义最小二乘回归的估计。

该方法首先采用套索惩罚法“glasso”、邻域选择法或“enet”法估计这些响应变量的精度矩阵;然后根据估计的精度矩阵图结构和微调参数,从样本方差-协方差矩阵中选取协方差项。根据本原图理论,以相邻矩阵的幂为基础,选择微调参数,推导出方差-协方差矩阵的最终结构。

1.2该模型

该sparsenetgls是一个多元回归模型,从响应变量中给出了估计精度矩阵和方差-协方差矩阵。它使用回归系数的方差-协方差矩阵的三明治估计器。在对精度矩阵的估计中,sparsenetgls包中提供了四个选项,分别是“glasso”、“lasso”、“mb”和“elastic”。“glasso”采用了Yuan和Lin(2007)提出的图形套索方法,以及Friedman, Hastie, Hofling和Tibshirani(2007)提出的分块坐标下降算法。
“套索”和“mb”使用带套索惩罚的线性回归来提供非对称逼近,这是由Meinshausen和Buhlmann(2006)提出的。“enet”也是使用线性回归的非对称近似,但使用套索惩罚(l1)和脊正则化(l2)的组合。
在广义最小二乘回归中,回归系数由多层格式化的多元模型估计。响应变量被堆叠成一个单变量回归变量,并带有一个指标来识别它们的采样单位。在给定精度的基础上计算方差的夹心估计量,得到方差-协方差矩阵。
从惩罚路径中选择回归系数有不同的选项。一种是基于最小方差,另一种选择是信息标准(AIC和BIC)。根据所选的精度矩阵结构和基于微调参数的协方差项,从其三明治估计器中计算所选回归系数的方差。

2sparsenetgls R包

“sparsenetgls”包中包含的主要函数有:

  1. path_result_for_roc(): path_result_for_roc函数用于将高斯图模型(GGM)的预测精度与真实图结构进行比较时产生诊断指标。GGM必须使用L-p范数正则化(p=1,2),其系列解以正则化参数为条件。一系列精度矩阵的评估结果返回列表包括敏感性/特异性/阴性预测值/阳性预测值。

  2. plot_roc():用于生成接收者操作特征曲线(Receiver operating Characteristics, ROC),以可视化高斯图模型(Gaussian Graphical model, GGM)对真实图结构的预测精度。GGM必须使用L-p范数正则化(p=1,2),其系列解以正则化参数为条件。

  3. sparsenetgls():它是为多元回归设计的,给定多元高斯分布响应的惩罚和/或正则化精度和协方差矩阵。采用广义最小二乘回归推导解释变量回归系数的夹心方差-协方差矩阵,条件是精度和协方差矩阵的解。

  4. plotsngls():用于提供gls回归中被罚参数lambda和回归系数方差的折线图。给出了惩罚路径上精度矩阵解的图结构。

3.安装

有两种安装方式:

3.1使用生物导体作为安装源

install.packages("BiocManager")::install("sparsenetgls")

3.2使用github作为安装源

devtools: install_github(“superOmics / sparsenetgls”)库(sparsenetgls)

4主要函数的使用说明和示例

下一节将提供使用存储在R数据文件中的已知精度矩阵的示例:bandprec.rdata。这些例子包括:

  1. 评价了由sparsenetgls给出的高斯图模型的结果;

  2. 使用sparsenetgls从多元回归中估计回归系数,并使用最小方差信息准则来选择回归系数;

  3. 可视化sparsenetgls的结果;

  4. 使用不同的选项:“lasso”,“mb”和“elastic”用于gls中的GGM。

示例1包含用于评估sparsenetgls函数的GGM结果的代码。前12行是模拟给定已知精度矩阵和一组解释变量的响应变量数据集。sparsenetgls函数的返回列表包括由其中一个GGM选项生成的一系列精度矩阵(由方法指定)。在plot_roc中,ngroup和group选项都指示评估结果是针对一组GGM还是仅针对一个GGM系列。

library(MASS) library(Matrix) library(sparsenetgls) #模拟数据集数据(bandprec, package="sparsenetgls") varKnown <- solve(as.matrix(bandprec)) prec <- as.matrix(bandprec) Y0 <- mvrnorm(n=100, mu=rep(0,50), Sigma=varKnown) nlambda=10 #u-beta u <- rep(1,8) X_1 <- mvrnorm(n=100, mu=rep(0,8), Sigma=Diagonal(8,rep(1,8))) Y_1 <- Y0+as.vector(X_1%*%as.matrix(u)) databand_X=X_1 databand_Y=Y_1 #生成精度矩阵omega <- sparsenetgls(responsedata=databand_Y, predictdata=databand_X,nlambda=10, ndist=1, method="glasso")$PREC_seq
输入被标识为协方差矩阵。##进行图形套索(glasso)与无损筛选....进行中:9%进行图形套索(玻璃)与无损筛选....进行中:19%使用无损筛选进行图形套索(glasso) ....进行中:30%进行图形套索(玻璃)与无损筛选....进行中:40%进行图形套索(玻璃)与无损筛选....进行中:50%进行图形套索(玻璃)与无损筛选....进行中:60%进行图形套索(glasso)和无损筛选....进行中:70%进行图形套索(玻璃)与无损筛选....正在进行:80% ##进行图形套索(glasso)....完成。
omega_est <- array(dim=c(50,50,10)) for (i in seq_len(10)) omega_est[,,i] <- as.matrix(omega[[i]]) roc_path_result <- path_result_for_roc(PREC_for_graph=prec, OMEGA_path=omega_est, pathnumber=10)
# # $ # #敏感性[1]0 # # # # # # $特异性NPV美元[1]1 # # # # # # # # # # $ 0.96 [1]PPV # #[1]南# # # # $ # #敏感性[1]0 # # # # # # $特异性NPV美元[1]1 # # # # # # # # # # $ 0.96 [1]PPV # #[1]南# # # # $ # #敏感性[1]0.02040816 # # # # # # $特异性NPV美元[1]1 # # # # # # # # # # $ 0.9607843 [1]PPV # #[1] # # 1 # # # # $敏感性[1]# # 1 # # # # $特异性[1]0.9115646 # # # # # # NPV PPV[1] 1 # # # # $ # #[1] 0.3202614 # # # # $ # #敏感性[1]1 # # # # $特异性# # # # # # $ 0.5238095 [1]NPV# # PPV[1] 1 # # # # $ # #[1] 0.08045977 # # # # $ # #敏感性[1]# # 1 # # # # $特异性[1]0.1904762 # # # # # # NPV PPV[1] 1 # # # # $ # #[1] 0.04895105 # # # # $ # #敏感性[1]# # 1 # # # # $特异性[1]0.05612245 # # # # # # NPV PPV[1] 1 # # # # $ # #[1] 0.04227783 # # # # $ # #敏感性[1]# # 1 # # # # $特异性[1]0.0127551 # # # # # # NPV PPV[1] 1 # # # # $ # #[1] 0.04049587 # # # # $ # #敏感性[1]# # 1 # # # # $特异性[1]0.004251701 # # # # # # NPV PPV [1] 1 # # # # $ # # # # # # 0.04016393 [1]$ # #敏感性[1]# # 1 # # # # $特异性[1]0.00170068 # # # # $ NPV # # PPV [1] 1 # # # # $ # # 0.04006541 [1]
plot_roc(result_assessment=roc_path_result, group=FALSE, ngroup=0, est_names="glasso estimation")

例2提供了使用“glasso”方法从sparsenetgls中推导回归系数以估计GGM的精度矩阵的代码。函数convertbeta()是将回归系数从标准化比例尺转换为原始比例尺。转换后的代码是选择方差最小的beta, aic或bic。

fitgls <- sparsenetgls(databand_Y, databand_X, nlambda=10, ndist=5, method="glasso")
输入被标识为协方差矩阵。##进行图形套索(glasso)与无损筛选....进行中:9%进行图形套索(玻璃)与无损筛选....进行中:19%使用无损筛选进行图形套索(glasso) ....进行中:30%进行图形套索(玻璃)与无损筛选....进行中:40%进行图形套索(玻璃)与无损筛选....进行中:50%进行图形套索(玻璃)与无损筛选....进行中:60%进行图形套索(glasso)和无损筛选....进行中:70%进行图形套索(玻璃)与无损筛选....正在进行:80% ##进行图形套索(glasso)....完成。
#将回归系数转换为其原始规模q <- dim(databand_X)[2] nlambda=10 betagls <- matrix(nrow=nlambda, ncol=q+1) for (i in seq_len(nlambda)) betagls[i,] <- convertbeta(Y=databand_Y, X=databand_X, q=q+1, beta0=fitgls$beta[,i])$betaconv # beta选择#选择lambda和基于beta ndist <- max(fitgls$power)-1 tr_gamma <- matrix(nrow=10,ncol=ndist-1) for (j in seq_len(nlambda -1)) for (i in seq_len(nlambda)) tr_gamma[i,j] <- (sum(diag(fitgls$covBeta[,,j,i]))) select.lambda.dist <- where (tr_gamma==min(tr_gamma), arr.ind=TRUE) select.lambda.dist
## ## # [1,] 10
Betagls_select <- betagls[select.lambda. xml]dist[1],] #行是lambda,列是dist varbeta <- diag(fitgls$covBeta[,,ndist,select.lambda.dist[1]]) ##根据AIC和BIC选择lambda和dist值。dist2 <- where (fitgls$bic==min(fitgls$bic,na.rm=TRUE), arr.ind=TRUE)dist3 <- which(fitgls$aic==min(fitgls$aic,na.rm=TRUE), arr.ind=TRUE) varbeta_bic <- diag(fitgls$covBeta[,,ndist,select. lamba .dist2[1]]) varbeta_aic <- diag(fitgls$covBeta[,,ndist,select. lamba .dist3[1]])

例3是通过从sparsenet对象导出的精度矩阵的线状图和结构图来可视化结果。

plotsngls (fitgls ith_lambda = 5)

例4提供了在sparsenetgls中使用不同选项估算GGM的示例。

#使用glasso方法估计精度矩阵fitgls_g <- sparsenetgls(databand_Y, databand_X, nlambda=10, ndist=5, method="elastic") #使用lasso方法估计精度矩阵#fitgls_l <- sparsenetgls(databand_Y, databand_X, nlambda=10, ndist=5, #method="lasso") #使用Meinshausen B?hlmann方法近似精度矩阵#fitgls_m <- sparsenetgls(databand_Y, databand_X, nlambda=10, ndist=5, #method="mb")

5sessionInfo

本插图中的所有输出都是在以下条件下产生的:

sessionInfo ()
## R版本4.2.0 RC (2022-04-19 r82224) ##平台:x86_64-pc-linux-gnu(64位)##运行在Ubuntu 20.04.4 LTS ## ##矩阵产品:默认## BLAS: /home/biocbuild/bbs-3.15-bioc/R/lib/libRblas。/home/biocbuild/bbs-3.15-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]stats graphics grDevices utils datasets methods基础## ##其他附加包:## [1]sparsenetgls_1.14.0 Matrix_1.4-1 MASS_7.3-57 ## [4] rmarkdown_2.14 knitr_1.38 BiocStyle_2.24.0 ## ##通过命名空间加载(且未附加):## [4] BiocManager_1.30.17 jquerylib_0.1.4 highr_0.9 ## [7] iterators_1.0.14 tools_4.2.0 digest_0.6.29 ## [10] jsonlite_1.8.0 evaluate_0.15 lattice_0.20-45 ## [13] huge_1.3.5 pkgconfig_2.0.3 rlang_1.0.2 ## [19] foreach_1.5.2 igraph_1.3.1 cli_3.3.0 ## [19] magick_1 .7.3 yaml_2.3.5 xfun_0.30 ## [22] fastmap_1.1.0 string_1 .4.0 sass_0.4.1 ## [25] glmnet_1 .4 -4 grid_4.2.0 R6_2.5.1 ## [28] survival_3.3-1 bookdown_0.26 magrittr_2.0.3 ## [31]Codetools_0.2-18 htmltools_0.5.2 splines_4.2.0 ## [34] shape_1.4.6 stringi_1.7.6

6参考文献

  1. 邓普斯特,A.P.协方差选择。Biomatrics 1972; 28(1): 157 - 175。
  2. 《图形建模导论》。纽约:施普林格;2000.
  3. Friedman, J., Hastie, T., Simon, N.和Tibshiran, R.广义线性模型通过坐标下降的正则化路径。统计软件学报2010;33(1)。
  4. Friedman, J., Hastie, T., Simon, N.和Tibshirani, R. 2016。套索和弹性网正则化广义线性模型
  5. Friedman, J., Hastie, T.和Tibshirani, R.套索和分组套索在稀疏图形模型估计中的应用。在。我们;2010.
  6. Meinshausen, N.和Buhlmann, P.高维图和变量选择套索。统计年鉴2006;34(3):1436-1462。
  7. 协方差估计:GLM和正则化的观点。统计科学,2011;26(3):369-387。
  8. 元,m·林和y模型选择和估计高斯图形模型。生物统计学2007;94(1):19-35。
  9. 赵涛,刘海华,高维无向图估计的巨大包,机器学习研究,2012;13:1059-1062。
  10. 邹,H.和哈斯蒂,T.正则化和变量选择通过弹性网。皇家统计学会杂志2005;2:301-320。