- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在对竞争风险比例风险模型进行交叉验证。在 mstate
的帮助下pacakge,我已经准备好我的数据并且正在用 survival::coxph
拟合它.我为我的训练数据获得了一个拟合的 Cox 模型对象,但我想用我的测试数据评估我的训练系数的部分可能性。
如果需要,我会自己编写部分似然函数,但我宁愿不写(尽管它可能对我有好处)。生存包计算in this C code ,但似然计算嵌入在拟合函数中。也许有一种方法可以修复参数,或者其他一些工具可以轻松获得部分可能性?
最小工作示例
# Adapted from examples in the mstate vignette
# http://cran.r-project.org/web/packages/mstate/vignettes/Tutorial.pdf
# beginning at the bottom of page 28
library(mstate)
library(survival)
# Get data. I add a second explanatory variable (badx) for illustration
# Also divide the data by subject into training and test sets.
data(aidssi)
si <- aidssi # Just a shorter name
si$badx <- sample(c("A", "B"), size = nrow(si), replace = TRUE)
si$fold <- sample(c("train", "test"), size = nrow(si), replace = TRUE, prob = c(0.7, 0.3))
tmat <- trans.comprisk(2, names = c("event-free", "AIDS", "SI"))
si$stat1 <- as.numeric(si$status == 1)
si$stat2 <- as.numeric(si$status == 2)
# Convert the data to a long competing risks format
silong <- msprep(time = c(NA, "time", "time"),
status = c(NA,"stat1", "stat2"),
data = si, keep = c("ccr5", "badx", "fold"), trans = tmat)
silong <- na.omit(silong)
silong <- expand.covs(silong, c("ccr5", "badx"))
train.dat <- subset(silong, fold == "train")
test.dat <- subset(silong, fold == "test")
> head(silong)
An object of class 'msdata'
Data:
id from to trans Tstart Tstop time status ccr5 badx fold ccr5WM.1 ccr5WM.2 badxB.1 badxB.2
1 1 1 2 1 0 9.106 9.106 1 WW A train 0 0 0 0
2 1 1 3 2 0 9.106 9.106 0 WW A train 0 0 0 0
3 2 1 2 1 0 11.039 11.039 0 WM B train 1 0 1 0
4 2 1 3 2 0 11.039 11.039 0 WM B train 0 1 0 1
5 3 1 2 1 0 2.234 2.234 1 WW B train 0 0 1 0
6 3 1 3 2 0 2.234 2.234 0 WW B train 0 0 0 1
ccr5
变量可以建模为特定于转换的,或对所有转换具有相等比例的影响。这些模型是:
train.mod.equal <- coxph(Surv(time, status) ~ ccr5 + badx + strata(trans),
data = train.dat)
train.mod.specific <- coxph(Surv(time, status) ~ ccr5WM.1 + ccr5WM.2 + badx + strata(trans),
data = train.dat)
ccr5
应该是特定于过渡的。
# We can fit the same models to the test data,
# this yields new parameter estimates of course,
# but the model matrices might be useful
test.mod.equal <- coxph(Surv(time, status) ~ ccr5 + badx + strata(trans),
data = test.dat)
test.mod.specific <- coxph(Surv(time, status) ~ ccr5WM.1 + ccr5WM.2 + badx + strata(trans),
data = test.dat)
test.eq.mm <- model.matrix(test.mod.equal)
test.sp.mm <- model.matrix(test.mod.specific)
# We can use these to get the first part of the sum of the partial likelihood:
xbeta.eq <- test.eq.mm[test.dat$status == 1, ] %*% coef(train.mod.equal)
xbeta.sp <- test.sp.mm[test.dat$status == 1, ] %*% coef(train.mod.specific)
# We can also get linear predictors
lp.eq <- predict(train.mod.equal, newdata = test.dat, type = "lp")
lp.sp <- predict(train.mod.specific, newdata = test.dat, type = "lp")
最佳答案
这就是我在写作时提出的建议:“你能计算一个“新模型”吗(使用 [新数据] 和一个公式,该公式包括一个[构建] beta 估计[从原始拟合] 的偏移量,然后使用 summary(mdl)
为你做繁重的工作?你甚至可以用 predict.coxph 计算偏移量。结果我不需要使用 summary.coxph
,因为 print.coxph
给出了 LLR 统计数据。
lp.eq <- predict(train.mod.equal, newdata = test.dat, type = "lp")
eq.test.mod <- coxph(Surv(time, status) ~ ccr5 + badx + strata(trans)+offset(lp.eq),
data=test.dat )
eq.test.mod
Call:
coxph(formula = Surv(time, status) ~ ccr5 + badx + strata(trans) +
offset(lp.eq), data = test.dat)
coef exp(coef) se(coef) z p
ccr5WM -0.20841 0.812 0.323 -0.6459 0.52
badxB -0.00829 0.992 0.235 -0.0354 0.97
Likelihood ratio test=0.44 on 2 df, p=0.804 n= 212, number of events= 74
> diff(eq.test.mod$loglik)
[1] 0.399137
> coxph(Surv(time, status) ~ ccr5 + badx + strata(trans),
+ data=test.dat)
Call:
coxph(formula = Surv(time, status) ~ ccr5 + badx + strata(trans),
data = test.dat)
coef exp(coef) se(coef) z p
ccr5WM -0.8618 0.422 0.323 -2.671 0.0076
badxB -0.0589 0.943 0.235 -0.251 0.8000
Likelihood ratio test=8.42 on 2 df, p=0.0148 n= 212, number of events= 74
> lp.eq2 <- predict(train.mod.equal, newdata = train.dat, type = "lp")
> coxph(Surv(time, status) ~ ccr5 + badx + strata(trans)+offset(lp.eq2),
+ data=train.dat)
Call:
coxph(formula = Surv(time, status) ~ ccr5 + badx + strata(trans) +
offset(lp.eq2), data = train.dat)
coef exp(coef) se(coef) z p
ccr5WM -4.67e-12 1 0.230 -2.03e-11 1
badxB 2.57e-14 1 0.168 1.53e-13 1
Likelihood ratio test=0 on 2 df, p=1 n= 436, number of events= 146
关于r - 有没有办法用新数据和固定系数获得 Cox PH 模型的部分似然?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26721551/
在 xgboost 0.81 中 cox ph 生存模型的新实现中,如何指定事件的开始和结束时间? 谢谢 例如,R 等效函数是: cph_mod = coxph(Surv(Start, Stop, S
我正在尝试运行一个具有时间交互变量的非比例 cox 回归模型,如 Singer 和 Willett 所著的应用纵向数据分析 第 15 章(第 15.3 节)所述。但是我似乎无法得到与这本书一致的答案。
您好,我正在使用生命线包进行 Cox 回归。我想检查非二元分类变量的影响。有内置的方法吗?或者我应该将每个类别因子转换为一个数字?或者,在生命线中使用 kmf fitter,是否可以对每个因素执行此操
我有以下模型: coxph(Surv(fulength, mortality == 1) ~ pspline(predictor)) 其中 fulength 是随访时间(包括死亡率),predicto
我建立了一个生存 cox 模型,其中包括一个 covariate * time相互作用(检测到非比例性)。 我现在想知道如何才能最轻松地从我的模型中获得生存预测。 我的模型被指定: coxph(for
我有一个带有 5 个时间相关变量和 2 个时间独立变量的 coxph 模型。我想使用 cox.zph 测试比例风险假设以及鞅和偏差残差。我的问题是,这个函数如何处理与时间相关的协变量? 阅读 Gran
cellphone = read.csv("/Users/crystalchau/Desktop/UICT-CELL_IND.csv", nrows = 25, colClasses = c(NA,N
我需要为几个变量运行cox回归模型,所以我想写一个循环来实现它。但它无论如何都行不通。下面是我使用的代码 names(Gen) varlist <- names(hsb2)[8:11] ## get
Python中有生存分析的包吗?具体来说,我有兴趣执行 Cox 回归? 我知道这个example但它在 R 中。我们可以将 Python 与 R 连接起来吗(例如,使用 rpy2 )? 最佳答案 Py
早上好, 在匹配案例/对照研究后,我一直试图在 R 中进行分层逻辑回归,但遇到了我认为意外的错误。我使用 mtcars 数据集重现了错误: test=mtcars test$am=as.factor(
我正在对竞争风险比例风险模型进行交叉验证。在 mstate 的帮助下pacakge,我已经准备好我的数据并且正在用 survival::coxph 拟合它.我为我的训练数据获得了一个拟合的 Cox 模
有谁知道似然比检验,如 lmtest 包中的 lrtest ,它适用于使用 coxph 生成的 cox 比例风险模型? lrtest 似乎不适用于 coxph 模型。 谢谢 最佳答案 pkg:surv
我有一个 Cox 回归,它使用 strata() 和一个 tt()。 是否有任何软件包可以帮助以表格格式生成美观、信息丰富的结果输出?虽然 ggforest() 处理 tt(),但它不处理 strat
我有一个 Cox 回归,它使用 strata() 和一个 tt()。 是否有任何软件包可以帮助以表格格式生成美观、信息丰富的结果输出?虽然 ggforest() 处理 tt(),但它不处理 strat
我正在尝试在 theano 中实现 cox 回归。 我使用逻辑回归教程 (http://deeplearning.net/tutorial/logreg.html) 作为框架,并将逻辑对数似然 (LL
我正在使用 SciPy's boxcox function执行 Box-Cox transformation在一个连续变量上。 from scipy.stats import boxcox impor
我正在使用生存包在 R 中进行分层 cox 回归: cox <- coxph(response~strata(x), data=data) 这很好用,但是当使用 sampling 包时,surviva
在 R 中运行 Cox PH 回归后,我需要在数据框中添加预测风险比的列。数据框是面板数据,其中 numgvkey 如果公司标识符和年龄是时间标识符。您可以从此链接下载日期的一小部分: https:/
我在 R 中使用以下代码建立了一个 Cox 比例风险模型,该模型可以预测死亡率。添加协变量 A、B 和 C 只是为了避免混淆(即年龄、性别、种族),但我们真正对预测变量 X 感兴趣。X 是一个连续变量
我想通过计算方差膨胀因子 (VIF) 来评估 cox 比例风险模型中的多重共线性。 {car} 等包中的 vif 函数不接受 coxph 对象。 有没有办法计算 R 中 cox 模型的 VIF? 最佳
我是一名优秀的程序员,十分优秀!