On Jul 10, 2009, at 9:46 AM, Peter Schüffler wrote:
Hi,
I have a question about logistic regression in R.
Suppose I have a small list of proteins P1, P2, P3 that predict a
two-class target T, say cancer/noncancer. Lets further say I know
that I can build a simple logistic regression model in R
model <- glm(T ~ ., data=d.f(Y), family=binomial) (Y is the
dataset of the Proteins).
This works fine. T is a factored vector with levels cancer,
noncancer. Proteins are numeric.
Now, I want to use predict.glm to predict a new data.
predict(model, newdata=testsamples, type="response") (testsamples
is a small set of new samples).
The result is a vector of the probabilites for each sample in
testsamples. But probabilty WHAT for? To belong to the first level
in T? To belong to second level in T?
Is this fallowing expression
factor(predict(model, newdata=testsamples, type="response") >= 0.5)
TRUE, when the new sample is classified to Cancer or when it's
classified to Noncancer? And why not the other way around?
Thank you,
Peter
As per the Details section of ?glm:
A typical predictor has the form response ~ terms where response is
the (numeric) response vector and terms is a series of terms which
specifies a linear predictor forresponse. ***For binomial and
quasibinomial families the response can also be specified as a factor
(when the first level denotes failure and all others success)*** or as
a two-column matrix with the columns giving the numbers of successes
and failures. A terms specification of the form first + second
indicates all the terms in first together with all the terms in second
with any duplicates removed.
So, given your description above, you are predicting
"noncancer"...that is, you are predicting the probability of the
second level of the factor ("success"), given the covariates.
If you want to predict "cancer", alter the factor levels thusly:
T <- factor(T, levels = c("noncancer", "cancer"))
By default, R will alpha sort the factor levels, so "cancer" would be
first.
Think of it in terms of using a 0,1 integer code for absence,presence,
where you are predicting the probability of a '1', or the presence of
the event or characteristic of interest.
BTW, using 'T' as the name of the response vector is not a good habit:
> T
[1] TRUE
'T' is shorthand for the built in R constant TRUE. R is generally
smart enough to know the difference, but it is better to avoid getting
into trouble by not using it.
HTH,
Marc Schwartz
______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.