[R] GAM, GLM, Logit, infinite or missing values in 'x'
Anders Schwartz Corr
corr at fas.harvard.edu
Tue Jan 8 07:35:29 CET 2008
Hi,
I'm running gam (mgcv version 1.3-29) and glm (logit) (stats R 2.61) on
the same models/data, and I got error messages for the gam() model and
warnings for the glm() model.
R-help suggested that the glm() warning messages are due to the model
perfectly predicting binary output. Perhaps the model overfits the data? I
inspected my data and it was not immediately obvious to me (though I guess
it will be to some of the more pointed of you) how this would be the case.
The gam() errors vanish when I delete one covariate (it doesn't matter
which one). Can I write a loop into the code such that if an error is
returned (is.error() doesn't seem to exist unfortunately) then I pare off
one of the covariates and rerun the gam()? That would be ideal. I could
set options(error = f()) in which f() reruns the gam with
one fewer covariate until it works, but the gam is in a bunch of loops
that would break given the error and I would like to figure out another
option.
My glm and gam models are below. Any suggestions are very much
appreciated.
Best,
Anders
> form.logit
outbinary ~ a_norm_total2 + I(a_norm_total2^2) + prop + igoprop +
gpconc + ter + open + igototal + cinc.nmc + demsOnumstat +
diversity + cincOter + polity2
> form.glogit
outbinary ~ s(a_norm_total2) + s(prop) + s(prop, by = a_norm_total2) +
igoprop + gpconc + ter + open + igototal + cinc.nmc + demsOnumstat +
diversity + cincOter + polity2
GAM error message:
avt.2glogit<-gam(form.glogit, data=dataS, na.action=na.omit,family=binomial)
Error in eigen(hess1, symmetric = TRUE) :
infinite or missing values in 'x'
Calls: gam -> gam.outer -> newton -> eigen
GLM warnings:
There were 29 warnings (use warnings() to see them)
> warnings()
Warning messages:
1: In glm.fit(x = X, y = Y, weights = weights, start = start, ... :
fitted probabilities numerically 0 or 1 occurred
2: In glm.fit(x = X, y = Y, weights = weights, start = start, ... :
fitted probabilities numerically 0 or 1 occurred
3: In glm.fit(x = X, y = Y, weights = weights, start = start, ... :
fitted probabilities numerically 0 or 1 occurred
4: In glm.fit(x = X, y = Y, weights = weights, start = start, ... :
fitted probabilities numerically 0 or 1 occurred
More information about the R-help
mailing list