Calculo de ParáMetros Por MáXima Verosimilitud

5
Paquetes necesarios: stats, graphics, methods, stats4, Matrix, lattice, gsl, ADGofTest, stabledist (>= 0.6-4), mvtnorm, pspline, MASS, KernSmooth, sfsmisc, scatterplot3d, Rmpfr, bbmle, partitions, polynom, rugarch, colorspace, mvnormtest, tseries, zoo ## Calculo de parámetros por máxima verosimilitud a partir del tau empírico (inversión de tau) ## Codigo en R ## Se determina el parámetro alfa por el método de Genest y Rivest (método no paramétrico) tau <- cor(x, method="kendall") tau<- tau[1,2] thetaGU <- copGumbel@iTau(tau) thetaF <- copFrank@iTau(tau) thetaC <- copClayton@iTau(tau) rhoN <- normalCopula(tau) rhoT <- tCopula(tau) ## Parametro de copula mediante máxima verosimilitud (método paramétrico) gumbel.cop <- gumbelCopula(thetaGU, dim=2) (Xtras <- copula:::doExtras()) n <- if(Xtras) 220 else 64 set.seed(7) # for reproducibility x <- rCopula(n, gumbel.cop)## observacion verdadera u <- pobs(x) ## pseudo-observaciones ## maxima verosimilitud 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)))

description

Codigo en R para asignar copula a datos bivariados

Transcript of Calculo de ParáMetros Por MáXima Verosimilitud

Page 1: Calculo de ParáMetros Por MáXima Verosimilitud

Paquetes necesarios: stats, graphics, methods, stats4, Matrix, lattice, gsl, ADGofTest, stabledist (>= 0.6-4), mvtnorm, pspline, MASS, KernSmooth, sfsmisc, scatterplot3d, Rmpfr, bbmle, partitions, polynom, rugarch, colorspace, mvnormtest, tseries, zoo

## Calculo de parámetros por máxima verosimilitud a partir del tau empírico (inversión de tau)## Codigo en R## Se determina el parámetro alfa por el método de Genest y Rivest (método no paramétrico)tau <- cor(x, method="kendall")tau<- tau[1,2]thetaGU <- copGumbel@iTau(tau) thetaF <- copFrank@iTau(tau) thetaC <- copClayton@iTau(tau)rhoN <- normalCopula(tau)rhoT <- tCopula(tau)

## Parametro de copula mediante máxima verosimilitud (método paramétrico) gumbel.cop <- gumbelCopula(thetaGU, dim=2)(Xtras <- copula:::doExtras())n <- if(Xtras) 220 else 64set.seed(7) # for reproducibilityx <- rCopula(n, gumbel.cop)## observacion verdaderau <- pobs(x) ## pseudo-observaciones## maxima verosimilitudfit.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)))

frank.cop <- frankCopula(thetaF, dim=2)(Xtras <- copula:::doExtras())n <- if(Xtras) 220 else 64set.seed(7) # for reproducibilityx <- rCopula(n, frank.cop)## observacion verdadera

Page 2: Calculo de ParáMetros Por MáXima Verosimilitud

u <- pobs(x) ## pseudo-observaciones## maxima verosimilitudfit.ml <- fitCopula(frank.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=frank.cop)))

clayton.cop <- claytonCopula(thetaC, dim=2)(Xtras <- copula:::doExtras())n <- if(Xtras) 220 else 64set.seed(7) # for reproducibilityx <- rCopula(n, clayton.cop)## observacion verdaderau <- pobs(x) ## pseudo-observaciones## maxima verosimilitudfit.ml <- fitCopula(clayton.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=clayton.cop)))

set.seed(6)normal.cop <- normalCopula(c(0.958),dim=2,dispstr="un")x <- rCopula(n, normal.cop) ## "true" observationsu <- pobs(x) ## pseudo-observations## maximum likelihoodfit.ml <- fitCopula(normal.cop, x, method="ml")fit.ml

t.cop <- tCopula(c(0.958),dim=2,dispstr="un")x <- rCopula(n, t.cop) ## "true" observationsu <- pobs(x) ## pseudo-observations## maximum likelihoodfit.ml <- fitCopula(t.cop, x, method="ml")fit.ml

d<-2(copGU <- onacopulaL("Gumbel", list(thetaGU,1:d)))set.seed(1)n <- 220UGU <- rnacopula(n,copGU)## Estimationsystem.time(efmGU <- emle(UGU, copGU))summary(efmGU) # using bblme's 'mle2' method

(copF <- onacopulaL("Frank", list(thetaF,1:d)))UF <- rnacopula(n,copF)## Estimationsystem.time(efmF <- emle(UF, copF))summary(efmF) # using bblme's 'mle2' method

(copC <- onacopulaL("Clayton", list(thetaC,1:d)))UC <- rnacopula(n,copC)## Estimationsystem.time(efmC <- emle(UC, copC))summary(efmC) # using bblme's 'mle2' method

Page 3: Calculo de ParáMetros Por MáXima Verosimilitud

Simulación copula normal, marginales gamma y cálculo del estimador de maxima verosimilitud.

## Calculo de parámetros por máxima verosimilitud a partir del tau empírico (inversión de tau)## Codigo en R## Se determina el parámetro alfa por el método de Genest y Rivest (método no paramétrico)tau <- cor(x, method="kendall")tau<- tau[1,2]thetaGU <- copGumbel@iTau(tau) thetaF <- copFrank@iTau(tau) thetaC <- copClayton@iTau(tau)rhoN <- normalCopula(tau)rhoT <- tCopula(tau)

n.cop <- mvdc(normalCopula(0.958), c("gamma", "gamma"), list(list(shape = 0.4513, scale = 59.31), list(shape = 0.4426, scale = 60.4863))) simulacion <- rMvdc(220, n.cop)loglikMvdc(c(0.4513, 59.31, 0.4426, 60.4863, 0.958), simulacion, n.cop)start <- c(0.4513, 59.31, 0.4426, 60.4863, 0.958)mv.normal <- fitMvdc(simulacion, n.cop, start = start, optim.control = list(trace = TRUE, maxit = 2000))

tcop <- tCopula(c(0.95), dim = 2, dispstr = "un", df.fixed=TRUE)t.cop <- mvdc(tcop, c("gamma", "gamma"), list(list(shape = 0.4513, scale = 59.31), list(shape = 0.4426, scale = 60.4863))) simulaciont <- rMvdc(220, t.cop)loglikMvdc(c(0.4513, 59.31, 0.4426, 60.4863, 0.95), simulaciont, t.cop)start<- c(0.45,59.13, 0.4426, 60.48, 0.95)mv.t <- fitMvdc(simulaciont, t.cop, start = start, optim.control = list(trace = TRUE, maxit = 2000))

g.cop <- mvdc(gumbelCopula(24.29), c("gamma", "gamma"), list(list(shape = 0.4513, scale = 59.31), list(shape = 0.4426, scale = 60.4863))) simulaciong <- rMvdc(220, g.cop)loglikMvdc(c(0.4513, 59.31, 0.4426, 60.4863, 24.29), simulaciong, g.cop)mv.g<- fitMvdc(simulaciong, g.cop, start = start, optim.control = list(trace = TRUE, maxit = 2000))

f.cop <- mvdc(frankCopula(95.51), c("gamma", "gamma"), list(list(shape = 0.4513, scale = 59.31), list(shape = 0.4426, scale = 60.4863))) simulacionf <- rMvdc(220, f.cop)loglikMvdc(c(0.4513, 59.31, 0.4426, 60.4863, 95.51), simulacionf, f.cop)mv.f<- fitMvdc(simulacionf, f.cop, start = start, optim.control = list(trace = TRUE, maxit = 2000))

c.cop <- mvdc(claytonCopula(46.59), c("gamma", "gamma"), list(list(shape = 0.4513, scale = 59.31), list(shape = 0.4426, scale = 60.4863))) simulacionc <- rMvdc(220, c.cop)loglikMvdc(c(0.4513, 59.31, 0.4426, 60.4863, 46.59), simulacionc, c.cop)mv.c<- fitMvdc(simulacionc, c.cop, start = start, optim.control = list(trace = TRUE, maxit = 2000))

gofCopula(frankCopula(95.51), simulacionf)gofCopula(claytonCopula(46.59), simulacionc)gofCopula(gumbelCopula(24.29), simulaciong)gofCopula(normalCopula(0.95), simulacion)tcop <- tCopula(c(0.95), dim = 2, dispstr = "un", df.fixed=TRUE)gofCopula(tcop, simulaciont)

Page 4: Calculo de ParáMetros Por MáXima Verosimilitud

Parámetro estimado por inversión de tau (método de Genest y Rivest), máxima pseudo- verosimilitud y máxima verosimilitud

Copula No parametrico ml -2 log L (AIC)Normal 0.958 0.951 (0.004), 248 -548t 0.958 (df=4) 0.94 (0.006), 251 -504Gumbel 24.29 24.55(1.38), 592.5 -1185Clayton 46.59 50.13 (2.4), 624.8 -1248Frank 95.51 102 (5.7), 585 -1110

Clayton : statistic = 0.0079, parameter = 35.158, p-value = 0.1523Frank : statistic = 0.0063, parameter = 81.767, p-value = 0.1034Gumbel: statistic = 0.0051, parameter = 21.263, p-value = 0.6199Normal: statistic = 0.0123, parameter = 0.952, p-value = 0.3272T student: statistic = 0.0122, parameter = 0.948, p-value = 0.3781

Normal -1458.188T -1624.291Gumbel -1221.688 Frank -1115.354Clayton -1117.722