rms пакет Glm: как добавить показатели в формулу

Я пытаюсь построить модель glm, используя Glm() из пакета rms в R. Но я не знаю правильного выражения в формуле Glm для индикаторов.

Позвольте мне использовать данные диафрагмы в качестве примера, в базе R glm функция, мой код работает, и это как ниже:

model1 = glm(Sepal.Length~Sepal.Width + Petal.Length + ifelse(Sepal.Width==3,1,0),data=iris)

Но если я использую ту же формулу в Glm, он вернется

 model2 = Glm(Sepal.Length~Sepal.Width + Petal.Length + ifelse(Sepal.Width==3,1,0),data=iris)

Ошибка в if (! Length(fname) ||! Any(fname == zname)) {: отсутствует значение там, где требуется TRUE/FALSE

Или если я использую

model3 = Glm(Sepal.Length~Sepal.Width + Petal.Length + asis(Sepal.Width==3),data=iris)

Ошибка в if (asc[i] == 8) next: пропущенное значение, где требуется TRUE/FALSE

Я просто не знаю, как правильно определить это преобразование. Также я знаю, что могу решить эту проблему, поместив этот индикатор в качестве нового столбца в данных, но тогда я не смог использовать rms"s Predict() функция для генерации правильного сюжета.

1 ответ

Решение

Как предполагается в комментариях, это, кажется, работает хорошо (я действительно не знаю, что я делаю с datadist, но шарить...)

 iris$sepal3 <- as.numeric(iris$Sepal.Width==3)
 library(rms)
 ddist <- with(iris,datadist(Sepal.Width, Petal.Length, sepal3))
 options(datadist="ddist")
 model1 <- Glm(Sepal.Length~Sepal.Width + Petal.Length + sepal3,
               data=iris)
 plot(Predict(model1))

(Я получаю предупреждение о Calling 'structure(NULL, *)' is deprecated, но я думаю, что это потому, что я использую версию разработки R с версией 5.1 RMS...

Другие вопросы по тегам