Distribución de probabilidad en R

por | Jun 17, 2020 | R | 0 Comentarios

Instalamos los paquetes que vamos a necesitar

#Establecemos la semilla
set.seed(1234) 

#Instalamos los paquetes necesarios para manipular los datos y los gráficos
install.packages('tidyverse')
library(tidyverse)

Distribución normal

# Función de densidad normal de probabilidad
# --------------------------------------------------------------

n<-seq(-4,4,0.1)  # 81 puntos de -4 a 4 en intervalos de 0,1
datos <- data.frame(n=n, 
                    densidad=dnorm(n, mean=0, sd=1),
                    distribucion=pnorm(n, mean=0, sd=1)) 

#Dibujamos la gráfica
ggplot(datos, aes(x=n, y=densidad )) + 
  geom_line(colour="blue")  + 
  ggtitle ("Función normal de densidad \ndnorm( media=0, desviacion=1)") + 
  theme_minimal()
# Función de distribución normal acumulada
# --------------------------------------------------------------

#Dibujamos la gráfica
ggplot(datos, aes(x=n, y=distribucion )) + 
  geom_line(colour="blue") +
  ggtitle ("Función normal acumulada \npnorm( media=0, desviacion=1)") + 
  theme_minimal()
# Función normal de cuartiles
# --------------------------------------------------------------
q<-seq(0.01,0.99,0.01)  # 99 puntos de 1% a 99% en intervalos de 1%
datos <- data.frame(Q=q, cuartiles=qnorm(q, mean=0, sd=1))  

#Dibujamos la gráfica
ggplot(datos, aes(x=q, y=cuartiles )) + 
  geom_line(colour="blue")  + 
  ggtitle ("Distribución normal de cuartiles \npnorm( media=0, desviacion=1)") + 
  theme_minimal()
# Función normal aleatoria
# --------------------------------------------------------------
datos <- data.frame(Z=n, 
                    x=rnorm(n, mean=0, sd=1),
                    y=rnorm(n, mean=0, sd=1)) 

#Dibujamos la gráfica
ggplot(datos, aes(x=x, y=y)) + 
  geom_point(colour="blue") +
  ggtitle("Función normal aleatoria \npnorm( media=0, desviacion=1)")+
  theme_minimal()

Observamos que al ser aleatoria obtenemos una nube de puntos que no sigue ningún patrón

Distribución de Poisson

# Función de distribución de Poisson de densidad 
# --------------------------------------------------------------

x_pois <- seq(0,20, by=1) #21 puntos de 0 a 20 con intervalos de 1
y_dpois <- dpois(x_pois, lambda = 8) #Algoritmo que calcula la distribución de densidad
datos_dpois <- data.frame(x_pois, y_dpois)

#Dibujamos la gráfica
ggplot(datos_dpois, aes(x=x_pois, y=y_dpois)) + 
  geom_line(colour="blue")+
  ggtitle("Función de distribución de Poisson de densidad")+
  theme_minimal()
# Función de distribución de Poisson acumulada
# --------------------------------------------------------------

z_ppois <- ppois(x_pois, lambda = 8) #Algoritmo que calcula la distribución acumulada
datos_ppois <- data.frame(x_pois,z_ppois) 

#Dibujamos la gráfica
ggplot(datos_ppois, aes(x=x_pois, y=z_ppois )) + 
  geom_line(colour="blue")  + 
  ggtitle ("Función de distribución de Poisson acumulada") + 
  theme_minimal()
# Función de distribución de Poisson de cuartiles
# --------------------------------------------------------------

c_pois <- seq(0.001,0.999,0.001) #999 puntos de 0.001 a 0.999 con intervalos de 0.001
t_qpois <- qpois(c_pois, lambda = 8) #Algoritmo que calcula la distribución de cuartiles
datos_qpois <- data.frame(c_pois, t_qpois)

#Dibujamos la gráfica
ggplot(datos_qpois, aes(x=c_pois, y=t_qpois)) + 
  geom_line(colour="blue")  + 
  ggtitle ("Función de distribución de Poisson de cuartiles") + 
  theme_minimal()
# Función de distribución de Poisson aleatoria
# --------------------------------------------------------------

datos_apois <- data.frame(Z=x_pois, 
                         x=rpois(x_pois, lambda = 8),
                         y=rpois(x_pois, lambda = 8)) #Algoritmo que calcula la distribución aleatoria y la introduce en el dataframe

#Dibujamos la gráfica
ggplot(datos_apois, aes(x=x, y=y)) + 
  geom_point(colour="blue") +
  ggtitle("Función de distribución de Poisson aleatoria")+
  theme_minimal()

Distribución binomial

# Función de densidad binomial 
# --------------------------------------------------------------

x_bin <- seq(0,200, by=1) #201 puntos de 0 a 200 con intervalos de 1
y_dbin <- dbinom(x_bin, size=200, prob=0.6) #Algoritmo que calcula la distribución de densidad
datos_dbin <- data.frame(x_bin, y_dbin)

#Dibujamos la gráfica
ggplot(datos_dbin, aes(x=x_bin, y=y_dbin)) + 
  geom_line(colour="blue")+
ggtitle("Función binomial de densidad")+
  theme_minimal()
# Función de distribución binomial acumulada
# --------------------------------------------------------------

z_pbin <- pbinom(x_bin, size=200, prob=0.6) #Algoritmo que calcula la distribución acumulada
datos_pbin <- data.frame(x_bin,z_pbin)

#Dibujamos la gráfica
ggplot(datos_pbin, aes(x=x_bin, y=z_pbin )) + 
  geom_line(colour="blue")  + 
  ggtitle ("Función binomial acumulada") + 
  theme_minimal()
# Función binomial de cuartiles
# --------------------------------------------------------------

c_bin <- seq(0.001,0.999,0.001) #999 puntos de 0.001 a 0.999 con intervalos de 0.001
t_qbin <- qbinom(c_exp, size=200, prob=0.6) #Algoritmo que calcula la distribución de cuartiles
datos_qbin <- data.frame(c_bin, t_qbin )

#Dibujamos la gráfica
ggplot(datos_qbin, aes(x=c_bin, y=t_qbin)) + 
  geom_line(colour="blue")  + 
  ggtitle ("Función binomial de cuartiles") + 
  theme_minimal()
# Función binomial aleatoria
# --------------------------------------------------------------

datos_abin <- data.frame(Z=x_bin, 
                         x=rbinom(x_bin, size=200, prob=0.6),
                         y=rbinom(x_bin, size=200, prob=0.6)) #Algoritmo que calcula la distribución aleatoria y la introduce en el dataframe

#Dibujamos la gráfica
ggplot(datos_abin, aes(x=x, y=y)) + 
  geom_point(colour="blue") +
  ggtitle("Función binomial aleatoria")+
  theme_minimal()

Distribución exponencial

# Función de densidad exponencial 
# --------------------------------------------------------------

x_exp <- seq(0,10, by= 0.25) #41 puntos de 0 a 10 con intervalos de 0.25
y_dexp <- dexp(x_dexp, rate=1) #Algoritmo que calcula la distribución de densidad
datos_dexp <- data.frame(x_exp, y_dexp)

#Dibujamos la gráfica
ggplot(datos_dexp, aes(x=x_exp, y=y_dexp )) + 
  geom_line(colour="blue")  + 
  ggtitle ("Función exponencial de densidad") + 
  theme_minimal()
# Función de distribución exponencial acumulada
# --------------------------------------------------------------

z_pexp <- pexp(x_exp, rate=1) #Algoritmo que calcula la distribución acumulada
datos_pexp <- data.frame(x_exp,z_pexp)

#Dibujamos la gráfica
ggplot(datos_pexp, aes(x=x_exp, y=z_pexp )) + 
  geom_line(colour="blue")  + 
  ggtitle ("Función exponencial acumulada") + 
  theme_minimal()
# Función exponencial de cuartiles
# --------------------------------------------------------------

c_exp <- seq(0.001,0.999,0.001)  #999 puntos de 0.001 a 0.999 con intervalos de 0.001
t_qexp <- qexp(c_exp, rate=1) #Algoritmo que calcula la distribución de cuartiles
datos_cexp <- data.frame(c_exp, t_qexp)

#Dibujamos la gráfica
ggplot(datos_cexp, aes(x=c_exp, y=t_qexp)) + 
  geom_line(colour="blue")  + 
  ggtitle ("Función exponencial cuartiles") + 
  theme_minimal()
# Función exponencial aleatoria
# --------------------------------------------------------------

datos_aexp <- data.frame(Z=x_exp, 
                    x=rexp(x_exp, rate=1),
                    y=rexp(x_exp, rate=1)) #Algoritmo que calcula la distribución aleatoria y la introduce en el dataframe

#Dibujamos la gráfica
ggplot(datos_aexp, aes(x=x, y=y)) + 
  geom_point(colour="blue") +
  ggtitle("Función exponencial aleatoria")+
  theme_minimal()

Se observa que no sigue ningún patrón como pasaba en la distribución normal aleatoria, e igual pasará en el resto de distribuciones aleatorias.

Distribución χ2

# Función de distribución χ2 de densidad 
# --------------------------------------------------------------

x_chisq <- seq(3,72, by=3) #24 puntos de 3 a 72 con intervalos de 3
y_dchisq <- dchisq(x_chisq, df=20) #Algoritmo que calcula la distribución de densidad
datos_dchisq <- data.frame(x_chisq, y_dchisq)

#Dibujamos la gráfica
ggplot(datos_dchisq, aes(x=x_chisq, y=y_dchisq)) + 
  geom_line(colour="blue")+
  ggtitle("Función de distribución χ2 de densidad")+
  theme_minimal()
# Función de distribución χ2 acumulada
# --------------------------------------------------------------

z_pchisq <- pchisq(x_chisq, df=20) #Algoritmo que calcula la distribución acumulada
datos_pchisq <- data.frame(x_chisq,z_pchisq) 

#Dibujamos la gráfica
ggplot(datos_pchisq, aes(x=x_chisq, y=z_pchisq )) + 
  geom_line(colour="blue")  + 
  ggtitle ("Función de distribución χ2 acumulada") + 
  theme_minimal()
# Función de distribución χ2 de cuartiles
# --------------------------------------------------------------

c_chisq <- seq(0.001,0.999,0.001) #999 puntos de 0.001 a 0.999 con intervalos de 0.001
t_qchisq <- qchisq(c_chisq, df=20) #Algoritmo que calcula la distribución de cuartiles
datos_qchisq <- data.frame(c_chisq, t_qchisq)

#Dibujamos la gráfica
ggplot(datos_qchisq, aes(x=c_chisq, y=t_qchisq)) + 
  geom_line(colour="blue")  + 
  ggtitle ("Función de distribución χ2 de cuartiles") + 
  theme_minimal()
# Función de distribución χ2 aleatoria
# --------------------------------------------------------------

datos_achisq <- data.frame(Z=x_chisq, 
                          x=rchisq(x_chisq, df=20),
                          y=rchisq(x_chisq, df=20)) #Algoritmo que calcula la distribución de cuartiles y la introduce en el dataframe

#Dibujamos la gráfica
ggplot(datos_achisq, aes(x=x, y=y)) + 
  geom_point(colour="blue") +
  ggtitle("Función de distribución χ2 aleatoria")+
  theme_minimal()

0 comentarios

Enviar un comentario

Tu dirección de correo electrónico no será publicada.