Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Regresión Logística Multinomial, Apuntes de Ciencia Política

Regresión Logística Multinomial Técnicas de Investigación en Ciencias Políticas.

Tipo: Apuntes

2020/2021

Subido el 16/06/2021

0_orioN_
0_orioN_ 🇪🇸

3 documentos

1 / 22

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Tema 5: Regresi´on Log´ıstica
Multinomial
Introducci´on
En este tema se considera un modelo de regresi´on log´ıstica donde la variable depen-
diente tiene as de dos categor´ıas. La respuesta puede o bien ser nominal o bien ordinal.
A su vez, las variables explicativas pueden ser categ´oricas o cuantitativas.
En los modelos de regresi´on multinomial se asume que los recuentos de las categor´ıas de
Ytienen una distribuci´on multinomial. Esta distribuci´on es, a su vez, una generalizaci´on
de la distribuci´on binomial.
Ver:
es.wikipedia.org/wiki/Distribuci´
on multinomial
Modelos Logit para respuestas nominales
El umero de categor´ıas de Yse denota como Jdonde {π1, . . . , πJ}son las probabili-
dades de las distintas categor´ıas tal que Pjπj= 1.
Se parte de nobservaciones independientes que se localizan en las Jcategor´ıas. La
distribuci´on de probabilidad del umero de observaciones de las Jcategor´ıas sigue una dis-
tribuci´on multinomial. Esta modeliza la probabilidad de cada una de las posibles maneras
en que nobservaciones pueden repartirse entre las Jcategor´ıas.
Al ser la escala de medida nominal, el orden entre las categor´ıas es irrelevante.
Se toma una categor´ıa como respuesta base, por ejemplo la ´ultima categor´ıa (J), y se
define un modelo logit con respecto a ella:
log πj
πJ=αj+βjx
donde j= 1, . . . , J 1.
1
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16

Vista previa parcial del texto

¡Descarga Regresión Logística Multinomial y más Apuntes en PDF de Ciencia Política solo en Docsity!

Tema 5: Regresi´on Log´ıstica

Multinomial

Introducci´on

En este tema se considera un modelo de regresi´on log´ıstica donde la variable depen-

diente tiene m´as de dos categor´ıas. La respuesta puede o bien ser nominal o bien ordinal.

A su vez, las variables explicativas pueden ser categ´oricas o cuantitativas.

En los modelos de regresi´on multinomial se asume que los recuentos de las categor´ıas de

Y tienen una distribuci´on multinomial. Esta distribuci´on es, a su vez, una generalizaci´on

de la distribuci´on binomial.

Ver:

es.wikipedia.org/wiki/Distribuci´on multinomial

Modelos Logit para respuestas nominales

El n´umero de categor´ıas de Y se denota como J donde { π 1 ,... , πJ } son las probabili-

dades de las distintas categor´ıas tal que

j πj = 1.

Se parte de n observaciones independientes que se localizan en las J categor´ıas. La

distribuci´on de probabilidad del n´umero de observaciones de las J categor´ıas sigue una dis-

tribuci´on multinomial. Esta modeliza la probabilidad de cada una de las posibles maneras

en que n observaciones pueden repartirse entre las J categor´ıas.

Al ser la escala de medida nominal, el orden entre las categor´ıas es irrelevante.

Se toma una categor´ıa como respuesta base , por ejemplo la ´ultima categor´ıa ( J ), y se

define un modelo logit con respecto a ella:

log

πj

πJ

= αj + βj x

donde j = 1 ,... , J − 1.

El modelo tiene J − 1 ecuaciones con sus propios par´ametros, y los efectos var´ıan con

respecto a la categor´ıa que se ha tomado como base.

Cuando J = 2 , el modelo equivale a una ´unica ecuaci´on log ( π 1 /π 2 ) = logit( π 1 ) y se

obtiene el modelo de regresi´on log´ıstica est´andar.

La ecuaci´on general logit con respecto a la categor´ıa base J determina tambi´en los

logits para cualquier pareja de categor´ıas. As´ı, si consideramos dos categor´ıas cualesquiera

a y b ,

log

πa

πb

= log

πa/πJ

πb/πJ

= log

πa

πJ

− log

πb

πJ

= ( αa + βax ) − ( αb + βbx ) = ( αa − αb ) + ( βa − βb ) x

De este modo, la ecuaci´on para las categor´ıas a y b tiene tambi´en la forma α + βx donde

α = ( αa − αb ) y β = ( βa − βb ).

Ejemplo

Se trata de calcular las primas de seguros para los lugare˜nos de una localidad de Florida

(USA). Para ello se analizan los datos sobre los gustos alimentarios de 59 caimanes que

viven por la zona.

La variable respuesta es la elecci´on del tipo de comida principal que se encuentra en

el est´omago de los animales, con cinco posibles categor´ıas: peces , invertebrados , reptiles ,

p´ajaros y otros. Como variables predictoras se consideran:

i ) El lago en donde se captura al animal ( L );

ii ) Su g´enero ( G );

iii ) el tama˜no S (si es menor o igual a 2.3 metros o mayor que este valor).

library ( MASS )

library ( nnet )

comen.f = factor ( c ( " peces " ," invert " ," reptiles " ," pajaritos " ," otros " ) ,

levels = c ( " peces " ," invert " ," reptiles " ," pajaritos " ," otros " ))

tamano.f = factor ( c ( " <2 .3 " , " >2 .3 " ) , levels = c ( " >2 .3 " , " <2 .3 " ))

sexo.f = factor ( c ( " m " ," f " ) , levels = c ( " m " ," f " ))

Coefficients : ( Intercept ) tamano <2. invert -1 .034070 0. reptiles -1 .241705 -0. pajaritos -1 .727214 -0. otros -1 .241709 0.

Std. Errors : ( Intercept ) tamano <2. invert 0 .2910708 0. reptiles 0 .3148729 0. pajaritos 0 .3836949 0. otros 0 .3148735 0.

Residual Deviance : 589. AIC : 605.

La categor´ıa base que se toma es justamente la primera: peces.

Se pueden ajustar distintos modelos logit con la categor´ıa base en peces y compa-

rarlos en t´erminos de sus diferencias en deviance , es decir mediante las diferencias en la

verosimilitud: −2(log( L ( ˆ μ 1 , y )) − log( L ( ˆ μ 2 , y ))).

fitS = multinom ( comen ∼ charca * tamano * sexo , data = tabla.array ,

weights = temp )

fitS2 = multinom ( comen ∼ charca * tamano , data = tabla.array ,

weights = temp )

fit0 = multinom ( comen ∼ 1 , data = tabla.array , weights = temp )

fit1 = multinom ( comen ∼ charca , data = tabla.array , weights = temp )

fit2 = multinom ( comen ∼ tamano , data = tabla.array , weights = temp )

fit3 = multinom ( comen ∼ sexo , data = tabla.array , weights = temp )

fit4 = multinom ( comen ∼ charca + tamano , data = tabla.array ,

weights = temp )

fit5 = multinom ( comen ∼ charca + tamano + sexo , data = tabla.array ,

weights = temp )

# Se compara con el modelo que NO considera sexo

deviance ( fitS2 ) - deviance ( fitS )

[1] 35.

# Se usa un ANOVA con el modelo que NO considera sexo

anova ( fitS2 , fitS , test = ’ Chisq ’)

Likelihood ratio tests of Multinomial Models

Response : comen Model Resid. df Resid. Dev Test Df LR stat. Pr ( Chi ) 1 charca * tamano 288 523. 2 charca * tamano * sexo 256 487 .6018 1 vs 2 32 35 .39865 0.

deviance ( fit0 ) - deviance ( fitS )

[1] 116.

deviance ( fit1 ) - deviance ( fitS )

[1] 73.

deviance ( fit2 ) - deviance ( fitS )

[1] 101.

deviance ( fit3 ) - deviance ( fitS )

[1] 114.

deviance ( fit4 ) - deviance ( fitS )

[1] 52.

deviance ( fit5 ) - deviance ( fitS )

[1] 50.

# Se usa como modelo el que NO considera sexo

deviance ( fit4 ) - deviance ( fitS2 )

anova ( fit4 , fitS2 , test = ’ Chisq ’)

[1] 17.

Likelihood ratio tests of Multinomial Models

Response : comen Model Resid. df Resid. Dev Test Df LR stat. Pr ( Chi ) 1 charca + tamano 300 540. 2 charca * tamano 288 523 .0005 1 vs 2 12 17 .07983 0.

Se trabaja con el modelo que utiliza como covariables la charca y el tama˜no. Se obtienen

los coeficientes de los odds en los que se compara cada tipo de comida con la categor´ıa

base peces.

Tambi´en se pueden estimar las probabilidades de cada una de las categor´ıas para

distintos valores de las variables explicativas.

predictions = predict ( fit4 , type = " probs " ,

newdata = expand.grid ( tamano = tamano.f , charca = charca.f ))

cbind ( expand.grid ( tamano = tamano.f , charca = charca.f ) , predictions )

tamano charca peces invert reptiles pajaritos otros 1 <2 .3 hancock 0 .5352844 0 .09311221 0 .04745855 0 .070402770 0. 2 >2 .3 hancock 0 .5701841 0 .02307664 0 .07182898 0 .140896661 0. 3 <2 .3 oklawaha 0 .2581899 0 .60188004 0 .07723295 0 .008820525 0. 4 >2 .3 oklawaha 0 .4584248 0 .24864187 0 .19484367 0 .029424141 0. 5 <2 .3 trafford 0 .1843017 0 .51682297 0 .08877041 0 .035897986 0. 6 >2 .3 trafford 0 .2957471 0 .19296047 0 .20240167 0 .108228505 0. 7 <2 .3 george 0 .4521217 0 .41284675 0 .01156715 0 .029664777 0. 8 >2 .3 george 0 .6574619 0 .13968167 0 .02389991 0 .081046951 0.

Modelos Acumulados para datos ordinales

Cuando las respuestas de la variable categ´orica son ordinales se pueden utilizar

modelos logit acumulados.

La probabilidad acumulada de una variable Y es la probabilidad de que Y sea menor

o igual que un determinado valor j.

As´ı, para una categor´ıa dada j se define la probabilidad acumulada como

P ( Y ≤ j ) = π 1 + · · · + πj

para j = 1 ,... , J.

Las probabilidades acumuladas reflejan el orden entre las categor´ıas:

P ( Y ≤ 1) ≤ P ( Y ≤ 2) ≤ · · · ≤ P ( Y ≤ J ) = 1

Los logits de las probabilidades acumuladas son

logit [ P ( Y ≤ j )] = log

[

P ( Y ≤ j )

1 − P ( Y ≤ j )

]

log

[

π 1 + · · · + πj

πj +1 + · · · + πJ

]

= log

∑^ j

i =

πi

∑ J

i = j +

πi

para j = 1 ,... , J − 1.

El modelo logit de odds proporcionales, cuando se consideran d variables explicativas

x = ( x 1 ,... , xd ) se puede expresar como

logit [ P ( Y ≤ j | x )] = αj +

∑^ d

i =

βixi

para j = 1 ,... , J − 1.

Cada variable independiente tiene un solo coeficiente que no depende del valor j.

La dependencia con respecto al valor j aparece solo en el coeficiente o constante αj.

Teniendo en cuenta que si j ′^ < j entonces

logit [ P ( Y ≤ j ′| x )] ≤ logit [ P ( Y ≤ j | x )]

se tiene que verificar que αj ≤ αj ′ , es decir, los valores de αj aumentan junto con los

valores de j.

Ejemplo: Enfermedad mental

En el libro Categorical Data Analysis (2002) de Agresti (pag. 279) se muestran los

datos de un estudio sobre una enfermedad mental que se trata de relacionar con dos

variables explicativas. La enfermedad mental se resume en una variable categ´orica con los

siguientes niveles: buen estado , s´ıntomas leves , s´ıntomas moderados y enfermedad. Como

variables predictoras tenemos:

x 1 ≡ mide el n´umero de sucesos impactantes en la vida de la persona en los ´ultimos tres

a˜nos (divorcios, fallecimientos, etc.).

x 2 ≡ Estatus socio-econ´omico con niveles 1 ( alto ) y 0 ( bajo ).

La enfermedad mental, como variable respuesta , es un factor que presenta ordenaci´on

entre sus categor´ıas.

dat = read.table (

" http : / / www.biostat.jhsph.edu /∼bcaffo / aglm / files /

mentalestadoData.dat " )

names ( dat ) = c ( " estado " , " estatus " , " sucesos " )

dat $ estado = as.ordered ( dat $ estado )

levels ( dat $ estado ) = c ( " well " , " mild " , " mod " , " imp " )

dat $ estatus = as.factor ( dat $ estatus )

levels ( dat $ estatus ) = c ( " low " , " high " )

library ( MASS )

fit = polr ( estado ∼ estatus + sucesos , data = dat )

summary ( fit )

Call : polr ( formula = estado ∼ estatus + sucesos , data = dat )

Coefficients : Value Std. Error t value estatushigh -1 .1112 0 .6109 -1. sucesos 0 .3189 0 .1210 2.

Intercepts : Value Std. Error t value well | mild -0 .2819 0 .6423 -0. mild | mod 1 .2128 0 .6607 1. mod | imp 2 .2094 0 .7210 3.

Residual Deviance : 99. AIC : 109.

Se calculan ahora intervalos de confianza para los coeficientes originales y su expresi´on

en t´erminos de la exponencial.

# Intervalos de confianza

( ci = confint ( fit ))

estatushigh -2 .34715412 0. sucesos 0 .09203235 0.

# Exponencial de los parametros e IC

exp ( cbind ( OR = coef ( fit ) , ci ))

OR 2 .5 % 97 .5 %

estatushigh 0 .3291535 0 .09564096 1. sucesos 1 .3755605 1 .09640030 1.

# Seleccionas los de estatus 1 y mas de 5 sucesos

que = subset ( dat , estatus == " high " & sucesos >5)

# Prediccion para el grupo anterior

cbind ( que , predict ( fit , data.frame ( que ) , type = " probs " ))

estado estatus sucesos well mild mod imp 2 well high 9 0 .1150236 0 .2518325 0 .2439856 0. 10 well high 7 0 .1973878 0 .3255946 0 .2251307 0. 17 mild high 8 0 .1516700 0 .2918553 0 .2399334 0. 21 mild high 9 0 .1150236 0 .2518325 0 .2439856 0. 29 mod high 6 0 .2527800 0 .3485130 0 .2020681 0. 32 imp high 8 0 .1516700 0 .2918553 0 .2399334 0. 34 imp high 7 0 .1973878 0 .3255946 0 .2251307 0. 38 imp high 8 0 .1516700 0 .2918553 0 .2399334 0.

Otra opci´on es usar la funci´on vglm. Esta funci´on est´a en la librer´ıa VGAM.

library ( VGAM )

fit = vglm ( estado ∼ estatus + sucesos ,

family = cumulative ( parallel = TRUE ) , data = dat )

summary ( fit )

O en SAS est´andar:

OPTIONS nodate ls =65 formchar = ’ | - - - -|+| - - -+=| -/\ < > * ’; x ’ cd " c :\ dondeSea " ’;

DATA mental ;

INFILE ’ DatosMental. txt ’; INPUT estado estatus sucesos ;

PROC genmod ;

model estado = sucesos estatus / dist = multinomial link = clogit lrci type3 ; RUN ;

Ejemplo

Se tiene una muestra de 735 personas a los que se pregunta por sus preferencias en

cuanto a tres marcas ( brands ) de algunos productos. Se considera adem´as el g´enero y la

edad de las personas de la encuesta.

Los datos (en formato SAS) se pueden descargar en

http://www.ats.ucla.edu/stat/sas/dae/mlogit.sas7bdat

La variable dependiente es brand. La variable female se codifica como 0 para hombres

y 1 para mujeres.

library ( sas7bdat )

lacosa = read.sas7bdat (

" http : / / www.ats.ucla.edu / stat / sas / dae / mlogit.sas7bdat " )

colnames ( lacosa ) = c ( " brand " ," female " ," age " )

attach ( lacosa )

# Se considera un analisis descriptivo

table ( brand )

table ( female )

female 0 1 269 466

summary ( age )

Min. 1 st Qu. Median Mean 3 rd Qu. Max. 24 .0 32 .0 32 .0 32 .9 34 .0 38.

xtabs (∼ female + brand )

brand female 1 2 3 0 92 99 78 1 115 208 143

En los resultados anteriores se obtienen los coeficientes y sus p-valores. Cada variable

independiente y el intercept aparecen dos veces, una para cada una de las categor´ıas

denominadas alt2 y alt3. Corresponden a dos ecuaciones:

log

P (brand = 2)

P (brand = 1)

= b 10 + b 11 · female + b 12 · age

log

P (brand = 3)

P (brand = 1)

= b 20 + b 21 · female + b 22 · age

donde los bij son los coeficientes de regresi´on de la salida.

Por ejemplo, por cada aumento en una unidad de la variable age, el logaritmo del

ratio de las dos probabilidades, P (brand = 2) /P (brand = 1), se incrementa en 0.368, y el

logaritmo del ratio de las dos probabilidades, P (brand = 3) /P (brand = 1), se incrementa

en 0.686. Por tanto, en general, cuanto mayor sea una persona tendr´a m´as preferencia por

brand igual a 2 ´o a 3, que por brand igual a 1.

A continuaci´on, se muestran los resultados del modelo en t´erminos de las probabilida-

des. Por ejemplo, se muestra un rango de distintas edades y se calculan las probabilidades

de escoger cada categor´ıa de brand para mujeres y hombres. Se generan los valores pre-

dichos en la escala logit usando los coeficientes del modelo. En brand = 1, el valor se fija

en 0.

Las columnas etiquetadas como pred.1, pred.2, y pred.3, contienen las probabilida-

des predichas de que brand sea igual a 1, 2 y 3 respectivamente.

newdata = data.frame ( cbind ( age = rep (24:38 , 2) ,

female = c ( rep (0 , 15) , rep (1 , 15))))

logit1 = rep (0 , 30)

logit2 = mlogit.model $ coefficients [[1]] +

mlogit.model $ coefficients [[3]] * newdata $ female +

mlogit.model $ coefficients [[5]] * newdata $ age

logit3 = mlogit.model $ coefficients [[2]] +

mlogit.model $ coefficients [[4]] * newdata $ female +

mlogit.model $ coefficients [[6]] * newdata $ age

logits = cbind ( logit1 , logit2 , logit3 )

p.unscaled = exp ( logits )

p = cbind ( newdata , ( p.unscaled / rowSums ( p.unscaled )))

colnames ( p ) = c ( " age " , " female " , " pred.1 " , " pred.2 " , " pred.3 " )

print ( p )

Se pueden presentar gr´aficamente las predicciones. Por ejemplo, se dibujan las proba-

bilidades predichas de que una persona seleccione brand = 1 en funci´on de la variable age, cuando es hombre (female = 0, en azul ), y cuando es mujer (female = 1, en rojo ).

plot ( p $ pred.1 [ p $ female ==0]∼p $ age [ p $ female ==0] , type = " l " , col = " blue " ,

lwd =1 , ylab = " Probabilidad predicha para Brand = 1 " , xlab = " Edad " ) lines ( p $ pred.1 [ p $ female ==1]∼p $ age [ p $ female ==1] , col = " red " , lwd =1)

  • age female pred.1 pred.2 pred.
  • 1 24 0 0 .94795544 0 .05023196 0.
  • 2 25 0 0 .92560550 0 .07088034 0.
  • 3 26 0 0 .89429225 0 .09896621 0.
  • 4 27 0 0 .85114170 0 .13611844 0.
  • 5 28 0 0 .79312711 0 .18330129 0.
  • 6 29 0 0 .71787603 0 .23976170 0.
  • 7 30 0 0 .62506819 0 .30169310 0.
  • 8 31 0 0 .51809475 0 .36137225 0.
  • 9 32 0 0 .40487183 0 .40810394 0.
  • 10 33 0 0 .29639567 0 .43175036 0.
  • 11 34 0 0 .20299473 0 .42732003 0.
  • 12 35 0 0 .13058003 0 .39723991 0.
  • 13 36 0 0 .07951592 0 .34957297 0.
  • 14 37 0 0 .04627661 0 .29400375 0.
  • 15 38 0 0 .02598254 0 .23855066 0.
  • 16 24 1 0 .91531696 0 .08189411 0.
  • 17 25 1 0 .88078797 0 .11388332 0.
  • 18 26 1 0 .83412301 0 .15585707 0.
  • 19 27 1 0 .77287121 0 .20869457 0.
  • 20 28 1 0 .69561310 0 .27144346 0.
  • 21 29 1 0 .60315223 0 .34013099 0.
  • 22 30 1 0 .49958719 0 .40713475 0.
  • 23 31 1 0 .39239931 0 .46212850 0.
  • 24 32 1 0 .29086432 0 .49503122 0.
  • 25 33 1 0 .20320727 0 .49979166 0.
  • 26 34 1 0 .13411370 0 .47668396 0.
  • 27 35 1 0 .08404322 0 .43168573 0.
  • 28 36 1 0 .05034227 0 .37368477 0.
  • 29 37 1 0 .02903251 0 .31143314 0.
  • 30 38 1 0 .01623160 0 .25162236 0.

Se usa ahora SAS Unversity para tratar el mismo conjunto de datos.

OPTIONS nodate ls =75;

/ * O D S l i s t i n g f i l e = ’/ f o l d e r s / m y f o l d e r s / s a l e. lst ’ ; * /

DATA market ; INFILE ’/ folders / myfolders / market. txt ’;

INPUT brand female age ;

PROC freq data = market ; tables brand ;

PROC sort data = market ; by brand ;

PROC means data = market ; by brand ; var age female ;

PROC logistic data = market ; class brand ( ref = "1") ; model brand = female age / link = glogit ; RUN ;

/ * O D S l i s t i n g c l o s e ; * /

O en SAS est´andar

OPTIONS nodate ls =65 formchar = ’ | - - - -|+| - - -+=| -/\ < > * ’; x ’ cd " c :\ deSAS " ’;

DATA market ; INFILE ’ market. txt ’; INPUT brand female age ;

... Igual que el anterior programa ...