gpt4 book ai didi

r - 使用 dplyr 或 reshape2 跨数据帧的多列进行卡方统计

转载 作者:行者123 更新时间:2023-12-02 02:19:03 25 4
gpt4 key购买 nike

我有一个关于使用 dplyrreshape2 计算多列卡方统计数据的问题。下面是一个小数据框...

Sat <- c("Satisfied","Satisfied","Dissatisfied","Dissatisfied",
"Neutral")

Gender <- c("Male","Male","Female","Male","Female")

Ethnicity <- c("Asian","White","White","Asian","White")

AgeGroup <- c("18-20","18-20","21-23","18-20","18-28")

Example <- data.frame(Sat,Gender,Ethnicity,AgeGroup)

如何使用 summarise_eachmelt 对照其他每个变量计算 Sat 列,以生成卡方残差和 p -值(value)统计。我想一定有这样的东西:

Example %>% summarise_each(funs(chisq.test(... 

但我不知道如何完成它。另外,我如何融合数据框并使用 group_bydo() 来获取卡方统计数据?我有兴趣看看这两种方法。如果有办法合并 broom 包,那也很棒,或者用 tidyr 而不是 reshape2

回顾一下,我想运行卡方检验,例如

chisq.test(Example$Sat, Example$Gender)

但是...我想根据 GenderEthnicity 生成 Sat 变量的卡方统计数据年龄组。这是一个小例子,我希望上面的方法能够让我以快速有效的方式创建跨多个列的卡方统计数据。如果我可以使用 ggplot2 在热图中绘制残差,那就太好了,这就是为什么我有兴趣将 broom 包合并到这个示例中。

最佳答案

如果我们需要获取p值

 Example %>% 
summarise_each(funs(chisq.test(.,
Example$Sat)$p.value), -one_of("Sat"))
# Gender Ethnicity AgeGroup
#1 0.2326237 0.6592406 0.1545873

或者提取统计数据

Example %>%
summarise_each(funs(chisq.test(.,
Example$Sat)$statistic), -one_of("Sat"))
# Gender Ethnicity AgeGroup
#1 2.916667 0.8333333 6.666667

要获得残差,使用base R会更容易

 lapply(Example[setdiff(names(Example), "Sat")], 
function(x) chisq.test(x, Example$Sat)$residuals)

关于r - 使用 dplyr 或 reshape2 跨数据帧的多列进行卡方统计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36466929/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com