简体   繁体   English

使用 rms 包中的 lrm() 和 validate() 时出现错误消息

[英]Error message when using lrm() and validate() from the rms package

I am trying to use validate() from the rms package but get an error.我正在尝试使用rms包中的validate()但出现错误。 More specifically, I fit an ordinal logistic model using lrm() and then assess my results with validate() .更具体地讲,我适合的有序Logistic模型使用lrm()然后评估与我的结果validate()

Please find some code below:请在下面找到一些代码:

library(data.table)
library(rms)

DT2 <- data.table(internal_model_rating_number = c(5,5,5,5,6,6,5,5,5,5),
                  ratio = c(2.0665194,1.2264998,1.0333628,0.6936382,-0.1883890,
                        -0.2349949,-0.5062086,-0.5204016,-0.4401635,-0.5824366))
lrm.model <- lrm(internal_model_rating_number ~ ratio, 
                 x = T,
                 y = T,
                 data = DT,
                 maxit = 1000)
validate(lrm.model, group=internal_model_rating_number, B=200, bw=T)

Note that the group argument when running the code for my actual data (not displayed) is necessary, because some categories of the target variable occur very rarely.请注意,在为我的实际数据(未显示)运行代码时, group参数是必需的,因为目标变量的某些类别很少出现。

The piece of validate() code returns the error:这段validate()代码返回错误:

Error in predab.resample(fit, method = method, fit = lrmfit, measure = discrim,  : 
  object 'internal_model_rating_number' not found

Do you know how I can solve this error?你知道我如何解决这个错误吗?

I think the data has to be specified before the grouping variable.我认为必须在分组变量之前指定数据。

Try this validate(lrm.model, group = DT2$internal_model_rating_number, B=200, bw=T)试试这个validate(lrm.model, group = DT2$internal_model_rating_number, B=200, bw=T)

You also had a small typo (try data = DT2 instead of DT .)您还有一个小错字(尝试data = DT2而不是DT 。)

If you don't want to specify the data again, you can use attach(DT2) and then run your model.如果您不想再次指定数据,您可以使用attach(DT2)然后运行您的模型。

library(data.table)
library(rms)

DT2 <- data.table(internal_model_rating_number = c(5,5,5,5,6,6,5,5,5,5),
                  ratio = c(2.0665194,1.2264998,1.0333628,0.6936382,-0.1883890,
                            -0.2349949,-0.5062086,-0.5204016,-0.4401635,-0.5824366))

attach(DT2)

lrm.model <- lrm(internal_model_rating_number ~ ratio, 
                 x = T,
                 y = T,
                 data = DT2,
                 maxit = 1000)

validate(lrm.model, group = internal_model_rating_number, B=200, bw=T)

Once you're done, if you'd like to detach the data, use detach(DT2)完成后,如果您想分离数据,请使用detach(DT2)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM