El siguiente informe corresponde a una regresión para los
datos del peso de una muestra de árboles, en función de la altura, el
diámetro, entre otras. Se buscará estimar el peso de un árbol con un
diámetro de 5.5 en la finca 3, el peso de un árbol con diámetro de 3.5
en la finca 2 y finalmente se calculará el MAE del modelo
transformado.
data
## # A tibble: 90 × 5
## finca mg peso diametro altura
## <chr> <chr> <dbl> <dbl> <dbl>
## 1 FINCA_1 GENOTIPO_1 13.7 4.7 5
## 2 FINCA_1 GENOTIPO_1 14.6 5.3 5.6
## 3 FINCA_1 GENOTIPO_1 15.9 4.8 5.8
## 4 FINCA_1 GENOTIPO_1 8.99 3.2 4.3
## 5 FINCA_1 GENOTIPO_1 6.99 2.2 3.3
## 6 FINCA_1 GENOTIPO_2 19.3 6.3 7.9
## 7 FINCA_1 GENOTIPO_2 21.4 6.6 8.3
## 8 FINCA_1 GENOTIPO_2 13.8 5.3 7.3
## 9 FINCA_1 GENOTIPO_2 11.9 4.9 6.7
## 10 FINCA_1 GENOTIPO_2 16.6 5.9 7.1
## # ℹ 80 more rows
Variables
Debido a que se busca
evaluar la relacion entre el peso de un árbol respecto a su altura. Se
escoge el peso(y) como respuesta a la variable predictora diámetro(x).
Se espera que a mayor diámetro, mayor peso del árbol. Se puede observar
la relación en la siguiente gráfica.
A continuación se presenta la correlación entre ambas variables:
cor(x,y)
## [1] 0.908123
## (Intercept) x
## -9.020259 5.102578
El coeficiente B1 indica en este caso que por cada metro
adicional de diámetro se espera un incremento de 5.1 toneladas de peso.
summary(regresim)
##
## Call:
## lm(formula = y ~ x)
##
## Residuals:
## Min 1Q Median 3Q Max
## -6.3775 -2.6594 0.0237 1.8758 11.9876
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -9.0203 1.4129 -6.384 7.86e-09 ***
## x 5.1026 0.2508 20.346 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3.435 on 88 degrees of freedom
## Multiple R-squared: 0.8247, Adjusted R-squared: 0.8227
## F-statistic: 414 on 1 and 88 DF, p-value: < 2.2e-16
Basado en el R cuadrado, se puede decir que el modelo logra
explicar un 82.47% de la variabilidad del peso del árbol.
Además, basado en el valor P, se puede concluir que el diámetro sí es
una variable importante a la hora de conocer el peso de un árbol
### Modelo de regresión múltiple
y = data$peso
x1 = data$diametro
x2 = data$altura
plot(data[,3:5])
cor(data[,3:5])
## peso diametro altura
## peso 1.0000000 0.908123 0.8582009
## diametro 0.9081230 1.000000 0.9355360
## altura 0.8582009 0.935536 1.0000000
##
## Call:
## lm(formula = y ~ x1 + x2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -6.3083 -2.5121 0.1608 2.0088 11.7446
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -9.1205 1.4305 -6.376 8.44e-09 ***
## x1 4.7395 0.7128 6.649 2.49e-09 ***
## x2 0.3132 0.5751 0.544 0.587
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3.449 on 87 degrees of freedom
## Multiple R-squared: 0.8253, Adjusted R-squared: 0.8213
## F-statistic: 205.5 on 2 and 87 DF, p-value: < 2.2e-16
En este caso se presenta un problema de multicolinealidad debido a
que las variables predictoras de diámetro y altura se encuentran
altamente correlacionadas.
### Selección de Variables
regremul2 = step(regremul1)
## Start: AIC=225.79
## y ~ x1 + x2
##
## Df Sum of Sq RSS AIC
## - x2 1 3.53 1038.2 224.09
## <none> 1034.7 225.79
## - x1 1 525.74 1560.5 260.76
##
## Step: AIC=224.09
## y ~ x1
##
## Df Sum of Sq RSS AIC
## <none> 1038.2 224.09
## - x1 1 4884 5922.2 378.80
summary(regremul2)
##
## Call:
## lm(formula = y ~ x1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -6.3775 -2.6594 0.0237 1.8758 11.9876
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -9.0203 1.4129 -6.384 7.86e-09 ***
## x1 5.1026 0.2508 20.346 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3.435 on 88 degrees of freedom
## Multiple R-squared: 0.8247, Adjusted R-squared: 0.8227
## F-statistic: 414 on 1 and 88 DF, p-value: < 2.2e-16
Debido a que el diámetro explica el peso que puede tener un árbol por
sí solo, se descarta utilizar la altura como variable predictora.
### Transformación de Variables
plot(x1,y)
### Validación de supuestos
Varianza: La varianza es aleatoria y no
tiene ninguna tendencia en particular
Normalidad:
Los datos se ajustan relativamente bien a la línea de normalidad del
qqplot
Se concluye que se ha identificado que no
existe relación lineal entre el diámetro con el peso del árbol, lo cual
indica que se puede mejorar el ajuste con una transformación. Se propone
utilizar el logaritmo de Y por su comportamiento creciente.
summary(regremultrans)
##
## Call:
## lm(formula = log(y) ~ x1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.27395 -0.10180 -0.00328 0.10073 0.33742
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.32798 0.05977 22.22 <2e-16 ***
## x1 0.27818 0.01061 26.22 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.1453 on 88 degrees of freedom
## Multiple R-squared: 0.8865, Adjusted R-squared: 0.8852
## F-statistic: 687.6 on 1 and 88 DF, p-value: < 2.2e-16
Validamos supuestos nuevamente
Como se puede ver, el R cuadrado del modelo con la variable Y
transformada con logaritmo mejora a un 88.5%, además de que mejoran los
supuestos de linealidad y normalidad a nivel gráfico
###
Variables categóricas
regremultransmulti = lm(log(y)~x1+x3)
summary(regremultransmulti)
##
## Call:
## lm(formula = log(y) ~ x1 + x3)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.269702 -0.058652 0.000277 0.074438 0.233730
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.260860 0.045803 27.528 < 2e-16 ***
## x1 0.274018 0.009047 30.287 < 2e-16 ***
## x3FINCA_2 0.042002 0.031983 1.313 0.193
## x3FINCA_3 0.227430 0.028554 7.965 6.23e-12 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.1069 on 86 degrees of freedom
## Multiple R-squared: 0.94, Adjusted R-squared: 0.9379
## F-statistic: 449.1 on 3 and 86 DF, p-value: < 2.2e-16
La variable categórica finca mejora el ajuste del modelo a un 94%. Lo
que significa que es una variable muy relevante.
###
Predicción
pred = predict(regremultransmulti, list(x1=5.5, x3="FINCA_3"))
exp(pred)
## 1
## 19.99313
pred2 = predict(regremultransmulti, list(x1=3.5, x3="FINCA_2"))
exp(pred2)
## 1
## 9.601551
Con esto se concluye que un árbol de 5.5 metros de diámetro
en la finca 3 tendría un peso de 20 toneladas, mientras que uno de 3.5
metros de diámetro en la finca 2 tendría un peso de 9.6 toneladas.
Cálculo del MAE
datamae <- predict(regremultransmulti, list(x1=data$diametro, x3=data$finca))
mae(data$peso, datamae)
## [1] 15.92326
Se considera que el mae es exageradamente alto.