Seleccione 3 distribuciones de probabilidad que no se hayan visto en clases desde el sitio web:
Benford(VGAM), Delaporte(Delaporte) y Yule-Simon (VGAM)
library("ggplot2")
library("VGAM")
## Loading required package: stats4
## Loading required package: splines
library("Delaporte")
Explique para qué se puede utilizar o se ha utilizado, cite al menos un artículo científico.
Para la distribución de Benford esta se ha usado para detectar irregularidades en los datos financieros, fiscales y electorales. En el articulo “Benford’s Law and articles of scientific journals: comparison of JCR and Scopus data®” (Alexandre Donizeti Alves, Horacio Hideki Yanasse & Nei Yoshihiro Soma, 21 May 2013) se utiliza para hacer un estudio de los primeros dígitos significativos del número de artículos publicados de revistas indexadas en las ediciones JCR y Scopus.
La distribución de Delaporte es usada para ciencias actuariales y en el articulo “Characterizing superspreading potential of infectious disease: Decomposition of individual transmissibility” (Shi Zhao ,Marc K. C. Chong,Sukhyun Ryu,Zihao Guo,Mu He,Boqiang Chen,Salihu S. Musa,Jingxuan Wang,Yushan Wu,Daihai He ,Maggie H. Wang, 27 June 2022) se demuestra que esta distribución es importante para comprender las características de la transmición de la enfermedades estudiadas.
La distribución Yule-Simon se relaciona con procesos de adjunción como el crecimiento en el número de especies por género en algún taxón superior de organismos bióticos, la distribución de los tamaños de las ciudades, la distribución de los tamaños de ciudades, la distribución de la riqueza en los individuos, el número de enlaces a página en la www entre otros. En el articulo “A fixed-point algorithm to estimate the Yule–Simon distribution parameter” (Juan Manuel Garcia Garcia, 1 July 2011) se utiliza presenta un algoritmo que hace uso de las observaciones de un proceso de Yule para obtener el parámetro de la distribución de Yule-Simon con una máxima probabilidad.
Identifique los parámetros y explíquelos.
1 Para Benford: x y q: Estos son vectores de cuantiles. El argumento x se utiliza cuando se desea obtener los cuantiles correspondientes a ciertos valores de probabilidad, mientras que q se utiliza cuando se conocen los cuantiles y se desea obtener las probabilidades correspondientes.
p: Es un vector de probabilidades. Este argumento se utiliza para especificar las probabilidades asociadas a los cuantiles. Cada valor en el vector p representa la probabilidad de un cuantil específico.
n: Es el número de observaciones. Debe ser un número entero positivo. Si n es un solo número, se generará ese número de observaciones. Si n es un vector con más de un elemento, se generará un número de observaciones igual a la longitud del vector n.
ndigits: Es el número de dígitos principales (leading digits) que se utilizan en la distribución. Puede ser 1 o 2. Si ndigits es 1, el soporte de la distribución será {1,…,9}. Si ndigits es 2, el soporte será {10,…,99}.
log y log.p: Son argumentos lógicos. Si log.p = TRUE, todas las probabilidades p se proporcionan en forma de logaritmo natural (log(p)) en lugar de probabilidades directas.
lower.tail: Este argumento tiene el mismo significado que en las funciones pnorm o qnorm. Determina si se calculan las probabilidades de la cola inferior (lower tail probabilities) o de la cola superior (upper tail probabilities).
Los parametros anteriores son para los siguientes funciones:
dbenf(x, ndigits = 1, log = FALSE) pbenf(q, ndigits = 1, lower.tail = TRUE, log.p = FALSE) qbenf(p, ndigits = 1, lower.tail = TRUE, log.p = FALSE) rbenf(n, ndigits = 1)
q: Es un vector de cuantiles. Se utiliza cuando se conocen los cuantiles y se desea obtener los valores correspondientes de probabilidad de la distribución Delaporte.
p: Es un vector de probabilidades. Se utiliza para especificar las probabilidades asociadas a los cuantiles de la distribución Delaporte. Cada valor en el vector p representa la probabilidad de un cuantil específico.
n: Es el número de observaciones. Se utiliza para generar un número determinado de observaciones de la distribución Delaporte.
alpha: Es un vector de parámetros alfa de la parte gamma de la distribución Delaporte. Deben ser estrictamente positivos, pero no necesariamente enteros.
beta: Es un vector de parámetros beta de la parte gamma de la distribución Delaporte. Deben ser estrictamente positivos, pero no necesariamente enteros.
lambda: Es un vector de parámetros lambda de la parte de Poisson de la distribución Delaporte. Deben ser estrictamente positivos, pero no necesariamente enteros.
log y log.p: Son argumentos lógicos. Si log.p = TRUE, las probabilidades p se proporcionan en forma de logaritmo natural (log(p)) en lugar de probabilidades directas.
lower.tail: Es un argumento lógico que determina si se calculan las probabilidades de la cola inferior (lower tail probabilities) o de la cola superior (upper tail probabilities). Si lower.tail = TRUE (valor predeterminado), se calculan las probabilidades acumulativas inferiores. Si es FALSE, se calculan las probabilidades acumulativas superiores.
exact: Es un argumento lógico que determina si se utiliza una suma doble para generar cuantiles o valores aleatorios. Si es TRUE, se utiliza una suma doble exacta. De lo contrario, se utiliza una aproximación Poisson-binomial negativa.
Lo anterior es para las siguientes funciones:
ddelap(x, alpha, beta, lambda, log = FALSE) pdelap(q, alpha, beta, lambda, lower.tail = TRUE, log.p = FALSE) qdelap(p, alpha, beta, lambda, lower.tail = TRUE, log.p = FALSE, exact=TRUE) rdelap(n, alpha, beta, lambda, exact = TRUE)
log, lower.tail, log.p: Estos argumentos tienen el mismo significado que en las funciones pnorm o qnorm estándar de R.
log es un argumento lógico. Si log = TRUE, se devuelven los logaritmos naturales de las probabilidades o cuantiles. lower.tail es un argumento lógico que determina si se calculan las probabilidades de la cola inferior (lower tail probabilities) o de la cola superior (upper tail probabilities). Si lower.tail = TRUE, se calculan las probabilidades acumulativas inferiores. Si es FALSE, se calculan las probabilidades acumulativas superiores. log.p es un argumento lógico. Si log.p = TRUE, las probabilidades p se proporcionan en forma de logaritmo natural (log(p)) en lugar de probabilidades directas.
Lo anterior es para las siguientes funciones:
dyules(x, shape, log = FALSE) pyules(q, shape, lower.tail = TRUE, log.p = FALSE) qyules(p, shape) ryules(n, shape)
Grafique las funciones de probabilidad y de probabilidad acumulada.
#BENFORD
# Generar un vector numérico aleatorio
x <- rnorm(1000, mean = 100, sd = 10)
# Calcular la densidad de probabilidad de los primeros dígitos de Benford
dbenf(x, 1)
## [1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [38] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [75] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [112] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [149] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [186] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [223] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [260] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [297] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [334] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [371] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [408] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [445] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [482] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [519] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [556] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [593] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [630] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [667] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [704] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [741] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [778] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [815] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [852] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [889] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [926] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [963] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [1000] 0
# Calcular la función de distribución acumulativa de los primeros dígitos de Benford
pbenf(x, 1)
## [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [38] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [75] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [112] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [149] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [186] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [223] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [260] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [297] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [334] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [371] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [408] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [445] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [482] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [519] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [556] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [593] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [630] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [667] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [704] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [741] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [778] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [815] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [852] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [889] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [926] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [963] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [1000] 1
# Graficar la densidad de probabilidad de los primeros dígitos de Benford
plot(dbenf(x, 1), main = "Densidad de probabilidad de los primeros dígitos de Benford")
# Graficar la función de distribución acumulativa de los primeros dígitos de Benford
plot(pbenf(x, 1), main = "Función de distribución acumulativa de los primeros dígitos de Benford")
#Función de distribución Delaporte
# Definir los parámetros de la distribución de Delaporte
alpha <- 2
beta <- 0.5
lambda <- 3
# Calcular la probabilidad de que X sea igual a 5
ddelap(x = 5, alpha = alpha, beta = beta, lambda = lambda)
## [1] 0.1471826
# Calcular la probabilidad de que X sea menor o igual a 5
pdelap(q = 5, alpha = alpha, beta = beta, lambda = lambda)
## [1] 0.7784676
# Definir los valores de x a graficar
x <- 0:10
# Calcular las probabilidades correspondientes
y <- ddelap(x, alpha, beta, lambda)
# Graficar los puntos con líneas
plot(x, y, type = "b", main = "Función de masa de probabilidad")
# Calcular las probabilidades acumuladas correspondientes
y <- pdelap(x, alpha, beta, lambda)
# Graficar los puntos con líneas
plot(x, y, type = "s", main = "Función de distribución acumulativa")
# Instalar el paquete VGAM si no lo tienes instalado
# install.packages("VGAM")
# Generar datos para la función Dyules
x <- seq(0, 10, length.out = 100)
# Parámetros de forma
shape <- 2
# Calcular los valores de la función Dyules
y <- dyules(x, shape)
# Graficar la función Dyules
plot(x, y, type = "l", xlab = "x", ylab = "dyules(x, shape)", main = "Función Dyules")
# Instalar el paquete VGAM si no lo tienes instalado
# install.packages("VGAM")
# Cargar la biblioteca VGAM
library(VGAM)
# Generar datos para la función Pyules
q <- seq(0, 10, length.out = 100)
# Parámetros de forma
shape <- 2
# Calcular los valores de la función Pyules
p <- pyules(q, shape)
# Graficar la función Pyules
plot(q, p, type = "l", xlab = "q", ylab = "pyules(q, shape)", main = "Función Pyules")
Establezca una semilla para el generador de números aleatorios con la función set.seed(). Genere 10,100 y 1000 datos aleatorios utilizando la función con prefijo “r”, grafique un histograma para cada caso ¿Qué se puede observar?
# Establecer una semilla para el generador de números aleatorios
set.seed(123)
num = 0.1
# Generar 10 datos aleatorios
datos_10 <- ryules(10, shape = num)
# Generar 100 datos aleatorios
datos_100 <- ryules(100, shape = num)
# Generar 1000 datos aleatorios
datos_1000 <- ryules(1000, shape = num)
# Graficar histograma de los datos
hist(datos_10, main = "Histograma - 10 datos aleatorios", xlab = "Valores")
hist(datos_100, main = "Histograma - 100 datos aleatorios", xlab = "Valores")
hist(datos_1000, main = "Histograma - 1000 datos aleatorios", xlab = "Valores")
Para la distribución de Yules-simon se puede observar que según como se cambie el valor de shape sienod este más bajo existe una cierta simetría en los extremos y al aumentarlo esto cambia a lo contrario.
# Establecer una semilla para el generador de números aleatorios
set.seed(156)
# Generar 10 datos aleatorios
datos_10 <- rbenf(10, ndigits=1)
# Generar 100 datos aleatorios
datos_100 <- rbenf(100,ndigits=1)
# Generar 1000 datos aleatorios
datos_1000 <- rbenf(1000, ndigits=1)
# Graficar histograma de los datos
hist(datos_10, main = "Histograma - 10 datos aleatorios", xlab = "Valores")
hist(datos_100, main = "Histograma - 100 datos aleatorios", xlab = "Valores")
hist(datos_1000, main = "Histograma - 1000 datos aleatorios", xlab = "Valores")
En benford se puede observar en las cantidades pequeñas una cierta tendencia a los extremos mientras que se puede ver una cierta distribución de los datos mayormente cargada hacia los menores para cantidades más grandes.
# Establecer una semilla para el generador de números aleatorios
set.seed(123)
# Generar 10 datos aleatorios
datos_10 <- rdelap(10, alpha = alpha, beta = beta, lambda = lambda)
# Generar 100 datos aleatorios
datos_100 <- rdelap(100, alpha = alpha, beta = beta, lambda = lambda)
# Generar 1000 datos aleatorios
datos_1000 <- rdelap(1000, alpha = alpha, beta = beta, lambda = lambda)
# Graficar histograma de los datos
hist(datos_10, main = "Histograma - 10 datos aleatorios", xlab = "Valores")
hist(datos_100, main = "Histograma - 100 datos aleatorios", xlab = "Valores")
hist(datos_1000, main = "Histograma - 1000 datos aleatorios", xlab = "Valores")
Se puede notar que en esta distribución los datos se concentran en los extremos en cantidades pequeñas y los valores grandes se concentran en en el centro.