Ajuste de curva en R (con ejemplos)

Actualizado por ultima vez el 7 de mayo de 2021, por .

A menudo, es posible que desee encontrar la ecuación que mejor se adapte a alguna curva en R.

Ajuste de curva en R

El siguiente ejemplo paso a paso explica cómo ajustar curvas a datos en R usando la función poly () y cómo determinar qué curva se ajusta mejor a los datos.

Paso 1: crear y visualizar datos

Primero, creemos un conjunto de datos falso y luego creemos un diagrama de dispersión para visualizar los datos:

#create data frame
 df <- data. marco (x = 1:15,
                 y = c (3, 14, 23, 25, 23, 15, 9, 5, 9, 13, 17, 24, 32, 36, 46))

# crear una gráfica de dispersión de la gráfica x vs. y
 (df ​​$ x, df $ y, pch = 19 , xlab = ' x ', ylab = ' y ')

Paso 2: ajuste varias curvas

A continuación, ajustemos varios modelos de regresión polinomial a los datos y visualicemos la curva de cada modelo en la misma gráfica:

#fit modelos de regresión polinomial hasta el grado 5
 fit1 <- lm (y ~ x, data = df)
fit2 <- lm (y ~ poly (x, 2, raw = TRUE ), data = df)
fit3 <- lm (y ~ poly (x, 3, raw = TRUE ), data = df)
fit4 <- lm (y ~ poly (x, 4, raw = TRUE ), data = df)
fit5 <- lm (y ~ poly (x, 5, raw = TRUE ), data = df)

#crea una gráfica de dispersión de x vs. y
plot (df $ x, df $ y, pch = 19, xlab = ' x ', ylab = ' y ')

#define los valores del eje x
 eje_x <- seq (1, 15, longitud = 15 )

#add curva de cada modelo para trazar
 líneas (x_axis, predict (fit1, data. frame (x = x_axis)), col = ' green ')
lines (x_axis, predict (fit2, data. frame (x = x_axis)), col = ' red ')
lines (x_axis, predict (fit3, data. frame (x = x_axis)), col = ' purple ')
líneas (eje_x, predecir (ajuste4, marco de datos (x = eje_x)), col = ' azul ')
líneas (eje_x, predecir (ajuste5, marco de datos (x = eje_x)), col = ' naranja ')

Para determinar qué curva se ajusta mejor a los datos, podemos observar el R cuadrado ajustado de cada modelo.

Este valor nos dice el porcentaje de la variación en la variable de respuesta que se puede explicar por la (s) variable (s) predictoras en el modelo, ajustado por el número de variables predictoras.

#R-cuadrado ajustado calculado de cada resumen de modelo
 (ajuste1) $ adj. r . 
resumen al cuadrado (ajuste2) $ adj. r . 
resumen al cuadrado (fit3) $ adj. r . 
resumen al cuadrado (fit4) $ adj. r . 
resumen al cuadrado (fit5) $ adj. r . al cuadrado

[1] 0.3144819
[1] 0.5186706
[1] 0,7842864
[1] 0,9590276
[1] 0,9549709

De la salida podemos ver que el modelo con el R-cuadrado ajustado más alto es el polinomio de cuarto grado, que tiene un R-cuadrado ajustado de 0.959 .

Paso 3: Visualice la curva final

Por último, podemos crear un diagrama de dispersión con la curva del modelo polinomial de cuarto grado:

# crear una gráfica de dispersión de la gráfica x vs. y
 (df ​​$ x, df $ y, pch = 19, xlab = ' x ', ylab = ' y ')

#define los valores del eje x
 eje_x <- seq (1, 15, longitud = 15 )

#add curva de líneas de modelo polinomial de cuarto grado
 (x_axis, predict (fit4, data. frame (x = x_axis)), col = ' blue ')

Ajuste de curva en R

También podemos obtener la ecuación para esta línea usando la función summary () :

resumen (fit4)

Llamada:
lm (fórmula = y ~ poly (x, 4, raw = TRUE), data = df)

Derechos residuales de autor:
    Mín. 1T Mediana 3T Máx. 
-3,4490 -1,1732 0,6023 1,4899 3,0351 

Coeficientes:
                         Estimar Std. Valor t de error Pr (> | t |)    
(Intercepción) -26.51615 4.94555 -5.362 0.000318 ***
poli (x, 4, crudo = VERDADERO) 1 35.82311 3.98204 8.996 4.15e-06 ***
poli (x, 4, crudo = VERDADERO) 2 -8.36486 0.96791 -8.642 5.95e-06 ***
poli (x, 4, crudo = VERDADERO) 3 0.70812 0.08954 7.908 1.30e-05 ***
poli (x, 4, crudo = VERDADERO) 4 -0.01924 0.00278 -6.922 4.08e-05 ***
---
Signif. códigos: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0,1 pulg. 1

Error estándar residual: 2.424 en 10 grados de libertad
R cuadrado múltiple: 0,9707, R cuadrado ajustado: 0,959 
Estadístico F: 82,92 en 4 y 10 DF, valor p: 1,257e-07

La ecuación de la curva es la siguiente:

y = -0.0192x 4 + 0.7081x 3 – 8.3649x 2 + 35.823x – 26.516

Podemos usar esta ecuación para predecir el valor de la variable de respuesta en función de las variables predictoras del modelo. Por ejemplo, si x = 4, predeciríamos que y = 23,34 :

y = -0,0192 (4) 4 + 0,7081 (4) 3 – 8,3649 (4) 2 + 35,823 (4) – 26,516 = 23,34

Recursos adicionales

Introducción a la regresión polinomial Regresión
polinomial en R (paso a paso)

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

Deja un comentario

La multicolinealidad en el análisis de regresión ocurre cuando dos o más variables predictoras están altamente correlacionadas entre sí, de…
statologos comunidad-2

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

You have Successfully Subscribed!