[Returnanalytics-commits] r2945 - in pkg/PerformanceAnalytics/sandbox/pulkit: . R man src week7
noreply at r-forge.r-project.org
noreply at r-forge.r-project.org
Fri Aug 30 20:09:31 CEST 2013
Author: pulkit
Date: 2013-08-30 20:09:31 +0200 (Fri, 30 Aug 2013)
New Revision: 2945
Added:
pkg/PerformanceAnalytics/sandbox/pulkit/week7/ExtremeDrawdown.R
pkg/PerformanceAnalytics/sandbox/pulkit/week7/gpdmle.R
Removed:
pkg/PerformanceAnalytics/sandbox/pulkit/R/ExtremeDrawdown.R
pkg/PerformanceAnalytics/sandbox/pulkit/R/gpdmle.R
Modified:
pkg/PerformanceAnalytics/sandbox/pulkit/DESCRIPTION
pkg/PerformanceAnalytics/sandbox/pulkit/NAMESPACE
pkg/PerformanceAnalytics/sandbox/pulkit/man/chart.BenchmarkSR.Rd
pkg/PerformanceAnalytics/sandbox/pulkit/src/moment.c
Log:
check changes
Modified: pkg/PerformanceAnalytics/sandbox/pulkit/DESCRIPTION
===================================================================
--- pkg/PerformanceAnalytics/sandbox/pulkit/DESCRIPTION 2013-08-30 15:28:20 UTC (rev 2944)
+++ pkg/PerformanceAnalytics/sandbox/pulkit/DESCRIPTION 2013-08-30 18:09:31 UTC (rev 2945)
@@ -30,8 +30,6 @@
'DrawdownBeta.R'
'EDDCOPS.R'
'Edd.R'
- 'ExtremeDrawdown.R'
- 'gpdmle.R'
'GoldenSection.R'
'MaxDD.R'
'MinTRL.R'
@@ -47,3 +45,6 @@
'TriplePenance.R'
'TuW.R'
'na.skip.R'
+ 'capm_aorda.R'
+ 'psr_python.R'
+ 'ret.R'
Modified: pkg/PerformanceAnalytics/sandbox/pulkit/NAMESPACE
===================================================================
--- pkg/PerformanceAnalytics/sandbox/pulkit/NAMESPACE 2013-08-30 15:28:20 UTC (rev 2944)
+++ pkg/PerformanceAnalytics/sandbox/pulkit/NAMESPACE 2013-08-30 18:09:31 UTC (rev 2945)
@@ -7,7 +7,6 @@
export(chart.Penance)
export(chart.REDD)
export(chart.SRIndifference)
-export(DrawdownGPD)
export(EconomicDrawdown)
export(EDDCOPS)
export(golden_section)
Deleted: pkg/PerformanceAnalytics/sandbox/pulkit/R/ExtremeDrawdown.R
===================================================================
--- pkg/PerformanceAnalytics/sandbox/pulkit/R/ExtremeDrawdown.R 2013-08-30 15:28:20 UTC (rev 2944)
+++ pkg/PerformanceAnalytics/sandbox/pulkit/R/ExtremeDrawdown.R 2013-08-30 18:09:31 UTC (rev 2945)
@@ -1,92 +0,0 @@
-#'@title
-#'Modelling Drawdown using Extreme Value Theory
-#'
-#"@description
-#'It has been shown empirically that Drawdowns can be modelled using Modified Generalized Pareto
-#'distribution(MGPD), Generalized Pareto Distribution(GPD) and other particular cases of MGPD such
-#'as weibull distribution \eqn{MGPD(\gamma,0,\psi)} and unit exponential distribution\eqn{MGPD(1,0,\psi)}
-#'
-#' Modified Generalized Pareto Distribution is given by the following formula
-#'
-#' \deqn{
-#' G_{\eta}(m) = \begin{array}{l} 1-(1+\eta\frac{m^\gamma}{\psi})^(-1/\eta), if \eta \neq 0 \\ 1- e^{-frac{m^\gamma}{\psi}}, if \eta = 0,\end{array}}
-#'
-#' Here \eqn{\gamma{\epsilon}R} is the modifying parameter. When \eqn{\gamma<1} the corresponding densities are
-#' strictly decreasing with heavier tail; the GDP is recovered by setting \eqn{\gamma = 1} .\eqn{\gamma \textgreater 1}
-#'
-#' The GDP is given by the following equation. \eqn{MGPD(1,\eta,\psi)}
-#'
-#'\deqn{G_{\eta}(m) = \begin{array}{l} 1-(1+\eta\frac{m}{\psi})^(-1/\eta), if \eta \neq 0 \\ 1- e^{-frac{m}{\psi}}, if \eta = 0,\end{array}}
-#'
-#' The weibull distribution is given by the following equation \eqn{MGPD(\gamma,0,\psi)}
-#'
-#'\deqn{G(m) = 1- e^{-frac{m^\gamma}{\psi}}}
-#'
-#'In this function weibull and generalized Pareto distribution has been covered. This function can be
-#'expanded in the future to include more Extreme Value distributions as the literature on such distribution
-#'matures in the future.
-#'
-#' @param R an xts, vector, matrix, data frame, timeSeries or zoo object of asset return
-#' @param type The type of distribution "gpd","pd","weibull"
-#' @param threshold The threshold beyond which the drawdowns have to be modelled
-#'
-#'
-#'@references
-#'Mendes, Beatriz V.M. and Leal, Ricardo P.C., Maximum Drawdown: Models and Applications (November 2003).
-#'Coppead Working Paper Series No. 359.Available at SSRN: http://ssrn.com/abstract=477322 or http://dx.doi.org/10.2139/ssrn.477322.
-#'
-#'@export
-DrawdownGPD<-function(R,type=c("gpd","weibull"),threshold=0.90){
- x = checkData(R)
- columns = ncol(R)
- columnnames = colnames(R)
- type = type[1]
- dr = -Drawdowns(R)
-
-
- gpdfit<-function(data,threshold){
- if(type=="gpd"){
- gpd_fit = gpd(data,threshold)
- result = list(shape = gpd_fit$param[2],scale = gpd_fit$param[1])
- return(result)
- }
- if(type=="wiebull"){
- # From package MASS
- if(any( data<= 0)) stop("Weibull values must be > 0")
- lx <- log(data)
- m <- mean(lx); v <- var(lx)
- shape <- 1.2/sqrt(v); scale <- exp(m + 0.572/shape)
- result <- list(shape = shape, scale = scale)
- return(result)
- }
- }
- for(column in 1:columns){
- data = sort(as.vector(dr[,column]))
- threshold = data[threshold*nrow(R)]
- column.parameters <- gpdfit(data,threshold)
- if(column == 1){
- shape = column.parameters$shape
- scale = column.parameters$scale
- }
- else {
- scale = merge(scale, column.parameters$scale)
- shape = merge(shape, column.parameters$shape)
- print(scale)
- print(shape)
- }
- }
- parameters = rbind(scale,shape)
- colnames(parameters) = columnnames
- parameters = reclass(parameters, x)
- rownames(parameters)=c("scale","shape")
- return(parameters)
-}
-
-
-
-
-
-
-
-
-
Deleted: pkg/PerformanceAnalytics/sandbox/pulkit/R/gpdmle.R
===================================================================
--- pkg/PerformanceAnalytics/sandbox/pulkit/R/gpdmle.R 2013-08-30 15:28:20 UTC (rev 2944)
+++ pkg/PerformanceAnalytics/sandbox/pulkit/R/gpdmle.R 2013-08-30 18:09:31 UTC (rev 2945)
@@ -1,172 +0,0 @@
-## This function comes from the package "POT" . The gpd function
-## corresponds to the gpdmle function. So, I'm very gratefull to Mathieu Ribatet.
-
-gpd <- function(x, threshold, start, ...,
- std.err.type = "observed", corr = FALSE,
- method = "BFGS", warn.inf = TRUE){
-
- if (all(c("observed", "expected", "none") != std.err.type))
- stop("``std.err.type'' must be one of 'observed', 'expected' or 'none'")
-
- nlpot <- function(scale, shape) {
- -.C("gpdlik", exceed, nat, threshold, scale,
- shape, dns = double(1), PACKAGE = "POT")$dns
- }
-
- nn <- length(x)
-
- threshold <- rep(threshold, length.out = nn)
-
- high <- (x > threshold) & !is.na(x)
- threshold <- as.double(threshold[high])
- exceed <- as.double(x[high])
- nat <- length(exceed)
-
- if(!nat) stop("no data above threshold")
-
- pat <- nat/nn
- param <- c("scale", "shape")
-
- if(missing(start)) {
-
- start <- list(scale = 0, shape = 0)
- start$scale <- mean(exceed) - min(threshold)
-
- start <- start[!(param %in% names(list(...)))]
-
- }
-
- if(!is.list(start))
- stop("`start' must be a named list")
-
- if(!length(start))
- stop("there are no parameters left to maximize over")
-
- nm <- names(start)
- l <- length(nm)
- f <- formals(nlpot)
- names(f) <- param
- m <- match(nm, param)
-
- if(any(is.na(m)))
- stop("`start' specifies unknown arguments")
-
- formals(nlpot) <- c(f[m], f[-m])
- nllh <- function(p, ...) nlpot(p, ...)
-
- if(l > 1)
- body(nllh) <- parse(text = paste("nlpot(", paste("p[",1:l,
- "]", collapse = ", "), ", ...)"))
-
- fixed.param <- list(...)[names(list(...)) %in% param]
-
- if(any(!(param %in% c(nm,names(fixed.param)))))
- stop("unspecified parameters")
-
- start.arg <- c(list(p = unlist(start)), fixed.param)
- if( warn.inf && do.call("nllh", start.arg) == 1e6 )
- warning("negative log-likelihood is infinite at starting values")
-
- opt <- optim(start, nllh, hessian = TRUE, ..., method = method)
-
- if ((opt$convergence != 0) || (opt$value == 1e6)) {
- warning("optimization may not have succeeded")
- if(opt$convergence == 1) opt$convergence <- "iteration limit reached"
- }
-
- else opt$convergence <- "successful"
-
- if (std.err.type != "none"){
-
- tol <- .Machine$double.eps^0.5
-
- if(std.err.type == "observed") {
-
- var.cov <- qr(opt$hessian, tol = tol)
- if(var.cov$rank != ncol(var.cov$qr)){
- warning("observed information matrix is singular; passing std.err.type to ``expected''")
- obs.fish <- FALSE
- return
- }
-
- if (std.err.type == "observed"){
- var.cov <- try(solve(var.cov, tol = tol), silent = TRUE)
-
- if(!is.matrix(var.cov)){
- warning("observed information matrix is singular; passing std.err.type to ''none''")
- std.err.type <- "expected"
- return
- }
-
- else{
- std.err <- diag(var.cov)
- if(any(std.err <= 0)){
- warning("observed information matrix is singular; passing std.err.type to ``expected''")
- std.err.type <- "expected"
- return
- }
-
- std.err <- sqrt(std.err)
-
- if(corr) {
- .mat <- diag(1/std.err, nrow = length(std.err))
- corr.mat <- structure(.mat %*% var.cov %*% .mat, dimnames = list(nm,nm))
- diag(corr.mat) <- rep(1, length(std.err))
- }
- else {
- corr.mat <- NULL
- }
- }
- }
- }
-
- if (std.err.type == "expected"){
-
- shape <- opt$par[2]
- scale <- opt$par[1]
- a22 <- 2/((1+shape)*(1+2*shape))
- a12 <- 1/(scale*(1+shape)*(1+2*shape))
- a11 <- 1/((scale^2)*(1+2*shape))
- ##Expected Matix of Information of Fisher
- expFisher <- nat * matrix(c(a11,a12,a12,a22),nrow=2)
-
- expFisher <- qr(expFisher, tol = tol)
- var.cov <- solve(expFisher, tol = tol)
- std.err <- sqrt(diag(var.cov))
-
- if(corr) {
- .mat <- diag(1/std.err, nrow = length(std.err))
- corr.mat <- structure(.mat %*% var.cov %*% .mat, dimnames = list(nm,nm))
- diag(corr.mat) <- rep(1, length(std.err))
- }
- else
- corr.mat <- NULL
- }
-
- colnames(var.cov) <- nm
- rownames(var.cov) <- nm
- names(std.err) <- nm
- }
-
- else{
- std.err <- std.err.type <- corr.mat <- NULL
- var.cov <- NULL
- }
-
-
- param <- c(opt$par, unlist(fixed.param))
- scale <- param["scale"]
-
- var.thresh <- !all(threshold == threshold[1])
-
- if (!var.thresh)
- threshold <- threshold[1]
-
- list(fitted.values = opt$par, std.err = std.err, std.err.type = std.err.type,
- var.cov = var.cov, fixed = unlist(fixed.param), param = param,
- deviance = 2*opt$value, corr = corr.mat, convergence = opt$convergence,
- counts = opt$counts, message = opt$message, threshold = threshold,
- nat = nat, pat = pat, data = x, exceed = exceed, scale = scale,
- var.thresh = var.thresh, est = "MLE", logLik = -opt$value,
- opt.value = opt$value, hessian = opt$hessian)
-}
Modified: pkg/PerformanceAnalytics/sandbox/pulkit/man/chart.BenchmarkSR.Rd
===================================================================
--- pkg/PerformanceAnalytics/sandbox/pulkit/man/chart.BenchmarkSR.Rd 2013-08-30 15:28:20 UTC (rev 2944)
+++ pkg/PerformanceAnalytics/sandbox/pulkit/man/chart.BenchmarkSR.Rd 2013-08-30 18:09:31 UTC (rev 2945)
@@ -55,8 +55,8 @@
relation ship between the Benchmark Sharpe Ratio and
average correlation,average sharpe ratio or the number of
#'strategies keeping other parameters constant. Here
- average Sharpe ratio , average #'correlation stand for
- the average of all the strategies in the portfolio. The
+ average Sharpe ratio , average correlation stand for the
+ average of all the strategies in the portfolio. The
original point of the return series is also shown on the
plots.
Modified: pkg/PerformanceAnalytics/sandbox/pulkit/src/moment.c
===================================================================
--- pkg/PerformanceAnalytics/sandbox/pulkit/src/moment.c 2013-08-30 15:28:20 UTC (rev 2944)
+++ pkg/PerformanceAnalytics/sandbox/pulkit/src/moment.c 2013-08-30 18:09:31 UTC (rev 2945)
@@ -56,5 +56,5 @@
return Rsum;
}
-
+
Copied: pkg/PerformanceAnalytics/sandbox/pulkit/week7/ExtremeDrawdown.R (from rev 2943, pkg/PerformanceAnalytics/sandbox/pulkit/R/ExtremeDrawdown.R)
===================================================================
--- pkg/PerformanceAnalytics/sandbox/pulkit/week7/ExtremeDrawdown.R (rev 0)
+++ pkg/PerformanceAnalytics/sandbox/pulkit/week7/ExtremeDrawdown.R 2013-08-30 18:09:31 UTC (rev 2945)
@@ -0,0 +1,92 @@
+#'@title
+#'Modelling Drawdown using Extreme Value Theory
+#'
+#"@description
+#'It has been shown empirically that Drawdowns can be modelled using Modified Generalized Pareto
+#'distribution(MGPD), Generalized Pareto Distribution(GPD) and other particular cases of MGPD such
+#'as weibull distribution \eqn{MGPD(\gamma,0,\psi)} and unit exponential distribution\eqn{MGPD(1,0,\psi)}
+#'
+#' Modified Generalized Pareto Distribution is given by the following formula
+#'
+#' \deqn{
+#' G_{\eta}(m) = \begin{array}{l} 1-(1+\eta\frac{m^\gamma}{\psi})^(-1/\eta), if \eta \neq 0 \\ 1- e^{-frac{m^\gamma}{\psi}}, if \eta = 0,\end{array}}
+#'
+#' Here \eqn{\gamma{\epsilon}R} is the modifying parameter. When \eqn{\gamma<1} the corresponding densities are
+#' strictly decreasing with heavier tail; the GDP is recovered by setting \eqn{\gamma = 1} .\eqn{\gamma \textgreater 1}
+#'
+#' The GDP is given by the following equation. \eqn{MGPD(1,\eta,\psi)}
+#'
+#'\deqn{G_{\eta}(m) = \begin{array}{l} 1-(1+\eta\frac{m}{\psi})^(-1/\eta), if \eta \neq 0 \\ 1- e^{-frac{m}{\psi}}, if \eta = 0,\end{array}}
+#'
+#' The weibull distribution is given by the following equation \eqn{MGPD(\gamma,0,\psi)}
+#'
+#'\deqn{G(m) = 1- e^{-frac{m^\gamma}{\psi}}}
+#'
+#'In this function weibull and generalized Pareto distribution has been covered. This function can be
+#'expanded in the future to include more Extreme Value distributions as the literature on such distribution
+#'matures in the future.
+#'
+#' @param R an xts, vector, matrix, data frame, timeSeries or zoo object of asset return
+#' @param type The type of distribution "gpd","pd","weibull"
+#' @param threshold The threshold beyond which the drawdowns have to be modelled
+#'
+#'
+#'@references
+#'Mendes, Beatriz V.M. and Leal, Ricardo P.C., Maximum Drawdown: Models and Applications (November 2003).
+#'Coppead Working Paper Series No. 359.Available at SSRN: http://ssrn.com/abstract=477322 or http://dx.doi.org/10.2139/ssrn.477322.
+#'
+#'@export
+DrawdownGPD<-function(R,type=c("gpd","weibull"),threshold=0.90){
+ x = checkData(R)
+ columns = ncol(R)
+ columnnames = colnames(R)
+ type = type[1]
+ dr = -Drawdowns(R)
+
+
+ gpdfit<-function(data,threshold){
+ if(type=="gpd"){
+ gpd_fit = gpd(data,threshold)
+ result = list(shape = gpd_fit$param[2],scale = gpd_fit$param[1])
+ return(result)
+ }
+ if(type=="wiebull"){
+ # From package MASS
+ if(any( data<= 0)) stop("Weibull values must be > 0")
+ lx <- log(data)
+ m <- mean(lx); v <- var(lx)
+ shape <- 1.2/sqrt(v); scale <- exp(m + 0.572/shape)
+ result <- list(shape = shape, scale = scale)
+ return(result)
+ }
+ }
+ for(column in 1:columns){
+ data = sort(as.vector(dr[,column]))
+ threshold = data[threshold*nrow(R)]
+ column.parameters <- gpdfit(data,threshold)
+ if(column == 1){
+ shape = column.parameters$shape
+ scale = column.parameters$scale
+ }
+ else {
+ scale = merge(scale, column.parameters$scale)
+ shape = merge(shape, column.parameters$shape)
+ print(scale)
+ print(shape)
+ }
+ }
+ parameters = rbind(scale,shape)
+ colnames(parameters) = columnnames
+ parameters = reclass(parameters, x)
+ rownames(parameters)=c("scale","shape")
+ return(parameters)
+}
+
+
+
+
+
+
+
+
+
Copied: pkg/PerformanceAnalytics/sandbox/pulkit/week7/gpdmle.R (from rev 2943, pkg/PerformanceAnalytics/sandbox/pulkit/R/gpdmle.R)
===================================================================
--- pkg/PerformanceAnalytics/sandbox/pulkit/week7/gpdmle.R (rev 0)
+++ pkg/PerformanceAnalytics/sandbox/pulkit/week7/gpdmle.R 2013-08-30 18:09:31 UTC (rev 2945)
@@ -0,0 +1,172 @@
+## This function comes from the package "POT" . The gpd function
+## corresponds to the gpdmle function. So, I'm very gratefull to Mathieu Ribatet.
+#'@useDynLib gpd
+gpd <- function(x, threshold, start, ...,
+ std.err.type = "observed", corr = FALSE,
+ method = "BFGS", warn.inf = TRUE){
+
+ if (all(c("observed", "expected", "none") != std.err.type))
+ stop("``std.err.type'' must be one of 'observed', 'expected' or 'none'")
+
+ nlpot <- function(scale, shape) {
+ -.C("gpdlik", exceed, nat, threshold, scale,
+ shape, dns = double(1))$dns
+ }
+
+ nn <- length(x)
+
+ threshold <- rep(threshold, length.out = nn)
+
+ high <- (x > threshold) & !is.na(x)
+ threshold <- as.double(threshold[high])
+ exceed <- as.double(x[high])
+ nat <- length(exceed)
+
+ if(!nat) stop("no data above threshold")
+
+ pat <- nat/nn
+ param <- c("scale", "shape")
+
+ if(missing(start)) {
+
+ start <- list(scale = 0, shape = 0)
+ start$scale <- mean(exceed) - min(threshold)
+
+ start <- start[!(param %in% names(list(...)))]
+
+ }
+
+ if(!is.list(start))
+ stop("`start' must be a named list")
+
+ if(!length(start))
+ stop("there are no parameters left to maximize over")
+
+ nm <- names(start)
+ l <- length(nm)
+ f <- formals(nlpot)
+ names(f) <- param
+ m <- match(nm, param)
+
+ if(any(is.na(m)))
+ stop("`start' specifies unknown arguments")
+
+ formals(nlpot) <- c(f[m], f[-m])
+ nllh <- function(p, ...) nlpot(p, ...)
+
+ if(l > 1)
+ body(nllh) <- parse(text = paste("nlpot(", paste("p[",1:l,
+ "]", collapse = ", "), ", ...)"))
+
+ fixed.param <- list(...)[names(list(...)) %in% param]
+
+ if(any(!(param %in% c(nm,names(fixed.param)))))
+ stop("unspecified parameters")
+
+ start.arg <- c(list(p = unlist(start)), fixed.param)
+ if( warn.inf && do.call("nllh", start.arg) == 1e6 )
+ warning("negative log-likelihood is infinite at starting values")
+
+ opt <- optim(start, nllh, hessian = TRUE, ..., method = method)
+
+ if ((opt$convergence != 0) || (opt$value == 1e6)) {
+ warning("optimization may not have succeeded")
+ if(opt$convergence == 1) opt$convergence <- "iteration limit reached"
+ }
+
+ else opt$convergence <- "successful"
+
+ if (std.err.type != "none"){
+
+ tol <- .Machine$double.eps^0.5
+
+ if(std.err.type == "observed") {
+
+ var.cov <- qr(opt$hessian, tol = tol)
+ if(var.cov$rank != ncol(var.cov$qr)){
+ warning("observed information matrix is singular; passing std.err.type to ``expected''")
+ obs.fish <- FALSE
+ return
+ }
+
+ if (std.err.type == "observed"){
+ var.cov <- try(solve(var.cov, tol = tol), silent = TRUE)
+
+ if(!is.matrix(var.cov)){
+ warning("observed information matrix is singular; passing std.err.type to ''none''")
+ std.err.type <- "expected"
+ return
+ }
+
+ else{
+ std.err <- diag(var.cov)
+ if(any(std.err <= 0)){
+ warning("observed information matrix is singular; passing std.err.type to ``expected''")
+ std.err.type <- "expected"
+ return
+ }
+
+ std.err <- sqrt(std.err)
+
+ if(corr) {
+ .mat <- diag(1/std.err, nrow = length(std.err))
+ corr.mat <- structure(.mat %*% var.cov %*% .mat, dimnames = list(nm,nm))
+ diag(corr.mat) <- rep(1, length(std.err))
+ }
+ else {
+ corr.mat <- NULL
+ }
+ }
+ }
+ }
+
+ if (std.err.type == "expected"){
+
+ shape <- opt$par[2]
+ scale <- opt$par[1]
+ a22 <- 2/((1+shape)*(1+2*shape))
+ a12 <- 1/(scale*(1+shape)*(1+2*shape))
+ a11 <- 1/((scale^2)*(1+2*shape))
+ ##Expected Matix of Information of Fisher
+ expFisher <- nat * matrix(c(a11,a12,a12,a22),nrow=2)
+
+ expFisher <- qr(expFisher, tol = tol)
+ var.cov <- solve(expFisher, tol = tol)
+ std.err <- sqrt(diag(var.cov))
+
+ if(corr) {
+ .mat <- diag(1/std.err, nrow = length(std.err))
+ corr.mat <- structure(.mat %*% var.cov %*% .mat, dimnames = list(nm,nm))
+ diag(corr.mat) <- rep(1, length(std.err))
+ }
+ else
+ corr.mat <- NULL
+ }
+
+ colnames(var.cov) <- nm
+ rownames(var.cov) <- nm
+ names(std.err) <- nm
+ }
+
+ else{
+ std.err <- std.err.type <- corr.mat <- NULL
+ var.cov <- NULL
+ }
+
+
+ param <- c(opt$par, unlist(fixed.param))
+ scale <- param["scale"]
+
+ var.thresh <- !all(threshold == threshold[1])
+
+ if (!var.thresh)
+ threshold <- threshold[1]
+
+ list(fitted.values = opt$par, std.err = std.err, std.err.type = std.err.type,
+ var.cov = var.cov, fixed = unlist(fixed.param), param = param,
+ deviance = 2*opt$value, corr = corr.mat, convergence = opt$convergence,
+ counts = opt$counts, message = opt$message, threshold = threshold,
+ nat = nat, pat = pat, data = x, exceed = exceed, scale = scale,
+ var.thresh = var.thresh, est = "MLE", logLik = -opt$value,
+ opt.value = opt$value, hessian = opt$hessian)
+}
More information about the Returnanalytics-commits
mailing list