Intervalos de predicción de una regresión en R con ggplot2

Los intervalos de predicción son quizás algo menos conocidos que los famosos intervalos de confianza. Utilizarlos indistintamente es un error muy grave puesto que no son equivalentes y representan dos realidades muy diferentes. En esta entrada vamos a aprender a obtener intervalos de predicción de una regresión en R usando el paquete ggplot2, así como a diferenciar entre intervalos de predicción de los intervalos de confianza, para no volver nunca a intercambiarlos y utilizarlos de una forma metódica y útil.

Quiero leer...

Comparación entre intervalos de predicción e intervalos de confianza en diagramas

Los intervalos de predicción, a diferencia de los intervalos de confianza, representan el espacio donde se distribuyen los datos con una probabilidad asociada. Si recordamos, los intervalos de confianza representan el espacio donde podemos encontrar un parámetro estadístico concreto con una probabilidad concreta, como pueden ser la media, desviación estándar, etc. Sin embargo, el intervalo de predicción no se refiere a ningún parámetro estadístico en concreto, sino a la distribución de los datos en su espacio, representando la probabilidad de encontrar una observación dentro de ese intervalo (y no una media, mediana, etc, como sucede con los intervalos de confianza).

En el caso de una regresión, si estamos interesados en predecir cuál es el intervalo completo que puede adquirir el valor de Y para un determinado valor de X, utilizamos el intervalo de predicción. Sin embargo, si lo que queremos es evaluar en qué intervalo se encuentra la media de esa regresión, aplicaremos el intervalo de confianza de una regresión.

Mientras que el intervalo de predicción (o predictivo) va asociado a la dispersión de las observaciones, el intervalo de confianza va asociado a un parámetro (como la media media, por ejemplo).

¿Cuándo es mejor utilizar los intervalos de predicción y no los intervalos de confianza?

Vamos a responder a esta pregunta con un ejemplo. Se sabe que existe una correlación positiva entre la longitud del fémur de los humanos y su estatura. Por lo tanto, a mayor longitud del fémur, mayor estatura de la persona. Pues bien, nos hemos encontrado en un yacimiento un fémur completo, y nos gustaría calcular cuál es la estatura que presentaba ese individuo. Para ello, medimos el fémur, incorporamos en la ecuación de regresión su valor, y obtenemos la estatura estimada por nuestro modelo. Hasta aquí todo perfecto, ¿verdad?

Sin embargo, el valor de estatura estimado debe ir acompañado de un intervalo. ¿Qué intervalo usaríais? ¿confianza o predicción? La respuesta es  obviamente el de predicción. Queremos dar el intervalo mínimo y máximo de estatura que nuestro individuo puede tener a raíz de los datos con los que hemos construido el modelo de regresión. Si diéramos el intervalo de confianza, estaríamos dando el mínimo y máximo de donde esperaríamos encontrar la media de nuestra población, no la variabilidad de nuestra población, que es lo que sí ofrece el intervalo de predicción.

De todo lo dicho hasta ahora, podemos deducir que a partir de una probabilidad fija (por ejemplo del 95%), los intervalos de predicción van a ser siempre más amplios que los intervalos de confianza. Para generar los intervalos de predicción de una regresión en R, vamos a trabajar con unos datos para poder evaluar el potencial y la utilidad de estos intervalos.

Datos del ejemplo para calcular los intervalos de predicción de una regresión en R

Para poder replicar los comandos y códigos que representen gráficamente los intervalos de predicción de una regresión en R en esta entrada, os animo a que os descarguéis los datos y juguéis con ellos. En mi caso los cargo en R Commander, pero vosotros lo podéis incorporar a R siguiendo vuestro procedimiento favorito.

Realizando un diagrama de dispersión (o Scatterplot) de los datos en R Commander, vemos cómo se relacionan la variable X y la Y.

Regresión polinomial de segundo grado en R

Antes de representar los intervalos de predicción de una regresión en R, tenemos que generar primero la regresión. Si visualizamos los datos en un diagrama de dispersión (podéis ver la figura en la entrada sobre los intervalos de confianza), vemos que no se adaptan perfectamente a una regresión lineal. Más bien se adaptan a una regresión polinomial, como ya hemos visto.

Cargamos los datos en R o R Commander. Generamos una regresión polinomial de segundo grado a nuestros datos (que hemos llamado Dataset), tal y como vemos  a continuación:

LinearModel.1 <- lm(Y ~ X +I(X^2), data = Dataset)

El resultado lo vemos a continuación:

LinearModel.1 <- lm(Y ~ X +I(X^2), data=Dataset) 
summary(LinearModel.1)

Call:
lm(formula = Y ~ X + I(X^2), data = Dataset)

Residuals:
Min 1Q Median 3Q Max
-12.248 -2.820 1.266 2.332 6.308

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 96.8219608 0.9248629 104.688 <2e-16 ***
X 0.0985415 0.0415485 2.372 0.019 *
I(X^2) -0.0109347 0.0003954 -27.657 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 3.839 on 150 degrees of freedom
Multiple R-squared: 0.9854, Adjusted R-squared: 0.9852
F-statistic: 5075 on 2 and 150 DF, p-value: < 2.2e-16

ggplot2 es el paquete imprescindible para dibujar el intervalo de predicción

El paquete ggplot2 de R es básico para poder ejecutar la figura con el intervalo de confianza  o el intervalo de predicción de una regresión cualquiera. Para ello ejecutamos los siguientes dos comandos, con los que lo instalaremos y lo cargaremos:

install.packages("ggplot2", dependencies = TRUE)
library(ggplot2)

El paquete ggplot2 es uno de los mejores paquetes en R para realizar figuras profesionales. En esta entrada os explicaré el código necesario para obtener estas figuras con intervalos de predicción de una regresión en R.

Función ggplot() para representar intervalos de predicción de una regresión en R

Para representar el intervalo de predicción de una regresión, vamos a tener que copiar y pegar el siguiente código:

mpi = cbind(Dataset, predict(LinearModel.1, interval = "prediction"))

ggplot(mpi, aes(x = X)) +
   geom_ribbon(aes(ymin = lwr, ymax = upr), fill = "gray", alpha = 0.5) +
   geom_point(aes(y = Y)) +
   geom_line(aes(y = fit), colour = "blue", size = 1)

Vamos a estudiar el código anterior un poco más en profundidad para que sepáis qué significa cada línea:

  • mpi es el nombre que se ha dado a un objeto en el que vamos a introducir el nombre de nuestro conjunto de datos (Dataset), el nombre de nuestra regresión (LinearModel.1, podéis ver el nombre al principio de la entrada, al realizar el análisis de regresión), e indiciar qué intervalo se quiere representar ("prediction"). Le hemos llamado mpi, pero podíamos haber puesto cualquier otro nombre, como ya sabéis.
  • ggplot() marca el inicio de la función para representar gráficamente los datos, incluyendo en nuestro caso el intervalo de predicción. Como podemos ver, incluye el objeto mpi, así como la variable x, en la que tenemos que indicar el nombre de la columna de datos que representa los puntos en nuestro eje X. Como nuestro nombre es X (en mayúsculas), ese es el nombre que tenemos que poner. Esta función contiene varias partes:
    • geom_ribbon() representa el sombreado del intervalo de predicción, donde podemos cambiar el color, transparencia, etc.
    • geom_point() hace referencia al nombre de la columna que representa los valores del eje y.
    • geom_line() hace alusión a la línea de regresión como tal, pudiendo cambiar, su tipo, color, grosor, etc.

Intervalos de predicción en ecuaciones polinomiales

Para una regresión polinomial de segundo grado el resultado de ejecutar el código anterior se ve en la figura central que se muestra a continuación. Si obviamente nuestro modelo de regresión no es polinomial de segundo grado, sino lineal (izquierda) o polinomial de tercer grado (derecha), la figura varía. Como es lógico. Dominando esto veréis que es extraordinariamente sencillo generar intervalos de predicción de una regresión en R. Pero eso dejo, de momento, que lo investiguéis vosotros.

Intervalos de predicción para varios tipos de regresiones polinomiales en R

Si quisiéramos personalizar la regresión de segundo grado podemos modificar el código anterior con los parámetros que se muestran a continuación. Esto parámetros nos permiten cambiar el color de fondo del sombreado, el color y grosor de línea, y la transparencia del intervalo de predicción.

intervalos de predicción de una regresión en R

3 comentarios en «Intervalos de predicción de una regresión en R con ggplot2»

Deja un comentario