В R, используя binomial () и lapply, чтобы ограничить предикаты () значениями от 0 до 1 - PullRequest
1 голос
/ 08 марта 2012

У меня есть модель GLM, семейство = биномиальная (ссылка = логит), которую я применяю в функции предиката (), как показано ниже.Предсказанные значения выходят за пределы нуля и 1, но я хотел бы сохранить их как вероятности.Поэтому я использую команду binomial () $ inverse, которую затем можно использовать в функции apply.

Это сработало очень хорошо при первом запуске, но после закрытия R и запуска снова я теперьэта ошибка:

     Error in get(as.character(FUN), mode = "function", envir = envir) : 
     object 'ilogit' of mode 'function' was not found"

Я боролся с этим часами, так как этот код обычно работал.У кого-нибудь есть представление о том, что я делаю не так?Есть ли лучший способ сделать это?

Мой код ниже.Я также пробовал другой вариант, но не могу заставить его работать.

    ## predicted probabilities 
    pp <- predict(logit_model,
            newdata=data,
            type="link",
            se.fit=T)

   ilogit <- binomial()$inverse
   yhat_prob <- lapply(pp,ilogit) #converts to probabilities

1 Ответ

4 голосов
/ 08 марта 2012

Если вам нужны вероятности, вы можете получить их напрямую с помощью type="response", как описано в документации, ?pregict.glm.

Для получения сообщения об ошибке вам, вероятно, потребуется binomial()$linkinv.

> str( binomial() )
List of 12
 $ family    : chr "binomial"
 $ link      : chr "logit"
 $ linkfun   :function (mu)  
 $ linkinv   :function (eta)  
 $ variance  :function (mu)  
 ...

Отсутствие ошибки, возможно, связано с тем, что вы загрузили какой-то пакет, в котором определена функция ilogit.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...