Changes: version 1.2-8  (2026-04-13)

1.) Bug fix in package function 'plotcpfa' - issue with incorrect code
	- Previously incorrect graphics code was added during an update, causing a vignette error for certain Windows builds
	- Now incorrect code has been removed and replaced with correct code, fixing errors 

2.) Added option to include covariates as additional features alongside estimated components
	- Previously only estimated component weights could be used as features for classification
	- Now covariates can be included for classification in functions 'tunecpfa', 'predict.tunecpfa', and 'cpfa'

3.) Bug fix in package function 'cpm' - issue with multiclass npv and fpr calculation
	- Previously formula for calculating multiclass npv or multiclass fpr was incorrect
	- Now each formula has been corrected

----------------

Changes: version 1.2-7  (2026-03-29)

1.) Added principal component analysis (PCA) as an additional component model, which works with a two-way matrix
	- Previously used only Parafac and Parafac2 as component models
	- Now includes functionality for PCA with an option for a varimax rotation

2.) Bug fix in package function 'plotcpfa' - edge case when a single value is present
	- Previously did not produce plots correctly when only one method and one number of components had been used
	- Now produces such plots correctly

3.) Bug fix in package function 'plotcpfa' - plot overwrite
	- Previously component heatmaps were overwritten if a user did not have GUI with plot history enabled
	- Now all component heatmaps are produced, regardless of the GUI used

4.) Modification to function 'simcpfa' - class change for output 'y' to align with function 'cpfa'
	- Previously value 'y' was output as an object of class matrix
	- Now 'y' is output as an object of class factor, which primary package function 'cpfa' expects

5.) Enhancement to package function 'cpfa' - IDs as output
	- Previously training and test IDs were not provided in output for function 'cpfa'
	- Now such IDs are provided for all train-test replications for 'cpfa'

6.) Help file cleanup
	- Previously various omissions or inconsistencies existed in several package help files
	- Now such issues have been fixed to make function usage clearer

----------------

Changes: version 1.2-6  (2026-02-06)

1.) Bug fix in package function 'plotcpfa'
	- Previously function 'plotcpfa' did not have an argument to identify the classification mode
	- Now argument 'cmode' is included to identify the classification mode to permute it to be the last mode

2.) Bug fix in package function 'tunecpfa'
	- Previously function 'tunecpfa' did not scale features consistently across classification methods
	- Now 'tunecpfa' scales features consistently across classification methods

3.) Bug fix in package function 'cpfa'
	- Previous updates included a bug that prevented function 'cpfa' from passing additional arguments to function 'tunecpfa' 
	- Now additional arguments (e.g., 'const') are passed to 'tunecpfa' successfully

4.) Bug fix in package function 'predict.tunecpfa' and internal function 'kcv.gbm'
	- Previously incorrect use of 't()' to obtain a matrix transpose rendered performance measures incorrect for method GBM
	- Now 't()' is removed, giving correct dimensions and returning correct performance measures for GBM

5.) Modified function 'tunecpfa' to include a scaling argument
	- Previously function 'tunecpfa' did not include an option for scaling predictors
	- Now 'tunecpfa' includes logical argument 'compscale' to allow an option for scaling

----------------

Changes: version 1.2-5  (2026-01-15)

1.) Bug fix in help file examples
	- Previously help file examples using function 'simcpfa' did not include code for argument 'techlist'
	- Now help file examples include code for argument 'techlist'

2.) Bug fix to ensure 'doRNG' functionality works with functions 'cpfa' and 'tunecpfa'
	- Previously 'doRNG' inclusion did not ensure reproducible results with parallel computing
	- Now a fix ensures reproducible results with parallel computing

3.) Modified procedures for handling class imbalance
	- Previously functions 'tunecpfa' and 'cpfa' handled class imbalance inconsistently across methods
	- Now both functions handle imbalance consistently and with proper documentation

----------------

Changes: version 1.2-4  (2025-12-15)

1.) Efficiency enhancement to package functions 'tunecpfa' and 'cpfa'
	- Previously functions created and stopped clusters inefficiently for parallel computing
	- Now functions create and stop clusters more efficiently for parallel computing

2.) Update to internal package function 'kcv.gbm' to be compatible with recent changes to package 'xgboost'
	- Previously function 'xgboost' was used to train gradient boosting machine models for cross-validation
	- Now function 'xgb.train' is used to train models

3.) Code management enhancement to package function 'tunecpfa'
	- Previously function used 'eval(parse())' logic to read text as code
	- Now function replaces this logic to improve code maintenance and transparency

4.) Bug fix in package function 'tunecpfa'
	- Previously input argument 'prior' was overwritten with observed class label frequencies for method 'PLR'
	- Now function correctly handles argument 'prior' for method 'PLR'

5.) Included package 'doRNG' to make parallel computing reproducible
	- Previously sole reliance on package 'doParallel' for parallel computing prevented reproducibility
	- Now inclusion of package 'doRNG' allows for reproducible parallel computing when using functions 'cpfa' or 'tunecpfa'

6.) Modified argument 'prior' in function 'tunecpfa' to handle class imbalances as typically expected
	- Previously, if 'prior = NULL', default was to use observed proportions of class labels in argument 'y'
	- Now, if 'prior = NULL', default is to use the inverse of observed proportions of class labels in argument 'y'

7.) Added additional simulation method in function 'simcpfa'
	- Previously only an iterative Monte Carlo rejection sampling technique was available for simulating a data array and class labels
	- Now an additional method is available that efficiently simulates latent data via the eigendecomposition

----------------

Changes: version 1.2-3  (2025-11-02)

1.) Bug fix in package function 'plotcpfa'
	- Previously function produced an error when creating plots for one-component models
	- Now function successfully produces plots for one-component models 

2.) Added link within package vignette
	- Previously vignette did not contain a URL link to an external project
	- Now contains a URL to an external project that applies this package to real data
	- URL: https://github.com/matthewasisgress/multiway-classification

3.) Help file cleanup
	- Previously help file for function cpfa stated that the SVM cost parameter can be zero
	- Now the help file correctly states that the SVM cost parameter must be greater than zero

----------------

Changes: version 1.2-2  (2025-10-19)

1.) Bug fix in package function 'plotcpfa'
	- Previously used 'cmode' to permute array 'X' used in function 'cpfa'
	- Now does not permute because 'X' was already permuted using 'cpfa'

2.) Added example to package vignette
	- Previously package vignette did not contain a binary classification example
	- Now vignette contains a binary classification example

----------------

Changes: version 1.2-1  (2025-07-07)

1.) Modified package function 'plotcpfa' to provide additional output
	- Previously function 'plotcpfa' did not output weights for all modes of the optimal model
	- Now 'plotcpfa' provides weights for all modes

2.) Added new internal checking functions to improve code efficiency
	- Previously did not contain checking functions for certain numeric or logical arguments
	- Now contains new internal functions to check certain numeric or logical arguments

3.) Updated author name in anticipation of upcoming marriage
	- Previously package listed author's name as author's bachelor name: Snodgress
	- Now package lists author's name as author's new marital name: Asisgress

----------------

Changes: version 1.2-0  (2025-06-11)

1.) Bug fix in package function 'cpfa'
	- Previously a bug prevented argument 'cmode' from permuting 'X' when using Parafac models
	- Now 'cmode' correctly permutes 'X' for Parafac models

2.) Added a short vignette describing how to use the package
	- Previously package contained no guide for use
	- Now adds vignette describing how to use the package

----------------

Changes: version 1.1-9  (2025-05-23)

1.) Fixed wording inconsistencies in help files
	- Previously several help files contained wording errors
	- Now errors are fixed with improved help file readability

2.) Improved function 'simcpfa' by allowing different error structures
	- Previously, added error could only come from a standard normal distribution
	- Now different types of error can be added to the simulated array

3.) Improved function 'simcpfa' by allowing custom classification mode weight matrices
	- Previously a classification mode weight matrix could not be specified, only generated
	- Now the classification mode weight matrix can be specified

4.) Improved function 'simcpfa' by allowing additional probability distributions
	- Previously weights could be drawn from only seven probability distributions
	- Now weights can be drawn from 12 common probability distributions

5.) Bug fix in package function 'simcpfa'
	- Previously a bug prevented data from being generated when 'nfac = 1'
	- Now data can be generated successfully when 'nfac = 1'

----------------

Changes: version 1.1-8  (2025-04-15)

1.) Added new function 'simcpfa' for simulating data structures for 'cpfa'
	- Previously package 'cpfa' did not have a function to simulate relevant data
	- Now a new function simulates data arrays that are connected to class labels

2.) Added new internal function 'distdraw' to support new function 'simcpfa'
	- Previously package did not have a function to simulate data from common distributions
	- Now a new internal function simulates data from distributions to support 'simcpfa'

3.) Fixed contact email address in package help files
	- Previously contact email listed in help files was a university email address
	- Now contact email is listed as a personal email address

4.) Updated references and fixed wording in help files
	- Previously several help file references were outdated and some wording was vague
	- Now help file references reflect R package updates and wording is improved

----------------

Changes: version 1.1-7  (2025-02-23)

1.) Updated contact information
	- Previously the description file contained a university email address for contact
	- Now the description file contains a personal email address

2.) Improved readability of help and function files
	- Previously code did not contain consistent spacing for clear reading
	- Now adds consistent spaces in files to improve code readability

3.) Bug fix in package function 'cpfa'
	- Previously code contained several incorrect conditional statements
	- Now conditional statements have been fixed

4.) Bug fix in internal package function 'kcv.plr'
	- Previously a bug prevented the correct model from being returned when 'nfolds = 2'
	- Now the correct model is returned when 'nfolds = 2'

----------------

Changes: version 1.1-6  (2024-11-01)

1.) Bug fix in package function 'plotcpfa' for argument '...'
	- Previously a bug prevented arguments from being passed forward
	- Now additional arguments can be passed to model fitting functions

2.) Simplified code for internal cross-validation functions
	- Previously some redundancies existed in error checking for internal functions
	- Now code has been simplified to reduce repetition

3.) Simplified code for 'print.tunecpfa' function
	- Previously redundant code existed in this function
	- Now the code has been simplified

----------------

Changes: version 1.1-5  (2024-10-01)

1.) Added new function 'plotcpfa' to plot output from function 'cpfa'
	- Previously 'cpfa' output did not have a method to visualize results
	- Now a new function fits a model based on 'cpfa' output and plots results

2.) Improved readability of function files
	- Previously some inconsistencies existed in line spacing
	- Now spacing is more consistent to improve code readability

----------------

Changes: version 1.1-4  (2024-04-26)

1.) Removed three deprecated functions
	- Previously functions 'tune.cpfa', 'predict.cpfa', and 'print.cpfa' remained   
	- Now all three functions have been removed

----------------

Changes: version 1.1-3  (2024-04-07)

1.) Modified names of three functions (old functions remain available until next update)
        - Previously main functions were 'tune.cpfa', 'predict.cpfa', and 'print.cpfa'
        - Now these functions are 'tunecpfa', 'predict.tunecpfa', and 'print.tunecpfa'

2.) Added gradient boosting machine (GBM) as a classifier
	- Previously used five classification methods
	- Now adds GBM as a new classification method

----------------

Changes:  version 1.1-2  (2024-02-15)

1.) Bug fix in main package function 'tune.cpfa' for argument 'nfac'
	- Previously bug prevented argument 'nfac' from containing multiple values
	- Now argument 'nfac' can contain multiple values  

2.) Added a Parafac2 example to help files
	- Previously help files did not include a Parafac2 example
	- Now help files include a Parafac2 example

3.) Bug fix in main package function 'tune.cpfa' for argument 'cmode'
	- Previously could not match 'y' length with classification mode's number of levels
	- Now can match them together correctly

4.) Bug fix in main package function 'predict.cpfa' for argument 'newdata'
	- Previously did not specify array dimensions correctly for four-way arrays
	- Now specifies array dimensions correctly for four-way arrays

5.) Bug fix in main package function 'predict.cpfa' for method 'SVM' for multiclass response
	- Previously columns of SVM predicted probabilities matrix were ordered incorrectly
	- Now columns are ordered correctly, calculating correct performance measures

----------------

Changes:  version 1.1-1  (2024-02-03)

1.) Added help file examples where tensor and response are related
	- Previously examples did not use tensors that were related to responses 
	- Now help file examples use tensors related to responses 

2.) Improved readability of function files
	- Previously code did not contain spaces for clear reading
	- Now adds spaces in function files to improve code readability

----------------

Changes:  version 1.1-0  (2023-12-02)

1.) Bug fix in main package function 'tune.cpfa'
	- Previously a bug prevented Parafac2 models from being fit
	- Now Parafac2 models can be fit correctly

2.) Bug fix in internal package function 'kcv.plr'
	- Previously a bug prevented 'threshold' from working with 'nfolds = 2'
	- Now argument 'threshold' works correctly with 'nfolds = 2'

----------------

Changes:  version 1.0-9  (2023-11-19)

1.) Placed tuning arguments into a list for functions 'tune.cpfa' and 'cpfa'
	- Previously classifier tuning arguments were separate inputs
	- Now combines tuning arguments in a list to improve readability

2.) Added new output to function 'cpfa'
	- Previously optimal tuning parameters were not provided by cpfa
	- Now provides optimal tuning parameters for each replication

----------------

Changes:  version 1.0-8  (2023-10-15)

1.) Bug fix in internal function 'kcv.rda' for KCV error calculation
	- Previously provided accuracy as classification error output
	- Now correctly uses classification error instead of accuracy

2.) Improvements to help files for most package functions
	- Previously help files contained language noting four methods
	- Now help files correctly reference five methods, including RDA

3.) Added plotting to main package function 'cpfa'
	- Previously function 'cpfa' contained no plotting capabilities
	- Now box plots of performance measures can be produced as output

----------------

Changes:  version 1.0-7  (2023-10-07)

1.) Added regularized discriminant analysis (RDA) as a classifier
	- Previously used four classification methods
	- Now adds RDA as a new classification method

2.) Added new references to help files for RDA

----------------

Changes:  version 1.0-6  (2023-09-07)

1.) Added Parallel Factor Analysis-2 (Parafac2) as a component model
	- Previously used only Parallel Factor Analysis-1 (Parafac)
	- Now includes functionality for Parafac2 and for irregular tensors

2.) Added new references for Parafac2 (e.g., Harshman, 1972)

----------------

Changes:  version 1.0-5  (2023-08-07)

1.) Added new function 'cpfa' as a wrapper function to implement method
	- Previously package functions were not united 
	- Now new wrapper function unites package functions

2.) Improvements to help files
	- Previously help files contained language errors and typos
	- Now help files correctly use proper language

----------------

Changes:  version 1.0-4  (2022-06-20)

1.) Removed package vignette due to vignette still containing key errors
	- Previously provided a vignette describing package use
	- Now removes vignette due to major errors; will add at later date

----------------

Changes:  version 1.0-3  (2022-06-16)

1.) Added an updated package vignette 
	- Previously vignette contained errors in describing method
	- Now fixes errors and improves presentation in vignette

----------------

Changes:  version 1.0-2  (2022-05-16)

1.) Added a package vignette describing method implemented in package 
	- Previously contained no vignette or description of method
	- Now adds vignette describing package capabilities

----------------

Changes:  version 1.0-1  (2022-04-09)

1.) Added feed-forward neural network (NN) as a classifier
	- Previously used three classification methods
	- Now adds NN as a fourth classification method

2.) Added new references to help files for NN

----------------

Changes:  version 1.0-0  (2022-03-09)

1.) Submitted to CRAN a new package called 'cpfa'

----------------