分组数据的卡方检验,除了 r 中缺失值的某些组
Chi -Square test for grouped data excepting certain groups with missing values in r
我有这个数据:
df <- structure(list(`Orientación dicotómica` = c("Neurogastro", "Neurogastro",
"Neurogastro", "Neurogastro", "No neurogastro", "No neurogastro",
"No 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", "Obstrucción del tracto de salida",
"Tránsito lento / Inercia", "Transito normal", "Uso de fármacos"
), n = c(22L, 8L, 12L, 11L, 108L, 12L, 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,
11.5, 11.5, 19.6, 19.6, 19.6, 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 测试,以分析“neurogastro”和“no neurogastro”之间关于“fisiopatología más frecuente”是否存在统计学上的显着差异。
发表于
我试过了
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
产生警告是因为 table 中的最后一行只有很少的 observations/expected 值。模拟 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
我有这个数据:
df <- structure(list(`Orientación dicotómica` = c("Neurogastro", "Neurogastro",
"Neurogastro", "Neurogastro", "No neurogastro", "No neurogastro",
"No 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", "Obstrucción del tracto de salida",
"Tránsito lento / Inercia", "Transito normal", "Uso de fármacos"
), n = c(22L, 8L, 12L, 11L, 108L, 12L, 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,
11.5, 11.5, 19.6, 19.6, 19.6, 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 测试,以分析“neurogastro”和“no neurogastro”之间关于“fisiopatología más frecuente”是否存在统计学上的显着差异。
发表于
我试过了
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
产生警告是因为 table 中的最后一行只有很少的 observations/expected 值。模拟 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