Changes in version 1.0.13 - Function getHeritability() added. - Function makeGrid() added. - Function as.ginverse() added. - Extension of predict() function to allow for interactions in fixed and random term. - bug fixed for predict() if pord==1 in splines model. - improved stability of Harville algorithm to solve mixed model. Changes in version 1.0.12 (2025-12-05) - First derivatives for predict using deriv argument now also implemented for spl2D and spl3D. - function effDim() added to get data.frame with effective dimensions. - In the vignette, an example added how the generalized heritability can be calculated. - Improved code coverage > 95%. - Data sets barley.uniformity.trial and oats.data added. - All data included in the package that are needed for tests. Changes in version 1.0.11 (2025-08-20) - New function mLogLik() for the calculations of the log-likelihood and first derivatives as function of precision parameters theta. - A new argument deriv added to predict() to calculate the first derivatives for spl1D() functions. - Two examples in vignette updated with predictions of derivatives and corresponding standard errors. - bug fixed for theta argument of LMMsolve(). Changes in version 1.0.10 (2025-05-14) - Cyclic B-splines models added for spl1D() and spl2D() functions. - Third order differences (pord=3) added for splxD() functions. - New argument type = c("response", "link") for predict() function. - bug fixed for GLMM models if weights are close to zero. Changes in version 1.0.9 (2025-01-14) - Binomial response can now also be modelled as fixed = cbind(failure, succes) - Categorical response using family = multinomial() - Vignette updated, with separate section for GLMM. - doi-link added for LMMsolver. - argument offset can be defined as numeric or (new) as column name in data frame. - example added to predict() function. - problem with calculation of standard errors fixed, because of minor change in spam. - bug fixed related to convergence for GLMM. Changes in version 1.0.8 (2024-08-26) - Vignette has been rewritten, with a new introduction section. - The function predict.LMMsolve added. - Extension of gam models, combining different splxD() is possible now. - Correction of upper bound nominal effective dimension for large data sets. - new 2D example Sea Surface Temperature added. - Issue with product of two large matrices fixed. - Improved efficiency initialization for large datasets. - Bug in grpTheta argument of LMMsolve() fixed. - Deviance function changes, with extra argument relative, giving the relative conditional deviance as defined in McCullagh and Nelder. The default is relative=TRUE, for relative=FALSE it returns -2*logLik(obj) Changes in version 1.0.7 (2024-04-16) - Improved efficiency for models where the residual argument of LMMsolve() is used. - A data.frame trace with convergence sequence for log-likelihood and effective dimensions, added as extra output returned by LMMsolve(). - Bug in v1.0.6 for GLMM models fixed. - Coefficients for three way interactions with one factor and two non-factors are now labelled correctly. - Standard errors in function obtainSmoothTrend() for GLMM models are now calculated. Changes in version 1.0.6 (2023-11-27) - A new argument grpTheta for LMMsolve() to give components in the model the same penalty. - The dependency package sp is replaced by sf. - A small bug for models with more than 10.000 observations and only a numeric variable in the random part of the model is fixed. - Weights are now checked for missing values after removing observations with missing values in response. This prevents spurious errors when both response and weight are missing. Changes in version 1.0.5 (2023-04-14) - Small bugs in assignment of names to fixed model coefficients when columns were dropped from the model are fixed. - Calculation of standard errors for coefficients, with coef(obj, se = TRUE). - Implementation of Generalized Linear Mixed Models (GLMM) with additional argument family in LMMsolve function. - Variance components and splines can be conditional on a factor. For variance components, this is implemented in the cf(var, cond, level) function. For 1D and 2D splines, additional arguments cond and level are added. - Several small bugs fixed. Changes in version 1.0.4 (2022-12-15) - Improved computation time for calculation of standard errors. Implementation in C++ and using the 'sparse inverse'. - Row-wise Kronecker product for spam matrices implemented in C++. Important for tensor product P-splines with improved computation time and memory allocation. Changes in version 1.0.3 (2022-08-19) - Improved computation time and memory allocation, especially important for big data with many observations (the number of rows in the data frame). - Replaced the default model.matrix function by Matrix::sparse.model.matrix to generate sparse design matrices. - In function obtainSmoothTrend the standard errors are only calculated if includeIntercept = TRUE. - Several small bugs fixed. Changes in version 1.0.2 (2022-04-21) - First and second order derivatives are now calculated correctly. - Several small bugs fixed. - Updated tests to pass checks on macM1. Changes in version 1.0.1 (2022-03-28) - weights argument in LMMsolve function added - Function obtainSmoothTrend returns in addition to the predictions the standard errors. - Generalized Additive Model (GAM) added for one-dimensional splines, i.e. more spl1D() components can be added to the spline argument of LMMsolve function - Improved efficiency of calculating the sparse inverse using super-nodes. - Replaced the original P-splines penalty D'D with a scaled version which is far more stable if there are many knots. - Several bugs fixed. Changes in version 1.0.0 (2021-11-02) - Initial CRAN version