问题描述
我在这里摸索了一段时间,我真的不知道在 ggforest 中处理 hr 绘图时我的因素有什么问题。
从第一张图可以看出,教育变量有一个参考值,其他值都有风险,完美!
问题是因子水平的名称很短而且信息量不足,所以我当然想更改名称以便您理解它们的含义。但是,现在除了“未知”之外的所有值都成为参考值,但我所做的只是更改名称(我希望)。
一开始我想可能是使用长名称或其他东西有问题,但我用一些假数据尝试了同样的事情,完全没有问题。
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)
那么问题是根源于我的数据而不是 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 (将#修改为@)