Re: [R] glm predict on new data

From: Brian Diggs <>
Date: Wed, 06 Apr 2011 15:28:01 -0700

On 4/6/2011 2:17 PM, dirknbr wrote:
> I am aware this has been asked before but I could not find a resolution.
> I am doing a logit
> lg<- glm(y[1:200] ~ x[1:200,1],family=binomial)

glm (and most modeling functions) are designed to work with data frames, not raw vectors.

> Then I want to predict a new set
> pred<- predict(lg,x[201:250,1],type="response")
> But I get varying error messages or warnings about the different number of
> rows. I have tried data/newdata and also to wrap in data.frame() but cannot
> get to work.

I'll made up some data, show the way you approached it, show where it went wrong, and then how it works more easily.

# data like what I think you had:
y <- rbinom(200, 1, prob=.8)
x <- data.frame(x=rnorm(250))

# your glm call:
lg <- glm(y[1:200]~x[1:200,1],family=binomial)

# take a look at print(lg).  Notice that your independent variable
# name is "x[1:200, 1]", which is what you would need to match in
# a call to predict.

# Make data.frames of the given and testing data. DF <- data.frame(y=y, x=x[1:200,1]) <- data.frame(x=x[200:250,1])
# Notice has the same name (x) as DF.

lg <- glm(y~x, data=DF, family=binomial) pred <- predict(lg,, type="response") summary(pred)

> Help would be appreciated.
> Dirk.

Brian S. Diggs, PhD
Senior Research Associate, Department of Surgery
Oregon Health & Science University

______________________________________________ mailing list
PLEASE do read the posting guide
and provide commented, minimal, self-contained, reproducible code.
Received on Wed 06 Apr 2011 - 22:29:59 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Wed 06 Apr 2011 - 22:30:28 GMT.

Mailing list information is available at Please read the posting guide before posting to the list.

list of date sections of archive