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

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

maynowei10个月前 (08-16)技术知识142

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

本文的例子为:

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

相关文章

Linux C++实现多线程同步的四种方式(超级详细)

背景问题:在特定的应用场景下,多线程不进行同步会造成什么问题?通过多线程模拟多窗口售票为例:#include <iostream>#include<pthread.h>#inc...

大厂 Go 编程规范(二):mutex(编程大厂是什么意思)

mutex 是golang 的互斥锁,可以保障在多协程的情况下,数据访问的安全。1、零值有效我们并不需要mutex指针mu := new(sync.Mutex) mu.Lock()直接可以使用mute...

go语言并发原语RWMutex实现原理及闭坑指南

1.RWMutex常用方法Lock/UnlockRLock/RUnlockRLocker 为读操作返回一个Locker接 口的对象2. RWMutex使用方法 func main() { var c...

什么?Java 中的锁还有状态?(java中的锁都有哪些类型)

线程如果锁住了某个资源,致使其他线程无法访问的这种锁被称为悲观锁,相反,线程不锁住资源的锁被称为乐观锁,而自旋锁是基于 CAS 机制实现的,CAS又是乐观锁的一种实现,那么对于锁来说,多个线程同步访问...

Oracle公布Java9未来进度表(oracle的未来)

作为1995年由Sun公司推出的产品,Java既是指一种程序设计语言,也包含了Java平台。因其平台无关、安全、高性能、自动垃圾回收等特点,Java已经推出便受到广泛应用。Java软件开发工具包(Ja...

US urged to reflect on its hegemony over LatAm, Caribbean: Chinese foreign ministry

BEIJING, March 27 (Xinhua) -- China urges the United States to reflect on its hegemonic bullying and...