## ----setup, include=FALSE----------------------------------------------------- knitr::opts_chunk$set( collapse = TRUE, comment = "#>", eval = TRUE ) knitr::knit_hooks$set(output = function(x, options) { if (isTRUE(options$fold.output)) { paste0( "
Toggle to see the output ```plaintext ", x, "```
" ) } else { paste0(" ```plaintext ", x, "``` ") } }) ## ----data--------------------------------------------------------------------- library(smfa) data("utility", package = "sfaR") ## ----lp, fold.output=TRUE----------------------------------------------------- meta_lcm_lp <- smfa( formula = log(tc/wf) ~ log(y) + log(wl/wf) + log(wk/wf), data = utility, S = -1, # cost frontier (S = -1) groupType = "sfalcmcross", lcmClasses = 2, # number of latent classes metaMethod = "lp" ) summary(meta_lcm_lp) ## ----qp, fold.output=TRUE----------------------------------------------------- meta_lcm_qp <- smfa( formula = log(tc/wf) ~ log(y) + log(wl/wf) + log(wk/wf), data = utility, S = -1, groupType = "sfalcmcross", lcmClasses = 2, metaMethod = "qp" ) summary(meta_lcm_qp) ## ----huang, fold.output=TRUE-------------------------------------------------- meta_lcm_huang <- smfa( formula = log(tc/wf) ~ log(y) + log(wl/wf) + log(wk/wf), data = utility, S = -1, groupType = "sfalcmcross", lcmClasses = 2, metaMethod = "sfa", sfaApproach = "huang" ) summary(meta_lcm_huang) ## ----odonnell, fold.output=TRUE----------------------------------------------- meta_lcm_odonnell <- smfa( formula = log(tc/wf) ~ log(y) + log(wl/wf) + log(wk/wf), data = utility, S = -1, groupType = "sfalcmcross", lcmClasses = 2, metaMethod = "sfa", sfaApproach = "ordonnell" ) summary(meta_lcm_odonnell) ## ----compare-classes, fold.output=TRUE---------------------------------------- meta_lcm_2 <- smfa( formula = log(tc/wf) ~ log(y) + log(wl/wf) + log(wk/wf), data = utility, S = -1, groupType = "sfalcmcross", lcmClasses = 2, metaMethod = "lp" ) meta_lcm_3 <- smfa( formula = log(tc/wf) ~ log(y) + log(wl/wf) + log(wk/wf), data = utility, S = -1, groupType = "sfalcmcross", lcmClasses = 3, metaMethod = "lp" ) # Compare information criteria ic(meta_lcm_2) ic(meta_lcm_3) ## ----eff, fold.output=TRUE---------------------------------------------------- eff_lcm <- efficiencies(meta_lcm_lp) head(eff_lcm) # Key LCM-specific columns: # Group_c — most likely class assignment # PosteriorProb_c — posterior probability of assigned class # PosteriorProb_c1 — posterior probability of Class 1 # PosteriorProb_c2 — posterior probability of Class 2 ## ----class-summary------------------------------------------------------------ # Proportion assigned to each class and mean posterior probability with(eff_lcm, table(Group_c)) / nrow(eff_lcm) * 100 # % in each class