LaTeX เอาท์พุตสำหรับวัตถุ summary.lm ของ R - ในขณะที่แสดงข้อมูลนอกตาราง [ปิด]


10

ดูเหมือนว่าฉันจะเป็นแบบพื้นฐาน แต่ฉันไม่สามารถหาวิธีแก้ปัญหาออนไลน์ได้ดังนั้นฉันจึงสงสัยว่าจะพลาดอะไรบ้าง

ฉันต้องการรวมเอาท์พุทของวัตถุสรุป lm ภายในเอกสาร Sweave (.Rnw) ฉันสามารถส่งออกสรุป. lm ตามที่เป็นอยู่หรือใช้แพ็คเกจ xtable / Hmisc (ผ่านคำสั่ง xtable หรือลาเท็กซ์) มีบางอย่างเช่น xtable ที่ให้ข้อมูลสรุปที่มีให้จากนอกตารางหรือไม่ ( , F สถิติ ฯลฯ ... ?)R2


เหตุใดจึงควรปิดนี้ มันควรจะเป็นเช่นนั้นแทนหรือไม่!
Tal Galili

4
ฉันคิดว่ามันสามารถอยู่ที่นี่ได้คำถามนี้มีความเกี่ยวข้องกับนักสถิติมากกว่าสำหรับโปรแกรมเมอร์
mpiktas

ตามมาตรฐานปัจจุบันของฟอรั่มนี้แน่นอนนอกหัวข้อ
อะมีบา

คำตอบ:


6

ดูแพคเกจapsrtable คุณสามารถปรับแต่งเอาท์พุทในแบบที่คุณต้องการและสรุปหลายรุ่นแทนหนึ่ง


สวัสดี mpiktas ขอบคุณสำหรับคำตอบ ฉันสนใจที่จะแสดงตารางน้อยกว่า - และต้องการมีบทสรุปของแบบจำลองเพียงอย่างเดียว แต่นั่นจะดูดี ฉันสามารถเปิดรหัสและทำมัน แต่ผมแปลกใจว่ามันไม่ได้ทำมาก่อน ...
Tal Galili

1
@Tal ฉันได้ +1 คำตอบนี้เพราะฉันค่อนข้างมั่นใจว่ามีวิธีการที่จะบรรลุสิ่งที่คุณต้องการแม้ว่าฉันจะไม่ได้ใช้เวลาในการตรวจสอบตัวเลือกแพ็คเกจในเชิงลึก
chl

2

ฉันยอมแพ้และเล่นกับโค้ดเพื่อสร้างสิ่งที่คล้ายกัน ไม่ใช่สิ่งที่สวยงามที่สุด หากมีใครรู้สึกอยากปรับปรุงมัน - ฉันยินดีที่จะใช้รหัสของคุณ

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

ทางออกหนึ่งที่เป็นไปได้คือswst: พิมพ์ผลสถิติใน SweaveแพคเกจโดยSacha Epskamp

ตัวอย่าง

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)

( , )p = 0.06T=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)

( , )p < 0.001chi2(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)

( , )p = 0.249F(1,18)=1.419p=0.249

swst(lm.D90)

( , )p < 0.001F(2,18)=485.051p<0.001


0

โดยส่วนตัวแล้วฉันเพลิดเพลินไปกับtexregซึ่งเล่นได้ดีbooktabsและปรับแต่งได้สูง

ไม่ใช่สิ่งที่คุณกำลังมองหา แต่ฉันคิดว่านี่เป็นการอ่านที่ดีสำหรับงานประเภทนี้

* หมายเหตุฉันไม่มีความสัมพันธ์ใด ๆ กับฟิลิปที่เขียนเรื่องนั้น ฮ่า ๆ.

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.