---
title: "Introduction to statease"
author: "Uwakmfon Paul"
date: "`r Sys.Date()`"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{Introduction to statease}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

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

## Overview

**statease** is an R package designed to simplify statistical analysis
by combining a wide range of tests with automatic plain-English
interpretation of results. Whether you are a student, researcher, or
educator, statease gives you numbers and meaning in one command.

---

## Installation

```{r eval=FALSE}
# Install from CRAN
install.packages("statease")

# Load the package
library(statease)
```

---

## Dataset

Throughout this vignette we use a simulated dataset of 90 students
examining the effect of teaching methods on exam performance.

```{r}
set.seed(42)

tutorial_data <- data.frame(
  student_id = 1:90,
  method     = rep(c("Traditional", "Online", "Hybrid"), each = 30),
  gender     = rep(c("Male", "Female"), times = 45),
  exam_score = c(
    round(rnorm(30, mean = 65, sd = 10)),
    round(rnorm(30, mean = 72, sd = 10)),
    round(rnorm(30, mean = 78, sd = 10))
  ),
  pre_test = c(
    round(rnorm(30, mean = 55, sd = 10)),
    round(rnorm(30, mean = 58, sd = 10)),
    round(rnorm(30, mean = 57, sd = 10))
  ),
  age        = round(rnorm(90, mean = 22, sd = 3)),
  passed     = rbinom(90, 1, prob = 0.7)
)

head(tutorial_data)
```

---

## 1. Descriptive Statistics

The `describe()` function provides a full summary of a numeric variable
including measures of central tendency, spread, and a normality check.

```{r}
result <- describe(tutorial_data$exam_score,
                   var_name = "Exam Score")
print(result)
```

You can also extract individual values:

```{r}
result$mean
result$sd
result$skew_label
```

---

## 2. T-Tests

### Independent Samples T-Test

Compare exam scores between male and female students:

```{r}
males   <- tutorial_data$exam_score[tutorial_data$gender == "Male"]
females <- tutorial_data$exam_score[tutorial_data$gender == "Female"]

result <- ttest_interpret(
  males, females,
  var_name = "Exam Score by Gender"
)
print(result)
```

### One-Sample T-Test

Test whether the average exam score is significantly different from 70:

```{r}
result <- ttest_interpret(
  tutorial_data$exam_score,
  mu = 70,
  var_name = "Exam Score"
)
print(result)
```

### Paired T-Test

Test whether students improved from pre-test to final exam:

```{r}
result <- ttest_interpret(
  tutorial_data$exam_score,
  tutorial_data$pre_test,
  paired   = TRUE,
  var_name = "Score Improvement"
)
print(result)
```

---

## 3. One-Way ANOVA

Test whether teaching method affects exam scores:

```{r}
result <- anova_interpret(
  exam_score ~ method,
  data = tutorial_data
)
print(result)
```

---

## 4. Two-Way ANOVA

Test the effect of both teaching method and gender on exam scores:

```{r}
result <- anova2_interpret(
  exam_score ~ method * gender,
  data = tutorial_data
)
print(result)
```

---

## 5. MANOVA

Test the combined effect of teaching method on both exam score
and pre-test score simultaneously:

```{r}
result <- manova_interpret(
  cbind(exam_score, pre_test) ~ method,
  data = tutorial_data
)
print(result)
```

---

## 6. Chi-Square Test

Test whether there is an association between teaching method
and pass/fail outcome:

```{r}
tutorial_data$passed_label <- ifelse(tutorial_data$passed == 1,
                                      "Pass", "Fail")

result <- chisq_interpret(
  tutorial_data$method,
  tutorial_data$passed_label
)
print(result)
```

---

## 7. Correlation Analysis

Test the relationship between pre-test scores and exam scores:

```{r}
result <- cor_interpret(
  tutorial_data$pre_test,
  tutorial_data$exam_score,
  var1_name = "Pre-Test Score",
  var2_name = "Exam Score"
)
print(result)
```

### Spearman Correlation

```{r}
result <- cor_interpret(
  tutorial_data$pre_test,
  tutorial_data$exam_score,
  method    = "spearman",
  var1_name = "Pre-Test Score",
  var2_name = "Exam Score"
)
print(result)
```

---

## 8. Simple Linear Regression

Predict exam score from pre-test score:

```{r}
result <- reg_interpret(
  exam_score ~ pre_test,
  data = tutorial_data
)
print(result)
```

---

## 9. Multiple Linear Regression

Predict exam score from both pre-test score and age:

```{r}
result <- mlr_interpret(
  exam_score ~ pre_test + age,
  data = tutorial_data
)
print(result)
```

---

## 10. Logistic Regression

Predict pass/fail outcome from pre-test score and age:

```{r}
result <- logistic_interpret(
  passed ~ pre_test + age,
  data = tutorial_data
)
print(result)
```

---

## 11. Non-Parametric Tests

### Mann-Whitney U Test

Non-parametric alternative to the independent samples t-test:

```{r}
result <- mannwhitney_interpret(
  males, females,
  var_name = "Exam Score by Gender"
)
print(result)
```

### Wilcoxon Signed Rank Test

Non-parametric alternative to the paired t-test:

```{r}
result <- wilcoxon_interpret(
  tutorial_data$exam_score,
  tutorial_data$pre_test,
  var_name = "Score Improvement"
)
print(result)
```

### Kruskal-Wallis Test

Non-parametric alternative to one-way ANOVA:

```{r}
result <- kruskal_interpret(
  exam_score ~ method,
  data = tutorial_data
)
print(result)
```

---

## 12. P-Value Interpretation

Interpret any p-value in plain English:

```{r}
result <- interpret_p(
  0.03,
  context = "teaching method effect on exam scores"
)
print(result)
```

---

## 13. The Master Function

The `analyze()` function automatically detects the right test
based on your input — no need to remember which function to use!

```{r}
# Descriptive statistics
analyze(x = tutorial_data$exam_score, var_name = "Exam Score")
```

```{r}
# Auto t-test
analyze(
  x        = males,
  y        = females,
  var_name = "Exam Score by Gender"
)
```

```{r}
# Auto ANOVA
analyze(formula = exam_score ~ method, data = tutorial_data)
```

```{r}
# Auto non-parametric
analyze(
  formula  = exam_score ~ method,
  data     = tutorial_data,
  nonparam = TRUE
)
```

```{r}
# Auto regression
analyze(formula = exam_score ~ pre_test, data = tutorial_data)
```

```{r}
# Auto MANOVA
analyze(
  formula = cbind(exam_score, pre_test) ~ method,
  data    = tutorial_data
)
```

---

## 14. Fisher's Exact Test

Test the association between two categorical variables 
when sample sizes are small:

```{r}
result <- fisher_interpret(
  tutorial_data$method,
  tutorial_data$passed_label
)
print(result)
```

## 15. McNemar's Test

Test whether there is a significant difference in paired 
proportions between two related measurements:

```{r}
pre_pass  <- sample(c("Yes","No"), 90, replace = TRUE, 
                    prob = c(0.4, 0.6))
post_pass <- sample(c("Yes","No"), 90, replace = TRUE, 
                    prob = c(0.7, 0.3))

result <- mcnemar_interpret(pre_pass, post_pass)
print(result)
```

## 16. Friedman Test

Non-parametric alternative to repeated measures ANOVA:

```{r}
friedman_data <- data.frame(
  score   = c(23,45,12,67,34,89,56,43,78,90,11,34),
  time    = rep(c("T1","T2","T3"), each = 4),
  subject = rep(1:4, times = 3)
)

result <- friedman_interpret(score ~ time | subject, 
                             data = friedman_data)
print(result)
```

## 17. Checking Assumptions

Before running a test, check its assumptions automatically:

```{r}
result <- check_assumptions(
  "ttest",
  x = males,
  y = females
)
print(result)
```

## 18. Power Analysis

Determine the sample size needed to detect an effect:

```{r}
result <- power_interpret(
  "ttest.two",
  effect_size = 0.5
)
print(result)
```

## 19. The Shiny App

For users who prefer a point-and-click interface, statease 
includes a built-in Shiny app:

```{r eval=FALSE}
statease::run_app()
```

This launches an interactive web application where you can 
upload your data, select variables, and run any statease 
function without writing code.

## Summary

| Test | Function | analyze() support |
|---|---|---|
| Descriptive stats | `describe()` | ✔ |
| Independent t-test | `ttest_interpret()` | ✔ |
| One-sample t-test | `ttest_interpret()` | ✔ |
| Paired t-test | `ttest_interpret()` | ✔ |
| One-way ANOVA | `anova_interpret()` | ✔ |
| Two-way ANOVA | `anova2_interpret()` | ✔ |
| MANOVA | `manova_interpret()` | ✔ |
| Chi-square | `chisq_interpret()` | ✔ |
| Correlation | `cor_interpret()` | ✔ |
| Simple regression | `reg_interpret()` | ✔ |
| Multiple regression | `mlr_interpret()` | ✔ |
| Logistic regression | `logistic_interpret()` | ✔ |
| Mann-Whitney U | `mannwhitney_interpret()` | ✔ |
| Wilcoxon Signed Rank | `wilcoxon_interpret()` | ✔ |
| Kruskal-Wallis | `kruskal_interpret()` | ✔ |
| Fisher's Exact | `fisher_interpret()` | ✔ |
| McNemar's Test | `mcnemar_interpret()` | ✔ |
| Friedman Test | `friedman_interpret()` | ✔ |
| Check Assumptions | `check_assumptions()` | ✔ |
| Power Analysis | `power_interpret()` | ✔ |
| P-value interpretation | `interpret_p()` | - |
