Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何预测R中的生存概率?_R_Probability_Prediction_Survival Analysis - Fatal编程技术网

如何预测R中的生存概率?

如何预测R中的生存概率?,r,probability,prediction,survival-analysis,R,Probability,Prediction,Survival Analysis,我把名为“退伍军人”的数据存储在R中。我创建了一个生存模型,现在希望预测生存概率预测。例如,具有80karno值、10diagtime、年龄65岁且previor=10和trt=2的患者寿命超过100天的概率是多少 在这种情况下,设计矩阵为x=(1,0,1,0,80,10,65,10,2) 这是我的密码: library(survival) attach(veteran) weibull <- survreg(Surv(time,status)~celltype + karno+diagt

我把名为“退伍军人”的数据存储在R中。我创建了一个生存模型,现在希望预测生存概率预测。例如,具有80
karno
值、10
diagtime
、年龄
65岁且
previor=10
trt=2
的患者寿命超过100天的概率是多少

在这种情况下,设计矩阵为
x=(1,0,1,0,80,10,65,10,2)

这是我的密码:

library(survival)
attach(veteran)
weibull <- survreg(Surv(time,status)~celltype + karno+diagtime+age+prior+trt ,dist="w")
库(生存)
随员(退伍军人)

weibull您可以使用predict.survreg生成具有不同分位数的个体病例的预测生存时间(您将值传递给
newdata
):

 casedat <- list(celltype="smallcell", karno =80, diagtime=10, age= 65 , prior=10 , trt = 2)
 predict(weibull, newdata=casedat,  type="quantile", p=(1:98)/100)
 [1]   1.996036   3.815924   5.585873   7.330350   9.060716  10.783617
 [7]  12.503458  14.223414  15.945909  17.672884  19.405946  21.146470
[13]  22.895661  24.654597  26.424264  28.205575  29.999388  31.806521
[19]  33.627761  35.463874  37.315609  39.183706  41.068901  42.971927
[25]  44.893525  46.834438  48.795420  50.777240  52.780679  54.806537
[31]  56.855637  58.928822  61.026962  63.150956  65.301733  67.480255
[37]  69.687524  71.924578  74.192502  76.492423  78.825521  81.193029
[43]  83.596238  86.036503  88.515246  91.033959  93.594216  96.197674
[49]  98.846083 **101.541291** 104.285254 107.080043 109.927857 112.831032
[55] 115.792052 118.813566 121.898401 125.049578 128.270334 131.564138
[61] 134.934720 138.386096 141.922598 145.548909 149.270101 153.091684
[67] 157.019655 161.060555 165.221547 169.510488 173.936025 178.507710
[73] 183.236126 188.133044 193.211610 198.486566 203.974520 209.694281
[79] 215.667262 221.917991 228.474741 235.370342 242.643219 250.338740
[85] 258.511005 267.225246 276.561118 286.617303 297.518110 309.423232
[91] 322.542621 337.160149 353.673075 372.662027 395.025122 422.263020
[97] 457.180183 506.048094
#asterisks added

您可以查看函数
predict.survreg
,该函数将允许您计算生存概率。您是否尝试了
predict()
函数?为了便于其他人帮助您,请提供一个示例输入,以便我们测试不同的解决方案。另外,您应该学会避免使用
attach()
,只在建模函数中使用
data=
参数。@MrFlick,以我的方式使用attach()会对结果产生任何影响吗?还有,我怎么能像你们一样用彩色背景写代码呢?我使用了预测函数,但它产生的是生存时间,而不是概率。我说得对吗?结果没有什么不同,但使用
attach()
不是最佳做法。你如何定义“生存概率”?我想,你通常需要知道某个特定的时间。包括不同类型的预测。查看
predict
函数中的参数
type
,谢谢您的回答。为了确保我正确理解你的意思,一个病人超过500人的概率是1/98。是这样吗?你能简要解释一下这些预测的含义吗?分位数代表的是危险,而不是生存。如果将1-p标绘为y值,则会得到典型的估计生存率,时间>506的分位数为98/100,而不是1/98。
png(); plot(x=predict(weibull, newdata=casedat,  type="quantile", 
             p=(1:98)/100),  y=(1:98)/100 , type="l") 
dev.off()