| matrix_tools {copula} | R Documentation |
Tools to Work with Matrices
Description
p2P() creates a matrix from a given
vector of parameters. P2p() creates a
numeric vector from a given matrix,
currently useful for elliptical copulas.
getSigma() returns the d \times d symmetric
matrix \Sigma which is called “Rho” as well, written
(capital Greek \rho !) as P (and hence sometimes
erronously pronounced "Pee").
Note that getSigma() works for all elliptical copulas and uses
p2P() for the “unstuctured” case, dispstr = "un".
extremePairs() identifies pairs with the largest (or smallest
or both) entries in a symmetric matrix.
Usage
p2P(param, d = floor(1 + sqrt(2*length(param))))
P2p(P)
getSigma(copula)
extremePairs(x, n = 6, method = c("largest", "smallest", "both"),
use.names = FALSE)
Arguments
param |
a parameter vector. |
d |
dimension of the resulting |
P |
a |
copula |
an elliptical copula, i.e., an object (extending)
class |
x |
a symmetric |
n |
the number of pairs with smallest (or largest) values to be displayed. |
method |
a |
use.names |
A |
Details
These auxiliary functions are often used when working with elliptical copulas.
Value
p2P:a symmetric
matrixwith ones on the diagonal and the values ofparamfilled column-wise below the diagonal (which corresponds to row-wise filling above the diagonal).P2p:vectorof column-wise below-diagonal entries ofP(equal to the row-wise above-diagonal entries in case of a symmetric matrix).getSigma:matrixas fromp2P()for all cases of elliptical copulas.extremePairs:a
data.frameconsisting of three columns (row(index or name),col(index or name),value).
See Also
ellipCopula, tCopula, normalCopula.
Examples
## display the two simple definitions:
p2P
P2p
param <- (2:7)/10
tC <- tCopula(param, dim = 4, dispstr = "un", df = 3)
## consistency of the three functions :
P <- p2P(param) # (using the default 'd')
stopifnot(identical(param, P2p(P)),
identical(P, getSigma(tC)))
## Toeplitz case:
(tCt <- tCopula((2:6)/10, dim = 6, disp = "toep"))
(rhoP <- tCt@getRho(tCt))
stopifnot(identical(getSigma (tCt),
toeplitz (c(1, rhoP))))
## "AR1" case:
nC.7 <- normalCopula(0.8, dim = 7, dispstr = "ar1")
(Sar1.7 <- getSigma(nC.7))
0.8^(0:(7-1)) # 1 0.8 0.64 0.512 ..
stopifnot(all.equal(Sar1.7, toeplitz(0.8^(0:(7-1)))))