R: regresión lineal

El análisis de regresión es una herramienta estadística muy utilizada para establecer un modelo de relación entre dos variables. Una de estas variables se llama variable predictora cuyo valor se recopila mediante experimentos. La otra variable se llama variable de respuesta cuyo valor se deriva de la variable predictora.

En la regresión lineal, estas dos variables se relacionan mediante una ecuación, donde el exponente (potencia) de ambas variables es 1. Matemáticamente, una relación lineal representa una línea recta cuando se traza como un gráfico. Una relación no lineal donde el exponente de cualquier variable no es igual a 1 crea una curva.

La ecuación matemática general para una regresión lineal es:

y = ax + b

A continuación se muestra la descripción de los parámetros utilizados:

  • y es la variable de respuesta.

  • x es la variable predictora.

  • a y b son constantes que se llaman coeficientes.

Pasos para establecer una regresión

Un ejemplo simple de regresión es predecir el peso de una persona cuando se conoce su altura. Para hacer esto, necesitamos tener la relación entre la altura y el peso de una persona.

Los pasos para crear la relación son:

  • Realice el experimento de recolectar una muestra de valores observados de altura y peso correspondiente.

  • Cree un modelo de relación utilizando el lm() funciones en R.

  • Encuentre los coeficientes del modelo creado y cree la ecuación matemática usando estos

  • Obtenga un resumen del modelo de relación para conocer el error promedio en la predicción. También llamadoresiduals.

  • Para predecir el peso de nuevas personas, use el predict() función en R.

Los datos de entrada

A continuación se muestran los datos de muestra que representan las observaciones:

# Values of height
151, 174, 138, 186, 128, 136, 179, 163, 152, 131

# Values of weight.
63, 81, 56, 91, 47, 57, 76, 72, 62, 48

Función lm ()

Esta función crea el modelo de relación entre el predictor y la variable de respuesta.

Sintaxis

La sintaxis básica para lm() la función en regresión lineal es -

lm(formula,data)

A continuación se muestra la descripción de los parámetros utilizados:

  • formula es un símbolo que presenta la relación entre xey.

  • data es el vector sobre el que se aplicará la fórmula.

Cree un modelo de relación y obtenga los coeficientes

x <- c(151, 174, 138, 186, 128, 136, 179, 163, 152, 131)
y <- c(63, 81, 56, 91, 47, 57, 76, 72, 62, 48)

# Apply the lm() function.
relation <- lm(y~x)

print(relation)

Cuando ejecutamos el código anterior, produce el siguiente resultado:

Call:
lm(formula = y ~ x)

Coefficients:
(Intercept)            x  
   -38.4551          0.6746

Obtenga el resumen de la relación

x <- c(151, 174, 138, 186, 128, 136, 179, 163, 152, 131)
y <- c(63, 81, 56, 91, 47, 57, 76, 72, 62, 48)

# Apply the lm() function.
relation <- lm(y~x)

print(summary(relation))

Cuando ejecutamos el código anterior, produce el siguiente resultado:

Call:
lm(formula = y ~ x)

Residuals:
    Min      1Q     Median      3Q     Max 
-6.3002    -1.6629  0.0412    1.8944  3.9775 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) -38.45509    8.04901  -4.778  0.00139 ** 
x             0.67461    0.05191  12.997 1.16e-06 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 3.253 on 8 degrees of freedom
Multiple R-squared:  0.9548,    Adjusted R-squared:  0.9491 
F-statistic: 168.9 on 1 and 8 DF,  p-value: 1.164e-06

función predecir ()

Sintaxis

La sintaxis básica de predict () en regresión lineal es:

predict(object, newdata)

A continuación se muestra la descripción de los parámetros utilizados:

  • object es la fórmula que ya se creó con la función lm ().

  • newdata es el vector que contiene el nuevo valor de la variable predictora.

Predecir el peso de nuevas personas

# The predictor vector.
x <- c(151, 174, 138, 186, 128, 136, 179, 163, 152, 131)

# The resposne vector.
y <- c(63, 81, 56, 91, 47, 57, 76, 72, 62, 48)

# Apply the lm() function.
relation <- lm(y~x)

# Find weight of a person with height 170.
a <- data.frame(x = 170)
result <-  predict(relation,a)
print(result)

Cuando ejecutamos el código anterior, produce el siguiente resultado:

1 
76.22869

Visualice la regresión gráficamente

# Create the predictor and response variable.
x <- c(151, 174, 138, 186, 128, 136, 179, 163, 152, 131)
y <- c(63, 81, 56, 91, 47, 57, 76, 72, 62, 48)
relation <- lm(y~x)

# Give the chart file a name.
png(file = "linearregression.png")

# Plot the chart.
plot(y,x,col = "blue",main = "Height & Weight Regression",
abline(lm(x~y)),cex = 1.3,pch = 16,xlab = "Weight in Kg",ylab = "Height in cm")

# Save the file.
dev.off()

Cuando ejecutamos el código anterior, produce el siguiente resultado: