---
title: "PRE"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{PRE}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

```{r, include = FALSE}
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)
```

```{r setup}
library(Keng)
library(effectsize)
library(car)
data("depress")
```

PRE is called partial R-squared in regression, and partial Eta-squared in ANOVA. This vignette will examine their equivalence using the internal data `depress`.

`depress` collected `depression`, `gender`, and `class` at Time 1. Traditionally, we examine the effect of `gender` and `class` using anova. We firstly let R know `gender` and `class` are factors (i.e., categorical variables). Then we conduct anova using `car::Anova()` and compute partial Eta-squared using `effectsize::eta_squared()`.

```{r}
# factor gender and class
depress_factor <- depress
depress_factor$class <- factor(depress_factor$class, labels = c(3,5,9,12))
depress_factor$gender <- factor(depress_factor$gender, labels = c(0,1))

anova.fit <- lm(dm1 ~ gender + class, depress_factor)
Anova(anova.fit, type = 3)
cat("\n\n")
print(eta_squared(Anova(anova.fit, type = 3), partial = TRUE), digits = 6)
```

Then we conduct regression analysis and compute *PRE*. For `class` with four levels: 3, 5, 9, and 12, we dummy-code it using `ifelse()` with the class12 as the reference group. 

```{r}
# class3 indicates whether the class is class3 
depress$class3 <- ifelse(depress$class == 3, 1, 0)
# class5 indicates whether the class is class5 
depress$class5 <- ifelse(depress$class == 5, 1, 0)
# class9 indicates whether the class is class9 
depress$class9 <- ifelse(depress$class == 9, 1, 0)
```

We compute the *PRE* of `gender` though comparing Model A with `gender` against Model C without `gender`.

```{r}
fitC <- lm(dm1 ~ class3 + class5 + class9, depress)
fitA <- lm(dm1 ~ class3 + class5 + class9 + gender, depress)
print(compare_lm(fitC, fitA), digits = 3)
```

Compare gender's *PRE* and partial Eta-squared. They should be equal.

We compute the *PRE* of `class`. Note that in regression, the *PRE* of `class` is the *PRE* of all `class`'s dummy codes: `class3`, `class5`, and `class9`.

```{r}
fitC <- lm(dm1 ~ gender, depress)
fitA <- lm(dm1 ~ class3 + class5 + class9 + gender, depress)
print(compare_lm(fitC, fitA), digits = 3)
```
Compare class's *PRE* and partial Eta-squared. They should be equal.

We compute the *PRE* of the full model(Model A). The *PRE* (partial R-squared or partial Eta-squared) of the full model is commonly known as the R-squared or Eta-squared of the full model.

```{r}
fitC <- lm(dm1 ~ 1, depress)
fitA <- lm(dm1 ~ class3 + class5 + class9 + gender, depress)
print(compare_lm(fitC, fitA), digits = 3)
```
As shown, the *PRE* of Model A against Model C is equal to Model A's R_squared. Taken the loss of precision into consideration, Model C's R_squared is zero.
