R数据分析:双分类变量的交互作用作图

之前的双连续变量交互作用作图,和分类变量与连续变量的交互都给大家写了,今天给大家写写,两个分类变量的交互,及简单斜率图画法。

本文的例子为:

在研究导师类型和性别这个两个自变量学生GPA的影响时,我们想看一看导师类型和性别的交互作用,这个例子中,导师类型和性别都是分类变量。

数据模拟

N <- 250    
Q <- sample(rep(c(-1,0,1),N),N,replace = FALSE)
G <- sample(rep(c(0,1),N*3/2),N,replace = FALSE) 

Y <- .5*Q + .25*G + 2.5*Q*G+ 1 + rnorm(N, sd=2) 

Y = (Y - min(Y)) / (max(Y) - min(Y))*4
GPA.Data.3<-data.frame(GPA=Y,Tutor=Q,Gender=G)  

上面的代码就模拟出了个数据框,其中Q为导师类型,有3类,模拟的时候用的-1,0,1代替,性别用的0,1

接下来,我们得将分类变量转化为哑变量,R会自动将因子处理为哑变量,所以我们直接转为因子就行:

GPA.Data.3$Tutor.F <- factor(GPA.Data.3$Tutor,  
                                level=c(-1,0,1),    
                                labels=c("No Tutor", "Group Tutor", "Private Tutor"))   
GPA.Data.3$Gender.F <- factor(GPA.Data.3$Gender,
                                   level=c(0,1),    
                                   labels=c("Male", "Female")) 

回归分析

然后我们进行回归分析,一个是有交互作用的,一个是不含交互作用的

GPA.3.Model.1<-lm(GPA ~ Tutor.F+Gender.F, data = GPA.Data.3)    
GPA.3.Model.2<-lm(GPA ~ Tutor.F*Gender.F, data = GPA.Data.3)    

stargazer(GPA.3.Model.1, GPA.3.Model.2,type="html", 
          column.labels = c("Main Effects", "Interaction"), 
          intercept.bottom = FALSE, 
          single.row=TRUE,  
          notes.append = FALSE, 
          omit.stat=c("ser"),   
          star.cutoffs = c(0.05, 0.01, 0.001),  
          header=FALSE,
                    out="test.html") 

运行代码得出回归分析的结果如下:

image

画简单斜率图

画斜率图的第一步依然是跑出每个子类的系数:

Inter.GPA.3 <- effect('Tutor.F*Gender.F', GPA.3.Model.2,
                      se=TRUE)

Inter.GPA.3.DF<-as.data.frame(Inter.GPA.3)

我们可以看一看每个子类的拟合系数长啥样:

image

上图就显示了,在两个自变量的不同水平fit值是不一样的,而且通过回归的交互项显著性分析,也是知道这个fit是有显著性差异的

接下来就开始画图:

Inter.GPA.3.DF$Tutor.F <- factor(Inter.GPA.3.DF$Tutor,  
                                 level=c("No Tutor", "Group Tutor", "Private Tutor"),    
                                 labels=c("No Tutor", "Group Tutor", "Private Tutor"))   
Inter.GPA.3.DF$Gender.F <- factor(Inter.GPA.3.DF$Gender,
                                  level=c("Male", "Female"),   
                                  labels=c("Male", "Female"))

Plot.GPA.3<-ggplot(data=Inter.GPA.3.DF, aes(x=Tutor.F, y=fit, group=Gender.F))+
  geom_line(size=2, aes(color=Gender.F))+
  geom_ribbon(aes(ymin=fit-se, ymax=fit+se,fill=Gender.F),alpha=.2)+
  ylab("GPA")+
  xlab("Tutor")+
  ggtitle("Tutors and Gender as GPA Predictors")+
  theme_bw()+
  theme(text = element_text(size=12),
        legend.text = element_text(size=12),
        legend.direction = "horizontal",
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        legend.position="top")
Plot.GPA.3
image

到这儿,我们的简单斜率图就画好了,注意两自变量都是分类变量的时候,x轴上的自变量有3个水平,所以这个斜率图一般都不是直的,一般斜率在中间都会打个折。

小结

今天给大家写了双分类变量的交互以及简单斜率图的做法,感谢大家耐心看完。发表这些东西的主要目的就是督促自己,希望大家关注评论指出不足,一起进步。内容我都会写的很细,用到的数据集也会在原文中给出链接,你只要按照文章中的代码自己也可以做出一样的结果,一个目的就是零基础也能懂,因为自己就是什么编程基础没有从零学Python和R的,加油。数据分析问题咨询,代处理请私信。

(站外链接发不了,请关注后私信回复“数据链接”获取本头条号所有使用数据)

往期内容:

R数据分析:双因素方差分析与交互作用检验

R数据分析:双连续变量交互作用的简单斜率图作图及解释

你可能感兴趣的:(R数据分析:双分类变量的交互作用作图)