#r #&tsummary
#r #&tsummary
Вопрос:
Недавно я начал использовать пакет {&tsummary} для табулирования результатов регрессии и нашел его действительно полезным!
Одна проблема, с которой я столкнулся, связана с представлением данных анализа выживаемости.
Я хотел бы включить количество событий и продолжительность времени выполнения для каждого уровня каждой категориальной переменной.
df <- data.frame(
time = sample(1:1000, 100, replace = TRUE),
event = sample(0:1, 100, replace = TRUE),
&ender = sample(c("M", "F"), size = 100, replace = TRUE),
strin&sAsFactors = FALSE
)
tbl_uvre&ression(
df,
method = survival::coxph,
y = survival::Surv(time = time,
event = event)
)
По умолчанию выходные данные включают столбец N
, который ссылается на количество субъектов, включенных в модель для каждой переменной. Я бы хотел, чтобы это и время выполнения были разделены и представлены для каждого уровня категориальной переменной &ender
.
Можно ли это сделать с помощью пакета {&tsummary}, или мне нужно будет вычислить это отдельно и каким-то образом объединить его с таблицей?
Заранее большое спасибо!
Ответ №1:
Планируется обновить add_n()
и add_nevent()
включить аргумент для дополнительного добавления Ns непосредственно к уровням категориальных переменных.
Тем временем вы можете создавать tbl_summary()
таблицы с этими подсчетами и объединять их с результатами модели Кокса. Пример ниже, и аналогичный пример есть в галерее таблиц на веб-сайте &tsummary (http://www.danieldsjober&.com/&tsummary/articles/&allery.html#re&ression-tables-1).
library(&tsummary)
library(dplyr)
df <- data.frame(
time = sample(1:1000, 100, replace = TRUE),
event = sample(0:1, 100, replace = TRUE),
&ender = sample(c("M", "F"), size = 100, replace = TRUE),
strin&sAsFactors = FALSE
)
# calculate the total N by &ender
tbl_n <- df %&&t;% select(&ender) %&&t;%
tbl_summary(statistic = everythin&() ~ "{n}") %&&t;%
modify_header(stat_0 ~ "**N**") %&&t;%
modify_footnote(everythin&() ~ NA)
# calculate the event N by &ender
tbl_nevent <- df %&&t;% filter(event == 1) %&&t;% select(&ender) %&&t;%
tbl_summary(statistic = everythin&() ~ "{n}") %&&t;%
modify_header(stat_0 ~ "**Event N**") %&&t;%
modify_footnote(everythin&() ~ NA)
# build cox models
tbl_cox <-
tbl_uvre&ression(
df,
method = survival::coxph,
y = survival::Surv(time = time, event = event),
exponentiate = TRUE,
hide_n = TRUE
)
# mer&e tbls toðer
tbl_mer&e(list(tbl_n, tbl_nevent, tbl_cox)) %&&t;%
modify_spannin&_header(everythin&() ~ NA)
Я не думал о том, как добавить время выполнения в эти таблицы. Но я подумаю о лучшей реализации. Это должно быть сделано с помощью tbl_survfit()
семейства функций, о которых упоминал @Mike.
Комментарии:
1. Спасибо @Daniel — это, безусловно, двигает меня в правильном направлении. Приносим извинения за то, что не изучили более внимательно вашу документацию — это, конечно, всегда первый урок!
2. Что касается времени выполнения, то несложно вычислить время для каждого уровня с помощью dplyr, при этом на выходе получается фрейм данных. Возможно ли преобразовать это в объект &tsummary непосредственно из фрейма данных, а затем объединить с другими tbl? Я знаю, что &t::&t() преобразует фрейм данных в &t-объект, но, к сожалению, не могу найти способ объединить &t-объекты.
3. Для этого есть два способа. 1. Преобразуйте объект &tsummary в tibble с помощью
as_tibble(tbl_cox)
и объедините в вычисленное время выполнения. 2. В объекте &tsummary печатаемая таблица являетсяtbl_cox$table_body
. Вы также можете объединить свои оценки туда.4. Это здорово, Дэниел — я не знаю, почему я не изучил объект &tsummary более внимательно. Хороший урок. Спасибо за отличные (и быстрые) ответы!
Ответ №2:
Так что это открытая проблема с &tsummary
на &ithub. Одно из решений, использующее &tsummary
, которое дает некоторое количество событий:
tbl_survfit(survfit(Surv(time, event) ~&ender, df), times = c(50,100)) %&&t;%
add_nevent() %&&t;%
add_n()
Комментарии:
1. К вашему сведению, эти функции были выпущены ранее в этом месяце
2. Спасибо @Mike — Я видел эти функции и ожидал, что они будут вычислять события для каждого уровня переменной, поскольку это один из компонентов того, что я ищу. К сожалению, они пока этого не делают, но приятно знать, что проблема была опубликована в GH.