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

R数据分析:交互作用的简单斜率图做法及解释

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

之前的文章给大家写了两个连续变量的交互作用,今天给大家写写比较常见,也是比较简单的:

一个连续变量和一个分类变量的交互。

具体的例子为:我们在研究GPA的影响因素时,我们想看一看学习态度和性别的交互作用,在这个例子中,学习态度为连续变量,性别为分类变量

数据模拟


n <- 250

X <- rnorm(n, 2.75, .75)

G <- sample(rep(c(0,1),N),N,replace = FALSE)    

Y <- .7*X + .3*G + 2*X*G + rnorm(n, sd = 5)     

Y = (Y - min(Y)) / (max(Y) - min(Y))*4

GPA.Data.2<-data.frame(GPA=Y, Work.Ethic=X, Gender=G)   

GPA.Data.2$Work.Ethic.C <- scale(GPA.Data$Work.Ethic, center = TRUE, scale = FALSE)

运行上面的代码我们就模拟出来的今天的数据集,但是我们知道性别是个二分类变量,我们是用0,1编码的性别,所以只用将其转化为因子就可以了:

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

做回归

数据模拟出来了,哑变量也生成好了之后我们就可以做回归分析了,依然是跑两个模型,一个是带交互作用的,另外一个不带交互作用:

GPA.Model.1 <- lm(GPA~Work.Ethic.C+Gender.F, GPA.Data)
GPA.Model.2 <- lm(GPA~Work.Ethic.C*Gender.F, GPA.Data)

library(stargazer)
stargazer(GPA.Model.1, GPA.Model.2,type="html", 
          column.labels = c("Main Effects", "Interaction"), 
          intercept.bottom = FALSE, 
          single.row=FALSE,     
          notes.append = FALSE, 
          header=FALSE,
          out="test.html") 

运行上面的代码就可以出来两个模型结果如下:

可以看到模型的输出中,交互项是有意义的。接下来我们开始画简单斜率图。

简单斜率图

首先我们得按自变量的水平将我们的交互作用模型再次拟合,给相应的系数取均值:

library(effects)
#交互作用
Inter.GPA.2 <- effect('Work.Ethic.C*Gender.F', GPA.Model.2,
                      xlevels=list(Work.Ethic.C = c(-1.1, 0, 1.1)),
                      se=TRUE, confidence.level=.95, typical=mean)


Inter.GPA.2<-as.data.frame(Inter.GPA.2)

运行上面的代码就得到了相应的系数,然后我们给我们的系数加上标签就可以用ggplot2画出简单斜率图:

Inter.GPA.2$Work.Ethic<-factor(Inter.GPA.2$Work.Ethic.C,
                               levels=c(-1.1, 0, 1.1),
                               labels=c("Poor Worker", "Average Worker", "Hard Worker"))
Inter.GPA.2$Gender<-factor(Inter.GPA.2$Gender.F,
                           levels=c("Male", "Female"))
library(ggplot2)

Plot.GPA.2<-ggplot(data=Inter.GPA.2, aes(x=Work.Ethic, y=fit, group=Gender))+
      coord_cartesian(ylim = c(0,4))+  
      geom_line(size=2, aes(color=Gender))+
      ylab("GPA")+
      xlab("Work Ethic")+
      ggtitle("Work Ethic and Gender as Predictors of GPA")+
      theme_bw()+ 
        theme(panel.grid.major=element_blank(),
        panel.grid.minor=element_blank())+
      scale_fill_grey()
Plot.GPA.2


以上就是我们最常见的交互作用类型的简单斜率图的画法。

小结

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

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

往期内容:

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

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

R数据分析:在tidyverse中“do”起什么作用

R数据分析:中介效应的做法

相关文章

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

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

出售闲置原型素材来赚钱,上传作品,即可收上万元收入

出售闲置原型素材来赚钱。产品经理每年设计出大量的原型作品和组件、元件库、交互原型模板等作品,如果项目结束,你的原型就失去了作用,而有需求的人却找不到这样的作品。现在我们发现这样一家元件库、原型模板、素...

微软明年要停止SQL Server 2005的技术支持了

站长之家(Chinaz.com)12月28日消息据外媒消息称,微软将于明年停止为SQL Server 2005提供技术支持,即不再为其提供新的安全补丁、新功能、应用升级等服务。且表示在停止技术支持后,...

Django 官方推荐的姿势:类视图(django类视图和函数视图哪个好)

作者:HelloGitHub-追梦人物在开发网站的过程中,有一些视图函数虽然处理的对象不同,但是其大致的代码逻辑是一样的。比如一个博客和一个论坛,通常其首页都是展示一系列的文章列表或者帖子列表。对处理...

Go语言进阶:时间轮(golang时间轮)

时间轮概念时间轮(Timing Wheel)是一种高效的定时任务调度数据结构,特别适合处理大量定时任务。它通过一个循环数组(轮盘)和多个槽位(buckets)来组织定时任务,每个槽位代表一个时间间隔。...

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

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