Đầu ra LaTeX cho đối tượng Summary.lm của R - trong khi hiển thị thông tin bên ngoài bảng [đã đóng]


10

Điều này đối với tôi là cơ bản, nhưng dường như tôi không thể tìm thấy một giải pháp trực tuyến, vì vậy tôi tự hỏi tôi có thể thiếu gì.

Tôi muốn bao gồm đầu ra của một đối tượng tóm tắt lm bên trong một tài liệu Sweave (.Rnw). Tôi có thể xuất tóm tắt.lm hoặc sử dụng các gói xtable / Hmisc (thông qua các lệnh xtable hoặc latex). Có cái gì đó như xtable cũng cung cấp thông tin tóm tắt có sẵn từ bên ngoài bảng không? ( Thống kê , F, v.v ...?)R2


Tại sao điều này nên được đóng lại? Nó có nên tiếp tục SO không?!
Tal Galili

4
Tôi nghĩ rằng nó có thể ở đây, câu hỏi phù hợp hơn cho các nhà thống kê, hơn là cho các lập trình viên.
mpiktas

Theo các tiêu chuẩn hiện tại của diễn đàn này, điều này chắc chắn là lạc đề.
amip nói phục hồi Monica

Câu trả lời:


6

Nhìn vào gói apsrtable . Bạn có thể điều chỉnh đầu ra theo cách bạn muốn và tóm tắt một số mô hình thay vì một mô hình.


Xin chào mpiktas. Cảm ơn bạn đã phản hồi. Tôi ít quan tâm đến việc hiển thị một số bảng - và chỉ muốn có một bản tóm tắt của một mô hình, nhưng nó sẽ trông "đẹp". Tôi có thể mở mã và làm điều đó, nhưng tôi ngạc nhiên rằng nó đã không được thực hiện trước đó ...
Tal Galili

1
@Tal Tôi đã +1 phản hồi này vì tôi khá chắc chắn có một cách để đạt được những gì bạn muốn mặc dù tôi không mất thời gian để điều tra các tùy chọn gói theo chiều sâu (Tôi đã sử dụng nó một lần để hiển thị một số mô hình như bạn đã nói).
chl

2

Tôi đã từ bỏ và chơi với mã để sản xuất một cái gì đó tương tự. Không phải là điều đẹp nhất mặc dù. Nếu bất kỳ ai cảm thấy muốn cải thiện nó - tôi rất vui khi sử dụng mã của bạn.

print.summary.lm.xtable <- function (x, digits = max(3, getOption("digits") - 3), symbolic.cor = x$symbolic.cor, 
    signif.stars = getOption("show.signif.stars"), ...) 
{

if(!require(xtable)) stop("This function requires the package 'xtable' - please make sure you get it")


cat("\\begin{verbatim}")

    cat("\nCall:\n", paste(deparse(x$call), sep = "\n", collapse = "\n"), 
        "\n\n", sep = "")
    resid <- x$residuals
    df <- x$df
    rdf <- df[2L]
    cat(if (!is.null(x$w) && diff(range(x$w))) 
        "Weighted ", "Residuals:\n", sep = "")
    if (rdf > 5L) {
        nam <- c("Min", "1Q", "Median", "3Q", "Max")
        rq <- if (length(dim(resid)) == 2L) 
            structure(apply(t(resid), 1L, quantile), dimnames = list(nam, 
                dimnames(resid)[[2L]]))
        else {
            zz <- zapsmall(quantile(resid), digits + 1)
            structure(zz, names = nam)
        }
        print(rq, digits = digits, ...)
    }
    else if (rdf > 0L) {
        print(resid, digits = digits, ...)
    }
    else {
        cat("ALL", df[1L], "residuals are 0: no residual degrees of freedom!\n")
    }
#     if (length(x$aliased) == 0L) {
#         cat("\nNo Coefficients\n")
#     }
#     else {
#         if (nsingular <- df[3L] - df[1L]) 
#             cat("\nCoefficients: (", nsingular, " not defined because of singularities)\n", 
#                 sep = "")
#         else cat("\nCoefficients:\n")
#         coefs <- x$coefficients
#         if (!is.null(aliased <- x$aliased) && any(aliased)) {
#             cn <- names(aliased)
#             coefs <- matrix(NA, length(aliased), 4, dimnames = list(cn, 
#                 colnames(coefs)))
#             coefs[!aliased, ] <- x$coefficients
#         }
#         printCoefmat(coefs, digits = digits, signif.stars = signif.stars, 
#             na.print = "NA", ...)
#     }


cat("\\end{verbatim}")

print(xtable(x),   latex.environments = "left") # x is a summary of some lm object

cat("\\begin{verbatim}")
    cat("Residual standard error:", format(signif(x$sigma, 
        digits)), "on", rdf, "degrees of freedom\n")
    if (nzchar(mess <- naprint(x$na.action))) 
        cat("  (", mess, ")\n", sep = "")
    if (!is.null(x$fstatistic)) {
        cat("Multiple R-squared:", formatC(x$r.squared, digits = digits))
        cat(",\tAdjusted R-squared:", formatC(x$adj.r.squared, 
            digits = digits), "\nF-statistic:", formatC(x$fstatistic[1L], 
            digits = digits), "on", x$fstatistic[2L], "and", 
            x$fstatistic[3L], "DF,  p-value:", format.pval(pf(x$fstatistic[1L], 
                x$fstatistic[2L], x$fstatistic[3L], lower.tail = FALSE), 
                digits = digits), "\n")
    }
    correl <- x$correlation
    if (!is.null(correl)) {
        p <- NCOL(correl)
        if (p > 1L) {
            cat("\nCorrelation of Coefficients:\n")
            if (is.logical(symbolic.cor) && symbolic.cor) {
                print(symnum(correl, abbr.colnames = NULL))
            }
            else {
                correl <- format(round(correl, 2), nsmall = 2, 
                  digits = digits)
                correl[!lower.tri(correl)] <- ""
                print(correl[-1, -p, drop = FALSE], quote = FALSE)
            }
        }
    }
    cat("\n")
cat("\\end{verbatim}")
    invisible(x)
}

2

Một giải pháp khả thi là swst: In kết quả thống kê trong gói Sweave của Sacha Epskamp .

Ví dụ

library(swst)
x <- c(44.4, 45.9, 41.9, 53.3, 44.7, 44.1, 50.7, 45.2, 60.1)
y <- c( 2.6, 3.1, 2.5, 5.0, 3.6, 4.0, 5.2, 2.8, 3.8)
corTest <- cor.test(x, y, method = "kendall", alternative = "greater")
swst(corTest)

T=26p=0.06

# Chi-square test:
M <- as.table(rbind(c(762, 327, 468), c(484,239,477)))
dimnames(M) <- list(gender=c("M","F"),
party=c("Democrat","Independent", "Republican"))
chisqTest <- chisq.test(M)
swst(chisqTest)

(chi2(2)=30.07p<0.001

# Linear model:
## Annette Dobson (1990) "An Introduction to Generalized Linear Models".
## Page 9: Plant Weight Data.
ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14)
trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69)
group <- gl(2,10,20, labels=c("Ctl","Trt"))
weight <- c(ctl, trt)
lm.D9 <- lm(weight ~ group)
lm.D90 <- lm(weight ~ group - 1) # omitting intercept
swst(lm.D9)

F(1,18)=1.419p=0.249

swst(lm.D90)

F(2,18)=485.051p<0.001


0

Cá nhân tôi thích texreg , chơi tốt booktabsvà cũng có khả năng tùy biến cao.

Không chính xác những gì bạn đang tìm kiếm, nhưng tôi nghĩ rằng đây cũng là cách đọc tốt cho loại công việc này.

* Lưu ý, tôi không liên quan đến Philip, người đã viết gói đó. Cười lớn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.