[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