Regresión polinomial en programación R

La regresión polinomial es una forma de regresión lineal en la que la relación entre la variable independiente x y la variable dependiente y se modela como un polinomio de grado n. La regresión polinomial ajusta una relación no lineal entre el valor de x y la media condicional correspondiente de y, indicada como E(y|x). Básicamente agrega los términos cuadráticos o polinómicos a la regresión. Generalmente, este tipo de regresión se usa para una variable resultante y un predictor.

Necesidad de regresión polinomial

  • A diferencia del conjunto de datos lineales, si uno intenta aplicar un modelo lineal en un conjunto de datos no lineales sin ninguna modificación, habrá un resultado muy insatisfactorio y drástico.
  • Esto puede provocar un aumento de la función de pérdida, una disminución de la precisión y una alta tasa de error.
  • A diferencia del modelo lineal, el modelo polinomial cubre más puntos de datos.

Aplicaciones de la regresión polinomial 

Generalmente, la regresión polinomial se utiliza en los siguientes escenarios:

  • Tasa de crecimiento de los tejidos.
  • Progresión de las epidemias relacionadas con la enfermedad.
  • Fenómeno de distribución de los isótopos de carbono en sedimentos lacustres.

Explicación de la regresión polinomial en la programación R

La regresión polinomial también se conoce como regresión lineal polinomial, ya que depende de los coeficientes dispuestos linealmente en lugar de las variables. En R , si uno quiere implementar la regresión polinomial, debe instalar los siguientes paquetes:

  • paquete tidyverse para una mejor visualización y manipulación.
  • Paquete de intercalación para un flujo de trabajo de aprendizaje automático más fluido y sencillo.

Después de la instalación adecuada de los paquetes, es necesario configurar los datos correctamente. Para eso, primero se necesita dividir los datos en dos conjuntos (conjunto de entrenamiento y conjunto de prueba). Entonces uno puede visualizar los datos en varias parcelas. En R, para ajustar una regresión polinomial, primero se deben generar números pseudoaleatorios usando la función set.seed(n)

La regresión polinómica agrega términos polinómicos o cuadráticos a la ecuación de regresión de la siguiente manera:

medv = b0 + b1 * lstat + b2 * lstat 2

dónde

mdev: es el valor medio de la casa

lstat: es la variable predictora

En R, para crear un predictor x 2 se debe usar la función I() , de la siguiente manera: I(x 2 ) . Esto eleva x a la potencia 2. La regresión polinomial se puede calcular en R de la siguiente manera:

lm(medv ~ lstat + I(lstat^2), data = train.data)

Para el siguiente ejemplo, tomemos el conjunto de datos de Boston del paquete MASS. 
 

Ejemplo:

r

# R program to illustrate
# Polynomial regression
 
# Importing required library
library(tidyverse)
library(caret)
theme_set(theme_classic())
 
# Load the data
data("Boston", package = "MASS")
# Split the data into training and test set
set.seed(123)
training.samples <- Boston$medv %>%
  createDataPartition(p = 0.8, list = FALSE)
train.data  <- Boston[training.samples, ]
test.data <- Boston[-training.samples, ]
 
# Build the model
model <- lm(medv ~ poly(lstat, 5, raw = TRUE),
            data = train.data)
# Make predictions
predictions <- model %>% predict(test.data)
# Model performance
modelPerfomance = data.frame(
                    RMSE = RMSE(predictions, test.data$medv),
                     R2 = R2(predictions, test.data$medv)
                 )
 
print(lm(medv ~ lstat + I(lstat^2), data = train.data))
print(modelPerfomance)

Producción:

Call:
lm(formula = medv ~ lstat + I(lstat^2), data = train.data)

Coefficients:
(Intercept)        lstat     I(lstat^2)  
    42.5736       -2.2673       0.0412  

      RMSE        R2
1   5.270374 0.6829474

Trazado gráfico de regresión polinomial

En R, si uno quiere trazar un gráfico para la salida generada al implementar la regresión polinomial, puede usar la función ggplot() .

Ejemplo:

r

# R program to illustrate
# Graph plotting in
# Polynomial regression
 
# Importing required library
library(tidyverse)
library(caret)
theme_set(theme_classic())
 
# Load the data
data("Boston", package = "MASS")
# Split the data into training and test set
set.seed(123)
training.samples <- Boston$medv %>%
  createDataPartition(p = 0.8, list = FALSE)
train.data  <- Boston[training.samples, ]
test.data <- Boston[-training.samples, ]
 
# Build the model
model <- lm(medv ~ poly(lstat, 5, raw = TRUE), data = train.data)
# Make predictions
predictions <- model %>% predict(test.data)
# Model performance
data.frame(RMSE = RMSE(predictions, test.data$medv),
           R2 = R2(predictions, test.data$medv))
   
ggplot(train.data, aes(lstat, medv) ) + geom_point() +
stat_smooth(method = lm, formula = y ~ poly(x, 5, raw = TRUE))

Producción:

graph-output

Publicación traducida automáticamente

Artículo escrito por shaonim8 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *