Ejercicio 1:

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,
library(gmp)
## 
## Attaching package: 'gmp'
## The following objects are masked from 'package:base':
## 
##     %*%, apply, crossprod, matrix, tcrossprod
# Utilizando combinatoria, donde n= total de elementos, r= subconjunto.
#Para realizar el calculo de esta combinatoria se utiliza la función chooseZ, esta funcion calcula el coeficiente binomial para numeros enteros grandes como es el caso de este ejercicio.
#Número total de elementos (la función as.bigz transforma numeros enteros en objetos del tipo bigz, que corresponde a numeros enteros grandes):
n <- as.bigz(25000)
#Número de elementos que se seleccionan:
r <- as.bigz(25)

#La combinatoria se calcula como:

combinacion <- chooseZ(n, r)

print("La combinación total de 22 genes en el genoma indicado corresponde a :")
## [1] "La combinación total de 22 genes en el genoma indicado corresponde a :"
print(combinacion)
## Big Integer ('bigz') :
## [1] 5657718051784389521567636264368794681380854567070839366115277227933437504270171876000

• ¿Cuánto tiempo se necesitaría para evaluar todas las combinaciones?

#Para un cálculo correcto, todos los valores numéricos se transforman a bigz.

milisg_seg <- as.bigz(1000000000)
segundos = combinacion / milisg_seg
seg_min <- as.bigz(60)
minutos= segundos / seg_min
min_hr <- as.bigz(60)
horas = minutos /min_hr
hr_dias <- as.bigz(24)
dias = horas /hr_dias
dias_años <- as.bigz(365)
años = dias /dias_años
print("La cantidad de años que demoraría el calculo corresponde a un número inmenso, este número es :")
## [1] "La cantidad de años que demoraría el calculo corresponde a un número inmenso, este número es :"
print(años)
## Big Rational ('bigq') :
## [1] 1414429512946097380391909066092198670345213641767709841528819306983359376067542969/7884000000000

• ¿Qué sugerencia haría desde el punto de vista computacional?

Dada la cantidad de tiempo resultante para el análisis de todos los casos de combinaciones de 22 genes, el cual es un número extremadamente grande, la sugerencia sería trabajar con rangos de genes donde exista mayor probabilidad de encontrar los conjuntos relacionados a la enfermedad estudiada.

• Contextualice su respuesta para el problema.

Ejercicio 2:

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?

# P(x<5000), 
lambda=20000
respuesta1=pexp(5000,1/lambda) 
cat("La probabilidad de que las alas de un avión fallen antes de las 5000 horas de vuelo es",respuesta1)
## La probabilidad de que las alas de un avión fallen antes de las 5000 horas de vuelo es 0.2211992

• ¿Cuál es la probabilidad de que las alas de un avión fallen antes de las 20,000 horas de vuelo?

# P(x<20000)
lamda=20000
respuesta2=pexp(20000,1/lambda)
cat("La probabilidad de que las alas de un avión fallen antes de las 20000 horas de vuelo es",respuesta2)
## La probabilidad de que las alas de un avión fallen antes de las 20000 horas de vuelo es 0.6321206

• ¿Cuál es la probabilidad de que las alas de un avión fallen después de las 30,000 horas de vuelo?

# P(x>30000)
lamda=20000
respuesta3= 1 - pexp(30000,1/lambda)
cat("La probabilidad de que las alas de un avión fallen después de las 30000 horas de vuelo es",respuesta3)
## La probabilidad de que las alas de un avión fallen después de las 30000 horas de vuelo es 0.2231302

• Indique y grafique la distribución asociada.

print("La distribución utilizada en este ejercicio corresponde a la distribución exponencial, ya que la variable aleatoria X corresponde al tiempo en que ocurre un evento (en este caso, la falla de las alas")
## [1] "La distribución utilizada en este ejercicio corresponde a la distribución exponencial, ya que la variable aleatoria X corresponde al tiempo en que ocurre un evento (en este caso, la falla de las alas"
#Datos
rango = seq(-1000,40000) 
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",linewidth = 2) 
grafico = grafico + theme_bw() + ggtitle("Distribución de probabilidades") 
grafico = grafico + xlab("Rango") + ylab("Probabilidad")
plot(grafico)

Ejercicio 3:

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.

# P(x=10)
respuesta21= dnorm(10, mean = 15, sd = 5) 

cat("La probabilidad de que un empleado resuleva un problema en exactamente 10 minutos es ",respuesta21,"Según el calculo realizado por el software, el cual intenta discretizar la función continua asignando rangos pequeños para acercar al valor solicitado, esto quiere decir, que en la realidad el valor de la probabilidad de una variable aleatoria exacta en una distribución continua tiene como valor cero, ya que no es posible calcular de forma exacta este número.")
## La probabilidad de que un empleado resuleva un problema en exactamente 10 minutos es  0.04839414 Según el calculo realizado por el software, el cual intenta discretizar la función continua asignando rangos pequeños para acercar al valor solicitado, esto quiere decir, que en la realidad el valor de la probabilidad de una variable aleatoria exacta en una distribución continua tiene como valor cero, ya que no es posible calcular de forma exacta este número.

• 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?

#Calcular la probabilidad de que el tiempo de resolucion sea menor a 12 minutos
#P(x<12)
proba= pnorm(12, mean = 15, sd = 5) 
#Utilizando la distribución binomial se busca la probabilidad de que 50 empleados tengan un tiempo promedio menor de 12 minutos para resolver problemas en un soporte tecnico.
respuesta22 = dbinom(50,50,proba)

cat("La probabilidad de que 50 empleados tarden en promedio menos de 12 minutos en resolver un problema técnico es: ", respuesta22)
## La probabilidad de que 50 empleados tarden en promedio menos de 12 minutos en resolver un problema técnico es:  8.083113e-29

• Indique y grafique las distribuciones asociadas.

print("La dstribución utilizada en la primera parte de este ejercicio corresponde a la distribución normal.")
## [1] "La dstribución utilizada en la primera parte de este ejercicio corresponde a la distribución normal."
#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>60)]=0 
datos=data.frame(x,y)

#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()

plot(p)

print("La dstribución utilizada en la segunda parte de este ejercicio corresponde a la distribución binomial, ya que, la variable corresponde al numero de exitos (numero de empleados que demoran menos de 12 minutos), en una cantidad de ensayos (50 empleados).")
## [1] "La dstribución utilizada en la segunda parte de este ejercicio corresponde a la distribución binomial, ya que, la variable corresponde al numero de exitos (numero de empleados que demoran menos de 12 minutos), en una cantidad de ensayos (50 empleados)."
#Creación de la distribución 
rango = seq(0,30)
distribucion = dbinom(rango, size = 50,prob = proba)
datos=data.frame(rango,distribucion)


#Gráfico
library("ggplot2")
grafico = ggplot(data=datos,aes(x=rango,y=distribucion))
grafico = grafico + geom_bar(stat="identity",fill="lightblue3")
grafico = grafico + theme_bw() + ggtitle("Distribución de probabilidades") 
grafico = grafico + xlab("Rango") + ylab("Probabilidad")
plot(grafico)

Referencias:

  • R studio. 2016. Markdown Basics. https://rmarkdown.rstudio.com/authoring_basics.html

  • Villalobos, M. 2023. Introducción al uso de R. Departamento de Ingeniería Informática. Universidad de Santiago de Chile.

  • Villalobos, M. 2023. Variables aleatorias continuas y distribuciones de probabilidad (I, II y III). Departamento de Ingeniería Informática. Universidad de Santiago de Chile.