[R] Fixed zeros in tables
Andrew Robinson
A.Robinson at ms.unimelb.edu.au
Sun Nov 26 21:11:23 CET 2006
Hello Andrew,
I'm not sure how this is a problem. You can multiply the fitted
values by the weights again, if you wish, or ignore the structural
zeros altogether. The other predicted values all seem to me to be the
same.
I think that is a feature. Sometimes the goal for glm with structural
zeros is to estimate those values that are missing. You are at
liberty to ignore them.
Cheers
Andrew
On Mon, Nov 27, 2006 at 02:47:01AM +0700, A.R. Criswell wrote:
> Hello Andrew Robinson and R-List
>
> Thanks, Andrew, but this does not work. Puttting zero weights on
> structural zeros, one's elsewhere in glm() does not deliver the
> appropriate expected cell counts loglm() provides as one would expect.
>
> If you run the code provided below, you'll see loglm() delivers zero
> cell counts with loglm() but using glm() with the weights you suggest,
> the expected cell counts are not zero.
>
> Still hoping for a resolution.
> Andrew Criswell
>
> Associate Professor
> Hedmark University
> Postboks 104, Rena 2510, NORWAY
>
> --
> ## Fienberg, The Analysis of Cross-Classified Contingency Tables, 2nd
> ed., p.148.
> ## Results from survey of teenagers regarding their health concerns.
>
> health <- data.frame(expand.grid(CONCERNS = c("sex", "menstral",
> "healthy", "nothing"),
> AGE = c("12-15", "16-17"),
> GENDER = c("male", "female")),
> COUNT = c(4, 0, 42, 57, 2, 0, 7, 20,
> 9, 4, 19, 71, 7, 8, 10, 21),
> WEIGHTS = c(1, 0, 1, 1, 1, 0, 1, 1, 1, 1,
> 1, 1, 1, 1, 1, 1))
>
> health.tbl <- xtabs(COUNT ~ CONCERNS + AGE + GENDER, data = health)
>
> zeros <- data.frame(expand.grid(CONCERNS = c("sex", "menstral",
> "healthy", "nothing"),
> AGE = c("12-15", "16-17"),
> GENDER = c("male", "female")),
> COUNT = c(1, 0, 1, 1, 1, 0, 1, 1,
> 1, 1, 1, 1, 1, 1, 1, 1))
>
> zeros <- xtabs(COUNT ~ CONCERNS + AGE + GENDER, data = zeros)
>
> library(MASS)
>
> fm.1 <- loglm(~ CONCERNS + AGE + GENDER,
> data = health.tbl, start = zeros, fitted = TRUE)
>
> fm.1; round(fm.1$fitted, 1)
>
> fm.3 <- glm(COUNT ~ CONCERNS + AGE + GENDER,
> data = health, weights = health$WEIGHTS, family = poisson)
>
> fm.3.fit <- data.frame(expand.grid(CONCERNS = c("sex", "menstral",
> "healthy", "nothing"),
> AGE = c("12-15", "16-17"),
> GENDER = c("male", "female")),
> COUNT = fm.3$fitted)
>
> round(xtabs(COUNT ~ CONCERNS + AGE + GENDER, data = fm.3.fit), 1)
--
Andrew Robinson
Department of Mathematics and Statistics Tel: +61-3-8344-9763
University of Melbourne, VIC 3010 Australia Fax: +61-3-8344-4599
http://www.ms.unimelb.edu.au/~andrewpr
http://blogs.mbs.edu/fishing-in-the-bay/
More information about the R-help
mailing list