Análisis de Regresión en R
| ||
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 linea 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")