Análisis de Regresión en R

Análisis de regresión en R
Información sobre la plantilla
Grafico3.png

Regresión en R. El análisis de regresión se formula como el problema de encontrar la función que relaciona la(s) variables de entrada y salida a partir de conjuntos de valores experimentales de esas variables. Por lo cual, es necesario tener resultados experimentales donde para cada conjunto de variables de entrada se haya medido el valor de las variables de salida objeto de análisis.

Análisis de regresión simple

La variable dependiente debe ser dicotómica. Las variables independientes pueden estar a nivel de intervalo o ser categóricas; si son categóricas, deben ser variables dummy o estar codificadas como indicadores (existe una opción en el procedimiento para recodificar automáticamente las variables categóricas). El análisis de regresión simple se usa para explicar la relación entre una variable continua Y, llamada variable respuesta o variable dependiente, y una variable continua X, llamada variable explicativas o independiente. El modelo estadístico lineal simple se puede escribir como: Y = a + b*X + e, a: intercepto, corte en el eje de las ordenadas. b: pendiente, tasa de cambio de la variable Y por unidad de la variable X. e: errores del modelo.

Modelo lineal en R

La función lm() descrita en el paquete stats nos permite ajustar el modelo especificado, lm() Xdevuelve el valor de la variable Y para X=0 (intersección) junto con la pendiente de la recta. Para ver la información del modelo se requiere la funciónsummary() implementada en el paquete base.

Ejemplo

Se toma como ejemplo una base de datos que contiene dos variables dosis y altura.

Dosis=c(0,0,0,0,0,10,10,10,10,10,20,20,20,20,20,30,30,30,30,30,40,40,40,40,40)

Altura=c(3.10,3.12,3.11,3.10,3.14,2.53,2.47,2.38,2.55,2.45,2.11,2.16,2.12,2.17,2.13,2.21,2.17,2.15,2.14,2.19,1.47,1.51,1.50,1.46,1.52)

midataset= data.frame(Dosis,Altura)

attach(midataset)

Cálculo del modelo de regresión lineal simple

modelo_lineal<- lm(Altura ~ dosis, midataset)

summary(modelo_lineal)

Call:

lm(formula = Altura ~ Dosis, data = midataset)

Residuals:

Min 1Q Median 3Q Max

-0.2532 -0.1184 -0.0688 0.1320 0.2864

Coefficients:

Estimate Std. Error t value Pr(>|t|)

(Intercept) 2.988000 0.059017 50.63 < 2e-16 ***

Dosis -0.035480 0.002409 -14.73 3.37e-13 ***

---

Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.1704 on 23 degrees of freedom

Multiple R-squared: 0.9041, Adjusted R-squared: 0.899

F-statistic: 216.8 on 1 and 23 DF, p-value: 3.365e-13


El modelo_lineal contiene el modelo lineal ajustado, en donde la altura de la planta será una función de la dosis aplicada. Se puede observar en primer lugar los coeficientes del modelo ajustado y su significación (Pr(>|t)) menor que 0.05 para ambos para metros, de manera que son significativamente distintos de 0. El valor de R² ajustado (Adjusted R-squared), es indicador de la bondad del ajuste del modelo a los datos. R² oscila entre 0 y 1 de manera que, valores de R² próximos a 1 indican un buen ajuste del modelo lineal a los datos, en este modelo el R2 corregido es 0.899, lo que significa que el modelo lineal se ajusta de forma aceptable a los datos, y además el 90% de la variabilidad de la altura de las plantas se puede explicar por las dosis aplicadas. La constante Intercept o punto de corte con el eje Y, es el valor que toma Y cuando X = 0, si este valor no es muy distinto de 0 entonces el Interceptsuele no ser significativo. En este caso, sí es significativo y toma un valor de 2.988000. Esto indicaría teóricamente que cuando la dosis aplicada es 0, la altura es -0.035480. La última línea de la salida incluye un estadístico y el p-valor correspondiente. Mediante este contraste se comprueba si, de forma global, el modelo lineal es apropiado para modelizar los datos. En este ejemplo, el p-valor es inferior a 0.05 por lo que se puede afirmar que, el modelo lineal es adecuado para el conjunto de datos. Para representar gráficamente la recta de regresión, podemos usar la función gráfica abline() implementada en el paquete graphics.

plot(Dosis, Altura,xlab= "Dosis",ylab= "Altura")

abline(lm.result, col="red")

Grafico1.png











Análisis de regresión lineal múltiple

El análisis de regresión lineal múltiple permite generar un modelo lineal en el que el valor de la variable dependiente o respuesta (Y) se determina a partir de un conjunto de variables independientes llamadas predictores (X1, X2, X3… Xk). Los modelos de regresión múltiple pueden emplearse para predecir el valor de la variable dependiente o para evaluar la influencia que tienen los predictores sobre ella. Los modelos lineales múltiples se pueden escribir como: y = (β0 + β1*X1+ β2*X2+…+ βk*Xk)+ ε,

  • y es la variable de interés a predecir, también llamada variable respuesta o variable dependiente.
  • x1, x2, …, xk son variables independientes, explicativas o de predicción.
  • β 0: el valor de la variable dependiente y cuando todos los predictores son cero.
  • β1, β2, …, βk es el efecto promedio que tiene el incremento en una unidad de la variable predictoraXk sobre la variable dependiente y, manteniéndose constantes el resto de variables.
  • ε es el residuo o error, la diferencia entre el valor observado y el estimado por el modelo.

Cada vez que se ajusta un modelo lineal se asume implícitamente ciertos supuestos sobre los datos:

Linealidad: la variable de respuesta se relaciona linealmente con los atributos.

Normalidad: los errores tienen distribución normal de media cero.

Homocedasticidad: los errores tienen varianza constante.

Independencia: los errores son independientes entre sí.

Código en R

La función lm() descrita en el paquete stats nos permite ajustar el análisis de regresión lineal múltiple.

Analizar la relación entre variables

De esta forma se evalúa qué variables se pueden transformar o eliminar por no ser significativas.

library(dplyr)

round(cor(x = midataset, method = "pearson"), 3)

Tratamiento Altura Área foliar
Tratamiento 1.000 -0.949 -0.978
Altura -0.949 1.000 0.935
Área foliar -0.978 0.935 1.000

library(psych)

multi.hist(x = midataset, dcol = c("blue", "red"), dlty = c("dotted", "solid"),main = "")

Generar el modelo. Cálculo del modelo de regresión lineal múltiple

reg_linM<-lm(formula = Tratamiento ~ NBrotes+Altura, data=midataset) summary(reg_linM)

Call:

lm(formula = Tratamiento ~ NBrotes + Altura, data = midataset)

Residuals:

Min 1Q Median 3Q Max

-3.053 -2.359 -0.511 1.424 4.764

Coefficients:

Estimate Std. Error t value Pr(>|t|)

(Intercept) 51.768 1.296 39.944 < 2e-16 ***

NBrotes -4.332 1.190 -3.640 0.000677 ***

Altura -18.680 1.976 -9.454 1.9e-12 ***

---

Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 2.693 on 47 degrees of freedom

Multiple R-squared: 0.9659, Adjusted R-squared: 0.9645

F-statistic: 666 on 2 and 47 DF, p-value: < 2.2e-16

El modelo con todas las variables introducidas como predictores es capaz de explicar el 96,59% de la varianza observada en el consumo de combustible (R2ajustado = 0.964). El p-value del modelo es significativo (2,2x10−16), por lo que podemos decir que el modelo es útil y que existe una relación entre los predictores y la variable respuesta. Se puede graficar en R el plano del modelo lineal de dos variables independientes y una dependiente de la siguiente manera:

library("scatterplot3d")

s3d <- scatterplot3d(midataset[,c("NBrotes","Altura","Tratamiento")],

type="h", highlight.3d=TRUE,

angle=55, scale.y=0.7, pch=16,

main="Tratamiento˜NBrotes+Altura")

s3d$plane3d(reg_linM, lty.box = "solid")

Grafico2.png










Fuente