如何解决分组数据的卡方检验,除了某些在 r 中具有缺失值的组
我有这个数据:
df <- structure(list(`Orientación dicotómica` = c("Neurogastro","Neurogastro","No neurogastro","No neurogastro"),`Fisiopatología más frecuente variante constipación` = c("Más de una variante","Obstrucción del tracto de salida","Tránsito lento / Inercia","Transito normal","Más de una variante","Uso de fármacos"
),n = c(22L,8L,12L,11L,108L,101L,25L,1L),Proporcion = c(41.5,15.1,22.6,20.8,43,4.8,40.2,10,0.4),ds = c(11.5,11.5,19.6,19.6),IC25 = c(32,5.6,13.1,11.3,29.8,-8.4,27,-3.2,-12.8),IC75 = c(51,24.6,32.1,30.3,56.2,18,53.4,23.2,13.6)),row.names = c(NA,-9L
),class = c("tbl_df","tbl","data.frame"),na.action = structure(c(`10` = 10L),class = "omit"))
看起来像这样:
我正在尝试使用分组数据进行 chisq 检验,以分析“神经胃”和“无神经胃”在“fisiopatología más frecuente”方面是否存在统计学上的显着差异。
如在 Chi -Square test with grouped data in dplyr 中发布
我试过了
test <- df %>%
group_by(`Fisiopatología más frecuente variante constipación`) %>%
summarise(pval = chisq.test(Proporcion,`Orientación dicotómica`)$p.value)
但我得到一个错误,我猜是因为没有神经胃的“Uso de fármacos”。我的方法好吗?除了缺失的一组之外,我如何为其余组运行测试?
谢谢!
解决方法
尝试使用 xtabs
:
tbl <- xtabs(n ~ `Fisiopatología más frecuente variante constipación` + `Orientación dicotómica`,df)
tbl
# Orientación dicotómica
# Fisiopatología más frecuente variante constipación Neurogastro No neurogastro
# Más de una variante 22 108
# Obstrucción del tracto de salida 8 12
# Tránsito lento / Inercia 12 101
# Transito normal 11 25
# Uso de fármacos 0 1
chisq.test(tbl)
#
# Pearson's Chi-squared test
#
# data: tbl
# X-squared = 15.092,df = 4,p-value = 0.004514
#
# Warning message:
# In chisq.test(tbl) : Chi-squared approximation may be incorrect
chisq.test(tbl)$p.value
# [1] 0.00451449
# Warning message:
# In chisq.test(tbl) : Chi-squared approximation may be incorrect
产生警告是因为表中的最后一行具有很少的观察值/预期值。模拟 p 值可能会更好,尽管在这种情况下它似乎对 p 值没有影响:
chisq.test(tbl,simulate.p.value=TRUE)
#
# Pearson's Chi-squared test with simulated p-value (based on 2000 replicates)
#
# data: tbl
# X-squared = 15.092,df = NA,p-value = 0.004498
获取每一行的结果:
results <- apply(tbl,1,chisq.test)
sapply(results,function(x) x$p.value)
# Más de una variante Obstrucción del tracto de salida Tránsito lento / Inercia Transito normal
# 4.603430e-14 3.710934e-01 5.644889e-17 1.963066e-02
# Uso de fármacos
# 3.173105e-01
或
sapply(results,"[","p.value")
# $`Más de una variante.p.value`
# [1] 4.60343e-14
#
# $`Obstrucción del tracto de salida.p.value`
# [1] 0.3710934
#
# $`Tránsito lento / Inercia.p.value`
# [1] 5.644889e-17
#
# $`Transito normal.p.value`
# [1] 0.01963066
#
# $`Uso de fármacos.p.value`
# [1] 0.3173105
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。