你的位置:ai换脸 在线 > jiuse >

巨臀 R话语| 中介效应分析,Mediation包和BruceR包,轮回Process函数-CSDN博客

发布日期:2024-09-24 19:09    点击次数:96

巨臀 R话语| 中介效应分析,Mediation包和BruceR包,轮回Process函数-CSDN博客

目次 Brief summary中介效应的检会分析步调Mediation包BruceR包效果解读Part1Part2 效果整理(for linux) Brief summary

网上对于中介效应的尊府挺多的巨臀,这里就差别旨趣进行过多证明。

浅薄来说,咱们分析自变量 X 对因变量 Y 产生的影响,如果变量 X 通过影响变量 M 来影响变量 Y ,那么这个变量 M 等于中介变量。 举例租客 (X) 通过中介公司 (M) 找到符合的屋子 (Y),中介公司就在其中饰演了中介变量的变装,中介变量推崇的作用就称为中介效应了。

对于该分析我个东谈主有一个默契,等于X和Y必须关联联。这个关联不错是数据上的(correlation or association,calculated from statistical method)或者是学科上的(因为我的照管办法是疾病多组学,不错说是生物学上的关联)。 如果X和Y毫无联系,这个照管是否还有必要呢,这可能是值得想考的

这里共享几个不错匡助贯通的并吞: https://zhuanlan.zhihu.com/p/376007591 https://www.jianshu.com/p/bdf084f42e80 https://www.docin.com/p-1622412323.html

图片

中介效应的检会

参考开端中介效应检会枢纽过火愚弄,温忠麟,2004 这篇著作很好的先容了中介效应的宗旨,站里好像就有,感兴味的不错看一下~

图片

分析步调 Mediation包

在收集上能看到最多的应该等于用mediation包进行的中介分析,浅薄好用

df<- read.csv('~/PD/PD分期/olink_sig_original.csv', check.names = F)
df[is.na(df)]<- 0 #补充NA数据,这一步看自我需求
#因子化我的分类变量
df$Gender<- as.factor(df$Gender)
df$Group<- as.factor(df$Group)

图片

教育线性讲求巨臀,我的X是CX3CL1, M是Meta52, Y是Group(二分类变量)

#教育线性讲求,我的X是CX3CL1, M是Meta52, Y是Group(二分类变量)
a<- lm(Meta52 ~ CX3CL1+Age+Gender,df) #lm(M~X,df)
b<- glm(Group ~Meta52+CX3CL1+Age+Gender, df,family = binomial) #glm(Y~X+M)
#install.packages("mediation")
library(mediation)
set.seed(123) #保证效果不错复现
result = mediate(a,b,treat="CX3CL1",mediator = "Meta52",boot = T)#默许1000次抽样
#这里需要细心变量的称呼,如果称呼比拟稀奇,有汉文或者标志很容易出错,提议提前处理变量名
summary(result)

图片

重心存眷的效果: ACME(average)波折效应 Prop.Mediated (average) 中介效应占比 不错从波折效应的p-value看出来,且置信区间莫得0,这个中介模子是树立的。中介变量占该模子94%的效应 (一般不会那么高,我的数据可能存在过拟合的可能性了) BruceR包

对于这个包的中介模子用法服气不错参考底下这个知乎著作(也先容了更始效应、链式中介等),竟然救我于国困民艰 https://zhuanlan.zhihu.com/p/376007591

如果变量未几,或者照管的变量联系很明确,不错用mediation包跑。但我濒临的数据是十几个X变量,100多个M中介变量,豪迈下来概况1000+个中介模子,竟然是跑断腿也搞不定。诚然我有尝试写mediate()的轮回,但怎样也处理不了treat和mediator要固定输入变量名的问题。

还晴天主开了一扇新的窗,让我发现了BruceR这个神包。这个包内嵌好多个常用的包(ggplot2、lmerTest、dplyr等等等)最犀利的是用来作念中介效应/更始效应的PROCESS函数,自动化为你处理该分析,不必我方教育讲求方程,只需要准备好一份数据集

#继续用上头的数据
#使用步调
PROCESS(data, y = "Group", x = "CX3CL1",
        meds = "Meta52", #中介变量,不错是多个,用c()
        covs = c("Age","Gender"), #协变量
        ci="boot", nsim=1000, seed =1)
        
#写轮回
X.names<- colnames(df1[5:18]) #系数X变量的名字
M.names<- colnames(df1[19:111]) #系数M变量的名字
result1<- list()#建一个空的list放效果
k = 1
for (i in X.names){
  for (j in M.names) {
    k = 1
    result1[[i]] <- list()
    result1[[i]][[k]] <- PROCESS(data, y = "Group", x = i,
                                 meds = j,
                                 covs = c("Age","Gender"),
                                 ci="boot", nsim=1000, seed =1)
    k = k +1
  }
}

图片

效果解读 Part1

************ PART 1. Regression Model Summary ************

图片

Model Summary

图片

图一列出了教育讲求所用的变量和formula信息 图二,不带括号的是斜率b,括号内的数字是尺度差SE,星号代表显赫 Part2

PART 2. Mediation/Moderation Effect Estimate

图片

这是最进军最需要看的部分了 通过indirect的P-value<0.05 且CI不包括0,不错知谈波折效应树立 中介效应=indirect effect / total effect = (-0.211)/(-0.222) = 95% 是一个填塞中介效应 效果整理(for linux)

因为我的数据推断量很大,运程是在linux就业器的R跑的,是以对效果的索如若perl + shell scirpt。 附上在shell运行的完整代码, 使用的时辰请自行转换

将底下代码储存为一个.R 文献,假定定名为MedAnalysis.R

library(bruceR)
library(texreg)
data<- read.csv('your file.csv')
data$Group<- as.factor(data$Group)
data$Gender<- as.factor(data$Gender)

micro.names<- colnames(df1[12:18])
meta<- colnames(data[20:128])

result1<- list()
k = 1
for (i in micro.names){
  for (j in meta) {
    k = 1
    result1[[i]] <- list()
    result1[[i]][[k]] <- PROCESS(data, y = "Group", x = i,
                                 meds = j,
                                 covs = c("Age","Gender"),
                                 ci="boot", nsim=5000, seed =1)
    k = k +1
  }
}

图片

同期咱们准备好跑完后用于索要流毒信息(如简介效应pvalue<0.05的)的perl代码,一样存成pl剧本文献。假定定名为 sel.pl

国厂视频偷拍a在线
#!/usr/bin/perl -w
use strict;

open IN,$ARGV[0] or die $!;
while(<IN>)
{
	chomp;
	my $line1=<IN>;
	chomp $line1;
	my $line2=<IN>;
	chomp $line2;
	if($line1=~/\*/)
	{
		print "$_\n$line1\n$line2\n";
	}
}
close IN;

图片

准备好R剧本和perl剧本,不错驱动后台运行了

1. nohup Rscript MedAnalysis.R > result.out &  #放到后台跑,等效果
2. less result.out |grep "irect" result.out >result_sel.out#在如上头图一图二一大串效果中,只索要part2 灵验的pvalue信息
3. perl sel.pl result_sel.out >result_sel_res.out #只保留indirect显赫的组合

R跑完产生的.out文献, 每组齐是重迭的这些,好多不需要的信息

图片

索要后的result_sel.out 文献

图片

索要后的result_sel_res.out文献,唯有indirect <0.05的组合

图片

临了就笔据效果,进一步的筛选进军的中介模子了

———————————————————————— 嗅觉整理的不是很明晰完好巨臀,有契机再修改修改 DONE

本站仅提供存储就业,系数本色均由用户发布,如发现存害或侵权本色,请点击举报。





Powered by ai换脸 在线 @2013-2022 RSS地图 HTML地图

Copyright Powered by站群 © 2013-2024