This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com.
When you click the Knit button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:
data1 <- read.csv("D:/R/GWAS_ALL1-1_m.csv",head=T)
data1$male <- as.factor(as.character(data1$male))
data1$nation <- as.factor(as.character(data1$nation) )
data1$hypertension <- as.factor(as.character(data1$hypertension))
data1$diabetes <- as.factor(as.character(data1$diabetes))
data1$bands <- as.factor(as.character(data1$bands))
#data1$male <- as.factor(data1$male)
library(lme4)
## 载入需要的程辑包:Matrix
# compute p value by anova----
fit_NAb <- lmer(log(NAb) ~ nation + BMI + bands + dose_inter_days +
agec + inter_S_days + male +
diabetes + hypertension + NOD + (1 | num),
data = data1
)
fit_NAb_inter_S_days <- lmer(log(NAb) ~ nation + BMI + bands + dose_inter_days +
(agec + inter_S_days + male)^2 +
diabetes + hypertension + NOD + (1 | num),
data = data1
)
anova(fit_NAb, fit_NAb_inter_S_days)
## refitting model(s) with ML (instead of REML)
## Data: data1
## Models:
## fit_NAb: log(NAb) ~ nation + BMI + bands + dose_inter_days + agec + inter_S_days + male + diabetes + hypertension + NOD + (1 | num)
## fit_NAb_inter_S_days: log(NAb) ~ nation + BMI + bands + dose_inter_days + (agec + inter_S_days + male)^2 + diabetes + hypertension + NOD + (1 | num)
## npar AIC BIC logLik deviance Chisq Df Pr(>Chisq)
## fit_NAb 17 14525 14636 -7245.4 14491
## fit_NAb_inter_S_days 24 14515 14672 -7233.4 14467 24.093 7 0.001097 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# check interaction term----
fit_NAb <- lmerTest::lmer(log(NAb) ~nation + BMI + bands + dose_inter_days +
(agec + inter_S_days + male)^2 +
diabetes + hypertension + NOD + (1 | num),
data = data1
)
summary(fit_NAb)
## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula:
## log(NAb) ~ nation + BMI + bands + dose_inter_days + (agec + inter_S_days +
## male)^2 + diabetes + hypertension + NOD + (1 | num)
## Data: data1
##
## REML criterion at convergence: 14615.5
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -7.5887 -0.4593 -0.0239 0.4570 5.1671
##
## Random effects:
## Groups Name Variance Std.Dev.
## num (Intercept) 0.2654 0.5151
## Residual 0.6668 0.8166
## Number of obs: 5264, groups: num, 4339
##
## Fixed effects:
## Estimate Std. Error df t value Pr(>|t|)
## (Intercept) 2.127e+00 1.268e-01 4.633e+03 16.772 < 2e-16 ***
## nation1 1.599e-02 3.603e-02 4.080e+03 0.444 0.65716
## BMI -1.942e-02 4.925e-03 4.245e+03 -3.943 8.18e-05 ***
## bands1 4.292e-01 3.557e-02 4.001e+03 12.066 < 2e-16 ***
## bands2 6.327e-01 3.452e-02 3.945e+03 18.331 < 2e-16 ***
## dose_inter_days 1.240e-02 1.400e-03 4.512e+03 8.861 < 2e-16 ***
## agec28-37 -6.234e-02 5.902e-02 5.019e+03 -1.056 0.29092
## agec38-47 -1.514e-01 6.882e-02 5.148e+03 -2.200 0.02784 *
## agec47+ -3.210e-01 7.333e-02 5.165e+03 -4.378 1.22e-05 ***
## inter_S_days -9.490e-03 4.979e-04 2.984e+03 -19.061 < 2e-16 ***
## male1 -1.044e-01 6.723e-02 5.242e+03 -1.553 0.12038
## diabetes1 -4.369e-01 1.622e-01 4.866e+03 -2.694 0.00709 **
## hypertension1 -9.241e-02 9.324e-02 4.670e+03 -0.991 0.32170
## NOD1 8.351e-02 9.286e-02 4.693e+03 0.899 0.36855
## NOD1+ -1.248e-01 1.846e-01 4.726e+03 -0.676 0.49895
## agec28-37:inter_S_days 1.429e-04 6.329e-04 2.853e+03 0.226 0.82133
## agec38-47:inter_S_days 4.126e-04 7.356e-04 2.939e+03 0.561 0.57494
## agec47+:inter_S_days 2.467e-03 8.151e-04 2.922e+03 3.027 0.00249 **
## agec28-37:male1 3.235e-02 8.155e-02 4.262e+03 0.397 0.69163
## agec38-47:male1 -1.410e-01 8.976e-02 4.337e+03 -1.571 0.11620
## agec47+:male1 -2.314e-01 9.719e-02 4.342e+03 -2.381 0.01732 *
## inter_S_days:male1 -1.462e-03 6.006e-04 3.308e+03 -2.434 0.01497 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation matrix not shown by default, as p = 22 > 12.
## Use print(x, correlation=TRUE) or
## vcov(x) if you need it
confint(fit_NAb, oldNames=FALSE)
## Computing profile confidence intervals ...
## 2.5 % 97.5 %
## sd_(Intercept)|num 0.4505825701 0.5675424479
## sigma 0.7806924322 0.8520583335
## (Intercept) 1.8786215288 2.3746678082
## nation1 -0.0544797602 0.0864701017
## BMI -0.0290514226 -0.0097857828
## bands1 0.3596199125 0.4987864354
## bands2 0.5651867598 0.7002431025
## dose_inter_days 0.0096666220 0.0151430768
## agec28-37 -0.1778967812 0.0531003505
## agec38-47 -0.2860339077 -0.0167817588
## agec47+ -0.4644991841 -0.1775826774
## inter_S_days -0.0104643969 -0.0085156186
## male1 -0.2359299450 0.0271558065
## diabetes1 -0.7541977263 -0.1196789476
## hypertension1 -0.2748402010 0.0899614471
## NOD1 -0.0981449083 0.2652759957
## NOD1+ -0.4859403294 0.2364556333
## agec28-37:inter_S_days -0.0010953700 0.0013865031
## agec38-47:inter_S_days -0.0010265142 0.0018530750
## agec47+:inter_S_days 0.0008727487 0.0040641902
## agec28-37:male1 -0.1271658406 0.1918758926
## agec38-47:male1 -0.3166481721 0.0345322393
## agec47+:male1 -0.4215184487 -0.0412976876
## inter_S_days:male1 -0.0026392937 -0.0002874007
plot(fit_NAb)
which( residuals(fit_NAb)< -4 )
## 1116 3472 4438
## 1114 3463 4424
which( residuals(fit_NAb)> 4 )
## 2112
## 2108
hist(residuals(fit_NAb))
# qqnorm(y = residuals(fit_NAb))
# qqline(y = residuals(fit_NAb))
#
# fit_NAb_2 <- lmerTest::lmer(log(NAb) ~nation + BMI + bands + dose_inter_days +
# (agec + inter_S_days + male)^2 +
# diabetes + hypertension + NOD + (1 | num),
# data = data1[!(residuals(fit_NAb) < -4 | residuals(fit_NAb)> 4),],
#
# )
# plot(fit_NAb_2)
# which( residuals(fit_NAb_2)< -4 )
# which( residuals(fit_NAb_2)> 4 )
## calculate effects----
library(effects)
## 载入需要的程辑包:carData
## lattice theme set by effectsTheme()
## See ?effectsTheme for details.
effect_fit_NAb <- allEffects(fit_NAb, confidence.level=.95)
effect_fit_NAb$`inter_S_days:male`
##
## inter_S_days*male effect
## male
## inter_S_days 0 1
## 1 2.3673278 2.2122161
## 52 1.9074155 1.6777331
## 100 1.4745568 1.1746903
## 150 1.0236624 0.6506873
## 200 0.5727679 0.1266844
effect_fit_NAb[["agec:male"]][["fit"]][5:8]/effect_fit_NAb[["agec:male"]][["fit"]][1:4]
## [1] 0.8946851 0.9094099 0.8062325 0.7486758
effect_fit_NAb[["agec:male"]][["upper"]][5:8]/effect_fit_NAb[["agec:male"]][["upper"]][1:4]
## [1] 0.9179000 0.9386189 0.8379834 0.7854585
effect_fit_NAb[["agec:male"]][["lower"]][5:8]/effect_fit_NAb[["agec:male"]][["lower"]][1:4]
## [1] 0.8700750 0.8782736 0.7715118 0.7077326
effect_fit_NAb$`agec:male`$confidence.level
## [1] 0.95
# marginal effect plot----
class(effect_fit_NAb)
## [1] "efflist"
plot(effect_fit_NAb)
plot(effect_fit_NAb,1)
plot(effect_fit_NAb,9)
plot(effect_fit_NAb,8)
plot(effect_fit_NAb,cex = 0.5)
# tran month to factor----
fit_NAb_mf <- lmerTest::lmer(log(NAb) ~nation + BMI + bands + dose_inter_days +
(agec + factor(inter_S_month) + male)^2 +
diabetes + hypertension + NOD + (1 | num),
data = data1
)
summary(fit_NAb_mf)
## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula:
## log(NAb) ~ nation + BMI + bands + dose_inter_days + (agec + factor(inter_S_month) +
## male)^2 + diabetes + hypertension + NOD + (1 | num)
## Data: data1
##
## REML criterion at convergence: 14478.9
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -7.4719 -0.4588 -0.0152 0.4618 4.7897
##
## Random effects:
## Groups Name Variance Std.Dev.
## num (Intercept) 0.2818 0.5309
## Residual 0.6330 0.7956
## Number of obs: 5264, groups: num, 4339
##
## Fixed effects:
## Estimate Std. Error df t value
## (Intercept) 1.875e+00 1.264e-01 4.509e+03 14.835
## nation1 1.548e-02 3.584e-02 4.037e+03 0.432
## BMI -1.947e-02 4.896e-03 4.199e+03 -3.978
## bands1 5.105e-01 3.681e-02 4.454e+03 13.870
## bands2 7.198e-01 3.606e-02 4.468e+03 19.962
## dose_inter_days 1.689e-02 1.542e-03 4.799e+03 10.952
## agec28-37 -7.588e-02 5.686e-02 5.208e+03 -1.335
## agec38-47 -2.029e-01 6.499e-02 5.164e+03 -3.122
## agec47+ -3.379e-01 6.904e-02 5.117e+03 -4.894
## factor(inter_S_month)2 -4.933e-01 9.005e-02 5.214e+03 -5.478
## factor(inter_S_month)3 -9.099e-01 6.763e-02 5.077e+03 -13.454
## factor(inter_S_month)4 -1.066e+00 5.926e-02 3.966e+03 -17.991
## factor(inter_S_month)5 -1.090e+00 9.067e-02 4.677e+03 -12.018
## factor(inter_S_month)6 -9.977e-01 1.360e-01 3.068e+03 -7.334
## factor(inter_S_month)7 -1.393e+00 4.607e-01 3.614e+03 -3.023
## male1 -1.796e-01 6.828e-02 5.119e+03 -2.631
## diabetes1 -3.926e-01 1.612e-01 4.814e+03 -2.435
## hypertension1 -3.649e-02 9.294e-02 4.622e+03 -0.393
## NOD1 7.738e-02 9.253e-02 4.643e+03 0.836
## NOD1+ -2.035e-01 1.835e-01 4.676e+03 -1.109
## agec28-37:factor(inter_S_month)2 -7.490e-02 1.348e-01 5.202e+03 -0.556
## agec38-47:factor(inter_S_month)2 1.826e-01 1.591e-01 5.213e+03 1.147
## agec47+:factor(inter_S_month)2 4.390e-02 1.544e-01 5.214e+03 0.284
## agec28-37:factor(inter_S_month)3 -4.392e-02 9.998e-02 4.943e+03 -0.439
## agec38-47:factor(inter_S_month)3 8.036e-02 1.344e-01 5.024e+03 0.598
## agec47+:factor(inter_S_month)3 -7.779e-02 1.771e-01 5.200e+03 -0.439
## agec28-37:factor(inter_S_month)4 -7.319e-02 8.380e-02 3.796e+03 -0.873
## agec38-47:factor(inter_S_month)4 -2.311e-02 9.580e-02 3.689e+03 -0.241
## agec47+:factor(inter_S_month)4 1.178e-01 1.118e-01 3.761e+03 1.053
## agec28-37:factor(inter_S_month)5 -6.004e-02 1.278e-01 4.431e+03 -0.470
## agec38-47:factor(inter_S_month)5 -4.060e-02 1.416e-01 4.058e+03 -0.287
## agec47+:factor(inter_S_month)5 5.680e-01 1.604e-01 3.863e+03 3.542
## agec28-37:factor(inter_S_month)6 -9.224e-02 1.615e-01 3.055e+03 -0.571
## agec38-47:factor(inter_S_month)6 9.848e-02 1.907e-01 3.331e+03 0.516
## agec47+:factor(inter_S_month)6 1.427e-01 2.007e-01 3.390e+03 0.711
## agec28-37:factor(inter_S_month)7 -1.463e-01 5.421e-01 4.083e+03 -0.270
## agec38-47:factor(inter_S_month)7 -6.084e-01 6.554e-01 4.738e+03 -0.928
## agec47+:factor(inter_S_month)7 -2.191e-02 1.122e+00 3.266e+03 -0.020
## agec28-37:male1 5.358e-02 8.339e-02 4.334e+03 0.643
## agec38-47:male1 -1.019e-01 9.110e-02 4.337e+03 -1.118
## agec47+:male1 -1.811e-01 9.896e-02 4.362e+03 -1.830
## factor(inter_S_month)2:male1 -4.242e-02 1.274e-01 5.205e+03 -0.333
## factor(inter_S_month)3:male1 -7.430e-03 9.641e-02 5.167e+03 -0.077
## factor(inter_S_month)4:male1 -1.953e-04 8.086e-02 4.270e+03 -0.002
## factor(inter_S_month)5:male1 -3.738e-01 1.228e-01 4.351e+03 -3.044
## factor(inter_S_month)6:male1 -1.926e-01 1.558e-01 3.571e+03 -1.237
## factor(inter_S_month)7:male1 -3.285e-02 4.657e-01 4.656e+03 -0.071
## Pr(>|t|)
## (Intercept) < 2e-16 ***
## nation1 0.665778
## BMI 7.07e-05 ***
## bands1 < 2e-16 ***
## bands2 < 2e-16 ***
## dose_inter_days < 2e-16 ***
## agec28-37 0.182072
## agec38-47 0.001806 **
## agec47+ 1.02e-06 ***
## factor(inter_S_month)2 4.50e-08 ***
## factor(inter_S_month)3 < 2e-16 ***
## factor(inter_S_month)4 < 2e-16 ***
## factor(inter_S_month)5 < 2e-16 ***
## factor(inter_S_month)6 2.83e-13 ***
## factor(inter_S_month)7 0.002522 **
## male1 0.008544 **
## diabetes1 0.014909 *
## hypertension1 0.694634
## NOD1 0.403077
## NOD1+ 0.267353
## agec28-37:factor(inter_S_month)2 0.578415
## agec38-47:factor(inter_S_month)2 0.251343
## agec47+:factor(inter_S_month)2 0.776202
## agec28-37:factor(inter_S_month)3 0.660465
## agec38-47:factor(inter_S_month)3 0.549941
## agec47+:factor(inter_S_month)3 0.660499
## agec28-37:factor(inter_S_month)4 0.382513
## agec38-47:factor(inter_S_month)4 0.809387
## agec47+:factor(inter_S_month)4 0.292487
## agec28-37:factor(inter_S_month)5 0.638421
## agec38-47:factor(inter_S_month)5 0.774347
## agec47+:factor(inter_S_month)5 0.000402 ***
## agec28-37:factor(inter_S_month)6 0.567839
## agec38-47:factor(inter_S_month)6 0.605669
## agec47+:factor(inter_S_month)6 0.477281
## agec28-37:factor(inter_S_month)7 0.787269
## agec38-47:factor(inter_S_month)7 0.353306
## agec47+:factor(inter_S_month)7 0.984424
## agec28-37:male1 0.520539
## agec38-47:male1 0.263574
## agec47+:male1 0.067256 .
## factor(inter_S_month)2:male1 0.739137
## factor(inter_S_month)3:male1 0.938574
## factor(inter_S_month)4:male1 0.998073
## factor(inter_S_month)5:male1 0.002346 **
## factor(inter_S_month)6:male1 0.216323
## factor(inter_S_month)7:male1 0.943758
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation matrix not shown by default, as p = 47 > 12.
## Use print(x, correlation=TRUE) or
## vcov(x) if you need it
# use inter_S_month to fit lmer----
fit_NAb_m <- lmerTest::lmer(log(NAb) ~nation + BMI + bands + dose_inter_days +
(agec + inter_S_month + male)^2 +
diabetes + hypertension + NOD + (1 | num),
data = data1
)
summary(fit_NAb_m)
## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula:
## log(NAb) ~ nation + BMI + bands + dose_inter_days + (agec + inter_S_month +
## male)^2 + diabetes + hypertension + NOD + (1 | num)
## Data: data1
##
## REML criterion at convergence: 14595.3
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -7.4947 -0.4628 -0.0249 0.4595 5.1901
##
## Random effects:
## Groups Name Variance Std.Dev.
## num (Intercept) 0.2806 0.5297
## Residual 0.6557 0.8097
## Number of obs: 5264, groups: num, 4339
##
## Fixed effects:
## Estimate Std. Error df t value Pr(>|t|)
## (Intercept) 2.279e+00 1.297e-01 4.749e+03 17.573 < 2e-16 ***
## nation1 1.728e-02 3.617e-02 4.073e+03 0.478 0.632915
## BMI -1.951e-02 4.943e-03 4.235e+03 -3.948 8.01e-05 ***
## bands1 4.194e-01 3.574e-02 4.001e+03 11.736 < 2e-16 ***
## bands2 6.151e-01 3.471e-02 3.954e+03 17.720 < 2e-16 ***
## dose_inter_days 1.223e-02 1.404e-03 4.497e+03 8.712 < 2e-16 ***
## agec28-37 -6.023e-02 6.620e-02 4.703e+03 -0.910 0.363032
## agec38-47 -1.521e-01 7.678e-02 4.864e+03 -1.980 0.047708 *
## agec47+ -3.721e-01 8.111e-02 4.908e+03 -4.588 4.58e-06 ***
## inter_S_month -2.866e-01 1.515e-02 3.078e+03 -18.926 < 2e-16 ***
## male1 -7.604e-02 7.268e-02 5.184e+03 -1.046 0.295530
## diabetes1 -4.235e-01 1.626e-01 4.845e+03 -2.604 0.009237 **
## hypertension1 -9.408e-02 9.352e-02 4.653e+03 -1.006 0.314502
## NOD1 7.619e-02 9.315e-02 4.676e+03 0.818 0.413443
## NOD1+ -1.341e-01 1.852e-01 4.708e+03 -0.724 0.469129
## agec28-37:inter_S_month 4.820e-03 1.920e-02 2.924e+03 0.251 0.801822
## agec38-47:inter_S_month 1.240e-02 2.227e-02 2.960e+03 0.557 0.577755
## agec47+:inter_S_month 8.089e-02 2.454e-02 2.976e+03 3.297 0.000988 ***
## agec28-37:male1 3.392e-02 8.181e-02 4.250e+03 0.415 0.678451
## agec38-47:male1 -1.402e-01 9.004e-02 4.324e+03 -1.557 0.119587
## agec47+:male1 -2.230e-01 9.752e-02 4.330e+03 -2.287 0.022270 *
## inter_S_month:male1 -4.712e-02 1.825e-02 3.316e+03 -2.583 0.009850 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation matrix not shown by default, as p = 22 > 12.
## Use print(x, correlation=TRUE) or
## vcov(x) if you need it
## calculate effects----
effect_fit_NAb_m <- allEffects(fit_NAb_m, confidence.level=.95)
#age vs log NAb
# ggplot(data1,aes(x = inter_S_month, y = log(NAb),color = agec))+
# geom_point()+
# geom_jitter()
# calculate mean by month and agec----
library(dplyr)
##
## 载入程辑包:'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
NAb_summ_by_month <- data1 %>%
group_by(inter_S_month,agec) %>%
summarise(mean_NAb = mean(log(NAb)),
se_NAb = sd(log(NAb))/sqrt(n()))# %>%
## `summarise()` has grouped output by 'inter_S_month'. You can override using the `.groups` argument.
#mutate(inter_S_days = rep(15+(0:6)*30,each = 4))
NAb_summ_by_month$inter_S_days <- rep(15+(0:6)*30,each = 4)
# ggplot on mean by month and agec----
library(tidyverse)
## -- Attaching packages --------------------------------------- tidyverse 1.3.1 --
## v ggplot2 3.3.5 v purrr 0.3.4
## v tibble 3.1.6 v stringr 1.4.0
## v tidyr 1.1.4 v forcats 0.5.1
## v readr 2.1.1
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x tidyr::expand() masks Matrix::expand()
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
## x tidyr::pack() masks Matrix::pack()
## x tidyr::unpack() masks Matrix::unpack()
ggplot(data1,aes(x = inter_S_days, y = log(NAb),color = agec))+
geom_point(alpha = 0.2)+
geom_errorbar(data = NAb_summ_by_month,
aes( y = mean_NAb,
ymin = mean_NAb - se_NAb,
ymax = mean_NAb + se_NAb,
),width=1,size = 1)+
geom_line(data = NAb_summ_by_month,
aes( y = mean_NAb),size = 1)+
theme_classic()