Version 1.4.2
-------------

- set up rmarkdown based vignette building
- fixed bug in function 'stepwiseVCA' not catching that only ANOVA-models are supported
- fixed bug in function 'fitVCA' that variance-covariance matrix was not correctly used in
  function 'VCAinference' and no CI for intermediary VC were estimated

Version 1.4.1
-------------
- it is now checked in function 'anovaVCA' if a model is specified where the number of levels is equal to the
  number of observation, in the new and fast FORTRAN implementation of the Sweep-operator this was not issuing
  an error any more as in previous versions
- some documentation elements were corrected and improved
- in function 'varPlot' it is now possible to set plotting limits for both plots when using plot type=3, i.e.
  having the usual variability chart and the plot of error variances per replicate-group


Version 1.4.0
-------------

- ANOVA-TypeI estimation is now implemented as fast FORTRAN implementation of the sweep-operator
- whenever ANOVA is used for fitting models, the variance-covariance matrix of variance components will
  automatically be constructed as a side product of sweeping as well as the coefficient matrix C
- the new sweeping routine reduces the computation time dramatically and no other method is provided for
  ANOVA-estimation any more, i.e. sum of squares generated from quadratic forms were removed
- in all REML-based model fitting functions based on the lme4-package, the optimizer is explicitly set to "bobyqa"
  for backward compatibility, the new default-optimizer does not generate results being consistent to using ANOVA-
  estimation (see UnitTests sub-folder)

Version 1.3.4
-------------

- in function 'plotRandVar' the ... argument was added
- in function 'varPlot' argument "Boxplot" was added allowing to depict data as boxplots
- in function 'varPlot' argument "HLine" was added controlling how horizontal lines will appear in the plot for better
  orientation
- in function 'varPlot' in argument "VCnam" one can now set on which side names of variance components appear (2=left,
  4=right), only these two options work  
- function 'legend.m' added for easily adding legend to right margin


Version 1.3.3
-------------

- functions 'Scale' and 'reScale' were added, which aim to remedy the problem with numerical problems when 
  values of the response variable are too large resulting in errors
- functions 'fitLMM' and 'fitVCA' were added serving as convenience interface for either fitting linear mixed models (LMM)
  or variance component analysis (VCA) models, allowing to specify the estimation method (REML, ANOVA) and any other 
  function argument accepted by functions 'anovaVCA' and 'remlVCA' (fitVCA), 'anovaMM' and 'remlMM' (fitLMM)
- functions 'predict.VCA', 'model.frame.VCA', and 'model.matrix.VCA' added implementing generic methods for 'VCA'-objects,
  which are required by e.g. the 'multcomp' R Add-on package for testing general linear hypotheses
- all warning-exceptions thrown were re-visited and replaced by messages if no "real" exception condition was
  communicated
- in functions 'anovaVCA', 'anovaMM', 'remlVCA' and 'remlMM' ordering of non-numeric variables is now done per
  default (set 'order.data=FALSE' to prevent this)
- bug fixed in function 'getMM', an error occurred if all variables were numeric, y~(.)^k generic function interface
  also works now, thx to Jonas Haslbeck for reporting this bug
- the algorithm for ANOVA type-1 estimation using quadratic forms was massively improved
- variance-covariance matrix of variance components more efficiently computed using both available options ("scm", "gb")



Version 1.3.2
-------------

- functions 'anovaVCA', 'anovaMM', 'remlVCA', and 'remlMM' do not throw an error any more in case all values of the
  response variable are equal (zero variance)
- bug fixed in 'anovaMM' and 'remlMM' when terms in the model formula contained a dot random terms could not be identified,
  now all model terms may contain dot and underscore but are not allowed to start with a dot character
- fixed test functions in the RUnit testcase collection which were not properly configured and added some tests
- in function 'varPlot', if type is not equal to 3, graphical parameter "mfrow" is not set any more to c(1,1) to avoid 
  interference with 'layout'
- fixed bug in function 'as.matrix.VCA' for models fitted via REML
- added S3-method 'as.matrix.VCAinference' which accesses 'VCAinference'-objects and converts its content to a matrix
  of point-estimates, one- and two-sided confidence intervals for variance components expressed as "VC", "SD" or "CV"
- added standard S3 plot-method for 'VCA'-objects, allowing to call function 'varPlot' with all possible arguments on
  a 'VCA' object
- fixed bug in function 'test.fixef' when generating "complex" output for a constrained level or when only the degrees of
  freedom were requested
- fixed bug in function 'stepwiseVCA' leading to an error when printing the resulting object 
- function 'lmerSummary' can now also be applied to models fitted directly by 'lmer' (lme4)
- in function 'varPlot' it is now possible to use custom plotting-symbol backgrounds and size as done previously for 
  plotting-symbols and their colors (see description of argument 'Points')
- in function 'varPlot' it is now possible apply BG-coloring via argument 'BG' individually for the data-region and the table
  below it, list-elements 'col.table' and 'col.bg' can be used to switch both on and off
- fixed bug in 'varPlot' that vertical lines specified via 'VLine' were not correctly shown if 'VARtype="CV"'



Version 1.3.1
-------------

- fixed incompatibility with MacOS due to the automatical check whether Math Kernel Library (MKL) is installed
  or not, it is now set, resulting in slightly worse performance than applying 'assign("MKL", FALSE, envir=msgEnv)' in
  case MKL is not available (only the case for REML!)
- fixed bug in function 'lsmMat' causing an error for multiple numeric covariables
- fixed warning message that LS Means can only be computed for numeric variables, which is not the case, 
  it is only possible for non-numeric variables
- add argument 'at' to function 'lsmeans' allowing to compute LS Means at certain values of covariables and/or
  applying different weighting scheme for factor-variables
- added standard error column in function 'test.fixef'
- terms appearing in the model formula of function 'remlMM' are now kept in the order as specified by the user
- refactored SAS-type constraining of fixed effects
- data is now automatically ordered fixing a bug, that unordered data is sometimes reported as "unbalanced" 
  although it is balanced
- message environment now created if not existing (e.g. when deleted after loading the package)


Version 1.3
------------

- REML-estimation of linear mixed models (LMM) was added to the package, functions 'remlVCA' for variance component analyses and
  'remlMM' for general LMM were added making use of the 'lme4' package which was added as package to import from
- for both REML-estimation functions the Giesbrecht & Burns approximation of the variance-covariance function of variance components
  is available as well as a Satterthwaite approximation of the degrees of freedom, both are required for confidence interval estimation
  for variance components (covariance parameters)
- the package now checks whether the high performance Math Kernel Library (MKL) is installed which comes with e.g. Microsoft R Open,
  the package tries to optimize objects for better performance according to the computational environment 
- in function 'varPlot', it is now possible to plot MeanLines on top of all other graphic elements, which is useful for large
  data sets, where these lines will be covered by points otherwise
- in function 'VCAinference' in case 'method.ci="satterthwaite"' was chosen, whenever the CI does not contain the point-estimate,
  the bounds of the CI are set to NA; this could happen in case a variance component contributes very little to the total variance
  and the Satterthwaite-approximation yields a very small number for the degrees of freedom; for one-sided CI the lower and the
  upper confidence limit (LCL, UCL) will be tested separately; unit-test TF017 added to "runit.VCAinference.R"
- Giesbrecht & Burns approximation of the variance-covariance matrix of variance components optimized
- added functionality for handling lists of VCA-objects for functions 'fixef.VCA', 'lsmeans', 'ranef.VCA', 'residuals.VCA'
- added implicit object-updating for VCA-objects in functions 'fixef.VCA', 'lsmeans', 'ranef.VCA', 'residuals.VCA', i.e.
  results of required intermediate computations are added to VCA-objects silently 


Version 1.2.1
-------------

- changed value of function argument "thresh" in function 'Csweep' from 1e-08 to 1e-12 due to numerical discrepancies
  between SAS PROC MIXED method=type1 and VCA-package implementation of the SWEEP-operator detected for the newly added
  dataset "HugeData" which is now part of the unit-test suite
- in function 'Solve' an exception handler was added dealing with errors in function 'chol2inv', now function 'MPinf'
  is called automatically whenever an error occurs --> added an extra unit-test operating on dataset 'chol2invData'
- fixed bug in function 'VCAinference' when applying it to a list of VCA-object of length equal to one, there was returned
  a list of 'VCAinference" objects of length two
- limitation removed that linear hypotheses including fixed effects constrained to zero lead to a warning stating non-estimability
- Rdoc was revised improving the quality, e.g. by fixing broken examples


Version 1.2
-------------

- the SWEEP-operator has been introduced as C-implementation in two versions:
  1) An adapted, speed-optimized version for computing ANOVA Type-1 sum of squares and corresponding degrees of freedom.
     This has been set as default method. This speeds up fitting models with many effects (random or fixed).
  2) A full SWEEP-operator for matrix-inversion ('Sinv') replacing calls to function 'MPinv' speeding up the process
     of obtaining a generalized inverse.
- one can now choose between the "qf" and the "sweep" method in functions 'anovaVCA' and 'anovaMM', where the former
  corresponds to the approach based on finding A-matrices for expression ANOVA Type-1 sum of squares as quadratic form in y,
  which is a prerequisite of applying the exact method for finding the variance-covariance matrix of variance components (VarVC.method="scm")
- in function 'anovaVCA' time consuming step of solving mixed model equations is now optional (argument "solveMME")
  since these are not required for the core of a VCA-analysis. Whenever this step is a prerequisite for other computations
  function 'solveMME' will be called and the original object will be updated automatically.
- function 'solveMME' was also refactored, outsourcing computation of the Q-matrix to function 'residuals.VCA',
  which is only needed in computing studentized, conditional residuals
- in function 'varPlot' now vertical lines can be drawn via argument 'VLine' as additional option to highlight
  levels of one or multiple factor variables besides argument 'BG'
- in function 'varPlot' argument "max.level" was introduced setting an upper limit for the number of factor-levels for which 
  in the table indicating the experimental design vertical lines will be added, if this limit is exceeded, the number of levels
  will be printed instead as e.g. "N=26"
- in function 'varPlot' graphical "xaxs" and "yaxs" are not reset to their values prior to calling this function, avoiding 
  annoying clipping of e.g. horizontal lines, which never reached the upper end of the plotting region
- function 'Solve' was added, using the Cholesky-root for solving a system of linear equations, respectively, inverting
  a matrix
- dataset "dataEP05A2_example" has been renamed to "Glucose" the original name in the CLSI EP05-A3 guideline
- dataset "CA19_9" has been added, a multi-sample, reproducibility dataset from the CLSI EP05-A3 guideline
- now using Diagonal(N) instead of Matrix(diag(N)) which was a remainder from early phases of development and terribly slow
- by-processing is now supported in functions 'anovaVCA', 'anovaMM', 'VCAinference' and 'print.VCAinference'


Version 1.1.1
-------------

- version uploaded to CRAN, functionally identical with V1.1, only headerfiles in C-file were removed due to
  cross-platform portability and unnecessary parts of the C source-code were removed
- since no functional difference to V1.1 validation status of V1.1 still applies to V1.1.1


Version 1.1
-------------

- validated version of the VCA R-package
- in function 'varPlot' it is now possible with argument "BG" to automatically color the background according
  to the factor-levels of variable 'BG$var' by specifying as many colors as there are factor-levels
- some changes in the function documentations

Version 1.0.6
-------------

- in function 'isBalanced', character and factor variables adapted to exclude empty factor-levels occurring e.g. 
  when sub-setting a larger dataset -> Data[Data$var %in% c(a,b,c),] in case that Data$var had levels a, ..., f.
- in function 'isBalanced', now really all cells of the emerging contingency tables are checked instead of only 
  columns 1 and 2


Version 1.0.5
-------------

- in function 'varPlot', argument 'VCnam' can now be used to specify user-defined labels for variance components setting
  the "text" component of the argument-list to the desired vector of character strings. Formerly, variable names were used.
- in function 'varPlot' it is now possible to specify a horizontal line indicating the intercept (total mean) via Parameter
  "MeanLine". In case that list-element "var" contains the character string "int" as i-th element, all other i-th elements
  of parameter specifications apply to this line. This line is drawn in the background not covering important information in
  the foreground.


Version 1.0.4
-------------

- minor bug-fixes after thoroughly inspecting examples, e.g. in function 'anvoaVC' an error occurred
  using 'VarVC.method="gb"'
- some previously exported functions were removed from the NAMESPACE file
- additional examples added
- function 'vcovVC' adapted to be able to handle "Linear Models", only the variance of the estimated error variance
  is computed


Version 1.0.3
-------------

- '...' added to function 'varPlot' for setting additional graphical parameters, e.g. "mar"
- in function 'VCAinference' it is not longer required to set VarVC=TRUE to compute CIs in case method.ci="satterthwaite"
- reduced computation time fo the ANOVA-estimation algorithm due to implementing the "Abbreviated Doolittle and Square Root"
  method in C, additionally, matrix multiplication of the 'Matrix' package was used throughout
- added ANOVA-table for linear models, i.e. without random effects (functions 'print.VCA' and 'print.VCAinference' adapted),
  these models now also benefit from the fast fitting algorithm
- bug fixed in function 'getL', interaction terms could not be handled by 'getL' up to this version
- bug fixed in function 'varPlot', whenever there was an interaction term in the model where at least one interacting term
  belongs to another term in the model, the variability chart was not correctly generated. Such terms are automatically removed
  now causing a warning message.
- cleaning up package configuration
- function 'anovaDF' added for minimizing the time spent on determining the ANOVA type 1 degrees of freedom
- fixing a bug in computing ddfm="containment" in function 'lsmeans" with type="complex", wrong DFs were computed before, now
  SAS PROC MIXED method=type1 results can be reproduced 
- fixing the computation of LS Means, which was correctly performed only for simple designs, e.g. without covariates


Version 1.0.2
-------------

- bug fixed in function 'stepwiseVCA': when calling 'VCAinference' with the output of 'stepwiseVCA', element "NegVCmsg" was missing,
  which caused an error under certain conditions

Version 1.0.1
-------------

- in function 'VCAinference' one can now compute confidence intervals for variance components on either the SAS PROC MIXED method=type1
  strategy (ci.method="sas") or using the Satterthwaite methodology throughout, i.e. approximating DFs for all VCs using Satterthwaite's
  approach
- bug fixed in function 'varPlot', in case 'ylim' was set, any points outside this interval were still drawn, now plotting is clipped
  to the actual plotting region in 'type=1' plots


Version 1.0
-------------

- function 'anovaMM' added for analyzing linear mixed models
- function 'ranef' added for extracting random effects from 'VCA' objects, one can request "raw", "studentized" or 
  standardized random effects
- function 'residuals.VCA' added for extracting "marginal" or "conditional" residuals of mixed models ('VCA' objects),
  one can request either "raw", "studentized", "standardized" or "Pearson-Type" residuals
- fixed effects can be extracted via function 'fixef'
- functions 'test.fixef' and 'test.lsmeans' added for testing of custom hypotheses in terms of linear combinations of fixed effects or LS Means
- function 'vcov' added computing and extracting the covariance matrix of fixed effects
- function 'vcovVC' added computing and extracting the covariance matrix of estimated variance components (covariance parameters)
- function 'coef.VCA' added for extracting fixed effects with generic method
- function 'lsmeans' added for extracting Least Squares Means (LS Means)
- function 'stepwiseVCA' added for performing all possible VCA-analyses based on the complete dataset
- function 'anovaVCA' does not use 'lm' + 'anova' anymore to obtain ANOVA Sum of Squares and respective degrees of freedom,
  it makes now use of matrices A_i which were formerly used for obtaining the variance-covariance matrix of VCs and which
  express ANOVA SS as quadratic forms in y, degrees of freedom correspond to the rank of these matrices; this speeds up the
  computation for complex models, with large number of columns of the design matrices


Version 0.9.1
-------------

- bug fixed, which compared the pure intercept model using hard-coded formula 'y~1', whenever the dependent variable was not
  equal to "y" an error occurred. Now the formula checked is 'resp~1', where resp is the dependent variable determined from
  the user-specified model formula


Version 0.9
-------------

- in function 'varPlot' it is now possible to add horizontal lines corresponding to the mean value of all observations
  belonging to a specific factor level for multiple factor variables (see examples), parameter 'MeanLine' accepts lists, where
  each list-element can be a vector, where the i-th elements corresponds to the i-th element of the "var" element of 'MeanLine'
- parameter 'BG' of function 'varPlot' accepting a list of arguments passed to function 'rect' identifies the factor-variable
  used by list-element 'var' instead of 'factor'. This was done to be consistent with all other parameter-lists which also use
  "var" as name for identification.
- parameter 'dynSetParm' was removed from the argument-list of function 'varPlot'
- it is now possible in 'varPlot' to color factor-levels of that factor used to color the background accordingly
- a bug was fixed distorting the table in case of negative values of the response variable 


Version 0.8
-------------

- added one-sided confidence intervals for VC, SD, CV, which became necessary since WinCAEv precision experiment reports contain
  one-sided 95% confidence levels
- added real-world data (realData.RData) to package used in further unit-test functions 
- unit-test functions were added (crossed-nested designs, balanced and unbalanced)
- in dataset VCAdata1 coming with the package variable "charge" was renamed as "lot", the correct name for this type of factor
  (R-documentation was adapted accordingly)


Version 0.7.5
-------------

- in function 'varPlot' the horizontal line above a single variance component is now added, previously, this line was covered
  with the elements specified by argument 'BG'
- R-help files were revised and checked for typos etc. (thanks to Peter Baumeister)


Version 0.7.4
-------------

- bug-fix in function 'varPlot', it was still not always possible to add vertical lines via e.g. 'abline' covering the 
  whole Y-range
- it is now possible in function 'varPlot' to call function 'title' in each (sub)plot using new parameter 'Title'

Version 0.7.3
-------------

- in function 'varPlot' a bug was fixed which resulted in a limited plotting area, i.e. vertical lines drawn via 'abline' ended within the plot.
- it is now possible to use different plotting symbols to indicate factor-levels of a classification variable not part of the model-formula 'form',
  in the same manner as 'col' could be used in the previous version


Version 0.7.2
-------------

- unit-test functions added which check whether "SD", "CV[%]", and "%Total" values in 'VCA'-objects are correctly computed
- in function 'varPlot' it is now possible to specify parameter 'VarLab' as list of lists, i.e. each variance component label in the tabular can be
  specified individually (see example)
- in function 'varPlot' argument 'VSpace' was added, allowing to specify the proportion of vertical space used for each VC in the tabular (see example)


Version 0.7
-----------

- function 'anovaVCA' does not throw an error if any values of the response variable are missing, instead, a warning is printed stating how many and 
  which observations have missing values
- any missing values of other variables than the response variable are removed automatically and a warning stating how many and which observations are
  affected is printed
- the print method for VCA-objects includes the number of observations used for prediction of VCs, and in case any observations had to be removed due
  to missing values, this information is included in the standard output
  
  
Version 0.6
-----------

- function 'anovaVCAms' as well as all references to it were removed
- parameter 'VarVC' was added to function 'anovaVCA', which can be used to specify whether to compute matrices A_i generating ANOVA sums of squares
  as quadratic forms in y or not
- the former version used two separate functions for this differentiation, which is now transfered to a parameter
- this version has only one function for performing a VCA increasing the usability of the VCA-package



Version 0.5.3
-------------

- due to a final decision regarding whether to report confidence intervals of negative variance estimates, and subsequently SD and CV estimates,
  any CIs of negative VC estimates will not be reported as default but can be retrieved by querying attribute "CIoriginal" of the 'VCAinference'
  object
- furthermore, one can specify different options in function 'VCAinference' by setting parameters 'excludeNeg' (Default = TRUE) and 'constrainCI'
  (Default = TRUE). See the R-documentation of function 'VCAinference'.
- Parameter 'claim.type' was added to function 'VCAinference' which specifies the claimed values to be either a variance specification ("VC"),
  a standard deviation ("SD") or coefficients of variation as percentage ("CV")
  
  
  
Version 0.5.2
-------------

- bug fixed producing different results fitting the same data with functions 'anovaVCA' and 'anovaVCAms' using default settings.
- Function 'anovaVCAms' did not adapt ANOVA mean squares in case of negative VC estimates that were set to 0
- 3 unit-test functions were added to the RUnit test-suite checking for equality of results using both functions with identical settings



Version 0.5.1
-------------

- function anovaVCAnub was removed from the package, since computational speed is not improved compared to function anovaVCA after refactoring
  the package
- added the numerical example listed on p.25 in the CLSI EP05-A2 guideline as dataset 'dataEP05A2_example'



Version 0.5
------------

- a warning is thrown if there are >= 0.75 * nrow(Data) levels of a factor variable appearing in the model formula
- negative variance components are set to 0, ANOVA-mean squares are adapted to these changed VCs, which are then used in the 
  Satterthwaite approximation of total DF
- in functions 'anovaVCA', 'anovaVCAms', 'anovaVCAnub' parameter 'NegVC' is now set to FALSE per Default, i.e. negative VCs will not
  contribute to the total variance, if set to TRUE they will contribute and they will not be set to 0
- result objects of all three functions now contain an extra column "%Total", giving the percentage of each VC on the total variance
- confidence interval limits have to be >= 0, otherwise they will be set to 0 if negative (this can be changed via parameter 'constrainCI'
  in function 'VCAinference')

  

Version 0.4.4
-------------

In functions 'anovaVCA' and 'anovaVCAms' now all variables appearing in model formulas are explicitly
converted to factor variables. Regression models are not part of the set of models to be fitted
with functions of this package, at least they are not intented to be fitted. Technically, it was possible for both
functions up to package version 0.4.3.
To excluded the possibility of fitting models to data where variables were numeric, a conversion to factor variables
takes place silenty. Otherwise, results would be wrong.



Version 0.4.3
-------------

- new function 'getCmatrix' implementing the "Abbreviated Doolittle and Square Root Methods", which is now also used in functions
  'anovaVCA' and 'anovaVCAnub' speeding up calculations
- some minor improvements in documentation of various functions



Version 0.4.2
-------------

- unit-test function in sub-directory UnitTest were adapted to the new package structure, it can now be used for installation testing
- parameter 'NegVC' was added to 'anovaVCA' and 'anovaVCAms' for better comparability to SAS PROC NESTED, which automatically excludes
  all negative VCs



Version 0.4
-----------

- refactoring of the whole package was done, now three main functions for ANOVA-type estimation of variance components
  exist
  1) 'anovaVCA'   : for arbitrary random models, slow for large data, can be used for CIs of intermediate VCs
  2) 'anovaVCAms' : for arbitrary random models, fast algorithm, cannot be used for CIs of intermediate VCs 
  3) 'anovaVCAnub': for fully-nested models, faster than 'anovaVCA', also offering CIs for intermediate VCs
- function 'varPlot' implementing the variability chart known form JMP, now handles arbitrary random models by extracting
  the order of involved factor variables in the model formula, which is used to structure the plot (see examples)
- a general implementation of the Satterthwaite approximation is implemented, which can be used for any variance level
- function 'VCAinference' can now handle CIs for intermediate VCs by computing the covariance-matrix of the estimated
  VCs; for balanced data the resulting CIs are equivalent to those provided by SAS PROC MIXED with option 'method=Type1'



Version 0.3.4
-------------

- a bug was fixed generating an error, whenever there were only single repetitions. Thanks to Andrea Geistanger for reporting this bug!
- graphical parameter 'ylim' was added to the parameter list of function 'varPlot' allowing to specify plotting limits in Y-direction
- it is now possible to color points in the variablility-chart according to the levels of a classification variable which is not part 
  of the model.



Version 0.3.2
-------------

- there was a refactoring of the package structure, which was due to make the RUnit unit-test framework operating
  on each installation. Unit-test functions were changed to relative paths, i.e. all absolute paths were substituted.
- Some minor bug-fixes are also incorporated such as corrections of typos etc.
- The package description was improved as well.



Version 0.3.1
-------------

- an improved standard print-method for objects returned by funtion 'VCAinference' was implemented. Previously, 
  the list-object was printed. Now, class'VCAinference' was introduced to dispatch the print-method handling.



Version 0.3
-----------

- function anovaVCAnub now uses objects of the Matrix-package which speeds up computations significantly (in 
  a large N=381 samples, 5-level design with severely unbalanced structure, computations needed 1/3 of the time
  of the 0.2 implementation)
- it is now possible to plot models without nesting structure, e.g. form=y~day. Formerly, form was only allowed
  to specify a nesting structure (at least one "/" on the right side in the formula) or a only intercept model (y~1)



Version 0.2
-----------

- has to be considered a development version of the package, since there are redundant parts and
  there is still missing functionality
- Satterthwaite approximation works for fully-nested models
- ANOVA estimation of variance components works for fully-nested models



