Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 分析3个不同分类变量之间相关性的最佳方法_R_Statistics - Fatal编程技术网

R 分析3个不同分类变量之间相关性的最佳方法

R 分析3个不同分类变量之间相关性的最佳方法,r,statistics,R,Statistics,我试图进行一些分析,但遇到了一个障碍(更像是一个心理障碍) 目标 我有3个不同的因素变量: 队列:分析师,助理,经理,高级经理,主管,ED,VP 性别:男性,女性 时间范围:年中,年终,以后 我想检查一下队列和时间段之间的性别是否存在任何差异。也就是说,女性分析师比男性分析师更可能陷入Timeframe=“Beyond” 代码 我最初的想法是这样做: library(dplyr) x <- df %>% filter(Gender %in% c("Male","Fema

我试图进行一些分析,但遇到了一个障碍(更像是一个心理障碍)

目标 我有3个不同的因素变量:

  • 队列:
    分析师
    助理
    经理
    高级经理
    主管
    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