From HDoran at air.org  Sun Nov  8 21:26:28 2009
From: HDoran at air.org (Doran, Harold)
Date: Sun, 8 Nov 2009 15:26:28 -0500
Subject: [Rd] Summary methods
Message-ID: <C0772C7568B5374481D2F8A880E9BBDF5B4E0418@DC1EX07CMS.air.org>

I've defined the following for objects of a class called jml

summary.jml <- function(object, ...){
	tab <- cbind(Estimate = coef(object),
			StdError = object$se,
			Infit = object$Infit, 
			Outfit = object$Outfit)	
	res <- list(call = object$call, coefficients = tab, 
			N = nrow(object$Data), iter = object$Iterations)
	class(res) <- "summary.jml"
	res
}

print.summary.jml <- function(x, ...){
   cat("Call:\n")
   print(x$call)
   cat("\n")
   cat("Number of iterations to completion:", x$iter, "\n")
   cat("Number of individuals used in estimation:", x$N, "\n")
   cat("\n")
   printCoefmat(x$coefficients)
   }

Use of the methods on a fitted jml object yields:

> summary(aa)
Call:
jml2.formula(formula = ~V1 + V2 + V3 + V4 + V5 + V6 + V7 + V8 + 
    V9 + V10, data = itemDat, bias = F)

Number of iterations to completion: 6 
Number of individuals used in estimation: 486 

                 StdError     Infit Outfit
 [1,] -0.380346  0.103002  1.007466 0.9935
 [2,]  0.025939  0.104052  1.003050 1.0083
 [3,]  2.563784  0.171174  0.941453 0.9414
 [4,] -2.930519  0.156923  1.010786 1.0515
 [5,]  1.139241  0.118932  0.978101 1.1424
 [6,] -1.461751  0.111563  1.030612 1.2709
 [7,]  0.486202  0.107986  1.008374 1.0394
 [8,] -0.497102  0.103117  0.961431 0.9012
 [9,] -0.486478  0.103099  1.001752 0.9829
[10,]  1.541029  0.129214  1.010011 0.9150

Two questions. First, why is the name of the first column empty instead of "Estimate" as I have specified in the summary method? Second, I am struggling to get the row names of the coefficients to align with the formula call. For example, instead of 

                 StdError     Infit Outfit
 [1,] -0.380346  0.103002  1.007466 0.9935

I would prefer

                 StdError     Infit Outfit
 V1 -0.380346  0.103002  1.007466 0.9935

This also occurs in my print method

print.jml <- function(x, digits = 2, ...){
   cat("\nCall:\n", deparse(x$call), "\n\n", sep = "")
   cat("Coefficients:\n")
		print.default(format(coef(x), digits = digits), print.gap=2,
		quote = FALSE)
   invisible(x)
   }

Which produces

> win
Call:
jml2.default(dat = itemDat[, 1:10])

Coefficients:
             [,1]
 [1,] -0.38034638
 [2,]  0.02593937
 [3,]  2.56378422
 [4,] -2.93051899
 [5,]  1.13924076
 [6,] -1.46175119
 [7,]  0.48620247
 [8,] -0.49710150
 [9,] -0.48647770
[10,]  1.54102895

Thank you
Harold

> sessionInfo()
R version 2.10.0 (2009-10-26) 
i386-pc-mingw32 

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252   
[3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C                          
[5] LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] MASS_7.3-3         lme4_0.999375-32   Matrix_0.999375-31 lattice_0.17-26   
[5] MiscPsycho_1.4     statmod_1.4.1     

loaded via a namespace (and not attached):
[1] grid_2.10.0  plink_1.2-2  tools_2.10.0


[Rd] Summary methods
Doran, Harold