概述
我想使用Chi、Street 和 Wolberg撰写的题为“基于人工神经网络的生存分析在两个乳腺癌数据集上的应用”的论文中描述的神经网络来模拟生存预测,其中评估并返回代表时间点的 1 的目标向量概率的向量。不幸的是,他们没有提供用于创建该方法的软件。
例如,需要在神经网络中训练具有time
、 (表示活着或死亡)和其他预测变量的数据集。status
将有一个数据结构来保存研究需要的时间点(例如{1,1,1,1,1,1}
,三年中的六个月间隔)。考虑到上述预测变量后,该模型的输出将如下所示:{0.98761,0.91111,0.82710,0.70003,0.64253,0.47181}
对应于:
6 12 18 24 30 36
1 0.98761 0.91111 0.82710 0.70003 0.64253 0.47181
2 ...
这些数据可用于将来输入网络的记录。
R 神经网络包
我一直在寻找在nnet
,neuralnet
和rminer
包中实现这一点的方法,不幸的是我有限的知识无法修改它们以满足我的需要。我只知道这些预测名义值和数值,但现在如何做向量。
到目前为止,这些包中与预测相关的函数并未提示使用向量作为输出。
nnet
的predict()
描述清楚地说明如下。通过训练有素的神经网络预测新示例。
# X1, X2, and the rest of predictive variables model.nnet <- nnet(Surv(time,status)~X1+X2, data=data.train, size=1, maxit=500)
neuralnet
'scompute()
不支持类似目标向量的支持。针对给定协变量向量计算给定神经网络。
rminer
'spredict()
并lforecast()
证明有潜力(基于示例),但我不知道如何将它们转变为我想做的事情。据说该
survnnet
软件包支持该软件包predictSurvProb
的常用功能,但由于 Internet 上的文档和支持不佳,我没有使用它。pec
通过训练有素的生存神经网络预测新示例。
model.survnet <- survnnet(Surv(time,status)~X1+X2, data=dat, model='llog', decay=0.1, bias.decay=25, size=1, skip=T, alpha=0.1) predictions <- predict(model.survnet, data.train, type="raw")
Cox PH(目前已知的方法)
coxph
到目前为止,我得到的最接近的方法是cph
应用于使用数字兴趣点声明变量的predictSurvProb
函数。times
通常我这样做:
data.train <- SimSurv(300)
model.coxph <- cph(Surv(time,status)~X2,data=dat,surv=TRUE,x=TRUE,y=TRUE)
# declare target times as 25,50,75,100,150 for probabilities
predictions <- predictSurvProb(coxph12, newdata=data.train, times=c(25,50,75,100,150))
round(predictions, digits=6)
我会得到我指定的每个时间段的概率输出:
25 50 75 100 150
1 0.648268 0.509353 0.460196 0.425917 0.324364
2 0.648268 0.509353 0.460196 0.425917 0.324364
3 0.756732 0.648020 0.607077 0.577596 0.484789
4 0.648268 0.509353 0.460196 0.425917 0.324364
5 0.648268 0.509353 0.460196 0.425917 0.324364
这些现在可以作为新变量集成到数据集中用于其他目的。
我现在想在具有目标向量的神经网络中实现这一点,或者像上面的例子一样,实现与 Cox PH 过程类似的实现。
不幸的是,正如我之前所说,我无法在网上找到一个简单的软件包或教程来说明这是否可行。
我检查了数据挖掘软件 WEKA 的MultilayerPerceptron
实现,但它要求结果变量(或者在我的情况下是概率向量)首先存在,这将我带回到 R 中。
这种方法在这些 R 包中是否可行,或者唯一的方法是创建我自己的?所有帮助和建议将不胜感激。