Emerson Trujillo Sierra

Pregunta 4

4. Con base en los datos de arboles proponga un modelo de regresión lineal múltiple que permita predecir el peso del árbol en función de las covariables que considere importantes y seleccionándolas de acuerdo con un proceso adecuado. Tenga en cuenta realizar una evaluación de la significancia de los parámetros, interpretación y proponga un método de evaluación por medio de validación cruzada. Presente métricas apropiadas como el RMSE y MAE.

library(readxl)
library(ggplot2)
datos_arboles<- read_excel("C:/Users/portatil/DatosR/Metodos2/data arboles.xlsx", col_types = c("text", "text", "numeric", "numeric", "numeric"))
attach(datos_arboles)
head(datos_arboles,n = c(6,7))
## # A tibble: 6 × 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

Modelo de Regresión Lineal Múltiple

modelo_Multi_arboles = lm(peso ~ diametro + altura, data = datos_arboles)
summary(modelo_Multi_arboles)
## 
## Call:
## lm(formula = peso ~ diametro + altura, data = datos_arboles)
## 
## 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 ***
## diametro      4.7395     0.7128   6.649 2.49e-09 ***
## altura        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

La ecuación de regresión corresponde a: Peso = -9.1205 + 4.7395(diametro) + 0.3132(altura)

R cuadrado es igual a 0.8213 significa que la variables: diametro y altura explican el 82% el peso del árbol.

Hipótesis para ßo: Ho:βo=0,Ha:β0≠0 p−value=8.44e-09∗∗∗ Ya que p-value < 0.05, se rechaza Ho: ß0 = 0

Hipótesis para ß1: Ho:β1=0,Ha:β1≠0 p−value=2.49e-09∗∗∗ Ya que p-value < 0.05, se rechaza Ho: ß1 = 0

Hipótesis para ß2: Ho:β2=0,Ha:β2≠0 p−value=0.587∗∗∗ ya que p-value > 0.05, no se rechaza Ho: ß2 = 0

Validación cruzada:

Se utiliza una muestra del 80% de los datos para el modelo y el 20% para realizar las validaciones:

# Conjunto de 100 datos (80% para modelar y 20% para validar):

id_modelar= sample(1:90, size=72)
id_modelar
##  [1] 29 20 39 18 43 70 13 62 60  6  5 11 67 41 61 35 64 31 78 76 68 77 42 12 15
## [26] 59  4 32 52 79 40 65 10 17 90 24 57 83 22 23 34 38 74 26 86 27 75  1 72 33
## [51] 87  3 37 16 51 89 53 82  2  8 30 69 28 85 54 73 55 71 14 81 46 48
# conjunto de datos con 72 datos para modelar:
arboles_modelar= datos_arboles[id_modelar,]
head(arboles_modelar)
## # A tibble: 6 × 5
##   finca   mg          peso diametro altura
##   <chr>   <chr>      <dbl>    <dbl>  <dbl>
## 1 FINCA_1 GENOTIPO_2  14.4      5.5    7.4
## 2 FINCA_1 GENOTIPO_2  10.7      4.6    6.5
## 3 FINCA_2 GENOTIPO_1  20.8      6.2    6.8
## 4 FINCA_1 GENOTIPO_2  18.7      6.3    8.1
## 5 FINCA_2 GENOTIPO_2  32.4      7.9    9.4
## 6 FINCA_3 GENOTIPO_2  17.3      5.2    6.5
# Conjunto de datos con 18 datos para validar:
arboles_validar= datos_arboles[-id_modelar,]
head(arboles_validar)
## # A tibble: 6 × 5
##   finca   mg          peso diametro altura
##   <chr>   <chr>      <dbl>    <dbl>  <dbl>
## 1 FINCA_1 GENOTIPO_2 21.4       6.6    8.3
## 2 FINCA_1 GENOTIPO_2 11.9       4.9    6.7
## 3 FINCA_1 GENOTIPO_2 12         4.9    7  
## 4 FINCA_1 GENOTIPO_1 14.1       4.2    5.2
## 5 FINCA_1 GENOTIPO_1  9.93      3.5    4.3
## 6 FINCA_2 GENOTIPO_1  9.97      3.7    4.4
# Estimar el Modelo de conjuto de datos de arboles_modelar
modelo_arboles = lm(formula= peso ~ diametro + altura, data = arboles_modelar)

# Predeccir el conjunto de datos de arboles_validar
predecir_peso = predict(modelo_arboles, list(diametro=arboles_validar$diametro, altura=arboles_validar$altura))

# comparar pesos del modelo  y reales
peso_real = arboles_validar$peso

error = peso_real-predecir_peso

Tabla_Comparativa = data.frame(peso_real, predecir_peso, error)
head(Tabla_Comparativa, 5)
##   peso_real predecir_peso      error
## 1     21.44     25.099715 -3.6597150
## 2     11.88     16.542467 -4.6624667
## 3     12.00     16.685655 -4.6856546
## 4     14.09     12.617406  1.4725939
## 5      9.93      8.978721  0.9512786
#Mean Error Absoluto
MAE = mean(abs(error))
MAE
## [1] 2.034899

MAE indica que la diferencia entre el peso real vs el peso que se predijo en promedio, en unidades de masa en el peso del árbol.

#RMSE
library(Metrics)
rmse(Tabla_Comparativa$peso_real, Tabla_Comparativa$predecir_peso) 
## [1] 2.44506

El métrica RMSE indica que son los errores en unidades de masa en el peso del árbol, pero esta ultima medida tiene mayor impacto en los residuales más grandes, cuando son elevados al cuadrado. El valor para RMSE es pequeño, por lo que se puede decir que Los valores más bajos de RMSE indican un mejor ajuste.