如何在 R 中拟合脆弱的生存模型
How to fit frailty survival models in R
因为这是一个很长的问题,所以我把它分成了两部分;第一个只是基本问题,第二个提供了我到目前为止所尝试的详细信息。
问题 - 短
你如何在 R 中拟合个体虚弱生存模型?特别是,我试图在下面的 table 中重新创建系数估计和 SE,这是通过将半参数脆弱模型拟合到该数据集 link 中发现的。该模型采用以下形式:
h_i(t) = z_i h_0(t) exp(\beta'X_i)
其中 z_i
是每位患者的未知虚弱参数,X_i
是解释变量向量,\beta
是相应的系数向量,h_0(t)
是使用解释变量 disease、gender、bmi & age 的基线风险函数(我在下面包含了清理因子参考水平的代码)。
问题 - 长
我正在尝试遵循并重新创建 Modelling Survival Data in Medical Research 教科书示例以适应脆弱的 mdoels。我特别关注半参数模型,教科书为其提供了正常 cox 模型、对数正态脆弱性和 Gamma 脆弱性的参数和方差估计,如上所示 table
我能够使用
重新创建无脆弱性模型估计
library(dplyr)
library(survival)
dat <- read.table(
"./Survival of patients registered for a lung transplant.dat",
header = T
) %>%
as_data_frame %>%
mutate( disease = factor(disease, levels = c(3,1,2,4))) %>%
mutate( gender = factor(gender, levels = c(2,1)))
mod_cox <- coxph( Surv(time, status) ~ age + gender + bmi + disease ,data = dat)
mod_cox
但是我真的很难找到一个可以可靠地重新创建第二个 2 列的结果的包。在线搜索我发现这个 table 它试图总结可用的包:
下面我发布了我当前的发现以及我使用的代码 encase 它可以帮助别人确定我是否只是错误地指定了函数:
frailtyEM - 似乎最适用于伽玛,但不提供对数正态模型
frailtyEM::emfrail(
Surv(time, status) ~ age + gender + bmi + disease + cluster(patient),
data = dat ,
distribution = frailtyEM::emfrail_dist(dist = "gamma")
)
survival - 对 gamma 发出警告,从我读过的所有内容来看,它的脆弱功能似乎被归类为已贬值,建议改用 coxme。
coxph(
Surv(time, status) ~ age + gender + bmi + disease + frailty.gamma(patient),
data = dat
)
coxph(
Surv(time, status) ~ age + gender + bmi + disease + frailty.gaussian(patient),
data = dat
)
coxme - 似乎可行,但提供的估计与 table 中的估计不同,并且不支持伽马分布
coxme::coxme(
Surv(time, status) ~ age + gender + bmi + disease + (1|patient),
data = dat
)
frailtySurv - 我无法正常工作并且似乎总是用固定值 1 拟合方差参数并提供系数估计,就好像没有脆弱模型有已安装。此外,文档没有说明 frailty 参数支持哪些字符串,所以我不知道如何让它适合 log-normal
frailtySurv::fitfrail(
Surv(time, status) ~ age + gender + bmi + disease + cluster(patient),
dat = dat,
frailty = "gamma"
)
frailtyHL - 生成警告消息说 "did not converge" 但它仍然生成系数估计值,但它们与教科书不同
mod_n <- frailtyHL::frailtyHL(
Surv(time, status) ~ age + gender + bmi + disease + (1|patient),
data = dat,
RandDist = "Normal"
)
mod_g <- frailtyHL::frailtyHL(
Surv(time, status) ~ age + gender + bmi + disease + (1|patient),
data = dat,
RandDist = "Gamma"
)
frailtypack - 我根本不理解实现(或者至少它与教科书上讲的很不一样)。该函数需要指定节点和平滑器,这似乎会极大地影响结果估计。
parfm - 只适合参数化模型;话虽如此,每次我试图用它来拟合 weibull 比例风险模型时,它都会出错。
phmm - 还没试过
我非常感谢,因为我没有成功地获得大量的包,问题很可能是我自己没有正确理解实现而错过了使用这些包。任何有关如何成功重新创建上述估计的帮助或示例将不胜感激。
关于
I am really struggling to find a package that can reliably re-create the results of the second 2 columns.
参见 Survival Analysis CRAN task view under Random Effect Models or do a search on R Site Search,例如“生存脆弱”。
因为这是一个很长的问题,所以我把它分成了两部分;第一个只是基本问题,第二个提供了我到目前为止所尝试的详细信息。
问题 - 短
你如何在 R 中拟合个体虚弱生存模型?特别是,我试图在下面的 table 中重新创建系数估计和 SE,这是通过将半参数脆弱模型拟合到该数据集 link 中发现的。该模型采用以下形式:
h_i(t) = z_i h_0(t) exp(\beta'X_i)
其中 z_i
是每位患者的未知虚弱参数,X_i
是解释变量向量,\beta
是相应的系数向量,h_0(t)
是使用解释变量 disease、gender、bmi & age 的基线风险函数(我在下面包含了清理因子参考水平的代码)。
问题 - 长
我正在尝试遵循并重新创建 Modelling Survival Data in Medical Research 教科书示例以适应脆弱的 mdoels。我特别关注半参数模型,教科书为其提供了正常 cox 模型、对数正态脆弱性和 Gamma 脆弱性的参数和方差估计,如上所示 table
我能够使用
重新创建无脆弱性模型估计library(dplyr)
library(survival)
dat <- read.table(
"./Survival of patients registered for a lung transplant.dat",
header = T
) %>%
as_data_frame %>%
mutate( disease = factor(disease, levels = c(3,1,2,4))) %>%
mutate( gender = factor(gender, levels = c(2,1)))
mod_cox <- coxph( Surv(time, status) ~ age + gender + bmi + disease ,data = dat)
mod_cox
但是我真的很难找到一个可以可靠地重新创建第二个 2 列的结果的包。在线搜索我发现这个 table 它试图总结可用的包:
下面我发布了我当前的发现以及我使用的代码 encase 它可以帮助别人确定我是否只是错误地指定了函数:
frailtyEM - 似乎最适用于伽玛,但不提供对数正态模型
frailtyEM::emfrail(
Surv(time, status) ~ age + gender + bmi + disease + cluster(patient),
data = dat ,
distribution = frailtyEM::emfrail_dist(dist = "gamma")
)
survival - 对 gamma 发出警告,从我读过的所有内容来看,它的脆弱功能似乎被归类为已贬值,建议改用 coxme。
coxph(
Surv(time, status) ~ age + gender + bmi + disease + frailty.gamma(patient),
data = dat
)
coxph(
Surv(time, status) ~ age + gender + bmi + disease + frailty.gaussian(patient),
data = dat
)
coxme - 似乎可行,但提供的估计与 table 中的估计不同,并且不支持伽马分布
coxme::coxme(
Surv(time, status) ~ age + gender + bmi + disease + (1|patient),
data = dat
)
frailtySurv - 我无法正常工作并且似乎总是用固定值 1 拟合方差参数并提供系数估计,就好像没有脆弱模型有已安装。此外,文档没有说明 frailty 参数支持哪些字符串,所以我不知道如何让它适合 log-normal
frailtySurv::fitfrail(
Surv(time, status) ~ age + gender + bmi + disease + cluster(patient),
dat = dat,
frailty = "gamma"
)
frailtyHL - 生成警告消息说 "did not converge" 但它仍然生成系数估计值,但它们与教科书不同
mod_n <- frailtyHL::frailtyHL(
Surv(time, status) ~ age + gender + bmi + disease + (1|patient),
data = dat,
RandDist = "Normal"
)
mod_g <- frailtyHL::frailtyHL(
Surv(time, status) ~ age + gender + bmi + disease + (1|patient),
data = dat,
RandDist = "Gamma"
)
frailtypack - 我根本不理解实现(或者至少它与教科书上讲的很不一样)。该函数需要指定节点和平滑器,这似乎会极大地影响结果估计。
parfm - 只适合参数化模型;话虽如此,每次我试图用它来拟合 weibull 比例风险模型时,它都会出错。
phmm - 还没试过
我非常感谢,因为我没有成功地获得大量的包,问题很可能是我自己没有正确理解实现而错过了使用这些包。任何有关如何成功重新创建上述估计的帮助或示例将不胜感激。
关于
I am really struggling to find a package that can reliably re-create the results of the second 2 columns.
参见 Survival Analysis CRAN task view under Random Effect Models or do a search on R Site Search,例如“生存脆弱”。