"在fitter中出错..." 当试图从rms库中使用lrm函数时。

问题描述 投票:1回答:1

我试图通过rms库中的lrm函数运行一个小数据表,但每次运行时都会得到这样的结果。

Error in fitter(X, Y, offset = offs, penalty.matrix = penalty.matrix,  : 
NA/NaN/Inf in foreign function call (arg 1)

这是一些可重现的代码

library(tidyverse)
library(rms)

data <- tribble(
~a, ~b, ~c,
"name", 2, 77.95535,
"name", 2, 81.36152,
"name", 2, 80.87081,
"name", 2, 80.59054,
"name", 2, 79.36807,
"name", 2, 82.42083,
"name", 2, 78.80646,
"name", 2, 78.88949
)

lmod <- lrm(b~c, data, penalty=0, x=T, y=T, tol=1e-10, maxit=1e6)

我试了很多方法 我试过把b~c换成c~b(我知道不会产生同样的数据),我得到了一个错误,但不是同样的错误。我试过只用前两个参数,也试过各种包括或排除下面的参数。我还试着调试并按照代码进入lrm函数,我把它缩小到(震惊)fitter函数。

下面是我一直在使用的一些资源,你们可能会发现对自己或对我有帮助。如果有什么我忘了包括的东西,请留言,我会尽可能的补上 :) 谢谢你

R参考手册 lrm 功能描述 R for Data Science (书) lrm函数源码

r linear-regression rms
1个回答
1
投票

使用你提供的数据,我也得到同样的错误。然后我改变了一些 b 到1,错误就消失了。

data <- tribble(
  ~a, ~b, ~c,
  "name", 2, 77.95535,
  "name", 2, 81.36152,
  "name", 1, 80.87081,
  "name", 1, 80.59054,
  "name", 2, 79.36807,
  "name", 1, 82.42083,
  "name", 1, 78.80646,
  "name", 2, 78.88949
)

lmod <- lrm(b~c, data = data, penalty=0, x=TRUE, y=TRUE, tol=1e-14, maxit=1e10)
lmod

Logistic Regression Model

 lrm(formula = b ~ c, data = data, x = TRUE, y = TRUE, penalty = 0, 
     tol = 1e-14, maxit = 1e+10)

                   Model Likelihood    Discrimination    Rank Discrim.    
                         Ratio Test           Indexes          Indexes    
 Obs         8    LR chi2      0.00    R2       0.000    C       0.500    
  1          4    d.f.            1    g        0.000    Dxy     0.000    
  2          4    Pr(> chi2) 1.0000    gr       1.000    gamma   0.000    
 max |deriv| 3                         gp       0.000    tau-a   0.000    
                                       Brier    0.250                     

           Coef   S.E.    Wald Z Pr(>|Z|)
 Intercept 0.0000 39.9600 0.00   1.0000  
 c         0.0000  0.4992 0.00   1.0000 

我知道这只是你的数据的一个子集,但也许所有的行都在你的数据中。b 值为2?你可以用例如检查。table(data$b)

© www.soinside.com 2019 - 2024. All rights reserved.