rvinenllkderiv: Negative log-likelihood and gradient for regular vine models

Description Usage Arguments Details Value See Also Examples

Description

Negative log-likelihood and gradient for regular vine models

Usage

1
2
3
rvinenllkder1.trunc(parvec,udat,A,logdcopdernames,pconddernames,LB=0,UB=10) 
dvinenllkder1.trunc(parvec,udat,logdcopdernames,pconddernames,LB=0,UB=10)
rvinenllkder2.trunc(parvec,udat,A,logdcopdernames,pconddernames,LB=0,UB=10) 

Arguments

parvec

parameter vector for the model

udat

nxd matrix of uniform scores for rvinenllk.trunc

A

dxd vine array with 1:d on diagonal

logdcopdernames

string vector with names of log copula pdfs and derivatives, length ntrunc, ntrunc=truncation level

pconddernames

string vector with names of copula conditional cdfs and derivatives, length ntrunc, ntrunc=truncation level

LB

lower bound of components of parvec

UB

upper bound of components of parvec; scalar or same length as parvec

Details

dvinenllkder1.trunc() was written before rvinenllkder1.trunc() because the algorithm looks simpler for a D-vine versus the general R-vine. rvinenllkder1.trunc() can be tested with a D-vine and matched to the output of rvinenllkder1.trunc().

Value

negative log-likelihood value with gradient as an atribute; suitable for use with nlm.

See Also

rvinenllk

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
d=5
A=vnum2array(d,3)
nsim=20
np=matrix(0,d,d)
# example 1
qcondnames=rep("qcondfrk",4)
pcondnames=rep("pcondfrk",4)
logdcopdernames=rep("logdfrk.deriv",4)
pconddernames=rep("pcondfrk.deriv",4)
parvec=c(3.6,3.6,3.6,3.6, 1.5,1.5,1.5, 1.4,1.4, 0.3)
set.seed(123)
np[1,2:d]=1; np[2,3:d]=1; np[3,4:d]=1; np[4,5]=1
udat=rvinesimvec(nsim,A,parvec,np,qcondnames,pcondnames,iprint=FALSE)
mle=nlm(rvinenllkder1.trunc,p=parvec,udat=udat,A=A,
  logdcopdernames=logdcopdernames,pconddernames=pconddernames,
  hessian=TRUE,iterlim=30,print.level=1,LB=-10,UB=30,check.analyticals=FALSE)
mle2=nlm(rvinenllkder1.trunc,p=parvec[1:7],udat=udat,A=A,
  logdcopdernames=logdcopdernames[1:2],pconddernames=pconddernames[1:2],
  hessian=TRUE,iterlim=30,print.level=1,LB=-10,UB=30,check.analyticals=FALSE)

# example 2
qcondnames=c("qcondbb1",rep("qcondfrk",3))
pcondnames=c("pcondbb1",rep("pcondfrk",3))
logdcopdernames=c("logdbb1.deriv",rep("logdfrk.deriv",3))
pconddernames=c("pcondbb1.deriv",rep("pcondfrk.deriv",3))
parvec=c(0.5,1.6,0.5,1.6,0.5,1.6,0.5,1.6, 1.5,1.5,1.5, 1.4,1.4, 0.3)
np[1,2:d]=2; np[2,3:d]=1; np[3,4:d]=1; np[4,5]=1
set.seed(123)
udat=rvinesimvec(nsim,A,parvec,np,qcondnames,pcondnames,iprint=FALSE)
lb=c(rep(c(0,1),4),rep(-10,6)) 
ub=c(rep(c(6,6),4),rep(30,6)) 
mle=nlm(rvinenllkder2.trunc,p=parvec,udat=udat,A=A,
 logdcopdernames=logdcopdernames,pconddernames=pconddernames,
 hessian=TRUE,iterlim=30,print.level=1,LB=lb,UB=ub,check.analyticals=FALSE)
mle2=nlm(rvinenllkder2.trunc,p=parvec[1:11],udat=udat,A=A,
 logdcopdernames=logdcopdernames[1:2],pconddernames=pconddernames[1:2],
 hessian=TRUE,iterlim=30,print.level=1,LB=lb[1:11],UB=ub[1:11],check.analyticals=FALSE)

YafeiXu/CopulaModel documentation built on May 9, 2019, 11:07 p.m.