[R] glm.fit and predict.glm: error ' no terms component'
Thomas Lumley
tlumley at u.washington.edu
Wed Sep 29 16:55:40 CEST 2004
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
More information about the R-help
mailing list