A diferencia de los modelos donde la variable de respuesta sigue un orden natural, las variables de respuesta multinomial no tiene en sus categorías dicho orden. R ofrece diversas opciones para la estimación de modelos con dicho tipo de variable de respuesta.
Muchos de los estudios que se realizan en la actualidad se basan en modelos que tienen este tipo de variables dependientes, donde las alternativas no implican una jerarquización. Estos datos múltiples que son categóricos muchas veces poseen un carácter nominal. Las variables dependientes de este tipo tienen las siguientes características:
\[ y_j=\left\{ \begin{array}{ll} 1,\ \text{si}\ y=j\ \\ 0,\ \text{si}\ y\neq j\ \end{array} \right. \] Un ejemplo para una variable multinomial en formato wide es:
ID(i) | Variable Dependiente (y) | Códigos para \(y\) |
---|---|---|
1 | Tren | y=1 |
2 | Bus | y=2 |
3 | Bus | y=2 |
Un ejemplo para una variable multinomial en formato largo sería el siguiente:
ID(i) | Variable Dependiente (y) | Códigos para \(y\) |
---|---|---|
1 | Tren | y=1 |
1 | Bus | y=0 |
2 | Tren | y=0 |
2 | Bus | y=1 |
3 | Tren | y=0 |
3 | Bus | y=1 |
Ejemplos:
El modelo logit multinomial es usado cuando se tiene regresores invariantes. La probabilidad de que un sujeto 𝑖 elija la alternativa 𝑗 es la siguiente: \[ p_{ij}=p(y_i=j)=\frac{exp(w_i´\gamma_j)}{\sum^m_{k=1}exp(w_i´\gamma_j)} \] Como se dijo, ste modelo es una generalización del Modelo Logit con datos de respuesta binarios, las probabilidades de elección de cada alternativa suman 1: \[ \sum^m_{k=1} p_{ij}=1 \] Un conjunto de coeficientes necesita ser normalizado a cero para estimar el modelo, por lo que se estiman (𝑗 − 1) conjuntos de coeficientes. Los coeficientes de otras alternativas son interpretados con referencia en la categoría base. La interpretación de la alternativa 𝑗 es la siguiente: en comparación con la alternativa base, un incremendo en el valor de la variable independiente hace que la elección de la alternativa 𝑗 sea más o menos probable.
Para hacer estimaciones de modelos multinomiales se debe hacer uso de la función multinom(), del paquete nnet. Existe también otro paquete, que es el mlogit(), del paquete del mismo nombre. El modelo a continuación quiere estimar la probabilidad de que el individuo elija cierto modo de pescar.
## Warning: package 'nnet' was built under R version 4.0.3
## # weights: 12 (6 variable)
## initial value 1638.599935
## iter 10 value 1477.505846
## final value 1477.150569
## converged
Los resultados mostrados son los siguientes: como se puede observar, hay tres puntos de corte, porque existen cuatro categorías, en primer lugar se muestra el coeficiente que corresponde a la variable “income” que es “-0.14” para la categoría dos. La interpretación biene más que nada, dada por los signos, ya que la interpretación de los parámetros es más compleja, por ello, solo se interpretan los signos. Por ende, la probabilidad a que se elija la categoría dos, es menor a que se elija a la categoría o el primer modo de pesca. Para la categoría tres, o el tercer modo de pesca, es la probabilidad en promedio mayor a comparación a la categoría 1, y para la categoría 4, va a ser menos la elección de dicha categoría en comparación con la categoría número 1.
## Call:
## multinom(formula = mode ~ income, data = mus15data)
##
## Coefficients:
## (Intercept) income
## 2 0.8141701 -0.14340453
## 3 0.7389569 0.09190030
## 4 1.3413284 -0.03164588
##
## Std. Errors:
## (Intercept) income
## 2 0.2286325 0.05328822
## 3 0.1967314 0.04066362
## 4 0.1945173 0.04184622
##
## Residual Deviance: 2954.301
## AIC: 2966.301
Para hacer pruebas de significancia a los coeficientes del modelo se deberá buscar los valores z, haciendo una división de los coeficientes entre los errores estándar. Como se ve los coeficientes, los valores de la categoría 2 y 3 son estadísticamente significativos a nivel individual, caso contrario para la categoría 4.
## (Intercept) income
## 2 3.561043 -2.6911113
## 3 3.756171 2.2600126
## 4 6.895676 -0.7562424
El modelo probit multinomial es similar al modelo logit multinomial, como el modelo probit binario es similar al logit binario. La diferencia radica en el uso de la función de distribución acumulativa normal estándar. La probabilidad de que la observación 𝑖 seleccionará la alternativa 𝑗 es: \[ p_{ij}=p(y_i=j)=\phi(x´_{ij}\beta) \] Los coeficientes son diferentes por un factor de escala del modelo logit.
Para hacer la estimación de un probit en R, se debe hacer uso de la función mlogit(), especificando entre las opciones que se quiere un modelo probit. Se abrirá en primer lugar la base de datos que se encuentra dentro de una de las lirberías y se dará forma a la misma. Luego, para pasar de wide a long, se cambiará la base de datos con “mlogit.data”, al cual se le dará el nombre de “Fish” a la nueva base de datos.
## Warning: package 'maxLik' was built under R version 4.0.3
## Loading required package: miscTools
## Warning: package 'miscTools' was built under R version 4.0.3
##
## Please cite the 'maxLik' package as:
## Henningsen, Arne and Toomet, Ott (2011). maxLik: A package for maximum likelihood estimation in R. Computational Statistics 26(3), 443-458. DOI 10.1007/s00180-010-0217-1.
##
## If you have questions, suggestions, or comments regarding the 'maxLik' package, please use a forum or 'tracker' at maxLik's R-Forge site:
## https://r-forge.r-project.org/projects/maxlik/
## Warning: package 'mlogit' was built under R version 4.0.3
## Loading required package: dfidx
## Warning: package 'dfidx' was built under R version 4.0.3
##
## Attaching package: 'dfidx'
## The following object is masked from 'package:stats':
##
## filter
Luego se hará la regresión del modelo probit multinomial:
##
## Call:
## mlogit(formula = mode ~ 0 | income, data = Fish, probit = TRUE)
##
## Frequencies of alternatives:choice
## beach boat charter pier
## 0.11337 0.35364 0.38240 0.15059
##
## bfgs method
## 30 iterations, 0h:2m:19s
## g'(-H)^-1g = 8.45E-07
## gradient close to zero
##
## Coefficients :
## Estimate Std. Error z-value Pr(>|z|)
## (Intercept):boat -3.3948e-01 4.8438e-01 -0.7009 0.4834
## (Intercept):charter 3.3094e-01 5.6844e-01 0.5822 0.5604
## (Intercept):pier 2.3964e-01 5.1918e-01 0.4616 0.6444
## income:boat 7.2970e-05 2.3497e-05 3.1055 0.0019 **
## income:charter -2.4791e-05 5.7609e-05 -0.4303 0.6670
## income:pier -3.8488e-05 8.5704e-05 -0.4491 0.6534
## boat.charter -1.5856e-01 4.4664e-01 -0.3550 0.7226
## boat.pier 3.5279e-02 6.1529e-01 0.0573 0.9543
## charter.charter 5.1427e-01 9.4552e-01 0.5439 0.5865
## charter.pier 4.4215e-01 9.0566e-01 0.4882 0.6254
## pier.pier 3.5034e-01 7.7467e-01 0.4523 0.6511
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Log-Likelihood: -1471.3
## McFadden R^2: 0.017662
## Likelihood ratio test : chisq = 52.906 (p.value = 1.1245e-08)
Como se puede observar, hay una información más detallada de cada uno de los parámetros del modelo, la significancia de los mismos, el pseudo R-cuadrado con el McFadden e información sobre la Máxima Verosimilitud. Paralelamente, se puede regresionar el mismo modelo pero sin la opción probit, es decir, un Logit Multinomial y compararlo con el anterior a través del McFadden, escogiendo aquel que sea más alto.
##
## Call:
## mlogit(formula = mode ~ 0 | income, data = Fish, method = "nr")
##
## Frequencies of alternatives:choice
## beach boat charter pier
## 0.11337 0.35364 0.38240 0.15059
##
## nr method
## 4 iterations, 0h:0m:0s
## g'(-H)^-1g = 8.32E-07
## gradient close to zero
##
## Coefficients :
## Estimate Std. Error z-value Pr(>|z|)
## (Intercept):boat 7.3892e-01 1.9673e-01 3.7560 0.0001727 ***
## (Intercept):charter 1.3413e+00 1.9452e-01 6.8955 5.367e-12 ***
## (Intercept):pier 8.1415e-01 2.2863e-01 3.5610 0.0003695 ***
## income:boat 9.1906e-05 4.0664e-05 2.2602 0.0238116 *
## income:charter -3.1640e-05 4.1846e-05 -0.7561 0.4495908
## income:pier -1.4340e-04 5.3288e-05 -2.6911 0.0071223 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Log-Likelihood: -1477.2
## McFadden R^2: 0.013736
## Likelihood ratio test : chisq = 41.145 (p.value = 6.0931e-09)
En el siguiente ejemplo se verá la estimación de un modelo logit multinomial. La base de datos usada representa datos sobre 200 estudiantes que eligen 3 tipos de programas, esto será evaluado respecto a los puntajes de los exámenes de sus asignaturas y también por el nivel socioeconómico al que pertenece el estudiante. Se tiene la base de datos ‘hsbdemo.dta’, situada en:
Se estimará un modelo para hallar la probabilidad de que el estudiante elija cierto programa académico (prog), donde las variables independientes serán el estado socioeconómico (ses), el test de escritura (write), el test de matemática y el test de ciencias (science).Se procede a hacer la estimación del modelo:
## # weights: 21 (12 variable)
## initial value 219.722458
## iter 10 value 175.578444
## iter 20 value 166.025863
## iter 20 value 166.025862
## iter 20 value 166.025862
## final value 166.025862
## converged
Los resultados son los siguientes:
## Call:
## multinom(formula = prog ~ factor(ses) + write + math + science,
## data = hsbdemo)
##
## Coefficients:
## (Intercept) factor(ses)2 factor(ses)3 write math science
## 2 -3.741253 0.4998732 1.1706592 0.04341104 0.11456924 -0.08349463
## 3 4.227472 1.0500691 0.5132541 -0.02713430 -0.02626292 -0.04371232
##
## Std. Errors:
## (Intercept) factor(ses)2 factor(ses)3 write math science
## 2 1.425803 0.4786722 0.5558803 0.02728789 0.03212528 0.02805457
## 3 1.571957 0.5117155 0.6755999 0.02869655 0.03530094 0.02893982
##
## Residual Deviance: 332.0517
## AIC: 356.0517
Para realizar pruebas de hipótesis necesitamos los valores z de cada uno de los parámetros, por teoría estos se obtienen haciendo un división entre el valor del coeficiente y su error estándar, por lo que se creará un objeto que contenga a dichos valores, y a partir de estos se evaluará la significancia individual de cada parámetro en el modelo estimado:
## (Intercept) factor(ses)2 factor(ses)3 write math science
## 2 -2.623962 1.044291 2.1059558 1.5908540 3.566326 -2.976151
## 3 2.689305 2.052057 0.7597012 -0.9455595 -0.743972 -1.510456
Para facilitar el análisis se pueden estimar los valores p:
Esto le indica a R que se quiere hacer una prueba de 2 colas, usando a la distribución normal, del valor absoluto de z, con media 0 y varianza 1. Los resultados serán los siguientes:
## (Intercept) factor(ses)2 factor(ses)3 write math science
## 2 0.008691357 0.29635068 0.0352082 0.1116424 0.0003620207 0.002918912
## 3 0.007160088 0.04016416 0.4474332 0.3443733 0.4568933854 0.130927135
Se pude observar ahí los valores p asociados a cada coeficientes, y así evaluar la hipótesis de significancia indiviual para cada uno. Siendo significativo aquellos menores a 0.05.