首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类似于cox回归风险模型,我们可以使用survivalsvm得到生存曲线和风险比吗?

类似于cox回归风险模型,我们可以使用survivalsvm得到生存曲线和风险比吗?
EN

Stack Overflow用户
提问于 2020-10-13 01:09:08
回答 1查看 81关注 0票数 1

我是一个初学者,试图使用机器学习在肺癌数据集上进行生存分析。我知道如何使用Cox比例风险模型进行生存分析。Cox比例风险模型给我们提供了风险比,它只是回归系数的指数。我想知道,我们是否可以使用机器学习来做同样的事情。作为一个初学者,我正在尝试R语言中的survivalsvm。请参阅link获取相关信息。我正在使用内置的癌症数据进行生存分析。以下是在这个link上给出的R代码。

代码语言:javascript
复制
library(survival)
library(survivalsvm)

set.seed(123)
n <- nrow(veteran)
train.index <- sample(1:n, 0.7 * n, replace = FALSE)
test.index <- setdiff(1:n, train.index)
survsvm.reg <- survivalsvm(Surv(diagtime, status) ~ ., 
                            subset = train.index, data = veteran,
                            type = "regression", gamma.mu = 1,
                            opt.meth = "quadprog", kernel = "add_kernel")
print(survsvm.reg)
pred.survsvm.reg <- predict(object = survsvm.reg,
                             newdata = veteran, subset = test.index)
print(pred.survsvm.reg)

有人能帮我得到这个数据集的风险比或生存曲线吗?另外,如何解释此函数的输出

EN

回答 1

Stack Overflow用户

发布于 2020-12-18 01:49:32

这个问题现在有点老了,但我还是要回答,因为这是一个困难的问题,当我第一次使用它时,我一直在与{survivalsvm}作斗争。

因此,根据type参数,您会得到不同的输出。在你的例子中,type = "regression"意味着你正在绘制Shivaswamy的(希望我拼写正确) SVCR,它预测直到事件发生的时间,所以这些是生存时间预测。

为了将其转换为生存曲线,您必须对生存分布的形状做出一些假设。例如,假设生存时间是N(mu, sigma)的正态分布。然后,您可以使用预测的生存时间作为mu,并对sigma进行预测或假设。

下面是一个使用您的代码和我的{distr6}包的示例,它可以快速计算许多分布以及打印和绘制函数:

代码语言:javascript
复制
library(survival)
library(survivalsvm)
set.seed(123)
n <- nrow(veteran)
train.index <- sample(1:n, 0.7 * n, replace = FALSE)
test.index <- setdiff(1:n, train.index)
survsvm.reg <- survivalsvm(Surv(diagtime, status) ~ ., 
                           subset = train.index, data = veteran,
                           type = "regression", gamma.mu = 1,
                           opt.meth = "quadprog", kernel = "add_kernel")
print(survsvm.reg)
pred.survsvm.reg <- predict(object = survsvm.reg,
                            newdata = veteran, subset = test.index)


# load distr6
library(distr6)

# create a vector of normal distributions each with
# mean as the predicted time and with variance 1
# `decorators = "ExoticStatistics"` adds survival function
v = VectorDistribution$new(distribution = "Normal",
                       params = data.frame(mean = as.numeric(pred.survsvm.reg$predicted)),
                       shared_params = list(var = 1),
                       decorators = "ExoticStatistics")
# survival function evaluated at times = 1:10
v$survival(1:10)
# plot survival function for first individual
plot(v[1], fun = "survival")
# plot hazard function for first individual
plot(v[1], fun = "hazard")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64322294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档