微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

分组数据的卡方检验,除了某些在 r 中具有缺失值的组

如何解决分组数据的卡方检验,除了某些在 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"))

看起来像这样:

enter image description here

我正在尝试使用分组数据进行 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 举报,一经查实,本站将立刻删除。