[R] summary.glm() print problem(?) with cor = TRUE

Martin Maechler maechler at stat.math.ethz.ch
Fri Feb 28 15:45:03 CET 2003

>>>>> "GS" == Gavin Simpson <gavin.simpson at ucl.ac.uk>
>>>>>     on Fri, 28 Feb 2003 13:07:55 -0000 writes:

    GS> Hi,
    GS> I've had a look the bug list and searched though the R documentation, email
    GS> lists etc. but didn't see anything on this:

    GS> when I do:

    GS> summary(species.glm1, correlation = TRUE)

    GS> I get a correlation matrix like this:

    GS> Correlation of Coefficients:

    GS>         ( p I(H C
    GS> pH      * 1      
    GS> I(pH^2) * B 1    
    GS> Ca        . .   1
    GS> I(Ca^2)   . .   B

    GS> attr(,"legend")
    GS> [1] 0 ` ' 0.3 `.' 0.6 `,' 0.8 `+' 0.9 `*' 0.95 `B' 1

    GS> I'm not worried about the symbolic representation, but
    GS> should the columns be labelled this way?  I can work out
    GS> which is which, but it isn't immediately clear and
    GS> doesn't look "nice".  Is this printing intended?

[we are talking about the print method for class "summary.lm",
 i.e. print.summary.glm() , and *.*.lm() ]

Yes, these column labels have been critized before and rightly so.
Currently, for R-devel, the default has even been changed from
 `symbolic.cor = p > 4' to  `symbolic.cor = FALSE' -- mostly
because of this, AFAIR -- and against my own opinion. 
I would have voted to change it to `symbolic.cor = p > 6' or so
(*and* to improve the column labels, too, see below).

As the original implementor I can tell you:
I've liked the idea of graphical correlation matrices which
motivated the "symbolic.cor" option to print.summary.* and the
underlying symnum() function.  
Since this is ASCII graphic, and showing (the lower triangle of)
a square matrix, I've felt the matrix should remain close to
``square'', also in its graphical form. 
Hence, the row labels were kept and the column labels
abbreviated "as much as possible" using R's internal abbreviate().
And this has given the very ugly "(" for "(Intercept)".
One easy possibility was to use more customized version of abbreviate()
either inside symnum() or by postprocessing ..

Given the topic, I'm really interested about your opinions on
the symbolic printing of correlation matrices.

    GS> Because when I do:

    GS> print(summary(species.glm3, correlation = TRUE), symbolic.cor = FALSE)

    GS> I get a much more nicely formatted correlation matrix:

    GS> Correlation of Coefficients:
    GS>         (Intercept)      pH I(pH^2)      Ca
    GS> pH          -0.9321                        
    GS> I(pH^2)      0.9233 -0.9968                
    GS> Ca           0.1442 -0.4893  0.4950        
    GS> I(Ca^2)     -0.1619  0.5009 -0.5162 -0.9876

It nicer only as long as it stays small, IMHO.
no longer for a 10 x 10 case; look at the examples in
help(symnum) !

Note that you can always say
 sglm <- summary(species.glm3, correlation = TRUE)
to see the matrix in its usual form

Martin Maechler <maechler at stat.math.ethz.ch>	http://stat.ethz.ch/~maechler/
Seminar fuer Statistik, ETH-Zentrum  LEO C16	Leonhardstr. 27
ETH (Federal Inst. Technology)	8092 Zurich	SWITZERLAND
phone: x-41-1-632-3408		fax: ...-1228			<><

More information about the R-help mailing list