---
title: "Introduction to reliacoef"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{Introduction to reliacoef}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

```{r, include = FALSE}
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)
```

```{r setup}
library(reliacoef)
```

The `reliacoef` package is designed to compute and compare a wide range of unidimensional and multidimensional reliability coefficients commonly used in psychometrics and social science research.

## 1. Unidimensional Reliability

Unidimensional reliability is appropriate when a scale is assumed to measure a single underlying factor. The `unirel()` function provides a comprehensive suite of estimates, allowing researchers to compare multiple coefficients beyond the traditional Cronbach's alpha.

### Example: Comparing Estimates
You can pass a data frame or a covariance matrix to `unirel()`.

```r
# Using the included Graham1 dataset
result_uni <- unirel(Graham1)
result_uni
```

`unirel()` computes the following:
- **Coefficient Alpha**: The most common but often criticized for strict assumptions.
- **Jöreskog's Congeneric Reliability**: Also known as Composite Reliability or Omega.
- **Feldt-Gilmer Coefficient**: A practical alternative that maintains congeneric assumptions.
- **Ten Berge & Zegers' mu series**: A series of lower bounds that improve upon alpha.

---

## 2. Multidimensional Reliability

When a scale consists of several sub-dimensions, multidimensional reliability coefficients provide a more accurate picture of measurement quality. The `multirel()` function summarizes these estimates.

### Defining the Structure (The `until` argument)
Multidimensional functions require the `until` vector to define the boundaries of sub-constructs. For example, if a 12-item scale has 4 sub-dimensions (3 items each), use `until = c(3, 6, 9)`.

### Summary Analysis with `multirel()`
We can use the provided `Cho_multi` dataset (a 12x12 covariance matrix) to see a global comparison.

```r
# Comparing various multidimensional coefficients
result_multi <- multirel(Cho_multi, until = c(3, 6, 9))
result_multi
```

### Individual Model Functions
You can also call specific models directly if your theory supports a particular structure:

- **`bifactor()`**: Computes reliability based on a general factor and specific group factors.
- **`second_order()`**: For hierarchical models where sub-factors load onto a higher-order factor.
- **`stratified_alpha()`**: A weighted sum of alpha coefficients for sub-tests.
- **`nunnally()`**: Uses the bottom-up approach to combine sub-test reliabilities.

```r
# Analyzing general factor saturation via Bifactor model
bif_res <- bifactor(Cho_multi, until = c(3, 6, 9))
b_omega_h <- bif_res$omega_hierarchical
```

---

## 3. Testing Statistical Assumptions

Before selecting a reliability coefficient, it is critical to test whether the data fits the underlying model. The `test.tauequivalence()` function performs a chi-square difference test between the essential tau-equivalence model (required for alpha) and the congeneric model.

```r
# Testing the assumption for Coefficient Alpha
test_res <- test.tauequivalence(Graham1)
test_res
```
If the p-value is significant, Jöreskog's congeneric reliability is generally preferred over coefficient alpha.

## 4. The `reliacoef` Class

All primary functions in this package return an object of class `reliacoef`. These objects are designed for clarity:
- **Clean Output**: A customized print method displays results in a formatted table.
- **CFA Details**: For model-based coefficients, you can access detailed fit indices and parameter estimates using `$fit_indices` and `$estimates`.

```r
# Accessing detailed CFA fit indices
bif_res$fit_indices
```
