[R] confint.glm in a function
Spencer Graves
spencer.graves at pdf.com
Tue Jul 13 04:02:02 CEST 2004
I can't get confint.glm to work from within a function. Consider
the following (using R 1.9.1, Windows 2000):
# FIRST: SOMETHING THAT WORKS FROM A COMMAND PROMPT
DF <- data.frame(y=.1, N=100)
(fit <- glm(y~1, family=binomial, data=DF,
weights=DF[,"N"]))
Call: glm(formula = y ~ 1, family = binomial, data = DF, weights =
DF[, "N"])
Coefficients:
(Intercept)
-2.197
Degrees of Freedom: 0 Total (i.e. Null); 0 Residual
Null Deviance: 0
Residual Deviance: -1.11e-14 AIC: 6.052
confint(fit)
> confint(fit)
2.5 % 97.5 %
(Intercept) NaN NaN
Warning message:
NaNs produced in: qt(p, df, lower.tail, log.p)
# The default confint thinks it knows glm, but doesn't. This is fixed
with:
library(MASS)
confint(fit)
Waiting for profiling to be done...
2.5 % 97.5 %
-2.915193 -1.594401
# This is on the logit space. For proportions:
Waiting for profiling to be done...
2.5 % 97.5 %
0.0514076 0.1687655
# PUT IT IN A FUNCTION:
confint.binom <- function(y="y", size="N", data.=DF){
fit <- glm(y~1, family=binomial, data=data.,
weights=data.[,size])
CI <- confint(fit)
CI
}
> confint.binom()
Waiting for profiling to be done...
Error in model.frame.default(formula = y ~ 1, data = data., weights =
data.[, :
Object "data." not found
##To get around this, assign both data. and size to some place where
confint.glm can find them
confint.binom.pos <- function(y="y", size="N", data.=DF,
pos=0){
assign("data.", data., pos)
assign("size", size, pos)
fit <- glm(y~1, family=binomial, data=data.,
weights=data.[,size])
CI <- confint(fit)
CI
}
> confint.binom.pos()
Error in as.environment(pos) : invalid argument
> confint.binom.pos(pos=-1)
Waiting for profiling to be done...
Error in model.frame.default(formula = y ~ 1, data = data., weights =
data.[, :
Object "data." not found
> confint.binom.pos(pos=1)
Waiting for profiling to be done...
2.5 % 97.5 %
-2.915193 -1.594401
# This works.
# HOWEVER, THIS ASSIGNS data. AND size TO THE WORKING DIRECTORY.
# HOW CAN I GET AROUND THIS?
If I had "confint.glm", I could modify it so it could find data.
and size. However, its hidden.
Thanks for your help.
Spencer Graves
More information about the R-help
mailing list