diff options
| -rw-r--r-- | DESCRIPTION | 2 | ||||
| -rw-r--r-- | NAMESPACE | 2 | ||||
| -rw-r--r-- | R/distrib.R | 18 |
3 files changed, 9 insertions, 13 deletions
diff --git a/DESCRIPTION b/DESCRIPTION index f4eb62a..030ee9b 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -10,4 +10,4 @@ Description: Utility functions for generating the loss and recovery License: GPL-3 Suggests: testthat RoxygenNote: 6.0.1 -Imports: distr +Imports: distr, stats @@ -5,8 +5,6 @@ export(BClossdist) export(BClossdistC) export(GHquad) export(dist.transform) -export(dqnorm) -export(dshockprob) export(exp_trunc) export(fit.prob) export(fit.probC) diff --git a/R/distrib.R b/R/distrib.R index 2b14776..2f288f9 100644 --- a/R/distrib.R +++ b/R/distrib.R @@ -68,7 +68,7 @@ convolve <- function(dist1, dist2) { n2 <- length(dist2) dist1 <- c(dist1, rep(0, n2-1)) dist2 <- c(dist2, rep(0, n1-1)) - Re(fft(fft(dist1) * fft(dist2), inverse=T))/length(dist1) + Re(stats::fft(stats::fft(dist1) * stats::fft(dist2), inverse=T)) / length(dist1) } #' Loss distribution of a portfolio @@ -487,14 +487,14 @@ shockprob <- function(p, rho, Z, log.p=F) { ## p and rho are scalars, Z is a vector of length n, returns vector of length n if(length(p)==1) { if(rho==1) { - return(Z <= qnorm(p)) + return(Z <= stats::qnorm(p)) } else { - return(pnorm((qnorm(p)-sqrt(rho)*Z)/sqrt(1-rho), log.p=log.p)) + return(stats::pnorm((stats::qnorm(p) - sqrt(rho)*Z)/sqrt(1 - rho), log.p = log.p)) } } else { result <- double(length(p)) - result[rho==1] <- Z<=qnorm(p[rho==1]) - result[rho<1] <- pnorm((qnorm(p[rho<1])-sqrt(rho[rho<1])*Z)/sqrt(1-rho[rho<1]), log.p=log.p) + result[rho == 1] <- Z <= stats::qnorm(p[rho == 1]) + result[rho < 1] <- stats::pnorm((stats::qnorm(p[rho < 1]) - sqrt(rho[rho < 1]) * Z)/sqrt(1 - rho[rho < 1]), log.p = log.p) return( result ) } } @@ -509,14 +509,12 @@ shockseverity <- function(S, Stilde=1, Z, rho, p) { return(result) } -#' @export dshockprob <- function(p,rho,Z) { - dnorm((qnorm(p)-sqrt(rho)*Z)/sqrt(1-rho))*dqnorm(p)/sqrt(1-rho) + stats::dnorm((stats::qnorm(p) - sqrt(rho) * Z) / sqrt(1-rho)) * dqnorm(p) / sqrt(1-rho) } -#' @export dqnorm <- function(x) { - 1/dnorm(qnorm(x)) + 1 / stats::dnorm(stats::qnorm(x)) } #' @export @@ -528,7 +526,7 @@ fit.prob <- function(Z, w, rho, p0) { } if(rho == 1) { distw <- distr::DiscreteDistribution(Z, w) - return(distr::pnorm(distr::q(distw)(p0))) + return(stats::pnorm(distr::q(distw)(p0))) } eps <- 1e-12 dp <- (crossprod(shockprob(p0, rho, Z),w) - p0) / crossprod(dshockprob(p0, rho, Z), w) |
