[R] glm.fit and predict.glm: error ' no terms component'

Christoph Lehmann christoph.lehmann at gmx.ch
Thu Sep 30 02:01:51 CEST 2004


many thanks I did it the following way, based on Thomas' suggestion

predict.glm.fit<-function(glmfit, newmatrix){
    newmatrix<-cbind(1,newmatrix)
    coef <- rbind(1, as.matrix(glmfit$coef))
    eta <- as.matrix(newmatrix) %*% as.matrix(coef)
    exp(eta)/(1 + exp(eta))
}


cheers

christoph







Thomas Lumley wrote:
> On Wed, 29 Sep 2004, Christoph Lehmann wrote:
> 
>> Hi
>>
>> when I fit a glm by
>>
>>     glm.fit(x,y,family = binomial())
>>     and then try to use the object for prediction of newdata by:
>>
>>     predict.glm(object, newdata)
>>
>> I get the error:
>>
>> Error in terms.default(object) : no terms component
>>
>> I know I can use glm() and a formula, but for my case I prefer 
>> glm.fit(x,y)...
> 
> 
> Well, you can't use predict.glm that way.  As the function name 
> suggests, it is a predict method for objects of class "glm", which in 
> your case you do not have.
> 
> There are two reasons why it won't work.  For type="terms" the formula 
> is needed to identify terms, and for any type of prediction the formula 
> is needed to convert the data frame newdata into a model matrix.
> 
> You would need to write a function where the new data was a model 
> matrix. If you only need point predictions then
> 
> predict_glm_fit<-function(glmfit, newmatrix, addintercept=TRUE){
>    if (addintercept)
>     newmatrix<-cbind(1,newmatrix)
>    eta<-glmfit$coef %*% newmatrix
>    family$linkinv(eta)
> }
> 
> would work.
> 
>     -thomas
> 
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! 
> http://www.R-project.org/posting-guide.html
> 
>




More information about the R-help mailing list