可以与BKMR包联用,估计环境混合物的影响及环境化学物暴露间的交互作用,BKMR包可探讨化学物间交互作用,但无法提供交互作用的PIP值,NLinteracton包可弥补这一缺陷。

安装

library(devtools)
install_github(repo = "jantonelli111/NLinteraction")
library(NLinteraction)

构建模拟数据集

n = 100
p = 10
pc = 1X = matrix(rnorm(n*p), n, p)C = matrix(rnorm(n*pc), nrow=n)TrueH = function(X) {return(1.5*(X[,2]*X[,3]) - 1.6*(X[,4]^2 * X[,5]))
}Y = 5 + C + TrueH(X) + rnorm(n)

数据集中有10种暴露,一个协变量及结局变量,X与Y为非线性。

MCMC方程

接下来构建模型,首先确定模型中自由度,这里选了自由度为2和3(模型中的ns参数),nlter为MCMC迭代次数,其他参数也可以改变,建议用标准参数除非有强烈的先验信息及完全知道数据的先验分布 。

NLmod2 = NLint(Y=Y, X=X, C=C, nIter=10000, nBurn=5000, thin=5, nChains=2, ns=2)
NLmod3 = NLint(Y=Y, X=X, C=C, nIter=10000, nBurn=5000, thin=5, nChains=2, ns=3)

如果C或者X是数据库的话,需要转换为矩阵:

NLmod2 = NLint(Y=Y, X=as.matrix(X), C=as.matrix(C), nIter=10000, nBurn=5000, thin=5, nChains=2, ns=2)

比较模型的WAIC

print(c(NLmod2$waic,NLmod3$waic))

自由度为2时WAIC最小,推荐比较自由度为1-5是WAIC的值,这里只展示了2和3。现在选择NLmod2为最终选择的model.

NLmod = NLmod2

Posterior inclusion probabilities

计算PIP值

NLmod$MainPIP

可视化

barplot(NLmod$MainPIP)

二阶交互作用的PIP值

NLmod$InteractionPIP

可视化

plotInt(NLmod = NLmod)

可计算任意化学物间交互作用

InteractionProb(NLmod=NLmod, Xsub=c(4,5,9))

X4,X5与X9的交互作用的PIP值为0。该方程可用于计算任意交互作用。

可视化暴露响应曲线

以下为X4与X5的交互作用的示例,我们将在X5的不同水平上绘制X4与结局的关联。

par(mfrow=c(1,3), pty='s')
plotSurface1d(NLmod = NLmod, X=X, C=C, j1=4, j2=5,gridLength=30, quantile_j2=0.2, quantile_rest = 0.5,xlab="X4", ylab="Posterior predictive distribution",main="20th quantile of X5")
plotSurface1d(NLmod = NLmod, X=X, C=C, j1=4, j2=5,gridLength=30, quantile_j2=0.5, quantile_rest = 0.5,xlab="X4", ylab="Posterior predictive distribution",main="50th quantile of X5")
plotSurface1d(NLmod = NLmod, X=X, C=C, j1=4, j2=5,gridLength=30, quantile_j2=0.8, quantile_rest = 0.5,xlab="X4", ylab="Posterior predictive distribution",main="80th quantile of X5")

我们看到,曲线在X5的不同水平时看起来截然不同,因为它们之间具有很强的交互作用。

References

GitHub - jantonelli111/NLinteraction: R package to implement nonlinear, interaction models with variable selection

Joseph Antonelli, Maitreyi Mazumdar, David Bellinger, David C. Christiani, Robert Wright, Brent A. Coull. Estimating the health effects of environmental mixtures using Bayesian semiparametric regression and sparsity inducing priors. 2019. The Annals of Applied Statistics. To appear.

NLinteraction包的使用相关推荐

  1. Linux常用命令全集

    Table Of Contents 1. Linux常用命令全集.CHM 9 1.1 备份压缩 9 1.1.1 ar 9 1.1.2 bunzip2 11 1.1.3 bzip2 12 1.1.4 b ...

  2. IDEA设置单个文件、单个包、单个项目的编码格式

    IDEA设置单个文件.单个包.单个项目的编码格式 File-> Settings-> File Enclodings 选择编码格式,确定即可. 注意:此处的编码格式设定以后,该包已经存在的 ...

  3. JPA不同包下同类名查询出错

    不同包下同类名查询出错 异常现象:使用JPA进行查询时,JPA的实体类映射到了另外一个包下的同名类,由于两个同名类中字段名和字段数不相同,所以会出现种种查询错误. 原因及对策:这里应该是jpa实体类默 ...

  4. 手动将web项目的class文件打成jar包,手动打jar包,java -cvf,IDE打包底层指令

    手动将web项目的class文件打成jar包. 我们的项目在使用IDE进行编译后,在项目的target目录下将会生成class文件.我们可以将class文件打成jar包. 使用的到命令为: 在targ ...

  5. 将jar包部署在docker上,将jar包打成镜像,使用docker部署jar包

    假设你已经准备好以下东西,即可进行服务部署 一台安装好docker的linux服务器(安装docker见安装docker) 准备好的jar包 接下来开始吧! 将jar包上传至服务器(建好文件夹存放以方 ...

  6. jar包升级部署到服务器详细流程,将服务部署在linux中

    假设你已经准备好以下东西,即可进行服务部署 一台服务器(云服务器或虚拟机皆可) 已安装好的jdk 1.8 + 的环境(可自行百度) 打好的jar包(maven打jar包) 1. 在服务器中新建好你的项 ...

  7. jar包部署shell脚本编写,在服务器上部署jar包,在Linux服务器上部署服务,设置编码格式,设置内存管理

    准备步骤: 1.安装java环境,知道java安装目录 2.将jar包拖放或发送至服务器中(目录自定义) 一.编写shell脚本,将以下代码放在shell脚本中,将shell脚本放在jar包同级目录下 ...

  8. 手动将jar包导入pom依赖,让jar包适配本地maven项目

    前言: Oracle对maven很久没有更新依赖,虽然19年更新了一版,但pom引入一直有错误. 我用的是oralce 12的依赖,虽然有jar包,但是依赖和pom没有适配,项目打包的时候还要去中央仓 ...

  9. 将Eclipse中Web项目打成war包

    将Eclipse中Web项目打成war包 请按如下操作即可:

最新文章

  1. 最终一致性,一致只会迟到,但绝不会缺席
  2. Pwnium CTF2014 – MatterOfCombination writeup
  3. RIP协议无法适应网络环境
  4. Android 源码查看和解析
  5. java数组二分查找的简单例题_Java基础-练习 数组元素二分查找(折半查找)
  6. Counterfeit Dollar
  7. sqlserver安装检测不通过 (重新启动失败)
  8. formidable处理提交的表单或文件的简单介绍
  9. JS中遍历数组的两种方式
  10. rhq监控软件_RHQ指标的WildFly子系统
  11. win10安装RabbitMQ
  12. React 第十二章 React思想
  13. 转:基于Spark的电影推荐系统(包含爬虫项目、web网站、后台管理系统以及spark推荐系统)
  14. PropertyUtils与BeanUtils区别
  15. ESXi OEM版本下载地址
  16. x86汇编游戏——2048
  17. 【浪漫程序员系列】情人节给女友写代码表达爱意,让她感动到哭
  18. java 法定节假日_【java】如何获得每年的法定节假日期以及全年的日历
  19. 如何利用IP地址开展金融反欺诈?
  20. .NET高级工程师面试题之SQL篇

热门文章

  1. 2022-2-18 两地调度
  2. 3款App,让你买菜不用愁,送给贤妻的你
  3. 2021-07-03Leertcode111.二叉树的最小深度
  4. 小米携手联芯 是为了下多大一盘棋?
  5. Error: 17172, Severity: 16 SNIInitialize() failed with error 0x2.
  6. Python自动发邮件总结及说明
  7. python批处理工具_python调用HEG工具批量处理MODIS数据的方法及注意事项
  8. matlab的mcr问题,使用matlab时遇到的一些异常
  9. php 提取英文,PHP实现提取中英文首字母的方法
  10. linux蓝牙麦克风,Linux下蓝牙立体声配置(A2DP profile)