Regreción Logística Ordinal

Autor/a

Esmeralda Morales

Fecha de publicación

10 agosto 2024

Introducción

Primero, cargamos la base de datos y examinamos su estructura

Ordinal <- read.csv("~/Especializacion2024/Carpeta nueva/Ordinal.csv")
View(Ordinal)

Visualizar la estructura y un resumen de los datos.

str(Ordinal)
'data.frame':   95 obs. of  5 variables:
 $ sub         : int  1 2 3 4 5 6 7 9 10 11 ...
 $ Age         : int  18 25 28 29 20 20 28 21 18 19 ...
 $ Sex         : int  2 1 1 2 2 2 2 2 2 2 ...
 $ Stupidity   : num  3 2.2 1.8 2.4 2.8 1.6 2.2 2.4 2.6 2 ...
 $ Coldplay_cat: int  0 0 1 2 1 2 2 0 2 0 ...
summary(Ordinal)
      sub              Age             Sex          Stupidity    
 Min.   :  1.00   Min.   :18.00   Min.   :1.000   Min.   :1.600  
 1st Qu.: 26.50   1st Qu.:20.00   1st Qu.:1.000   1st Qu.:2.200  
 Median : 52.00   Median :21.00   Median :2.000   Median :2.400  
 Mean   : 52.12   Mean   :22.65   Mean   :1.621   Mean   :2.526  
 3rd Qu.: 77.50   3rd Qu.:23.00   3rd Qu.:2.000   3rd Qu.:2.800  
 Max.   :104.00   Max.   :58.00   Max.   :2.000   Max.   :4.000  
  Coldplay_cat  
 Min.   :0.000  
 1st Qu.:1.000  
 Median :2.000  
 Mean   :1.968  
 3rd Qu.:3.000  
 Max.   :3.000  

Antes de ajustar el modelo, realizamos una exploración inicial de los datos para entender la estructura y las variables involucradas.

library(ordinal)
Warning: package 'ordinal' was built under R version 4.3.3
table(Ordinal$Coldplay_cat)

 0  1  2  3 
13 14 31 37 

Ajuste del Modelo de Regresión Logística Ordinal.

Tomaremos la variable “Coldplay_cat” como la variable dependiente ordinal y las otras variables como “Stupidity”, “Age” y “Sex” son las independientes, ajustamos el modelo con la función clm.

modelo_ordinal <- clm(factor(Coldplay_cat) ~ Age + Sex + Stupidity, data = Ordinal)

Resumen del modelo

summary(modelo_ordinal)
formula: factor(Coldplay_cat) ~ Age + Sex + Stupidity
data:    Ordinal

 link  threshold nobs logLik  AIC    niter max.grad cond.H 
 logit flexible  95   -112.56 237.12 4(0)  9.58e-07 1.8e+05

Coefficients:
          Estimate Std. Error z value Pr(>|z|)   
Age       -0.12730    0.04626  -2.751  0.00593 **
Sex       -0.36881    0.41240  -0.894  0.37116   
Stupidity  1.37869    0.54737   2.519  0.01178 * 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Threshold coefficients:
    Estimate Std. Error z value
0|1  -2.1065     2.0387  -1.033
1|2  -1.0531     2.0288  -0.519
2|3   0.5393     2.0293   0.266

El modelo se ajustó utilizando 95 observaciones, con un valor de log-likelihood de -112.56 y un AIC de 237.12. Estos valores indican el ajuste del modelo; un AIC más bajo generalmente sugiere un mejor modelo en comparación con otros modelos.

Evaluación del Modelo.

Una vez que el modelo está ajustado, es importante evaluar su rendimiento y significancia:

# Extraer coeficientes y errores estándar
coeficientes <- coef(summary(modelo_ordinal))
# Calcular los valores t
t_values <- coeficientes[, "Estimate"] / coeficientes[, "Std. Error"]
# Calcular los p-values
p_values <- 2 * pnorm(abs(t_values), lower.tail = FALSE)
# Añadir los valores t y p-values a la tabla de coeficientes
coeficientes <- cbind(coeficientes, "t value" = t_values, "p value" = p_values)
coeficientes
            Estimate Std. Error    z value    Pr(>|z|)    t value     p value
0|1       -2.1065407 2.03871067 -1.0332710 0.301477086 -1.0332710 0.301477086
1|2       -1.0531332 2.02882226 -0.5190860 0.603700783 -0.5190860 0.603700783
2|3        0.5392777 2.02928905  0.2657471 0.790433998  0.2657471 0.790433998
Age       -0.1272979 0.04626496 -2.7514972 0.005932353 -2.7514972 0.005932353
Sex       -0.3688115 0.41239731 -0.8943111 0.371155463 -0.8943111 0.371155463
Stupidity  1.3786923 0.54737098  2.5187531 0.011777121  2.5187531 0.011777121

Calcular e interpretar los odds ratios

library(ordinal)
exp(coef(modelo_ordinal))
      0|1       1|2       2|3       Age       Sex Stupidity 
0.1216581 0.3488430 1.7147678 0.8804713 0.6915558 3.9697072 

AIC del modelo

AIC(modelo_ordinal)
[1] 237.1207
names(Ordinal)
[1] "sub"          "Age"          "Sex"          "Stupidity"    "Coldplay_cat"

Interpretación de los Coeficientes

Age (Edad): El coeficiente estimado para Age es -0.12730 con un error estándar de 0.04626. El valor de z es -2.751 y el valor p es 0.00593, que es estadísticamente significativo a un nivel del 1% (p < 0.01). Esto sugiere que a medida que la edad aumenta, la probabilidad de estar en una categoría más alta de Coldplay_cat disminuye. En otras palabras, las personas más jóvenes tienen una mayor probabilidad de estar en una categoría más alta de la variable dependiente.

Sex (Sexo): El coeficiente estimado para Sex es -0.36881 con un error estándar de 0.41240. El valor de z es -0.894 y el valor p es 0.37116, lo que indica que no es estadísticamente significativo (p > 0.05). Esto sugiere que el sexo no tiene un efecto estadísticamente significativo sobre las probabilidades de las diferentes categorías de Coldplay_cat.

Stupidity (Estupidez): El coeficiente estimado para Stupidity es 1.37869 con un error estándar de 0.54737. El valor de z es 2.519 y el valor p es 0.01178, que es estadísticamente significativo a un nivel del 5% (p < 0.05). Esto indica que a medida que aumenta el nivel de “estupidez”, la probabilidad de estar en una categoría más alta de Coldplay_cat también aumenta.

Interpretación de los Resultados.

En este apartado, interpretamos los resultados obtenidos del modelo:

Coeficientes Los coeficientes estimados para cada predictor indican la dirección y la magnitud del efecto de las variables independientes en la probabilidad de la variable dependiente (Coldplay_cat).

Significancia Los valores p asociados a los coeficientes nos permiten evaluar si estos efectos son estadísticamente significativos.

Odds Ratios Podemos calcular los odds ratios para interpretar los coeficientes en términos de probabilidades.

Calcular e interpretar los odds ratios

exp(coef(modelo_ordinal)) Evaluación del Modelo Finalmente, evaluamos el ajuste del modelo utilizando varias métricas como el AIC (Criterio de Información de Akaike) y las tablas de contingencia.