分类变量和二元变量之间的相关性 R

Correlation R between categoric and binary variables

提问人:Max 提问时间:9/23/2023 最后编辑:r2evansMax 更新时间:9/24/2023 访问量:59

问:

我想使用随附的数据来查看学生参加的训练营与他们最终获得的工作之间存在相关性。例如,参加过软件工程训练营的人最终会得到一份软件工作,还是参加数据科学训练营会带来一份数据工作?我试过这样做,但我认为这是不对的。我附上了数据的屏幕截图。请帮助提供正确的代码

data

data <- data[rowSums(is.na(data)) == 0,]
summary(data)
data <- as.data.frame.matrix(data)
sapply(data,class)
data$Bootcamp <- as.numeric(factor(data$Bootcamp))
sapply(data,class)
data <- data[rowSums(is.na(data)) == 0,]
R 变量 统计 相关性

评论

0赞 r2evans 9/23/2023
你做过很多研究吗?我在谷歌上搜索了问题主题,发现 datascience.stackexchange.com/q/893/31084stats.stackexchange.com/q/103801/60634,两者似乎都是相关的,并且有可操作的答案。
0赞 Max 9/23/2023
是的,我在网上查了一下,但我看到的并不能完全回答我的问题。我的主要问题是 Bootcamp 列中的数据是分类的。我可以弄清楚如何将其与其他布尔变量相关联。

答:

0赞 Sandipan Dey 9/24/2023 #1

以下是计算相关性的方法(请记住,相关性不是因果关系,可能存在混杂因素)。由于我无权访问您的数据,因此我首先生成了一些随机数据,如下所示(您可以将其替换为您的实际数据)。

head(data)
#       Bootcamp software web data security engineer developer analyst
#1  Data Science        0   1    0        0        0         1       1
#2  Data Science        1   1    1        0        1         1       1
#3 Cybersecurity        1   1    0        1        0         0       1
#4 Cybersecurity        0   0    0        1        1         0       1
#5 Cybersecurity        0   1    0        1        0         0       0
#6  Data Science        0   1    0        1        0         0       1

现在,使用创建设计(或模型)矩阵的函数,例如,通过将因子扩展到一组虚拟变量,从分类列创建虚拟二元变量。model.matrix()

bootcamp <- as.data.frame(model.matrix(~ Bootcamp + 0, data)) # with no intercept term
head(bootcamp)
#  BootcampCybersecurity BootcampData Science BootcampSoftware Engineering
#1                     0                    1                            0
#2                     0                    1                            0
#3                     1                    0                            0
#4                     1                    0                            0
#5                     1                    0                            0
#6                     0                    1                            0

请注意,第一行的值为 ,因此只有相应的虚拟变量具有 value ,所有其他变量都具有该行的值。BootcampData science10

请注意,它只为我生成了 3 个虚拟列变量,因为我只有 3 个扩展的相应因子变量的水平。在因子变量中,列数将作为水平数。

现在,计算相关性:

job <- data[,2:ncol(data)]
corr <- cor(bootcamp, job)

如果您想要如下,您可以使用花哨的绘图来更好地可视化/解释:

library(ggcorrplot)
ggcorrplot(corr, lab = TRUE)

enter image description here

从上面的可视化中可以看出,对于我的数据,表示数据作业的二进制变量与表示数据科学训练营的二进制变量的相关性为 0.1

您可以进行线性回归,以找出特定预测变量(例如,训练营培训)是否是预测响应(例如,工作类型)的重要预测变量。希望它能回答你的问题。