2011-05-06 15 views
6

qué se supone que debo hacer, si xtable no conoce un comando especial. Por ejemplo asumir la estimación de un modelo tobit, como este:xtable para funciones no compatibles (con R)

require(AER) require(xtable)

attach(cars)

tob<-tobit(dist~speed) summary(tob)

xtable(summary(tob))

detach(cars)

la salida del resumen es bastante similar en comparación con una salida de un modelo lineal ... ¿Qué puedo hacer, para hacer que xtable entienda, que quiero tener los coeficientes en una tabla Latex? Samme con otras funciones como summary(zeroinfl(<model>)) desde el paquete pscl? ¿Qué recomendarían ustedes hacer?

+1

@ user734124 - Yo suelo pasar por 'coeftest()' 'en lmtest' y luego extraer las columnas Quiero (por ejemplo, 'coeftest (glm.object) [, c (1, 3)]') luego pasar esto a 'xtable()'. No es muy limitante ya que generalmente no quiero todos los resultados de xtable de todos modos y me gusta la capacidad de 'combinar()' varias regresiones en una tabla. Si deseo agregar N o R^2 a las tablas fusionadas, uso la opción 'add.to.row' en' print.xtable() '. –

+0

hola Richard! Desafortunadamente no es posible usar xtable (coeftest (Tobit.object)). ¡Pero gracias por la entrada que agrega filas a una tabla! – user734124

+0

@ user734124 - Debería poder extraer filas con '[, 1: 4]'. –

Respuesta

4

Aquí hay otra función que puede usar. Es una versión modificada de la xtable definida para lm. es decir, acabo de modificar la función xtable.summary.lm para el caso tobit. También se alinearán con otras funcionalidades XTABLE

xtable.summary.tobit <- 
function (x, caption = NULL, label = NULL, align = NULL, digits = NULL, 
display = NULL, ...) 
{ 
x <- data.frame(unclass(x$coef), check.names = FALSE) 
class(x) <- c("xtable", "data.frame") 
caption(x) <- caption 
label(x) <- label 
align(x) <- switch(1 + is.null(align), align, c("r", "r", 
    "r", "r", "r")) 
digits(x) <- switch(1 + is.null(digits), digits, c(0, 4, 
    4, 2, 4)) 
display(x) <- switch(1 + is.null(display), display, c("s", 
    "f", "f", "f", "f")) 
return(x) 
} 
## Now this should give you the desired result 
xtable(summary(tob)) 

creo que sirve para conseguir el resultado deseado

+0

¡Impresionante e impresionante! Gracias sayan! – user734124

4

La respuesta corta es "convertirlo en una clase que xtable entiende". Por ejemplo,

tmp <- summary(tob) 
str(tmp) ## a list 
names(tmp) ## the contents of tmp 
str(tmp$coefficients) ## the class of the coeffients table ("coeftest") 
is.matrix(tmp$coefficients) # TRUE 
class(tmp$coefficients) <- "matrix" 
xtable(tmp$coefficients) 
+0

Esto es genial! Gracias – user734124

Cuestiones relacionadas