Taller Caso Biomasa de Regresión Lineal Simple

Planteamiento

Un grupo de investigadores requieren de la ayuda de un científico de datos para lograr su propósito utilizando la información contenida en la base de datos arboles suministrada.

Objetivo principal: Proponer un modelo de regresión lineal simple que permita predecir el peso del árbol en función de las co-variables que considere importantes y seleccionándolas de acuerdo con un proceso adecuado.

En principio se inicia cargado los datos necesarios para el desarrollo del proyecto:

devtools::install_github("dgonxalex80/paqueteMOD", force =TRUE)
library(paqueteMOD)
library(MASS)
library(summarytools)
library(patchwork)
library(ggplot2)
library(lmtest)
library(stargazer)
data(arboles)

Se realiza el llamado de los nombres de las columnas del conjunto de datos que se tiene para trabajar.

names(arboles)
## [1] "id"       "peso"     "diametro" "altura"

Una vez teniendo la información de las variables que se encuentran en la base de datos, se puede iniciar haciendo un análisis exploratorio a cada una de las variables que se espera utilizar para la construcción del modelo o los modelos. En principio se realiza un análisis de manera general entre las variables, para después entrar a revisar de manera individual cada una.

Descripción general de las variables

summarytools::descr(arboles[,2:4])
## Descriptive Statistics  
## arboles  
## N: 90  
## 
##                     altura   diametro     peso
## ----------------- -------- ---------- --------
##              Mean     6.63       5.45    18.77
##           Std.Dev     1.80       1.45     8.16
##               Min     3.30       2.20     5.98
##                Q1     5.20       4.50    13.61
##            Median     6.45       5.40    17.48
##                Q3     7.90       6.50    22.82
##               Max    11.30       8.80    47.87
##               MAD     1.93       1.48     6.35
##               IQR     2.65       1.97     9.16
##                CV     0.27       0.27     0.43
##          Skewness     0.38      -0.07     1.11
##       SE.Skewness     0.25       0.25     0.25
##          Kurtosis    -0.44      -0.36     1.55
##           N.Valid    90.00      90.00    90.00
##         Pct.Valid   100.00     100.00   100.00
p1 = ggplot(arboles,aes(x=altura))+geom_boxplot(fill = "lightblue")+xlab("Altura arboles")+theme_bw()
p2 = ggplot(arboles,aes(x=diametro))+geom_boxplot(fill = "olivedrab1")+xlab("Diámetro arboles")+theme_bw()
p3 = ggplot(arboles,aes(x=peso))+geom_boxplot(fill = "ivory")+xlab("Peso arboles")+theme_bw()
p4 = ggplot(arboles,aes(x=altura))+geom_density(col = "lightblue",lwd=0.62)+xlab("Altura arboles")+theme_bw()
p5 = ggplot(arboles,aes(x=diametro))+geom_density(col = "olivedrab1",lwd=0.62)+xlab("Diámetro arboles")+theme_bw()
p6 = ggplot(arboles,aes(x=peso))+geom_density(col = "lightgoldenrod",lwd=0.62)+xlab("Peso arboles")+theme_bw()

(p1+p2+p3)/(p4+p5+p6)

A continuación se realiza el desglose por cada una de las variables con su respectivo análisis:

Variable Altura de los Arboles

Se realiza un primer análisis exploratorio, enfocado en los datos de ALTURA.

shapiro.test(arboles$altura)
## 
##  Shapiro-Wilk normality test
## 
## data:  arboles$altura
## W = 0.97909, p-value = 0.156
hist(arboles$altura,col = "lightblue",labels = T,xlim = c(2,12), xlab = "Altura de los arboles en metros",main = "Altura de los arboles",ylim = c(0,25))

Análisis. En términos de la altura de los arboles se evidencia que los especímenes cuentan con altura media de 6.63 metros(m), la altura del árbol mas pequeño es de 3.30 m y el mas alto es de 11.30 m, la altura que más se repite en el conjunto de muestras tomadas es de 6.45 m. A partir del test de normalidad y con el valor p mayor al 15% la hipótesis nula de que los datos tienen un compartimiento normal NO se rechaza, esto anterior se corrobora mediante un histograma que muestra una distribución en forma de campana en donde se evidencia que la mayor cantidad de arboles tienen una altura entre 5 a 6 metros con un total de 20 unidades y entre los 7 y 8 metros con una cantidad de 19 unidades.

Variable Diámetro de los Arboles

Se realiza un segundo análisis enfocado en los datos de DIAMETRO de los especímenes:

shapiro.test(arboles$diametro)
## 
##  Shapiro-Wilk normality test
## 
## data:  arboles$diametro
## W = 0.99109, p-value = 0.8079
hist(arboles$diametro,col = "olivedrab1",labels = T,xlim = c(2,10), xlab = "Diámetro de los arboles en metros",main = "Diámetro de los arboles",ylim = c(0,25))

Análisis. En términos de diámetro de los arboles se evidencia que los especímenes cuentan con un diámetro medio de 5.45 metros(m), el diámetro del árbol mas angosto es de 2.20 m y el mas ancho es de 8.80 m, el diámetro que más se repite en el conjunto de muestras tomadas es de 5.40 m. A partir del test de normalidad y con el valor p mayor al 80% la hipótesis nula de que los datos tienen un compartimiento normal NO se rechaza, esto anterior se corrobora mediante un histograma que muestra una distribución casi perfecta en forma de campana en donde se evidencia que la mayor cantidad de arboles tienen una diámetro entre 5 a 6 metros con un total de 24 unidades.

Variable Peso de los Arboles

Se realiza un ultimo análisis enfocado en la variable de respuesta de PESO en los especímenes:

shapiro.test(arboles$peso)
## 
##  Shapiro-Wilk normality test
## 
## data:  arboles$peso
## W = 0.92778, p-value = 9.028e-05
hist(arboles$peso,col = "ivory",labels = T,xlim = c(0,55), xlab = "Peso de los arboles",main = "Biomasa de los arboles",ylim = c(0,25))

Análisis. En términos de peso de los arboles se evidencia que los especímenes cuentan con un peso medio de 18.77, el peso del árbol mas grande es de 47.87 y el mas pequeño es de 5.98, el peso que más se repite en el conjunto de muestras tomadas es de 17.48. A partir del test de normalidad y con el valor p menor al 5% la hipótesis nula de que los datos tienen un compartimiento normal se rechaza, esto anterior se corrobora mediante un histograma que muestra una distribución sesgada de los datos hacia la derecha, en donde se evidencia que la mayor cantidad de arboles tienen una peso entre 10 a 15 con un total de 24 unidades.

Modelo de correlación de la variable altura vs biomasa (peso)

Interferencia sobre la correlación y diagrama de dispersión

Para crear el modelo previamente se evalúa el grado de correlación entre las variables, también con la ayuda de un gráfico de dispersión se espera visualizar la relación que existe.

cor.test(arboles$peso, arboles$altura)
## 
##  Pearson's product-moment correlation
## 
## data:  arboles$peso and arboles$altura
## t = 15.684, df = 88, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.7918402 0.9045332
## sample estimates:
##       cor 
## 0.8582009
ggplot(arboles,aes(x=altura,y=peso))+geom_point()+theme_bw()+geom_smooth(col="lightgreen",fill = "lightblue")+ylab("Biomasa de los arboles")+xlab("Altura de los arboles (m)")+ggtitle("Gráfico de dispersión biomasa vs altura")
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'

Análisis. La correlación que existe entre las variables de peso (biomasa) y altura de los arboles muestra un valor alto de aproximadamente un 86% , lo cual quiere decir que existe una relación lineal positiva fuerte que indica que, a mayor altura, mayor es la biomasa del espécimen. Esto se corrobora con los procesos gráficos de dispersión que muestran que los arboles que se encuentran por debajo de los 5 metros son los que tienen un valor menor en la medida de peso por debajo de los 18. Los arboles con mayor altura son las que superan las 40 unidades de peso. Cabe resaltar que como se esperaba, el árbol mas alto de 11.30 metros es el que mayor peso (biomasa) tiene, con un total de 47.87 unidades.

Estimación del modelo por MCO

A continuación se presenta la estimación del modelo utilizando el método de mínimos cuadrados ordinarios (MCO) en donde la la variable Y de respuesta sera la biomasa (peso) y la variable X predictora sera la altura del árbol.

modelo1 = lm(arboles$peso~arboles$altura)
summary(modelo1)
## 
## Call:
## lm(formula = arboles$peso ~ arboles$altura)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -8.228 -1.969  0.572  2.377 15.106 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     -7.0456     1.7046  -4.133 8.14e-05 ***
## arboles$altura   3.8906     0.2481  15.684  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4.211 on 88 degrees of freedom
## Multiple R-squared:  0.7365, Adjusted R-squared:  0.7335 
## F-statistic:   246 on 1 and 88 DF,  p-value: < 2.2e-16

Análisis. Con el coeficiente de correlación revisado y mediante el modelo de linealidad el caso 1 MODELO 1, se generan los valores de β1 y β0 que permiten explicar en un 73% la relación de las variables y rechaza con contundencia que los valores de β0 y β1 sean iguales a 0 mediante el código de significancia que arroja el modelo de “***“. El modelo 1 da como resultado un valor de intercepto β0 de -7.04 y una pendiente de la línea de regresión β1 de 3.89, lo que quiere decir que por cada metro en que aumenta el árbol, el peso del mismo también incrementa en 3.9 unidades aproximadamente.

Validación de los supuestos sobre los errores

Inicialmente se realiza la validación de manera gráfica, como se muestra a continuación:

par(mfrow=c(2,2))
plot(modelo1)

Luego se valida mediante el manejo de las diferentes pruebas de hipótesis.

Supuesto de normalidad de los errores

e = modelo1$residuals
shapiro.test(e)
## 
##  Shapiro-Wilk normality test
## 
## data:  e
## W = 0.95439, p-value = 0.003157

Supuesto de varianza de los errores

gqtest(modelo1)
## 
##  Goldfeld-Quandt test
## 
## data:  modelo1
## GQ = 1.1017, df1 = 43, df2 = 43, p-value = 0.3761
## alternative hypothesis: variance increases from segment 1 to 2

Supuesto de linealidad del modelo

ggplot(arboles, aes(altura, peso)) + geom_point() + geom_smooth(method = "lm",  level = 0.95, formula = y ~ x)

Análisis. Como se puede evidenciar por los resultados obtenidos, el supuesto de varianza de los errores y el supuesto de linealidad del modelo cumplen tanto en la gráfica inicial, como en los test de prueba realizados, en donde el valor supera el 5% aceptando la hipótesis de varianza. No se evalúa el supuesto de independencia en los errores, ya que los datos que se toman para el desarrollo del modelo son corte transversal capturados en un mismo instante de tiempo.

Transformaciones del modelo

Con la obtención de los valores anteriores como supuestos, también se realiza la tarea de replantear el modelo generado, de tal manera que permita evaluar la viabilidad de ajuste en términos de explicación que pueda tener otras transformaciones, como se muestra a continuación:

Modelo log-lin

modelo2 = lm(log(peso)~altura,arboles)
summary(modelo2)
## 
## Call:
## lm(formula = log(peso) ~ altura, data = arboles)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.52590 -0.15119  0.04092  0.15943  0.39065 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  1.49061    0.09055   16.46   <2e-16 ***
## altura       0.20382    0.01318   15.47   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2237 on 88 degrees of freedom
## Multiple R-squared:  0.7311, Adjusted R-squared:  0.728 
## F-statistic: 239.2 on 1 and 88 DF,  p-value: < 2.2e-16

Modelo lin-log

modelo3 = lm(peso~log(altura),arboles)
summary(modelo3)
## 
## Call:
## lm(formula = peso ~ log(altura), data = arboles)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -8.9762 -2.1369  0.4216  2.6786 16.7411 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  -26.417      3.311  -7.978 5.14e-12 ***
## log(altura)   24.355      1.765  13.795  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4.613 on 88 degrees of freedom
## Multiple R-squared:  0.6838, Adjusted R-squared:  0.6802 
## F-statistic: 190.3 on 1 and 88 DF,  p-value: < 2.2e-16

Modelo log-log

modelo4 = lm(log(peso)~log(altura),arboles)
summary(modelo4)
## 
## Call:
## lm(formula = log(peso) ~ log(altura), data = arboles)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.53185 -0.12560  0.04837  0.13444  0.43093 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  0.37010    0.15766   2.348   0.0211 *  
## log(altura)  1.33290    0.08406  15.856   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2196 on 88 degrees of freedom
## Multiple R-squared:  0.7407, Adjusted R-squared:  0.7378 
## F-statistic: 251.4 on 1 and 88 DF,  p-value: < 2.2e-16

Comparación de modelos

stargazer(modelo1, modelo2, modelo3, modelo4, type="text", df=FALSE, title = "Comparación de modelos")
## 
## Comparación de modelos
## ===============================================================
##                                 Dependent variable:            
##                     -------------------------------------------
##                        peso    log(peso)     peso    log(peso) 
##                        (1)        (2)        (3)        (4)    
## ---------------------------------------------------------------
## altura               3.891***                                  
##                      (0.248)                                   
##                                                                
## altura                          0.204***                       
##                                 (0.013)                        
##                                                                
## log(altura)                               24.355***   1.333*** 
##                                            (1.765)    (0.084)  
##                                                                
## Constant            -7.046***   1.491***  -26.417***  0.370**  
##                      (1.705)    (0.091)    (3.311)    (0.158)  
##                                                                
## ---------------------------------------------------------------
## Observations            90         90         90         90    
## R2                    0.737      0.731      0.684      0.741   
## Adjusted R2           0.734      0.728      0.680      0.738   
## Residual Std. Error   4.211      0.224      4.613      0.220   
## F Statistic         245.977*** 239.249*** 190.309*** 251.424***
## ===============================================================
## Note:                               *p<0.1; **p<0.05; ***p<0.01

Análisis. Se evidencia que el MODELO 4 levemente presenta un mejor comportamiento en comparación al MODELO 1, por lo anterior se revisan los supuestos y se evalúa la linealidad del modelo:

par(mfrow=c(2,2))
plot(modelo4)

par(mfrow = c(1,2))
boxcox(lm(peso ~ altura, arboles), lambda = -2:2)
#Se repite el proceso pero esta vez estrechando el rango de valores de lambda 
bc<-boxcox(lm(peso ~ altura, arboles), lambda = 0:2)

(lambda <- bc$x[which.max(bc$y)])
## [1] 0.2828283

Análisis. Como se observa en la evaluación gráfica de los supuestos del MODELO 4, este se ajusta mejor obteniendo valores de β1 y β0 que permiten explicar en un 74% la relación de las variables y a su vez rechaza con contundencia que los valores de β0 y β1 sean iguales a 0 mediante el código de significancia que arroja el modelo de “***“. El modelo 4 da como resultado un valor de intercepto β0 de 0.37 y una pendiente de la línea de regresión β1 de 1.33, lo que quiere decir que por cada metro en que aumenta el árbol, el peso del mismo también incrementa en 1.3 unidades aproximadamente.

La linealidad del modelo mediante la función boxcox() también corrobora con el valor lamda \(=0.28\) que la variable de dependencia se debe ajustar con una transformacional Y = log(y), tal como en el MODELO 4.

Modelo de correlación de la variable diámetro vs biomasa (peso)

Interferencia sobre la correlación y diagrama de dispersión

Para crear el modelo previamente se evalúa el grado de correlación entre las variables, también con la ayuda de un gráfico de dispersión se espera visualizar la relación que existe.

cor.test(arboles$peso, arboles$diametro)
## 
##  Pearson's product-moment correlation
## 
## data:  arboles$peso and arboles$diametro
## t = 20.346, df = 88, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.8634081 0.9386817
## sample estimates:
##      cor 
## 0.908123
ggplot(arboles,aes(x=diametro,y=peso))+geom_point()+theme_bw()+geom_smooth(col="lightgreen",fill = "lightblue")+ylab("Biomasa de los arboles")+xlab("Diámetro de los arboles (m)")+ggtitle("Gráfico de dispersión biomasa vs diámetro")
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'

Análisis. La correlación que existe entre las variables de peso (biomasa) y diámetro de los arboles muestra un valor alto de aproximadamente un 90% , lo cual quiere decir que existe una relación lineal positiva fuerte que indica que, a mayor diámetro, mayor es la biomasa del espécimen. Esto se corrobora con los procesos gráficos de dispersión que muestran que los arboles que se encuentran por debajo de los 4 metros son los que tienen un valor menor en la medida de peso por debajo de las 15 unidades. Los arboles con mayor diámetro son los que superan las 40 unidades de peso. Cabe resaltar que como se esperaba, el árbol mas ancho de 8.80 metros es el que mayor peso (biomasa) tiene, con un total de 47.87 unidades.

Estimación del modelo por MCO

A continuación se presenta la estimación del modelo utilizando el método de mínimos cuadrados ordinarios (MCO) en donde la la variable Y de respuesta sera la biomasa (peso) y la variable X predictora sera el diámetro del árbol.

modelo5 = lm(arboles$peso~arboles$diametro)
summary(modelo5)
## 
## Call:
## lm(formula = arboles$peso ~ arboles$diametro)
## 
## 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 ***
## arboles$diametro   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

Análisis. Con el coeficiente de correlación revisado y mediante el modelo de linealidad el caso 5 MODELO 5, se generan los valores de β1 y β0 que permiten explicar en un 82% la relación de las variables y rechaza con contundencia que los valores de β0 y β1 sean iguales a 0 mediante el código de significancia que arroja el modelo de “***“. El modelo 5 da como resultado un valor de intercepto β0 de -9.02 y una pendiente de la línea de regresión β1 de 5.10, lo que quiere decir que por cada metro de diámetro en que aumenta el árbol, el peso del mismo también incrementa en 5.1 unidades aproximadamente.

Validación de los supuestos sobre los errores

Inicialmente se realiza la validación de manera gráfica, como se muestra a continuación:

par(mfrow=c(2,2))
plot(modelo5)

Luego se valida mediante el manejo de las diferentes pruebas de hipótesis.

Supuesto de normalidad de los errores

e = modelo5$residuals
shapiro.test(e)
## 
##  Shapiro-Wilk normality test
## 
## data:  e
## W = 0.95356, p-value = 0.002793

Supuesto de varianza de los errores

gqtest(modelo5)
## 
##  Goldfeld-Quandt test
## 
## data:  modelo5
## GQ = 2.0131, df1 = 43, df2 = 43, p-value = 0.01196
## alternative hypothesis: variance increases from segment 1 to 2

Supuesto de linealidad del modelo

ggplot(arboles, aes(diametro, peso)) + geom_point() + geom_smooth(method = "lm",  level = 0.95, formula = y ~ x)

Análisis. Se puede evidenciar por los resultados obtenidos, que el modelo 5 no cumple con los supuestos de normalidad y el supuesto de varianza de los errores, como lo muestra los test de prueba realizados, el valor p de cada uno esta por debajo del 5% (0.05) rechazando la hipótesis de distribución normal de los errores (0.002) y de varianza contaste (0.011). No se evalúa el supuesto de independencia en los errores, ya que los datos que se toman para el desarrollo del modelo son de corte transversal capturados en un mismo instante de tiempo.

Transformaciones del modelo

Con la obtención de los valores anteriores como supuestos, es necesario realizar la tarea de replantear el modelo generado, de tal manera que permita evaluar la viabilidad de ajuste en términos de explicación que pueda tener otras transformaciones, como se muestra a continuación:

Modelo log-lin

modelo6 = lm(log(peso)~diametro,arboles)
summary(modelo6)
## 
## Call:
## lm(formula = log(peso) ~ diametro, data = arboles)
## 
## 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 ***
## diametro     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

Modelo lin-log

modelo7 = lm(peso~log(diametro),arboles)
summary(modelo7)
## 
## Call:
## lm(formula = peso ~ log(diametro), data = arboles)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -5.6316 -3.3655 -0.6562  2.2549 16.9576 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    -19.909      2.629  -7.573 3.43e-11 ***
## log(diametro)   23.369      1.564  14.941  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4.362 on 88 degrees of freedom
## Multiple R-squared:  0.7172, Adjusted R-squared:  0.714 
## F-statistic: 223.2 on 1 and 88 DF,  p-value: < 2.2e-16

Modelo log-log

modelo8 = lm(log(peso)~log(diametro),arboles)
summary(modelo8)
## 
## Call:
## lm(formula = log(peso) ~ log(diametro), data = arboles)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -0.3150 -0.1115 -0.0170  0.1064  0.3327 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    0.61846    0.09793   6.315 1.07e-08 ***
## log(diametro)  1.34405    0.05826  23.070  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.1625 on 88 degrees of freedom
## Multiple R-squared:  0.8581, Adjusted R-squared:  0.8565 
## F-statistic: 532.2 on 1 and 88 DF,  p-value: < 2.2e-16

Comparación de modelos

stargazer(modelo5, modelo6, modelo7, modelo8, type="text", df=FALSE, title = "Comparación de modelos")
## 
## Comparación de modelos
## ===============================================================
##                                 Dependent variable:            
##                     -------------------------------------------
##                        peso    log(peso)     peso    log(peso) 
##                        (1)        (2)        (3)        (4)    
## ---------------------------------------------------------------
## diametro             5.103***                                  
##                      (0.251)                                   
##                                                                
## diametro                        0.278***                       
##                                 (0.011)                        
##                                                                
## log(diametro)                             23.369***   1.344*** 
##                                            (1.564)    (0.058)  
##                                                                
## Constant            -9.020***   1.328***  -19.909***  0.618*** 
##                      (1.413)    (0.060)    (2.629)    (0.098)  
##                                                                
## ---------------------------------------------------------------
## Observations            90         90         90         90    
## R2                    0.825      0.887      0.717      0.858   
## Adjusted R2           0.823      0.885      0.714      0.857   
## Residual Std. Error   3.435      0.145      4.362      0.162   
## F Statistic         413.961*** 687.562*** 223.224*** 532.232***
## ===============================================================
## Note:                               *p<0.1; **p<0.05; ***p<0.01

Análisis. Se evidencia que el MODELO 6 levemente presenta un mejor comportamiento en comparación al MODELO 5, por lo anterior se revisan los supuestos y se evalúa la linealidad del modelo:

par(mfrow=c(2,2))
plot(modelo6)

par(mfrow = c(1,2))
boxcox(lm(peso ~ diametro, arboles), lambda = -2:2)
#Se repite el proceso pero esta vez estrechando el rango de valores de lambda 
bc<-boxcox(lm(peso ~ diametro, arboles), lambda = 0:2)

(lambda <- bc$x[which.max(bc$y)])
## [1] 0

Luego se valida mediante el manejo de las diferentes pruebas de hipótesis.

Supuesto de normalidad de los errores

e = modelo6$residuals
shapiro.test(e)
## 
##  Shapiro-Wilk normality test
## 
## data:  e
## W = 0.98394, p-value = 0.3338

Supuesto de varianza de los errores

gqtest(modelo6)
## 
##  Goldfeld-Quandt test
## 
## data:  modelo6
## GQ = 1.1538, df1 = 43, df2 = 43, p-value = 0.3206
## alternative hypothesis: variance increases from segment 1 to 2

Análisis. Como se observa en la evaluación gráfica de los supuestos del MODELO 6 y en los test realizados, este se ajusta mejor obteniendo valores de β1 y β0 que permiten explicar en un 88% la relación de las variables y a su vez rechaza con contundencia que los valores de β0 y β1 sean iguales a 0 mediante el código de significancia que arroja el modelo de “***“. El modelo 6 da como resultado un valor de intercepto β0 de 1.33 y una pendiente de la línea de regresión β1 de 0.28, lo que quiere decir que por cada metro en que aumenta el árbol, el peso del mismo también incrementa en 0.28 unidades aproximadamente.

La linealidad del modelo mediante la función boxcox() también corrobora con el valor lamda \(=0\) que la variable de dependencia se debe ajustar con una transformación de Y = log(y), tal como en el MODELO 6.