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

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

maynowei8个月前 (08-16)技术知识113

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

本文的例子为:

在研究导师类型和性别这个两个自变量学生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数据分析:双连续变量交互作用的简单斜率图作图及解释

相关文章

登录注册产品需求自检清单,你都写全了没?

来人人都是产品经理【起点学院】,BAT实战派产品总监手把手系统带你学产品、学运营。自己挖的坑一定要让别人给填好!一、登录(从PC端到移动端)移动端的登录沿袭了很多PC端的经验,但也有其独特的演变,我收...

分享我的产品策划流程,希望对你也有用

本文笔者梳理拆解了自己的产品策划流程,并给出了自己对各流程的思考,希望能够给你带来一定的启发。记得刚开始做产品出需求方案的时候,上来就开始画原型写文档,在写的过程中发现某个交互没想明白或者漏了一部分逻...

[三菱PLC] 用&quot;C语言&quot;玩转PLC,三菱PLC使用ST语言超详细教程

ST语言,全称为结构化文本(Structured Text),是一种高级编程语言,专为工业自动化和控制系统设计。我们学习PLC一般是用梯形图,梯形图学会后,学习SFC,但是我发现梯形图和SFC虽然简单...

如何优雅地使用嵌入式事件标志组?

事件标志组嵌入式事件标志组是一种在嵌入式系统中广泛使用的同步机制,主要用于实现多任务间的同步与通信。事件标志组是一组事件标志位的集合,每个位代表一个事件是否发生。它允许任务等待特定的事件发生,当事件发...

c++ 继承简介(c++继承的概念)

24.1 — 继承简介2024 年 6 月 5 日在上一章中,我们讨论了对象组合,即从更简单的类和类型构建复杂类。对象组合非常适合构建与其部分具有“has-a”关系的新对象。但是,对象组合只是 C++...

Oracle工具PLSQL登录时提示初始化失败,无法锁定OCI.dll错误解决

报错信息: (没有登录)-PL/SQL Developer Initialization error 无法锁定OCI dll OracleHomeKey: OracleHomeDir:E\instan...