## ----setup, include = FALSE---------------------------------------------------
library(yaml)
library(scales)
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  message = FALSE,
  warning = FALSE,
  results = "hide",
  tidy.opts = list(width.cutoff = 60), tidy = TRUE
)
options(scipen = 1, digits = 2)
eval_results <- FALSE
if(suppressWarnings(tryCatch({isTRUE(as.logical(readLines("pkgdown.txt")))}, error = function(e){FALSE}))){
  eval_results <- TRUE
  knitr::opts_chunk$set(
  results = "markup"
)
}
run_everything = suppressWarnings(tryCatch({isTRUE(as.logical(readLines("run_everything.txt")))}, error = function(e){FALSE}))

## ----echo = TRUE, eval=TRUE---------------------------------------------------
# Load required packages
library(tidySEM) 
library(ggplot2)
# Load data
df <- maene_identity[1:5]

## ----echo = TRUE, eval=FALSE, results='asis'----------------------------------
# desc <- tidySEM::descriptives(df)
# desc <- desc[, c("name", "type", "n", "missing", "unique",
# "mode", "mode_value", "v")
# ]
# desc

## ----echo = FALSE, eval=run_everything----------------------------------------
# desc <- tidySEM::descriptives(df)
# desc <- desc[, c("name", "type", "n", "missing", "unique",
# "mode", "mode_value", "v")
# ]
# write.csv(desc, "lca_desc.csv", row.names = FALSE)

## ----tabdesc, echo = FALSE, eval=eval_results---------------------------------
# desc <- read.csv("lca_desc.csv", stringsAsFactors = FALSE)
# knitr::kable(desc, caption = "Descriptive statistics for ordinal items")

## ----echo = TRUE, eval = FALSE------------------------------------------------
# df_plot <- df
# names(df_plot) <- paste0("Value.", names(df_plot))
# df_plot <- reshape(df_plot, varying = names(df_plot), direction = "long")
# ggplot(df_plot, aes(x = Value)) +
#   geom_bar() +
#   facet_wrap(~time, scales = "free")+
#   theme_bw()

## ----echo = FALSE, eval = run_everything--------------------------------------
# df_plot <- df
# names(df_plot) <- paste0("Value.", names(df_plot))
# df_plot <- reshape(df_plot, varying = names(df_plot), direction = "long")
# p = ggplot(df_plot, aes(x = Value)) +
#   geom_bar() +
#   facet_wrap(~time, scales = "free")+
#   theme_bw()
# ggsave("lca_plot_desc.png", p, device = "png", width = 100, height = 100, units = "mm")

## ----echo = FALSE, eval=eval_results, fig.cap="Bar charts for ordinal indicators", out.width="80%"----
# knitr::include_graphics("lca_plot_desc.png")

## ----fitlca, eval = run_everything, echo = FALSE------------------------------
# set.seed(123)
# res <- mx_lca(data = df, classes = 1:6)
# saveRDS(res, "lca_res.RData")

## ----eval = FALSE, echo = TRUE------------------------------------------------
# set.seed(123)
# res <- mx_lca(data = df, classes = 1:6)

## ----eval = FALSE, echo = FALSE-----------------------------------------------
# res <- readRDS("lca_res.RData")

## ----echo = TRUE, eval=F------------------------------------------------------
# fit <- table_fit(res)
# fit[ , c("Name", "LL", "n", "Parameters", "BIC",
# "Entropy", "prob_min", "n_min", "np_ratio",
# "np_local")]

## ----echo = FALSE, eval = run_everything--------------------------------------
# fit <- table_fit(res)
# write.csv(fit, "lca_fit.csv", row.names = FALSE)

## ----tabfit, echo = FALSE, eval = eval_results--------------------------------
# fit <- read.csv("lca_fit.csv", stringsAsFactors = FALSE)
# class(fit) <- c("tidy_fit", "data.frame")
# knitr::kable(fit[ , c("Name", "LL", "n", "Parameters", "BIC",
# "Entropy", "prob_min", "n_min", "np_ratio",
# "np_local")], caption = "Model fit table", digits = 2)

## ----echo = TRUE, eval = FALSE------------------------------------------------
# res_final <- res[[3]]

## ----echo = FALSE, eval = run_everything--------------------------------------
# res_final <- res[[3]]

## ----echo = FALSE, eval = run_everything--------------------------------------
# cp <- class_prob(res_final)
# out <- list(counts = cp$sum.posterior$proportion)

## ----echo = TRUE, eval = FALSE------------------------------------------------
# tab <- table_prob(res_final)
# reshape(tab, direction = "wide", v.names = "Probability", timevar = "group", idvar = c("Variable", "Category"))

## ----echo = FALSE, eval = run_everything--------------------------------------
# tab <- table_prob(res_final)
# tab <- reshape(tab, direction = "wide", v.names = "Probability", timevar = "group", idvar = c("Variable", "Category"))
# write.csv(tab, "lca_tab_prob.csv", row.names = FALSE)

## ----eval = eval_results, echo=FALSE------------------------------------------
# tab <- read.csv("lca_tab_prob.csv", stringsAsFactors = FALSE)
# knitr::kable(tab, caption = "Three-class model results in probability scale")

## ----echo = TRUE, eval = FALSE------------------------------------------------
# plot_prob(res_final, bw = TRUE)

## ----echo = FALSE, eval = run_everything--------------------------------------
# p <- plot_prob(res_final, bw = TRUE)
# ggsave("lca_prob.png", p, device = "png", width = 210, height = 100, units = "mm", scale = 1.5)

## ----echo = FALSE, eval = eval_results, fig.cap="Probability plot", out.width="100%"----
# knitr::include_graphics("lca_prob.png")

## ----echo = TRUE, eval=FALSE--------------------------------------------------
# aux_dep <- BCH(res_final, data = maene_identity$depression)

## ----echo = FALSE, eval=run_everything----------------------------------------
# aux_dep <- BCH(res_final, data = maene_identity$depression)

## ----echo = FALSE, eval=FALSE-------------------------------------------------
# aux_dep <- readRDS("lca_aux_dep.RData")

## ----echo = TRUE, eval=FALSE--------------------------------------------------
# df_aux <- maene_identity[, c("vict_teacher", "depression")]
# # Dummy-code vict_teacher
# df_aux$vict_teacher <- (as.integer(df_aux$vict_teacher)-1)
# aux_model <- BCH(res_final,
#                  model = "depression ~ vict_teacher",
#                  data = df_aux)

## ----echo = FALSE, eval=run_everything----------------------------------------
# df_aux <- maene_identity[, c("vict_teacher", "depression")]
# # Dummy-code vict_teacher
# df_aux$vict_teacher <- (as.integer(df_aux$vict_teacher)-1)
# aux_model <- BCH(res_final,
#                  model = "depression ~ vict_teacher",
#                  data = df_aux)

## ----echo = FALSE, eval=FALSE-------------------------------------------------
# aux_model <- readRDS("lca_aux_model.RData")