R 分析3个不同分类变量之间相关性的最佳方法
我试图进行一些分析,但遇到了一个障碍(更像是一个心理障碍) 目标 我有3个不同的因素变量:R 分析3个不同分类变量之间相关性的最佳方法,r,statistics,R,Statistics,我试图进行一些分析,但遇到了一个障碍(更像是一个心理障碍) 目标 我有3个不同的因素变量: 队列:分析师,助理,经理,高级经理,主管,ED,VP 性别:男性,女性 时间范围:年中,年终,以后 我想检查一下队列和时间段之间的性别是否存在任何差异。也就是说,女性分析师比男性分析师更可能陷入Timeframe=“Beyond” 代码 我最初的想法是这样做: library(dplyr) x <- df %>% filter(Gender %in% c("Male","Fema
- 队列:
,分析师
,助理
,经理
,高级经理
,主管
,ED
VP
- 性别:
,男性
女性
- 时间范围:
,年中
,年终
以后
队列
和时间段
之间的性别
是否存在任何差异。也就是说,女性分析师比男性分析师更可能陷入Timeframe=“Beyond”
代码
我最初的想法是这样做:
library(dplyr)
x <- df %>%
filter(Gender %in% c("Male","Female")) %>%
filter(!is.na("Timeframe")) %>%
group_by(Timeframe, Cohort, Gender) %>%
summarise(n = n()) %>%
mutate(freq = 100 * (n / sum(n)))
EJJ的评论是正确的-您需要在Summary函数之后解组。否则,您将计算组百分比,而不是整体百分比
x=df %>% filter(Gender %in% c('Male',"Female")) %>%
filter(!is.na(`Promotion Timeframe`)) %>%
group_by(`Promotion Timeframe`,Management_Level,Gender) %>%
dplyr::summarise(n=n()) %>%
ungroup() %>%
mutate(freq = 100* (n/sum(n)))
EJJ的评论是正确的-您需要在Summary函数之后解组。否则,您将计算组百分比,而不是整体百分比
x=df %>% filter(Gender %in% c('Male',"Female")) %>%
filter(!is.na(`Promotion Timeframe`)) %>%
group_by(`Promotion Timeframe`,Management_Level,Gender) %>%
dplyr::summarise(n=n()) %>%
ungroup() %>%
mutate(freq = 100* (n/sum(n)))
也许您可以检查频率矩阵,如下所示:
table(df1[df1$V1=="Male",2:3])
table(df1[df1$V1=="Female",2:3])
这让您对数据的分布方式有了第一印象。
为了进一步研究,您可以更精确地指定零假设,以便设置正确的测试。
看看皮尔逊卡方检验,比如:
cntTable <- table(df1[,c(1,3)])
chisq.test(cntTable)
cntTable也许您可以检查频率矩阵,如下所示:
table(df1[df1$V1=="Male",2:3])
table(df1[df1$V1=="Female",2:3])
这让您对数据的分布方式有了第一印象。
为了进一步研究,您可以更精确地指定零假设,以便设置正确的测试。
看看皮尔逊卡方检验,比如:
cntTable <- table(df1[,c(1,3)])
chisq.test(cntTable)
cntTable我非常喜欢1picture==1000个单词
,所以这里有两种方法可以直观地看到R中可能的内容
1.先进方法
此方法使用gganimate
和ggplot2
包的累积百分比和累积总和。您可以使用参数(例如,nframes
)根据自己的喜好进行调整
代码
第一行之后的所有内容都是可选的。显然,您可以使用ggplot2
、waffle
或类似工具使此绘图更漂亮
资料
我真的很喜欢1picture==1000个单词,所以这里有两种方法可以直观地看到R中的可能
1.先进方法
此方法使用gganimate
和ggplot2
包的累积百分比和累积总和。您可以使用参数(例如,nframes
)根据自己的喜好进行调整
代码
第一行之后的所有内容都是可选的。显然,您可以使用ggplot2
、waffle
或类似工具使此绘图更漂亮
资料
我认为你需要在你的summary()
之后ungroup()
,然后groupby(Gender)
来获得你想要的Gender
比例。类似于df1%%>%groupby(V1,V2,V3)%%>%summary(n=n())%%>%ungroup()%%>%groupby(V1)%%>%mutate(freq=100*n/sum(n))
这是您的全部数据还是只是一个小样本?您有42个类别组合,只有30个数据点。很难相信由此得出的统计数据会有多大意义。@g5w-只是一个样本。谢谢你@TedMosby,你是否有统计知识并想使用它(例如,使用cor()
),还是更多地是为了强调C级?如果不需要dplyr,什么也可以很好地工作:as.data.frame(table(df1))
我想你需要在summary()
之后解组()
,然后按性别分组
按性别获得所需比例。类似于df1%%>%groupby(V1,V2,V3)%%>%summary(n=n())%%>%ungroup()%%>%groupby(V1)%%>%mutate(freq=100*n/sum(n))
这是您的全部数据还是只是一个小样本?您有42个类别组合,只有30个数据点。很难相信由此得出的统计数据会有多大意义。@g5w-只是一个样本。谢谢你@TedMosby,你是否有统计知识并想使用它(例如,使用cor()
),或者更多的是为了强调C级?如果不需要dplyr,什么也可以很好地工作:as.data.frame(table(df1))
,这难道不只是计算整个数据的百分比吗?难道我们不想再次按性别分组以获得性别内的百分比吗?这不只是计算整体的百分比吗?难道我们不想再次按性别分组以获得性别内的百分比吗?谢谢!如果上述解决方案对您的问题有所帮助,那么添加gganimate
/ggplot
/dplyr
标记可能会有意义。谢谢!如果上述解决方案对您的问题有所帮助,那么添加gganimate
/ggplot
/dplyr
标记可能是有意义的。
> head(dfcount)
# A tibble: 6 x 8
# Groups: gender, cohort [2]
gender cohort timeframe n c perc cperc text
<fct> <fct> <fct> <int> <int> <dbl> <dbl> <chr>
1 Female Analyst Beyond 73 126 0.579 1 57.9 %
2 Female Analyst Year-End 48 53 0.381 0.421 38.1 %
3 Female Analyst Mid-Year 5 5 0.0397 0.0397 4 %
4 Male Analyst Beyond 95 172 0.552 1 55.2 %
5 Male Analyst Year-End 70 77 0.407 0.448 40.7 %
6 Male Analyst Mid-Year 7 7 0.0407 0.0407 4.1 %
plot(table(df$gender, df$timeframe),
main = "Gender vs. Timeframe",
sub = paste("A comparison of the careers of",
count(subset(df, gender == "Female")), "women and",
count(subset(df, gender == "Male")), "men"),
ylab = "Time of promotion")
set.seed(1701)
g <- c("Female", "Male")
c <- c("Analyst", "Associate", "Manager", "Senior Manager", "Director",
"Executive Director", "Vice President")
t <- c("Mid-Year", "Year-End", "Beyond")
df <- data.frame(
gender = factor(sample(g, 1000, c(0.39, 0.61),
replace = TRUE), levels = g),
cohort = factor(sample(c, 1000, c(0.29, 0.34, 0.14, 0.11, 0.07, 0.04, 0.01),
replace = TRUE), levels = c),
timeframe = factor(sample(t, 1000, c(0.05, 0.35, 0.6),
replace = TRUE), levels = t))
> head(df)
gender cohort timeframe
1 Male Associate Year-End
2 Female Analyst Year-End
3 Male Manager Beyond
4 Male Associate Beyond
5 Female Associate Year-End
6 Male Manager Beyond