UNIVERSIDAD NACIONAL AGRARIA LA MOLINA
FACULTAD DE
ECONOMÍA Y PLANIFICACIÓN
DEPARTAMENTO ACADÉMICO DE
ESTADÍSTICA INFORMÁTICA
Práctica Calificada 1
CURSO: Técnicas
Multivariadas
DOCENTE: Miranda Villagomez Clodomiro
Fernando
ALUMNOS:
Colca Balbin, Josue Jeremías -
20220761
Jesús Mamani, Angelo Miguel - 20220767
Landa Cordova,
Valeria Estefany - 20220768
Ramos Orue, Selene Milagros -
20220777
Sanchez Perez, Omar Zenon - 20211938
Sandoval Hurtado,
Nagiely - 20220780
2025
El presente análisis tiene como objetivo explorar la relación entre las carreras universitarias elegidas por los estudiantes y las razones que motivaron su elección.
Se ha recopilado información de estudiantes que eligieron una de las siguientes carreras: Medicina, Ingeniería, Derecho y Psicología. Para cada carrera, se han registrado las frecuencias asociadas a distintos motivos de elección, tales como vocación, prestigio, empleabilidad, ingresos potenciales e influencia familiar.
Variable | Tipo | Descripción |
---|---|---|
Carrera | Categórica nominal | Representa la carrera universitaria elegida por el estudiante. Las categorías son: Medicina, Ingeniería, Derecho y Psicología. |
Razon | Categórica nominal | Motivo por el cual el estudiante eligió su carrera. Las categorías son: Vocación, Prestigio, Empleabilidad, Ingresos potenciales e Influencia familiar. |
Frecuencia | Cuantitativa discreta | Número de estudiantes que eligieron una combinación específica de carrera y razón. Esta variable representa la cantidad de observaciones por celda en la tabla cruzada. |
Analizar la relación entre nivel de ingreso y percepción de inflación mediante un análisis de correspondencia simple (ACS).
## Rows: 25
## Columns: 3
## $ Carrera <chr> "Medicina", "Medicina", "Medicina", "Medicina", "Medicina",…
## $ Razon <chr> "Vocación", "Prestigio", "Empleabilidad", "Ingresos potenci…
## $ Frecuencia <dbl> 35, 40, 25, 30, 20, 20, 25, 40, 35, 15, 15, 30, 20, 25, 30,…
## Rows: 25
## Columns: 3
## $ Carrera <fct> Medicina, Medicina, Medicina, Medicina, Medicina, Ingenierí…
## $ Razon <fct> Vocación, Prestigio, Empleabilidad, Ingresos potenciales, I…
## $ Frecuencia <dbl> 35, 40, 25, 30, 20, 20, 25, 40, 35, 15, 15, 30, 20, 25, 30,…
## Carrera
## Razon Administración Derecho Ingeniería Medicina Psicología
## Empleabilidad 35 20 40 25 20
## Influencia familiar 20 30 15 20 25
## Ingresos potenciales 40 25 35 30 15
## Prestigio 20 30 25 40 15
## Vocación 10 15 20 35 45
## Sum 125 120 135 150 120
## Carrera
## Razon Sum
## Empleabilidad 140
## Influencia familiar 110
## Ingresos potenciales 145
## Prestigio 130
## Vocación 125
## Sum 650
datos <- data.frame(
Carrera = rep(c("Psicologia", "Medicina", "Ingenieria", "Derecho", "Administracion"), each = 5),
Razon = rep(c("Vocacion", "Prestigio", "Empleabilidad+", "Ingresos", "Influencia"), times = 5),
Frecuencia = c(45,15,20,15,25,35,40,25,30,20,20,25,40,35,15,15,30,20,25,30,10,20,35,40,20)
)
datos.acs <- xtabs(Frecuencia ~ Carrera + Razon, data = datos)
dt <- datos.acs
dt
## Razon
## Carrera Empleabilidad+ Influencia Ingresos Prestigio Vocacion
## Administracion 35 20 40 20 10
## Derecho 20 30 25 30 15
## Ingenieria 40 15 35 25 20
## Medicina 25 20 30 40 35
## Psicologia 20 25 15 15 45
## 'xtabs' num [1:5, 1:5] 35 20 40 25 20 20 30 15 20 25 ...
## - attr(*, "dimnames")=List of 2
## ..$ Carrera: chr [1:5] "Administracion" "Derecho" "Ingenieria" "Medicina" ...
## ..$ Razon : chr [1:5] "Empleabilidad+" "Influencia" "Ingresos" "Prestigio" ...
## - attr(*, "call")= language xtabs(formula = Frecuencia ~ Carrera + Razon, data = datos)
balloonplot(t(dt),
dotcolor="green",
main ="Razones que influyen y Carrera universitaria",
xlab ="Carrera",
ylab="Razón",
label = T, cum.margins=F,
label.lines=F, show.margins = T)
## Razon
## Carrera Empleabilidad+ Influencia Ingresos Prestigio Vocacion
## Administracion 0.054 0.031 0.062 0.031 0.015
## Derecho 0.031 0.046 0.038 0.046 0.023
## Ingenieria 0.062 0.023 0.054 0.038 0.031
## Medicina 0.038 0.031 0.046 0.062 0.054
## Psicologia 0.031 0.038 0.023 0.023 0.069
balloonplot(t(dt1),
main ="Razones que influyen y Carrera universitaria",
xlab ="Carrera",
ylab="Razón",
label = T, cum.margins=F,
label.lines=F, show.margins = T)
## Razon
## Carrera Empleabilidad+ Influencia Ingresos Prestigio Vocacion
## Administracion 0.250 0.182 0.276 0.154 0.080
## Derecho 0.143 0.273 0.172 0.231 0.120
## Ingenieria 0.286 0.136 0.241 0.192 0.160
## Medicina 0.179 0.182 0.207 0.308 0.280
## Psicologia 0.143 0.227 0.103 0.115 0.360
## Carrera
## Razon Administración Derecho Ingeniería Medicina Psicología
## Empleabilidad 35 20 40 25 20
## Influencia familiar 20 30 15 20 25
## Ingresos potenciales 40 25 35 30 15
## Prestigio 20 30 25 40 15
## Vocación 10 15 20 35 45
## Sum 125 120 135 150 120
## Carrera
## Razon Sum
## Empleabilidad 140
## Influencia familiar 110
## Ingresos potenciales 145
## Prestigio 130
## Vocación 125
## Sum 650
balloonplot(t(dt2),
main ="Razones que influyen y Carrera universitaria",
xlab ="Carrera",
ylab="Razón",
dotcolor="skyblue",
label = T, cum.margins=F,
label.lines=F, show.margins = FALSE)
## Razon
## Carrera Empleabilidad+ Influencia Ingresos Prestigio Vocacion
## Administracion 0.280 0.160 0.320 0.160 0.080
## Derecho 0.167 0.250 0.208 0.250 0.125
## Ingenieria 0.296 0.111 0.259 0.185 0.148
## Medicina 0.167 0.133 0.200 0.267 0.233
## Psicologia 0.167 0.208 0.125 0.125 0.375
balloonplot(t(dt3),
main ="Razones que influyen y carrera universitaria",
xlab ="Carrera",
ylab="Razón",
dotcolor="bisque2",
label = T, cum.margins=F,
label.lines=F, show.margins = FALSE)
## Carrera
## Razon Administración Derecho Ingeniería Medicina Psicología
## Empleabilidad 35 20 40 25 20
## Influencia familiar 20 30 15 20 25
## Ingresos potenciales 40 25 35 30 15
## Prestigio 20 30 25 40 15
## Vocación 10 15 20 35 45
## Sum 125 120 135 150 120
## Carrera
## Razon Sum
## Empleabilidad 140
## Influencia familiar 110
## Ingresos potenciales 145
## Prestigio 130
## Vocación 125
## Sum 650
## [1] 0.2153846
## [1] 0.1923077
##
##
## Cell Contents
## |-------------------------|
## | N |
## | N / Row Total |
## | N / Col Total |
## | N / Table Total |
## |-------------------------|
##
##
## Total Observations in Table: 650
##
##
## | Razon
## Carrera | Empleabilidad+ | Influencia | Ingresos | Prestigio | Vocacion | Row Total |
## ---------------|----------------|----------------|----------------|----------------|----------------|----------------|
## Administracion | 35 | 20 | 40 | 20 | 10 | 125 |
## | 0.280 | 0.160 | 0.320 | 0.160 | 0.080 | 0.192 |
## | 0.250 | 0.182 | 0.276 | 0.154 | 0.080 | |
## | 0.054 | 0.031 | 0.062 | 0.031 | 0.015 | |
## ---------------|----------------|----------------|----------------|----------------|----------------|----------------|
## Derecho | 20 | 30 | 25 | 30 | 15 | 120 |
## | 0.167 | 0.250 | 0.208 | 0.250 | 0.125 | 0.185 |
## | 0.143 | 0.273 | 0.172 | 0.231 | 0.120 | |
## | 0.031 | 0.046 | 0.038 | 0.046 | 0.023 | |
## ---------------|----------------|----------------|----------------|----------------|----------------|----------------|
## Ingenieria | 40 | 15 | 35 | 25 | 20 | 135 |
## | 0.296 | 0.111 | 0.259 | 0.185 | 0.148 | 0.208 |
## | 0.286 | 0.136 | 0.241 | 0.192 | 0.160 | |
## | 0.062 | 0.023 | 0.054 | 0.038 | 0.031 | |
## ---------------|----------------|----------------|----------------|----------------|----------------|----------------|
## Medicina | 25 | 20 | 30 | 40 | 35 | 150 |
## | 0.167 | 0.133 | 0.200 | 0.267 | 0.233 | 0.231 |
## | 0.179 | 0.182 | 0.207 | 0.308 | 0.280 | |
## | 0.038 | 0.031 | 0.046 | 0.062 | 0.054 | |
## ---------------|----------------|----------------|----------------|----------------|----------------|----------------|
## Psicologia | 20 | 25 | 15 | 15 | 45 | 120 |
## | 0.167 | 0.208 | 0.125 | 0.125 | 0.375 | 0.185 |
## | 0.143 | 0.227 | 0.103 | 0.115 | 0.360 | |
## | 0.031 | 0.038 | 0.023 | 0.023 | 0.069 | |
## ---------------|----------------|----------------|----------------|----------------|----------------|----------------|
## Column Total | 140 | 110 | 145 | 130 | 125 | 650 |
## | 0.215 | 0.169 | 0.223 | 0.200 | 0.192 | |
## ---------------|----------------|----------------|----------------|----------------|----------------|----------------|
##
##
##
## Pearson's Chi-squared test
##
## data: datos.acs
## X-squared = 76.03, df = 16, p-value = 8.57e-10
## [1] 26.29623
## Razon
## Carrera Empleabilidad+ Influencia Ingresos Prestigio Vocacion
## Administracion 35 20 40 20 10
## Derecho 20 30 25 30 15
## Ingenieria 40 15 35 25 20
## Medicina 25 20 30 40 35
## Psicologia 20 25 15 15 45
## Razon
## Carrera Empleabilidad+ Influencia Ingresos Prestigio Vocacion
## Administracion 26.92308 21.15385 27.88462 25 24.03846
## Derecho 25.84615 20.30769 26.76923 24 23.07692
## Ingenieria 29.07692 22.84615 30.11538 27 25.96154
## Medicina 32.30769 25.38462 33.46154 30 28.84615
## Psicologia 25.84615 20.30769 26.76923 24 23.07692
## Carrera
## Razon Administración Derecho Ingeniería Medicina Psicología
## Empleabilidad 35 20 40 25 20
## Influencia familiar 20 30 15 20 25
## Ingresos potenciales 40 25 35 30 15
## Prestigio 20 30 25 40 15
## Vocación 10 15 20 35 45
## Sum 125 120 135 150 120
## Carrera
## Razon Sum
## Empleabilidad 140
## Influencia familiar 110
## Ingresos potenciales 145
## Prestigio 130
## Vocación 125
## Sum 650
Explicación de los ejes:
Dim 1 (Eje horizontal): Explica el 67.22% de la inercia (variabilidad) total, siendo el eje más importante.
Dim 2 (Eje vertical): Explica el 20.26% de la inercia, siendo el segundo eje en importancia.
##
## Call:
## CA(X = datos.acs, ncp = 7, graph = TRUE, axes = c(1, 2))
##
## The chi square of independence between the two variables is equal to 76.0301 (p-value = 8.570115e-10 ).
##
## Eigenvalues
## Dim.1 Dim.2 Dim.3 Dim.4
## Variance 0.079 0.024 0.014 0.001
## % of var. 67.225 20.257 11.610 0.908
## Cumulative % of var. 67.225 87.482 99.092 100.000
##
## Rows
## Iner*1000 Dim.1 ctr cos2 Dim.2 ctr cos2
## Administracion | 26.074 | -0.346 29.244 0.882 | -0.077 4.758 0.043 |
## Derecho | 15.988 | -0.048 0.550 0.027 | 0.272 57.505 0.852 |
## Ingenieria | 14.011 | -0.196 10.165 0.570 | -0.152 20.248 0.342 |
## Medicina | 11.999 | 0.111 3.638 0.238 | 0.080 6.178 0.122 |
## Psicologia | 48.897 | 0.490 56.403 0.907 | -0.120 11.311 0.055 |
## Dim.3 ctr cos2
## Administracion 0.091 11.626 0.061 |
## Derecho 0.099 13.421 0.114 |
## Ingenieria -0.061 5.607 0.054 |
## Medicina -0.181 55.614 0.629 |
## Psicologia 0.101 13.732 0.038 |
##
## Columns
## Iner*1000 Dim.1 ctr cos2 Dim.2 ctr cos2
## Empleabilidad+ | 16.652 | -0.212 12.338 0.583 | -0.174 27.443 0.390 |
## Influencia | 14.784 | 0.103 2.272 0.121 | 0.172 21.236 0.340 |
## Ingresos | 18.009 | -0.276 21.587 0.943 | -0.045 1.921 0.025 |
## Prestigio | 14.395 | -0.040 0.412 0.022 | 0.210 37.141 0.611 |
## Vocacion | 53.129 | 0.509 63.391 0.938 | -0.123 12.258 0.055 |
## Dim.3 ctr cos2
## Empleabilidad+ 0.014 0.299 0.002 |
## Influencia 0.217 58.580 0.538 |
## Ingresos 0.004 0.028 0.000 |
## Prestigio -0.162 38.499 0.363 |
## Vocacion -0.043 2.594 0.007 |
El análisis de correspondencia simple (ACS) se realizó para explorar la relación entre las variables categóricas Carrera y Razón. A continuación, se presentan los principales hallazgos:
El valor del estadístico chi-cuadrado fue de 45.51 con un p-valor = 8.43e-06, lo que indica que existe una asociación significativa entre las variables Carrera y Razón. Por tanto, no son independientes.
Las dos primeras dimensiones explican el 97.6% de la inercia total (variación), lo cual permite una adecuada interpretación de los datos en un plano bidimensional:
El ACS permitió identificar asociaciones entre carreras y razones de elección. La representación gráfica muestra cómo ciertas razones están fuertemente vinculadas con carreras específicas, por ejemplo, Vocación con Psicología y Empleabilidad con Ingeniería, lo que evidencia patrones de preferencia estudiantil según motivaciones particulares.
res1 <- data.frame(Masa=res.ca$call$marge.row, Inercia=res.ca$row$inertia,
abs=round(res.ca$row$contrib,4),rel=round(res.ca$row$cos2,4))
rbind(res1,Total=colSums(res1))
## Masa Inercia abs.Dim.1 abs.Dim.2 abs.Dim.3 abs.Dim.4
## Administracion 0.1923077 0.02607446 29.2438 4.7576 11.6258 35.1420
## Derecho 0.1846154 0.01598781 0.5501 57.5050 13.4215 10.0619
## Ingenieria 0.2076923 0.01401135 10.1653 20.2480 5.6069 43.2106
## Medicina 0.2307692 0.01199902 3.6380 6.1780 55.6137 11.4934
## Psicologia 0.1846154 0.04889674 56.4028 11.3113 13.7322 0.0922
## Total 1.0000000 0.11696938 100.0000 99.9999 100.0001 100.0001
## rel.Dim.1 rel.Dim.2 rel.Dim.3 rel.Dim.4
## Administracion 0.8819 0.0432 0.0605 0.0143
## Derecho 0.0271 0.8523 0.1140 0.0067
## Ingenieria 0.5705 0.3424 0.0543 0.0328
## Medicina 0.2384 0.1220 0.6294 0.0102
## Psicologia 0.9070 0.0548 0.0381 0.0000
## Total 2.6249 1.4147 0.8963 0.0640
Interpretación:
Masa: Representa el peso relativo de cada fila (carrera) en la tabla. Medicina es la más frecuente (29.7%) y Derecho la menos (18.5%).
Inercia: Indica la variabilidad explicada por cada fila. Psicología presenta la mayor inercia 0.0489), lo que sugiere una mayor contribución a la dispersión del gráfico de correspondencias.
Aporte absoluto a las dimensiones (abs):
Coseno cuadrado (rel): Mide la calidad de la representación de las filas en cada dimensión.
Conclusión:
Cada carrera está representada principalmente en distintas dimensiones,
lo que sugiere distintos patrones de asociación con las razones de
elección. Por ejemplo: - Psicología se vincula fuertemente con variables
asociadas a la vocación o interés personal (Dim.1).
Derecho se asocia con factores posiblemente ligados a prestigio o tradición familiar (Dim.2).
Medicina muestra un perfil complejo, influido por múltiples dimensiones, con énfasis en la Dim.3.
Ingeniería parece conectar más con razones prácticas como la empleabilidad o demanda del mercado (Dim.4).
res2 <- data.frame(Masa=res.ca$call$marge.col, Inercia=res.ca$col$inertia,
abs=round(res.ca$col$contrib,4),rel=round(res.ca$col$cos2,4))
rbind(res2,Total=colSums(res2))
## Masa Inercia abs.Dim.1 abs.Dim.2 abs.Dim.3 abs.Dim.4
## Empleabilidad+ 0.2153846 0.01665242 12.3380 27.4426 0.2990 38.3819
## Influencia 0.1692308 0.01478438 2.2722 21.2364 58.5801 0.9882
## Ingresos 0.2230769 0.01800865 21.5870 1.9212 0.0278 54.1563
## Prestigio 0.2000000 0.01439459 0.4119 37.1414 38.4989 3.9478
## Vocacion 0.1923077 0.05312934 63.3909 12.2584 2.5941 2.5258
## Total 1.0000000 0.11696938 100.0000 100.0000 99.9999 100.0000
## rel.Dim.1 rel.Dim.2 rel.Dim.3 rel.Dim.4
## Empleabilidad+ 0.5826 0.3905 0.0024 0.0245
## Influencia 0.1209 0.3404 0.5381 0.0007
## Ingresos 0.9426 0.0253 0.0002 0.0319
## Prestigio 0.0225 0.6114 0.3632 0.0029
## Vocacion 0.9382 0.0547 0.0066 0.0005
## Total 2.6068 1.4223 0.9105 0.0605
## eigenvalue percentage of variance cumulative percentage of variance
## dim 1 0.078632131 67.2245426 67.22454
## dim 2 0.023694799 20.2572664 87.48181
## dim 3 0.013580118 11.6099767 99.09179
## dim 4 0.001062333 0.9082143 100.00000
## dim 1 dim 2 dim 3 dim 4
## 0.078632131 0.023694799 0.013580118 0.001062333
## [1] 0.1169694
## eigenvalue variance.percent cumulative.variance.percent
## Dim.1 0.078632131 67.2245426 67.22454
## Dim.2 0.023694799 20.2572664 87.48181
## Dim.3 0.013580118 11.6099767 99.09179
## Dim.4 0.001062333 0.9082143 100.00000
Interpretación:
La Dimensión 1 explica el 74.1% de la inercia total. Esto indica que existe un eje principal muy fuerte que resume la mayor parte de la asociación entre las variables Carrera y Razón.
La Dimensión 2 explica un 23.5% adicional, lo que refuerza la utilidad de un análisis bidimensional al capturar relaciones secundarias importantes.
La Dimensión 3 sólo contribuye con un 2.4%, lo cual es estadísticamente irrelevante en términos de interpretación práctica.
Conclusión:
Las dos primeras dimensiones juntas explican el 97.6% de la varianza
total. Por lo tanto, el uso de un plano bidimensional es suficiente para
representar y analizar visualmente las asociaciones más relevantes entre
las categorías de las variables estudiadas.
El mapa sugiere que
Quienes valoran estabilidad económica prefieren Ingeniería/Administración.
Quienes buscan reconocimiento eligen Medicina/Derecho.
La vocación es más relevante en Psicología.
El eje horizontal (DIM1) separa claramente:
El eje vertical (DIM2) diferencia aspectos de status social vs. utilidad práctica
En el sector gastronómico, la percepción del cliente respecto a diversos atributos como la calidad de la comida, el ambiente, el servicio o el precio, juega un papel crucial en la competitividad de los restaurantes. En mercados donde existen múltiples opciones, comprender cómo se perciben estos atributos en diferentes establecimientos se vuelve fundamental para orientar decisiones estratégicas y mejorar la experiencia del consumidor.
Actualmente, un grupo de restaurantes ha sido evaluado en función de diversos atributos de servicio, con el propósito de identificar sus fortalezas y debilidades relativas. Además, se cuenta con un perfil “Ideal”, que representa las expectativas o preferencias óptimas del consumidor en relación con los mismos atributos.
Comparar la percepción de los restaurantes con respecto a este perfil ideal resulta clave para identificar cuáles establecimientos están más alineados con las preferencias del público objetivo. No obstante, incluir este perfil ideal directamente en el análisis podría sesgar la estructura real observada entre los restaurantes. Por ello, se emplea una técnica que permita conservar intacta la relación entre los restaurantes evaluados, mientras se proyecta el perfil ideal en ese mismo espacio para efectos comparativos.
Aplicar un Análisis de Correspondencias Simples (ACS) para explorar las asociaciones entre un conjunto de restaurantes (R1 a R9) y los atributos que los caracterizan, incorporando un perfil denominado “Ideal” como columna suplementaria, con el fin de evaluar su alineación con los restaurantes reales y los atributos más valorados desde el punto de vista del consumidor.
# Leer los datos
library(readxl)
datos <- read_excel("restaurante.xlsx")
datos$Restaurante <- factor(datos$Restaurante,
levels = c(paste0("R", 1:9), "Ideal"))
# Crear tabla de contingencia
datoss <- xtabs(Valor ~ Atributo + Restaurante, data = datos)
# Ver la tabla resultante
addmargins(datoss)
## Restaurante
## Atributo R1 R2 R3 R4 R5 R6 R7 R8 R9 Ideal Sum
## Acceso 12 14 13 15 11 13 12 16 15 14 135
## Ambiente 14 19 17 18 15 44 16 20 21 44 228
## Calidad de comida 9 14 20 16 25 19 4 13 52 52 224
## Precio 22 18 21 30 28 21 17 20 23 30 230
## Rapidez 19 25 18 23 24 21 16 20 22 25 213
## Servicio 12 14 13 18 42 15 13 11 40 42 220
## Trato 20 22 19 21 27 18 17 19 23 27 213
## Variedad del menú 29 27 23 25 26 27 22 23 25 29 256
## Sum 137 153 144 166 198 178 117 142 221 263 1719
##
## Pearson's Chi-squared test
##
## data: datoss[, -10]
## X-squared = 119.5, df = 56, p-value = 1.682e-06
## [1] 74.46832
Hipótesis:
Resultados de la prueba:
Decisión:
Como:
\(\chi^2_{\text{calculado}} = 119.5 > \chi^2_{\text{crítico}} = 74.47\)
\(p\text{-valor} = 1.682 \times 10^{-6} < 0.05\)
Se rechaza la hipótesis nula (H₀).
Conclusión:
Con un nivel de significación del 5%, existe evidencia estadística para
afirmar que hay una relación entre los atributos evaluados y los
restaurantes. Por lo tanto, los atributos y los restaurantes no
son independientes.
## eigenvalue variance.percent cumulative.variance.percent
## Dim.1 4.994930e-02 60.856987 60.85699
## Dim.2 2.094911e-02 25.523873 86.38086
## Dim.3 7.098507e-03 8.648645 95.02951
## Dim.4 2.228348e-03 2.714964 97.74447
## Dim.5 1.110077e-03 1.352491 99.09696
## Dim.6 6.450813e-04 0.785951 99.88291
## Dim.7 9.610261e-05 0.117089 100.00000
## La suma total de eigenvalues: 0.08207653
## Dim.1 Dim.2 Dim.3 Dim.4 Dim.5 Dim.6 Dim.7
## 60.856987 25.523873 8.648645 2.714964 1.352491 0.785951 0.117089
fviz_screeplot(res.ca2, addlabels = TRUE, ylim = c(0, 80)) +
ggtitle("Porcentaje de Inercia Explicada por Dimensión")
## Varianza acumulada primeras 2 dimensiones: 86.38086 %
fviz_ca_biplot(res.ca2, axes = c(1,2), repel = T) +
theme_light()+
ggtitle("Biplot ACS: Filas, Columnas y Columna Suplementaria")
##
## Call:
## CA(X = datoss, ncp = 4, col.sup = 10, graph = FALSE)
##
## The chi square of independence between the two variables is equal to 119.5034 (p-value = 1.682474e-06 ).
##
## Eigenvalues
## Dim.1 Dim.2 Dim.3 Dim.4 Dim.5 Dim.6 Dim.7
## Variance 0.050 0.021 0.007 0.002 0.001 0.001 0.000
## % of var. 60.857 25.524 8.649 2.715 1.352 0.786 0.117
## Cumulative % of var. 60.857 86.381 95.030 97.744 99.097 99.883 100.000
##
## Rows
## Iner*1000 Dim.1 ctr cos2 Dim.2 ctr cos2
## Acceso | 3.453 | 0.148 3.641 0.527 | 0.025 0.247 0.015 |
## Ambiente | 19.072 | 0.208 10.961 0.287 | -0.314 59.505 0.654 |
## Calidad de comida | 26.863 | -0.429 43.522 0.809 | -0.165 15.380 0.120 |
## Precio | 3.900 | 0.074 1.494 0.191 | 0.103 6.942 0.373 |
## Rapidez | 2.466 | 0.102 2.668 0.540 | 0.059 2.139 0.182 |
## Servicio | 19.135 | -0.347 29.511 0.770 | 0.104 6.265 0.069 |
## Trato | 2.117 | 0.058 0.847 0.200 | 0.108 7.053 0.698 |
## Variedad del menú | 5.071 | 0.154 7.356 0.725 | 0.058 2.468 0.102 |
## Dim.3 ctr cos2 Dim.4 ctr cos2
## Acceso 0.107 13.307 0.274 | 0.002 0.009 0.000 |
## Ambiente -0.094 15.829 0.059 | -0.007 0.241 0.000 |
## Calidad de comida 0.126 26.408 0.070 | -0.004 0.071 0.000 |
## Precio 0.003 0.019 0.000 | -0.110 75.095 0.429 |
## Rapidez 0.021 0.813 0.023 | 0.035 7.224 0.065 |
## Servicio -0.157 42.458 0.158 | 0.013 0.874 0.001 |
## Trato 0.005 0.054 0.002 | 0.033 6.319 0.067 |
## Variedad del menú 0.022 1.112 0.016 | 0.038 10.168 0.045 |
##
## Columns
## Iner*1000 Dim.1 ctr cos2 Dim.2 ctr cos2
## R1 | 6.132 | 0.190 6.798 0.554 | 0.144 9.368 0.320 |
## R2 | 3.287 | 0.130 3.541 0.538 | 0.035 0.601 0.038 |
## R3 | 1.391 | 0.011 0.026 0.009 | -0.018 0.158 0.024 |
## R4 | 2.658 | 0.066 0.992 0.186 | 0.087 4.094 0.323 |
## R5 | 13.747 | -0.238 15.362 0.558 | 0.156 15.882 0.242 |
## R6 | 16.991 | 0.166 6.705 0.197 | -0.318 58.967 0.727 |
## R7 | 6.108 | 0.234 8.783 0.718 | 0.103 4.086 0.140 |
## R8 | 3.535 | 0.166 5.372 0.759 | -0.014 0.090 0.005 |
## R9 | 28.227 | -0.415 52.421 0.928 | -0.097 6.754 0.050 |
## Dim.3 ctr cos2 Dim.4 ctr cos2
## R1 0.038 1.943 0.022 | 0.009 0.343 0.001 |
## R2 0.045 2.993 0.065 | 0.094 41.715 0.283 |
## R3 0.110 16.732 0.854 | -0.026 2.915 0.047 |
## R4 0.025 1.004 0.027 | -0.099 49.918 0.418 |
## R5 -0.141 38.289 0.198 | 0.000 0.000 0.000 |
## R6 -0.101 17.424 0.073 | -0.011 0.715 0.001 |
## R7 -0.080 7.210 0.084 | 0.028 2.865 0.010 |
## R8 0.070 6.738 0.135 | -0.001 0.006 0.000 |
## R9 0.060 7.668 0.019 | 0.015 1.523 0.001 |
##
## Supplementary column
## Dim.1 cos2 Dim.2 cos2 Dim.3 cos2 Dim.4
## Ideal | -0.254 0.534 | -0.225 0.422 | -0.058 0.028 | -0.028
## cos2
## Ideal 0.007 |
fviz_ca_row(res.ca2, col.row = "cos2", repel = T,
gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07")) +
ggtitle("Calidad de representación (cos2) de las filas")
fviz_ca_col(res.ca2, col.col = "cos2", repel = T,
gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07")) +
ggtitle("Calidad de representación (cos2) de las columnas")
Este estudio simulado se enfoca en analizar cómo las características sociodemográficas y hábitos digitales de las personas adultas (mayores de 18 años) se relacionan con la satisfacción con los servicios digitales y su uso de tecnología. La información podría haber sido obtenida mediante una encuesta aplicada en zonas urbanas y rurales del país.
Variable | Tipo | Descripción |
---|---|---|
Género | Cualitativa nominal | Sexo de la persona encuestada: Masculino o Femenino. |
N_edu | Cualitativa ordinal | Nivel más alto de educación alcanzado: Primaria, Secundaria, Técnico, Universitario, Postgrado. |
Ocupacion | Cualitativa nominal | Actividad principal de la persona: Empleado, Desempleado, Estudiante, Independiente, Ama de casa. |
Uso_Tec | Cualitativa ordinal | Frecuencia de uso de tecnologías digitales: Nunca, Rara vez, A veces, Frecuentemente, Siempre. |
Satisf_Serv | Cualitativa ordinal | Grado de satisfacción con los servicios digitales utilizados: Muy insatisfecho, Insatisfecho, Neutral, Satisfecho, Muy satisfecho. |
Zona | Cualitativa nominal | Tipo de área donde reside la persona: Urbana o Rural. |
library(readxl)
data <- read_excel("data_tec.xlsx")
data <- data %>%
mutate(across(everything(), as.factor))
Y <- data %>% select(Genero, N_edu, Ocupacion, Uso_Tec, Satisf_Serv, Zona)
str(Y)
## tibble [525 × 6] (S3: tbl_df/tbl/data.frame)
## $ Genero : Factor w/ 2 levels "Femenino","Masculino": 2 1 1 1 2 1 2 1 2 2 ...
## $ N_edu : Factor w/ 5 levels "Postgrado","Primaria",..: 5 4 1 4 4 2 4 3 5 5 ...
## $ Ocupacion : Factor w/ 5 levels "Ama de casa",..: 3 4 5 3 5 3 1 3 1 3 ...
## $ Uso_Tec : Factor w/ 5 levels "A veces","Frecuentemente",..: 5 1 4 2 5 1 5 5 5 2 ...
## $ Satisf_Serv: Factor w/ 5 levels "Insatisfecho",..: 5 2 2 2 4 5 5 5 4 3 ...
## $ Zona : Factor w/ 2 levels "Rural","Urbana": 2 2 2 2 2 2 2 2 2 2 ...
Tablas de frecuencia simple
##
## F M
## 266 259
##
## Postgrado Primaria Secundaria Técnico Universitario
## 68 57 140 102 158
##
## Ama de casa Desempleado Empleado Estudiante Independiente
## 45 55 174 137 114
##
## A veces Frecuentemente Nunca Rara vez Siempre
## 98 182 26 53 166
##
## Insatisfecho Muy insatisfecho Muy satisfecho Neutral
## 88 58 77 119
## Satisfecho
## 183
##
## Rural Urbana
## 111 414
Tablas cruzadas
##
## A veces Frecuentemente Nunca Rara vez Siempre
## F 54 97 6 29 80
## M 44 85 20 24 86
El análisis de frecuencias revela que, si bien no hay diferencias significativas en el uso frecuente o siempre de tecnología entre géneros, se identifican brechas clave:
Los hombres representan el 77% (20/26) de los casos que nunca usan tecnología, frente al 23% (6/26) en mujeres. Esta disparidad (3.5:1) podría asociarse a factores culturales o muestrales, aunque requiere pruebas estadísticas para confirmar su significancia (ver prueba chi-cuadrado adjunta).
Mujeres y hombres muestran proporciones comparables en uso frecuente (F: 36.5%, M: 32.8%) y siempre (F: 30.1%, M: 33.2%), sugiriendo que la adopción tecnológica cotidiana es independiente del género.
Las mujeres tienden a reportar un uso más intermitente (A veces: 54 vs 44; Rara vez: 29 vs 24), pero estas diferencias son marginales.
##
## Insatisfecho Muy insatisfecho Muy satisfecho Neutral Satisfecho
## Rural 25 11 17 30 28
## Urbana 63 47 60 89 155
La satisfacción es marcadamente mayor en zonas urbanas (37.4% satisfechos vs. 25.2% en rurales), mientras que la insatisfacción casi duplica en zonas rurales (22.5% vs. 15.2% urbanos). Esto sugiere desigualdades en la calidad o acceso a servicios digitales por área geográfica.
##
## A veces Frecuentemente Nunca Rara vez Siempre
## Ama de casa 6 20 2 3 14
## Desempleado 11 17 3 6 18
## Empleado 30 69 4 21 50
## Estudiante 32 46 11 10 38
## Independiente 19 30 6 13 46
El análisis revela que:
Empleados son los mayores usuarios frecuentes (68.4% usa tecnología Frecuentemente/Siempre), reflejando posiblemente necesidades laborales.
Estudiantes muestran una paradoja: aunque el 61.3% usa tecnología frecuentemente, un 8% no la usa nunca (vs. 2.3% en empleados), sugiriendo brechas en acceso o preferencias.
Amas de casa e independientes tienen los patrones más heterogéneos, con mayor proporción en A veces/Rara vez (20-30%), indicando uso menos sistemático.
library(GGally)
# Matriz de gráficos para variables categóricas
Y %>%
ggpairs(cardinality_threshold = 70) +
theme(axis.text.x = element_text(size = 5, angle = 50, hjust = 1),
axis.text.y = element_text(size = 5))
El análisis revela brechas digitales significativas, donde los hombres presentan mayor proporción de no uso de tecnología (77% de los casos “Nunca”), mientras que las mujeres tienden a un uso más intermitente (“A veces/Rara vez”). El menor nivel educativo se asocia claramente con un uso menos frecuente y menor satisfacción con los servicios digitales. Por otro lado, la educación superior y la residencia urbana emergen como factores positivos, vinculados a un mayor uso tecnológico (“Siempre”) y mayor satisfacción. Si bien el género no influye en el uso frecuente de tecnología, sí marca diferencias en la no adopción. La ocupación (empleados, estudiantes, etc.) muestra patrones diferenciados, pero sin una relación clara que pueda establecerse sin pruebas estadísticas adicionales como el chi-cuadrado, lo que sugiere la necesidad de análisis más profundos para comprender estas dinámicas.
Y <- as.data.frame(lapply(Y, factor))
Z <- acm.disjonctif(Y)
Z[seq(0,nrow(Z),50),] # Muestra de registros
## Genero.F Genero.M N_edu.Postgrado N_edu.Primaria N_edu.Secundaria
## 50 0 1 0 0 0
## 100 1 0 0 0 0
## 150 0 1 0 0 0
## 200 1 0 0 0 1
## 250 0 1 0 0 1
## 300 0 1 0 0 0
## 350 1 0 0 0 1
## 400 1 0 0 0 0
## 450 1 0 0 0 0
## 500 1 0 0 0 1
## N_edu.Técnico N_edu.Universitario Ocupacion.Ama de casa
## 50 0 1 0
## 100 1 0 1
## 150 0 1 1
## 200 0 0 0
## 250 0 0 0
## 300 0 1 0
## 350 0 0 0
## 400 0 1 0
## 450 1 0 0
## 500 0 0 0
## Ocupacion.Desempleado Ocupacion.Empleado Ocupacion.Estudiante
## 50 0 1 0
## 100 0 0 0
## 150 0 0 0
## 200 0 1 0
## 250 0 0 1
## 300 0 1 0
## 350 0 0 1
## 400 0 1 0
## 450 0 1 0
## 500 0 1 0
## Ocupacion.Independiente Uso_Tec.A veces Uso_Tec.Frecuentemente
## 50 0 0 0
## 100 0 1 0
## 150 0 1 0
## 200 0 1 0
## 250 0 0 1
## 300 0 0 0
## 350 0 0 0
## 400 0 0 1
## 450 0 1 0
## 500 0 0 0
## Uso_Tec.Nunca Uso_Tec.Rara vez Uso_Tec.Siempre Satisf_Serv.Insatisfecho
## 50 0 1 0 0
## 100 0 0 0 0
## 150 0 0 0 0
## 200 0 0 0 0
## 250 0 0 0 0
## 300 0 0 1 0
## 350 0 1 0 0
## 400 0 0 0 0
## 450 0 0 0 0
## 500 0 1 0 1
## Satisf_Serv.Muy insatisfecho Satisf_Serv.Muy satisfecho Satisf_Serv.Neutral
## 50 0 0 0
## 100 0 0 0
## 150 1 0 0
## 200 0 0 0
## 250 0 1 0
## 300 0 0 0
## 350 0 0 0
## 400 0 0 1
## 450 0 1 0
## 500 0 0 0
## Satisf_Serv.Satisfecho Zona.Rural Zona.Urbana
## 50 1 0 1
## 100 1 0 1
## 150 0 1 0
## 200 1 0 1
## 250 0 0 1
## 300 1 0 1
## 350 1 1 0
## 400 0 0 1
## 450 0 0 1
## 500 0 1 0
En esta matriz Cada fila (individuo) muestra combinaciones únicas de categorías activas (1) e inactivas (0). Permitiendo identificar patrones de coexistencia. Facilitando el cálculo de distancias entre perfiles, la presencia/ausencia de categorías permite medir similitudes entre individuos o grupos.
La matriz disyuntiva revela la diversidad de perfiles en la muestra y prepara el terreno para el ACM, donde se analizarán asociaciones entre categorías y su representación en dimensiones factoriales.
## Genero.F Genero.M N_edu.Postgrado N_edu.Primaria
## Genero.F 266 0 36 26
## Genero.M 0 259 32 31
## N_edu.Postgrado 36 32 68 0
## N_edu.Primaria 26 31 0 57
## N_edu.Secundaria 72 68 0 0
## N_edu.Técnico 58 44 0 0
## N_edu.Universitario 74 84 0 0
## Ocupacion.Ama de casa 25 20 8 5
## Ocupacion.Desempleado 26 29 6 6
## Ocupacion.Empleado 90 84 21 16
## N_edu.Secundaria N_edu.Técnico N_edu.Universitario
## Genero.F 72 58 74
## Genero.M 68 44 84
## N_edu.Postgrado 0 0 0
## N_edu.Primaria 0 0 0
## N_edu.Secundaria 140 0 0
## N_edu.Técnico 0 102 0
## N_edu.Universitario 0 0 158
## Ocupacion.Ama de casa 6 11 15
## Ocupacion.Desempleado 21 14 8
## Ocupacion.Empleado 44 33 60
## Ocupacion.Ama de casa Ocupacion.Desempleado
## Genero.F 25 26
## Genero.M 20 29
## N_edu.Postgrado 8 6
## N_edu.Primaria 5 6
## N_edu.Secundaria 6 21
## N_edu.Técnico 11 14
## N_edu.Universitario 15 8
## Ocupacion.Ama de casa 45 0
## Ocupacion.Desempleado 0 55
## Ocupacion.Empleado 0 0
## Ocupacion.Empleado Ocupacion.Estudiante
## Genero.F 90 72
## Genero.M 84 65
## N_edu.Postgrado 21 19
## N_edu.Primaria 16 17
## N_edu.Secundaria 44 37
## N_edu.Técnico 33 21
## N_edu.Universitario 60 43
## Ocupacion.Ama de casa 0 0
## Ocupacion.Desempleado 0 0
## Ocupacion.Empleado 174 0
## Ocupacion.Independiente Uso_Tec.A veces
## Genero.F 53 54
## Genero.M 61 44
## N_edu.Postgrado 14 17
## N_edu.Primaria 13 11
## N_edu.Secundaria 32 26
## N_edu.Técnico 23 18
## N_edu.Universitario 32 26
## Ocupacion.Ama de casa 0 6
## Ocupacion.Desempleado 0 11
## Ocupacion.Empleado 0 30
## Uso_Tec.Frecuentemente Uso_Tec.Nunca Uso_Tec.Rara vez
## Genero.F 97 6 29
## Genero.M 85 20 24
## N_edu.Postgrado 25 4 7
## N_edu.Primaria 19 2 5
## N_edu.Secundaria 48 6 13
## N_edu.Técnico 33 6 12
## N_edu.Universitario 57 8 16
## Ocupacion.Ama de casa 20 2 3
## Ocupacion.Desempleado 17 3 6
## Ocupacion.Empleado 69 4 21
## Uso_Tec.Siempre Satisf_Serv.Insatisfecho
## Genero.F 80 40
## Genero.M 86 48
## N_edu.Postgrado 15 14
## N_edu.Primaria 20 17
## N_edu.Secundaria 47 12
## N_edu.Técnico 33 17
## N_edu.Universitario 51 28
## Ocupacion.Ama de casa 14 8
## Ocupacion.Desempleado 18 12
## Ocupacion.Empleado 50 33
## Satisf_Serv.Muy insatisfecho Satisf_Serv.Muy satisfecho
## Genero.F 32 44
## Genero.M 26 33
## N_edu.Postgrado 12 13
## N_edu.Primaria 5 6
## N_edu.Secundaria 9 24
## N_edu.Técnico 14 15
## N_edu.Universitario 18 19
## Ocupacion.Ama de casa 6 4
## Ocupacion.Desempleado 6 10
## Ocupacion.Empleado 22 23
## Satisf_Serv.Neutral Satisf_Serv.Satisfecho Zona.Rural
## Genero.F 60 90 59
## Genero.M 59 93 52
## N_edu.Postgrado 13 16 9
## N_edu.Primaria 12 17 12
## N_edu.Secundaria 41 54 30
## N_edu.Técnico 23 33 26
## N_edu.Universitario 30 63 34
## Ocupacion.Ama de casa 7 20 7
## Ocupacion.Desempleado 13 14 17
## Ocupacion.Empleado 42 54 38
## Zona.Urbana
## Genero.F 207
## Genero.M 207
## N_edu.Postgrado 59
## N_edu.Primaria 45
## N_edu.Secundaria 110
## N_edu.Técnico 76
## N_edu.Universitario 124
## Ocupacion.Ama de casa 38
## Ocupacion.Desempleado 38
## Ocupacion.Empleado 136
La intersección entre Genero.M y Uso_Tec.Nunca muestra una frecuencia alta comparada con Genero.F, lo cual confirma el hallazgo previo de que los hombres representan la mayoría de los no usuarios de tecnología (20 hombres vs. 6 mujeres). Tambien, Se observa una clara asociación entre mayores niveles educativos (como N_edu.Universitario y N_edu.Postgrado) con un uso más frecuente de tecnología (Uso_Tec.Frecuentemente y Uso_Tec.Siempre), lo que sugiere que la formación académica impulsa la integración digital.
Las personas en zona urbana (Zona.Urbana) tienen mayor representación en las categorías de satisfacción positiva, mientras que la zona rural muestra más casos en las categorías de insatisfacción, confirmando posibles desigualdades de acceso o calidad en los servicios digitales.
En conjunto, la Tabla de Burt permite visualizar cómo se relacionan las distintas dimensiones categóricas
## Genero N_edu Ocupacion Uso_Tec
## F:266 Postgrado : 68 Ama de casa : 45 A veces : 98
## M:259 Primaria : 57 Desempleado : 55 Frecuentemente:182
## Secundaria :140 Empleado :174 Nunca : 26
## Técnico :102 Estudiante :137 Rara vez : 53
## Universitario:158 Independiente:114 Siempre :166
## Satisf_Serv Zona
## Insatisfecho : 88 Rural :111
## Muy insatisfecho: 58 Urbana:414
## Muy satisfecho : 77
## Neutral :119
## Satisfecho :183
Masa marginal fila
## [1] 0.001904762
\[\text{Masa marginal} = \frac{1}{525} \approx 0.00190 \text{ (o 0.190%)}\]
Cada individuo aporta el 0.190% del peso total del análisis, lo que refleja una contribución equitativa y sin sesgos individuales al modelo.
## Duality diagramm
## class: acm dudi
## $call: dudi.acm(df = Y, scannf = FALSE, nf = 18)
##
## $nf: 18 axis-components saved
## $rank: 18
## eigen values: 0.2217 0.2166 0.2023 0.195 0.1861 ...
## vector length mode content
## 1 $cw 24 numeric column weights
## 2 $lw 525 numeric row weights
## 3 $eig 18 numeric eigen values
##
## data.frame nrow ncol content
## 1 $tab 525 24 modified array
## 2 $li 525 18 row coordinates
## 3 $l1 525 18 row normed scores
## 4 $co 24 18 column coordinates
## 5 $c1 24 18 column normed scores
## other elements: cr
Se muestra 18 valores propios (\(eig\)), correspondientes a las 18 dimensiones posibles del espacio factorial, ya que el rango del análisis es 18, determinado por el número total de categorías menos el número de variables. Además, existen 8 componentes principales los cuales fueron retenidos y almacenados, los cuales explicaran progresivamente la inercia (variabilidad) total del sistema.
La matriz de datos fue transformada internamente en una tabla modificada de tamaño 525 × 24 ($tab), lo cual corresponde a los 525 individuos y 24 categorías activas (niveles de variables).
Se generaron coordenadas para:
Las filas (individuos), tanto crudas (\(li\)) como normalizadas (\(l1\)), en las 8 dimensiones seleccionadas.
Las columnas (categorías), con sus posiciones factoriales (\(co\)) y versiones normalizadas (\(c1\)).
barplot(acm$eig, cex.axis=0.6, col="purple4",
cex.names = 0.8, # tamaño de nombres de ejes
ylab = "Valor propio (Eigenvalue)",
main = "Valores propios por dimensión")
eiglst <- data.frame(
vp = acm$eig,
porce = acm$eig*100/sum(acm$eig),
acupor = cumsum(acm$eig)*100/sum(acm$eig)
)
eiglst
## vp porce acupor
## 1 0.2216939 7.389797 7.389797
## 2 0.2165597 7.218658 14.608455
## 3 0.2022752 6.742508 21.350963
## 4 0.1950104 6.500348 27.851311
## 5 0.1861138 6.203793 34.055104
## 6 0.1817665 6.058883 40.113987
## 7 0.1766213 5.887377 46.001364
## 8 0.1729536 5.765119 51.766483
## 9 0.1677653 5.592178 57.358661
## 10 0.1637801 5.459336 62.817996
## 11 0.1609389 5.364628 68.182625
## 12 0.1526381 5.087936 73.270561
## 13 0.1504866 5.016219 78.286780
## 14 0.1382377 4.607923 82.894703
## 15 0.1369274 4.564246 87.458949
## 16 0.1311909 4.373029 91.831978
## 17 0.1298047 4.326824 96.158802
## 18 0.1152359 3.841198 100.000000
La inercia se distribuye de forma relativamente uniforme entre las primeras dimensiones, sin una dimensión que concentre gran parte de la variabilidad,es decir, ninguna supera el 10%. Esto indica que el conjunto de variables categóricas es complejo y que la estructura de datos está dispersa en múltiples dimensiones.
Por ello, se justifica conservar al menos las 5 a 8 primeras dimensiones para captar una representación sustancial de las relaciones entre categorías. Esto también sugiere que los patrones latentes en los datos no están dominados por unas pocas variables, sino que existe una diversidad de factores explicativos relevantes.
selin <- seq(25,445,25) # Selección de individuos múltiplos de 25
plot(acm, Tcol = TRUE, roweti = as.character(selin),
cframe = 1, cex.row = 0.6, cex.global = 0.8, gg = TRUE)
Este gráfico factorial respresenta las dos primeras dimensiones (con una inercia acumulada del 14.6%), permiteiendo visualizar las relaciones entre las categorías sociodemográficas, el uso de tecnología y la satisfacción con los servicios digitales.
Las categorías como “Universitario”, “Empleado”, “Uso_Tec.Siempre” y “Satisfecho” tienden a ubicarse en una misma zona, lo que sugiere un perfil asociado a mayor integración digital y satisfacción con los servicios. En oposición, categorías como “Primaria”, “Ama de casa”, “Uso_Tec.Nunca” y “Muy insatisfecho” aparecen en otro sector del gráfico, reflejando un perfil de vulnerabilidad digital, con bajo uso tecnológico y menor satisfacción. Asimismo, la residencia rural se aproxima a este segundo grupo, indicando una posible desigualdad territorial.
Masas de los Individuos
## [1] 0.001904762 0.001904762 0.001904762 0.001904762 0.001904762 0.001904762
## [7] 0.001904762 0.001904762
El Análisis de Correspondencias Múltiples (ACM) asignó una masa constante de 0.19% a cada individuo (n = 525), lo que garantiza que todos los participantes contribuyeron equitativamente al modelo. Esta uniformidad refuerza la validez de los patrones identificados, como la asociación entre mayores horas de internet y niveles educativos altos, ya que no están influenciados por observaciones atípicas o desbalanceadas.
Masas de las Categorías
## [1] 0.084444444 0.082222222 0.021587302 0.018095238 0.044444444 0.032380952
## [7] 0.050158730 0.014285714 0.017460317 0.055238095 0.043492063 0.036190476
## [13] 0.031111111 0.057777778 0.008253968 0.016825397 0.052698413 0.027936508
## [19] 0.018412698 0.024444444 0.037777778 0.058095238 0.035238095 0.131428571
Se observa que la categoría Zona_Residencia.Urbana (13.1%) tiene el mayor peso, coincidiendo con su predominio en la muestra. Otras categorías relevantes incluyen Uso_Tecnologia.Frecuentemenete (5.57%) y Ocupacion.Empleado (5.52%).
En contraste, categorías como Uso_Tecnologia.Siempre (0.82%) muestran una representación marginal, lo que sugiere limitaciones para generalizar conclusiones sobre estos grupos.
Inercia de las Categorías
## [1] 0.014178281 0.014561478 0.024953412 0.025247384 0.021350928 0.022757100
## [7] 0.019964597 0.026018898 0.025653006 0.019048844 0.021240014 0.022418709
## [13] 0.022993801 0.018818763 0.027399823 0.025576192 0.019415623 0.024408440
## [19] 0.025221448 0.024353241 0.022049926 0.019376465 0.022697553 0.006085576
El análisis de inercias identificó que:
Los no usuarios de tecnología (Uso_Tecnologia.Siempre, inercia=0.02739) y usuarios con ocupación Ama de casa (Rara vez, 0.02601) son los principales diferenciadores de perfiles, a pesar de su baja frecuencia. Esto revela que la no adopción tecnológica crea patrones únicos en la población.
Grupos vulnerables digitalmente: Desempleado (0.02565) y personas con educación primaria (0.02524) muestran comportamientos distintivos, destacando posibles brechas de acceso o habilidades.
Variables poco relevantes: La zona urbana (inercias=0.00608), aunque predominante (78.9%), no explica diferencias significativas. El género muestra contribuciones mínimas (F:0.01417, M:0.01456), indicando que no es un factor discriminante en este estudio.
Cuadro Resumen de Dimensiones
##
## Call:
## MCA(X = Y)
##
##
## Eigenvalues
## Dim.1 Dim.2 Dim.3 Dim.4 Dim.5 Dim.6 Dim.7 Dim.8 Dim.9
## Variance 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2
## % of var. 7.4 7.2 6.7 6.5 6.2 6.1 5.9 5.8 5.6
## Cumulative % of var. 7.4 14.6 21.4 27.9 34.1 40.1 46.0 51.8 57.4
## Dim.10 Dim.11 Dim.12 Dim.13 Dim.14 Dim.15 Dim.16 Dim.17
## Variance 0.2 0.2 0.2 0.2 0.1 0.1 0.1 0.1
## % of var. 5.5 5.4 5.1 5.0 4.6 4.6 4.4 4.3
## Cumulative % of var. 62.8 68.2 73.3 78.3 82.9 87.5 91.8 96.2
## Dim.18
## Variance 0.1
## % of var. 3.8
## Cumulative % of var. 100.0
##
## Individuals (the 10 first)
## Dim.1 ctr cos2 Dim.2 ctr cos2 Dim.3 ctr cos2 Dim.4
## 1 | -0.4 0.1 0.1 | -0.3 0.1 0.1 | 0.5 0.2 0.1 | -0.4
## 2 | -0.3 0.1 0.0 | 0.2 0.1 0.0 | -1.0 0.9 0.3 | 0.1
## 3 | -0.2 0.1 0.0 | 0.2 0.0 0.0 | -0.7 0.5 0.1 | -0.4
## 4 | -0.2 0.0 0.0 | 0.8 0.6 0.2 | -0.4 0.2 0.1 | -0.5
## 5 | 0.6 0.3 0.1 | -0.4 0.1 0.1 | 0.4 0.1 0.1 | 0.0
## 6 | -0.2 0.0 0.0 | 0.1 0.0 0.0 | -0.2 0.0 0.0 | 0.2
## 7 | -0.4 0.2 0.1 | -0.2 0.0 0.0 | 0.3 0.1 0.0 | -0.3
## 8 | 0.1 0.0 0.0 | -0.4 0.1 0.1 | -0.1 0.0 0.0 | -0.5
## 9 | -0.3 0.1 0.0 | 0.0 0.0 0.0 | 0.5 0.2 0.1 | -0.2
## 10 | -0.1 0.0 0.0 | 0.2 0.0 0.0 | 0.0 0.0 0.0 | -0.1
## ctr cos2 Dim.5 ctr cos2
## 1 0.2 0.1 | -0.3 0.1 0.1 |
## 2 0.0 0.0 | 0.6 0.4 0.1 |
## 3 0.1 0.0 | 0.7 0.5 0.1 |
## 4 0.3 0.1 | 0.4 0.2 0.1 |
## 5 0.0 0.0 | 0.3 0.1 0.0 |
## 6 0.0 0.0 | -0.3 0.1 0.0 |
## 7 0.1 0.0 | 0.9 0.9 0.3 |
## 8 0.3 0.2 | -0.3 0.1 0.1 |
## 9 0.0 0.0 | 0.0 0.0 0.0 |
## 10 0.0 0.0 | -0.5 0.3 0.1 |
##
## Categories (the 10 first)
## Dim.1 ctr cos2 v.test Dim.2 ctr cos2 v.test Dim.3
## F | 0.1 0.6 0.0 2.8 | 0.2 2.2 0.1 5.5 | -0.5
## M | -0.1 0.6 0.0 -2.8 | -0.2 2.3 0.1 -5.5 | 0.5
## Postgrado | -0.5 2.5 0.0 -4.5 | 0.6 3.1 0.0 4.9 | -1.1
## Primaria | -0.1 0.0 0.0 -0.4 | 0.4 1.2 0.0 3.0 | 0.9
## Secundaria | 0.6 8.2 0.1 8.8 | -0.6 7.7 0.1 -8.5 | -0.2
## Técnico | 0.3 1.4 0.0 3.4 | 0.3 1.2 0.0 3.2 | 0.0
## Universitario | -0.5 6.3 0.1 -7.9 | 0.0 0.0 0.0 -0.2 | 0.4
## Ama de casa | -1.0 7.1 0.1 -7.3 | 0.6 2.3 0.0 4.1 | 0.0
## Desempleado | 1.1 9.5 0.1 8.6 | 0.2 0.3 0.0 1.4 | 0.1
## Empleado | 0.0 0.0 0.0 -0.2 | 0.5 6.3 0.1 8.0 | 0.1
## ctr cos2 v.test Dim.4 ctr cos2 v.test Dim.5 ctr cos2
## F 10.1 0.2 -11.4 | -0.3 4.5 0.1 -7.4 | 0.0 0.1 0.0
## M 10.3 0.2 11.4 | 0.3 4.6 0.1 7.4 | 0.0 0.1 0.0
## Postgrado 13.0 0.2 -9.7 | 0.8 6.5 0.1 6.8 | 0.2 0.4 0.0
## Primaria 7.0 0.1 7.1 | 1.1 11.4 0.2 8.9 | -0.2 0.3 0.0
## Secundaria 1.3 0.0 -3.4 | -0.1 0.1 0.0 -0.8 | -0.5 5.8 0.1
## Técnico 0.0 0.0 -0.5 | -0.4 2.3 0.0 -4.2 | 1.3 28.8 0.4
## Universitario 4.0 0.1 6.0 | -0.4 5.0 0.1 -6.6 | -0.4 4.3 0.1
## Ama de casa 0.0 0.0 0.0 | -0.3 0.7 0.0 -2.2 | 1.0 7.0 0.1
## Desempleado 0.1 0.0 0.9 | 0.7 4.9 0.1 5.8 | 1.1 10.9 0.1
## Empleado 0.3 0.0 1.7 | -0.6 9.6 0.2 -9.4 | -0.5 6.6 0.1
## v.test
## F 0.8 |
## M -0.8 |
## Postgrado 1.6 |
## Primaria -1.5 |
## Secundaria -6.8 |
## Técnico 14.5 |
## Universitario -6.0 |
## Ama de casa 6.7 |
## Desempleado 8.4 |
## Empleado -7.6 |
##
## Categorical variables (eta2)
## Dim.1 Dim.2 Dim.3 Dim.4 Dim.5
## Genero | 0.0 0.1 0.2 0.1 0.0 |
## N_edu | 0.2 0.2 0.3 0.3 0.4 |
## Ocupacion | 0.4 0.2 0.1 0.2 0.3 |
## Uso_Tec | 0.1 0.3 0.2 0.3 0.2 |
## Satisf_Serv | 0.4 0.5 0.3 0.2 0.1 |
## Zona | 0.2 0.0 0.1 0.0 0.0 |
El resumen factorial revela que las primeras ocho dimensiones del Análisis de Correspondencias Múltiples explican en conjunto el 51.8% de la variabilidad total, lo que indica una estructura compleja en las relaciones entre las variables categóricas.
Las variables que más contribuyen a estas dimensiones son el nivel educativo, la ocupación, el uso de tecnología y la satisfacción con los servicios digitales. Las categorías “Desempleado”, “Secundaria”, “Técnico” y “Ama de casa” destacan por su alta contribución a la construcción de las primeras dimensiones, reflejando perfiles diferenciados en el uso y percepción de los servicios digitales.
Además, el valor cos2 muestra que estas categorías están bien representadas en el plano factorial, lo que refuerza su relevancia en la segmentación de los grupos. En contraste, variables como género y zona de residencia aportan poca varianza, lo que indica que no son ejes principales en la diferenciación de perfiles digitales dentro de esta muestra.
Graficos Factoriales
Identificando los perfiles sociodigitales a partir de la proximidad y dirección de las categorías sobre las dos primeras dimensiones se observa que en el cuadrante superior derecho, se observa un agrupamiento de “Femenino”, “Tecnico”, “Desempleado”, “Rural” y “Neutral”, lo que sugiere un perfil femenino con educación Tecnica, Desempleada y ubicada en zona Rural, asociada a satisfacción neutral con los servicios digitales. En contraposición, en el cuadrante inferior izquierdo se posicionan “Urbano”, “Masculino”, representa claramente la no integración digital. “Estudiante”, “Universitario”, “Satisfecho”, “Rara vez” y “Nunca”, este extremo izquierdo, con “Nunca” y “Rara vez”, representa claramente la no integración digital.
Grafico de valores propios
fviz_eig(fit2, addlabels=TRUE, hjust = 0.5, barfill="white", barcolor ="purple3", linecolor ="red") + theme_minimal()
El gráfico de valores propios indica que la información contenida en las variables categóricas está distribuida de forma relativamente homogénea entre las dimensiones factoriales, sin que una sola domine el análisis. Las primeras dos dimensiones explican conjuntamente alrededor del 12.1% de la variabilidad total (6.1% y 6%, respectivamente), lo cual confirma que la estructura de los datos es compleja y multidimensional. Esto sugiere que para captar una representación fiel de los patrones subyacentes en los datos, es necesario considerar al menos las primeras cinco u ocho dimensiones. La pendiente suave de la curva roja (línea de inercia acumulada) refuerza esta conclusión, mostrando que no existe un punto de quiebre abrupto, sino una contribución progresiva de cada eje al entendimiento global del sistema.
\(H₀\): No existe asociación entre el nivel educativo y la satisfacción con los servicios digitales; ambas variables son independientes.
\(H₁\): Existe asociación entre el nivel educativo y la satisfacción con los servicios digitales; ambas variables no son independientes.
##
## Pearson's Chi-squared test
##
## data: tabla
## X-squared = 30.229, df = 16, p-value = 0.01685
## [1] 0.0168504
La prueba de independencia chi-cuadrado aplicada a las variables Ocupación y Uso de Tecnología arroja un valor de \(X^2 =30.229\) con 16 grados de libertad y un valor-p de 0.01685. Dado que el valor-p es menor que 0.05, se rechaza la hipótesis nula, lo que indica que existe una asociación estadísticamente significativa entre el nivel educativo y la satisfacción con los servicios digitales. Este resultado sugiere que la percepción de satisfacción no es aleatoria frente al nivel educativo alcanzado: ciertos niveles educativos tienden a reportar mayores (o menores) niveles de satisfacción. Esto podría deberse a diferencias en expectativas, competencias digitales o experiencias previas con los servicios. Por ejemplo, personas con educación universitaria o de postgrado podrían tener mayor capacidad para aprovechar los servicios digitales, lo que se traduce en niveles más altos de satisfacción.
ggbarstats(
data = Y,
x = N_edu,
y = Satisf_Serv,
label = "both",
label.args = list(size = 2.5) # Ajusta el tamaño aquí
)
A continuación, se india una asociación estadísticamente significativa entre entre el nivel educativo y la satisfacción con los servicios digitales. A nivel visual, se observa que las personas con nivel universitario y secundaria representan proporciones más altas dentro de las categorías de “Satisfecho” y “Muy satisfecho”, mientras que quienes tienen solo educación primaria o postgrado se distribuyen más en los extremos (Insatisfecho y Muy insatisfecho), lo que sugiere una percepción polarizada en estos grupos. Además, la categoría “Neutral” muestra una alta concentración de personas con educación secundaria (34%) y técnica (19%), posiblemente indicando una experiencia digital aceptable pero no destacada. Aunque el tamaño del efecto (Cramér’s V = 0.11) es pequeño, el patrón general sugiere que a mayor nivel educativo, tiende a aumentar la satisfacción con los servicios digitales, aunque no de forma lineal ni uniforme. En conjunto, este gráfico apoya la idea de que la educación influye en la percepción y aprovechamiento de los servicios digitales, pero también señala la necesidad de explorar otros factores que expliquen las diferencias dentro de los mismos niveles.
Este estudio permitió analizar la relación entre características sociodemográficas y hábitos digitales en personas adultas, con un enfoque en el uso de tecnologías digitales y la satisfacción con los servicios asociados. Los análisis descriptivos mostraron patrones claros: las personas con niveles educativos más altos, empleo formal y residencia en zonas urbanas tienden a reportar un mayor uso de tecnología y una mayor satisfacción. Por el contrario, los individuos con menor nivel educativo, amas de casa, personas desempleadas o residentes en zonas rurales presentaron menores niveles de uso y mayor insatisfacción, lo que sugiere una posible brecha digital estructural.
El Análisis de Correspondencias Múltiples (ACM), tanto con ade4, ca como con FactoMineR, confirmó estas tendencias, revelando agrupaciones bien definidas entre categorías asociadas a inclusión digital (como “Universitario”, “Empleado”, “Siempre”, “Satisfecho”) y otras vinculadas a exclusión digital (como “Primaria”, “Ama de casa”, “Nunca”, “Muy insatisfecho”). Las pruebas de chi-cuadrado evidenciaron asociaciones significativas entre variables como nivel educativo y satisfacción, aunque con tamaños de efecto pequeños, lo cual indica que las relaciones son reales pero no determinantes por sí solas. Además, la ocupación no mostró asociación significativa con el uso tecnológico, lo que sugiere que este comportamiento puede depender más de factores como la educación, el acceso y la experiencia previa.
Finalmente, las visualizaciones reforzaron la complejidad del fenómeno: las brechas digitales no responden a una única causa, sino a una combinación de factores estructurales, sociales y tecnológicos. Por tanto, se recomienda profundizar con análisis multivariados y modelos predictivos, así como considerar variables complementarias como ingreso, habilidades digitales o acceso a dispositivos, para una comprensión más integral del ecosistema digital en la población.
La diabetes es una de las enfermedades crónicas con mayor prevalencia a nivel mundial, afectando la calidad de vida de millones de personas. Su diagnóstico temprano es crucial para implementar intervenciones médicas y hábitos de vida que reduzcan complicaciones futuras. En este contexto, el uso de herramientas estadísticas como el Análisis Discriminante Lineal (LDA, por sus siglas en inglés) permite construir modelos predictivos que ayuden a clasificar correctamente a los individuos con o sin esta enfermedad, a partir de variables clínicas y antecedentes personales.
El presente trabajo tiene como objetivo aplicar el Análisis Discriminante Lineal a un conjunto de datos provisto por el National Institute of Diabetes and Digestive and Kidney Diseases, el cual contiene información clínica de 768 mujeres de etnia Pima mayores de 21 años. Las variables incluyen medidas como la glucosa en plasma, la presión arterial, el índice de masa corporal, entre otras.
Variable | Tipo | Descripción |
---|---|---|
Pregnancies | Cuantitativa discreta | Número de veces que la paciente ha estado embarazada |
Glucose | Cuantitativa continua | Concentración de glucosa en plasma a las 2 horas tras una prueba oral |
BloodPressure | Cuantitativa continua | Presión arterial diastólica en milímetros de mercurio (mm Hg) |
SkinThickness | Cuantitativa continua | Espesor del pliegue cutáneo del tríceps en milímetros (mm) |
Insulin | Cuantitativa continua | Nivel de insulina sérica a las 2 horas en micro unidades por mililitro (μU/mL) |
BMI | Cuantitativa continua | Índice de masa corporal (peso/talla²) en kg/m² |
DiabetesPedigreeFunction | Cuantitativa continua | Indicador del historial familiar de diabetes (valor sin unidad) |
Age | Cuantitativa discreta | Edad de la paciente en años |
Outcome | Categórica binaria | Diagnóstico de diabetes (Diabetes / No_Diabetes) |
# Leer los datos (asumiendo que están en un archivo CSV)
diabetes <- read.csv("diabetes.csv")
# Ver estructura inicial
head(diabetes)
## Pregnancies Glucose BloodPressure SkinThickness Insulin BMI
## 1 6 148 72 35 0 33.6
## 2 1 85 66 29 0 26.6
## 3 8 183 64 0 0 23.3
## 4 1 89 66 23 94 28.1
## 5 0 137 40 35 168 43.1
## 6 5 116 74 0 0 25.6
## DiabetesPedigreeFunction Age Outcome
## 1 0.627 50 1
## 2 0.351 31 0
## 3 0.672 32 1
## 4 0.167 21 0
## 5 2.288 33 1
## 6 0.201 30 0
## [1] 768 9
## 'data.frame': 768 obs. of 9 variables:
## $ Pregnancies : int 6 1 8 1 0 5 3 10 2 8 ...
## $ Glucose : int 148 85 183 89 137 116 78 115 197 125 ...
## $ BloodPressure : int 72 66 64 66 40 74 50 0 70 96 ...
## $ SkinThickness : int 35 29 0 23 35 0 32 0 45 0 ...
## $ Insulin : int 0 0 0 94 168 0 88 0 543 0 ...
## $ BMI : num 33.6 26.6 23.3 28.1 43.1 25.6 31 35.3 30.5 0 ...
## $ DiabetesPedigreeFunction: num 0.627 0.351 0.672 0.167 2.288 ...
## $ Age : int 50 31 32 21 33 30 26 29 53 54 ...
## $ Outcome : int 1 0 1 0 1 0 1 0 1 1 ...
# Convertir Outcome a factor y establecer niveles
diabetes$Outcome <- factor(diabetes$Outcome, levels = c(0, 1), labels = c("No_Diabetes", "Diabetes"))
# Establecer Diabetes como categoría de referencia (positivo)
diabetes$Outcome <- relevel(diabetes$Outcome, ref = "Diabetes")
# Verificar la categoría de referencia
contrasts(diabetes$Outcome)
## No_Diabetes
## Diabetes 0
## No_Diabetes 1
Characteristic | Diabetes N = 2681 |
95% CI | No_Diabetes N = 5001 |
95% CI |
---|---|---|---|---|
Pregnancies | 5 (4) | 4.4, 5.3 | 3 (3) | 3.0, 3.6 |
Glucose | 141 (32) | 137, 145 | 110 (26) | 108, 112 |
BloodPressure | 71 (21) | 68, 73 | 68 (18) | 67, 70 |
SkinThickness | 22 (18) | 20, 24 | 20 (15) | 18, 21 |
Insulin | 100 (139) | 84, 117 | 69 (99) | 60, 77 |
BMI | 35 (7) | 34, 36 | 30 (8) | 30, 31 |
DiabetesPedigreeFunction | 0.55 (0.37) | 0.51, 0.60 | 0.43 (0.30) | 0.40, 0.46 |
Age | 37 (11) | 36, 38 | 31 (12) | 30, 32 |
Abbreviation: CI = Confidence Interval | ||||
1 Mean (SD) |
##
## Descriptive statistics by group
## group: Diabetes
## vars n mean sd median trimmed mad min
## Pregnancies 1 268 4.87 3.74 4.00 4.60 4.45 0.00
## Glucose 2 268 141.26 31.94 140.00 141.69 35.58 0.00
## BloodPressure 3 268 70.82 21.49 74.00 73.99 11.86 0.00
## SkinThickness 4 268 22.16 17.68 27.00 21.61 19.27 0.00
## Insulin 5 268 100.34 138.69 0.00 73.64 0.00 0.00
## BMI 6 268 35.14 7.26 34.25 34.84 5.71 0.00
## DiabetesPedigreeFunction 7 268 0.55 0.37 0.45 0.50 0.31 0.09
## Age 8 268 37.07 10.97 36.00 36.28 11.86 21.00
## max range skew kurtosis se
## Pregnancies 17.00 17.00 0.50 -0.47 0.23
## Glucose 199.00 199.00 -0.49 1.35 1.95
## BloodPressure 114.00 114.00 -1.92 4.53 1.31
## SkinThickness 99.00 99.00 0.11 -0.25 1.08
## Insulin 846.00 846.00 1.82 4.20 8.47
## BMI 67.10 67.10 0.00 4.60 0.44
## DiabetesPedigreeFunction 2.42 2.33 1.70 4.40 0.02
## Age 70.00 49.00 0.58 -0.38 0.67
## ------------------------------------------------------------
## group: No_Diabetes
## vars n mean sd median trimmed mad min
## Pregnancies 1 500 3.30 3.02 2.00 2.88 2.97 0.00
## Glucose 2 500 109.98 26.14 107.00 108.87 23.72 0.00
## BloodPressure 3 500 68.18 18.06 70.00 69.97 11.86 0.00
## SkinThickness 4 500 19.66 14.89 21.00 19.08 16.31 0.00
## Insulin 5 500 68.79 98.87 39.00 49.19 57.82 0.00
## BMI 6 500 30.30 7.69 30.05 30.37 7.19 0.00
## DiabetesPedigreeFunction 7 500 0.43 0.30 0.34 0.38 0.22 0.08
## Age 8 500 31.19 11.67 27.00 28.98 7.41 21.00
## max range skew kurtosis se
## Pregnancies 13.00 13.00 1.11 0.65 0.13
## Glucose 197.00 197.00 0.17 1.85 1.17
## BloodPressure 122.00 122.00 -1.80 5.58 0.81
## SkinThickness 60.00 60.00 0.03 -1.05 0.67
## Insulin 744.00 744.00 2.48 9.30 4.42
## BMI 57.30 57.30 -0.66 2.99 0.34
## DiabetesPedigreeFunction 2.33 2.25 1.99 6.01 0.01
## Age 81.00 60.00 1.56 1.91 0.52
ggscatmat(data = diabetes, color = "Outcome", alpha = 0.4) +
theme_bw() +
labs(title = "Correlación por pares") +
theme(plot.title = element_text(size = 16, face = "bold"),
axis.text = element_blank(),
strip.text = element_text(colour = "black", size = 8, face = 2))
ggpairs(diabetes, mapping = ggplot2::aes(color = Outcome), alpha = 0.4,
lower = list(continuous = "smooth"),
diag = list(continuous = "bar"),
axisLabels = "none")
## Formula containing included variables:
##
## Outcome ~ Glucose + BMI + Pregnancies + DiabetesPedigreeFunction +
## BloodPressure + Age
## <environment: 0x000001b771db38b0>
##
##
## Values calculated in each step of the selection procedure:
##
## vars Wilks.lambda F.statistics.overall p.value.overall
## 1 Glucose 0.7823018 213.16175 8.935432e-43
## 2 BMI 0.7445276 131.24858 9.872099e-50
## 3 Pregnancies 0.7172781 100.37925 8.783711e-55
## 4 DiabetesPedigreeFunction 0.7077126 78.78031 5.910232e-56
## 5 BloodPressure 0.7012579 64.92376 1.762995e-56
## 6 Age 0.6982123 54.82107 2.917434e-56
## F.statistics.diff p.value.diff
## 1 213.161752 8.935432e-43
## 2 38.812869 7.691106e-10
## 3 29.024475 9.521767e-08
## 4 10.312757 1.376453e-03
## 5 7.013840 8.255335e-03
## 6 3.319493 6.885480e-02
## Boruta performed 99 iterations in 47.08333 secs.
## 7 attributes confirmed important: Age, BMI, DiabetesPedigreeFunction,
## Glucose, Insulin and 2 more;
## No attributes deemed unimportant.
## 1 tentative attributes left: BloodPressure;
Para el análisis posterior, se seleccionaron las siguientes variables: Glucose, BMI, Pregnancies, DiabetesPedigreeFunction, Age.
Glucose: Es el principal indicador clínico para el diagnóstico de diabetes. Mostró la mayor capacidad discriminativa.
BMI (Índice de Masa Corporal): Está fuertemente asociado con obesidad, un factor de riesgo clave en diabetes tipo 2.
DiabetesPedigreeFunction: Representa predisposición genética, lo cual incrementa la probabilidad de desarrollar la enfermedad.
Age: Aunque marginalmente significativa en Wilks, fue confirmada por Boruta. El riesgo de diabetes aumenta con la edad.
Estas fueron elegidas por cumplir con criterios estadísticos (greedy Wilks y Boruta) y relevancia clínica
## [1] 500 5
## [1] 268 5
## Glucose BMI Age
## Glucose 683.3623246 26.4844529 69.5468938
## BMI 26.4844529 59.1338701 3.2362745
## Age 69.5468938 3.2362745 136.1341683
## DiabetesPedigreeFunction 0.7470368 0.1625226 0.1453953
## DiabetesPedigreeFunction
## Glucose 0.74703675
## BMI 0.16252256
## Age 0.14539533
## DiabetesPedigreeFunction 0.08945202
## Glucose BMI Age
## Glucose 1020.1394572 11.6957488 34.5294594
## BMI 11.6957488 52.7506932 -14.9773995
## Age 34.5294594 -14.9773995 120.3025882
## DiabetesPedigreeFunction 0.3148521 0.3698551 -0.3598839
## DiabetesPedigreeFunction
## Glucose 0.3148521
## BMI 0.3698551
## Age -0.3598839
## DiabetesPedigreeFunction 0.1386479
##
## Box's M-test for Homogeneity of Covariance Matrices
##
## data: diabetes_sel[, -5]
## Chi-Sq (approx.) = 51.674, df = 10, p-value = 1.311e-07
Hipótesis nula (H₀): Las matrices de varianzas-covarianzas poblacionales son iguales en ambos grupos.
Hipótesis alternativa (H₁): Las matrices de varianzas-covarianzas no son iguales en los grupos.
Rechazamos la hipótesis nula de igualdad de matrices de varianzas-covarianzas entre los grupos.
Conclusión: Las relaciones entre las variables difieren significativamente entre personas con y sin diabetes.
Esto sugiere que las relaciones entre variables no son homogéneas, por lo tanto, técnicas como el Análisis Discriminante Lineal (LDA) podrían verse afectadas, ya que suponen homogeneidad de covarianzas.
## $multivariateNormality
## Test H p value MVN
## 1 Royston 287.9169 4.382438e-61 NO
##
## $univariateNormality
## Test Variable Statistic p value Normality
## 1 Anderson-Darling Glucose 3.0876 <0.001 NO
## 2 Anderson-Darling BMI 3.1343 <0.001 NO
## 3 Anderson-Darling Age 33.2199 <0.001 NO
## 4 Anderson-Darling DiabetesPedigreeFunction 19.7391 <0.001 NO
##
## $Descriptives
## n Mean Std.Dev Median Min Max
## Glucose 500 109.980000 26.1411998 107.000 0.000 197.000
## BMI 500 30.304200 7.6898550 30.050 0.000 57.300
## Age 500 31.190000 11.6676548 27.000 21.000 81.000
## DiabetesPedigreeFunction 500 0.429734 0.2990853 0.336 0.078 2.329
## 25th 75th Skew Kurtosis
## Glucose 93.00000 125.00000 0.1720738 1.850134
## BMI 25.40000 35.30000 -0.6619120 2.991773
## Age 23.00000 37.00000 1.5621923 1.912165
## DiabetesPedigreeFunction 0.22975 0.56175 1.9942203 6.011764
Hipótesis nula (H₀): Las variables siguen una distribución normal multivariada.
Hipótesis alternativa (H₁): Las variables no siguen una distribución normal multivariada.
Resultado | Valor |
---|---|
Estadístico Royston | 287.92 |
Valor p | < 0.001 |
Conclusión: Se rechaza H₀ → No hay normalidad multivariada
Además, todas las variables individualmente (según Anderson-Darling) también rechazan la normalidad univariada.
## $multivariateNormality
## Test H p value MVN
## 1 Royston 155.3682 1.437786e-32 NO
##
## $univariateNormality
## Test Variable Statistic p value Normality
## 1 Anderson-Darling Glucose 1.2535 0.0029 NO
## 2 Anderson-Darling BMI 3.3238 <0.001 NO
## 3 Anderson-Darling Age 3.1190 <0.001 NO
## 4 Anderson-Darling DiabetesPedigreeFunction 8.3062 <0.001 NO
##
## $Descriptives
## n Mean Std.Dev Median Min Max
## Glucose 268 141.25746 31.9396221 140.000 0.000 199.00
## BMI 268 35.14254 7.2629672 34.250 0.000 67.10
## Age 268 37.06716 10.9682537 36.000 21.000 70.00
## DiabetesPedigreeFunction 268 0.55050 0.3723545 0.449 0.088 2.42
## 25th 75th Skew Kurtosis
## Glucose 119.0000 167.000 -0.4900236113 1.3504302
## BMI 30.8000 38.775 0.0005901686 4.5960971
## Age 28.0000 44.000 0.5751511067 -0.3834211
## DiabetesPedigreeFunction 0.2625 0.728 1.7031407840 4.3966539
Hipótesis nula (H₀): Las variables siguen una distribución normal multivariada.
Hipótesis alternativa (H₁): Las variables no siguen una distribución normal multivariada.
Resultado | Valor |
---|---|
Estadístico Royston | 155.37 |
Valor p | < 0.001 |
Conclusión: Se rechaza H₀ → No hay normalidad multivariada
Al igual que el grupo anterior, todas las variables univariadas también violan la normalidad.
## Df Sum Sq Mean Sq F value Pr(>F)
## diabetes_sel$Outcome 1 170689 170689 213.2 <2e-16 ***
## Residuals 766 613375 801
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Hipótesis:
Resultado del ANOVA:
Estadístico F = 213.2
Valor-p = < 2e-16
Conclusión:
Dado que el valor-p es menor que 0.05, se rechaza \(H_0\) . Por lo tanto, la glucosa presenta diferencias significativas entre los grupos de personas con y sin diabetes.
## Df Sum Sq Mean Sq F value Pr(>F)
## diabetes_sel$Outcome 1 4084 4084 71.77 <2e-16 ***
## Residuals 766 43592 57
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Hipótesis:
Resultado del ANOVA:
Estadístico F = 71.77
Valor-p = < 2e-16
Conclusión:
El valor-p es menor que 0.05, por lo que se rechaza \(H_0\) . Esto indica que el BMI difiere significativamente entre los grupos de estudio.
## Df Sum Sq Mean Sq F value Pr(>F)
## diabetes_sel$Outcome 1 6027 6027 46.14 2.21e-11 ***
## Residuals 766 100052 131
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Hipótesis:
Resultado del ANOVA:
Estadístico F = 46.14
Valor-p = < 2.21e-11
Conclusión:
Se observa un valor-p menor a 0.05, por tanto, se rechaza \(H_0\). Esto sugiere que la edad es significativamente distinta entre personas con y sin diabetes.
## Df Sum Sq Mean Sq F value Pr(>F)
## diabetes_sel$Outcome 1 2.54 2.5447 23.87 1.25e-06 ***
## Residuals 766 81.66 0.1066
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Hipótesis:
Resultado del ANOVA:
Estadístico F = 23.87
Valor-p = < 06-11
Conclusión:
Dado que el valor-p < 0.05, se rechaza \(H_0\) . Por tanto, el índice genético muestra diferencias significativas entre los grupos.
# MANOVA para evaluar si hay diferencias significativas entre grupos
modelo.adj <- manova(data=diabetes_sel, cbind(Glucose,BMI,Age,DiabetesPedigreeFunction) ~ Outcome)
summary(modelo.adj,test="Wilks")
## Df Wilks approx F num Df den Df Pr(>F)
## Outcome 1 0.72114 73.762 4 763 < 2.2e-16 ***
## Residuals 766
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Existen diferencias estadísticamente significativas en los perfiles metabólicos entre pacientes diabéticos y no diabéticos, lo que valida el uso de estas variables para un diagnóstico diferencial.
# División de datos en entrenamiento (70%) y prueba (30%)
set.seed(10) # Para reproducibilidad
suscrip_split <- initial_split(diabetes_sel, prop = 0.70, strata = Outcome)
suscrip_train <- training(suscrip_split)
suscrip_test <- testing(suscrip_split)
# Verificación de proporciones en los conjuntos
prop.table(table(diabetes_sel$Outcome)) # Proporciones originales
##
## Diabetes No_Diabetes
## 0.3489583 0.6510417
##
## Diabetes No_Diabetes
## 0.3482309 0.6517691
##
## Diabetes No_Diabetes
## 0.3506494 0.6493506
La estratificación mantuvo las proporciones originales (~35% Diabetes, ~65% No_Diabetes) en ambos conjuntos, lo que es importante para evitar sesgos
##
## Diabetes No_Diabetes
## 187 350
modelo <- lda(Outcome ~ Glucose + BMI + Age + DiabetesPedigreeFunction,
prior = c(187/537, 350/537),
data = suscrip_train)
print(modelo)
## Call:
## lda(Outcome ~ Glucose + BMI + Age + DiabetesPedigreeFunction,
## data = suscrip_train, prior = c(187/537, 350/537))
##
## Prior probabilities of groups:
## Diabetes No_Diabetes
## 0.3482309 0.6517691
##
## Group means:
## Glucose BMI Age DiabetesPedigreeFunction
## Diabetes 140.5668 35.29786 37.64171 0.5592513
## No_Diabetes 110.5171 30.32914 31.32286 0.4277714
##
## Coefficients of linear discriminants:
## LD1
## Glucose -0.02370747
## BMI -0.05868070
## Age -0.02850240
## DiabetesPedigreeFunction -0.68228612
wilk.ind <- function(modelo, data){
vars <- all.vars(modelo)
dif <- list()
for(i in 2:length(vars)){
dif[[i-1]] <- greedy.wilks(as.formula(paste0(vars[1], "~", vars[i])),
data=data,niveau = 1)$results
}
wilk <- bind_rows(dif, .id = "column_label")[,1:4]
wilk
}
wilk.ind(Outcome ~ Glucose+BMI+Age+DiabetesPedigreeFunction, data= suscrip_train)
## column_label vars Wilks.lambda F.statistics.overall
## 1 1 Glucose 0.8025743 131.60495
## 2 2 BMI 0.9088321 53.66760
## 3 3 Age 0.9360838 36.53001
## 4 4 DiabetesPedigreeFunction 0.9638005 20.09412
Glucose es la variable que individualmente mejor discrimina entre grupos,seguida de Age, BMI y DiabetesPedigreeFunction.
## Formula containing included variables:
##
## Outcome ~ Glucose + BMI + Age + DiabetesPedigreeFunction
## <environment: 0x000001b78ac56900>
##
##
## Values calculated in each step of the selection procedure:
##
## vars Wilks.lambda F.statistics.overall p.value.overall
## 1 Glucose 0.8025743 131.60495 2.169870e-27
## 2 BMI 0.7612277 83.74919 2.314164e-32
## 3 Age 0.7397040 62.51951 1.201935e-34
## 4 DiabetesPedigreeFunction 0.7301229 49.16112 3.352557e-35
## F.statistics.diff p.value.diff
## 1 131.604953 2.169870e-27
## 2 29.004567 1.083147e-07
## 3 15.509104 9.299354e-05
## 4 6.981234 8.478954e-03
Todas las variables son significativas (p < 0.1) en el modelo conjunto
Jerarquía de factores de riesgo:
Glucosa: Marcador metabólico directo
Edad: Factor de riesgo no modificable
BMI: Indicador de obesidad
Historial familiar: Factor genético
## Evaluación de la función discriminante
modelo.adj1 <- manova(data=suscrip_train, cbind(Glucose,BMI,Age,DiabetesPedigreeFunction) ~ Outcome)
summary(modelo.adj1,test="Wilks")
## Df Wilks approx F num Df den Df Pr(>F)
## Outcome 1 0.73012 49.161 4 532 < 2.2e-16 ***
## Residuals 535
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [,1] [,2] [,3] [,4]
## Outcome 0.3696325 -5.551115e-17 6.850697e-18 6.850697e-18
## [1] 0.2698771
# El 26.99% de la variabilidad total es explicada por la función discriminante
# Esto indica una capacidad discriminante moderada-fuerte
#Correlacion canonica
eta = sqrt(eta2)
eta
## [1] 0.519497
# Como se aproxima a 1 entonces la FD tiene gran capacidad explicativa.
# Cálculo de coeficientes estandarizados
summary((modelo.adj1),test="Wilks")$SS
## $Outcome
## Glucose BMI Age
## Glucose 110056.5022 18197.84216 23142.6913
## BMI 18197.8422 3009.01312 3826.6439
## Age 23142.6913 3826.64391 4866.4472
## DiabetesPedigreeFunction 481.5428 79.62311 101.2589
## DiabetesPedigreeFunction
## Glucose 481.54284
## BMI 79.62311
## Age 101.25887
## DiabetesPedigreeFunction 2.10695
##
## $Residuals
## Glucose BMI Age
## Glucose 447401.3116 13636.8519 34860.541467
## BMI 13636.8519 29996.1619 -3570.836458
## Age 34860.5415 -3570.8365 71271.511795
## DiabetesPedigreeFunction 323.3097 154.1833 8.289668
## DiabetesPedigreeFunction
## Glucose 323.309730
## BMI 154.183332
## Age 8.289668
## DiabetesPedigreeFunction 56.096909
std.b.Glucose=(sqrt(summary(modelo.adj1)$SS$Residuals[1,1]/535))*modelo$scaling[1,1]
std.b.BMI=(sqrt(summary(modelo.adj1)$SS$Residuals[2,2]/535))*modelo$scaling[2,1]
std.b.Age=(sqrt(summary(modelo.adj1)$SS$Residuals[3,3]/535))*modelo$scaling[3,1]
std.b.DiabetesPedigreeFunction=(sqrt(summary(modelo.adj1)$SS$Residuals[4,4]/535))*modelo$scaling[4,1]
# Matriz de covarianza residual y correlaciones
SCPC.residual <- summary((modelo.adj1), test = "Wilks")$SS$Residuals
SCPC.residual.varianzas <- SCPC.residual/535
SCPC.residual.correlaciones <- cov2cor(SCPC.residual.varianzas)
# Cálculo de la matriz de estructura (correlaciones entre variables y función discriminante)
l.Glucose=SCPC.residual.correlaciones[1,1]*std.b.Glucose+
SCPC.residual.correlaciones[1,2]*std.b.BMI+
SCPC.residual.correlaciones[1,3]*std.b.Age+
SCPC.residual.correlaciones[1,4]*std.b.DiabetesPedigreeFunction
l.BMI=SCPC.residual.correlaciones[2,1]*std.b.Glucose+
SCPC.residual.correlaciones[2,2]*std.b.BMI+
SCPC.residual.correlaciones[2,3]*std.b.Age+
SCPC.residual.correlaciones[2,4]*std.b.DiabetesPedigreeFunction
l.Age=SCPC.residual.correlaciones[1,3]*std.b.Glucose+
SCPC.residual.correlaciones[2,3]*std.b.BMI+
SCPC.residual.correlaciones[3,3]*std.b.Age+
SCPC.residual.correlaciones[4,3]*std.b.DiabetesPedigreeFunction
l.DiabetesPedigreeFunction=SCPC.residual.correlaciones[1,3]*std.b.Glucose+
SCPC.residual.correlaciones[2,3]*std.b.BMI+
SCPC.residual.correlaciones[3,3]*std.b.Age+
SCPC.residual.correlaciones[4,3]*std.b.DiabetesPedigreeFunction
rbind(l.Glucose,l.BMI,l.Age,l.DiabetesPedigreeFunction)
## [,1]
## l.Glucose -0.8157820
## l.BMI -0.5209477
## l.Age -0.4297966
## l.DiabetesPedigreeFunction -0.4297966
# Lectura de datos sintéticos para predicción
datosn <- read_excel("synthetic_diabetes_data.xlsx")
# Predicción con el modelo LDA
clase <- predict(modelo, datosn)$class
proba <- predict(modelo, datosn)$posterior
# Combinación de resultados
datonsnp <- cbind(datosn, clase, proba)
datonsnp
## Glucose BMI Age DiabetesPedigreeFunction clase Diabetes No_Diabetes
## 1 172 35.0 73 1.462 Diabetes 0.9600617 0.03993826
## 2 162 32.1 22 0.175 No_Diabetes 0.4233135 0.57668645
## 3 84 27.7 40 2.121 No_Diabetes 0.3432640 0.65673602
## 4 176 37.8 48 1.179 Diabetes 0.9134218 0.08657817
## 5 141 22.9 67 1.048 Diabetes 0.6816701 0.31832992
## 6 90 27.7 27 2.324 No_Diabetes 0.3179638 0.68203620
## 7 172 30.0 64 1.845 Diabetes 0.9433229 0.05667713
## 8 191 32.9 28 0.884 Diabetes 0.8115893 0.18841075
## 9 144 43.2 67 1.469 Diabetes 0.9390769 0.06092312
## 10 157 24.8 55 1.350 Diabetes 0.7709068 0.22909325
## 11 186 34.7 34 2.407 Diabetes 0.9519088 0.04809122
## 12 169 37.2 37 2.127 Diabetes 0.9258376 0.07416237
## 13 173 20.0 56 1.894 Diabetes 0.8637641 0.13623586
## 14 122 37.6 70 1.395 Diabetes 0.8451363 0.15486367
## 15 71 23.9 60 1.508 No_Diabetes 0.2437875 0.75621245
## 16 157 20.5 24 2.417 Diabetes 0.6668253 0.33317473
## 17 107 48.4 22 1.557 Diabetes 0.6104859 0.38951406
## 18 199 48.9 26 0.762 Diabetes 0.9381533 0.06184665
## 19 90 44.0 74 0.811 Diabetes 0.6998680 0.30013204
## 20 127 28.1 62 0.497 Diabetes 0.5167367 0.48326334
## Glucose BMI Age DiabetesPedigreeFunction Outcome
## 1 78 31.0 26 0.248 Diabetes
## 2 197 30.5 53 0.158 Diabetes
## 3 125 0.0 54 0.232 Diabetes
## 4 189 30.1 59 0.398 Diabetes
## 5 100 30.0 32 0.484 Diabetes
## 6 118 45.8 31 0.551 Diabetes
## 7 107 29.6 31 0.254 Diabetes
## 8 115 34.6 32 0.529 Diabetes
## 9 196 39.8 41 0.451 Diabetes
## 10 119 29.0 29 0.263 Diabetes
## 11 125 31.1 41 0.205 Diabetes
## $class
## [1] No_Diabetes
## Levels: Diabetes No_Diabetes
##
## $posterior
## Diabetes No_Diabetes
## 10 0.068208 0.931792
##
## $x
## LD1
## 10 1.367172
Se aplicó el modelo de análisis discriminante lineal (LDA) previamente entrenado para predecir la presencia o ausencia de diabetes. En este caso, se utilizó la función predict() sobre la observación número 10, obteniéndose los siguientes resultados:
- *Diabetes*: 6.82%
- *No_Diabetes*: 93.18%
El modelo asignó la clase No_Diabetes a esta observación,
basándose en la mayor probabilidad posterior.
La alta probabilidad asociada a la clase No_Diabetes (93.18%)
indica que la observación presenta características más similares a las
de los individuos no diabéticos en el espacio definido por el modelo
discriminante.
# Valores estimados con la ecuacion discriminante
fd.pred <- predict(modelo,suscrip_train[,-5])$x
# Clase predicha
clase.pred <-predict(modelo,suscrip_train[,-5])$class
# Probabilidad predicha
proba.pred <-round(predict(modelo,suscrip_train[,-5])$posterior,5)
# Almacenamiento de datos con clase y probabilidad predicha
datosf=cbind(suscrip_train,fd.pred,clase.pred,proba.pred)
head(datosf,30)
## Glucose BMI Age DiabetesPedigreeFunction Outcome LD1 clase.pred
## 1 78 31.0 26 0.248 Diabetes 1.449471961 No_Diabetes
## 2 197 30.5 53 0.158 Diabetes -2.050535462 Diabetes
## 3 125 0.0 54 0.232 Diabetes 1.367171892 No_Diabetes
## 4 189 30.1 59 0.398 Diabetes -2.172166502 Diabetes
## 5 100 30.0 32 0.484 Diabetes 0.654554431 No_Diabetes
## 6 118 45.8 31 0.551 Diabetes -0.716545754 Diabetes
## 7 107 29.6 31 0.254 Diabetes 0.697502637 No_Diabetes
## 8 115 34.6 32 0.529 Diabetes -0.001691668 No_Diabetes
## 9 196 39.8 41 0.451 Diabetes -2.430439500 Diabetes
## 10 119 29.0 29 0.263 Diabetes 0.499085657 No_Diabetes
## 11 125 31.1 41 0.205 Diabetes -0.068844810 No_Diabetes
## 12 147 39.4 43 0.257 Diabetes -1.169942561 Diabetes
## 13 102 32.9 46 0.665 Diabetes -0.085561900 No_Diabetes
## 14 90 38.2 27 0.503 Diabetes 0.539995975 No_Diabetes
## 15 111 37.1 56 1.390 Diabetes -1.325069467 Diabetes
## 16 180 42.0 25 1.893 Diabetes -2.708035734 Diabetes
## 17 103 39.1 31 0.344 Diabetes 0.173460156 No_Diabetes
## 18 176 33.7 58 0.467 Diabetes -2.093795258 Diabetes
## 19 187 37.7 41 0.254 Diabetes -1.959432459 Diabetes
## 20 133 32.9 39 0.270 Diabetes -0.351473607 No_Diabetes
## 21 114 32.8 42 0.258 Diabetes 0.027516597 No_Diabetes
## 22 109 32.5 38 0.855 Diabetes -0.129657070 No_Diabetes
## 23 100 32.9 28 0.867 Diabetes 0.337074427 No_Diabetes
## 24 126 43.4 42 0.583 Diabetes -1.100731382 Diabetes
## 25 131 43.2 26 0.270 Diabetes -0.537938639 No_Diabetes
## 26 136 37.1 43 0.153 Diabetes -0.703237053 Diabetes
## 27 163 39.0 33 1.222 Diabetes -1.899171892 Diabetes
## 28 95 37.4 24 0.247 Diabetes 0.728575634 No_Diabetes
## 29 171 33.3 24 0.199 Diabetes -0.799851381 Diabetes
## 30 160 30.5 39 0.588 Diabetes -1.067708573 Diabetes
## Diabetes No_Diabetes
## 1 0.06184 0.93816
## 2 0.85054 0.14946
## 3 0.06821 0.93179
## 4 0.86919 0.13081
## 5 0.15358 0.84642
## 6 0.50991 0.49009
## 7 0.14660 0.85340
## 8 0.29506 0.70494
## 9 0.90228 0.09772
## 10 0.18112 0.81888
## 11 0.31316 0.68684
## 12 0.64958 0.35042
## 13 0.31776 0.68224
## 14 0.17352 0.82648
## 15 0.69313 0.30687
## 16 0.92933 0.07067
## 17 0.25086 0.74914
## 18 0.85741 0.14259
## 19 0.83518 0.16482
## 20 0.39523 0.60477
## 21 0.28738 0.71262
## 22 0.33006 0.66994
## 23 0.21376 0.78624
## 24 0.62925 0.37075
## 25 0.45317 0.54683
## 26 0.50567 0.49433
## 27 0.82434 0.17566
## 28 0.14172 0.85828
## 29 0.53638 0.46362
## 30 0.61939 0.38061
Se aplicó el modelo a todo el conjunto de entrenamiento para analizar su comportamiento general:
Se calcularon los valores de la función discriminante (LD1) para cada observación.
Se obtuvieron las clases predichas y las probabilidades asociadas a cada clase.
Se construyó una tabla (datosf
) que contiene:
Las variables originales.
El valor de LD1.
La clase predicha por el modelo.
Las probabilidades de pertenencia a cada clase
(Diabetes
y No_Diabetes
).
Con lo realizado podemos comprender cómo el modelo clasifica los datos con los que fue entrenado, analizar la confianza en sus predicciones y explorar el comportamiento del discriminante lineal.
library(ggplot2)
a=ggplot(datosf) +
aes(x = proba.pred[,1], fill = Outcome) +
geom_histogram(bins = 30L) +
scale_fill_brewer(palette = "Spectral") +
theme_minimal()
b=ggplot(datosf, aes(x = proba.pred[,1], fill = Outcome)) +
geom_density(alpha = 0.6)+
scale_fill_brewer(palette = "Spectral") +
theme_minimal()
a + b
De los gráficos obtenidos podemos observar:
partimat(Outcome~.,data=suscrip_train,method="lda",nplots.vert=2,
image.colors = c("darkgoldenrod1", "skyblue2"))
Cada subgráfico muestra un plano 2D de dos variables predictoras a la vez (por ejemplo: Glucosa vs IMC, Edad vs Pedigree, etc.), con la frontera de decisión trazada por el modelo LDA.
Zona azul → Región clasificada como
No_Diabetes
.
Zona amarilla → Región clasificada como
Diabetes
.
“D” representa observaciones de la clase
Diabetes
.
“N” representa observaciones de la clase
No_Diabetes
.
Color negro: La observación fue clasificada correctamente por el modelo LDA.
Color rojo: La observación fue clasificada incorrectamente.
Las fronteras entre ambas regiones son líneas rectas, como corresponde al LDA.
Los subgráficos con menor tasa de error aparente
(app. error rate
) muestran que esas variables son más
informativas para separar clases.
Por ejemplo:
Glucosa vs IMC (arriba a la izquierda): error
0.246 → Buena separación: la mayoría de los D
están en la zona amarilla y los N
en la azul.
Edad vs Pedigree (abajo a la derecha): error
0.333 → Peor separación: los puntos D
y
N
están muy mezclados.
Esto sugiere que “Glucosa” e “IMC” aportan más poder discriminativo que “Edad” y “DiabetesPedigreeFunction”.
Se denomina matriz de confusión porque permite observar no solo las predicciones correctas del modelo, sino también los casos en los que este se equivoca o se “confunde” al clasificar a los pacientes.
Predicciones correctas:
Verdaderos positivos (VP): pacientes que realmente tienen diabetes y el modelo los clasifica correctamente como Diabetes.
Verdaderos negativos (VN): pacientes que no tienen diabetes y el modelo los clasifica correctamente como No_Diabetes.
Errores o confusiones del modelo:
Error tipo I (falso positivo - FP): el modelo clasifica a un paciente como Diabetes, pero en realidad no tiene diabetes.
Error tipo II (falso negativo - FN): el modelo clasifica a un paciente como No_Diabetes, pero en realidad sí tiene diabetes.
# Trabajando con la data de prueba
d2 = suscrip_test %>%
mutate(pred_probs = predict(modelo, suscrip_test[,-5])$posterior[,1]) %>%
mutate(pred_classes = ifelse(pred_probs > 0.5, 'Diabetes', 'No_Diabetes')) %>%
mutate(Outcome = factor(Outcome, levels = c('Diabetes', 'No_Diabetes')),
pred_classes = factor(pred_classes, levels = c('Diabetes', 'No_Diabetes')))
# Tabla o matriz de confusión
cm2 = xtabs(data = d2, ~ pred_classes + Outcome)
confusionMatrix(cm2, mode = 'everything', positive = 'Diabetes')
## Confusion Matrix and Statistics
##
## Outcome
## pred_classes Diabetes No_Diabetes
## Diabetes 41 13
## No_Diabetes 40 137
##
## Accuracy : 0.7706
## 95% CI : (0.7109, 0.8232)
## No Information Rate : 0.6494
## P-Value [Acc > NIR] : 4.558e-05
##
## Kappa : 0.4543
##
## Mcnemar's Test P-Value : 0.0003551
##
## Sensitivity : 0.5062
## Specificity : 0.9133
## Pos Pred Value : 0.7593
## Neg Pred Value : 0.7740
## Precision : 0.7593
## Recall : 0.5062
## F1 : 0.6074
## Prevalence : 0.3506
## Detection Rate : 0.1775
## Detection Prevalence : 0.2338
## Balanced Accuracy : 0.7098
##
## 'Positive' Class : Diabetes
##
Métrica | Operación | Descripción |
---|---|---|
Accuracy | (TP + TN) / Total | Proporción total de predicciones correctas. Para nuestro caso nos dio un valor de 0.7706, esto significa que el modelo logró clasificar correctamente el 77.06% de los casos del conjunto de prueba. |
Tasa de error aparente | (FP + FN) / Total | La tasa de error (0.2294) indica que el modelo cometió errores en el 22.94% de las predicciones realizadas sobre el conjunto de prueba ya sea al diagnosticar diabetes en personas sanas (falsos positivos) o al no detectar diabetes en pacientes que sí la tienen (falsos negativos). |
Sensibilidad | TP / (TP + FN) | Capacidad para detectar correctamente los casos positivos (Diabetes). Con un valor de 0.5062 indica que el modelo fue capaz de identificar correctamente el 50.62% de los pacientes que realmente tienen diabetes. |
Especificidad | TN / (TN + FP) | La especificidad (0.9133) indica que el modelo identificó correctamente el 91.33% de los pacientes que no tienen diabetes. |
Balance Accuracy | (Sensibilidad + Especificidad) / 2 | Es una medida más robusta que el Accuracy (Ambas clases (Diabetes y No_Diabetes) reciben igual consideración). Para nuestro caso el BA = 0.7097 es sólo un 6.09% inferior que el Accuracy. Esto sugiere que las clases están relativamente balanceadas. |
Precision (Pos Pred Value) | TP / (FP + TP) | Probabilidad de que un paciente clasificado como negativo realmente lo sea. En nuestro caso: VPpos = 0.7592 quiere decir que el 75.92% de los pacientes diagnosticados por el modelo con diabetes realmente tienen diabetes. |
Precision (Neg Pred Value) | TN / (TN + FN) | Falsos positivos: diagnosticar diabetes cuando no hay. Un VPneg = 0.7740 quiere decir que el 77.4% de pacientes clasificados por el modelo como no diagnosticados con diabetes realmente no tienen la enfermedad. |
Prevalencia | (TP + FN) / Total | Proporción de casos positivos reales en la muestra. En este caso, la prevalencia es de 35.06%, lo que indica que aproximadamente 1 de cada 3 pacientes del conjunto de prueba presenta la condición. |
Detection Rate | TP / Total | Proporción de positivos que el modelo identificó correctamente. En este caso, el modelo logró detectar correctamente la diabetes en el 17.75% de todos los pacientes evaluados. |
Detection Prevalence (DP) o Apparent Prevalence | (TP + FP) / Total | Proporción de casos positivos predichos por el modelo. En este caso, el modelo predijo diabetes en el 23.38% de los pacientes del conjunto de prueba. |
H₀: No hay diferencia significativa entre los errores de predicción
en pacientes con y sin diagnóstico de diabetes.
H₁: Existe una diferencia significativa entre los errores de predicción
en pacientes con y sin diagnóstico de diabetes.
##
## McNemar's Chi-squared test with continuity correction
##
## data: tabla
## McNemar's chi-squared = 12.755, df = 1, p-value = 0.0003551
Dado que el p-value es mucho menor que 0.05, se rechaza la hipótesis nula. Esto indica que sí existe una diferencia significativa entre los errores de predicción en las dos clases, es decir, el modelo comete errores de forma desigual entre pacientes con y sin diabetes.
El coeficiente Kappa evalúa el grado de acuerdo entre las predicciones del modelo y los valores reales, ajustando por el acuerdo esperado por azar.
datosf1=cbind(suscrip_test,clase.pred1,proba.pred1)
datos_kappa=datosf1[,c(5,6)]
library(psych)
cohen.kappa(datos_kappa, w=NULL,n.obs=NULL,alpha=.05,levels=NULL)
## Call: cohen.kappa1(x = x, w = w, n.obs = n.obs, alpha = alpha, levels = levels,
## w.exp = w.exp)
##
## Cohen Kappa and Weighted Kappa correlation coefficients and confidence boundaries
## lower estimate upper
## unweighted kappa 0.33 0.45 0.58
## weighted kappa 0.33 0.45 0.58
##
## Number of subjects = 231
El coeficiente Kappa de Cohen fue de 0.45, indicando un acuerdo moderado entre las predicciones del modelo y el diagnóstico real de diabetes. Esto sugiere que el modelo logra un rendimiento aceptable en la clasificación de pacientes, aunque existe espacio para mejorar la concordancia.
H₀: Las distribuciones de los diagnosticos observados y predichos no
difieren.
H₁: Las distribuciones de los diagnósticos observados y predichos sí
difieren significativamente.
library(tidyverse)
datos_ks=datosf1[,c(5,6)]
datos_ks1=mutate(datos_ks,Outcome=as.numeric(Outcome),
clase.pred1=as.numeric(clase.pred1))
datos_ks2=mutate(datos_ks1,Outcome1=Outcome-1,
clase.pred2=clase.pred1-1)
ks.test(x=datos_ks1$Outcome, y=datos_ks1$clase.pred1)
##
## Asymptotic two-sample Kolmogorov-Smirnov test
##
## data: datos_ks1$Outcome and datos_ks1$clase.pred1
## D = 0.11688, p-value = 0.0852
## alternative hypothesis: two-sided
##
## Asymptotic two-sample Kolmogorov-Smirnov test
##
## data: datos_ks2$Outcome1 and datos_ks2$clase.pred2
## D = 0.11688, p-value = 0.0852
## alternative hypothesis: two-sided
La prueba de Kolmogorov-Smirnov de dos muestras arrojó un p-valor de 0.0852, lo cual indica que no existen diferencias estadísticamente significativas entre la distribución de los resultados reales (Outcome) y los predichos (clase.pred1) por el modelo, al nivel común de significancia del 5% (α = 0.05). Esto sugiere que el modelo reproduce razonablemente bien la distribución de los diagnósticos de diabetes observados en la muestra. Sin embargo, dado que el p-valor se encuentra relativamente cerca del umbral (0.05), no se puede afirmar con total certeza que las distribuciones sean idénticas.
Es el Accuracy que se obtendría si siempre predijera la clase mayoritaria. Con esta data la clase mayoritaria es ‘No_Diabetes’ (17+133= 150). El NIR ayuda a verificar si el Accuracy del modelo (0.7706) es mejor que el del modelo base sin información (0.6494). Para verificar si la diferencia (0.7706-0.6494=0.1341) es significativa se halla el p-value [Acc > NIR] con una prueba binomial.
##
## Diabetes No_Diabetes
## 81 150
## [1] 0.6493506
H₀: La precisión del modelo <= NIR
H₁: La precisión del modelo > NIR
binom.test(
x = 178, # Número de clasificaciones correctas
n = 231, # Número de ensayos
p = 0.6494, # Probabilidad del suceso esperado (en las hipótesis)
alternative = 'greater')
##
## Exact binomial test
##
## data: 178 and 231
## number of successes = 178, number of trials = 231, p-value = 4.587e-05
## alternative hypothesis: true probability of success is greater than 0.6494
## 95 percent confidence interval:
## 0.7204151 1.0000000
## sample estimates:
## probability of success
## 0.7705628
La prueba binomial indica que el modelo de clasificación obtiene una proporción de aciertos significativamente mayor (77.06%) que la proporción que se obtendría simplemente eligiendo la clase mayoritaria (64.94%). Con un p-valor de 4.587e-05, se concluye que el modelo tiene un desempeño predictivo superior al azar.”
library(ROSE)
roc.curve(suscrip_test$Outcome, proba.pred1[,1],lty=2,lwd=1.8,col="blue" ,
main="ROC curves")
## Area under the curve (AUC): 0.845
Este valor cae dentro del rango 0.80–0.90, lo que se considera un modelo bueno en términos de capacidad de discriminación.
Significa que, dado un par de individuos (uno con diabetes y otro sin), el modelo tiene aproximadamente un 84.5% de probabilidad de asignar una probabilidad más alta al que realmente tiene diabetes.
## [,1]
## Diabetes vs. No_Diabetes 0.8446091
La curva negra con puntos (type="b"
por defecto en
plotROC
) se sitúa por encima de la diagonal
dorada en prácticamente todo el gráfico. Esto indica que el
modelo tiene una capacidad predictiva real y
efectiva.
La curva sube rápidamente en el eje Y (sensibilidad), lo cual es deseable.
Un valor de 0.8446 es un buen resultado, cercano al 85% de discriminación.
El rendimiento sigue siendo consistente independientemente del
paquete utilizado (ROSE
vs caTools
), lo cual
valida elmodelo.
El modelo LDA ha logrado una exactitud (accuracy) decente (aproximadamente 78%), lo cual es superior al No Information Rate (NIR) — la tasa que se obtendría si siempre se predijera la clase mayoritaria.
Sin embargo, la sensibilidad es baja (≈ 50.6%), lo que indica que el modelo tiene dificultades para identificar correctamente todos los casos con diabetes. En otras palabras, falsos negativos (personas con diabetes clasificadas como “No Diabetes”) siguen siendo un problema importante.
El modelo usa solo 4 variables: Glucosa, IMC, Edad y DiabetesPedigreeFunction.
Visualmente, Glucosa e IMC parecen ser los más discriminantes, ya que generan las regiones con menor error en los gráficos de partición.
El modelo LDA proporciona una base razonable para clasificar casos de diabetes, con buena precisión general pero baja sensibilidad, lo que sugiere que identifica bien a personas sin diabetes, pero necesita mejorar la detección de casos positivos. El análisis visual confirma que algunas variables ayudan más que otras, y que hay oportunidad de mejora con métodos más complejos o con ajuste de umbrales.