r - R 数据框中不同组的卡方检验

标签 r testing dplyr chi-squared

我有一个巨大的数据框,具有以下基本结构:

data <- data.frame(species = factor(c(rep("species1", 4), rep("species2", 4), rep("species3", 4))),
                 trap = c(rep(c("A","B","C","D"), 3)),
                 count=c(6,3,7,9,5,3,6,6,5,8,1,3))
data

我想要同时对每个物种的四个陷阱之间的物种计数数据进行卡方检验,而不是它们之间的卡方检验。对于每个单独的物种,可以使用以下代码来解决它,但由于我巨大的原始数据框,这对我来说不是合适的解决方案。

chi_species1 <- xtabs(count~trap, data, 
                       subset = species=="species1")
chi_species1
chisq.test(chi_species1)

感谢您的帮助!!

最佳答案

基础

df <- data.frame(species = factor(c(rep("species1", 4), rep("species2", 4), rep("species3", 4))),
                   trap = c(rep(c("A","B","C","D"), 3)),
                   count=c(6,3,7,9,5,3,6,6,5,8,1,3))
df
#>     species trap count
#> 1  species1    A     6
#> 2  species1    B     3
#> 3  species1    C     7
#> 4  species1    D     9
#> 5  species2    A     5
#> 6  species2    B     3
#> 7  species2    C     6
#> 8  species2    D     6
#> 9  species3    A     5
#> 10 species3    B     8
#> 11 species3    C     1
#> 12 species3    D     3

species <- unique(df$species)

chi_species <- lapply(species, function(x) xtabs(count~trap, df, 
                      subset = species== x))

chi_species <- setNames(chi_species, species)

lapply(chi_species, chisq.test)

#> $species1
#> 
#>  Chi-squared test for given probabilities
#> 
#> data:  X[[i]]
#> X-squared = 3, df = 3, p-value = 0.3916
#> 
#> 
#> $species2
#> 
#>  Chi-squared test for given probabilities
#> 
#> data:  X[[i]]
#> X-squared = 1.2, df = 3, p-value = 0.753
#> 
#> 
#> $species3
#> 
#>  Chi-squared test for given probabilities
#> 
#> data:  X[[i]]
#> X-squared = 6.2941, df = 3, p-value = 0.09815

reprex package 于 2022 年 4 月 25 日创建(v2.0.1)

tidyverse

df %>% 
  group_by(species, trap) %>% 
  summarise(count = sum(count)) %>% 
  summarise(pvalue= chisq.test(count)$p.value) 

# A tibble: 3 × 2
  species  pvalue
  <fct>     <dbl>
1 species1 0.392 
2 species2 0.753 
3 species3 0.0981

关于r - R 数据框中不同组的卡方检验,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72001251/

相关文章:

r - 当文本输入在 Shiny 应用程序中为空时禁用操作按钮 [R]

r - 在R中过滤数据帧

r - 通过表格 y 轴上的组按组提取前 10 个值

r - 如何替换数据框中的特定单词

r - 如何在 ggplot2 注释中包含\perp 符号?

testing - Scala 的静态测试

ruby-on-rails - 单击第二个带有 capybara 的模糊链接

testing - 软件/Web 应用程序测试的最佳方法是什么?

sql - 使用 dplyr 创建 SQL 查询 "SELECT * FROM myTable LIMIT 10"

r if else 基于多个条件