Un investigador en salud pública desea estudiar los factores asociados a los niveles de glucosa en ayunas en adultos. Para ello, se recopilaron datos de 20 personas adultas, registrando:
A partir de la información suministrada, realice lo siguiente en R:
t_glucosa <- data.frame(
ID = 1:20,
Glucosa_mg_dL = c(98, 115, 102, 130, 92, 108, 120, 89, 99, 110,
85, 122, 105, 94, 101, 117, 109, 87, 96, 112),
Edad_anos = c(34, 56, 45, 60, 29, 50, 53, 27, 38, 49,
25, 58, 42, 30, 41, 54, 47, 26, 33, 51),
IMC_kg_m2 = c(22.1, 29.4, 24.8, 31.0, 21.5, 26.2, 28.1, 20.0, 23.5, 26.9,
19.5, 30.0, 25.3, 22.0, 24.5, 28.9, 26.1, 20.3, 22.7, 27.5),
Ejercicio_min_dia = c(45, 20, 35, 15, 60, 30, 25, 70, 40, 30,
80, 20, 35, 55, 40, 25, 30, 75, 50, 28)
)
# Mostrar el data frame
t_glucosa# Eliminar columna ID
tabla_glucosa <- t_glucosa[, -1]
pairs(tabla_glucosa,
pch = 19, # Pch symbol
col = 4, # Color
main = "Diagrama de dispersión", # Title
gap = 0, # Subplots distance
row1attop = FALSE, # Diagonal direction
labels = colnames(tabla_glucosa), # Labels
cex.labels = 0.8, # Size of diagonal texts
font.labels = 1) # color de los puntos## Media de los datos de Glucosa_mg_dL: 104.55
## Media de los datos de Edad_anos: 42.4
## Media de los datos de IMC_kg_m2: 25.015
## Media de los datos de Ejercicio_min_dia: 40.4
vector_de_medias <- c(mean(tabla_glucosa$Glucosa_mg_dL),mean(tabla_glucosa$Edad_anos),mean(tabla_glucosa$IMC_kg_m2),mean(tabla_glucosa$Ejercicio_min_dia))
cat("vector de medias: ", vector_de_medias, "\n")## vector de medias: 104.55 42.4 25.015 40.4
matriz_cov <- cov(tabla_glucosa)
# Convertir la matriz en un data frame
df_cov <- as.data.frame(matriz_cov)
df_covmatriz_cor <- cor(tabla_glucosa)
# Convertir la matriz en un data frame
df_cor <- as.data.frame(matriz_cor)
df_corExiste una correlación positiva muy alta (r = 0.97), lo que significa que a medida que aumenta la edad de las personas, también tienden a aumentar sus niveles de glucosa en sangre. Esto se refleja en el gráfico de dispersión como una clara tendencia ascendente, casi lineal.
La relación entre glucosa e IMC también es muy fuerte y positiva (r = 0.98). Esto indica que las personas con mayor peso en relación a su altura (IMC alto) suelen presentar niveles más elevados de glucosa. En el gráfico, esta asociación aparece como una nube de puntos que sigue una pendiente positiva marcada.
La correlación entre glucosa y minutos diarios de ejercicio es fuerte y negativa (r = -0.94). Esto quiere decir que un mayor tiempo dedicado a la actividad física se asocia con niveles más bajos de glucosa. En el gráfico, esto se traduce en una pendiente descendente, es decir, mientras más ejercicio se realiza, menor es el nivel de glucosa.
Por lo tanto, promover la actividad física y el control del peso corporal en la población puede ser una estrategia eficaz para reducir riesgos asociados con niveles elevados de glucosa.
Supongamos que estás construyendo una red neuronal y quieres probar diferentes combinaciones de tres hiperparámetros: número de capas, número de neuronas por capa, función de activación y optimizador.
¿Cuántas redes neuronales diferentes puedes construir con estas opciones?
total_combinaciones_hiper_parametros <- 3*3*3*3
cat("El total de redes nueronales diferentes que se pueden construir con estas opciones es: ", total_combinaciones_hiper_parametros)## El total de redes nueronales diferentes que se pueden construir con estas opciones es: 81
Un investigador desea experimentar con cinco técnicas de regularización y mejora del entrenamiento en redes neuronales: Batch Normalization, Dropout, L2 Regularization, Data Augmentation, Early Stopping. El orden en que se aplican las técnicas afecta el desempeño del modelo.
¿De cuántas formas se pueden aplicar todas las técnicas?
permutaciones<-function(n,r){
factorial(n)/factorial(n-r)
}
cat("El total de técnicas de regulación que se pueden aplicar con las tecnicas son: ", permutaciones(5,5))## El total de técnicas de regulación que se pueden aplicar con las tecnicas son: 120
¿De cuántas formas diferentes se pueden aplicar las cinco técnicas si se aplican todas, pero con la restricción de que Batch Normalization no puede ir después de Dropout?
cat("El total de formas diferentes que se pueden aplicar las cinco técnicas con la restricción de que Batch Normalization no puede ir después de Dropout es:", choose(5, 2) * factorial(3))## El total de formas diferentes que se pueden aplicar las cinco técnicas con la restricción de que Batch Normalization no puede ir después de Dropout es: 60
Un investigador tiene una variable dependiente Y y un conjunto de p=5 variables independientes: X1, X2, X3,X4, X5. Desea explorar todos los modelos posibles de regresión lineal, considerando todas las combinaciones posibles de las variables independientes, con el objetivo de calcular el AIC de cada modelo y seleccionar el mejor.
¿Cuántos modelos diferentes pueden construirse si se consideran todos los subconjuntos posibles de las variables independientes, desde el modelo con una sola variable hasta el modelo con las cinco variables?
cat("El número total de modelos que se puede construir si se consideran todos los subconjuntos posibles es: ", choose(5, 1)+ choose(5, 2)+ choose(5, 3)+ choose(5, 4)+ choose(5, 5)+ choose(5, 0))## El número total de modelos que se puede construir si se consideran todos los subconjuntos posibles es: 32
¿Cuál es la fórmula general para el número de modelos posibles con p variables?
Si se desea evaluar todo los posibles modelos, incluyendo el modelo nulo entonces
\[ C\binom{5}{0} + C \binom{5}{1} +C\binom{5}{2} +C \binom{5}{3}+C\binom{5}{4}+C\binom{5}{5} = 1+5+10+10+5+1 = 32 \] \[TOTAL = 2^5 = 32\]
LA FORMULA GENERAL SERIA: \[2^P\]
Si se desea comparar modelos con almenos una variable predictora , no se cuenta el nulo , por lo tanto, la formula general sería:
FORMULA GENERAL = \[ 2^P - 1 \]
Supón que tienes una red neuronal para clasificar imágenes en 4 clases: perros, gatos, aves y peces. En un lote de entrenamiento de 10 imágenes, se sabe que: 3 imágenes son de perros, 2 son de gatos, 4 son de aves y 1 es de peces ¿De cuántas maneras diferentes podrían distribuirse estas 10 imágenes entre las 4 clases, respetando esa cantidad exacta por clase?
maneras_diferentes= factorial(10) / (factorial(3) * factorial(2) * factorial(4) * factorial(1))
cat("Las maneas en que podrían distribuirse estas 10 imagenes entre las 4 clases es: ", maneras_diferentes)## Las maneas en que podrían distribuirse estas 10 imagenes entre las 4 clases es: 12600
¿Cuál es la probabilidad de que una mano de póker de 5 cartas contenga exactamente tres reyes o cuatro ases?
espacio_muestral="Todas las posibles manos de 5 cartas que se pueden extraer de una baraja de 52 cartas sin importar el orden."
evento_A = "La mano contiene exactamente tres Reyes"
evento_B = "La mano contiene exactamente cuatro Ases"
espacio_muestral = choose(52,5)
evento_A = choose(4,3)*choose(48,2)
evento_B= choose(4,4)*choose(48,1)
probabilidad_A_u_B = (evento_A+evento_B)/espacio_muestral
cat("La probabilidad de que una mano de 5 cartas contenga exactamente tres reyes o cuatro ases es aproximadamente: ", probabilidad_A_u_B, " o ", round(probabilidad_A_u_B*100, 4),"%")## La probabilidad de que una mano de 5 cartas contenga exactamente tres reyes o cuatro ases es aproximadamente: 0.001754548 o 0.1755 %
espacio_muestral="Todas las posibles manos de 5 cartas que se pueden extraer de una baraja de 52 cartas sin importar el orden."
evento_A = "La mano contiene exactamente tres Reyes"
evento_B = "La mano contiene exactamente dos Ases"
nota = "hay intersección ya que en el evento A es posible que tenga dos ases y en el evento b es posible que tenga 3 reyes"
espacio_muestral = choose(52,5)
evento_A = choose(4,3)*choose(48,2)
evento_B= choose(4,2)*choose(48,3)
probabilidad_A_y_B = choose(4,3)*choose(4,2)
cat("intersección AyB :", probabilidad_A_y_B, "\n")## intersección AyB : 24
probabilidad_A_u_B = ((evento_A+evento_B)-probabilidad_A_y_B)/espacio_muestral
cat("probabilidad AuB :", probabilidad_A_u_B, "\n")## probabilidad AuB : 0.04165666
## [1] 24
\[P(A \cap B) = 24\] \[P(A\cup B) = 0.0416659\]
espacio_muestral="Todas las posibles manos de 5 cartas que se pueden extraer de una baraja de 52 cartas sin importar el orden."
evento_A = "La mano contiene tres Reyes y dos Ases"
espacio_muestral = choose(52,5)
evento_A = choose(4,3)*choose(4,2)
probabilidad_A = (evento_A)/espacio_muestral
cat("Probabilidad A :", probabilidad_A, "\n")## Probabilidad A : 9.234463e-06
espacio_muestral="Todas las posibles manos de 5 cartas que se pueden extraer de una baraja de 52 cartas sin importar el orden."
evento_A = "Al menos una carta As en la mano de 5 cartas"
evento_A_complemento = "Ninguna carta es As"
espacio_muestral = choose(52,5)
evento_A_complemento = choose(48,5)
probabilidad_A_complemento = (evento_A_complemento)/espacio_muestral
probabilidad_A = 1-probabilidad_A_complemento
cat("probabilidad A :", probabilidad_A, "\n")## probabilidad A : 0.341158
#Creación de la función hipergeometríca
hipergeometrica = function(N,n,r,x){
choose(r,x)*choose(N-r,n-x)/choose(N,n)
}
N=52 # tamano de la problacion
n=5 # tamano de la muestra
r=4 # numero de individus a prueba
x = 0 # valor que toma la variable
1-hipergeometrica(N,n,r,x)## [1] 0.341158
probabilidad_cara_1="A"
probabilidad_cara_2="A"
probabilidad_cara_3="A"
probabilidad_cara_4="2A"
probabilidad_cara_5="2A"
probabilidad_cara_6="3A"
# como las sumas de las probabilidades deben ser igual a uno entonces
probabilidad_total = paste( probabilidad_cara_1, probabilidad_cara_2, probabilidad_cara_3, probabilidad_cara_4, probabilidad_cara_5, probabilidad_cara_6,
sep = " + "
)
cat("Probabilidad total: 1 = ", probabilidad_total, "\n")## Probabilidad total: 1 = A + A + A + 2A + 2A + 3A
## [1] "si se despeja A entonces: -> A=1/10 "
A=1/10
espacio_muestral="Del dado no balanceado las 6 caras del mismo"
evento_A="Obtener un numero par al tirar el dado"
probabilidad_A = A + 2*A + 3*A
cat("La probabilidad de que el dado tome un numro par es de:", probabilidad_A, "\n")## La probabilidad de que el dado tome un numro par es de: 0.6
Una nevera contiene 4 frascos con muestras saludables y 3 frascos con muestras contaminadas. Otra nevera contiene 3 frascos saludables y 5 contaminados. Un laboratorista toma al azar un frasco de la primera nevera y lo traslada sin inspeccionarloa la segunda nevera. Luego, selecciona al azar un frasco de la segunda nevera. ¿Cuál es la probabilidad de que el frasco seleccionado de la segunda nevera esté contaminado?
espacio_muestral_nevera_1= 4+3
cat("probabilidad_frasco_saludable_nevera_1 : ",probabilidad_frasco_saludable_nevera_1= 4/7, "\n")## probabilidad_frasco_saludable_nevera_1 : 0.5714286
cat("probabilidad_frasco_contaminado_nevera_1 : ",probabilidad_frasco_contaminado_nevera_1= 3/7, "\n")## probabilidad_frasco_contaminado_nevera_1 : 0.4285714
## [1] "despues del evento 1 en el cual se saca 1 frasco de la nevera 1 y se lleva a la nevera 2"
espacio_muestral_nevera_2= (3+5) + 1
cat("probabilidad_frasco_saludable_nevera_2 : ",probabilidad_frasco_saludable_nevera_2= (3+1)/9, "\n")## probabilidad_frasco_saludable_nevera_2 : 0.4444444
cat("probabilidad_frasco_contaminado_nevera_2 : ",probabilidad_frasco_contaminado_nevera_2= (5+1)/9, "\n")## probabilidad_frasco_contaminado_nevera_2 : 0.6666667
## Diagrama de Bayes - Problema de las neveras
## Installing package into 'C:/Users/Juan PC/AppData/Local/R/win-library/4.5'
## (as 'lib' is unspecified)
## package 'DiagrammeR' successfully unpacked and MD5 sums checked
##
## The downloaded binary packages are in
## C:\Users\Juan PC\AppData\Local\Temp\RtmpyG8kRG\downloaded_packages
## Warning: package 'DiagrammeR' was built under R version 4.5.1
diagram_code <- '
digraph decision_tree {
graph [layout = dot]
node [shape=box, style=filled, fontname="Arial"]
# Nodos de primer nivel
A [label="Traslada frasco", fillcolor=lightgray]
B1 [label="Saludable\\nP = 4/7", fillcolor=lightblue]
B2 [label="Contaminado\\nP = 3/7", fillcolor=lightpink]
# Nodos segundo nivel
C1 [label="Selecciona frasco\\nContaminado\\nP = 5/9", fillcolor=lightyellow]
C2 [label="Selecciona frasco\\nSaludable\\nP = 4/9", fillcolor=green]
D1 [label="Selecciona frasco\\nContaminado\\nP = 6/9", fillcolor=lightyellow]
D2 [label="Selecciona frasco\\nSaludable\\nP = 3/9", fillcolor=green]
# Conexiones
A -> B1
A -> B2
B1 -> C1
B1 -> C2
B2 -> D1
B2 -> D2
}
'
grViz(diagram_code)print("Probabilidad de que el frasco seleccionado de la nevera 2 esté contaminado, dado que se trasladó un frasco al azar desde la nevera 1 y se agregó a la nevera 2")## [1] "Probabilidad de que el frasco seleccionado de la nevera 2 esté contaminado, dado que se trasladó un frasco al azar desde la nevera 1 y se agregó a la nevera 2"
cat("𝑃(frasco contaminado en nevera 2 ∣ frasco trasladado al azar desde nevera 1) = ", ((4/7)*(5/9))+((3/7)*(6/9)), "\n")## 𝑃(frasco contaminado en nevera 2 ∣ frasco trasladado al azar desde nevera 1) = 0.6031746
Un sistema de clasificación de correos electrónicos evalúa si un correo es spam (S) o no es spam (no S). Inicialmente, la probabilidad de que un correo sea spam es P(S)=0.2. A medida que se evalúan las palabras del correo, el sistema ajusta esta probabilidad.
Primera palabra: el correo tiene la palabra ganar (G).
¿Cuál es la probabilidad de qué el correo sea spam después de considerar ambas palabras?
evento_A = "Evento A = El correo resulta ser spam, después de identificar que contiene las palabras ganar y oferta"
evento_A## [1] "Evento A = El correo resulta ser spam, después de identificar que contiene las palabras ganar y oferta"
## identificamos que es un problema de bayes
## P(S/G∩O)= (P(S)*P(G∩O/S))/(P(G∩O))
## * P(S) = 0.2
## P(G∩O/S) -> asumiendo independencia de los eventos ganar y oferta
## P(G∩O/S) = P(G/S)*P(O/S)
## P(G/S) = 0.7
## P(O/S) = 0.6
## P(G∩O/S) = 0.6*0.7
## * P(G∩O/S) = 0.42
cat("P(G∩O) -> Como se nos pide calcular la probabilidad de que ocurran ambos eventos donde el correo contenga las palabras ganar y oferta sin especificar si es spam o no (Ganar intersección oferta), debemos tener en cuenta tanto los correos spam como los no spam.Por ello, aplicamos el Teorema de la Probabilidad Total, considerando ambos escenarios." ,"\n")## P(G∩O) -> Como se nos pide calcular la probabilidad de que ocurran ambos eventos donde el correo contenga las palabras ganar y oferta sin especificar si es spam o no (Ganar intersección oferta), debemos tener en cuenta tanto los correos spam como los no spam.Por ello, aplicamos el Teorema de la Probabilidad Total, considerando ambos escenarios.
## P(G∩O) = P(G∩O/SPAM)*P(SPAM)+P(G∩O/No SPAM)*P(No SPAM)
## P(G∩O/SPAM) Y P(G∩O/No SPAM) -> asumiendo independencia de los eventos ganar y oferta
## P(G∩O) = P(G/SPAM)*P(O/SPAM)*P(SPAM)+P(G/No SPAM)*P(O/No SPAM)*P(No SPAM)
## P(G∩O) = 0.7*0.6*0.2+0.1*0.2*0.8
## *P(G∩O) = 0.1
## FINALMENTE
## P(S/G∩O)= (P(S)*P(G∩O/S))/(P(G∩O))
## P(S/G∩O)= 0.84
## Creación del diagrama de desición
grViz("
digraph tree {
node [shape=box, style=filled, fillcolor=lightblue]
# Nodos principales
A [label='Inicio']
B [label='SPAM (0.2)']
C [label='NO SPAM (0.8)']
# Rama SPAM → GANAR / NO GANAR
D [label='GANAR (0.7)']
E [label='NO GANAR (0.3)']
# Rama GANAR → OFERTA / NO OFERTA
F [label='OFERTA (0.6)\nP1 = 0.084']
G [label='NO OFERTA (0.4)\nP2 = 0.056']
# Rama NO GANAR → OFERTA / NO OFERTA
H [label='OFERTA (0.6)\nP3 = 0.036']
I [label='NO OFERTA (0.4)\nP4 = 0.024']
# Rama NO SPAM → GANAR / NO GANAR
J [label='GANAR (0.1)']
K [label='NO GANAR (0.9)']
# GANAR → OFERTA / NO OFERTA
L [label='OFERTA (0.2)\nP5 = 0.016']
M [label='NO OFERTA (0.8)\nP6 = 0.064']
# NO GANAR → OFERTA / NO OFERTA
N [label='OFERTA (0.2)\nP7 = 0.144']
O [label='NO OFERTA (0.8)\nP8 = 0.576']
# Conexiones
A -> B
A -> C
B -> D
B -> E
D -> F
D -> G
E -> H
E -> I
C -> J
C -> K
J -> L
J -> M
K -> N
K -> O
}
")cat("Sumamos las probabilidades debe dar 1 -> 0.084+0.056+0.036+0.024+0.016+0.064+0.144+0.576 = ",0.084+0.056+0.036+0.024+0.016+0.064+0.144+0.576,"\n")## Sumamos las probabilidades debe dar 1 -> 0.084+0.056+0.036+0.024+0.016+0.064+0.144+0.576 = 1
## P(S/G∩O)= (P(S)*P(G∩O/S))/(P(G∩O))
## P(S/G∩O)= (P1)/(P1+P5)
## P(S/G∩O) = 0.84