On Tue, 30 Dec 2014, Mast, Brent D wrote:
Hi.
I want to produce a three-way mosaic residual plot with survey data. I'm
using the mosaic function from the vcd package for the plot, and the
svytable function from the survey package to produce the contingency
table. Here is my code for a two-way table (that works) and a three-way
table that plots but I think is wrong.
library(vcat)
vcd...in case anybody else wondered.
library(survey)
data(api)
summary(apiclus1)
dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc)
summary(dclus1)
# two-way plot
st2 <- svytable(~sch.wide+comp.imp,design=dclus1,round=TRUE)
summary(st2)
mosaic(st2,main = "Two-Way Mosaic Plot", shade = TRUE, legend = TRUE)
Note that the test statistic and p-value from the summary.svytable
(calling svychisq) and from mosaic (calling loglin/loglm) are not the
same.
# three-way plot
st3 <- svytable(~sch.wide+comp.imp+stype,design=dclus1,round=TRUE)
summary(st3)
windows()
mosaic(st3,main = "Three-Way Mosaic Plot", shade = TRUE, legend = TRUE)
When I try to summarize the three-way svytable object "st3", I get the
following error:
summary(st3)
Error in svychisq.survey.design(~sch.wide + comp.imp + stype, design = dclus1,
:
Only 2-way tables at the moment
It still produces the three-way mosaic plot. But I don't think it's
plotting the residuals correctly because the error message indicates
only two-way chi-square tests are allowed.
mosaic() does not know anything about survey tables etc. Hence, it just
ignores the design associated with the contingency tables st2 and st3 and
just visualizes them as if they were cross-section data.
The vcd package will create a mosaic residual plot from a log-linear
model estimated by the loglm function from the MASS package. But it
won't accept a log-linear model created with the svyloglin function from
the survey package. I'm wondering if I could run a log-linear model with
svyloglin and transform the output into a table format that the mosaic
function will plot.
If you use strucplot() directly (rather than the mosaic() interface) you
can supply your own 'residuals' and/or 'expected' arguments. These can be
tables of the same dimension as the table visualized and will be used for
shading.
As I'm not really familiar with these chi-squared tests for survey tables,
I cannot recommend how to adapt exactly. I guess it would be good to use
the signed square-root of the contributions to the svy chi-squared
statistic as "residuals" in the strucplot(). Possibly the default cut-offs
(+/- 2 and 4) could also be modified.
hth,
Z
Any help would be appreciated.
Thanks, and happy New Year.
Brent Mast
Social Science Analyst
HUD Office of Policy Development & Research
Program Monitoring & Research Div.
[[alternative HTML version deleted]]
______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.
______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.