Completar el código adjunto de tal manera que la función de curvas de riesgo incluya también rutinas para las ditribuciones: gompertz, lognormal, log_logistica y gamma generalizada.
library(eha) #PARA GOMPERTZ
## Warning: package 'eha' was built under R version 4.1.2
library(actuar) #PARA LOG-LOGISTICA
## Warning: package 'actuar' was built under R version 4.1.2
##
## Attaching package: 'actuar'
## The following objects are masked from 'package:eha':
##
## dllogis, pllogis, qllogis, rllogis
## The following objects are masked from 'package:stats':
##
## sd, var
## The following object is masked from 'package:grDevices':
##
## cm
library(ggamma) #PARA GAMMA GENERALIZADA
## Warning: package 'ggamma' was built under R version 4.1.2
riesgo_distr <- function(distr, pe=NULL, pg = NULL, sh = NULL, sc = NULL, mnln=NULL, sdln=NULL,pll=NULL,shll=NULL,scll=NULL,pgg=NULL,shgg=NULL,scgg=NULL,pgo=NULL,shgo=NULL, scgo=NULL ){
#EXPONENCIAL
if(distr == "exp"){
rate <- pe
r <- rexp(100, rate = rate)
fd <- dexp(r, rate = rate)
Fd <- pexp(r, rate = rate)
}
#GAMMA
if(distr == "gamma"){
r <- rgamma(100, pg)
fd <- dgamma(r, pg)
Fd <- pgamma(r, pg)
}
#WEIBULL
if(distr == "weibull"){
r <- rweibull(100, shape = sh, scale = sc)
fd <- dweibull(r, shape = sh, scale = sc)
Fd <- pweibull(r, shape = sh, scale = sc)
}
#LOGNORMAL
if(distr == "lnorm"){
r<-rlnorm(100, meanlog = mnln, sdlog = sdln)
fd<-dlnorm(r, meanlog = mnln, sdlog = sdln)
Fd <- plnorm(r, meanlog = mnln, sdlog = sdln)
}
#LOG LOGISTICA
if(distr == "llogis"){
r <- rllogis(100, shape=shll, scale = scll)
fd <- dllogis(r, shape=shll, scale = scll)
Fd <- pllogis(r, shape=shll, scale = scll)
}
#GAMMA GENERALIZADA
if(distr == "ggamma"){
r <- rggamma(100, a=1/pgg, b=shgg, k=scgg)
fd <- dggamma(r, a=1/pgg, b=shgg, k=scgg)
Fd <- pggamma(r, a=1/pgg, b=shgg, k=scgg)
}
#GOMPERTZ
if(distr == "gompertz"){
r <- rgompertz(100, shape = shgo, scale = scgo, pgo)
fd <- dgompertz(r, shape = shgo, scale = scgo, pgo)
Fd <- pgompertz(r, shape = shgo, scale = scgo, pgo)
}
S <- 1 - Fd
hz <- fd/S
plot(sort(hz))
}
riesgo_distr("weibull",sc=1, sh=2)
riesgo_distr("lnorm", mnln = 0, sdln = 0.15)
riesgo_distr("exp", pe= 1)
riesgo_distr("gamma",pg= 5)
riesgo_distr("ggamma",pgg=3,shgg=2,scgg=1)
riesgo_distr("llogis", shll = 3, scll = 2)
riesgo_distr("gompertz",pgo=10,shgo=2,scgo=3)
riesgo_distr2 <- function(distr, nsims, ...){
#EXPONENCIAL
if(distr == "exp"){
r <- rexp(nsims, ...)
fd <- dexp(r, ...)
Fd <- pexp(r, ...)
}
#GAMMA
if(distr == "gamma"){
r <- rgamma(nsims, ...)
fd <- dgamma(r, ...)
Fd <- pgamma(r, ...)
}
#WEIBULL
if(distr == "weibull"){
r <- rweibull(nsims, ...)
fd <- dweibull(r, ...)
Fd <- pweibull(r, ...)
}
#LOGNORMAL
if(distr == "lnorm"){
r<-rlnorm(nsims, ...)
fd<-dlnorm(r, ...)
Fd <- plnorm(r, ...)
}
#LOG LOGISTICA
if(distr == "llogis"){
r <- rllogis(nsims, ...)
fd <- dllogis(r, ...)
Fd <- pllogis(r, ...)
}
#GAMMA GENERALIZADA
if(distr == "ggamma"){
r <- rggamma(nsims, ...)
fd <- dggamma(r, ...)
Fd <- pggamma(r, ...)
}
#GOMPERTZ
if(distr == "gompertz"){
r <- rgompertz(nsims, ...)
fd <- dgompertz(r, ...)
Fd <- pgompertz(r, ...)
}
S <- 1 - Fd
hz <- fd/S
plot(sort(hz))
}
riesgo_distr2("weibull",100,2,3)
riesgo_distr2("lnorm", nsims = 100, 0, 0.1)
riesgo_distr2("exp",100,2)
## Warning in plot.window(...): relative range of values ( 67 * EPS) is small (axis
## 2)
riesgo_distr2("gamma",100,5)
riesgo_distr2("ggamma", nsims = 100, 3,2,1)
riesgo_distr2("llogis", nsims = 100,3,2)
riesgo_distr2("gompertz", nsims = 100,10,2,3)