La distribución beta prime (BP) es una distribución de dos parĆ”metros en la lĆnea real positiva, que puede ser interpretada como la distribución de la razón de posibilidades de una variable distribuida segĆŗn la distribución beta, es decir, si \(X \sim Beta(\alpha, \beta)\), entonces \(Y = \displaystyle \frac{X}{1-X} \sim BP(\alpha, \beta)\) con \(\alpha > 0\) y \(\beta >0\) estamos adoptando la parametrización de la distribución BP en tĆ©rminos de la media y los parĆ”metros de precisión que fue propuesta por Bourguignon et al.Ā (2018).
Una ventaja de usar esta parametrización es que podemos introducir estructuras de regresión para cada media y parÔmetros de precisión y la interpretación de los coeficientes de regresión es sencilla en términos de ellos como en los modelos lineales generalizados.
La variable aleatoria \(Y\) se distribuye BP (Bourguignon et al. (2018)) con función de densidad de probabilidad dada por: \[ f(y;\mu , \phi)= \frac{y^{\mu(\phi+1)-1}(1+y)^{[-\mu(\phi+1)+\phi+2]}}{B(\mu(1+\phi),\phi+2)},y>0\]
donde \(\mu > 0\) y \(\phi > 0\) son parÔmetros de media y precisión, respectivamente, \(B(\mu(1+\phi),\phi+2) = \Gamma (\mu(1+\phi))\Gamma(\phi+2)\) es la función beta y \(\gamma(\mu(1+\phi)) = \int_{0}^{\infty} \omega^{\mu(1+\phi)-1}e^{-\omega} \cdot d\omega\) es la función gamma. De ahora en adelante, usamos la \(Y \sim BP(\mu,\phi)\) para indicar que \(Y\) es un variable aleatoria que sigue una distribución BP. La media y la varianza de \(Y\) son: \[ E[Y]=\mu , Var[Y]=\frac{\mu(1+\mu)}{\phi}\]
Considere \(n\) variables aleatorias independientes \(Y_{1}, . . . , Y_n\) donde cada \(Y_i\) , \(i = 1, . . . , n\) tiene PB distribución con media \(\mu_i\) y parÔmetro de precisión \(\phi_i\).\ Bourguignon et al. (2018) propusieron el modelo de regresión BP que se define por dos relaciones funcionales \[g_1(\mu_i)= \eta_{1i}=x_i^T \beta ,g_2(\mu_i)= \eta_{2i}=z_i^T v\]
Donde \(g_1:\mathbb{R}\longrightarrow \mathbb{R}^+\) y \(g_2:\mathbb{R}\longrightarrow \mathbb{R}^+\) son funciones de enlace estrictamente monótonas, positivas y al menos dos veces diferenciables, \(\eta_{1i}\) y \(\eta_{2i}\) son los predictores lineales, \(\beta=(\beta_1,...\beta_p)^T(\beta \in \mathbb{R}^p)\) y \(V = (v_1, ..., v_q)^T (V \in \mathbb{R}^q,q<n-p)\) son vectores de parÔmetros desconocidos a estimar, y $x_i=(x_{i1}, ⦠,x_{ip})^T $ y \(z_i=(z_{i1}, ... ,z_{iq})^T\) son observaciones sobre p y q regresores conocidos, para \(i = 1, . . . , n\). AdemÔs, suponemos que las matrices de covariables \(X = (x_1 ,...,x_n)^T\) y \(z = (z_1 ,...,z_n)^T\) tienen rango p y q, respectivamente.
En la literatura existen pocos trabajos que traten de la distribución de la PB. McDonald (1987) discutió sus propiedades y obtuvo las estimaciones de mĆ”xima verosimilitud (ML) de los parĆ”metros del modelo. Las versiones corregidas de sesgo de los MLE de los parĆ”metros que indexan la distribución de BP fueron obtenido por \(StosĆc\) y \(Cordeiro (2009)\). Vale la pena mencionar que todos los trabajos relacionados anteriormente tienennconsiderado la parametrización habitual de la distribución de la BP. Teniendo en cuenta la parametrización adoptamos, Bourguignon et al.Ā (2018) utilizaron el mĆ©todo ML para estimar los parĆ”metros que indexan el modelo de regresión de BP. Sin embargo, en muestras de pequeƱo tamaƱo, los estimadores ML de estos parĆ”metros (especialmente para estructura de precisión) puede ser extremadamente parcial. Por lo tanto, es importante considerar estimadores alternativos con sesgos mĆ”s pequeƱos.
La función logarĆtmica de verosimilitud para \((\beta, V)\) dados los valores observados \(y_1, . . . , y_n\) es \[\ell(\beta,V)=\sum_{i=1}^{n}\ell(\mu_i, \phi_i) \] siendo \[ \ell(\mu_i,\phi_i)= [\mu_i(1+\phi_i)-1]log(y_i)-[\mu_i(1+\phi_i)+\phi_i + 2]log(1+y_i)\] \[log[\Gamma(\mu_i(1+\phi_i))]-log[\Gamma(\phi_i+2)]+log[\Gamma(\mu_i(1+\phi_i)+\phi_i+2)]\] \(\mu_i=g_1^{-1}(\eta_{1i})\) y \(\mu_i=g_2^{-1}(\eta_{2i})\) son funciones de \(\beta\) y \(V\), respectivamente como se define en el modelo de regresión. Se describe un mĆ©todo para obtener las estimaciones de los parĆ”metros del modelo BP definido por la distribución y en la regresión del modelo se describe en detalle en Bourguignon et al.Ā (2018)
Funciones Preliminares
####################################################################
#
# Librerias
#
###################################################################@
library(Formula)
library(LaplacesDemon)
library(ggplot2)
library(extraDistr)
library(gamlss)
library(Matrix)
library(nleqslv)
############################################################################
# Función de densidad de probabilidad
###########################################################################
dBP <- function(x,mu=1,sigma=1,log=FALSE)
{
if (any(mu < 0))
stop(paste("mu debe ser positivo", "\n", ""))
if (any(sigma < 0))
stop(paste("sigma debe ser positivo", "\n", ""))
if (any(x <= 0))
stop(paste("x debe ser positivo", "\n", ""))
a <- mu*(1+sigma)
b <- 2 + sigma
fy <- dbetapr(x, shape1 = a, shape2 = b, scale = 1, log = log)
fy
}
#############################################################################
# Función de distribución acumulativa
############################################################################
pBP <- function(q,mu=1,sigma=1, lower.tail = TRUE, log.p = FALSE)
{
if (any(mu < 0))
stop(paste("mu debe ser positivoe", "\n", ""))
if (any(sigma < 0))
stop(paste("sigma debe ser positivo", "\n", ""))
if (any(q < 0))
stop(paste("q debe ser positivo", "\n", ""))
a <- mu*(1+sigma)
b <- 2 + sigma
cdf <- pbetapr(q, shape1 = a, shape2 = b, scale=1, lower.tail = lower.tail,
log.p = log.p)
cdf
}
#############################################################################
# NĆŗmeros Aleatorios
#############################################################################
rBP <- function(n,mu=1,sigma=1)
{
if (any(mu < 0))
stop(paste("mu debe ser positivo", "\n", ""))
if (any(sigma < 0))
stop(paste("sigma debe ser positivo", "\n", ""))
if (any(n <= 0))
stop(paste("n debe ser entero positivo", "\n", ""))
n <- ceiling(n)
a <- mu*(1+sigma)
b <- 2 + sigma
r <- rbetapr(n,shape1=a,shape2=b,scale=1)
r
}
#############################################################################
# Función Cuantil
############################################################################
qBP <- function(p, mu = 1, sigma = 1, lower.tail = TRUE, log.p = FALSE)
{
if (any(mu < 0))
stop(paste("mu debe ser positivo", "\n", ""))
if (any(sigma < 0))
stop(paste("sigma debe ser positivo", "\n", ""))
if (any(n <= 0))
if (any(p <= 0) | any(p >= 1))
stop(paste("p debe estar entre 0 y 1", "\n", ""))
a <- mu*(1+sigma)
b <- 2 + sigma
q <- qbetapr(p, shape1 = a, shape2 = b,scale=1, lower.tail = lower.tail, log.p = log.p)
q
}
#############################################################################
# familia
############################################################################
BP <- function (mu.link = "log", sigma.link = "log")
{
mstats <- checklink("mu.link", "Beta Prime", substitute(mu.link), c("log", "identity", "sqrt"))
dstats <- checklink("sigma.link", "Beta Prime",substitute(sigma.link), c("log", "identity", "sqrt"))
structure(list(family = c("BP", "Beta Prime"),
parameters = list(mu = TRUE,sigma = TRUE), nopar = 2, type = "Continuous",
mu.link = as.character(substitute(mu.link)),
sigma.link = as.character(substitute(sigma.link)),
mu.linkfun = mstats$linkfun,
sigma.linkfun = dstats$linkfun,
mu.linkinv = mstats$linkinv,
sigma.linkinv = dstats$linkinv,
mu.dr = mstats$mu.eta,
sigma.dr = dstats$mu.eta,
dldm = function(y, mu, sigma){
a <- mu*(1+sigma)
b <- mu*(1+sigma)+sigma+2
Phi <- (1+sigma)
yast <- log(y) - log(1+y)
muast <- digamma(a) - digamma(b)
dldm <- Phi*(yast - muast)
dldm
},
d2ldm2 = function(mu, sigma){
Phi2 <- (1+sigma)^2
a <- mu*(1+sigma)
b <- mu*(1+sigma)+sigma+2
d2dldm2 <- -Phi2*(trigamma(a) - trigamma(b))
d2dldm2
},
dldd = function(y, mu, sigma){
Phi <- (1+sigma)
a <- mu*(1+sigma)
b <- mu*(1+sigma)+sigma+2
ystar <- mu*log(y) - (1+mu)*log(1+y)
mustar <- mu*digamma(a) - (1+mu)*digamma(b) + digamma(Phi+1)
dldd <- ystar - mustar
dldd
},
d2ldd2 = function(mu,sigma){
Phi <- (1+sigma)
a <- mu*(1+sigma)
b <- mu*(1+sigma)+sigma+2
d2ldd2 <- -(mu^2)*trigamma(a) + ((1+mu)^2)*trigamma(b) - trigamma(Phi+1)
d2ldd2
},
d2ldmdd = function(mu,sigma){
a <- mu*(1+sigma)
b <- mu*(1+sigma)+sigma+2
Phi <- (1+sigma)
gammaast <- Phi*(trigamma(b) + mu*(trigamma(b)-trigamma(a)))
d2ldmdd <- gammaast
d2ldmdd
},
G.dev.incr = function(y, mu, sigma,...){-2*dBP(y, mu, sigma, log = TRUE)},
rqres = expression(rqres(pfun = "pBP", type = "Continuous", y = y, mu = mu, sigma = sigma)),
mu.initial = expression({mu <- mean(y)}),
sigma.initial = expression({sigma <- mean(y)*(1+mean(y))/var(y) }),
mu.valid = function(mu) all(mu > 0),
sigma.valid = function(sigma) all(sigma > 0),
y.valid = function(y) all(y > 0)),
class = c("gamlss.family","family"))
}
#####################################################################
# BIAS OF THE BETA AND NU - COX-SNELL
#####################################################################
bias <- function(x){
beta1 = matrix(x[1:p], ncol=1)
nu1 = matrix(x[-(1:p)], ncol=1)
eta1.est = X%*%beta1
eta2.est = Z%*%nu1
mu.est <- as.vector(exp(eta1.est))
phi.est <- as.vector(exp(eta2.est))
dg1 <- psigamma(mu.est*(1+phi.est), deriv=1)
dg11 <- psigamma(mu.est*(1+phi.est) + phi.est + 2, deriv=1)
dg12 <- psigamma(phi.est + 2, deriv=1)
dg2 <- psigamma(mu.est*(1+phi.est), deriv=2)
dg21 <- psigamma(mu.est*(1+phi.est) + phi.est + 2, deriv=2)
dg22 <- psigamma(phi.est + 2, deriv=2)
a1 <- dg1 - dg11
b1 <- mu.est^2*dg1 - (1+mu.est)^2*dg11 + dg12
c1 <- dg2 - dg21
d1 <- (1+mu.est)^2*dg21 - mu.est^2*dg2
e1 <- (1+mu.est)^3*dg21 - mu.est^3*dg2 - dg22
m1 <- -( (1+phi.est)^3*c1*(mu.est)^3 )/2 - ( (1+phi.est)^2*a1*mu.est*mu.est )/2
m2 <- ( (1+phi.est)*(-a1*mu.est + dg11)*mu.est*phi.est )/2 - ( (1+phi.est)^2*(mu.est*c1 - dg21)*mu.est^2*phi.est )/2
m3 <- - ( (1+phi.est)*( 2*a1 + (1+phi.est)*mu.est*c1 - (1+phi.est)*dg21 )*mu.est^2*phi.est )/2 - ( (1+phi.est)*(dg11 - a1*mu.est)*mu.est*phi.est )/2
m4 <- ( (1+phi.est)*d1 + 2*dg11 - 2*mu.est*a1 )*mu.est*phi.est^2/2 - ( (1+phi.est)*(dg11 - mu.est*a1)*mu.est*phi.est )/2
m5 <- ( (1+phi.est)*d1/2 )*phi.est^2*mu.est + ( (1+phi.est)*(dg11 - mu.est*a1)*mu.est*phi.est )/2
m6 <- (e1*phi.est^3 - b1*phi.est*phi.est)/2
M1 <- diag(m1)
M2 <- diag(m2)
M3 <- diag(m3)
M4 <- diag(m4)
M5 <- diag(m5)
M6 <- diag(m6)
E1 <- diag((1+phi.est)^2*(a1)*mu.est^2)
E2 <- diag((1+phi.est)*(mu.est*a1 - dg11)*mu.est*phi.est)
E4 <- diag(b1*phi.est^2)
K11 <- t(X)%*%E1%*%X
K12 <- t(X)%*%E2%*%Z
K21 <- t(K12)
K22 <- t(Z)%*%E4%*%Z
k1 <- cbind(K11, K12)
k2 <- cbind(K21, K22)
IE <- rbind(k1, k2)
K <- solve(IE)
Kbb <- K[1:p,1:p]
Kbnu <- K[1:p,(p+1):(p+q)]
Knub <- t(Kbnu)
Knunu <- K[(p+1):(p+q),(p+1):(p+q)]
Pbb <- matrix(diag(X%*%Kbb%*%t(X)))
Pbnu <- matrix(diag(X%*%Kbnu%*%t(Z)))
#Pnub <- t(Pbnu)
Pnunu <- matrix(diag(Z%*%Knunu%*%t(Z)))
biasbeta <- Kbb%*%t(X)%*%(M1%*%Pbb +(M2+M3)%*%Pbnu + M5%*%Pnunu) + Kbnu%*%t(Z)%*%(M2%*%Pbb +(M4+M5)%*%Pbnu + M6%*%Pnunu)
biasnu <- Knub%*%t(X)%*%(M1%*%Pbb +(M2+M3)%*%Pbnu + M5%*%Pnunu) + Knunu%*%t(Z)%*%(M2%*%Pbb +(M4+M5)%*%Pbnu + M6%*%Pnunu)
return(c(biasbeta, biasnu))
}
#####################################################################
# VECTOR SCORE - DAVID FIRTH
#####################################################################
score_DF <- function(x, v){
U = numeric(p+q)
beta.df = matrix(x[1:p], ncol=1)
nu.df = matrix(x[-(1:p)], ncol=1)
eta1.est.df = X%*%beta.df
eta2.est.df = Z%*%nu.df
mu.est.df = as.vector(exp(eta1.est.df))
phi.est.df = as.vector(exp(eta2.est.df))
dg1 = psigamma(mu.est.df*(1+phi.est.df), deriv=1)
dg11 = psigamma(mu.est.df*(1+phi.est.df) + phi.est.df + 2, deriv=1)
dg12 = psigamma(phi.est.df + 2, deriv=1)
a1 = dg1 - dg11
b1 = mu.est.df^2*dg1 - (1+mu.est.df)^2*dg11 + dg12
E1 = diag((1+phi.est.df)^2*(a1)*mu.est.df^2)
E2 = diag((1+phi.est.df)*(mu.est.df*a1 - dg11)*mu.est.df*phi.est.df)
E4 = diag(b1*phi.est.df^2)
K11 = t(X)%*%E1%*%X
K12 = t(X)%*%E2%*%Z
K21 = t(K12)
K22 = t(Z)%*%E4%*%Z
k1 = cbind(K11, K12)
k2 = cbind(K21, K22)
IE = rbind(k1, k2)
A = matrix(x, ncol=p+q)
res.bias = bias(A)
vies = matrix(c(res.bias), ncol=1)
M = IE%*%vies
PHI = diag(1+phi.est.df)
D1 = diag(mu.est.df)
y.star = matrix(log(v/(1+v)), ncol=1)
mu.star = matrix(psigamma(mu.est.df*(1+phi.est.df), deriv=0) - psigamma(mu.est.df*(1+phi.est.df) + phi.est.df + 2, deriv=0), ncol=1)
D2 = diag(phi.est.df)
v.nu = matrix(mu.est.df*(y.star-mu.star) + psigamma(mu.est.df*(1+phi.est.df) + phi.est.df + 2, deriv=0) - log(1+v) - psigamma(2+phi.est.df, deriv=0), ncol=1 )
U.beta = t(X)%*%PHI%*%D1%*%(y.star-mu.star)
U.nu = t(Z)%*%D2%*%v.nu
U = c(as.vector(U.beta) - M[1:p] , as.vector(U.nu) - M[(p+1):(p+q)] )
# print(U)
U
}
library(COVID19)
library(xts)
library(stats)
###############################################################################
# Datos
###############################################################################
data_h <- covid19("Honduras", verbose = FALSE) # download the data
## Registered S3 method overwritten by 'bit':
## method from
## print.ri gamlss
ts <- xts(data_h[,c("confirmed", "deaths", "recovered")], order.by = data_h$date) # convertir a un objeto xts
ts_2 <- na.omit(ts)
ts_r <- c(ts_2$confirmed)
head(ts_r)
## confirmed
## 2020-03-28 95
## 2020-04-05 268
## 2020-04-10 382
## 2020-04-15 419
## 2020-04-17 442
## 2020-04-19 472
rb = 5000 # Repeticiones para Bootstrap
p = 3 # dimensiones de beta
q = 2 # dimensiones de gamma
n = length(ts_2$recovered)
X = matrix(c(rep(1,n), ts_2$confirmed, ts_2$deaths), ncol = p)
Z = matrix(c(rep(1,n), ts_2$confirmed), ncol = q)
Dobs = ts_2$recovered
n
## [1] 416
#####################################################################
# INFORMACIĆN DE FISHER
#####################################################################
InfFisher <- function(x){
beta1 = matrix(x[1:p], ncol=1)
nu1 = matrix(x[-(1:p)], ncol=1)
eta1.est = X%*%beta1
eta2.est = Z%*%nu1
mu.est <- as.vector(exp(eta1.est))
phi.est <- as.vector(exp(eta2.est))
dg1 <- psigamma(mu.est*(1+phi.est), deriv=1)
dg11 <- psigamma(mu.est*(1+phi.est) + phi.est + 2, deriv=1)
dg12 <- psigamma(phi.est + 2, deriv=1)
dg2 <- psigamma(mu.est*(1+phi.est), deriv=2)
dg21 <- psigamma(mu.est*(1+phi.est) + phi.est + 2, deriv=2)
dg22 <- psigamma(phi.est + 2, deriv=2)
a1 <- dg1 - dg11
b1 <- mu.est^2*dg1 - (1+mu.est)^2*dg11 + dg12
c1 <- dg2 - dg21
d1 <- (1+mu.est)^2*dg21 - mu.est^2*dg2
e1 <- (1+mu.est)^3*dg21 - mu.est^3*dg2 - dg22
E1 <- diag((1+phi.est)^2*(a1)*mu.est^2)
E2 <- diag((1+phi.est)*(mu.est*a1 - dg11)*mu.est*phi.est)
E4 <- diag(b1*phi.est^2)
K11 <- t(X)%*%E1%*%X
K12 <- t(X)%*%E2%*%Z
K21 <- t(K12)
K22 <- t(Z)%*%E4%*%Z
k1 <- cbind(K11, K12)
k2 <- cbind(K21, K22)
IE <- rbind(k1, k2)
K <- solve(IE)
return(diag(K))
}
########################################################################################
# M.A.I.N F.U.N.C.T.I.O.N
########################################################################################
conh = gamlss.control(trace = FALSE, autostep = FALSE, save = TRUE)
fit = gamlss(ts_2$recovered ~ ts_2$confirmed + ts_2$deaths, ts_2$recovered ~ ts_2$confirmed, family = BP(mu.link="log", sigma.link = "log"), control=conh, method=RS())
beta.est.mv = fit$mu.coefficients
nu.est.mv = fit$sigma.coefficients
A = c(beta.est.mv, nu.est.mv)
#####################################################################
# DAVID FIRTH
#####################################################################
est.mv = c(beta.est.mv,nu.est.mv)
est_df = nleqslv(est.mv, score_DF, method="Broyden",global="hook",jacobian=TRUE, control=list(btol=1e-7), v=Dobs) #control=list(trace=0,maxit=500,allowSingular=TRUE, cndtol=1e-5)
beta.est.df = est_df$x[1:p]
nu.est.df = est_df$x[-(1:p)]
#####################################################################
# RESULTS
#####################################################################
result_est = c(beta.est.mv, nu.est.mv, beta.est.df, nu.est.df)
result_est
#####################################################################
# PARAMETROS ESTIMADOS
#####################################################################
nEst = matrix(round(c(result_est),2), ncol=2)
colnames(nEst) = c("MLE","Firth")
rownames(nEst) = c("beta0","beta1","beta2","nu0","nu1")
print.est <- function(par){
cat("\n Beta's estimates: \n")
print(par[1:p,])
cat("\n Nu's estimates:\n")
print(par[(p+1):(p+q),])
}
print.est(nEst)
####################################################################
# ERRORES STANDARD
####################################################################
variance = data.frame(apply(nEst, 2, InfFisher))
erro.pd = round(sqrt(variance), 4)
rownames(erro.pd) = c("b0","b1","b2","nu0", "nu1")
print.se <- function(par){
cat("\n standard error - beta's: \n")
print(par[1:p,])
cat("\n standard error - nu's:\n")
print(par[(p+1):(p+q),])
}
print.se(erro.pd)
La implementación del Código OrgĆ”nico y Financiera a partir del aƱo 2015, generó diferentes tipos de reacciones en sector de la economĆa ecuatorial sobre todo en el sector de los Seguros y de las Cooperativas de ahorro y crĆ©dito, asĆ que proponen analizar este comportamiento en el sector cooperativo como un indicador de Beta Comparable ayuda a visualizar el panorama futuro del riesgo-rendimiento de las cooperativas analizadas frente a su mercado donde se desarrollan, mediante recopilación de datos entregados por la SEPS.
En este trabajo presentan una alternativa de determinación de la tasa social de descuento basada en el modelo de estimación gamma (Weitzman, 2001), en el contexto de paĆses en desarrollo.
La distribución gamma se puede utilizar con gran flexibilidad en el anĆ”lisis de variables aleatorias positivas. Por lo tanto, los modelos de regresión gamma se aplican en una amplia gama de aplicaciones empĆricas, como en el proceso de fijación de tasas en el marco de trabajo de carteras de seguros heterogĆ©neas, que es la función mĆ”s importante de las aseguradoras (Krishnamoorthy, 2006), y en los ingresos hospitalarios por enfermedades raras donde las series temporales son muy escasas debido a la infrecuencia de los eventos (Winklemann, 2008).
La distribución Gamma tiene la función de densidad de probabilidad:
Si \(\displaystyle{X \sim \Gamma (\alpha ,\lambda )}\) entonces su función de densidad es
\[{\displaystyle f(x)={\displaystyle\frac {\lambda (\lambda x)^{\alpha -1}e^{-\lambda x}}{\Gamma (\alpha )}}}\] para \(\displaystyle x >0\) \(\beta > 0\) es el parƔmetro de escala y \(\alpha > 0\) es el parƔmetro de forma donde: \(\Gamma (\alpha ) = \displaystyle\int_{0}^{\infty }t^{\alpha -1}e^{-t}dt\)
Sea \(Yi \sim G(\mu_i, \alpha)\), \(i = 1, . . . , n\), sea una muestra aleatoria de tamaƱo \(n\). En los modelos de regresión gamma con parĆ”metro de forma constante, la estructura de regresión media se define por: \[g(\mu_i) = \eta_i = x_i'\beta\] donde \(g\) es la función de enlace, \(\beta = (\beta_0, . . ., \beta_p)'\) es el vector de media de los parĆ”metros de regresión, \(x_i\) es el i-Ć©simo valor del vector de las variables explicativas y \(\eta_i\) es un predictor lineal. Algunas funciones de vĆnculo usuales en la regresión gamma son:
En los modelos lineales generalizados, el vĆnculo canónico de la media es la función inversa.
\[L(\alpha, \lambda) = \displaystyle\prod_{i=0}^n\left[ \displaystyle\frac{\lambda^{\alpha}e^{-\alpha x_i}(x_i)^{\alpha-1}}{\Gamma(\alpha)}\right] \] \[log(L(\alpha, \lambda)) = \log \left( \displaystyle \displaystyle\frac{\lambda^{n\alpha}e^{-\alpha \sum x_i}( \displaystyle\prod_{i=1}^n x_i)^{\alpha-1}}{[\Gamma(\alpha)]^n} \right)\] \[n\cdot\alpha log(\lambda) - \lambda\sum x_i + (\alpha - 1)log(\displaystyle\prod_{i=1}^n x_i) - log([\Gamma(\alpha)]^n) \] \[n\cdot\alpha log(\lambda) - \lambda\sum x_i + (\alpha - 1)\displaystyle\sum_{i=1}^n log(x_i) - n\cdot log(\Gamma(\alpha)) \]
\[\displaystyle\frac{\partial l(\alpha, \lambda)}{\partial \lambda} = \displaystyle\frac{n\cdot\alpha}{\lambda} - \lambda\sum x_i = 0\] \[\displaystyle\frac{n\cdot\alpha}{\lambda} = \lambda\sum x_i \Rightarrow \lambda = \displaystyle\frac{n\cdot\alpha}{\lambda\sum x_i} \]
\[\hat{\lambda} =\displaystyle\frac{n\cdot\hat{\alpha}}{\sum x_i} = \displaystyle\frac{n\cdot\hat{\alpha}}{n \cdot \bar{x}} = \displaystyle\frac{\hat{\alpha}}{\bar{x}}\]
\[\displaystyle\frac{\partial l(\alpha, \lambda)}{\partial \alpha} = n \cdot log(\lambda) + \displaystyle\sum_{i=1}^nlog(x_i) - \displaystyle\frac{n \cdot\Gamma'(\alpha)}{\Gamma(\alpha)} \] \[n \cdot log(\lambda) + \displaystyle\sum_{i=1}^nlog(x_i) - n \cdot DigammaFuntion(\alpha)\] \[n \cdot log(\displaystyle\frac{\hat{\alpha}}{\bar{x}}) + \displaystyle\sum_{i=1}^nlog(x_i) - n \cdot DigammaFuntion(\alpha)\] \[\hat{\alpha} = n \cdot log(\hat{\alpha}) - n \cdot log(\bar{x}) + \displaystyle\sum_{i=1}^nlog(x_i) - n \cdot DigammaFuntion(\hat{\alpha})\] \[\hat{\alpha} = n [ log(\hat{\alpha}) - log(\bar{x}) + \displaystyle\frac{1}{n}\sum_{i=1}^nlog(x_i) - DigammaFuntion(\hat{\alpha}) ]\] \[log(\hat{\alpha}) - log(\bar{x}) + \displaystyle\frac{1}{n}\sum_{i=1}^nlog(x_i) - DigammaFuntion(\hat{\alpha}) = 0\]
library(COVID19)
library(xts)
library(stats)
data_h <- covid19("Honduras", verbose = FALSE) # download the data
ts <- xts(data_h[,c("confirmed", "deaths", "recovered")], order.by = data_h$date) # convertir a un objeto xts
Omitiremos los NA
ts_2 <- na.omit(ts)
head(ts_2)
## confirmed deaths recovered
## 2020-03-28 95 1 3
## 2020-04-05 268 22 6
## 2020-04-10 382 23 7
## 2020-04-15 419 31 9
## 2020-04-17 442 41 10
## 2020-04-19 472 46 15
Estimaremos los \(\alpha\) y \(\lambda\) para los datosde personas recuperadas.
# Sea x_bar la media muestral de los datos.
x_bar <- mean(ts_2$recovered) # alfa/lambda es la media
# Tome el logaritmo natural de cada uno de los valores
lnSample <- log(ts_2$recovered)
# Obtener la media de los datos de muestra de registro natural
meanlnSample <- mean(lnSample)
# Escriba una función que corresponda a la derivada parcial que derivamos de la función de verosimilitud logarĆtmica
# con respecto a alfa.
f <- function(x){
# En este caso de funciones, tomamos el valor x, que serĆ” el valor de alfa que estamos resolviendo.
log(x) - digamma(x) - log(x_bar) + meanlnSample
}
# Use la función uniroot para encontrar dónde la derivada es igual a cero para que podamos encontrar
# la raĆz (valor x o sombrero alfa) en la que ocurre.
a <- uniroot(f,lower = 0.5, upper = 2.5)
# Establecer alpha_hat igual a la raĆz de la función f en el intervalo (2.0,2.2)
alpha_hat <- a$root
alpha_hat
## [1] 0.6132038
# Recuerde que se encontró que la estimación de probabilidad mÔxima de Lambda era alpha_hat sobre x_bar.
lambda_hat <- alpha_hat/x_bar
lambda_hat
## [1] 1.430313e-05
summary(glm(ts_2$recovered ~ ts_2$confirmed + ts_2$deaths, family=Gamma))
##
## Call:
## glm(formula = ts_2$recovered ~ ts_2$confirmed + ts_2$deaths,
## family = Gamma)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -3.8931 -0.9076 -0.0058 0.4683 0.8597
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 6.282e-05 2.504e-06 25.09 <2e-16 ***
## ts_2$confirmed -1.098e-09 9.919e-11 -11.07 <2e-16 ***
## ts_2$deaths 3.407e-08 3.594e-09 9.48 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for Gamma family taken to be 0.4828182)
##
## Null deviance: 835.68 on 415 degrees of freedom
## Residual deviance: 577.22 on 413 degrees of freedom
## AIC: 9455
##
## Number of Fisher Scoring iterations: 6
El clutter es una seƱal de interferencia que aparece en los sistemas de radar. El autor modeló la distribución Gamma, Ćntimamente relacionado con clutter, en MATLAB. La implementación permite un acceso fĆ”cil a la manipulación de las funciones de densidad de probabilidad y de distribución, la generación de muestras, el cĆ”lculo de los momentos, la aplicación de algoritmos de bondad de ajuste y la estimación de parĆ”metros a partir de muestras con distribución gamma.
En este trabajo presentan una alternativa de determinación de la tasa social de descuento basada en el modelo de estimación gamma (Weitzman, 2001), en el contexto de paĆses en desarrollo.
La distribución gamma se ha utilizado para modelar el tamaño de las reclamaciones de seguros\(^{[1]}\) y las precipitaciones\(^{[2]}\). Esto significa que las reclamaciones de seguros agregadas y la cantidad de lluvia acumulada en un embalse se modelan mediante un proceso gamma , al igual que la distribución exponencial genera un proceso de Poisson.
La distribución gamma se utiliza para modelar el desvanecimiento de la potencia de la señal por múltiples rutas.
La distribución por edades de la incidencia de cÔncer a menudo sigue la distribución gamma, mientras que los parÔmetros de forma y escala predicen, respectivamente, el número de eventos impulsores y el intervalo de tiempo entre ellos\(^{[3]}\).
la distribución gamma se usa a menudo para describir la distribución de intervalos entre picos\(^{[4][5]}\).
El nĆŗmero de copias de una proteĆna expresada constitutivamente a menudo sigue la distribución gamma, donde el parĆ”metro de escala y forma son, respectivamente, el nĆŗmero medio de explosiones por ciclo celular y el nĆŗmero medio de molĆ©culas de proteĆna producidas por un solo ARNm durante su vida\(^{[6]}\).
La distribución gamma se aplicó en el paso de llamada de pico (es decir, en el reconocimiento de la señal) en el anÔlisis de datos de ChIP-chip\(^{[7]}\) y ChIP-seq\(^{[8]}\).
La distribución gamma se usa ampliamente como un previo conjugado en la estadĆstica bayesiana. Es el conjugado previo para la precisión (es decir, inversa de la varianza) de una distribución normal. TambiĆ©n es el conjugado previo de la distribución exponencial.
p.Ā 43, Philip J. Boland, MĆ©todos estadĆsticos y probabilĆsticos en ciencia actuarial, Chapman & Hall CRC 2007
Aksoy, H. (2000) āUso de distribución gamma en anĆ”lisis hidrológicoā , Turk J. Engin Environ Sci , 24, 419 - 428.
Belikov, Aleksey V. (22 de septiembre de 2017). āEl nĆŗmero de eventos cancerĆgenos clave se puede predecir a partir de la incidencia del cĆ”ncerā . Informes cientĆficos. 7 (1): 12170. doi : 10.1038 / s41598-017-12448-7. PMC 5610194 . PMID 28939880 .
JG Robson y JB Troy, āNaturaleza de la descarga mantenida de las cĆ©lulas ganglionares retinianas Q, X e Y del gatoā, J. Opt. Soc. Soy. A 4, 2301-2307 (1987)
MCM Wright, IM Winter, JJ Forster, S. Bleeck āLa respuesta a las rĆ”fagas de tono de la mejor frecuencia en el nĆŗcleo coclear ventral se rige por las estadĆsticas ordenadas del intervalo entre picosā, Hearing Research 317 (2014)
N. Friedman, L. Cai y XS Xie (2006) āVinculación de la dinĆ”mica estocĆ”stica con la distribución de la población: un marco analĆtico de expresión gĆ©nicaā, Phys. Rev.Ā Lett. 97, 168302.
DJ Reiss, MT Facciotti y NS Baliga (2008) āDeconvolución basada en modelos de la unión del ADN en todo el genomaā , BioinformĆ”tica , 24, 396ā403.
MA Mendoza-Parra, M Nowicka, W Van Gool, H Gronemeyer (2013) āCaracterización de patrones de unión de ChIP-seq por deconvolución de forma de pico basada en modeloā , BMC Genomics , 14: 834
Podemos analizar los datos mundiales de casos reportados para la
enfermedad por coronavirus (CoViD-19) del repositorio del Centro de
Ciencias e IngenierĆa de Sistemas de la Universidad Johns Hopkins (JHU
CSSE) https://github.com/CSSEGISandData/COVID -19.
Los conjuntos de datos estÔn disponibles en dos modalidades, como secuencias de series de tiempo y según el estado de la persona (confirmado, fallecido o recuperado).
Gracias a este paquete tenemos disponibles varias funciones de anĆ”lisis, visualización y modelado que nos permitirĆ”n calcular y visualizar el nĆŗmero total de casos, el nĆŗmero total de cambios y la tasa de crecimiento a nivel mundial o para una ubicación geogrĆ”fica especĆfica.
Incluso tenemos para generar el modelo Susceptible-Infected-Recovered (SIR) para la propagación de la enfermedad. (beta)
install.packages('covid19.analytics')
library(covid19.analytics)
La función covid19.data() permite a los usuarios obtener
datos en tiempo real sobre los casos notificados por CoViD19 del
repositorio CCSE de la JHU, en las siguientes modalidades:
aggregated para el Ćŗltimo dĆa, con una gran
āgranularidadā de regiones geogrĆ”ficas (es decir, ciudades, provincias,
estados, paĆses).
time series para regiones geogrƔficas acumuladas mƔs
grandes (provincias / paĆses).
deprecated: tambiƩn incluimos el estilo de datos
original en el que se informaron inicialmente estos conjuntos de
datos.
Podemos jugar con estas secuencias de tiempo y los diferentes estados.
\(\textbf{Time Series data}\)
ts-confirmed Datos confirmados
ts-deaths Datos de fallecidos
ts-recovered Datos de recuperados
ts-ALL Datos combinados
Vamos a obtener por secuencia de tiempo todos los datos confirmados por COVID19.
# Cargamos toda la base de datos.
data <- covid19.data()
## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
## ================================================================================
## ================================================================================
## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
data_c <- covid19.data(case="ts-confirmed")
## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
## --------------------------------------------------------------------------------
No mostraremos la data devido a que es demasiado grande, pero mostraremos los casos confirmados para un paĆs en especĆfico, ademĆ”s nos mostrarĆ” un modelo de regresión lineal donde intenta predecir la variable \(y\) y utiliza los valores de la variable \(x\).
tots.per.location(data_c, geo.loc = "Honduras")
## HONDURAS -- 472250
## =============================== running models...===============================
## Linear Regression (lm):
##
## Call:
## lm(formula = y.var ~ x.var)
##
## Residuals:
## Min 1Q Median 3Q Max
## -83171 -26344 -5143 28531 78550
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -26322.571 2226.421 -11.82 <2e-16 ***
## x.var 508.962 3.372 150.96 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 37610 on 1141 degrees of freedom
## Multiple R-squared: 0.9523, Adjusted R-squared: 0.9523
## F-statistic: 2.279e+04 on 1 and 1141 DF, p-value: < 2.2e-16
##
## --------------------------------------------------------------------------------
## Linear Regression (lm):
##
## Call:
## lm(formula = y.var ~ x.var)
##
## Residuals:
## Min 1Q Median 3Q Max
## -7.9217 -0.8980 0.5388 1.6095 2.0237
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 7.5999522 0.1305452 58.22 <2e-16 ***
## x.var 0.0065658 0.0001977 33.21 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.205 on 1141 degrees of freedom
## Multiple R-squared: 0.4915, Adjusted R-squared: 0.4911
## F-statistic: 1103 on 1 and 1141 DF, p-value: < 2.2e-16
##
## --------------------------------------------------------------------------------
## GLM using Family [1] "poisson" :
##
## Call:
## glm(formula = y.var ~ x.var, family = family)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -384.46 -171.54 -4.13 139.70 257.87
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 1.106e+01 1.657e-04 66720 <2e-16 ***
## x.var 2.099e-03 1.989e-07 10552 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for poisson family taken to be 1)
##
## Null deviance: 170543659 on 1142 degrees of freedom
## Residual deviance: 43454804 on 1141 degrees of freedom
## AIC: 43469796
##
## Number of Fisher Scoring iterations: 5
##
## --------------------------------------------------------------------------------
Tambien podemos sacar los datos de fallecidos a nivel mundial.
data_d <- covid19.data(case="ts-deaths")
## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
## --------------------------------------------------------------------------------
live.map(data_d)