当前位置:首页 > 技术知识 > 正文内容

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") 

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

画简单斜率图

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

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

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

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


上图就显示了,在两个自变量的不同水平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


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

小结

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

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

往期内容:

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

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

相关文章

在手机上演示axure原型(怎么在axure中画出手机原型)

AXSHARE APP发布啦,以后大家的原型可以通过这款APP进行预览演示咯。小编迫不及待的体验了一下这款APP。要使用这款APP,首先需要有axshare的账号。账号注册地址:https://sha...

单片机C语言编程,心得都在这里了

单片机写代码总踩坑,头文件被无视,老工程师的经验哪里来?前几天写8x8矩阵键盘的程序,搞了三天代码一直乱报错。后来发现自己连头文件是什么都不清楚,之前写的都是小程序,压根没碰过.h文件。看别人的程序都...

真来了,iOS 16.6 beta 利用,隐藏 Dock 栏

昨天提到!iOS 16.5 kfd 漏洞可以隐藏 Dock 栏消息,现在已经确定 iOS 16.6 beta 内测也是支持使用 kfd 漏洞,当然!也是支持隐藏 Dock 栏,主要验证该系统是否可用。...

高考一词多义考点! 30个高频词汇,完形填空再也不怕啦

1. address·/a'dres/ v.处理(问题)We must address the issue of climate change.·/'aedres/ n.地址Pleas...

ExpandListView 的一种巧妙写法(三十的另一种写法)

ExpandListView大家估计也用的不少了,一般有需要展开的需求的时候,大家不约而同的都想到了它然后以前自己留过记录的一般都会找找以前自己的代码,没有记录习惯的就会百度、谷歌,这里吐槽一下,好几...

Win10桌面/手机版最深层次开发功能挖掘

IT之家讯 Win10开发者预览版为我们提供了一个Win10大框架的早期概览,使开发者与热心用户都可以提前感受Win10带来的新特性,尝试新工具,而作为开发者,最关心的莫过于Windows多平台通用应...