Ajuste de curvas en R

En este artículo, discutiremos cómo ajustar una curva a un marco de datos en el lenguaje de programación R.

El ajuste de curvas es una de las funciones básicas del análisis estadístico. Nos ayuda a determinar las tendencias y los datos y nos ayuda a predecir datos desconocidos en función de un modelo/función de regresión. 

Visualización de marco de datos:

Para ajustar una curva a algún marco de datos en el lenguaje R, primero visualizamos los datos con la ayuda de un gráfico de dispersión básico. En el lenguaje R, podemos crear un diagrama de dispersión básico usando la función plot().

Sintaxis:

plot( df$x, df$y)

dónde,

  • df: determina el marco de datos a utilizar.
  • x e y: determina las variables del eje.

Ejemplo:

R

# create sample data
sample_data <- data.frame(x=1:10,
                 y=c(25, 22, 13, 10, 5, 
                     9, 12, 16, 34, 44))
  
#create a basic scatterplot 
plot(sample_data$x, sample_data$y)

Producción:

Cree varias curvas para ajustarse a los datos

Luego, creamos modelos de regresión lineal en el grado requerido y los representamos en la parte superior del gráfico de dispersión para ver cuál se ajusta mejor a los datos. Usamos la función lm() para crear un modelo lineal. Y luego use la función lines() para trazar un diagrama de líneas sobre el diagrama de dispersión usando estos modelos lineales.

Sintaxis:

lm(  function, data)

dónde,

  • función: determina la función polinómica de ajuste.
  • datos: determina el marco de datos sobre el que se va a ajustar la función.

Ejemplo:

R

# create sample data
sample_data <- data.frame(x=1:10,
                 y=c(25, 22, 13, 10, 5, 
                     9, 12, 16, 34, 44))
  
# fit polynomial regression models up to degree 5
linear_model1 <- lm(y~x, data=sample_data)
linear_model2 <- lm(y~poly(x,2,raw=TRUE), data=sample_data)
linear_model3 <- lm(y~poly(x,3,raw=TRUE), data=sample_data)
linear_model4 <- lm(y~poly(x,4,raw=TRUE), data=sample_data)
linear_model5 <- lm(y~poly(x,5,raw=TRUE), data=sample_data)
  
# create a basic scatterplot 
plot(sample_data$x, sample_data$y)
  
# define x-axis values
x_axis <- seq(1, 10, length=10)
  
# add curve of each model to plot
lines(x_axis, predict(linear_model1, data.frame(x=x_axis)), col='green')
lines(x_axis, predict(linear_model2, data.frame(x=x_axis)), col='red')
lines(x_axis, predict(linear_model3, data.frame(x=x_axis)), col='purple')
lines(x_axis, predict(linear_model4, data.frame(x=x_axis)), col='blue')
lines(x_axis, predict(linear_model5, data.frame(x=x_axis)), col='orange')

Producción:

Curva de mejor ajuste con valor r cuadrado ajustado

Ahora, dado que no podemos determinar el modelo de mejor ajuste solo por su representación visual, tenemos una variable de resumen r.squared que nos ayuda a determinar el modelo de mejor ajuste. La r cuadrada ajustada es el porcentaje de la varianza de Y intacta después de restar el error del modelo. Cuanto mayor sea el valor de R Squared, mejor será el modelo para ese marco de datos. Para obtener el valor de r cuadrado ajustado del modelo lineal, usamos la función summary() que contiene el valor de r cuadrado ajustado como variable adj.r.squared.

Sintaxis:

summary( linear_model )$adj.r.squared

dónde,

  • linear_model: determina el modelo lineal cuyo resumen se va a extraer.

Ejemplo:

R

# create sample data
sample_data <- data.frame(x=1:10,
                 y=c(25, 22, 13, 10, 5, 
                     9, 12, 16, 34, 44))
  
# fit polynomial regression models up to degree 5
linear_model1 <- lm(y~x, data=sample_data)
linear_model2 <- lm(y~poly(x,2,raw=TRUE), data=sample_data)
linear_model3 <- lm(y~poly(x,3,raw=TRUE), data=sample_data)
linear_model4 <- lm(y~poly(x,4,raw=TRUE), data=sample_data)
linear_model5 <- lm(y~poly(x,5,raw=TRUE), data=sample_data)
  
# calculated adjusted R-squared of each model
summary(linear_model1)$adj.r.squared
summary(linear_model2)$adj.r.squared
summary(linear_model3)$adj.r.squared
summary(linear_model4)$adj.r.squared
summary(linear_model5)$adj.r.squared

Producción:

[1] 0.07066085
[2] 0.9406243
[3] 0.9527703
[4] 0.955868
[5] 0.9448878

Visualice la curva de mejor ajuste con el marco de datos:

Ahora, a partir del resumen anterior, sabemos que el modelo lineal de cuarto grado se ajusta mejor a la curva con un valor de r cuadrado ajustado de 0,955868. Entonces, visualizaremos el modelo lineal de cuarto grado con el diagrama de dispersión y esa es la mejor curva de ajuste para el marco de datos.

Ejemplo:

R

# create sample data
sample_data <- data.frame(x=1:10,
                          y=c(25, 22, 13, 10, 5,
                              9, 12, 16, 34, 44))
  
# Create best linear model
best_model <- lm(y~poly(x,4,raw=TRUE), data=sample_data)
  
# create a basic scatterplot 
plot(sample_data$x, sample_data$y)
  
# define x-axis values
x_axis <- seq(1, 10, length=10)
  
# plot best model
lines(x_axis, predict(best_model, data.frame(x=x_axis)), col='green')

Producción:

Publicación traducida automáticamente

Artículo escrito por mishrapriyank17 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 *