/ / Jak usunąć kolumnę „Standard Error” z wyjścia xtable () lm na R / RSweave / LaTeX - r, lateks, xtable

Jak usunąć kolumnę "Błąd standardowy" z wyjścia xtable () z Lm na R / RSweave / LaTeX - r, latex, Xtable

Obecnie przeprowadzam analizę danychdane populacji, więc zgłaszanie standardowych błędów w tabelach współczynników parametrów po prostu nie ma statystycznego sensu. Przeprowadziłem sporo poszukiwań i nie mogę znaleźć sposobu na dostosowanie wyjścia xtable, aby go usunąć. Czy każdy może skierować mnie w dobrym kierunku?

Wielkie dzięki, nie opublikowałem tego lekko; jeśli jest to coś oczywistego, przepraszam za zmarnowany czas!

Odpowiedzi:

5 dla odpowiedzi № 1

więc po mojej (innej) długiej odpowiedzi ... to też działa:

xtable(summary(model1)$coefficients[,c(1,3,4)])

Lub bardziej ogólnie:

sm <- summary(SomeModel)
SE.indx <- which(colnames(sm$coefficients) == "Std. Error")   # find which column is Std. Error (usually 2nd)
sm$coefficients <- sm$coefficients[, -SE.indx]  # Remove it
xtable(sm$coefficients)   # call xtable on just the coefficients table

Wyniki:

% latex table generated in R 2.15.1 by xtable 1.7-0 package
% Sun Dec  9 00:01:46 2012
begin{table}[ht]
begin{center}
begin{tabular}{rrrr}
hline
& Estimate & t value & Pr($>$$|$t$|$) \
hline
(Intercept) & 29.80 & 30.70 & 0.00 \
crim & -0.31 & -6.91 & 0.00 \
age & -0.09 & -6.50 & 0.00 \
hline
end{tabular}
end{center}
end{table}

2 dla odpowiedzi nr 2

Korzystając z pierwszego przykładu w pomocy (lm):

 xtable(as.matrix(coef(lm.D9)))

% latex table generated in R 2.15.2 by xtable 1.7-0 package
% Sat Dec  8 19:53:09 2012
begin{table}[ht]
begin{center}
begin{tabular}{rr}
hline
& x \
hline
(Intercept) & 5.03 \
groupTrt & -0.37 \
hline
end{tabular}
end{center}
end{table}

Zgodziłem się z tym, że nie używam erd stdopisy populacji, a nie tylko próbki. Zgodnie z tym rozumowaniem nie chciałbyś jednak pozostawić wartości p ani statystyki t. To dlatego podałem tylko współczynniki. Aby usunąć kolumnę błędu standardowego tylko z macierzy współczynnika podsumowania:

xtable( coef(summary(lm.D9))[,-2] )

% latex table generated in R 2.15.2 by xtable 1.7-0 package
% Sat Dec  8 21:02:17 2012
begin{table}[ht]
begin{center}
begin{tabular}{rrrr}
hline
& Estimate & t value & Pr($>$$|$t$|$) \
hline
(Intercept) & 5.03 & 22.85 & 0.00 \
groupTrt & -0.37 & -1.19 & 0.25 \
hline
end{tabular}
end{center}
end{table}

0 dla odpowiedzi № 3

Patrzeć na str(summary(Model1)) widzimy to $coefficients zawiera Std. Error wartość, którą chcemy usunąć.

lesserSummary <- function(x) {
## returns same as summary(x), but with "Std. Error" remove from coefficients.
##    and class of object is "modifiedSummary"

# grab the summary
sm <- summary(x)

# find which column is std error
SE.indx <- which(colnames(sm$coefficients) == "Std. Error")

# remove it
sm$coefficients <- sm$coefficients[, -SE.indx]

# give it some class
class(sm) <- "modifiedSummary"

# return it
sm
}


xtable.modifiedSummary <-
function (x, caption = NULL, label = NULL, align = NULL, digits = NULL, display = NULL, ...)  {
# x is a modifiedSummary object
# This function is a modification of xtable:::xtable.summary.lm
# Key Difference is simply the number of columns that x$coef is expected to have
#   (Here 3.  Originally 4)

x <- data.frame(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"))
digits(x) <- switch(1 + is.null(digits), digits, c(0, 4, 2, 4))
display(x) <- switch(1 + is.null(display), display, c("s", "f", "f", "f"))
return(x)
}


xtable_mod <- function(x) {
# Wrapper function to xtable.modified summary, calling first lesserSummary on x
xtable(lesserSummary(x))
}

PRZYKŁAD:

xtable_mod(model1)

% latex table generated in R 2.15.1 by xtable 1.7-0 package
% Sat Dec  8 23:44:54 2012
begin{table}[ht]
begin{center}
begin{tabular}{rrrr}
hline
& Estimate & t value & Pr($>$$|$t$|$) \
hline
(Intercept) & 29.8007 & 30.70 & 0.0000 \
crim & -0.3118 & -6.91 & 0.0000 \
age & -0.0896 & -6.50 & 0.0000 \
hline
end{tabular}
end{center}
end{table}




Poniżej przedstawiono kroki podjęte w celu osiągnięcia powyższego wniosku.

Prawdopodobnie możesz zmodyfikować wywołanie do xtable, ale najpierw musisz go trochę śledzić: zacznij od sprawdzenia źródła dla xtable:

xtable
# function (x, caption = NULL, label = NULL, align = NULL, digits = NULL,
#     display = NULL, ...)
# {
#     UseMethod("xtable")
# }
# <environment: namespace:xtable>

Widzimy, że po prostu ma połączenie z UseMethod(). Zobaczmy więc, które metody są dostępne:

methods(xtable)
#  [1] xtable.anova*           xtable.aov*             xtable.aovlist*
#  [4] xtable.coxph*           xtable.data.frame*      xtable.glm*
#  [7] xtable.lm*              xtable.matrix*          xtable.prcomp*
# [10] xtable.summary.aov*     xtable.summary.aovlist* xtable.summary.glm*
# [13] xtable.summary.lm*      xtable.summary.prcomp*  xtable.table*
# [16] xtable.ts*              xtable.zoo*

Istnieje kilka. Zauważ, że te z gwiazdką * są niewidoczne.

Wywołana metoda jest określona przez klasę obiektu, który wywołujemy xtable na.

Powiedzmy, że nasza produkcja to Model1 Spoglądamy na jego klasę: „

class(Model1)
# [1] "lm"

Więc źródłem, na które chcemy spojrzeć, jest xtable.lm.

xtable.lm
# Error: object "xtable.lm" not found

Błąd? Zgadza się, jest niewidoczny. Dlatego używamy nazwy pakietu z potrójnymi dwukropkami. Uwaga: koniecznie przeczytaj uwagi w pliku pomocy? ":::"

xtable:::xtable.lm
# function (x, caption = NULL, label = NULL, align = NULL, digits = NULL,
# display = NULL, ...)
# {
#     return(xtable.summary.lm(summary(x), caption = caption, label = label,
#         align = align, digits = digits, display = display))
# }
# <environment: namespace:xtable>

Zauważamy to xtable.lm połączenia xtable.summary.lm i podaje jako pierwszy argument a summary(x), gdzie x jest naszym modelem.

To prowadzi nas do dwóch miejsc do zbadania: summary i xtable.summary.lm