Я пытался следовать этому примеру изменить glm ... пользовательскую функцию ссылки в r
но я получаю ошибки. У меня есть двоичные данные, и я хотел бы изменить функцию ссылки с «logit» на отрицательную экспоненциальную ссылку. Я хочу предсказать
вероятность успеха (p) = 1-exp (линейный предиктор)
Причина, по которой мне нужна эта ссылка вместо одной из встроенных ссылок, заключается в том, что p увеличивается выпуклым образом между 0 и 0,5, но только для "logit", "cloglog", "probit" и "cauchy" позволяют вогнутую форму. См. Прилагаемое фото для справки: прогнозируемые p против биннинг-наблюдений
Имитация данных
location<-as.character(LETTERS[rep(seq(from=1,to=23),30)])
success<-rbinom(n=690, size=1, prob=0.15)
df<-data.frame(location,success)
df$random_var<-rnorm(690,5,3)
df$seedling_size<-abs((0.1+df$success)^(1/df$random_var))
df<-df[order(df$location)]
Создание пользовательской функции связи. Примечание: эта = линейный предиктор, мю = вероятность
negex<-function(){
##link
linkfun<-function(mu) log(-mu+1)
linkinv<-function(eta) 1-exp(eta)
## derivative of inverse link with respect to eta
mu.eta<-function(eta)-exp(eta)
valideta<-function(eta) TRUE
link<-"log(-mu+1)"
structure(list(linkfun=linkfun,linkinv=linkinv,
mu.eta=mu.eta,valideta=valideta,
name=link),
class="link-glm")
}
Успех модели как функция размера рассады
negexp<-negex()
model1<-glm(success~seedling_size,family=binomial(link=negexp),data=df)
Ошибка: не найден действительный набор коэффициентов: укажите начальные значения
Модель с использованием glmer (Моя конечная цель)
model2<-glmer(success~seedling_size+ (1|location),family=binomial(link=negexp),data=df)
Ошибка в (функция (fr, X, reTrms, семейство, nAGQ = 1L, подробный = 0L, maxit = 100L,:
(maxstephalfit) PIRLS-шаг-половинкам не удалось уменьшить отклонение в pwrssUpdate
Я получаю разные сообщения об ошибках, но я думаю, что проблема одна и та же, независимо от того, используется ли glmer или glm, и это то, что моя функция ссылки как-то не так.