Error in roc.default(x, predictor, plot = TRUE, ...) : Predictor must be numeric or ordered.

在跟视频对特征基因进行ROC分析时,我遇到如下错误:

hubgenes_expression如下(第一列为基因名,行为样本名):

分析错误

Error in roc.default(x, predictor, plot = TRUE, ...) : 
  Predictor must be numeric or ordered.

得:预测变量必须是数字或有序的。

查询roc()各参数的含义:使用 pROC包进行ROC分析 - 简书 (jianshu.com)

  • response:样本类型,一般只有两类( 0 (controls) 和 1 (cases)),可做ROC曲线。当类型过多时,需要使用levels参数指定那些值作为control ,那些作为 case。
  • predictor:样本的预测值,可以是概率、排名之类。
  • controls, cases: 直接提供controls和cases,可以是数值向量,也可以是排好序的向量。
  • formula, data: 通过表达式传入数据框中的值 。
  • levels: controls 和 cases 对应的值,默认为levels(as.factor(response)),剩下的忽略;当输入数据为0、1,默认0为controls。
  • percent:sensitivities, specificities 和 AUC返回形式为百分数。
  • direction:根据两组数据中位数大小确定;“>”: control组中位数值大于cases组;“<”:control组中位数值小于或等于cases组。
  • algorithm:1,也是默认,数量较少;2,数量大于1000时,速度更快;3,C++实现算法,快3-5x; 4 (debug only, slow): 三个算法都运行一遍,确认返回值知否一样。5,迅速选择2或3。
  • smooth:ROC 曲线修饰为平滑曲线。
  • auc:计算AUC,默认TRUE。
  • ci:是否计算置信区间。
  • plot:是否作图。
  • smooth.method, ci.method:smooth 算法。

即锁定错误:

 plot.roc(predictor=y,hubgenes_expression[i,],main=hubgenes[i],
+            
+            col=x_color[i],print.auc=T,percent=T,cex.lab=1.5,print.auc.cex=1.5)

查看一下:

table(hubgenes_expression[2,])

  即hubgenes_expression[i,]不是数字,其中包含符号。

将其改为:

as.numeric(hubgenes_expression[i,])

查看一下则有:

即运行得:

for(i in 1:length(hubgenes)){
+   
+   x_color=c("blue", "red", "green", "black", "yellow" )
+   
+   plot.roc(Type,as.numeric(hubgenes_expression[i,]),main=hubgenes[i],
+            
+            col=x_color[i],print.auc=T,percent=T,cex.lab=1.5,print.auc.cex=1.5)
+   
+ }

本人小白,如有错误,欢迎指正。

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值