[R] plotting missing data patterns
Patrick E. McKnight
pem at theriver.com
Sun Jan 6 21:54:19 CET 2002
Uwe,
Thanks for the suggestion. I followed Andy Liaw's advice and used image
instead of plot. I can't believe there are so many things available in
R and most of which I simply overlook! Thanks again for your helpful
suggestions.
Cheers,
Patrick
On Sun, 2002-01-06 at 04:21, Uwe Ligges wrote:
> "Patrick E. McKnight" wrote:
> >
> > I have one other problem and then I'll stop and get back to writing. I
> > want to plot a missing data matrix (the R matrix a la Little and Rubin)
> > to graphically depict where the missing data lie in the matrix. Some
> > statistical packages produce a graphical depiction of the missing data
> > patterns by plotting the matrix, color-coding the plot with contrasting
> > colors for either missing or present.
> >
> > So far, I have fumbled my way through parts of it but I can't figure out
> > what I am doing wrong. Here is my situation....
> >
> > Dataset...now sorted the way I want it (thanks)
> >
> > > newcouple
> > id age sex iv1 iv2 dv mdpf
> > 2 0 0 0 0 0 0 1
> > 3 0 0 0 0 0 0 1
> > 5 0 0 0 0 0 0 1
> > 7 0 0 0 0 0 0 1
> > 9 0 1 0 0 0 0 3
> > 6 0 0 1 0 0 0 5
> > 10 0 0 0 1 0 0 9
> > 1 0 0 0 0 1 0 17
> > 4 0 0 0 0 0 1 33
> > 8 0 0 0 0 0 1 33
> >
> > # begin code
> >
> > # create matrix from data.frame for easy indexing
> >
> > > dummy <- as.matrix(newcouple)
> >
> > # create new vectors to later plot
> >
> > x <- mat.or.vec(1,1)
> > y <- mat.or.vec(1,1)
> >
> > # define default plotting information with par
> >
> > par(bg="black",pch=22)
> >
> > # create new frame for plotting
> >
> > plot.new()
> >
> > # loop through the matrix to only plot a square for the observations and
> > # variables that are missing
> >
> > for (i in 1:nrow(dummy)){
> > for (j in 1:ncol(dummy)){
> > if (dummy[i,j] == 1){
> >
> > # record the coordinates for the missing values to plot with a points
> > # call later
> >
> > y <- append(y,i)
> > x <- append(x,j)
> > }
> > }
> > }
> >
> > # points to plot from my
> >
> > points(x,y,bg="white")
> >
> > # end code
> >
> > The graphical output is just a black window with one point plotted (0,0
> > I think). What am I doing wrong?
>
> You did not set the dimensions in plot.window() after calling
> plot.new().
>
> I would suggest to use image() instead of your code:
>
> dummy <- as.matrix(newcouple)
> image(x = 1:nrow(dummy), y = 1:ncol(dummy), z = dummy,
> breaks = c(min(dummy), 0, 1, max(dummy)), col = c(1, 0, 1))
>
>
> *Your* code can be simplified (loops) and corrected as follows (the
> "reversed" colours are the most complicated thing):
>
> dummy <- as.matrix(newcouple)
> x <- col(dummy)[dummy==1]
> y <- row(dummy)[dummy==1]
> par(bg="black", fg="white", col.axis="white", col.lab="white",
> col.sub="white", col.main="white", pch=22)
> plot(x, y, type="n")
> points(x,y)
>
>
>
> > The points function does not appear
> > to be adding the extra points the way I want it to add them to the same
> > display window.
> >
> > In the end, I would like to have either a black background with white
> > squares (holes) or a white background with black squares to represent
> > where the data are missing. I will adjust the squares to an appropriate
> > size later. I know that there are other procedures for graphically
> > depicting missing data but I (and my colleagues) want this graph for now.
>
>
> Uwe Ligges
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
More information about the R-help
mailing list