Rmarkdown pdf输出中lm函数的R摘要的精确乳胶输出

Posted

技术标签:

【中文标题】Rmarkdown pdf输出中lm函数的R摘要的精确乳胶输出【英文标题】:Exact latex output for R summary of lm function in Rmarkdown pdf output 【发布时间】:2022-01-23 04:41:56 【问题描述】:

当我们像这样拟合线性模型时,

x <- c(1.52, 1.6, 1.68, 1.75, 1.83)
y <- c(1.69, 1.74, 1.80, 1.93, 2.0)

fit <- lm(y ~ x)

summary(fit)

输出

Call:
lm(formula = y ~ x)

Residuals:
        1         2         3         4         5 
 0.021416 -0.012387 -0.036190  0.020482  0.006679 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)   
(Intercept)  0.07633    0.19447   0.392  0.72093   
x            1.04754    0.11579   9.047  0.00285 **
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.0282 on 3 degrees of freedom
Multiple R-squared:  0.9646,    Adjusted R-squared:  0.9529 
F-statistic: 81.85 on 1 and 3 DF,  p-value: 0.002852

所以,我想要的是这个“精确”表的乳胶输出,用于Rmarkdown pdf 输出文件。我不希望生成的输出会更改表或不包含该表中的某些信息。我的意思是,完全相同的输出,但在latex 输出中。

示例输出类似于此图像,但对于单个回归模型,并且还包含summary(lm(y~x))生成的所有信息

注意:我使用过 sjPlotstargazertexreg 等这些库。 目前我正在使用R version 4.1.2

【问题讨论】:

所以你想要完全相同的输出,但不同。您希望它包含与summary() 完全相同的信息,但您的示例不(例如)包含summary() 具有的残差,它确实包含N 和置信区间,summary() 不包含't have... 和 stargazertexreg 还不够好,但你还没说为什么? 【参考方案1】:

使用echo=FALSE 会产生您想要的结果。

---
output: pdf_document
---

```r, echo=FALSE
x <- c(1.52, 1.6, 1.68, 1.75, 1.83)
y <- c(1.69, 1.74, 1.80, 1.93, 2.0)

fit <- lm(y ~ x)

summary(fit)
```

【讨论】:

感谢您的回答。但这不是我想要的。我已经编辑了帖子,以便每个人都更清楚所需的输出。【参考方案2】:

我是 modelsummary 制作桌子的忠实粉丝

library(tidyverse) 
library(modelsummary)
library(broom)
library(kableExtra)


 df = tibble(x = c(1.52, 1.6, 1.68, 1.75, 1.83),
             y = 1.69, 1.74, 1.80, 1.93, 2.0 )

fit <- lm(y ~ x , data = df)

tidy(fit)


modelsummary(fit,
             output = "kableExtra")

这将产生一个非常基本的LaTeX 表。但是,如果您想按 dvs 对它们进行分组,您可以在估算模型时执行类似的操作,然后使用 broom,然后

data("iris")

iris = iris %>% 
  mutate(versicolor = ifelse(Species == "versicolor", 1, 0), 
         virginica = ifelse(Species == "virginica", 1, 0))


## pass it to tidy for each model
tidy(model1)

modelsummary(list( model1 , model2, model3, 
                        model4,  model5, model6),
             output = "kableExtra")  %>%
  add_header_above(c(" " = 1 , "Petal Length" = 3 , "Sepal Width" = 3))


这应该让您接近您正在寻找的东西!您可能需要查看kableExtra 中的更多选项。

【讨论】:

以上是关于Rmarkdown pdf输出中lm函数的R摘要的精确乳胶输出的主要内容,如果未能解决你的问题,请参考以下文章

在 for 循环 r markdown 中包含两个变量之间的空格(pdf 输出)

r 将列表名称与列表级别组合以模仿R中的摘要(lm(...))对象的系数输出(也称为smushed变量名称)

Rmarkdown 文本突出显示未显示在 PDF 输出中

Rstudio Rmarkdown编织到多个pdf?

如何控制 R Markdown(PDF 输出)中目录的位置?

Rmarkdown 文件中的 DiagrammeR/mermaid 流程图,输出格式为 PDF/LaTex