所有因子水平在 coxph 中成为参考值

问题描述

在这里摸索了一段时间,我真的不知道在 ggforest 中处理 hr 绘图时我的因素有什么问题。

从第一张图可以看出,教育变量有一个参考值,其他值都有风险,完美!

Working great - wow!

问题是因子水平的名称很短而且信息量不足,所以我当然想更改名称以便您理解它们的含义。但是,现在除了“未知”之外的所有值都成为参考值,但我所做的只是更改名称(我希望)。

What the hell?

一开始我想可能是使用长名称或其他东西有问题,但我用一些假数据尝试了同样的事情,完全没有问题。

library(survminer)
library(tidyverse)

n <- 200
m <- 6
p <- round(runif(n,4,m))

dat <- data.frame(id=rep(1:n,times=p))

gendertable <- data.frame(id = unique(dat$id),gender = sample(0:1,length(unique(dat$id)),replace = T))

birthtable <- data.frame(id = unique(dat$id),birth_year = sample(c(1960,1970,1980,1990),replace = TRUE))

dat <- dat %>%
  mutate(pain_lvl = sample(c(4,3,2,1),size = nrow(dat),prob = c(0.2,0.2,0.25,0.35),replace = TRUE))

dat <- merge(gendertable,dat)
dat <- merge(birthtable,dat)

dat <- dat %>%
  group_by(id) %>%
  mutate(period = row_number())

dat$start <- dat$period - 1
dat$stop <- dat$period

dat <- dat %>%
  group_by(id) %>%
  mutate(event = ifelse(stop == n() & stop < 5,1,0))

dat$birth_year <- as.factor(dat$birth_year)
dat$gender <- as.factor(dat$gender)
dat <- dat %>%
  mutate(gender.factor = recode(as.factor(gender),`0` = "Male",`1` = "Female")) %>%
  mutate(pain_lvl.factor = recode(as.factor(pain_lvl),`1` = "Very low-level",`2` = "Medium-level",`3` = "High-level",`4` = "Very High very high indeed"))





model <- coxph(Surv(start,stop,event) ~ birth_year + gender.factor + pain_lvl.factor,ties = c("efron"),data = dat)


ggforest(model)

Nice!

那么问题是根源于我的数据而不是 ggforest 还是我犯了其他错误?如果有人可以查看我的数据并希望了解问题所在,我将不胜感激。链接https://easyupload.io/0fo866 csv file

我使用以下代码读取表格、转换因子、重新编码值等

library(survial)
library(survminer)
library(tidyverse)

dat <- read.table("~/dat.csv",header = TRUE,sep = ";")

dat[dat==""]<-NA

dat <- dat %>%
  mutate(education = recode(education,"low" = "Low-level education","middle" = "Mid-level education","high" = "High-level education"))


dat <- dat %>%
  mutate(education = ifelse(is.na(education),"UnkNown",education))


dat <- dat %>%
  mutate(female.factor = recode(as.factor(female),`0` = "No",`1` = "Yes"))

dat <- dat %>%
  mutate(education.factor = as.factor(str_to_sentence(education)))

dat <- dat %>%
  mutate(birth_year.factor = (as.factor(birth_year)))


model1 <- coxph(Surv(start,event) ~ birth_year.factor + female.factor + education.factor + frailty(id),data = dat)


ggforest(model1)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)