gumbel.cop <- gumbelCopula(3, dim=2)
(Xtras <- copula:::doExtras())
n <- if(Xtras) 200 else 64
x <- rCopula(n, gumbel.cop)## "true" observations
u <- pobs(x) ## pseudo-observations
## inverting Kendall's tau
fit.tau <- fitCopula(gumbel.cop, u, method="itau")
fit.tau
coef(fit.tau)# named vector
## inverting Spearman's rho
fit.rho <- fitCopula(gumbel.cop, u, method="irho")
fit.rho
## maximum pseudo-likelihood
fit.mpl <- fitCopula(gumbel.cop, u, method="mpl")
fit.mpl
## maximum likelihood
fit.ml <- fitCopula(gumbel.cop, x, method="ml")
fit.ml # print()ing works via summary() ...
## and of that, what's the log likelihood (in two different ways):
(ll. <- logLik(fit.ml))
stopifnot(all.equal(as.numeric(ll.),
loglikCopula(coef(fit.ml), x=x, copula=gumbel.cop)))
## a multiparameter example
normal.cop <- normalCopula(c(0.6,0.36, 0.6),dim=3,dispstr="un")
x <- rCopula(n, normal.cop) ## "true" observations
u <- pobs(x) ## pseudo-observations
## inverting Kendall's tau
fit.tau <- fitCopula(normal.cop, u, method="itau")
fit.tau
## inverting Spearman's rho
fit.rho <- fitCopula(normal.cop, u, method="irho")
fit.rho
## maximum pseudo-likelihood
fit.mpl <- fitCopula(normal.cop, u, method="mpl")
fit.mpl
coef(fit.mpl) # named vector
str(sf.mpl <- summary(fit.mpl))
coef(sf.mpl)# the matrix, with SE, t-value, ...
## maximum likelihood
fit.ml <- fitCopula(normal.cop, x, method="ml")
fit.ml
## with dispstr="toep"
normal.cop.toep <- normalCopula(c(0, 0), dim=3, dispstr="toep")
## inverting Kendall's tau
fit.tau <- fitCopula(normal.cop.toep, u, method="itau")
fit.tau
## inverting Spearman's rho
fit.rho <- fitCopula(normal.cop.toep, u, method="irho")
fit.rho
## maximum pseudo-likelihood
fit.mpl <- fitCopula(normal.cop.toep, u, method="mpl")
fit.mpl
## maximum likelihood
fit.ml <- fitCopula(normal.cop.toep, x, method="ml")
fit.ml
## with dispstr="ar1"
normal.cop.ar1 <- normalCopula(c(0), dim=3, dispstr="ar1")
## inverting Kendall's tau
fit.tau <- fitCopula(normal.cop.ar1, u, method="itau")
fit.tau
## inverting Spearman's rho
fit.rho <- fitCopula(normal.cop.ar1, u, method="irho")
fit.rho
## maximum pseudo-likelihood
fit.mpl <- fitCopula(normal.cop.ar1, u, method="mpl")
fit.mpl
## maximum likelihood
fit.ml <- fitCopula(normal.cop.ar1, x, method="ml")
fit.ml
## a t copula with variable df (df.fixed=FALSE):
(tCop <- tCopula(c(0.2,0.4,0.6), dim=3, dispstr="un", df=5))
set.seed(101)
x <- rCopula(n, tCop) ## "true" observations
u <- pobs(x) ## pseudo-observations
## maximum likelihood; start := (rho[1:3], df)
(tc.ml <- fitCopula(tCop, x, method="ml", start=c(0,0,0, 10)))
(tc.ml. <- fitCopula(tCop, x, method="ml")) # without 'start'
## maximum pseudo-likelihood; the asymptotic variance cannot be estimated
(tc.mpl <- fitCopula(tCop, u, method="mpl", estimate.variance=FALSE,
start= c(0,0,0,10)))
if(Xtras) { ##---- typically not run with CRAN checking: ---
## without start:
(tc.mp. <- fitCopula(tCop, u, method="mpl", estimate.variance=FALSE))
all.eqCop <- function(x,y, ...) {
x@fitting.stats$counts <- y@fitting.stats$counts <- NULL
all.equal(x,y, ...) }
stopifnot(all.eqCop(tc.ml , tc.ml., tol= .005),
all.eqCop(tc.mpl, tc.mp., tol= .005))
## same t copula but with df.fixed=TRUE (--> use same data!)
(tC.f <- tCopula(c(0.2,0.4,0.6), dim=3, dispstr="un", df=5, df.fixed=TRUE))
## maximum likelihood; start := rho[1:3] -------------
(tcF.ml <- fitCopula(tC.f, x, method="ml", start=c(0,0,0)))
(tcF.ml. <- fitCopula(tC.f, x, method="ml"))# without 'start'
stopifnot(all.eqCop(tcF.ml,tcF.ml., tol= 4e-4))
## the (estimated, asymptotic) var-cov matrix:
vcov(tcF.ml)
## maximum pseudo-likelihood; the asymptotic variance cannot be estimated
(tcF.mpl <- fitCopula(tC.f, u, method="mpl", estimate.variance=FALSE,
start=c(0,0,0)))
(tcF.mp. <- fitCopula(tC.f, u, method="mpl", estimate.variance=FALSE))
stopifnot(all.eqCop(tcF.mpl,tcF.mp., tol= 1e-5))
}## end{typically not run ...}
Run the code above in your browser using DataLab