##################################################
#Distribución Normal
###################################################
#Gráficos de densidad de probabilidad
curve(dnorm(x, mean=2.5, sd=0.5),
from=0, to=5, lwd=3, col="blue",
main = "N(mu=2.5, sigma2=0.5^2)",
xlab = "X", ylab = "f(x)")
curve(dnorm(x, mean=2.5, sd=1),
from=0, to=5, lwd=3, col="tomato",
main = "N(mu=2.5, sigma2=1^2)",
xlab = "X", ylab = "f(x)")
curve(dnorm(x, mean=2.5, sd=1.5),
from=0, to=5, lwd=3, col="green",
main = "N(mu=2.5, sigma2=1.5^2)",
xlab = "X", ylab = "f(x)")
# Añadimos las curvas en un solo gráfico con "add = TRUE" en la linea de comando
curve(dnorm(x, mean=2.5, sd=0.5), add = TRUE,
from=0, to=5, lwd=3, col="blue",
main = "Distribucion Normal",
xlab = "X", ylab = "f(x)")
curve(dnorm(x, mean=2.5, sd=1), add = TRUE,
from=0, to=5, lwd=3, col="tomato",
main = "Distribucion Normal",
xlab = "X", ylab = "f(x)")
curve(dnorm(x, mean=2.5, sd=1.5),add = TRUE,
from=0, to=5, lwd=3, col="green",
main = "Distribucion Normal",
xlab = "X", ylab = "f(x)")
# Le añadimos la leyenda con las letras griegas: μ (mu), como media y σ (sigma)
como desviacion estandar.
# Lista (expression vector) con los textos de la leyenda
l <- expression(paste(mu, "= 2.5, ", sigma^2, "= 0.5"),
paste(mu, "= 2.5, ", sigma^2, "= 1.0"),
paste(mu, "= 2.5, ", sigma^2, "= 1.5"))
legend("topright", # Posición
legend = l, # Expression vector anterior
lty = c(1, 1, 1), # Líneas sólidas
bty = "n", # Sin bordes
col = c("blue", "tomato", "green"),
inset = .05, # Espaciado del margen
y.intersp = .75) # Interlineado
# La función "Shadows.dist" para distribuciones continuas
# Con distribución Normal, chi-cuadrado y T-students
# Installación de los packages "devtools" y "usefultools"
if (!require('devtools')) install.packages('devtools')
devtools::install_github('fhernanb/usefultools', force=TRUE)
library("devtools")
library("usefultools")
shadow.dist(dist="dnorm", param=list(mean=0, sd=1),
a=0, b=1, type='middle', from=-3, to=3)
shadow.dist(dist="dnorm", param=list(mean=0, sd=1),
a=0, type='lower', from=-3, to=3)
shadow.dist(dist='dnorm', param=list(mean=0, sd=1),
b=1, type='upper', from=-3, to=3)
shadow.dist(dist='dnorm', param=list(mean=0, sd=1),
a=0, b=1, type='two', from=-3, to=3)
# con distribución chi-cuadrado
shadow.dist(dist='dchisq', param=list(df=2),
a=2, b=6, type='middle', from=0, to=10, col.shadow='pink')
# con distribución t-students
shadow.dist(dist='dt', param=list(df=2),
a=-2, b=2, type='middle', from=-5, to=5, col.shadow='tomato')
#######################################
#Funciones de la distribución Normal
#######################################
dnorm (x, mu, sigma) # Función de densidad de una Distribución Normal, para
calcular un valor puntual
pnorm (x, mu, sigma, lower.tail = TRUE)# Función de distribución de una
Distribución Normal, entrega valores acumulados, es decir
# si queremos calcular la probabilidad de una distribución normal que sea x<8 por
ejemplo, entrega la probabilidad de cola izquierda
qnorm (probabilidad_deseada, mu, sigma, lower.tail = TRUE ) # Entrega el valor de X
que acumula la probabilidad deseada hacia abajo,
# si queremos calcular la probabilidad que sea un 30% inferior, nos entrega la
probabilidad que esta como máximo ese 30% inferior
# si queremos calcular la probabilidad que sea un 30% superior, cambiamos
lower.tail = FALSE, nos dará el valor mínimo de ese 30% superior
rnorm (n, mu, sigma) # Simula una distribución de normal de tamaño n, y paràmetros
mu y sigma, esta función simula una distribución Normal
# Z∼N(0,1). Calcular P(Z<1.5).
pnorm (1.5, 0, 1, lower.tail = TRUE)
# x = Valor al que se busca la probabilidad
# mu = media
# sigma = desviación estandar
# Ejemplo 1: mu = 10, sigma = 7
# Z∼N(10,7). Calcular P(Z=5). Aquí Z = x
#P (x = 5), cual es la probabilidad de que X = 5, (probabilidad puntual)
dnorm (5, 10, 7)
# La probabilidad de que Z sea igual a 5 en la distribución normal es del 0.44%.
# Gráficamente
x<-rnorm(10000, 10, 7)
curve(dnorm(x, mean=10, sd=7),
from=-20, to=+40, lwd=3, col="blue",
main = "N(mu=10, sigma2=7^2)",
xlab = "X", ylab = "f(x)")
# P (x<=4)
# Z∼N(10,7). Calcular P(Z<=4). Aquí Z = x
pnorm (4, 10, 7, lower.tail = TRUE)
# P (x>=4)
# Z∼N(10,7). Calcular P(Z>=4) Aquí Z = x
# P (x>=4)
pnorm (4, 10, 7, lower.tail = FALSE) # me entrega valores mayores a 4 o mayores
iguales a 4
1 - pnorm(4,10,7, lower.tail = TRUE)
# La probabilidad de que Z sea mayor que 4 en la distribución normal es
aproximadamente 80.43%.
# VALIDACIÓN, por propiedad de probabilidad, la suma debe darnos 1
pnorm (4, 10, 7, lower.tail = TRUE) + pnorm (4, 10, 7, lower.tail = FALSE)
# P (x<=a)=0.3 y me piden el valor de a, es decir el valor de "a" que hace que en
la cola inferior se me acumule un 30% de probabilidad o 0.3
# Z∼N(10,7). Calcular P(Z<=a)=0.3 Aquí Z = x
qnorm (0.3, 10, 7,lower.tail = TRUE)
# el valor de "a" es 6.329193
# Gráficamente el problema se puede resumir de la siguiente manera.
shadow.dist(dist='dnorm', param=list(mean=10, sd=7),
a=qnorm(p=0.3, mean=10, sd=7), type='lower', from=-50, to=50,
main='', las=1,
col.shadow='springgreen3', xlab='X', ylab='Densidad')
text(x=1.3, y=0.01, "0.3", col="yellow", cex=2)
arrows(10, 0.01, 6.32, 0, lwd = 3, length = 0.2)
text(x=17, y=0.013, "a = 6.32", col="black", cex=2)
# VALIDACIÓN
pnorm (6.329196, 10, 7, lower.tail = TRUE)
pnorm (qnorm (0.3, 10, 7), 10, 7, lower.tail = TRUE)
# Z∼N(10,7). Calcular P(Z>=a)=0.3 Aquí Z = x
#P (x>=a) = 0.3 y me piden el valor de a, es decir que en la cola superior hay un
30%, y me acumula hacia abajo un 70% por que son complementarios
qnorm (0.3, 10, 7, lower.tail = FALSE)
# el valor de "a" es 13.6708
# Gráficamente el problema se puede resumir de la siguiente manera.
install.packages("usefultools")
library(usefultools)
shadow.dist(dist='dnorm', param=list(mean=10, sd=7),
a=qnorm(p=0.3, mean=10, sd=7,lower.tail = FALSE), type='upper', from=-
50, to=50,
main='', las=1,
col.shadow='lightblue', xlab='X', ylab='Densidad')
text(x=22, y=0.004, "0.3", col="black", cex=2)
arrows(10, 0.01, 13.67, 0, lwd = 3, length = 0.2)
text(x=5, y=0.013, "a = 13.67", col="black", cex=2)
# VALIDACIÓN
pnorm (13.6708, 10, 7, lower.tail = FALSE)
pnorm (qnorm (0.3, 10, 7, lower.tail = FALSE), 10, 7, lower.tail = TRUE)
#simulación de n = 10000, mu = 10 y sigma = 7)
x<-rnorm(10000, 10, 7)
mean (x)
sd(x)
hist (x)
hist(x, freq=FALSE, col="lightblue", border="black", ylim=c(0, 0.06),
main="Histograma y densidad", xlab="X", ylab="f(x)")
curve(dnorm(x, mean=10, sd=7), lwd=3, col="tomato", add=TRUE)
#Suponga que W∼N(150,25).Calcular P(140<W<156).
p_156 <- pnorm(q=156, mean=150, sd=5, lower.tail = TRUE)
p_156
p_140 <- pnorm(q=140, mean=150, sd=5, lower.tail = TRUE )
p_140
p_156 - p_140
# Gráficamente el problema se puede resumir de la siguiente manera.
shadow.dist(dist='dnorm', param=list(mean=150, sd=5),
a=156, b=140, type='middle', from=130, to=170,
main='', las=1,
col.shadow='pink', xlab='X', ylab='Densidad')
text(x=150, y=0.04, "86%", col="black", cex=2)
# La probabilidad de que P(140<W<156) es aproximadamente 86.21%.
# Suponga que 𝑄∼𝑁(16,16). Calcular (𝑄<14 ó𝑄>18).
# Solución
# Para calcular esta probabilidad utilizamos el siguiente código:
# Aquí también Z = q
cola_izq_de_14 <- pnorm(q=14, mean=16, sd=4,lower.tail=TRUE)
cola_der_de_18 <- pnorm(q=18, mean=16, sd=4, lower.tail=FALSE)
suma_de_colas <- cola_izq_de_14 + cola_der_de_18
suma_de_colas
# La probabilidad de (𝑄<14 ó𝑄>18) es del 61.71%