《R数据分析:双连续变量交互作用的简单斜率图作图及解释.docx》由会员分享,可在线阅读,更多相关《R数据分析:双连续变量交互作用的简单斜率图作图及解释.docx(14页珍藏版)》请在第一文库网上搜索。
1、R数据分析:双连续变量交互作用的简单斜率图作图及解释Interaction:Whentheeffectofoneindependentvariab1ediffersbasedonthe1eve1ormagnitudeofanotherindependentvariab1e对于交互作用相信很多人都不陌生,论文中也会经常出现,大家自己也会想要看看感兴趣变量之间的交互,交互作用的意思就是在一个自变量的不同水平,另一个自变量的效应大小会有差别,这个和调节作用统计上基本上是一样的,两者只有理论意义上的差异。今天就带大家用一个实际例子做一个交互作用y=A+B+A*B y=dependentvariab1e
2、 A=independentvariab1e B=independentvariabi1e A*B=interactionbetweenAandB上面的这个公式就是最简单的,有交互作用的回归,对于此方面的详尽解释,大家可以参考文献:JaCCard&Turrisi2003InteractionEffectsinMu1tip1eRegression今天重点给大家写两个连续变量的简单斜率图和解释:两连续变量的交互先模拟出我们今天的数据集:Iibrary(Car)# 此部分为数据的模拟n-250# 模拟两个正态分布的连续变量X-rnorm(n,2.75,.75)Z-rnorm(n,15,15)# 模拟
3、因变量Y-.7*X+.3*Z+2.5*X*Z+rnorm(n,sd=5)# 因变量转化# =(Y-min(Y)/(ma(Y)-min(Y)*4#生成我们的数据GPA.Data-data.frame(GPA=Y,Work.Ethic=X,IQ=Z)上面的代码生成一个模拟的数据框,我们假设应变量是学生的GPA,两个自变量分别是学习态度和智商,我们文章要探讨的就是学习态度和智商在影响GPA时的交互作用。此时智商和态度都是正态分布的连续变量。首先拟合模型:GPA.Data$IQ.C-sca1e(GPA.Data$IQ,center=TRUE,sca1e=FA1SE)GPA.Data$Work.Ethi
4、c.C-sca1e(GPA.Data$Work.Ethic,center=TRUE,sca1e=FA1SE)GPA.Mode1.1-1m(GPA-IQ.C+Work.Ethic.C,GPA.Data)GPA.Mode1.2-Im(GPA-IQ.C*Work.Ethic.C,GPA.Data)Iibrary(Stargazer)stargazer(GPA.Mode1.1,GPA.Mode1.2,type=nhtmfCoIumnJabeIs=c(MainEffects,Interaction),intercept.bottom=FA1SE,sing1e.row=FA1SE,notes.append
5、=FA1SE,header=FA1SE,out=test.htmout.header=TRUE)上面的代码进行了有交互和没有交互时的模型拟合,同时我还用了stargazer来输出模型结果:Dependentvariab1e:GPAMainEffectsInteraction(2)Constant2.054*2.054*(0.008)(0.002)IQ.C0.041*0.040*(0.001)(0.0001)Work.Ethic.C0.199”*0.202,*(0.012)(0.002)IQ.C:Work.Ethic.C0.014*(0.0002)Observations250250R20.95
6、90.998AdjustedR20.9590.998Residua1Std.Error0.134(df=247)0.026(df=246)FStatistic2,888.028*(df=2;247)51,713.400*(df=3;246)可以看到交互作用是有的,下面准备画简单斜率图:简单斜率图两个连续变量放在回归方程中很好理解,在做交互的简单斜率图的时候我们就得指定水平,比如AB两个连续变量有交互作用,我们如果以A为X轴做简单斜率图,我们需要表达的是A的效应随着B的不同水平的不同而不同。然而B是一个连续变量,所以我们此时得给B指定作图的水平。指定水平时一般有三种方法:handpicking,
7、quanti1es,standarddeviationo我们先来看handpicking:1ibrary(effects)IntenHandPick-effect(IQ.C*Work.Ethic.C,GPA.Mode1.2,x1eve1s=1ist(IQ.C=c(-15,0,15),Work.Ethic.C=c(-1.1,0,1.1),se=TRUE,confidence.1eve1=.95,typica1=mean)InterHandPickhead(Inter.HandPick)IQ.CWork.Ethic.Cfitse1owerupper1-15-1.11.4646100.0046707
8、051.4554101.47380920-1.11.8317230.0030408831.8257341.837713315-1.12.1988360.0047176612.1895442.2081294-150.01.4603400.0023503811.4557111.464970-1-nniRRc)CR117d7-R779A有了上面的数据我们就可以做简单斜率图了:IntenHandPickSIQ-factor(Inter.HandPick$IQ.C,1eve1s=c(-15,0,15),1abe1s=c(1SDBe1owPopu1ationMean,Popu1ationMean,1SDA
9、bovePopu1ationMean)IntenHandPickSWork.Ethic-factor(Inter.HandPickSWork.Ethic.Cz1eve1s=c(-1.1,0,1.1),1abe1s=c(nPoorWorker,AverageWorker,HardWorker)Iibrary(ggp1ot2)y=fit,P1ot.HandPick-ggp1ot(data=InterHandPick,aes(x=Work.Ethic,group=IQ)+geomjine(size=2,aes(co1or=IQ)+y1im(0,4)+y1ab(GPA)+x1ab(,WorkEthic
10、)+ggtit1e(HandPickedP1ot)PIot.HandPick运行以上代码即得到简单斜率图:HandPickedP1otIQ-1SDBe1owPopu1ationMeanPopu1attonMean-1SDAbMPopuIMonMein因为我们选择的B的水平是1eve1s=c(-15,0,15),而我们模拟的B也就是IQ的分布是一个以15为均值15为标准差的正态分布,而后进行了中心化,所以我们画简单斜率图选择的这个水平1eve1s=c(-15,Oz15)就是均值和加减一个标准差的水平。这个是我们自己选的,所以叫做handpicking0对于这个简单斜率图的解释如下:对于IQ均值在
11、总体均值一个标准差以上的这些人,他们的学习态度越好那么GPA也越好,在普通IQ的学生中也有这么一种关系,但是比较弱一点,但是对于那些IQ低于人群一个标准差的同学,他们的学习态度再好,GPA好像也不增加。我们接着看另外一种划分水平的方法-quanti1es首先我们将我们的B的水平化出来:IQ-QuantiIe-quanti1e(GPA.DataS1Q.C,probs=c(0,.25,.50,.75,1)IQ.Quanti1e-round(IQ.Quanti1e,2)其余的步骤和基本就一样了,依然还是先跑我们的B的不同水平的系数均值:1ibrary(effects)IntenQuantiIe-ef
12、fect(IQ.C*Work.Ethic.C,GPA.Mode1.2,X1eve1s=1ist(IQ.C=c(-35.44,-9.78,-0.04,9.89,41.90),Work.Ethic.C=c(-1.1z0,1.1),se=TRUE,ConfidenceJeveI=.95,typica1=mean)IntenQuantiIe-as.data.frame(Inter.Quanti1e)Inter.Quanti1e$IQ-factor(Inter.Quanti1e$IQ.C,1eve1s=c(-35.44,-9.78,-0.04,9.89,41.90)j1abe1s=c(n0%,25%50
13、%,z75%n,100%)IntenQuantiIeSWork.Ethic-factor(Inter.Quanti1e$Work.Ethic.C,Ieve1s=c(-1.1,O,1.1),1abe1s=c(PoorWorker,AverageWorker,HardWorker)然后再画图:Iibrary(ggp1ot2)P1ot.Quanti1e-ggp1ot(data=Inter.Quanti1e,aes(x=Work.Ethic,y=fit,group=IQ)+geomjine(size=2,aes(co1or=IQ)+y1ab(GPA)+x1ab(),WorkEthic)+sca1e_c
14、o1or_manua1(Va1UeS=C(#42c5f4J#54f284,#f45dcc,#ff9d35,#d7afff)+theme_bw()+theme(tet=e1ementjet(fami1y=nImpact,size=14,co1or=b1ackn)+#可以在这换字体ggtit1e(,Quanti1eP1ot)PIotQuantiIe对于上面图的解释相信大家都会了,这UF多罗嗦,直接继续看第三种划分水平的方法第三种划分水平的方法叫做StandardDeviation其实我们第一种方法就是按照标准差划分的,所以这个做出来的图和第一种方法基本没有区别,首先还是水平划分:IQ.SD-c(mean(GPA.DataS1Q.C)-sd(GPA.DataS1Q.Qmean(GPA.Data$IQ.C),mean(GPA.Data$IQ.C)+sd(GPA.Data$IQ.C)IQ.SD-round(IQ.SD,2)然后做交互,得出系数均值:IntenSD-effect(c(IQ.C*Work.Ethi