首页 > 解决方案 > Chisq Test R:数据框中的多个组

问题描述

我是 R 新手,正在尝试进行一些统计测试。

我的数据看起来像这样:

Name    Freqeunce   Target  Total
Steve   1   A   11
Marcel  1   A   11
Marie   1   A   11
John    2   A   11
Max     2   A   11
Alice   4   A   11
Mariane 1   B   1
Rose    1   C   3
Carla   1   C   3
Happy   1   C   3

我想为每种目标类型(A、B 和 C)实现同质的 Chi2。

我想知道 R 是否有可能运行一个循环,将每个名称的 p.value 写入列中,还是我必须先提取信息然后实现 Chi2?目的是根据频率识别组中较少代表的不同名称。并且有超过 2000 个组,这就是我想要一个循环的原因。

谢谢您的回答

巴蒂斯特

标签: r

解决方案


我想这会回答你的问题。我不知道这是否是您想要的 chi^2 测试类型,但您可以随时更改功能。我使用包中的group_byand并编写一个函数来执行 chi^2 测试并提取 pvalue。mutatedplyr

library(dplyr)
df <- read.table("test2.txt", header = T)

c2_all <- function(x,y){
  mat <- matrix(c(x,y),nrow = 2)  
  c2 <- chisq.test(mat)
  return(c2$p.value)
}

result <- df2 %>% group_by(Target) %>% mutate(pvalue = c2_all(Name,Freqeunce))

result
# A tibble: 11 x 5
# Groups:   Target [3]
   Name    Freqeunce Target Total pvalue
   <fct>       <int> <fct>  <int>  <dbl>
 1 Steve           1 A         11  0.285
 2 Marcel          1 A         11  0.285
 3 Marie           1 A         11  0.285
 4 John            2 A         11  0.285
 5 Max             2 A         11  0.285
 6 Alice           4 A         11  0.285
 7 Sarah           2 B          3  1.00 
 8 Mariane         1 B          3  1.00 
 9 Rose            1 C          5  0.223
10 Carla           3 C          5  0.223
11 Happy           1 C          5  0.223

推荐阅读