非线性孟德尔随机化---实践nlmr包

2022-12-27  本文已影响0人  张旭的医学大数据

有何AI与医学:孟德尔随机化准备从大家问题多地方以及简单介绍写起来,然后补全整个分析流程!欢迎转发关注哦!

之前的文章介绍了非线性孟德随机化的基本原理,以及多基因风险得分的计算(GRS),今天来介绍使用nlmr-R包完成非线孟德尔随机化分析。

nlmr包实践

1#library(devtools)

2#install_github("jrs95/nlmr")

3library(nlmr)

4### IV (g), exposure (x) & outcome (y)

5epsx <- rexp(10000)#生成10000个均值为1的指数分布随机数

6u <- runif(10000, 0, 1)#最小0最大1

7g <- rbinom(10000, 2, 0.3)#0 1 2对应三个基因型

8epsy <- rnorm(10000)#均值为0方差为1

9ag <- 0.25

10x <- 1 + ag * g + u + epsx#这里可以找最行的GRS算

11y <- 0.15 * x^2 + 0.8 * u + epsy#这里直接是我们对应的结果,疾病就二分类就行,family对应binomial

12

13### Covariates (c)

14c1 = rnorm(10000)#模拟连续协变量,例如年龄

15c2 = rnorm(10000)#同上

16c3 = rbinom(10000, 2, 0.33)#模拟离散协变量,例如吸烟

17c = data.frame(c1 = c1, c2 = c2, c3 = as.factor(c3))

18

19### Analyses

20#通过使用回归将分数多项式模型拟合到局部平均因果效应来进行工具变量分析,光滑曲线。

21#y结局x暴露g基因型c协变量举证,family方法,q分段数,d拟合次数次1或者2默认1不重要,ci置信区间

22fp = fracpoly_mr(y, x, g, c, family ="gaussian", q = 10, d ="both", ci ="model_se", fig = TRUE)

23summary(fp)

24#分段节点式

25plm = piecewise_mr(y, x, g, c, family ="gaussian", q = 10, nboot = 50, fig = TRUE)

26summary(plm)

markdown结果

1#library(devtools)

2#install_github("jrs95/nlmr")

3library(nlmr)

4### IV (g), exposure (x) & outcome (y)

5epsx <- rexp(10000)

6u <- runif(10000, 0, 1)

7g <- rbinom(10000, 2, 0.3)

8epsy <- rnorm(10000)

9ag <- 0.25

10x <- 1 + ag * g + u + epsx

11y <- 0.15 * x^2 + 0.8 * u + epsy

12

13#

## Covariates (c)

14c1 = rnorm(10000)

15c2 = rnorm(10000)

16c3 = rbinom(10000, 2, 0.33)

17c = data.frame(c1 = c1, c2 = c2, c3 = as.factor(c3))

18

19#

## Analyses

20fp = fracpoly_mr(y, x, g, c, family = "gaussian", q = 10, d = "both", ci = "model_se", fig = TRUE)

21summary(fp)

22## Call: fracpoly_mr

23## 

24## Number of individuals: 10000; Quantiles: 10; 95%CI: Model based SEs

25## 

26## Powers: 2

27## 

28## Coefficients:

29##   Estimate Std. Error 95%CI Lower 95%CI Upper   p.value    

30## 2 0.144987   0.012498    0.120491      0.1695 < 2.2e-16 ***

31## ---

32## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

33## 

34## Non-linearity tests

35## Fractional polynomial degree p-value: 0.924

36## Fractional polynomial non-linearity p-value: 0.000535

37## Quadratic p-value: 0.000532

38## Cochran Q p-value: 0.103

39## 

40## Heterogeneity tests

41## Cochran Q p-value: 0.937

42## Trend p-value: 0.215

43

44plm = piecewise_mr(y, x, g, c, family = "gaussian", q = 10, nboot = 50, fig = TRUE)

45summary(plm)

46## Call: piecewise_mr

47## 

48## Number of individuals: 10000; Quantiles: 10; Number of bootstrap replications: 50

49## 

50## LACE:

51##     Estimate Std. Error 95%CI Lower 95%CI Upper   p.value    

52## 1   0.370222   0.194433   -0.010866      0.7513 0.0568951 .  

53## 2   0.324060   0.194220   -0.056611      0.7047 0.0952126 .  

54## 3   0.728189   0.196023    0.343984      1.1124 0.0002034 ***

55## 4   0.674931   0.191170    0.300237      1.0496 0.0004147 ***

56## 5   0.767218   0.207506    0.360507      1.1739 0.0002179 ***

57## 6   0.766719   0.191298    0.391775      1.1417 6.124e-05 ***

58## 7   0.673263   0.190727    0.299438      1.0471 0.0004156 ***

59## 8   0.888327   0.199124    0.498044      1.2786 8.151e-06 ***

60## 9   1.096948   0.196101    0.712590      1.4813 2.222e-08 ***

61## 10  1.389435   0.416601    0.572897      2.2060 0.0008525 ***

62## ---

63## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

64## 

65## Non-linearity tests

66## Quadratic p-value: 0.000532

67## Cochran Q p-value: 0.103

68## 

69## Heterogeneity tests

70## Cochran Q p-value: 0.937

71## Trend p-value: 0.215

上一篇下一篇

猜你喜欢

热点阅读