- 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)`

- 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.

- 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.

- 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.

- 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.

- 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.

- First and second order derivatives are now calculated correctly.
- Several small bugs fixed.
- Updated tests to pass checks on macM1.

`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.

- Initial CRAN version