Before you could specify matrices as:
<- lotri({
m + b ~ c(1,
a 0.5, 1)
})
Now you can specify per row as:
<- lotri({
m ~ 1
a ~ c(0.5, 1)
b })
This form is now the default when converting from a matrix to a lotri expression. In addition if the matrix is large enough (by default a 5x5 matrix), these would be named when changing them to an expression:
<- lotri({
m ~ c(a=1)
a ~ c(a=0.5, b=1)
b ~ c(a=0.5, b=0.5, c=1)
c ~ c(a=0.5, b=0.5, c=0.5, d=1)
d ~ c(a=0.5, b=0.5, c=0.5, d=1,
e e=1)
})
This way changing to an R parsed expression will be rendered in a more human readable format.
You can change the deparsing options that are used by default with
lotri
with options(lotri.plusNames=TRUE)
which
prefers the a+b+c
syntax when deparsing. Otherwise, the
line format is used by default. The dimension number before naming the
values in the line-format can be controlled with
options(lotri.nameEst=2)
or some other dimension.
New option of cov
added which check for matrix
suitability for covariance matrix. When cov=TRUE
,
off-diagonal elements in covariance matrices may no longer be nonzero if
the diagonal value is zero (rxode2#481). This will also check tht the
matrix is non-positive definite on the non-diagonal terms.
cov
can also be a function to allow correction of the
matrix to a positive definite matrix automatically.
New option of rcm
; When enabled, and
lotriIsBlockMat()
is not true, lotri()
will
permute the matrix to try to get a banded matrix using the Reverse
Cuthill McKee algorithm.
Change internals for lotri
so that new
rxode2
is no longer required to be binary linked to
lotri
.
Add new function rcm()
which permutes the matrix to
get a band matrix (if possible). This uses the Reverse Reverse Cuthill
McKee (RCM) algorithm.
Moved nmNearPD()
to this package and renamed to
lotriNearPD()
. In addition to moving, this function will
now retain the dimension names.
New exported function lotriAsExpression()
which has
more fine control than as.expression()
and will work
without converting the matrix to a lotri form. This by default uses the
new line form, but can be changed back to the
option(lotri.plusNames=TRUE)
. Also be default it will name
each element in a matrix when the dimension is above 5x5
.
You can change that number by option(lotri.nameEst=10)
to
increase it to be named above 10x10
. If you do not like the
naming you can also disable it with
option(lotri.nameEst=TRUE)
, or if you always want it on you
can use `option(lotri.nameEst=FALSE)
lotri(n1+n2~omega)
Can convert lotri objects to data-frames similar to the internal
data frame used in nlmixr()
; These can then be converted
back with as.lotri()
Added the ability to add estimates to a lotri object. These
estimates are an attached data.frame
to the original lotri
matrix. You can extract them or drop them with the function
lotriEst()
Allow specifying fixed components in lotri()
matrices.
Add cov
, cor
, sd
,
var
, and chol
options for matrix
specification. The final matrix will always be the covariance
matrix
Add function lotriMatInv()
which takes a symmetric
block matrix and converts it into a list of matrices. An sort of inverse
operation of lotriMat()
Add error for lotri(~c(40))
Added ability to flag fixed
and unfixed
components in a matrix. Currently lotri
only supports one
type.
For the lotriFix
objects, ie those created with
population types of estimates and covariance estimates, allow them to be
converted to an equivalent expression with as.expression()
for the lotri object and lotriDataFrameToLotriExpression()
for the data.frame
Added lotriIsBlockMat()
to check to see if a matrix
is in a block diagonal matrix form.
call.=FALSE
or
equivalent.rchk
lotriMat
to mix named and unnamed matrices; When
mixed, an unnamed matrix will be returned.$lower
and $upper
gives
default values even if it wasn’t specified.Matrix
import and added lotriMat
to create banded matrices (faster than Matrix
for now
included repeated matrices with list(matrix, rep)
).upper
and
lower
bounds are specified|
; Returns a
list of matrices where each condition is the name of the matrix
returned.| id(lower=c(eta1=3))
NEWS.md
file to track changes to the
package.