Apuntes de Clase. Modelo Logit Probit en R Studio
Apuntes de Clase. Modelo Logit Probit en R Studio
Apuntes de Clase. Modelo Logit Probit en R Studio
MODELOS DE VARIABLE
DEPENDIENTE DISCRETA: EL MODELO
LOGIT Y PROBIT
La Serie Apuntes de Finance and Econometrics Group S.A.C. tiene por objetivo difundir los
materiales de enseñanza generados por los docentes que tienen a su cargo el desarrollo de las
asignaturas de la empresa. Estos documentos buscan proporcionar a los estudiantes una
explicación de algunos temas específicos que son abordados en su formación profesional
Rafael Bustamante
Resumen
Este trabajo pretende señalar que las especificaciones del comportamiento económico de
indicadores, inferencia estadística, análisis del efecto marginal y las medidas de bondad
de ajuste.
Estudios de Doctorado en Economía, Universidad Nacional Autónoma de México. MBA Gerencial, CENTRUM Pontificia
Universidad Católica del Perú. Maestría en Economía con mención en Finanzas, Universidad Nacional Mayor de San
Marcos. Profesor Auxiliar del Departamento de Economía de la UNMSM. Investigador asociado al Instituto de
Investigaciones FCE - UNMSM. Contacto: [email protected], [email protected]
Contents
1. Introducción ................................................................................................................................... 5
2. Modelo simple................................................................................................................................. 8
2.1. Las variables aleatorias binomiales .......................................................................................... 9
2.2. Modelo de probabilidad lineal (MPL) ..................................................................................... 10
2.3 Modelo lineal de probabilidad ponderado 0 MLP estimado mediante mínimos cuadrados
generalizados (MCG): sus limitaciones ......................................................................................... 12
2.4 Los modelos probabilísticos Logit y Probit .............................................................................. 15
2.5 El modelo Probit ...................................................................................................................... 21
2.7. Interpretación del modelo probit .......................................................................................... 24
3.Modelo Logit .................................................................................................................................. 25
3.1. Especificación ......................................................................................................................... 25
2.6 Validación y contrastes de hipótesis ....................................................................................... 27
2.7 Contraste individual de un coeficiente ................................................................................... 27
2.8 Pruebas estadísticas basadas en la función de verosimilitud y en el logaritmo neperiano de la
función de verosimilitud (log likelihood) ...................................................................................... 29
2.9 Medidas de bondad del ajuste ................................................................................................ 32
2.9.1 R2 propuesto por MCFADDEN (1974) (MC FADDEN R-SQUARED) .................................. 32
2.10. Prueba de significancia global con el criterio de razón de verosimilitud (LR) ...................... 33
2.9.3 Proporción de predicciones correctas (expectación-predicción). ................................... 34
3. Procedimiento para estimar un modelo ....................................................................................... 35
3.1. Efecto impacto, marginal o efecto escala .............................................................................. 36
4. Aplicaciones en R Studio ............................................................................................................... 38
4.1. Función glm ............................................................................................................................ 48
4.2. Datos sin agrupar ................................................................................................................... 50
4.4.Datos agrupados ..................................................................................................................... 58
4.5. Variables explicativas nominales y ordinales. ....................................................................... 62
4.5.1. Una variable explicativa categórica ................................................................................ 62
4.6. Variables explicativas nominales y ordinales. ........................................................................ 63
4.7. Una variable explicativa categórica ........................................................................................ 63
5. Regresión LOGIT ............................................................................................................................ 67
6. Falta de normalidad ...................................................................................................................... 70
6.1. Interpretación de las estimaciones obtenidas ....................................................................... 72
1. Introducción
encuentran ante situaciones en que deben elegir o decidir entre posibles alternativas.
Algunos de los ejemplos que se pueden plantear de este tipo de modelización son
los siguientes:
nivel cultural del cabeza de familia, edad del cabeza de familia, etc.).
corporación).
el punto ' X i y por tanto, según se establezcan las hipótesis de cómo es esta fun-
este tema, se supone que F es una función de distribución uniforme 1y, por tanto,
ecuación:
forma:
1
La distribución uniforme continua es una familia de distribuciones de probabilidad para variables aleatorias
continuas, tales que cada miembro de la familia, todos los intervalos de igual longitud en la distribución en su rango
son igualmente probables. El dominio está definido por dos parámetros, a y b, que son sus valores mínimo y máximo.
La distribución es a menudo escrita en forma abreviada como U(a,b).
yi = ' xi + ui (3)
muestra, cuya representación gráfica para una sola variable explicativa configura
regresor en el eje de abscisas y por el regresando, que toma los valores uno o cero,
en el eje de ordenadas.
Figura 1:
1
.8
.6
grade
.4
.2
0
2 2.5 3 3.5 4
gpa
2. Modelo simple
1
Yi = X i + ui = 11 (4)
X 2i
1; si secumplecierta condicion
Yi = (5)
0; decualquier otra forma
Y = 1+ 2 X 2 + 3 X 3 + U (6)
*Las variables que nos vienen a la mente: La edad, la formación el estado civil, el
número de hijos y ciertas características económicas (es común en las encuestas
nacional de Hogares que formula el INE (ENAHO).
Cuando se trata de decidir si o no. Por lo que no resultan adecuados los métodos de
regresión.
Yi = X i + U i (8)
Si Y toma valores entre cero y uno. Un modelo simple de regresión lineal de Y sobre
X no es apropiado, debido a que pone restricciones inadecuadas sobre los residuos
del modelo.
E ( ui ) = 0 (9)
Es decir, la probabilidad de que la persona trabaje es ' X i la lógica es que tiene que
estar entre cero y uno. No obstante, en el modelo no hay nada que restrinja a 𝑌𝑖 a
estarlo. Además, se tiene problemas con el error, pues esta toma solo dos valores a
saber:
Cuadro N.º 1
Var (ui ) = (1 − ' X i )2 ( ', X i ) + (− ' X i )2 (1 − ' X i ) = ' X i (1 − ' X i ) = Pi (1 − Pi ) (13)
• El error es heterocedástico.
• El error no es normal
Nada restringe a P(Yi = 1) = X i = E(Yi / X i ) a estar entre cero y uno.
,
•
Los dos primeros problemas pueden ser resueltos con relativa facilidad, utilizando
MCG y ampliando la muestra, respectivamente. No obstante, no existe forma de
resolver el último problema, razón por la cual nos vemos en la necesidad de trabajar
con un método que garantice que la probabilidad resultante se mueva entre esos
límites; para ello se recurrirá a la función de distribución acumulada del error, la
cual será utilizada para obtener el estimador MCO en estos modelos.
En el apartado anterior se han expuesto los problemas que lleva asociada la es-
timación por MCO del Modelo Lineal de Probabilidad. Ante estos problemas es
necesario buscar una alternativa a la estimación del modelo. Dado que uno de los
del Modelo Lineal de Probabilidad. A este tipo de modelos se les denomina MLP
ponderados.
Si los valores estimados de Yi son mayores que la unidad se debe sustituir por la
unidad. En este caso el valor resultante de 𝑌𝑖 ; será cero. Este hecho provocaría
un número por cero). Es por ello por lo que, en definitiva, se opta entre las dos
son robustos.
Si los valores estimados de 𝑌𝑖 son negativos (menores que cero) se deben sustituir
serios problemas al utilizar la variable sí; como ponderador (se tendría que dividir
un número por cero). Es por ello por lo que, en definitiva, se opta entre las dos
alternativas siguientes:
Yi = 1 + 2 X 2i + 3 X 3i + ... + k X ki + ui (15)
Yi 1 + 2 X 2i + 3 X 3i + ... + k X ki ui
= + (16)
wi wi wi
ui
Ahora varianza de = vi :
wi
ui 1 1
Var ( )= .Pi .(1 − Pi ) = ( Pi .(1 − Pi )) = 1 (17)
wi wi Pi .(1 − Pi )
Los problemas asociados a la estimación del MLP mediante son análogos a los que
Aunque se puede demostrar que las estimaciones llevadas a cabo mediante MCG
son eficientes, en la práctica no se garantiza que los resultados obtenidos para las
puedan ser negativos o bien mayores que uno. Es decir, que las estimaciones de la
son robustos.
los residuos sea distinta de cero. Este error de especificación del modelo
adecuada a los problemas que presentan los procesos de decisión dicotómica. Por
elección dicotómica que, sin duda, solucionan algunos de los problemas asociados
al MLP.
la utilidad que obtiene el individuo en una opción supere la utilidad que le pro-
Ahora bien, esta utilidad depende de los valores que toman las características del
agente económico y de la opción a elegir que serán las variables del problema re-
se tiene:
variable latente:
Yi * = ' X i + ui
Yi * Yi 0
(19)
Yi * Yi 0
Si Yi 0 = 0, Yi * 0, Yi * 0
Figura N º2
1 Y1 0 Yi = 1
*
Yi
0 Y1 0 Yi = 0
*
Pr ob(Yi = 1) = Éxito
Pr ob(Yi = 0) = 1 − Fracaso
La variable aleatoria tipo Bernoulli Yi una vez fijada solo podrá tomar dos valores
concretos: cero (0) o uno (1). Entones, la función de distribución de probabilidad de
la distribución de Bernoulli solo será distinta de cero (0) cuando yi sea cero (0) o uno
(1). El caso contrario sería que la función de distribución de la distribución de
Bernoulli fuera cero (0) dado que z será cualquier valor distinto de cero (0) o uno (1)
Yi = 1
f ( yi ; ) = 1 − Yi = 0
0 Otros
yi (1 − )1− yi
f (Yi ; ) =
0 En otros casos
Dónde:
L = 1n (1 − F ( ' X i ))(1− yi ) (Ni =n+1) ( F ( ' X i ))( yi ) = 1n (1 − Pi )(1− yi ) (Ni =n+1) ( Pi ) ( y1 ) (27)
para i=1,2,3,..., n Yi = 0
para i=n+1,n+2,n+3,..., N Yi = 1
Si F (u) es normal estándar estaríamos hablando del modelo Probit, mientras que si
fuera logística nos referiríamos al modelo Logit. Cabe mencionar que como ambas
funciones son simétricas podemos concluir que:
Es decir:
L 3
vs p (29)
Dado que no hay forma de saber a priori cómo se comportan los errores de los
relativamente útil, la elección entre logit y probit dependerá del mejor ajuste que se
' Xi 1 −z2
Pi = Prob(Yi = 1) = ( X i ) = '
exp dz (30)
− 2 2
Donde:
' Xi
Zi = Es el término de perturbación estandarizado.
u2
Yi = Pi + ui
1 si Yi * 0
G (Yi * ) = Yi = (33)
0 de otra foma
ui N (0, u 2 ) (34)
Entonces tenemos:
Pr ob(Yi = 1) = Pr ob(Yi * 0)
= Pr ob( ' X i + ui 0)
= Pr ob(ui − ' X i ) = Pr ob(ui − ' X i ) = Pr ob(ui ' X i ) = ( ' X i ) (35)
: Denota la FDA Normal
: Denota la F. de Densidad Normal
L = F (Y1 , Y2 ,...YN ) = F (Y1 ).F (Y2 )...F (YN ) = Pr ob(Yi = y1 ).Pr ob(Yi = y2 )...Pr ob(Yi = y N ) (38)
L = (( , X i ))( y1 ) (1 − ( , X i ))(1− y1 ) (( , X i ))( y2 ) (1 − ( , X i ))(1− y2 ) (( , X i ))( y3 ) (1 − ( , X i ))(1− y3 ) ...
(42)
( , X i ))( yN ) (1 − ( , X i ))(1− yN )
2
𝑃𝑟𝑜𝑏(𝑌 = 𝑦𝑖 ) = 𝛼 𝑦1 (1 − 𝛼)1−𝑦1 Dónde: 𝛼 = 𝑃𝑟𝑜𝑏 (𝑌 = 1) , 1 − 𝛼 = 𝑃𝑟𝑜𝑏 (𝑌 = 0)
l = ln( L)
N
l = (Yi ln[( ' X i ] + (1 − Yi ).ln[1 − ( ' X i )]) (44)
i =1
l
=0 Obtenemos un sistema de ecuaciones no lineales que tienen que ser
estimados con el uso de algoritmos como el Newton Raphason, Gauss Newton, etc.
Note que la función Likelihood está acotada superiormente por cero, debido a que
2.6 ESPECIFICACIÓN
3
Otro importante aspecto de trabajar con funciones de distribución estandarizadas es que los parámetros 𝛽 y
𝜎 siempre aparecen juntos. Por consiguiente, ellos no pueden ser identificados separadamente solo importa la
ratio
Xi −1
1 ( Zi 2 )
Yi = exp 2 2
dzi + ui =
( 2 2 )
1/2
− (45)
Yi = ( X i ) + ui = Pr ob(Yi = 1) + ui = Pi + ui
Yi = ( X i ) + ui (46)
Pr ob(Y = 1) = Pi = ( X i ) (47)
Una vez estimado el modelo, un valor concreto del regresando cuantifica, a través
de la probabilidad, la utilidad de elegir la opción 1, cuya expresión es:
Yi = ( X i ) + ui = Pr ob(Yi = 1) + ui = Pi + ui
estimadores muestrales como .
3.Modelo Logit
3.1. Especificación
1
Yi = − ( 0 + 1 x1i + 2 x2 i + 3 x3 i +...+ k xki )
+ ui
1+ e (51)
Yi = ( X i ) + ui = Pi + uí (52)
exp X i
'
1
Yi = − ' Xi
+u i= ' Xi
+ui (53)
1 + exp 1 + exp
Dónde:
La interpretación del modelo Logit se puede efectuar a partir del siguiente hecho:
conocidos (dados) los valores de las características 𝑋𝑖 ; se les asigna una
probabilidad por ejemplo 𝑃𝑖 , de que la variable 𝑌𝑖 valga la unidad.
Efecto Marginal
Pi ( ˆ X i )
= k = ( ˆ X i ) k
X ik X ik
: Función Logistica Acumulativa (54)
: Función de Densidad Logistica
del ajuste.
H 0 : k = 0
(55)
H1 : k 0
4. Es importante recalcar que la función de verosimilitud, bajo ciertas condiciones de regularidad, es uno de los principales
candidatos a poseer las propiedades asintóticas.
ˆK − K a
t= Z (0,1)
ˆ
K
(56)
ˆ a
t= K Z (0,1)
ˆ
K
ˆ − K
Prob − Z K Z = 1 − =1-5%=95% (57)
2 ˆ
K
2
ˆ
Prob −Z K Z = 1− (58)
2 ˆ
K
2
Los intervalos de confianza para t están dados por:
ˆK
−Z Z (59)
2 ˆ 2
K
Despejando tenemos:
− Z . ˆ ˆK Z . ˆ (60)
K K
2 2
l ( NR , 2 ) l (R , 2 )
Se pueden construir distintos contrastes de hipótesis. El criterio general para la
que sirve para realizar las pruebas hipótesis entre dos modelos que presentan la
5
La expresión de función de verosimilitud que se expone a continuación tan sólo se cumple cuando el ta maño de la
muestra tiende a infinito (suficientemente grande). En este tipo de modelos la función de verosimilitud no se puede
simplificar ya que el estimador de la varianza del modelo y los estimadores de los coefi cientes de regresión no son
independientes
𝐿𝐶𝑅
𝐿𝑅 = −2 ln(𝜆) = −2𝑙𝑛 ( ) = 2(𝑙𝑛𝐿𝑆𝑅 − 𝑙𝑛𝐿𝐶𝑅 ) = −2(𝑙𝐶𝑅 − 𝑙𝑆𝑅 ) (63)
𝐿𝑆𝑅
restricciones.
H 0 : k = 0k = 0
H1 : k 0
Akaike (1973) 7 propone una corrección a los estadísticos anteriores por el número
2k 2l
AIC = − (66)
N N
6
En el Eviews es LR statistic (K df) donde K df son los grados de libertad igual al número de variables explicativas en
el modelo. Estos se ven cuando estimo el modelo ya sea Logia o Probit.
7
En el Eviews es Akaike info criterion
y sirve para comparar la bondad del ajuste entre dos modelos. Según este criterio
es preferible aquel modelo que presente un valor del AIC menor, es decir siempre
𝐾 ∗ ln 𝑛 2𝑙
𝑆𝐶 = 𝑆𝑐ℎ𝑎𝑤𝑟𝑧 = − (67)
𝑛 𝑛
Dicho estadístico, al igual que el AIC de Akaike, sirve para comparar la bondad
del ajuste entre dos modelos (no es necesario que presenten la misma variable
endógena).
Dicho estadístico, al igual que el AIC de Akaike, sirve para comparar la bondad
del ajuste entre dos modelos. En este caso se tiene en cuenta explícitamente el
tamaño de la muestra. Según este criterio es preferible aquel modelo que presente
un valor del estadístico de Hannan-Quinn menor.
Dado que las pruebas tradicionales de bondad del ajuste, tales como el R2, no son
válidas en los modelos en los que la variable endógena toma exclusivamente los
valores uno o cero, se van a proponer unas medidas alternativas que midan la
lnLSR
R 2 McFadden = 2 = 1 − ( )
lnLCR ( solo con int ercepto )
LSR LCR / 0 L 1 0.2 2 0.4 Indicador de un buen
ln LSR ln LCR 0
ajuste
H 0 : 2 = 3 = ... = k = 0
L(0) = LCR
ln L(0) = ln LCR
l (0) = lCR
esperar que un buen modelo tenga un 𝜌2 Entre 0.2 y 0.4 ( Colin Cameron & Trivedi,
2005).
𝐿𝐶𝑅
𝐿𝑅 = −2 ln(𝜆) = −2𝑙𝑛 ( ) = 2(𝑙𝑛𝐿𝑆𝑅 − 𝑙𝑛𝐿𝐶𝑅 ) = −2(𝑙𝐶𝑅 − 𝑙𝑆𝑅 ) (69)
𝐿𝑆𝑅
8
En el Eviews es LR statistic (K df) donde K df son los grados de libertad igual al número de variables explicativas en
el modelo. Estos se ven cuando estimo el modelo ya sea Logia o Probit.
𝑌𝑖 = 1 𝑌𝑖 = 0
Predicción
de 𝑌̂𝑖
Es la
𝑌̂𝑖 < 𝐶 = 0.5 Frecuencia de errores =𝐼12 Frecuencia de aciertos
probabilidad
Frecuencia = 𝐼2 (Predicción errónea) =𝐼22
estimada de Pi
(Predicción correcta)
En el caso de los modelos MLP, Logit, Probit y Valor Extremo se asigna gene-
ralmente el valor de predicción igual a uno cuando 𝑌̂𝑖 > 0.5 e igual a cero
cuando ̂𝑌𝑖 < 0.5. (Bernardí Cabrer Borrás & Amparo Sancho Pérez, Guada, 2001)
Para estimar correctamente un modelo discreto se sugiere seguir los pasos que se
explican a continuación (Beltran Barco, 2001):
respecto de las conclusiones que arroja este test. Esta regla práctica se da
multicolinealidad.
muestra.
Determinar los efectos impactos de las variables explicativas del modelo. En caso
de una variable explicativa continua k éste sería igual a:
𝜕𝑃𝑟𝑜𝑏(𝑌𝑖 =1)
𝐸𝐼 = = 𝑓(𝛽, 𝑋𝑖 )𝛽̂𝑘𝑖 (74)
𝜕𝑋𝐾
sería:
En este caso también podría calcularse el efecto para la media muestral o para
Note que cualquiera sea el tipo de variable explicativa, el efecto impacto arroja
9
Tener en cuenta que en la formulación de estos modelos la especificación es con la funcion de distribución
acumulada y no la función de densidad.
𝑋̅𝑘
𝑛𝑘 𝐸𝐼𝑋𝐾 ∗ ( ) (76)
𝐹(𝛽 , 𝑋𝑖 )
elasticidad puede servir también para rankear todas las variables explicativas de
4. Aplicaciones en R Studio
Los datos están en un fichero sav de SPSS1, que se puede leer en R utilizando el paquete
library(foreign)
setwd("C:/Users/RAFAEL/Documents/modelos MPL T de micro")
# mostrar directorio actual
getwd()
Como sólo nos interesan algunas variables del total, vamos a construir un nuevo data.frame
que
contenga sólo a las variables de interés. También recodificamos la variable uso_int (uso de
internet), para que valga 110 si la persona ha utilizado alguna vez internet y 0 en otro caso,
utilizando la función ifelse11 (Cañadas Reche, 2003).
10
La codificación original de las variables se puede ver en ftp://www.ine.es/temas/tich/tich_disreg_11.xls
11
La función ifelse es una versión vectorial de la función if. Aplicada a un vector evalúa la condición sobre todos los elementos
devolviendo un vector de la misma longitud que el original.
12
sapply(datos.bin, class)
El nivel de estudios y el hábitat deberían ser variables categóricas, así que vamos a
convertirlas a la clase factor.
Hemos especificado que la convierta a factor y que tome las categorías de 0 a 6, con
etiquetas iguales a estrato0, estrato1, etc. Con la función levels vemos cuales son los niveles
de los factores.
levels(datos.bin$habitat)
## [1] "estrato0" "estrato1" "estrato2" "estrato3" "estrato4" "estrato5"
## [7] "estrato6"
levels(datos.bin$nivelest)
## [1] "1" "2" "3" "4" "5" "6" "7" "8" "9"
Estrat Descripción
o
Las frecuencias en cada estrato se pueden obtener utilizando table, y con barplot
Se observa que el estrato con más casos es el que corresponde a los municipios de menos
de 10.000 habitantes. Para el nivel de estudios los códigos se corresponden con las
siguientes categorías.
Código Descripción
1 Analfabetos
2 Educación primaria
3 Primera etapa de la educación secundaria
4 Segunda etapa de la educación secundaria
5 Enseñanza postsecundaria no superior
6 Formación profesional de grado superior
7 Educación superior universitaria (excepto
Doctores)
8 Título de Doctorado
9 No se puede codificar
Recodificamos las categorías del nivel de estudios utilizando por ejemplo la función
library(car)
datos.bin$nivelest <- with( datos.bin, recode( nivelest,
" c(1,9) = 'Analfabetos';
2:3 = 'Primaria';
4:6 = 'Secundaria y F.P';
7:8= 'Universitaria o superior'")
)
levels(datos.bin$nivelest)
## [1] "Analfabetos" "Primaria"
## [3] "Secundaria y F.P" "Universitaria o superior"
La función with permite no tener que utilizar la indexación o el símbolo $ para utilizar
nivelest habitat
Analfabetos : 290 estrato0: 343
Primaria :2061 estrato1: 454
Secundaria y F.P : 692 estrato2: 134
Universitaria o superior: 442 estrato3: 306
estrato4: 349
estrato5: 570
estrato6:1329
han utilizado internet alguna vez. La distribución de la variable uso_int según las
función prop.table aplicada a una tabla devuelve la proporción de cada celda, también
uso_int
sexo 0 1
Hombre 0.4891233 0.5108767
Mujer 0.5650407 0.4349593
Distribución uso_int según edad. Utilizamos la función cut para dividir la variable
uso_int
habitat 0 1
estrato0 0.4752187 0.5247813
estrato1 0.4691630 0.5308370
estrato2 0.3955224 0.6044776
estrato3 0.4836601 0.5163399
estrato4 0.5100287 0.4899713
estrato5 0.4947368 0.5052632
13 estrato6
El nombre 0.6147479
del argumento se puede0.3852521
obviar si se ha introducido en el orden correcto. R interpreta que si no
se especifica el nombre del argumento, lo asigna en función de la posición en que aparece en la función.
Utilizando args(funcion) se puede ver en qué orden aparecen los argumentos.
de los datos respecto de los parámetros del modelo. Para los modelos logit, la log-
verosimilitud es una función cóncava y por tanto los estimadores máximos verosímiles
El cálculo de los estimadores es más complejo que para los modelos lineales y requieren
apéndice A, se puede encontrar una descripción de las distintas formas de ajuste y cómo
se pueden programar en R.
Para ajustar un modelo lineal generalizado, la función genérica que se usa en R es glm.
Cuyos argumentos son:
args(glm)
function (formula, family = gaussian, data, weights, subset,
na.action, start = NULL, etastart, mustart, offset, control = l
ist(...),
model = TRUE, method = "glm.fit", x = FALSE, y = TRUE,
singular.ok = TRUE, contrasts = NULL, ...)
NULL
Los argumentos más importantes de glm son formula, family, data y subset. El
sintaxis comprensible
formula tiene tres partes: el lado izquierdo, el símbolo ~ y el lado derecho. En el lado
izquierdo
también se pueden poner expresiones matemáticas dentro de la función glm como por
símbolo ~ se usa como separador. El lado derecho de una fórmula es una expresión
especial que incluye los nombres de las variables predictoras. Por ejemplo, si utilizamos
El argumento family sirve para indicar el componente aleatorio del modelo, así como
simplemente binomial, la función glm utilizará la función logit como función de enlace.
Los argumentos datan y subset son para especificar respectivamente, el data frame
mismos. Si las variables del modelo no están en un data frame, el argumento data no es
necesario.
(fracaso, éxito), o ser una variable lógica (con TRUE siendo el éxito y FALSE el fracaso)
o como un factor, en cuyo caso la primera categoría6 representa los fracasos y la otra los
En este caso la sintaxis de glm varía levemente, como se verá cuando se trate el ajuste
Dónde y es una variable discreta con valores 0, 1 y x una variable continua (aunque se
verá más adelante que también podría ser una categórica, en cuyo caso glm crea
internamente las variables de diseño asociadas), que están en el data frame “mis.datos”.
Se ha especificado la familia binomial, la cual toma por defecto la función logit como
función de enlace.
La función glm es la más usual para ajustar modelos lineales generalizados, si bien
tales como la función lrm en el paquete rms o vglm del paquete VGAM, o se pueden
cuando tenemos los datos de forma que, para cada observación tenemos el valor de la
variable repuesta. Los datos de la encuesta TIC son datos sin agrupar, dónde para cada
Para evitar el solapamiento de los puntos en la figura (3), se ha utilizado la función jitter
que
logística binaria, ya que la variable respuesta toma sólo dos valores. El ajuste de un
> class(modelo.1)
[1] "glm" "lm"
En este objeto se han guardado varias características y valores del ajuste. Para ver qué
names.
En la ayuda de glm se explica con mayor detalle el uso de la función y qué resultados
devuelve. Por ejemplo, en fitted.values se han guardado los valores predichos para
residuals, que aplicada a un objeto de tipo glm, permite obtener varios tipos de
residuos. Otras funciones que extraen o calculan valores son fitted (valores ajustados),
coef (coeficientes del modelo) o predict, que aplicada a un data.frame permite calcular
modelo.1
Coefficients:
(Intercept) edad
5.6689 -0.1123
que muestra parte de la información más importante del modelo, tal como los
denomina modelo nulo al modelo sin variables explicativas, este modelo es el más
simple que se puede considerar, y estima la misma respuesta para todas las
glm.
class(modelo.1)
## [1] "glm" "lm"
En este objeto se han guardado varias características y valores del ajuste. Para ver qué
se ha guardado en modelo.1 podemos utilizar varias funciones, como str (structure) o
names.
names(modelo.1)
[1] "coefficients" "residuals" "fitted.values"
[4] "effects" "R" "rank"
[7] "qr" "family" "linear.predict
ors"
[10] "deviance" "aic" "null.deviance"
[13] "iter" "weights" "prior.weights"
[16] "df.residual" "df.null" "y"
[19] "converged" "boundary" "model"
[22] "call" "formula" "terms"
[25] "data" "offset" "control"
[28] "method" "contrasts" "xlevels"
Modelos Logit y Probit en R Studio Bustamante Romaní, Rafael.
54
Serie Apuntes de Finance and Econometrics Group N°03. Noviembre del 2020.
En la ayuda de glm se explica con mayor detalle el uso de la función y qué resultados
devuelve. Por ejemplo, en fitted.values se han guardado los valores predichos para p(x).
residuals no se corresponde con los residuos de pearson o los de la devianza, sino que
residuals, que aplicada a un objeto de tipo glm, permite obtener varios tipos de
residuos. Otras funciones que extraen o calculan valores son fitted (valores ajustados),
coef (coeficientes del modelo) o predict, que aplicada a un data.frame permite calcular
cual extrae diferente información según la clase del objeto a la que se le aplique.
summary(modelo.1)
Call:
glm(formula = uso_int ~ edad, family = binomial, data = datos.
bin)
Deviance Residuals:
Min 1Q Median 3Q Max
-2.7102 -0.5973 -0.2022 0.6640 2.9093
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 5.668886 0.187706 30.20 <2e-16 ***
edad -0.112343 0.003605 -31.16 <2e-16 ***
---
Signif. codes:
0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
summary ofrece un resumen del modelo de forma más ordenada, en primer lugar,
muestra la expresión utilizada para ajustar el modelo, junto con algunos valores
Los coeficientes del modelo los muestra en formato tabular, añadiendo el error
estándar, y el valor z14 que es el coeficiente dividido por el error. Este valor se utiliza en
muestra el p-valor de ese contraste y a qué nivel de confianza es significativo. Por último
se muestra la devianza del modelo nulo (null deviance) y del modelo ajustado (Residual
deviance), con sus respectivos grados de libertad, así como el valor del
14 Se utiliza z porque la distribución asintótica del parámetro es normal, a diferencia de en los modelos lineales en los que
la distribución es la t de Student.
15 La devianza se utiliza en la evaluación del ajuste global del modelo, mientras que el valor de AIC es útil en la comparación
CURVA AJUSTADA
4.4.Datos agrupados
Considerando el mismo ejemplo que en el apartado anterior, pero agrupando por edad
particular dónde N = 1.
En el ajuste de este tipo de datos es necesario especificar tanto el número de éxitos como
cbind una matriz con dos columnas, la primera con el número de éxitos y la segunda
summary(modelo.2)
Call:
glm(formula = cbind(si.internet, no.internet) ~ edad, family = b
inomial,
data = iagrupado)
Deviance Residuals:
1 2 3 4 5 6 7
-1.6448 -0.5494 2.0073 0.8275 0.8527 3.0381 -2.3420
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 2.11746 0.34888 6.069 1.29e-09 ***
edad -0.10222 0.01581 -6.467 1.00e-10 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Este modelo estima los mismos parámetros que el modelo.1, pero vemos que el valor
de la
devianza es distinto. Esto es debido a cómo se han considerado los datos, en el primer
combinaciones de edad, nótese que los grados de libertad de la Residual deviance, son
La devianza, provee una medida de la falta de ajuste de un modelo, pero sólo en el caso
de que se trate con datos agrupados9. Una demostración de la diferencia del cálculo de
head(iagrupado)
edad habitat no.internet si.internet prop
1 18 estrato0 163 180 0.5247813
2 19 estrato1 213 241 0.5308370
3 20 estrato2 53 81 0.6044776
4 21 estrato3 148 158 0.5163399
5 22 estrato4 178 171 0.4899713
6 23 estrato5 282 288 0.5052632
>
la que R toma por defecto utilizando como categoría de referencia la primera. Cuando
se tienen factores es conveniente utilizar la orden levels(variable) que nos devuelve las
Retomando los datos del uso de internet entre los andaluces, teníamos como variables
categóricas el sexo, el nivel de estudios y el hábitat. Para ver cómo las va a codificar R
contrasts(datos.bin$habitat)
Retomando los datos del uso de internet entre los andaluces, teníamos
16
En la ayuda de la función, se explica cómo especificar otro tipo de codificaciones.
contrasts(datos.bin$habitat)
estrato1 estrato2 estrato3 estrato4 estrato5 estrato6
estrato0 0 0 0 0 0 0
estrato1 1 0 0 0 0 0
estrato2 0 1 0 0 0 0
estrato3 0 0 1 0 0 0
estrato4 0 0 0 1 0 0
estrato5 0 0 0 0 1 0
estrato6 0 0 0 0 0 1
En las filas tenemos las categorías originales y en las columnas las variables auxiliares,
tantas como categorías existentes menos una. El estrato0 lo ha codificado con el valor 0
en todas las variables auxiliares y al resto de categorías les pone el valor 1 en una
En la tabla sobre el uso de internet en los diferentes estratos, vimos que el estrato6
(municipios de menos de 10 mil habitantes), es dónde hay una menor proporción del
uso de internet (0.3853), así que vamos a tomar este estrato como referencia. Utilizando
> levels(datos.bin$habitat)
> contrasts(datos.bin$habitat)
estrato1 estrato2 estrato3 estrato4 estrato5 estrato6
estrato0 0 0 0 0 0 0
estrato1 1 0 0 0 0 0
estrato2 0 1 0 0 0 0
estrato3 0 0 1 0 0 0
estrato4 0 0 0 1 0 0
estrato5 0 0 0 0 1 0
estrato6 0 0 0 0 0 1
Al haber especificado que hábitat es de tipo factor, R construye las variables auxiliares
categórica y la función identifica que se trata de una variable tipo factor e incorpora las
variables auxiliares en la “matriz del modelo”. Dicha matriz contiene una columna de
unos para el intercept y las 5 columnas con las variables auxiliares. Podemos ver la
Así, el modelo de regresión logística con una variable categórica explicativa, se reduce
como categorías de la variable categórica menos una. El resumen del modelo, extraído
summary(modelo.3)
summary(modelo.3)
Call:
glm(formula = uso_int ~ habitat, family = binomial, data = datos.bin)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.3620 -1.1604 -0.9865 1.1685 1.3812
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 0.09921 0.10812 0.918 0.359
habitatestrato1 0.02430 0.14330 0.170 0.865
habitatestrato2 0.32495 0.20713 1.569 0.117
habitatestrato3 -0.03382 0.15741 -0.215 0.830
habitatestrato4 -0.13933 0.15217 -0.916 0.360
habitatestrato5 -0.07815 0.13678 -0.571 0.568
habitatestrato6 -0.56652 0.12193 -4.646 3.38e-06 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 4817.0 on 3484 degrees of freedom
Residual deviance: 4751.6 on 3478 degrees of freedom
AIC: 4765.6
Number of Fisher Scoring iterations: 4
Los
variables de estrato toman el valor 1 para los individuos de ese estrato, y 0 para los que
no pertenecen a ese estrato. Para un individuo del estrato 5 (municipios entre 10 mil y
5. Regresión LOGIT
variable dependiente es binaria, es decir, toma únicamente dos valores. En tal caso,
como hemos visto, la estimación por MCO no es adecuada, siendo necesaria una
estimación logit o probit. Para ello recurrimos al código glm (esta función también se
head(datosWeb)
crédito el resto de variables, por ejemplo, podemos realizar una regresión lineal
múltiple estimada por Mínimos Cuadrados Ordinarios (MCO). Para ello recurrimos al
código lm:
mlp = lm(credito~ingresos+as.factor(laboral)+cargas)
summary(mlp)
la que el cliente está en paro. Otra opción es la de generar las variables dummys:
n = length(ingresos)
laboral0 = array(0,n)
laboral1 = array(0,n)
laboral2 = array(0,n)
for (i in 1:n){
if(laboral[i] == 0){laboral0[i] = 1}
if(laboral[i] == 1){laboral1[i] = 1}
Modelos Logit y Probit en R Studio Bustamante Romaní, Rafael.
if(laboral[i] == 2){laboral2[i] = 1}
68
}
Serie Apuntes de Finance and Econometrics Group N°03. Noviembre del 2020.
mlp.bis = lm(credito~ingresos+laboral1+laboral2+cargas)
summary(mlp.bis)
Call:
lm(formula = credito ~ ingresos + laboral1 + laboral2 + cargas)
Residuals:
Min 1Q Median 3Q Max
-0.74378 -0.14089 0.01514 0.13246 0.55486
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.006364 0.086622 -0.073 0.9417
ingresos 0.045123 0.008943 5.046 5.87e-06 ***
laboral1 0.203331 0.099414 2.045 0.0459 *
laboral2 0.648285 0.103144 6.285 6.80e-08 ***
cargas -0.168883 0.075703 -2.231 0.0300 *
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
6. Falta de normalidad
Ahora, por ejemplo, se tiene garantizado obtener estimaciones en el intervalo [0, 1]:
Ahora, por ejemplo, se tiene garantizado obtener estimaciones en el intervalo [0, 1]:
estimaciones2 = logit$fitted.values
plot(estimaciones2,main="¿Datos estimados fuera de [0, 1]?", xlab="Individuo",
ylab="Estimación de CREDITO", col="blue",lwd=2)
abline(a=1,b=0,col="red",lwd=2) # línea y=1
abline(a=0,b=0,col="red",lwd=2) # línea y=0
En este caso, al ser el logit un modelo no lineal no es fácil interpretar las estimaciones
En tal caso, puesto que la única variable con coeficiente significativamente distinto de
cero es ingresos (p-valor=0.0223), y al ser este positivo, se tiene que conforme aumentan
individuo.medio
(0.5087) en lugar de 0.5. Aunque en este caso prácticamente coinciden, de esta forma se
valores de corte:
## [1] 92.98246
Call:
glm(formula = credito ~ ingresos + as.factor(laboral) + cargas,
family = binomial("probit"))
Deviance Residuals:
Min 1Q Median 3Q Max
-2.37719 -0.00010 0.00462 0.22918 1.28415
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -6.4991 570.0072 -0.011 0.9909
ingresos 0.2562 0.1016 2.521 0.0117 *
as.factor(laboral)1 4.9853 570.0074 0.009 0.9930
as.factor(laboral)2 7.1625 570.0075 0.013 0.9900
cargas -1.2033 0.6740 -1.785 0.0742 .
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
signo en las estimaciones de los coeficientes, por lo que la interpretación del signo de
los efectos marginales del probit coinciden con las del logit:
valores estimados del modelo logit y probit se obtienen que prácticamente coinciden
plot(fitted.values(probit),fitted.values(logit),xlab="Valores ajustados
modelo PROBIT",ylab="Valores ajustados modelo LOGIT",col="blue",lwd=2)
abline(a=0,b=1,col="red",lwd=2) # recta y=x
modelo logit, al igual que el cálculo e interpretación del odd y odd-ratio. Ahora bien, el
uso de la exponencial para obtener estas medidas en este caso no es correcto ya que
individuo con ingresos medios que tenga contrato temporal y no tenga cargas
familiares:
En este caso se tendría que la probabilidad de devolver el crédito del 52.67% y que es
1.113 veces más probable que se devuelva el crédito frente a que no lo haga. Mientras
devolver el crédito frente a no hacerlo es del 12.79% y es 6.816 veces menos probable
De forma que para este individuo (de ingresos medios y contrato temporal) si tiene
cargas (cargas=1) familiares es 7.587 veces menos probable que devuelva el crédito
Una vez más se observa que el efecto marginal depende de los valores usados en las
variables explicativas.
Adviértase que se obtienen valores muy parecidos a los obtenidos con el modelo logit.
De igual forma, se puede obtener la tasa de aciertos para un umbral concreto (para la
Una vez más se observa que el efecto marginal depende de los valores usados en las
variables explicativas.
Adviértase que se obtienen valores muy parecidos a los obtenidos con el modelo logit.
De igual forma, se puede obtener la tasa de aciertos para un umbral concreto (para la
Bibliography
Colin Cameron , A., & Trivedi, P. (2005). Microeconometrics: Methods and Applications. (C. U.
Press, Ed.) New York.
Bernardí Cabrer Borrás, & Amparo Sancho Pérez, Guada. (2001). Microeconometría y Decisión.
Ediciones Pirámide, .