上海启嘟渡科技商贸有限公司
SEARCH

与我们合作

我们专注提供互联网一站式服务,助力企业品牌宣传多平台多途径导流量。
主营业务:网站建设、移动端微信小程序开发、营销推广、基础网络、品牌形象策划等

您也可通过下列途径与我们取得联系:

微 信: wxyunyingzhe

手 机: 15624122141

邮 箱:

如何制作双变量交互分类表

更新时间:2025-01-10 21:59:55

在研究导师类型和性别这个两个自变量学生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个水平,所以这个斜率图一般都不是直的,一般斜率在中间都会打个折。

多重随机标签

猜你喜欢文章

QQ客服 电话咨询