###############################################################################
# INFORME FINAL DEL CURSO
###############################################################################

# ---------------------------------------------------------------------------
# PLANTEAMIENTO DE LA PREGUNTA PREDICTIVA
# ---------------------------------------------------------------------------
# Pregunta nueva:
# ¿Es posible predecir el ANCHO DEL SÉPALO a partir de
# características morfológicas de pétalo y sépalo?
#
# Variable Dependiente: Ancho del sépalo
# Predictoras: Largo y ancho del pétalo, largo del sépalo.
#
# Interés teórico:
# Saber si las dimensiones del pétalo pueden anticipar la 
# arquitectura del sépalo,
# lo cual podría reflejar patrones estructurales de crecimiento.
# ---------------------------------------------------------------------------

library(car)
## Loading required package: carData
# ---------------------------------------------------------------------------
# DATASET Y SELECCIÓN DE VARIABLES
# ---------------------------------------------------------------------------
datos <- read.csv("/Users/pilarmendez/Downloads/a4_iris_limpia.csv")
str(datos)
## 'data.frame':    150 obs. of  5 variables:
##  $ Sepalo_largo: num  5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
##  $ Sepalo_ancho: num  3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
##  $ Petalo_largo: num  1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
##  $ Petalo_ancho: num  0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
##  $ Variedad    : chr  "Setosa" "Setosa" "Setosa" "Setosa" ...
summary(datos)
##   Sepalo_largo    Sepalo_ancho    Petalo_largo    Petalo_ancho  
##  Min.   :4.300   Min.   :2.000   Min.   :1.000   Min.   :0.100  
##  1st Qu.:5.100   1st Qu.:2.800   1st Qu.:1.600   1st Qu.:0.300  
##  Median :5.800   Median :3.000   Median :4.350   Median :1.300  
##  Mean   :5.843   Mean   :3.057   Mean   :3.758   Mean   :1.199  
##  3rd Qu.:6.400   3rd Qu.:3.300   3rd Qu.:5.100   3rd Qu.:1.800  
##  Max.   :7.900   Max.   :4.400   Max.   :6.900   Max.   :2.500  
##    Variedad        
##  Length:150        
##  Class :character  
##  Mode  :character  
##                    
##                    
## 
head(datos)
##   Sepalo_largo Sepalo_ancho Petalo_largo Petalo_ancho Variedad
## 1          5.1          3.5          1.4          0.2   Setosa
## 2          4.9          3.0          1.4          0.2   Setosa
## 3          4.7          3.2          1.3          0.2   Setosa
## 4          4.6          3.1          1.5          0.2   Setosa
## 5          5.0          3.6          1.4          0.2   Setosa
## 6          5.4          3.9          1.7          0.4   Setosa
vars <- c("Sepalo_ancho","Sepalo_largo","Petalo_largo","Petalo_ancho")
datos_sel <- datos[, vars]
summary(datos_sel)
##   Sepalo_ancho    Sepalo_largo    Petalo_largo    Petalo_ancho  
##  Min.   :2.000   Min.   :4.300   Min.   :1.000   Min.   :0.100  
##  1st Qu.:2.800   1st Qu.:5.100   1st Qu.:1.600   1st Qu.:0.300  
##  Median :3.000   Median :5.800   Median :4.350   Median :1.300  
##  Mean   :3.057   Mean   :5.843   Mean   :3.758   Mean   :1.199  
##  3rd Qu.:3.300   3rd Qu.:6.400   3rd Qu.:5.100   3rd Qu.:1.800  
##  Max.   :4.400   Max.   :7.900   Max.   :6.900   Max.   :2.500
# ---------------------------------------------------------------------------
# VISUALIZACIONES Y CORRELACIONES
# ---------------------------------------------------------------------------
correlaciones_nuevo <- cor(datos_sel)
correlaciones_nuevo
##              Sepalo_ancho Sepalo_largo Petalo_largo Petalo_ancho
## Sepalo_ancho    1.0000000   -0.1175698   -0.4284401   -0.3661259
## Sepalo_largo   -0.1175698    1.0000000    0.8717538    0.8179411
## Petalo_largo   -0.4284401    0.8717538    1.0000000    0.9628654
## Petalo_ancho   -0.3661259    0.8179411    0.9628654    1.0000000
pairs(datos_sel,
      main = "Relación entre dimensiones morfológicas")

# Comentario:
# En Iris es frecuente que el ancho del sépalo tenga correlaciones débiles o moderadas.
# Predecirla es más difícil que predecir el largo del pétalo lo que # hace interesante
# evaluar si existe un modelo lineal razonable.
# ---------------------------------------------------------------------------

# ---------------------------------------------------------------------------
# MODELO PREDICTIVO PARA EXPLICAR ANCHO DEL SEPALO
# ---------------------------------------------------------------------------

# Modelo principal propuesto:

modelo_pw <- lm(Sepalo_ancho ~ Petalo_largo + Petalo_ancho + Sepalo_largo, data = datos_sel)

summary(modelo_pw)
## 
## Call:
## lm(formula = Sepalo_ancho ~ Petalo_largo + Petalo_ancho + Sepalo_largo, 
##     data = datos_sel)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.88045 -0.20945  0.01426  0.17942  0.78125 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   1.04309    0.27058   3.855 0.000173 ***
## Petalo_largo -0.58603    0.06214  -9.431  < 2e-16 ***
## Petalo_ancho  0.55803    0.12256   4.553  1.1e-05 ***
## Sepalo_largo  0.60707    0.06217   9.765  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.3038 on 146 degrees of freedom
## Multiple R-squared:  0.524,  Adjusted R-squared:  0.5142 
## F-statistic: 53.58 on 3 and 146 DF,  p-value: < 2.2e-16
# DIAGNÓSTICO DEL MODELO PROPUESTO
par(mfrow = c(2, 2))
plot(modelo_pw)

par(mfrow = c(1, 1))

# ---------------------------------------------------------------------------
# ANÁLISIS DE COLINEALIDAD
# ---------------------------------------------------------------------------

vif(modelo_pw)
## Petalo_largo Petalo_ancho Sepalo_largo 
##    19.426391    14.089441     4.278282
# Comentario de VIF:
# Si VIF es moderado (<5), no hay evidencia fuerte de colinealidad crítica.
# Es esperado que Petal_lenght y Petal_width estén correlacionadas,
# pero no necesariamente afectan la estabilidad del modelo.
# ---------------------------------------------------------------------------

# ---------------------------------------------------------------------------
# INTERPRETACIÓN DEL MODELO
# ---------------------------------------------------------------------------
# Fórmula:
# Ancho del sépalo = β0 + β1*Largo del pétlo + β2*Ancho del petalo + β3*Largo del sepalo + ε
#
# Interpretación general:
# - β1 (Largo del pétalo): indica cuánto aumenta o disminuye ancho # del pétalo cuando
#   crece la longitud del pétalo.
# - β2 (Ancho del petalo): puede mostrar un efecto inverso (sépalos más estrechos
#   asociándose a pétalos más anchos).
# - β3 (Largo del pétalo): representa el vínculo directo entre ambas dimensiones
#   del sépalo.
#
# Significancia:
# El modelo permite identificar qué características del pétalo predicen mejor
# la anchura del sépalo.
#
# Métricas globales:
# - R²: Cuánta variabilidad del ancho del sépalo explican los predictores.
# - R² ajustado: versión penalizada para evitar sobreajuste.
# - Residuales: útiles para verificar linealidad y normalidad.
#
# ---------------------------------------------------------------------------

# ---------------------------------------------------------------------------
# CONCLUSIONES DEL MODELO
# ---------------------------------------------------------------------------
# 1. El ancho del sépalo puede predecirse parcialmente mediante
#    las dimensiones del pétalo y la longitud del sépalo.
#
# 2. Los coeficientes del modelo ayudan a entender qué estructuras florales
#    tienen mayor relación con la expansión lateral del sépalo.
#
# 3. Es un modelo con interpretación biológica razonable, pero con poder
#    predictivo moderado, lo cual es esperable para esta variable.
#
# 4. No se trata de un modelo perfecto, pero sí de un modelo útil para describir
#    la relación estructural entre pétalo y sépalo.
#
# 5. Se recomienda explorar modelos no lineales o incluir la variable especie
#    para capturar patrones morfológicos diferenciales.
# ---------------------------------------------------------------------------