2015-11-21 2 views
1

Я получаю сообщение об ошибке при установке с использованием lrm (rms), тогда как я не использую glm. Я хотел бы использовать функцию lrm для функций проверки и калибровки, связанных с пакетом.lrm fit vs glm подходит для прерывистой функции

Возможно, меня смущает то, что я хочу от своей модели: я ожидаю совсем другой результат, если ковариат равен нулю, а если результат отличен от нуля. Много предпочитают, чтобы соответствовать два термина, а не какой-то одной функции к данным

a= c(rep(0,10),rnorm(90,10,1)) # 10% outcomes=0, 90% clustered around 10. 
b= rnorm(100)>0 
mydataframe=data.frame(a,b) 
glm(b~I(a>0)+a,data=mydataframe,family='binomial') # no errors. 
lrm(b~I(a>0)+a,data=mydataframe) 

Error in if (!length(fname) || !any(fname == zname)) { : missing value where TRUE/FALSE needed

Конечно либо GLM или LRM отлично работает только с glm(b~a, data=mydataframe), но не должны LRM работы, а когда функция «а "включен дважды? Или существует какая-то особенность или неправдоподобная оценка?

Заранее благодарим за любое направление!

+0

Я думаю, этот вопрос раньше, вероятно, связано: http://stackoverflow.com/questions/10562398/линейной регрессии с-взаимодействия, не может-в-эфф-пакет –

ответ

0

Благодаря комментарию jogo, я думаю, что проблема заключается только в отсутствии определенного имени переменной в моей формуле. По какой-то причине lrm() не обрабатывает его, а также glm(). Просто назначить новую переменную I (а> 0), и в том числе, что переменная вместо этого в модели, кажется, чтобы удалить ошибку:

a= c(rep(0,10),rnorm(90,10,1)) # 10% outcomes=0, 90% clustered around 10. 
b= rnorm(100)>0 
mydataframe=data.frame(a,b) 
glm(b~I(a>0)+a,data=mydataframe,family='binomial') # no errors. 
mydataframe$k = I(a>0) 
lrm(b~k+a,data=mydataframe) # also works! 
Смежные вопросы