#---------------------------------------------------------------#
## cálculo naive E(X), distribución uniforme ##

x <- 0:20 # 21 valores de v[1]...v[21], notas de 0...20
n <- length(x) # tenemos 21 notas

p <- 1:21 # creacion de las 21 probabilidades
p[1:21] <- 1/n # asignación probabilidad  uniforme a la probabilidad 21

# cálculo de E(X) = sigma de pi.vi
E <- 0 # inicialización de E(X)
for(i en 1:21) {E <- E+ x[i] * p[i]}
E # esperanza de X

#------------------------------------------------- --------------#
## recálculo E(X) y comparación con la media m ##
E <- sum(p*x) # mismo cálculo pero más rápido
# es el producto escalar de los vectores
#p y v
E

m <- sum(x)/n # cálculo promedio
(m == E) # prueba si las esperanza y las medias son iguales

#------------------------------------------------- --------------#
## con una distribución uniforme que incluye números aleatorios ##
## cálculo del promedio de E sobre 10000 ensayos ##

E <- 0 # inicialización de la acumulación de E
num <- 0 # inicialización del conteo del num de bucles

for (s in 1:10000) { # haremos 10000 aleatorios
  set.seed(s) # restablecer el generador de números aleatorios
  num <- num + 1
  p <-sample(1:20, 21, replace = T) # distribución uniforme
  if (num == 1) hist(p) # dibujar una distribución sobre 10000
  p <- p/sum(p)
  x <- 0:20 # 21 valores de v[1]...v[21], notas de 0...20
  E <- E + sum(p*x)
}
E <- E/num # cálculo de la media de las 10000 esperanzas
E

#------------------------------------------------- --------------#
## con una distribución de ley normal que incluye números aleatorios ##
## cálculo del promedio de E sobre 10000 ensayos ##

fn <- funtion(es){# notas de distribución - distribución normal de 0 a 20
  set.seed(s)
  p <- rnorm(21, mean = 10, sd = 5) # distribución normal
  p <- p - min(p)
  d <- máx(p) - mín(p)
  p <- (p/d)*20
}

E <- 0 # inicialización de la acumulación de E
num <- 0 # inicialización del conteo del num de bucles

for (s in 1:10000) { # haremos 10000 aleatorios
  num <- num + 1
  p <- fn(s) # emitir llamada
  # dibujemos una distribución de 10000
  if (num == 1) hist(p, breaks = 10)
  
  p <- p/suma(p)
  x <- 0:20 # 21 valores de v[1]...v[21], notas de 0...20
  E <- E + suma(p*x)
}
E <- E/num # cálculo de la media de las 10000 esperanzas
E

#------------------------------------------------- --------------#
## media de cálculo, desviación_estándar, asimetría, curtosis de 3 distribuciones ##
## creación de una pequeña tabla de resumen ##

library(e1071) # la caja de herramientas
set.seed(10)   # inicialización generador num alea
l_uniforme <- runif(10000)    # 10000 valore sobre la distribución uniforme
l_normale  <- rnorm(10000, mean = 1)   # sobre la distribución normal
l_poisson  <- rpois(10000, lambda = 1) # sobre la distribución de poisson

# combinamos las columnas
all <- cbind(l_uniforme,l_normale,l_poisson)

# aplicaciones de las funciones
media    <- apply(all,2,mean)
desviacion_tipica <- apply(all,2,sd)
skewness   <- apply(all,2,function(x){skewness(x, type = 3)})
kurtosis   <- apply(all,2,function(x){kurtosis(x, type = 3)})

# combinamos las líneas
all <- rbind(media,desviacion_tipica,skewness,kurtosis)
all <- round(all, digits = 1)     # redondeo
all

#---------------------------------------------------------------#

