En el campo de la genética, se busca identificar los genes asociados a una enfermedad específica. En un estudio reciente se encontró que un conjunto de 22 genes está fuertemente relacionado con la aparición de diabetes tipo 2. El equipo de investigación ahora se pregunta ¿cuántos conjuntos de 22 genes se tendrían que evaluar para identificar todos los genes relacionados con la diabetes tipo 2? Suponga que el genoma humano consta de 25,000 genes. Además, si se propusiera un algoritmo de búsqueda basado en fuerza bruta que evalúa cada combinación de 22 genes para determinar su relación con la diabetes tipo 2 en 1 nanosegundo,
¿Cuánto tiempo se necesitaría para evaluar todas las combinaciones?
¿Qué sugerencia haría desde el punto de vista computacional?
Contextualice su respuesta para el problema
Para calcular cuantas combinaciones de 22 genes podrian formarse en esta evaluación usaremos la formula del corficiente binomial: \[ C(n,k) = n! / (k!*(n−k)!) \] donde \(n\) es el número total de elemento y \(k\) es el tamaño del conjunto.
Para efecto del apartado a, usaremos la sentencia choose() de R
n = 25000
k = 22
PBinomial <- choose(n,k)
print(PBinomial)## [1] 5.010713e+75
Referente al tiempo que demoraría el algoritmo en evaluar todas las combinaciones generadas deberíamos multiplicar el resultado anterior, por un nanosegundo para tener el tiempo concreto, lo que demuestra que el tiempo seria muy extenso.
Desde el punto de vista computacional, se podría sugerir evaluar los conjuntos de combinaciones encontrados con algoritmos más eficientes que los de fuerza bruta. Sin embargo, estos algoritmos implican probar todas las combinaciones que es lo que necesitamos, por lo tanto lo mejor sería, recurrir a algunas técnicas para reducir el tiempo de evaluación como:
El problema busca cuantificar el tiempo necesario para evaluar todas las combinaciones posibles de 22 genes para identificar todos los genes que se relacionan con la diabetes tipo 2. Usando como variable de entrada el genoma humano de 25.000 genes y el algoritmo de búsqueda que evalúa cada combinación en un nanosegundo. Utilizamos la fórmula del coeficiente binomial para calcular el número de combinaciones posibles. La estimación del tiempo que se emplearía en esta evaluación del algoritmo de busqueda exaustiva implica una tarea muy compleja.
En el campo de la ingeniería aeroespacial, se sabe que los materiales utilizados en las alas de los aviones pueden sufrir de fatiga y eventualmente fallar. Se ha determinado que la vida útil de los materiales de las alas es de 20,000 horas de vuelo. Bajo este contexto:
¿Cuál es la probabilidad de que las alas de un avión fallen antes de las 5,000 horas de vuelo?
¿Cuál es la probabilidad de que las alas de un avión fallen antes de las 20,000 horas de vuelo?
¿Cuál es la probabilidad de que las alas de un avión fallen después de las 30,000 horas de vuelo?
Indique y grafique la distribución asociada.
Para encontrar la probabilidad de que las alas de un avión fallen a “t” horas de vuelo asumiremos una distribución exponencial ya que esta se caracteriza por tener una tasa de fallos constantes en el tiempo. Y, debido a la información que se proporciona de la vida útil de los materiales utilizados.
La probabilidad de que las alas de un avión fallen antes de las 5.000 horas de vuelo es:
#P(x < 5000)
#tasa de fallos
lambda = 20000
#tiempo en horas
t1 = 5000
prob1 = round(pexp(t1, rate=1/lambda), 3)
print(prob1)## [1] 0.221
La probabilidad de que las alas de un avión fallen antes de las 20.000 horas de vuelo es:
#P(x < 20000)
#tasa de fallos
lambda = 20000
#tiempo en horas
t2 = 20000
prob2 = round(pexp(t2, rate=1/lambda), 3)
print(prob2)## [1] 0.632
La probabilidad de que las alas de un avión fallen después de las 30.000 horas de vuelo es:
#P(x > 30000)
#tasa de fallos
lambda = 20000
#tiempo en horas
t3 = 30000
prob3 = round(1 - pexp(t3, rate=1/lambda), 3)
print(prob3)## [1] 0.223
Para realizar la gráfica de la distribución exponencial, utilazaremos la libreria ggplot2.
#Generando rango de datos
rango = seq(-1000,35000)
lambda=20000
distribucion = dexp(rango, rate = 1/lambda)
datos=data.frame(rango,distribucion)
#Gráfico
library("ggplot2")
grafico = ggplot(data=datos,aes(x=rango,y=distribucion))
grafico = grafico + geom_line(stat="identity", color="lightblue3", size = 2)
grafico = grafico + theme_bw() + ggtitle("Distribución exponencial de probabilidades ")
grafico = grafico + xlab("Horas de vuelo") + ylab("Probabilidad")
plot(grafico)Se sabe que el tiempo que tarda un empleado en resolver un problema de soporte técnico en una empresa sigue una distribución normal de media 15 minutos y desviación estándar de 5 minutos. Con base en esta información:
¿Cuál es la probabilidad de que un empleado resuelva un problema en exactamente 10 minutos? Argumente su respuesta.
Si seleccionamos aleatoriamente a 50 empleados, ¿cuál es la probabilidad de que el tiempo promedio que tardan en resolver un problema de soporte técnico sea menor a 12 minutos?
Indique y grafique las distribuciones asociadas.
Para el desarrollo de la parte a, consideraremos una distribucion normal.
#Datos P(x = 10)
media = 15
desviacion =5
x1 = 10
prob_normal = round(dnorm(x1, mean = media, sd = desviacion), 4)
print(prob_normal)## [1] 0.0484
El cálculo de la probabilidad de que un empleado resuelva un problema en exactamnente 10 minutos es aproximadamente un 0,0484 lo que puede interpretarse como un 4,84%
Para el desarrollo de la parte b, usaremos una distribución de la media muestral de la distribución normal.
#Datos P(x < 12)
m = 15
de = 5
n = 50
x = 12
de_media = (de/sqrt(n))
z = (x-m)/de_media
p = pnorm(z,mean=0,sd=1,lower.tail=TRUE)
cat("La media muestral sigue una distrbución N(",m,",",de_media,")\n") ## La media muestral sigue una distrbución N( 15 , 0.7071068 )
cat("Z","=",z,"\n")## Z = -4.242641
cat("La probabilidad de que la media muestral sea menor que",x,"es",p,"\n") ## La probabilidad de que la media muestral sea menor que 12 es 1.104525e-05
La gráfica de una distribución normal es de la forma:
#Creación de la distribución
x=seq(0,30,by=0.1)
y=dnorm(seq(0,30,by=0.1),15,5)
z=y
z[which(x>10)]=0
datos=data.frame(x,y,z)
#Gráfico
library("ggplot2")
p = ggplot(data.frame(x = x, y = y)) + aes(x = x, y = y)
p = p+geom_line(color="darkblue") + labs(x = "Dist. normal", y = "Densidad")
p = p + theme_classic()
p = p + geom_area(data = datos, aes(x=x,y=z), fill="lightblue", alpha=0.4)
p = p + scale_x_continuous(breaks = c(0,15,10,30))
plot(p)La gráfica de una distribución de la media muestral de la distribución normal:
#Creación de la distribución
de = 5
n = 50
de_media = (de/sqrt(n))
x=seq(0,30,by=0.1)
y=dnorm(seq(0,30,by=0.1),15,de_media)
z=y
z[which(x>12)]=0
datos=data.frame(x,y,z)
#Gráfico
library("ggplot2")
p = ggplot(data.frame(x = x, y = y)) + aes(x = x, y = y)
p = p+geom_line(color="darkblue") + labs(x = "Media muestral de la Dist. normal", y = "Densidad")
p = p + theme_classic()
p = p + geom_area(data = datos, aes(x=x,y=z), fill="lightblue", alpha=0.4)
p = p + scale_x_continuous(breaks = c(0,15,12,30))
plot(p)Villalobos Cid, M., Villanueva Ilufi, M., Giglio Gutierréz, J., (2023). Estadística Computacional. Uvirtual. https://uvirtual.usach.cl/moodle/course/view.php?id=24173§ion=4
Estadigrafo., (17 de marzo de 2022). Estadística con R. https://www.youtube.com/watch?v=s595I0BQCSs
Paredes Inilupu, Daniel (26-06-2020). Data Science con R. Bookdown.org. https://bookdown.org/dparedesi/data-science-con-r/probabilidades-discretas.html#combinaciones-y-permutaciones