Ошибка в установщике при попытке использовать функцию lrm из библиотеки rms

Я пытаюсь запустить небольшую таблицу данных через функцию lrm из библиотеки rms, но каждый раз, когда я запускаю ее, я получаю это:

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, и я сузил его до (шокирует) функции установщика.

Вот некоторые ресурсы, которые я использовал, которые вы можете найти полезными для себя или помочь мне. Если есть что-то, что я забыл включить, оставьте комментарий, и я заполню все, что смогу :) Спасибо!

Справочное руководство по R

Описание функции lrm

R для науки о данных (книга)

Исходный код функции lrm


person Alex Eastman    schedule 16.06.2020    source источник


Ответы (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)

person Dominik S. Meier    schedule 16.06.2020
comment
Это собственно все данные для этого имени, и всего их 2. Что это значит? - person Alex Eastman; 16.06.2020
comment
Не уверен, что вызывает ошибку. Но логистическая регрессия может столкнуться с проблемами, когда классы полностью разделены, поэтому это может быть переполнение/недостаток в оценке ML. Но это работает при подборе логистической регрессии с помощью glm: data$b <- as.factor(data$b) mylogit <- glm(b ~ c, data = data, family = "binomial") - person Dominik S. Meier; 16.06.2020
comment
Я скромный программист... Можете ли вы объяснить, какова цель линейной регрессии и в чем разница между lrm и glm? - person Alex Eastman; 16.06.2020