从 tbl_merge 对象计算 p 值?
Calculating p-values from a tbl_merge object?
我一直在使用 R 函数 gtsummary,但现在 运行 遇到变量存在于彼此子集中的问题。我有两个可以独立地相互呈阳性的筛选测试,这造成了使用 by = with tbl_summary 的问题。这导致我创建两个单独的 tables 并将它们与 tbl_merge 函数组合。
但是,我想计算测试之间差异的 p 值。有什么方法可以用 table_merge 格式的对象来执行此操作,或者从中提取信息并计算我需要的统计信息?
根据请求,我 post 来自 mtcars 数据库的代码示例。
示例代码---------------------------------------- ------------------
data(mtcars)
mtcars_tab <- mtcars %>%
mutate(
drat_4 = ifelse(drat >= 4, 1, 0),
wtp_3 = ifelse(wt >= 3, 1, 0),
testp = ifelse(drat_4 == 1 | wtp_3 == 1, 1, 0)) %>%
select(testp,vs,am)
tab <-
tbl_summary(mtcars_tab,
missing = "no",
by = testp
) %>%
add_p
tab
Table 1
我想要的是 table 分成一列,其中 drat_4 为正,另一列 wtp_3 为正,但我很难这是因为它们重叠。此外,然后我将比较 drat_4 和 wtp_3 正例的变量,并将 p 值添加到 table。对不起,如果这令人困惑。我会尽力澄清!
非常感谢您对此的帮助!
我认为代码示例可以解决您的问题。您需要通过对两列进行适当比较来补充代码,同时考虑到这两个组并不相互排斥。
library(gtsummary)
library(tidyverse)
packageVersion("gtsummary")
#> [1] '1.4.0.9004'
mtcars_tab <-
mtcars %>%
mutate(
drat_4 = ifelse(drat >= 4, 1, 0),
wtp_3 = ifelse(wt >= 3, 1, 0)
) %>%
select(drat_4, wtp_3, cyl, mpg)
with(mtcars_tab, table(drat_4, wtp_3))
#> wtp_3
#> drat_4 0 1
#> 0 6 19
#> 1 6 1
# table among drat_4 test positive
tbl1 <-
mtcars_tab %>%
filter(drat_4 == 1) %>%
tbl_summary(
missing = "no",
type = mpg ~ "continuous",
include = -c(drat_4, wtp_3)
)
# table among wtp_3 test positive
tbl2 <-
mtcars_tab %>%
filter(wtp_3 == 1) %>%
tbl_summary(
missing = "no",
type = mpg ~ "continuous",
include = -c(drat_4, wtp_3)
)
# create a table with the variable and the p.value
tbl_with_pvalue <-
tibble(
variable = c("cyl", "mpg"),
row_type = "label",
# you'll need to write a proper function here to get the p-values from an approrate test
p.value = c(0.033, 0.044)
)
tbl_final <-
# merge the two tables
tbl_merge(list(tbl1, tbl2)) %>%
# add a pvalue comparing the two columns
modify_table_body(
~.x %>%
dplyr::left_join(
tbl_with_pvalue,
by = c("variable", "row_type")
)
) %>%
# add header for new pvalue column
modify_header(p.value ~ "**p-value**") %>%
# add a formatting function for p-value
modify_fmt_fun(p.value ~ style_pvalue)
由 reprex package (v2.0.0)
创建于 2021-05-06
我一直在使用 R 函数 gtsummary,但现在 运行 遇到变量存在于彼此子集中的问题。我有两个可以独立地相互呈阳性的筛选测试,这造成了使用 by = with tbl_summary 的问题。这导致我创建两个单独的 tables 并将它们与 tbl_merge 函数组合。
但是,我想计算测试之间差异的 p 值。有什么方法可以用 table_merge 格式的对象来执行此操作,或者从中提取信息并计算我需要的统计信息?
根据请求,我 post 来自 mtcars 数据库的代码示例。
示例代码---------------------------------------- ------------------
data(mtcars)
mtcars_tab <- mtcars %>%
mutate(
drat_4 = ifelse(drat >= 4, 1, 0),
wtp_3 = ifelse(wt >= 3, 1, 0),
testp = ifelse(drat_4 == 1 | wtp_3 == 1, 1, 0)) %>%
select(testp,vs,am)
tab <-
tbl_summary(mtcars_tab,
missing = "no",
by = testp
) %>%
add_p
tab
Table 1
我想要的是 table 分成一列,其中 drat_4 为正,另一列 wtp_3 为正,但我很难这是因为它们重叠。此外,然后我将比较 drat_4 和 wtp_3 正例的变量,并将 p 值添加到 table。对不起,如果这令人困惑。我会尽力澄清!
非常感谢您对此的帮助!
我认为代码示例可以解决您的问题。您需要通过对两列进行适当比较来补充代码,同时考虑到这两个组并不相互排斥。
library(gtsummary)
library(tidyverse)
packageVersion("gtsummary")
#> [1] '1.4.0.9004'
mtcars_tab <-
mtcars %>%
mutate(
drat_4 = ifelse(drat >= 4, 1, 0),
wtp_3 = ifelse(wt >= 3, 1, 0)
) %>%
select(drat_4, wtp_3, cyl, mpg)
with(mtcars_tab, table(drat_4, wtp_3))
#> wtp_3
#> drat_4 0 1
#> 0 6 19
#> 1 6 1
# table among drat_4 test positive
tbl1 <-
mtcars_tab %>%
filter(drat_4 == 1) %>%
tbl_summary(
missing = "no",
type = mpg ~ "continuous",
include = -c(drat_4, wtp_3)
)
# table among wtp_3 test positive
tbl2 <-
mtcars_tab %>%
filter(wtp_3 == 1) %>%
tbl_summary(
missing = "no",
type = mpg ~ "continuous",
include = -c(drat_4, wtp_3)
)
# create a table with the variable and the p.value
tbl_with_pvalue <-
tibble(
variable = c("cyl", "mpg"),
row_type = "label",
# you'll need to write a proper function here to get the p-values from an approrate test
p.value = c(0.033, 0.044)
)
tbl_final <-
# merge the two tables
tbl_merge(list(tbl1, tbl2)) %>%
# add a pvalue comparing the two columns
modify_table_body(
~.x %>%
dplyr::left_join(
tbl_with_pvalue,
by = c("variable", "row_type")
)
) %>%
# add header for new pvalue column
modify_header(p.value ~ "**p-value**") %>%
# add a formatting function for p-value
modify_fmt_fun(p.value ~ style_pvalue)