如何制作双变量交互分类表
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何制作双变量交互分类表相关的知识,希望对你有一定的参考价值。
在研究导师类型和性别这个两个自变量学生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个水平,所以这个斜率图一般都不是直的,一般斜率在中间都会打个折。
参考技术A采用Excel工作薄制作双变量交互分类表。操作流程如下:
打开Excel
在表中单元格输入公式
选中所建表格内容、选择数据、假设分析、数据表
在所弹数据表对话框中单击引用行的单元格进行输入
分别输入引用行、列的内容
交互表是用来分析两个分类(定性)变量之间的关系,其分析易于理解,便于解释,操作简单,但可以解释比较复杂的现象。
参考技术B 列联表又称交互分类表,所谓交互分类,是指同时依据两个变量的值,将所研究的个案分类。交互分类的目的是将两变量分组,然后比较各组的分布状况,以寻找变量间的关系。这里是按两个变量交叉分类的,该列联表称为两维列联表,若按3个变量交叉分类,所得的列联表称为3维列联表,依次类推。3维及以上的列联表通常称为“多维列联表”或“高维列联表”,而一维列联表就是频数分布表。
以上是关于如何制作双变量交互分类表的主要内容,如果未能解决你的问题,请参考以下文章
自定义表:SPSS 如何以不同于分类变量的方式处理多响应集?
R语言使用ggplot2包使用geom_dotplot函数绘制分组点图(双分类变量分组可视化)实战(dot plot)
R语言ggplot2可视化交互作用图(Interaction Plot):可视化不同分组(分类变量1)在不同剂量下(分类变量2)的箱图(box plot)均值计算并连接成线图(line plot)