Cómo usar la función de predicción con glm en R (con ejemplos)

La función glm () en R se puede utilizar para ajustar modelos lineales generalizados. Esta función es particularmente útil para ajustar modelos de regresión logística , modelos de regresión de Poisson y otros modelos complejos.

Una vez que hemos ajustado un modelo, podemos usar la función de predicción () para predecir el valor de respuesta de una nueva observación.

Esta función utiliza la siguiente sintaxis:

predecir (objeto, nuevos datos, tipo = «respuesta»)

dónde:

  • objeto: el nombre del modelo que se ajusta mediante la función glm ()
  • newdata: el nombre del nuevo marco de datos para realizar predicciones
  • type: el tipo de predicción que se va a realizar.

El siguiente ejemplo muestra cómo ajustar un modelo lineal generalizado en R y cómo luego usar el modelo para predecir el valor de respuesta de una nueva observación que no ha visto antes.

Ejemplo: uso de la función de predicción con glm en R

Para este ejemplo, usaremos el conjunto de datos R integrado llamado mtcars :

#ver las primeras seis filas del marco de datos de mtcars
cabeza (mtcars)

                   mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21,0 6160110 3,90 2,620 16,46 0 1 4 4
Mazda RX4 Wag 21.0 6160110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22,8 4108 93 3,85 2,320 18,61 1 1 4 1
Hornet 4 Impulso 21,4 6258110 3,08 3,215 19,44 1 0 3 1
Hornet Sportabout 18,7 8360175 3,15 3,440 17,02 0 0 3 2
Valiente 18,1 6225105 2,76 3,460 20,22 1 0 3 1

Ajustaremos el siguiente modelo de regresión logística en el que usamos las variables disp y hp para predecir la variable de respuesta am (el tipo de transmisión del automóvil: 0 = automática, 1 = manual).

#fit modelo de regresión logística
modelo <- glm (am ~ disp + hp, data = mtcars, family = binomial)

#ver resumen de
 resumen del modelo (modelo)

Llamada:
glm (fórmula = am ~ disp + hp, family = binomial, data = mtcars)

Residuos de desviación: 
    Mín. 1T Mediana 3T Máx.  
-1,9665 -0,3090 -0,0017 0,3934 1,3682  

Coeficientes:
            Estimar Std. Error z valor Pr (> | z |)  
(Intercepción) 1,40342 1,36757 1,026 0,3048  
disp -0.09518 0.04800 -1.983 0.0474 *
CV 0,12170 0,06777 1,796 0,0725.
---
Signif. códigos: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0,1 pulg. 1

(El parámetro de dispersión para la familia binomial se toma como 1)

    Desviación nula: 43.230 en 31 grados de libertad
Desviación residual: 16.713 en 29 grados de libertad
AIC: 22,713

Número de iteraciones de puntuación de Fisher: 8

Luego, podemos usar este modelo para predecir la probabilidad de que un automóvil nuevo tenga una transmisión automática (am = 0) o una transmisión manual (am = 1) usando el siguiente código:

#definir nueva observación
 newdata = data. marco (disp = 200, hp = 100)

#use modelo para predecir el valor de am
predecir (modelo, nuevos datos, tipo = " respuesta ")

         1 
0,00422564

El modelo predice que la probabilidad de que el automóvil nuevo tenga transmisión manual (am = 1) sea de 0,004 . Esto significa que es muy parecido a que este nuevo automóvil tenga una transmisión automática.

Tenga en cuenta que también podemos hacer varias predicciones a la vez si tenemos un marco de datos que tiene varios coches nuevos.

Por ejemplo, el siguiente código muestra cómo usar el modelo ajustado para predecir la probabilidad de una transmisión manual para tres autos nuevos:

# definir un nuevo marco de datos de tres coches
 newdata = data. marco (disp = c (200, 180, 160),
                     hp = c (100, 90, 108))

#ver marco de datos
nuevos datos

  disp hp
1 200 100
2 180 90
3160 108

#utilice el modelo para predecir el valor de am para los tres coches
 predicen (modelo, nuevos datos, tipo = " respuesta ")

          1 2 3 
0,004225640 0,008361069 0,335916069 

A continuación, se explica cómo interpretar la salida:

  • La probabilidad de que el coche 1 tenga transmisión manual es de 0,004 .
  • La probabilidad de que el coche 2 tenga transmisión manual es de 0,008 .
  • La probabilidad de que el automóvil 3 tenga transmisión manual es .336 .

Notas

Los nombres de las columnas en el nuevo marco de datos deben coincidir exactamente con los nombres de las columnas en el marco de datos que se utilizaron para construir el modelo.

Observe que en nuestro ejemplo anterior, el marco de datos que usamos para construir el modelo contenía los siguientes nombres de columna para nuestras variables predictoras:

  • disp
  • hp

Por lo tanto, cuando creamos el nuevo marco de datos llamado newdata, nos aseguramos de nombrar también las columnas:

  • disp
  • hp

Si los nombres de las columnas no coinciden, recibirá el siguiente mensaje de error:

Error en eval (predvars, datos, env)

Tenga esto en cuenta cuando utilice la función de predicción ().

Recursos adicionales

Cómo realizar una regresión lineal simple en R
Cómo realizar una regresión lineal múltiple en R
Cómo realizar una regresión polinomial en R
Cómo crear un intervalo de predicción en R

  • https://r-project.org
  • https://www.python.org/
  • https://www.stata.com/

Deja un comentario

Para normalizar los valores de un conjunto de datos entre 0 y 100, puede utilizar la siguiente fórmula: z yo…
statologos comunidad-2

Compartimos información EXCLUSIVA y GRATUITA solo para suscriptores (cursos privados, programas, consejos y mucho más)

You have Successfully Subscribed!