---
title: "Automated Reporting: Getting Started"
output: 
  rmarkdown::html_vignette:
    toc: true
    fig_width: 10.08
    fig_height: 6
tags: [r, report]
vignette: >
  %\VignetteIndexEntry{Automated Reporting: Getting Started}
  \usepackage[utf8]{inputenc}
  %\VignetteEngine{knitr::rmarkdown}
editor_options: 
  chunk_output_type: console
---

```{r, echo=FALSE}
knitr::opts_chunk$set(
  collapse = TRUE,
  warning = FALSE,
  message = FALSE,
  out.width = "100%",
  comment = "#"
)

options(
  knitr.kable.NA = "",
  width = 60
)

pkgs <- c("dplyr", "lme4")
successfully_loaded <- vapply(pkgs, requireNamespace, FUN.VALUE = logical(1L), quietly = TRUE)
can_evaluate <- all(successfully_loaded)

if (can_evaluate) {
  knitr::opts_chunk$set(eval = TRUE)
  vapply(pkgs, require, FUN.VALUE = logical(1L), quietly = TRUE, character.only = TRUE)
} else {
  knitr::opts_chunk$set(eval = FALSE)
}

library(report)
```

# Installation

First, install R and R studio. Then, copy and paste the following lines in the
console:

```{r eval=FALSE}
install.packages("remotes")
remotes::install_github("easystats/report") # You only need to do that once
```

```{r eval=FALSE}
library("report") # Load the package every time you start R
```

Great! The `report` package is now installed and loaded in your session.

# Supported Objects

The `report` package works in a two step fashion:
- First, you create a `report` object with the `report()` function.
- Second, this report object can be displayed either textually (the default
output) or as a table, using `as.data.frame()`. Moreover, you can also access a
more compact version of the report using `summary()` on the report object.

## Dataframes

If an entire dataframe is supplied, `report` will provide descriptive statistics
for all columns:

```{r}
report(iris)
```

## Grouped Dataframes

The dataframe can also be a *grouped* dataframe (from `{dplyr}` package), in which case
`report` would return a separate report for each level of the grouping variable.
Additionally, instead of textual summary, `report` also allows one to return a
tabular summary using the `report_table()` function:

```{r}
iris |>
  group_by(Species) |>
  report_table()
```

## Correlations, t-test, and Wilcox test

`report` can also be used to provide automated summaries for statistical model
objects from correlation, *t*-tests, Wilcoxon tests, etc.

```{r}
report(t.test(formula = mtcars$wt ~ mtcars$am))
```

```{r, eval=FALSE}
report(cor.test(mtcars$mpg, mtcars$wt))
```

## Regression models

### Linear regression (`lm`)

We will start out simple: a simple linear regression

```{r}
model <- lm(wt ~ am + mpg, data = mtcars)

report(model)
```

### anova (`aov`)

And its close cousin ANOVA is also covered by `report`:

```{r}
model <- aov(wt ~ am + mpg, data = mtcars)

report(model)
```

### General Linear Models (GLMs) (`glm`)

```{r}
model <- glm(vs ~ mpg + cyl, data = mtcars, family = "binomial")

report(model)
```

### Linear Mixed-Effects Models (`merMod`)

```{r}
library(lme4)

model <- lmer(Reaction ~ Days + (Days | Subject), data = sleepstudy)

report(model)
```
