Antonio jose Fajardo Macias

  1. Predicción de los precios de las acciones. Analizar el comportamiento de los precios de las Acciones de Ecopetrol según la variación del precio del barril de petróleo WTI producido en Colombia. Se tienen los siguientes precios
# Carga de Datos
library(readxl)
datos_Ecopetrol = read_excel("C:/Ant/MCD/S2_M7/bdEcopetrol.xlsx")
datos_Ecopetrol$Precio_Accion = as.numeric(as.character(trimws(datos_Ecopetrol$Precio_Accion)))

datos_Ecopetrol$Precio_Petroleo = as.numeric(as.character(trimws(datos_Ecopetrol$Precio_Petroleo)))


attach(datos_Ecopetrol)
                                             
head(datos_Ecopetrol)
Fecha  Precio_Accion Precio_Petroleo
dic 14-15  1090 35.62
dic 15-15  1170 36.31
dic 16-15  1160 37.35
dic 18-15  1230 34.95
dic 21-15  1155 34.53
dic 22-15  1165 35.81
ID=1:lengths(datos_Ecopetrol)
datos=data.frame(ID,datos_Ecopetrol)


plot(Precio_Petroleo,Precio_Accion, xlim = c(30,40), ylim = c(900,1500), las=1, pch=19, col="#b0394a")

#Esta funcion Genera los indicadores 
Generar_Indicadores_Cuantitativa = function(pdataframe, pColumna){
    require(ggplot2)
    require(ggpubr)
     xsum <-  summary(pdataframe[, pColumna])
    # xsum
     g1 <- ggplot2::ggplot(data = pdataframe, mapping = aes(x = pdataframe[, pColumna])) + geom_histogram(bins = 40) + labs(x =  pColumna, y = "Frecuencia") 
      
     g2 <-  ggplot2::ggplot(data = pdataframe, mapping = aes(x = pdataframe[, pColumna])) + geom_boxplot() + labs(x = pColumna)   
      
       
       xgraphs <- ggarrange(xsum,g1,g2,ncol = 3, nrow = 1)
       retObj <- list ("Resumen" = xsum, "Graficos" = xgraphs)
    return(retObj) 
       
}    
  

  Generar_Indicadores_Cuantitativa(datos,  "Precio_Accion")
## $Resumen
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     955    1066    1120    1108    1164    1230 
## 
## $Graficos

  Generar_Indicadores_Cuantitativa(datos,  "Precio_Petroleo")   
## $Resumen
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   30.44   34.63   36.05   35.53   36.98   37.87 
## 
## $Graficos

A. Proponga un modelo de regresión lineal simple que permita predecir el valor de las Acciones de Ecopetrol con base en el Precio del barril de petróleo en Colombia. Indique la ecuación de regresión y el valor del R2

cor(Precio_Petroleo, Precio_Accion )
## [1] 0.7074373
 modeloRL = lm(Precio_Accion~Precio_Petroleo)
summary(modeloRL)
## 
## Call:
## lm(formula = Precio_Accion ~ Precio_Petroleo)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -59.90 -40.74 -15.94  33.40 136.82 
## 
## Coefficients:
##                 Estimate Std. Error t value Pr(>|t|)   
## (Intercept)      177.768    232.828   0.764  0.45627   
## Precio_Petroleo   26.192      6.542   4.004  0.00102 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 57.13 on 16 degrees of freedom
## Multiple R-squared:  0.5005, Adjusted R-squared:  0.4692 
## F-statistic: 16.03 on 1 and 16 DF,  p-value: 0.001024
plot(Precio_Petroleo, Precio_Accion , xlab='Pr. Petroleo', ylab='Pr. Accion')
abline(modeloRL)



Modelo de Regresion Lineal Planteado Y = B0 + B1X Y = 178 + 26.192(X)

Donde Y= Precio de la Accion de Ecopetrol X= Valor del Barril de petroleo El Modelo predice que cada dolar que sube el barril de petroleo el valor de la accion de Ecopetrol sube 26 Dolares

El modelo de regresion lineal con la informacion ingresada genera un R2 de 0.5 lo cual indica que el modelo puede explicar el 50% de los casos

B. Pruebe la significancia del modelo propuesto en “a)” plantee las hipótesis respectivas y use el concepto de Valor _p para tomar la decisión sobre las hipótesis. Use α = 0.05

H0 : El precio del petroleo no es significativo para estimar el precio de la accion de Ecopetrol H1 : El precio del petroleo si es significativo para estimar el precio de la accion de Ecopetrol

El P value calculado es 0.001024, al ser inferior a 0.05, indica que la hipotesis nula (H0) no es valida, por consiguiente la hipotesis H1, es valida

C. Interprete los coeficientes del modelo propuesto en “a)”

El Modelo predice que cada dolar que sube el barril de petroleo el valor de la accion de Ecopetrol sube 26 Dolares Basado en el modelo, si el precio del petroleo es cero, la accion de ecopetrol costaria US $ 178

D. Haga un análisis de los residuos. ¿Qué supuesto no se cumple?

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

#Revisar que la suma de los residuos sea cero
mean(modeloRL$residuals)
## [1] -5.527407e-15
#

El grafico residuals vs Fitted no muestra una clara dispersion de los dato, esto indica que los datos no son completamente lineales Se puede evidenciar en el grafico Normal Q-Q donde los graficos no siempre siguen la recta, indicando que estos no cumple una distribucion normal

Se cumple que la media de los residuos es muy cercana a cero

E. Concluya sobre la validez del modelo propuesto en a)

modelo= lm(log(Precio_Accion)~log(Precio_Petroleo))
summary(modelo)
## 
## Call:
## lm(formula = log(Precio_Accion) ~ log(Precio_Petroleo))
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.05435 -0.03615 -0.01306  0.02928  0.11927 
## 
## Coefficients:
##                      Estimate Std. Error t value Pr(>|t|)    
## (Intercept)            3.9229     0.7072   5.547 4.42e-05 ***
## log(Precio_Petroleo)   0.8646     0.1981   4.364 0.000482 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.05048 on 16 degrees of freedom
## Multiple R-squared:  0.5434, Adjusted R-squared:  0.5149 
## F-statistic: 19.04 on 1 and 16 DF,  p-value: 0.0004824
par(mfrow=c(2,2))
plot(modelo)

Al aplicar logaritmo natural para tratar de normalizar los datos podemos observar una mejora en el R2 al pasar del 50% al 54%

Modelo de Regresion Lineal Planteado Y = B0 + B1X log(Y) = 3.9299 + log(0.86(X))

Donde Y= Precio de la Accion de Ecopetrol X= Valor del Barril de petroleo Se encuentra que hay una relacion positiva entre el precio del barril del petroleo y la accion de Ecopetrol, pero no es una relacion lineal.

#Limieza de los dataset utilizados
rm(datos)
rm(datos_ecopetrol)
rm(model_ep)
rm(model_ep_log)
rm(modelo)
rm(modelRL)

Caso Salario Minimo e Inflacion 2. Los siguientes datos corresponden a la INFLACION y al SALARIO MINIMO LEGAL MENSUAL (SMLM) desde el año 1999 para Colombia.

La idea es establecer un modelo de regresión que ayude a determinar el comportamiento de estas dos variables tomando como variable dependiente SALARIO MINIMO LEGAL MENSUAL (SMLM) y como variable independiente INFLACION obtenga un modelo de regresión lineal simple y resuelva:

Escriba la ecuación del modelo de regresión lineal simple

# Carga de Datos
library(readxl)
datos = read_excel("C:/Ant/MCD/S2_M7/inflacion_smlv.xlsx")
attach(datos)
#se agrega columna de variacion del smlv          
datos$VarSMLM <-c(NA,diff(datos$smlm)/head(smlm,-1)*100)
newdata <- datos[-c(1), ] 


datos <- newdata
head(datos)
año inflacion smlm VarSMLM
2000  8.75 260100 9.997463
2001  7.65 286000 9.957709
2002  6.99 309000 8.041958
2003  6.49 332000 7.443366
2004  5.50 358000 7.831325
2005  4.85 381500 6.564246
attach(datos)

ID=1:lengths(datos)
datos=data.frame(ID,datos)


cor(inflacion, VarSMLM )
## [1] 0.6257148
modeloRL = lm(VarSMLM~inflacion)
summary(modeloRL)
## 
## Call:
## lm(formula = VarSMLM ~ inflacion)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.8423 -1.2470  0.1983  0.9290  2.9818 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)   
## (Intercept)   3.5353     1.0613   3.331  0.00495 **
## inflacion     0.5768     0.1922   3.001  0.00953 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.608 on 14 degrees of freedom
## Multiple R-squared:  0.3915, Adjusted R-squared:  0.3481 
## F-statistic: 9.008 on 1 and 14 DF,  p-value: 0.009526
plot(inflacion,VarSMLM, xlim = c(0,12), ylim = c(1,20), las=1, pch=19, col="#b0394a")
abline(modeloRL)

require(ggplot2)
require(plotly)

g1 = ggplot(data = datos, aes(y = VarSMLM, x = inflacion)) + geom_point() + geom_smooth()
ggplotly(g1)

Modelo de Regresion Lineal Planteado Y = B0 + B1X Y = 3.5353 + 0.5768(X)

Donde Y= Salario Minimo Legal Mensual X= Inflacion El Modelo predice que cada punto porcentual que sube la inflacion aumenta el porcentaje del salario minimo en 0.5768

  1. plantee y valide las hipótesis correspondientes a la linealidad general del modelo propuesto en a)
plot(modeloRL)

Supuesto 1: Relación lineal El grafico residuals vs Fitted muestra dispersion de los datos, esto indica que los datos se pueden considera lineales

Supuesto 2: Independencia

Supuesto 3: Homoscedasticidad

Supuesto 4: Normalidad Se puede evidenciar en el grafico Normal Q-Q donde los graficos siguen la recta, indicando que estos cumplen una distribucion normal

El modelo de regresion lineal con la informacion ingresada genera un R2 de 0.3915 lo cual indica que el modelo puede explicar el 40% de los casos

H0 : La inflacion no es significativq para estimar el porcentaje de aumento del salario minimo H1 : La inflacion si es significativq para estimar el porcentaje de aumento del salario minimo

El P value calculado es 0.009526, al ser inferior a 0.05, indica que la hipotesis nula (H0) no es valida, por consiguiente la hipotesis H1, es valida

C. indique e interprete el coeficiente de correlación del modelo propuesto en a)

La correlacion entre la inflacion y el aumento del salario minimo es 0.6257148, lo que indica una correlacion que no es fuerte entre estas dos variables

D. Interprete cada uno de los coeficientes del modelo propuesto en a)

Donde Y= Salario Minimo Legal Mensual X= Inflacion El Modelo predice que cada punto porcentual que sube la inflacion aumenta el porcentaje del salario minimo en 0.5768 Cuando la inflacion es cero el salario minimo deberia subir 3.5353 %

E. Construya una gráfica de residuales y haga un análisis cualitativo de los supuestos del modelo propuesto en a)

plot(modeloRL)

F. Comente sobre la conveniencia de usar el modelo propuesto en a) para predecir el SMLM para Colombia.

El modelo propuesto no es conveniente para calcular el SMLM puesto que la correlacion de las variables no es directa, es de 0.62, el r2 de 0.39 no ayuda para soportar el modelo. podriamos inferir que pueden existir otras variables con mayor peso en la determinacion del salario minimo, como factores sociales y politicos.

Ejercicios Vivienda

# Carga de Datos
library(readxl)
datos = read_excel("C:/Ant/MCD/S2_M7/Datos_Vivienda.xlsx")
attach(datos)
head(datos)
Zona piso Estrato precio_millon Area_contruida parqueaderos Banos Habitaciones Tipo Barrio cordenada_longitud Cordenada_latitud
Zona Sur 2 6 880 237 2 5 4 Casa pance -76.46300 3.43000
Zona Oeste 2 4 1200 800 3 6 7 Casa miraflores -76.46400 3.42800
Zona Sur 3 5 250 86 NA 2 3 Apartamento multicentro -76.46400 3.42900
Zona Sur NA 6 1280 346 4 6 5 Apartamento ciudad jardín -76.46400 3.43300
Zona Sur 2 6 1300 600 4 7 5 Casa pance -76.46438 3.43463
Zona Sur 3 6 513 160 2 4 4 Casa pance -76.46438 3.43463
ID=1:lengths(datos)
datos=data.frame(ID,datos)
  1. Realice un filtro a la base de datos e incluya solo las ofertas de apartamentos, de la zona norte de la ciudad con precios inferiores a los 500 millones de pesos y áreas menores a 300 mt2. Presente los primeros 3 registros de la base y algunas tablas que comprueben la consulta. (Adicional un mapa con los puntos de la base, discutir si todos los puntos se ubican en la zona norte o se presentan valores en otras zonas, por que?).
Muestra1 <- subset(datos, Zona == "Zona Norte"  & precio_millon < 500 & Area_contruida < 300,select=ID:Cordenada_latitud) 
head(Muestra1, 3)
ID Zona piso Estrato precio_millon Area_contruida parqueaderos Banos Habitaciones Tipo Barrio cordenada_longitud Cordenada_latitud
31 31 Zona Norte 2 3 135 56 1 1 3 Apartamento torres de comfandi -76.46745 3.40763
58 58 Zona Norte NA 5 400 212 NA 2 4 Casa santa mónica residencial -76.47300 3.41800
71 71 Zona Norte NA 3 78 54 2 1 3 Apartamento chiminangos -76.47820 3.44898
library(tidyverse)
library(sf)
library(mapview)
mapview(Muestra1, xcol = 12, ycol = 13, crs = 4269, grid = FALSE)
  1. Realice un análisis exploratorio de datos enfocado en la correlación entre la variable respuesta (precio del apartamento) en función del área construida, estrato y si tiene parqueadero. Use gráficos interactivos con plotly e interprete los resultados.

Nota : Se asume que los parqueaderos marcados como n/a es porque no cuentan con parqueadero

Muestra1$Parqueadero <- ifelse(Muestra1$parqueaderos != "NA", 0, 1)
            
Muestra2 <- select(Muestra1, precio_millon,Area_contruida,Parqueadero,Estrato)
summary(Muestra2)
##  precio_millon   Area_contruida   Parqueadero        Estrato     
##  Min.   : 65.0   Min.   : 30.0   Min.   :0.0000   Min.   :3.000  
##  1st Qu.:145.0   1st Qu.: 64.0   1st Qu.:0.0000   1st Qu.:3.000  
##  Median :240.0   Median : 88.0   Median :0.0000   Median :4.000  
##  Mean   :247.2   Mean   :106.5   Mean   :0.3419   Mean   :4.084  
##  3rd Qu.:335.0   3rd Qu.:125.0   3rd Qu.:1.0000   3rd Qu.:5.000  
##  Max.   :495.0   Max.   :297.0   Max.   :1.0000   Max.   :6.000
require(table1)
table1(~precio_millon+Area_contruida/Estrato + Parqueadero, data=Muestra2)
Overall
(N=1483)
precio_millon
Mean (SD) 247 (111)
Median [Min, Max] 240 [65.0, 495]
Area_contruida
Mean (SD) 107 (56.3)
Median [Min, Max] 88.0 [30.0, 297]
Estrato
Mean (SD) 4.08 (0.935)
Median [Min, Max] 4.00 [3.00, 6.00]
Parqueadero
Mean (SD) 0.342 (0.474)
Median [Min, Max] 0 [0, 1.00]
library(psych)
corr.test(Muestra2,
          use    = "pairwise",
          method = "pearson",
          adjust = "none")
## Call:corr.test(x = Muestra2, use = "pairwise", method = "pearson", 
##     adjust = "none")
## Correlation matrix 
##                precio_millon Area_contruida Parqueadero Estrato
## precio_millon           1.00           0.62       -0.34    0.73
## Area_contruida          0.62           1.00       -0.12    0.28
## Parqueadero            -0.34          -0.12        1.00   -0.40
## Estrato                 0.73           0.28       -0.40    1.00
## Sample Size 
## [1] 1483
## Probability values (Entries above the diagonal are adjusted for multiple tests.) 
##                precio_millon Area_contruida Parqueadero Estrato
## precio_millon              0              0           0       0
## Area_contruida             0              0           0       0
## Parqueadero                0              0           0       0
## Estrato                    0              0           0       0
## 
##  To see confidence intervals of the correlations, print with the short=FALSE option
library(PerformanceAnalytics)

chart.Correlation(Muestra2,
                   method="pearson",
                   histogram=TRUE,
                   pch=16)

Analisis de la corelacion Tanto de la matrix de corelacion como del diagrama de corelacion podemos concluir que la relacion mas fuerte y positiva es entre el area construida y el precio, tambien hay una relacion significativa positiva entre el estrato y el precio.

C. Estime un modelo de regresión lineal múltiple con las variables del punto anterior e interprete los coeficientes si son estadísticamente significativos. Las interpretaciones deber están contextualizadas y discutir si los resultados son lógicos. Adicionalmente interprete el coeficiente R2 y discuta el ajuste del modelo e implicaciones (que podrían hacer para mejorarlo).

Muestra2$Parqueadero = as.numeric(Muestra2$Parqueadero)
Muestra2[is.na(Muestra2)] <- 0 
model_vivienda = lm(precio_millon~Area_contruida+Estrato+Parqueadero,data = Muestra2)
summary(model_vivienda)
## 
## Call:
## lm(formula = precio_millon ~ Area_contruida + Estrato + Parqueadero, 
##     data = Muestra2)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -210.715  -36.146   -5.293   26.811  296.601 
## 
## Coefficients:
##                  Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    -124.71852    7.98184 -15.625  < 2e-16 ***
## Area_contruida    0.89644    0.02803  31.976  < 2e-16 ***
## Estrato          68.67890    1.82356  37.662  < 2e-16 ***
## Parqueadero     -11.70523    3.47803  -3.365 0.000784 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 58.33 on 1479 degrees of freedom
## Multiple R-squared:  0.7229, Adjusted R-squared:  0.7224 
## F-statistic:  1286 on 3 and 1479 DF,  p-value: < 2.2e-16

Según la regresión estimada tenemos los siguientes parámetros:

β Area_contruida: 0.89644
β Estrato: 68.67890 β parqueaderos: -11.70523 β0 = -124.71852

Teniendo como ecuación del modelo:

precio_millon = (0.89644 * Area_contruida) + (68.67890 * Estrato) + (-11.70523 * parqueaderos) -124.71852

D. Realice la validación de supuestos del modelo e interprete los resultados (no es necesario corregir en caso de presentar problemas solo realizar sugerencias de que se podría hacer).

plot(model_vivienda)

library(MASS)
shapiro.test(studres(model_vivienda))
## 
##  Shapiro-Wilk normality test
## 
## data:  studres(model_vivienda)
## W = 0.97871, p-value = 5.179e-14
mean(model_vivienda$residuals)
## [1] -3.271457e-16

El grafico de normalidad no muestra los puntos bien esparcidos, tambien el grafico QQ, no muestra una linea recta . Se podrian aplicar transformaciones para tratar de mejorar estos indicadores

E.Con el modelo identificado predecir el precio de un apartamento con 100 mt2, de estrato 4 y con parqueadero. ¿Si este apartamento lo están ofreciendo en 450 millones cual seria su opinión con base en el resultado del modelo considera que es una buena oferta?

predict(model_vivienda, list(Area_contruida=100,Estrato=4,Parqueadero=1),interval = "confidence")
##        fit      lwr      upr
## 1 227.9358 222.6366 233.2351

Acorde con la prediccion el precio promedio de un apartamento con las caracteristicas indicadas deberia estar en 222 mlns de pesos y maximo de 233. 450 millones es un precio excesivo. seria bueno revisar la oferta para determinar si hay factores adiciones que hacen que el precio este mas elevado que el promedio.

  1. Con las predicciones del modelo sugiera potenciales ofertas para una persona interesada en un apartamento en la zona norte con mas de 100 mt2 de área, de estrato 4, que tenga parqueadero y tenga encuentra que la persona tiene un crédito preaprobado de máximo 400 millones de pesos. Realice un análisis y presente en un mapa al menos 5 ofertas potenciales que debe discutir.
Muestra3 <- datos
Muestra3$Parqueadero <- ifelse(Muestra3$parqueaderos != "NA", 0, 1)
Muestra2 <- subset(Muestra3, Zona == "Zona Norte"  & precio_millon < 400 & Area_contruida > 100 & Estrato==4 & Parqueadero==1,select=ID:Cordenada_latitud)
head(Muestra2, 5)
ID Zona piso Estrato precio_millon Area_contruida parqueaderos Banos Habitaciones Tipo Barrio cordenada_longitud Cordenada_latitud
364 364 Zona Norte 3 4 160 120 NA 2 3 Casa villa del sol -76.49404 3.48257
406 406 Zona Norte 3 4 170 120 NA 2 3 Casa calima -76.49519 3.48211
410 410 Zona Norte 3 4 160 120 NA 2 3 Casa villa del sol -76.49523 3.48207
411 411 Zona Norte 3 4 170 120 NA 2 3 Casa villa del sol -76.49527 3.48108
420 420 Zona Norte 3 4 160 120 NA 2 3 Casa villa del sol -76.49545 3.48172
library(tidyverse)
library(sf)
library(mapview)
mapview(Muestra2, xcol = 12, ycol = 13, crs = 4269, grid = FALSE)

Al aplicar un filtro con los criterios podemos desplegar las ofertas disponibles que cumplen los criterios. se encontraron en total 36 ofertas.

Base de datos de arboles

  1. 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
# Carga de Datos
library(readxl)
datos_arbolesTemp = read_excel("C:/Ant/MCD/S2_M7/data arboles.xlsx")


datos_arbolesTemp$finca <- ifelse(datos_arbolesTemp$finca == "FINCA_1", 1,datos_arbolesTemp$finca)
datos_arbolesTemp$finca <- ifelse(datos_arbolesTemp$finca == "FINCA_2", 2,datos_arbolesTemp$finca)
datos_arbolesTemp$finca <- ifelse(datos_arbolesTemp$finca == "FINCA_3", 3,datos_arbolesTemp$finca)

datos_arbolesTemp$mg <- ifelse(datos_arbolesTemp$mg == "GENOTIPO_1", 1,datos_arbolesTemp$mg)
datos_arbolesTemp$mg <- ifelse(datos_arbolesTemp$mg == "GENOTIPO_2", 2,datos_arbolesTemp$mg)

datos_arbolesTemp$altura = as.numeric(datos_arbolesTemp$altura)
datos_arbolesTemp$peso = as.numeric(datos_arbolesTemp$peso)
datos_arbolesTemp$diametro = as.numeric(datos_arbolesTemp$diametro)
datos_arbolesTemp$finca = as.numeric(datos_arbolesTemp$finca)
datos_arbolesTemp$mg = as.numeric(datos_arbolesTemp$mg)
  
summary(datos_arbolesTemp)
##      finca         mg           peso          diametro         altura      
##  Min.   :1   Min.   :1.0   Min.   : 5.98   Min.   :2.200   Min.   : 3.300  
##  1st Qu.:1   1st Qu.:1.0   1st Qu.:13.64   1st Qu.:4.525   1st Qu.: 5.225  
##  Median :2   Median :1.5   Median :17.48   Median :5.400   Median : 6.450  
##  Mean   :2   Mean   :1.5   Mean   :18.77   Mean   :5.446   Mean   : 6.634  
##  3rd Qu.:3   3rd Qu.:2.0   3rd Qu.:22.80   3rd Qu.:6.500   3rd Qu.: 7.875  
##  Max.   :3   Max.   :2.0   Max.   :47.87   Max.   :8.800   Max.   :11.300
dt = sort(sample(nrow(datos_arbolesTemp), nrow(datos_arbolesTemp)*.7))
datos_arboles<-datos_arbolesTemp[dt,]
datos_arbolesPrueba<-datos_arbolesTemp[-dt,]



attach(datos_arboles)
head(datos_arboles)
finca mg peso diametro altura
1 1 14.58 5.3 5.6
1 1 8.99 3.2 4.3
1 1 6.99 2.2 3.3
1 2 19.34 6.3 7.9
1 2 21.44 6.6 8.3
1 2 13.81 5.3 7.3
#ID=1:lengths(datos_arboles)
#datos_arboles=data.frame(ID,datos_arboles)
require(table1)
table1(~datos_arboles$altura+ datos_arboles$peso + datos_arboles$diametro, data=datos_arboles)
Overall
(N=62)
datos_arboles$altura
Mean (SD) 6.65 (1.95)
Median [Min, Max] 6.15 [3.30, 11.3]
datos_arboles$peso
Mean (SD) 18.9 (8.91)
Median [Min, Max] 17.8 [5.98, 47.9]
datos_arboles$diametro
Mean (SD) 5.45 (1.59)
Median [Min, Max] 5.40 [2.20, 8.80]
library(psych)
corr.test(datos_arboles,
          use    = "pairwise",
          method = "pearson",
          adjust = "none")
## Call:corr.test(x = datos_arboles, use = "pairwise", method = "pearson", 
##     adjust = "none")
## Correlation matrix 
##          finca   mg peso diametro altura
## finca     1.00 0.00 0.33     0.27   0.15
## mg        0.00 1.00 0.51     0.59   0.76
## peso      0.33 0.51 1.00     0.92   0.88
## diametro  0.27 0.59 0.92     1.00   0.94
## altura    0.15 0.76 0.88     0.94   1.00
## Sample Size 
## [1] 62
## Probability values (Entries above the diagonal are adjusted for multiple tests.) 
##          finca   mg peso diametro altura
## finca     0.00 0.98 0.01     0.04   0.25
## mg        0.98 0.00 0.00     0.00   0.00
## peso      0.01 0.00 0.00     0.00   0.00
## diametro  0.04 0.00 0.00     0.00   0.00
## altura    0.25 0.00 0.00     0.00   0.00
## 
##  To see confidence intervals of the correlations, print with the short=FALSE option
library(PerformanceAnalytics)

chart.Correlation(datos_arboles,
                   method="pearson",
                   histogram=TRUE,
                   pch=16)

Del grafico de correlacion podemos observar que las corellaciones mas fuertes estan con el diametro y la altura, sin embargo voy a incluir el genotipo para ver como se comporta el modelo

library(dplyr)
model_arboles = lm(peso~altura+diametro+mg,data = datos_arboles)
summary(model_arboles)
## 
## Call:
## lm(formula = peso ~ altura + diametro + mg, data = datos_arboles)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -5.0311 -2.8827  0.1364  1.8600 11.0811 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  -8.4175     1.6759  -5.023 5.18e-06 ***
## altura        1.9257     0.9762   1.973   0.0533 .  
## diametro      3.5067     0.9659   3.630   0.0006 ***
## mg           -3.1241     1.6223  -1.926   0.0591 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.482 on 58 degrees of freedom
## Multiple R-squared:  0.8546, Adjusted R-squared:  0.8471 
## F-statistic: 113.7 on 3 and 58 DF,  p-value: < 2.2e-16
#Prediccion con el conjunto de prueba
 predicciones <- model_arboles%>% predict (datos_arbolesPrueba)
 

library(caret)
 data.frame (R_squared = R2 (predicciones, datos_arbolesPrueba$peso),
           RMSE = RMSE (predicciones, datos_arbolesPrueba$peso),
           MAE = MAE (predicciones, datos_arbolesPrueba$peso))
R_squared RMSE MAE
0.7541548 3.082425 2.708467

```

Según la regresión estimada tenemos con base en el conjunto de datos de entrenamiento los siguientes parámetros:

β Altura: 1.269
β Diametro: 4.545 β Genotipo: -3.645 β0 = -8.809

Teniendo como ecuación del modelo:

precio_millon = (1.269 * Altura) + (4.545 * Diametro) + (-3.645 * Genotipo) -8.809

Me atreveria a afirmar que la colinealidad esta afectando el modelo porque el pvalue de altura en este modelo indica que la altura no es significativa,

un RMSE de 3.132463 un MAE de 2.561696