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
matrix
with ones on the diagonal and the values ofparam
filled column-wise below the diagonal (which corresponds to row-wise filling above the diagonal).P2p
:vector
of column-wise below-diagonal entries ofP
(equal to the row-wise above-diagonal entries in case of a symmetric matrix).getSigma
:matrix
as fromp2P()
for all cases of elliptical copulas.extremePairs
:a
data.frame
consisting 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)))))