John Fox wrote:

Dear Uwe,


-----Original Message-----
From: Uwe Ligges [mailto:[EMAIL PROTECTED] Sent: Thursday, September 23, 2004 8:06 AM
To: John Fox
Cc: [EMAIL PROTECTED]; [EMAIL PROTECTED]
Subject: Re: [R] Issue with predict() for glm models


John Fox wrote:


Dear Uwe,

Unless I've somehow messed this up, as I mentioned

yesterday, what you


suggest doesn't seem to work when the predictor is a

matrix. Here's a


simplified example:



X <- matrix(rnorm(200), 100, 2)
y <- (X %*% c(1,2) + rnorm(100)) > 0
dat <- data.frame(y=y, X=X)
mod <- glm(y ~ X, family=binomial, data=dat) new <- data.frame(X = matrix(rnorm(20),2)) predict(mod, new)

Dear John,

the questioner had a 2 column matrix with 40 and one with 50 observations (not a 100 column matrix with 2 observation) and for those matrices it works ...



Indeed, and in my example the matrix predictor X has 2 columns and 100 rows;
I did screw up the matrix for the "new" data to be used for predictions (in
the example I sent today but not yesterday), but even when this is done
right -- where the new data has 10 rows and 2 columns -- there are 100 (not
10) predicted values:


X <- matrix(rnorm(200), 100, 2)  # original predictor matrix with 100 rows
y <- (X %*% c(1,2) + rnorm(100)) > 0
dat <- data.frame(y=y, X=X)
mod <- glm(y ~ X, family=binomial, data=dat)

John,

note that I used glm(y ~ .) (the dot!),
because the names are automatically chosen to be X.1 and X.2, hence you cannot use "X" in the formula in this case ...


Best,
Uwe


new <- data.frame(X = matrix(rnorm(20),10, 2)) # corrected -- note 10 rows
predict(mod, new) # note 100 predicted values

______________________________________________ [EMAIL PROTECTED] mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html

Reply via email to