11/6/2020

Datos de Arboles

La base de datos contiene información sobre el peso, altura y otras caracteristicas de una muestra de arboles del compañia XYZ.

library(readxl)
data_biomasa <- read_excel("~/Desktop/data biomasa.xlsx")
head(data_biomasa,n = 3)
## # A tibble: 3 x 8
##   finca   mg         bio_aerea bio_sub bio_total area_foliar diametro altura
##   <chr>   <chr>          <dbl>   <dbl>     <dbl>       <dbl>    <dbl>  <dbl>
## 1 FINCA_1 GENOTIPO_1      12.8    0.93      13.7        44.5      4.7    5  
## 2 FINCA_1 GENOTIPO_1      13.9    0.69      14.6        39.7      5.3    5.6
## 3 FINCA_1 GENOTIPO_1      15.1    0.78      15.9        45.6      4.8    5.8

Estimación de Modelo Multiple

require(ggplot2)
ggplot(data_biomasa,aes(x=diametro,y=log(bio_total),col=finca))+geom_point()

Resultado del Modelo

mod1=lm(log(bio_total)~diametro+finca+mg,data=data_biomasa)
summary(mod1)
## 
## Call:
## lm(formula = log(bio_total) ~ diametro + finca + mg, data = data_biomasa)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.25355 -0.06083 -0.01964  0.06352  0.18167 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   1.16651    0.04512  25.856  < 2e-16 ***
## diametro      0.30888    0.01077  28.674  < 2e-16 ***
## fincaFINCA_2 -0.02028    0.03119  -0.650    0.517    
## fincaFINCA_3  0.19919    0.02605   7.646 2.90e-11 ***
## mgGENOTIPO_2 -0.13061    0.02683  -4.868 5.14e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.09507 on 85 degrees of freedom
## Multiple R-squared:  0.9531, Adjusted R-squared:  0.9509 
## F-statistic: 431.7 on 4 and 85 DF,  p-value: < 2.2e-16

Predecir con el Modelo

¿Cual es el peso estimado de un arbol con diametro 7.2, de la finca 1 y variedad mg2?

log_peso=predict(mod1,list(diametro=7.2,finca="FINCA_1",mg="GENOTIPO_2"))
exp(log_peso)
##        1 
## 26.04482

Validación Cruzada

peso_modelo=array(NA,90)

for(i in 1:90){
valida=data_biomasa[i,]
entrena=data_biomasa[-i,]
mod_entrena=lm(log(bio_total)~diametro+finca+mg,data=entrena)


log_peso=predict(mod_entrena,list(diametro=valida$diametro,finca=valida$finca,mg=valida$mg))
peso_modelo[i]=exp(log_peso)

}

Metricas de Validación

peso_real=data_biomasa$bio_total
resultados=data.frame(peso_real,peso_modelo)
ggplot(resultados,aes(x=peso_modelo,y=peso_real))+geom_point()+theme_bw()+geom_smooth()

#Mean Absolut Error - Error Medio Absoluto
MAE=mean(abs(peso_real-peso_modelo))
MAE
## [1] 1.546798

El modelo tiene un error medio absoluto de predición de 1.54 toneladas por arbol.