高维多元中介分析:另外8种方法

三、具有主中介方向的高维多元中介分析(HDMM)

方法学介绍

具有主中介方向的高维多元中介分析

统计学介绍

用基于似然的方法来计算中介主方向 (“principal directions of mediation” ,PDM),它是加载权重,用于线性组合输入的中介以形成单个潜在变量,以替换分析中的原始中介。虽然 HDMM 不能用于估计全局中介效应或特定中介的贡献,但它仍然可以用于推断是否存在通过作为联合系统的中介集合发生的中介。

实现方法

安包准备

# github上面install :oliverychen/PDM
devtools::install_github("oliverychen/PDM")
library(PDM)
library(hdmed)

 数据准备

A <- as.numeric(scale(med_dat$A)) # 自变量
M <- scale(med_dat$M[,1:8])  # 中介变量
Y <- as.numeric(scale(med_dat$Y)) # 因变量

length(A)
# [1] 100

dim(M)
# [1] 100   8

length(Y)
# [1] 100

 数据分析

out <- mediate_hdmm(A, M, Y, sims = 5, tol = 10^-3, imax = 50) 
out$effects
#    effect            estimate                 se            cl_2.5%            cl_97.5%  pv
# 1 indirect -0.0292158306393181 0.0388584561221389 -0.113378140170103 -0.0181830004145014   0
# 2   direct -0.0792472332930544 0.0710789279979753 -0.154692009000753  0.0137757439736125 0.4
# 3    total  -0.108463063932373 0.0580763265937638 -0.227792231700035 -0.0855004067324092   0

方法学参考文献

GitHub - oliverychen/PDM: Principal Direction of Mediation

四、高维线性中介分析(HILMA)

方法学介绍

适用于存在高维中介和一个或多个曝光时的中介设置。该函数返回直接效应、总效应和全局中介效应的估计值,最后一个效应用报告的 p 值检验统计显着性。

实现方法


# hilma  -------------------------------------------------------------------
A <- med_dat$A 
length(A)
# [1] 100
M <- med_dat$M 
dim(M)
# [1] 100  20

Y <- med_dat$Y # Implement HILMA with one exposure 
length(Y)
# [1] 100
out <- mediate_hilma(A, M, Y) 
out$a1
#    effect            estimate                pv[p 值]     lambda
# 1 indirect -0.0935703094152316 0.238824634116271 0.05769395
# 2   direct                   0              <NA> 0.05769395
# 3    total -0.0935703094152316              <NA> 0.05769395

五、高维中介分析(HIMA)

方法学介绍

HIMA 的第一步是执行确定的独立性筛选 (SIS),以根据线性回归的 p 值选择与结果(当 Y 连续时)或暴露(当 Y 为二元时)最相关的 n_include 中介变量。第二步是用极小极大凹惩罚来拟合剩余调解者的结果模型。然后,HIMA 使用线性回归来拟合那些在 SIS(步骤 1)中幸存并被 MCP(步骤 2)选择的中介之间的线性回归模型,从而能够估计中介贡献。通过将这些贡献相加来估计全球间接影响,并通过从总影响的估计值中减去全球间接影响来估计直接影响。我们通过取 αa 和 βm p 值中的最大值来计算中介贡献的 p 值,其中 beta p 值是通过仅包含 MCP 选择的中介的第二个未受惩罚的广义线性模型获得的。我们包含此 p 值计算,以便我们的函数复制 HIMA 包(我们的函数所基于的函数)中 HIMA 函数的行为,但我们警告说,由于双底,β p 值可能过于乐观,因为在未惩罚模型中测试的中介者只是惩罚模型选择的中介者。另请注意,HIMA 作者对最终的最大 p 值应用了 Bonferroni 校正,以考虑多重测试,我们选择将其留给用户。

A <- med_dat$A 
M <- med_dat$M 
Y <- med_dat$Y # Fit hima with continuous outcome 
out <- mediate_hima(A, M, Y) 
head(out$contributions) 
out$effects # Fit hima with binary outcome 
Y1 <- as.numeric(Y > mean(Y)) 
out1 <- mediate_hima(A, M, Y1, binary_y = TRUE) 
head(out1$contributions) 
out1$contributions
out1$effects

高维中介数据【R语言中介分析】:应用确定独立筛选SIS,极小极大凹惩罚技术,dblasso-CSDN博客

六、潜在变量中介分析 (LVMA)

 Derkach 等人描述的高维中介模型(2019)其中少量潜在的、未测量的中介取代了模型中的原始中介。

方法介绍

LVMA 是一种潜在变量中介模型,与标准假设相反,它假设输入的一组候选中介不会通过自身暴露影响结果,而是作为潜在的、未测量的中介的结果而发生,这些中介本身传递来自对结果的暴露。拟合该模型所需的参数是 rhoLE,它是潜在介体对输入介体影响的正则化参数; rhoEL,暴露对潜在介体影响的正则化参数; rhoLY,潜在介体对暴露影响的正则化参数。理想情况下,这些参数应由用户作为向量提供,以便在估计中可以尝试这三个参数的每种组合。然而,这可能会耗费大量的计算成本,为了简单起见,我们的默认值是长度为 4 的向量,对应于 64 x 64 参数网格。在实践中,Derkach 等人。使用更大的网格,其中包含 5 个 rhoLM 值(范围从 6 到 8.5)、40 个 rhoEY 值(范围从 0 到 40)和 40 个 rhoLY 值(范围从 0 到 75)。提供更长的参数向量使得拟合更加灵活,但计算成本更高,并且为了在真实数据上可靠地实现 LVMA,我们应该使用更大的参数网格并在远程计算集群上进行并行计算

# lvma  -------------------------------------------------------------------
A <- med_dat$A 
M <- med_dat$M 
Y <- med_dat$Y
out <- mediate_lvma(A, M, Y, q = 4, rhoLM = 2, rhoEL = 2, rhoLY = 2, imax = 50) 

table(out$EBIC_out$mediator_active)
# > table(out$EBIC_out$mediator_active)
# 0  1 
# 9 11 
# > out$BIC_out$mediator_active
# m1  m2  m3  m4  m5  m6  m7  m8  m9 m10 m11 m12 m13 m14 m15 m16 m17 m18 m19 m20 
# 0   0   1   0   1   1   1   1   1   1   1   0   0   1   1   0   0   1   0   0 
# > out$AIC_out$mediator_active
# m1  m2  m3  m4  m5  m6  m7  m8  m9 m10 m11 m12 m13 m14 m15 m16 m17 m18 m19 m20 
# 0   0   1   0   1   1   1   1   1   1   1   0   0   1   1   0   0   1   0   0 
# > out$EBIC_out$mediator_active
# m1  m2  m3  m4  m5  m6  m7  m8  m9 m10 m11 m12 m13 m14 m15 m16 m17 m18 m19 m20 
# 0   0   1   0   1   1   1   1   1   1   1   0   0   1   1   0   0   1   0   0 

方法介绍

LVMA 是一种潜在变量中介模型,与标准假设相反,它假设输入的一组候选中介不会通过自身暴露影响结果,而是作为潜在的、未测量的中介的结果而发生,这些中介本身传递来自对结果的暴露。拟合该模型所需的参数是 rhoLE,它是潜在介体对输入介体影响的正则化参数; rhoEL,暴露对潜在介体影响的正则化参数; rhoLY,潜在介体对暴露影响的正则化参数。理想情况下,这些参数应由用户作为向量提供,以便在估计中可以尝试这三个参数的每种组合。然而,这可能会耗费大量的计算成本,为了简单起见,我们的默认值是长度为 4 的向量,对应于 64 x 64 参数网格。在实践中,Derkach 等人。使用更大的网格,其中包含 5 个 rhoLM 值(范围从 6 到 8.5)、40 个 rhoEY 值(范围从 0 到 40)和 40 个 rhoLY 值(范围从 0 到 75)。提供更长的参数向量使得拟合更加灵活,但计算成本更高,并且为了在真实数据上可靠地实现 LVMA,我们应该使用更大的参数网格并在远程计算集群上进行并行计算。

A <- med_dat$A 
M <- med_dat$M 
Y <- med_dat$Y
out <- mediate_lvma(A, M, Y, q = 4, rhoLM = 2, rhoEL = 2, rhoLY = 2, imax = 50) 
table(out$EBIC_out$mediator_active)

七、固定效应模型的中介 (MedFix)

方法学介绍

🔤当存在多个中介时,MedFix 通过将自适应 LASSO 应用于结果模型来执行中介分析。为了拟合自适应 LASSO,首先根据提供的 nlambda2 使用 LASSO(部署 L1 惩罚)或弹性网络(部署 L1 和 L2 惩罚)获得初始模型拟合。然后使用该拟合的估计值来计算自适应 LASSO 中使用的自适应权重。一旦获得结果模型的最终自适应 LASSO 估计值 (βm),就可以通过线性回归获得 p 个中介模型的估计值 (αa)。中介贡献计算为 αa 乘以 βm,p 值取 αa 和 betam p 值中的最大值。最后,通过对中介贡献求和来估计全局间接效应,并通过从总效应估计中减去全局间接效应来估计直接效应。此功能专门针对仅一个暴露的特殊情况应用MedFix;高维暴露时如何应用 MedFix 的详细信息,请参阅下面

Zhang, Q. High-Dimensional Mediation Analysis with Applications to Causal Gene Identification. Stat. Biosci. 14, 432-451 (2021).

实现方法

# medfix  -------------------------------------------------------------------
A <- med_dat$A 
M <- med_dat$M 
dim(M)
Y <- med_dat$Y
out <- mediate_medfix(A, M, Y, nlambda = 10, nlambda2 = 5, seed = 1) 
out$effects 
# > out$effects 
# effect    estimate
# 1 indirect -0.09036111
# 2   direct -0.06480058
# 3    total -0.15516169
head(out$contributions)
# > head(out$contributions)
# mediator      beta      beta_pv       alpha     alpha_pv      ab_pv         te
# 1       m1 0.0000000 1.000000e+00 -0.08696004 0.4513534695 1.00000000 -0.1551617
# 2       m2 0.0000000 1.000000e+00  0.15938983 0.1564707786 1.00000000 -0.1551617
# 3       m3 0.5639916 1.135222e-06 -0.27373833 0.0143888745 0.01438887 -0.1551617
# 4       m4 0.0000000 1.000000e+00 -0.07740115 0.5545071653 1.00000000 -0.1551617
# 5       m5 0.0000000 1.000000e+00  0.13271536 0.2293816786 1.00000000 -0.1551617
# 6       m6 0.0000000 1.000000e+00  0.51063076 0.0000932577 1.00000000 -0.1551617

八、路径LASSO (PLasso)

方法介绍

路径 LASSO 适合高维中介模型,该模型有可能直接惩罚中介结果效应、暴露中介效应和中介贡献(即中介“路径”)。模型的收缩由三个参数(phi、omega 和 lambda)决定,值越高,稀疏度越高。为输入的 lambda 参数中的每个唯一值返回中介结果,按升序排列,可能排除任何估计不成功的值。有关确切可能性的详细信息,请参阅第一个参考文献。当实现多个 lambda 时(即使用 lambda 的默认参数或指定自己的向量),可以选择使用 Sun 等人提出的变量选择稳定性标准来执行调整参数选择。 (2013),它选择在重复数据分割中变量选择最稳定的参数。然而,实现这一点的计算成本可能很高,尤其是在调整参数很长的情况下,因为它涉及多次重新拟合路径 LASSO。

 实现方法

A <- med_dat$A 
M <- med_dat$M[,1:8] 
Y <- med_dat$Y # fit pathway LASSO for two tuning parameters and retrieve their fits 
out <- mediate_plasso(A, M, Y, lambdas = c(10^-3, 10^-2), tol = 1e-4) 
head(out$all_fits$lambda1) 
# > head(out$all_fits$lambda1)
# mediator lambda       alpha        beta   alpha_beta direct_effect global_indirect_effect total_effect
# 1       m1  0.001 -0.08538890  0.06879627 -0.005874438    -0.1170353            -0.03677569    -0.153811
# 2       m2  0.001  0.15747111  0.16259135  0.025603441    -0.1170353            -0.03677569    -0.153811
# 3       m3  0.001 -0.27096184  0.59884265 -0.162263506    -0.1170353            -0.03677569    -0.153811
# 4       m4  0.001 -0.07573665 -0.03467870  0.002626448    -0.1170353            -0.03677569    -0.153811
# 5       m5  0.001  0.13099842 -0.08499814 -0.011134622    -0.1170353            -0.03677569    -0.153811
# 6       m6  0.001  0.50713449  0.05597966  0.028389215    -0.1170353            -0.03677569    -0.153811
head(out$all_fits$lambda2)
# > head(out$all_fits$lambda2)
# mediator lambda       alpha        beta    alpha_beta direct_effect global_indirect_effect total_effect
# 1       m1   0.01 -0.07208636  0.04618786 -0.0033295148    -0.1023375            -0.04236452   -0.1447021
# 2       m2   0.01  0.14117370  0.13962054  0.0197107473    -0.1023375            -0.04236452   -0.1447021
# 3       m3   0.01 -0.24738357  0.56526582 -0.1398374752    -0.1023375            -0.04236452   -0.1447021
# 4       m4   0.01 -0.06164371 -0.01609815  0.0009923494    -0.1023375            -0.04236452   -0.1447021
# 5       m5   0.01  0.11645276 -0.05892182 -0.0068616088    -0.1023375            -0.04236452   -0.1447021
# 6       m6   0.01  0.47737524  0.03118247  0.0148857390    -0.1023375            -0.04236452   -0.1447021

九、主成分中介分析(PCMA)

方法介绍

主成分中介分析(PCMA)是一种在中介变量为高维时估计中介效应的方法。第一步是计算中介模型的残差 (M |A),然后对这些残差执行 PCA,以将其减少到有效解释残差方差的较少数量的中介。然后,由于这些中介者在 A 上是线性独立的,因此可以轻松地为每台 PC 单独执行单中介者中介分析,在本例中通过使用 mediation::mediate() 函数。全局中介效应是通过对各个 PC 的中介效应求和来估计的。

 实现方法

# pcma  -------------------------------------------------------------------
A <- med_dat$A 
M <- med_dat$M 
Y <- med_dat$Y   # 将PCMA与3个主组件匹配并打印效果。在实践中,一个应该选择n_pc(或var_per),数值sim要更大

out <- mediate_pcma(A, M, Y, n_pc = 3, sims = 10) 
out$effects
#    effect           estimate                 se            cl_2.5%             cl_97.5%                 pv
# 1 indirect 0.0567090040693664 0.0675703966275973 0.0981988725806459   0.0505014689346311  0.401324478819375
# 2   direct -0.211870690922244  0.126353600707819 -0.365396779855835 -0.00838761623961986 0.0935800910334746
# 3    total -0.155161686852878  0.109515633451985 -0.389273023540788   -0.131296890732074                0.2

十、稀疏主成分中介分析(SPCMA)

方法介绍

mediate_spcma 执行主成分中介分析,与 mediate_pcma 相当,但修改为通过灵活的 LASSO 惩罚来稀疏 PC 负载。潜力使 PC 更具可解释性,因为与 PCA 不同,它们只是中介子集而不是全部中介子集的线性组合。 LASSO 惩罚的选择由融合参数决定 - 当设置为 TRUE 时,会部署融合 LASSO 惩罚,鼓励模型给予连续调解者类似的负载。默认为 fused = FALSE,并且使用标准 LASSO 惩罚而不是融合惩罚。一旦计算出稀疏 PC,推理就会像 PCMA 一样进行,并且 PC 中介器将使用中介包中的方法进行评估。

实现方法

# pmed  -------------------------------------------------------------------
A <- med_dat$A
M <- med_dat$M
Y <- med_dat$Y
# 使用融合的 LASSO 惩罚来拟合 SPCMA,同时根据它们解释的方差选择 PC 的数量。实际上,var_per 和 sims 应该更高
out <- mediate_spcma(A, M, Y, var_per = 0.25, fused = TRUE, gamma = 2, sims = 10)
out$effects
#  effect           estimate                se             cl_2.5%            cl_97.5%                pv
# 1 indirect  0.030904603811524 0.068034369166792 -0.0815790248478363  0.0666125042988526 0.649648987818265
# 2   direct -0.186066290664402 0.131078014960723  -0.404978648165822 -0.0118006936491789 0.155750966634466
# 3    total -0.155161686852878 0.109515633451985  -0.389273023540788  -0.131296890732074               0.2

最近更新

  1. TCP协议是安全的吗?

    2024-03-10 11:40:06       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-10 11:40:06       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-10 11:40:06       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-10 11:40:06       18 阅读

热门阅读

  1. C++设计模式-设计模式简述

    2024-03-10 11:40:06       22 阅读
  2. 10个与TensorFlow相关的练习题及答案

    2024-03-10 11:40:06       20 阅读
  3. 各种测试用例、测试难点

    2024-03-10 11:40:06       20 阅读
  4. Rust的Linfa和Polars库进行机器学习

    2024-03-10 11:40:06       24 阅读
  5. 数据结构---C语言版 408 2019-41题代码版

    2024-03-10 11:40:06       22 阅读
  6. vue 下拉选择框点击外部关掉下拉弹框

    2024-03-10 11:40:06       26 阅读
  7. 2024 年 React学习笔记(一)

    2024-03-10 11:40:06       21 阅读
  8. 通过phpoffice将word与excel文件转成PDF文件

    2024-03-10 11:40:06       19 阅读
  9. 在GitLab Python库中,mr.changes()和mr.diffs()的区别

    2024-03-10 11:40:06       22 阅读