如何从列线图提取预测的点得分并将其作为协变量包含在我的数据框中?

克里米亚

e在下面找到我的数据样本

问题:如何提取在诺模图中生成的分数,然后将其作为协变量包含在数据框中?我想包括每一行(即患者)的个性化分数。

我目前有

> head(e)
     rfs Ki67 WHO simpson age sex rad.dose recurrence
1  25.33  0.6   1       1  43   1        0          1
2 207.93  3.3   2       2  76   1        0          0
3  80.00  1.0   2       1  79   1        0          0
4  47.77  0.6   1       3  84   1        0          1
5 193.25  0.6   1       1  62   1        0          0
6   5.78  0.5   1       4  60   1        0          1

我想介绍一个新的协变量e$scoree$score应在每个病人的水平来计算,即每行的基础上,得分点从协变量产生e$Ki67e$simpsone$agee$sex

为此,我使用以下代码生成了列线图:

在此处输入图片说明

library(rms)
d <- datadist(e)
options(datadist="d")


e$simpson <- as.factor(e$simpson)
e$sex <- as.factor(e$sex)

a <- cph(Surv(rfs,recurrence)~Ki67+simpson+age+sex,data=e,surv=TRUE,x=TRUE,y=TRUE)

surv <- Survival(a)

nom <- nomogram(a, fun=list(function(x) surv(12, x),
                            function(x) surv(36, x),
                            function(x) surv(60, x)),
                funlabel=c("Probability of 1 year survival", 
                           "Probability of 3 years survival",
                           "Probability of 5 years survival"), lp=T)

plot(nom, xfrac=.2, 
     total.points.label="Sum of all points", 
     cex.axis = 1.05,
     #force.label = TRUE,
     tcl = 0.8,
     lmgp = 0.1,
     vnames="labels",
     col.grid=gray(c(0.85,0.95)))

那么,如何从中提取预测的分数nom呢?我可以看到有一个线性预测变量,并且我认为这可能很有用,但我只是想不出如何做。

因此,与病人Ki67=1 (11 point)simpson=2 (34 point)age=45 (7 point)sex=0 (0 point)拥有51的总成绩,因此应该有e$score=51

> print(nom)
Points per unit of linear predictor: 34.35364 
Linear predictor units per point   : 0.029109 


 Ki67 Points
 0.0   0    
 0.5   6    
 1.0  11    
 1.5  17    
 2.0  22    
 2.5  28    
 3.0  34    
 3.5  39    
 4.0  45    
 4.5  50    
 5.0  56    
 5.5  61    
 6.0  67    
 6.5  73    


 simpson Points
 1         0   
 2        34   
 3       100   
 4        92   


 age Points
 25  11    
 30  10    
 35   9    
 40   8    
 45   7    
 50   6    
 55   5    
 60   5    
 65   4    
 70   3    
 75   2    
 80   1    
 85   0    


 sex Points
 0    0    
 1   34    


 Total Points Probability of 1 year survival
          188                           0.60
          182                           0.65
          175                           0.70
          168                           0.75
          159                           0.80
          148                           0.85
          133                           0.90
          109                           0.95


 Total Points Probability of 3 years survival
          182                             0.3
          173                             0.4
          163                             0.5
          153                             0.6
          140                             0.7
          124                             0.8
           98                             0.9


 Total Points Probability of 5 years survival
          182                             0.1
          170                             0.2
          160                             0.3
          151                             0.4
          141                             0.5
          131                             0.6
          118                             0.7
          102                             0.8
           76                             0.9

我的资料 e

e <- structure(list(rfs = c(25.33, 207.93, 80, 47.77, 193.25, 5.78, 
6.08, 99.78, 0.69, 174.85, 30.75, 27.27, 162.27, 204.98, 122.81, 
2.79, 150.08, 200.02, 20.53, 22.28, 197.65, 94.23, 195.94, 92.19, 
6.93, 193.38, 14.09, 152.38, 49.15, 190.46, 50.56, 66.76, 188.58, 
188.42, 78.65, 125.77, 176.59, 185.69, 185.23, 184.71, 184.31, 
183.59, 181.49, 96.53, 180.63, 30.16, 65.71, 179.48, 111.47, 
122.61, 177.35, 176.66, 0.13, 67.15, 175.31, 5.78, 53.45, 86.74, 
174.65, 7.72, 169.53, 169.23, 41.99, 168.77, 167.69, 56.71, 163.84, 
163.81, 162.69, 162.63, 162.37, 119.59, 88.02, 160.1, 159.47, 
12.42, 155.56, 155.47, 155.27, 154.87, 56.18, 154.61, 9.33, 128.43, 
56.51, 150.67, 40.9, 50.79, 47.93, 147.91, 83.58, 146.1, 144.69, 
34.73, 142.82, 159.31, 140.58, 136.64, 135.52, 88.41), Ki67 = c(0.6, 
3.3, 1, 0.6, 0.6, 0.5, 3.7, 0.8, 1.4, 1.1, 1.8, 1.6, 0.7, 0.5, 
0.3, 0.2, 0.3, 0.9, 1.7, 0.5, 1.2, 4.1, 0.6, 1.4, 1.3, 1.8, 2.6, 
0.7, 0.8, 1, 0.7, 0.7, 2.1, 1.3, 2.7, 1.3, 0.8, 1.1, 1.8, 1.8, 
0.4, 0.9, 6.4, 1.7, 1.5, 0.6, 2.7, 0.4, 0.3, 1.5, 1.4, 1.8, 2.3, 
0.7, 2.4, 2.2, 2.8, 1.2, 0.6, 5.3, 0.8, 3, 4, 0.5, 1.2, 5.1, 
1.5, 0.6, 1.2, 1.7, 0.7, 1.4, 0.9, 2.7, 1.1, 0.9, 0.5, 0.7, 0.9, 
0.4, 1.2, 0.8, 0.7, 0.8, 0.5, 0.9, 3.3, 0.5, 1.2, 1.1, 1.4, 2.5, 
2.7, 0.7, 0.8, 4.2, 0.8, 0.5, 1.7, 1.2), WHO = c(1L, 2L, 2L, 
1L, 1L, 1L, 2L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 
1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 1L, 
1L, 1L, 2L, 2L, 2L, 1L, 1L, 2L, 1L, 2L, 2L, 2L, 1L, 2L, 1L, 2L, 
2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 3L, 1L, 
1L, 2L, 1L, 1L, 2L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 2L, 1L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 1L, 1L, 1L, 
1L), simpson = structure(c(1L, 2L, 1L, 3L, 1L, 4L, 3L, 4L, 2L, 
2L, 2L, 2L, 2L, 1L, 2L, 4L, 4L, 4L, 2L, 1L, 2L, 1L, 2L, 2L, 2L, 
2L, 1L, 1L, 1L, 3L, 2L, 1L, 1L, 1L, 2L, 1L, 1L, 2L, 2L, 2L, 1L, 
2L, 2L, 2L, 3L, 3L, 2L, 2L, 4L, 2L, 2L, 1L, 2L, 1L, 2L, 4L, 4L, 
2L, 1L, 4L, 1L, 2L, 2L, 2L, 2L, 3L, 1L, 1L, 2L, 1L, 1L, 2L, 4L, 
2L, 1L, 3L, 1L, 2L, 2L, 3L, 4L, 1L, 4L, 1L, 2L, 1L, 4L, 3L, 3L, 
4L, 3L, 2L, 1L, 4L, 4L, 2L, 2L, 2L, 2L, 2L), .Label = c("1", 
"2", "3", "4"), class = "factor"), age = c(43, 76, 79, 84, 62, 
60, 71, 76, 75, 69, 53, 70, 56, 45, 77, 63, 36, 41, 72, 56, 59, 
84, 72, 83, 80, 49, 50, 68, 49, 46, 50, 73, 51, 45, 42, 73, 56, 
63, 30, 67, 56, 58, 72, 51, 49, 68, 65, 60, 73, 64, 52, 65, 76, 
78, 74, 79, 61, 39, 30, 77, 66, 58, 49, 67, 53, 69, 41, 42, 66, 
57, 52, 25, 79, 64, 48, 51, 47, 46, 44, 68, 58, 41, 64, 76, 65, 
60, 56, 46, 54, 50, 66, 42, 46, 66, 74, 83, 72, 54, 51, 77), 
    sex = structure(c(2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 1L, 1L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 
    1L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 1L, 1L, 2L, 2L, 2L, 1L, 2L, 
    1L, 1L, 2L, 1L, 2L, 2L, 2L, 1L, 2L, 2L, 1L, 2L, 1L, 2L, 2L, 
    2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 1L, 2L, 2L, 
    2L, 2L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 2L, 2L, 2L, 1L, 
    1L, 1L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 1L, 2L, 1L, 1L, 1L
    ), .Label = c("0", "1"), class = "factor"), rad.dose = c(0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5.4, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5.4, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 5.4, 0, 0, 53.24, 5.4, 0, 0, 0, 0, 0, 0, 5.4, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5.4, 0, 0, 
    5.4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5.4, 0, 0, 5.4, 0, 0, 
    0, 0, 5.4, 0, 0, 0, 0, 0), recurrence = c(1L, 0L, 0L, 1L, 
    0L, 1L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 1L, 
    0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 
    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 
    0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 1L, 0L, 0L, 1L, 0L, 
    0L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 
    0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 1L, 0L, 0L, 1L, 
    0L, 0L, 0L, 0L, 0L, 1L)), row.names = c(NA, 100L), class = "data.frame")
苏里曼

我们可以子集nom起诉$然后使用apply

e$score <- apply(e, 1, function(x) 
                         nom$simpson$points[nom$simpson$simpson==x['simpson']] + 
                         nom$sex$points[nom$sex$sex==x['sex']] +
                         nom$age$points[nom$age$age==as.numeric(x['age'])] +
                         nom$Ki67$points[round(nom$Ki67$Ki67, 1)==round(as.numeric(x['Ki67']), 1)])

# the default for class 'nomogram' for print is dec=0, 
# so dec=1 will print the actual value of points, e.g.
print(nom, dec=1)

Points per unit of linear predictor: 34.35364 
Linear predictor units per point   : 0.029109 


 Ki67 Points
 0.2   0.0  
 0.3   1.1  
 0.4   2.2  
 0.5   3.4  
 0.6   4.5  

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

str。包含在pandas数据框中创建新列

如何使用r提取斜率并截取分段包产生的变量并将其放入数据框?

如何从数据框列中提取特定项目并将其用作其余项目的标签?

如何从R的数据框中的字符串中提取数字并将其放置在新列中?

我有一个数据框,我想在该列中搜索不同的字符串包含并将其替换为它们各自的备用名称

如何提取数据框的列标题(变量名称)并将其作为变量存储在其他数据框中?

如何从数据框中提取对角线元素并将其存储在变量中?

检索spark数据框数组列值,并将其作为UDF中的列名重用

从数据框列中提取值并将其插入行

从一列中提取数字并将其放在一个空列中,作为数据框熊猫中的int范围

如何在字符串中查找模式并将其提取为数据框的新列

如何从数据框col中提取特定值并将其放在另一列中?

如何在我的数据框中添加预测数据列?

如何从.txt文件提取数据并将其存储在2个单独的变量中?

将数据发送到新页面并将其包含在索引页面中

如何测量我的脚本运行需要多长时间,并将其包含在生成的电子邮件中?

如何转换数据框并将其包含在另一个数据框中

如何提取熊猫系列元素并将其与数据框列中的行进行比较

如何在数据框中提取年和周的数字并将其放在新列python中

rsyslog:如何从元数据中提取值并将其存储在变量中?

从数组中提取数据并将其包含在 javascript 中的对象中

如何检索数据框中的值并将其用作 R 中的变量?

如何从描述中提取数字并将其设置到熊猫数据框的另一列中

如何在数据步骤中使用变量而不将其作为列包含在 SAS 中

如何从一列中提取字符串并将其保存在熊猫数据框中的新列中?

如何从数据框中的列中提取数字并将其添加到新列中

如果目标变量未包含在二元分类任务的测试数据中,我应该如何预测它

如何编写 for 循环来迭代 DataFrame 并将其子集化以仅包含在每次迭代中检索到的那些列?

逐行循环遍历 Pandas 数据框,并将数据框的值包含在文件名中