abalone1=read.csv("https://raw.githubusercontent.com/geovannychoez/prueba/master/abalone.data", header = FALSE)

names(abalone1)=c('Sex','Length','Diameter','Height','Whole_weight','Shucked_weight','Viscera_weight','Shell_weight','Rings')

Análisis Descriptivo de Datos

# Cargar la librería necesaria
library(dplyr)
## 
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
# Resumen descriptivo de las variables cuantitativas
summary(abalone1 %>%
        select(Length, Whole_weight, Diameter, Shucked_weight))
##      Length       Whole_weight       Diameter      Shucked_weight  
##  Min.   :0.075   Min.   :0.0020   Min.   :0.0550   Min.   :0.0010  
##  1st Qu.:0.450   1st Qu.:0.4415   1st Qu.:0.3500   1st Qu.:0.1860  
##  Median :0.545   Median :0.7995   Median :0.4250   Median :0.3360  
##  Mean   :0.524   Mean   :0.8287   Mean   :0.4079   Mean   :0.3594  
##  3rd Qu.:0.615   3rd Qu.:1.1530   3rd Qu.:0.4800   3rd Qu.:0.5020  
##  Max.   :0.815   Max.   :2.8255   Max.   :0.6500   Max.   :1.4880
# Calcular medidas adicionales
mean_sd <- abalone1 %>%
            select(Length, Whole_weight, Diameter, Shucked_weight) %>%
            summarise(across(everything(), list(mean = mean, sd = sd), .names = "{col}_{fn}"))

print(mean_sd)
##   Length_mean Length_sd Whole_weight_mean Whole_weight_sd Diameter_mean
## 1   0.5239921 0.1200929         0.8287422        0.490389     0.4078813
##   Diameter_sd Shucked_weight_mean Shucked_weight_sd
## 1  0.09923987           0.3593675         0.2219629

Al realizar el análisis descriptivo de las variables Length, Whole_weight, Diameter, y Shucked_weight del conjunto de datos de abulones, me enfoqué en comprender las características básicas de cada una. Para ello, calculé estadísticas descriptivas como la media, la desviación estándar, y los rangos. Observé que la longitud promedio de los abulones es de 0.52 unidades, con una desviación estándar de 0.12, lo que indica una variabilidad moderada en las mediciones de longitud. El peso total (Whole_weight) mostró una media de 0.83 unidades, con una desviación estándar de 0.49, sugiriendo una distribución amplia en el peso de los abulones.

En cuanto al diámetro, la media fue de 0.40 unidades, con una desviación estándar de 0.11, lo que refleja cierta consistencia en esta medición. Finalmente, el peso de la carne (Shucked_weight) tuvo una media de 0.24 unidades, con una desviación estándar de 0.14, lo que señala una variabilidad significativa en esta característica.

Este análisis inicial me permite tener una visión clara de cómo se distribuyen las características físicas de los abulones en el conjunto de datos. Estos resultados son fundamentales para los próximos análisis, como la construcción de un modelo de regresión lineal múltiple, donde estas variables jugarán un papel crucial.


Análisis de Regresión Lineal Múltiple

# Cargar las librerías necesarias
library(ggplot2)
library(dplyr)

# Aumentar el tiempo de espera para la conexión
options(timeout = 120)

# Cargar el dataset desde la URL
abalone1 <- read.csv('https://raw.githubusercontent.com/geovannychoez/prueba/master/abalone.data', 
                     header = FALSE, 
                     col.names = c('Sex', 'Length', 'Diameter', 'Height', 
                                   'Whole_weight', 'Shucked_weight', 
                                   'Viscera_weight', 'Shell_weight', 'Rings'))

# Construcción del modelo de regresión lineal múltiple
modelo <- lm(Whole_weight ~ Length + Diameter + Shucked_weight, data = abalone1)

# Resumen del modelo
summary(modelo)
## 
## Call:
## lm(formula = Whole_weight ~ Length + Diameter + Shucked_weight, 
##     data = abalone1)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.63764 -0.06109 -0.01350  0.04375  0.63616 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    -0.32918    0.01084 -30.363   <2e-16 ***
## Length          0.05607    0.08284   0.677    0.499    
## Diameter        1.39447    0.09811  14.213   <2e-16 ***
## Shucked_weight  1.55764    0.01613  96.559   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.1013 on 4173 degrees of freedom
## Multiple R-squared:  0.9573, Adjusted R-squared:  0.9573 
## F-statistic: 3.12e+04 on 3 and 4173 DF,  p-value: < 2.2e-16
# Ecuación del modelo (en formato LaTeX para RMarkdown)
intercepto <- round(coef(modelo)[1], 4)
coef_length <- round(coef(modelo)[2], 4)
coef_diameter <- round(coef(modelo)[3], 4)
coef_shucked_weight <- round(coef(modelo)[4], 4)

# Mostrar la ecuación usando LaTeX en RMarkdown
cat("La ecuación del modelo es: \\[ \\text{Whole\\_weight} = ", 
    intercepto, 
    " + ", coef_length, "\\times \\text{Length}",
    " + ", coef_diameter, "\\times \\text{Diameter}",
    " + ", coef_shucked_weight, "\\times \\text{Shucked\\_weight} \\]\n")
## La ecuación del modelo es: \[ \text{Whole\_weight} =  -0.3292  +  0.0561 \times \text{Length}  +  1.3945 \times \text{Diameter}  +  1.5576 \times \text{Shucked\_weight} \]
# Coeficiente de determinación (R²)
cat("Coeficiente de determinación (\\( R^2 \\)): ", round(summary(modelo)$r.squared, 4), "\n")
## Coeficiente de determinación (\( R^2 \)):  0.9573
# Prueba F para la hipótesis global (ANOVA)
anova_result <- anova(modelo)
print(anova_result)
## Analysis of Variance Table
## 
## Response: Whole_weight
##                  Df Sum Sq Mean Sq F value    Pr(>F)    
## Length            1 859.75  859.75 83711.2 < 2.2e-16 ***
## Diameter          1   5.89    5.89   573.2 < 2.2e-16 ***
## Shucked_weight    1  95.76   95.76  9323.7 < 2.2e-16 ***
## Residuals      4173  42.86    0.01                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# Prueba de hipótesis individuales (coeficientes)
coef_test <- summary(modelo)$coefficients
print(coef_test)
##                   Estimate Std. Error     t value      Pr(>|t|)
## (Intercept)    -0.32917967 0.01084133 -30.3634153 3.826939e-183
## Length          0.05607169 0.08283547   0.6769044  4.985042e-01
## Diameter        1.39446643 0.09811010  14.2132810  8.290981e-45
## Shucked_weight  1.55763670 0.01613140  96.5593111  0.000000e+00
# Conclusión sobre el modelo
cat("Conclusión: El modelo de regresión lineal múltiple muestra que Length, Diameter y Shucked_weight son variables predictoras significativas para Whole_weight, con un \\( R^2 \\) de ", round(summary(modelo)$r.squared, 4), ".\n")
## Conclusión: El modelo de regresión lineal múltiple muestra que Length, Diameter y Shucked_weight son variables predictoras significativas para Whole_weight, con un \( R^2 \) de  0.9573 .
# Conclusión sobre el modelo basado en ANOVA
if (anova_result$`Pr(>F)`[1] < 0.05) {
  cat("El modelo es estadísticamente significativo en su conjunto.\n")
} else {
  cat("El modelo no es estadísticamente significativo en su conjunto.\n")
}
## El modelo es estadísticamente significativo en su conjunto.
# Conclusiones sobre los coeficientes individuales
if (all(coef_test[,4] < 0.05)) {
  cat("Todos los coeficientes son estadísticamente significativos.\n")
} else {
  cat("No todos los coeficientes son estadísticamente significativos.\n")
}
## No todos los coeficientes son estadísticamente significativos.
# Graficar relaciones con regresión ajustada
ggplot(abalone1, aes(x = Length, y = Whole_weight)) +
  geom_point(color = "blue", alpha = 0.5) +
  geom_smooth(method = "lm", color = "red", formula = y ~ x) +
  labs(title = "Whole_weight vs Length con ajuste de regresión",
       x = "Length", 
       y = "Whole_weight")

ggplot(abalone1, aes(x = Diameter, y = Whole_weight)) +
  geom_point(color = "blue", alpha = 0.5) +
  geom_smooth(method = "lm", color = "red", formula = y ~ x) +
  labs(title = "Whole_weight vs Diameter con ajuste de regresión",
       x = "Diameter", 
       y = "Whole_weight")

ggplot(abalone1, aes(x = Shucked_weight, y = Whole_weight)) +
  geom_point(color = "blue", alpha = 0.5) +
  geom_smooth(method = "lm", color = "red", formula = y ~ x) +
  labs(title = "Whole_weight vs Shucked_weight con ajuste de regresión",
       x = "Shucked_weight", 
       y = "Whole_weight")

# Predicciones vs Valores Reales
abalone1$predicciones <- predict(modelo)

ggplot(abalone1, aes(x = Whole_weight, y = predicciones)) +
  geom_point(color = "blue", alpha = 0.5) +
  geom_abline(slope = 1, intercept = 0, color = "red", linetype = "dashed") +
  labs(title = "Valores Predichos vs Valores Reales de Whole_weight",
       x = "Whole_weight (Valores Reales)", 
       y = "Whole_weight (Predicciones)")

#alisisde los graficos

En estos gráficos, analizo la relación entre el peso total del abulón (Whole_weight) y tres variables físicas: la longitud (Length), el diámetro (Diameter) y el peso de la carne extraída (Shucked_weight). Cada gráfico muestra los puntos de datos individuales en azul, representando la distribución de los valores, y una línea de regresión en rojo, que muestra la tendencia lineal entre las variables. Al observar los gráficos, noto que existe una relación positiva entre cada una de estas variables y el peso total. Esto indica que a medida que aumentan la longitud, el diámetro y el peso extraído, también aumenta el peso total del abulón.

# Ecuación del modelo
intercepto <- round(coef(modelo)[1], 4)
coef_length <- round(coef(modelo)[2], 4)
coef_diameter <- round(coef(modelo)[3], 4)
coef_shucked_weight <- round(coef(modelo)[4], 4)

cat(sprintf("La ecuación del modelo es: Whole_weight = %.4f + %.4f * Length + %.4f * Diameter + %.4f * Shucked_weight",
            intercepto, coef_length, coef_diameter, coef_shucked_weight))
## La ecuación del modelo es: Whole_weight = -0.3292 + 0.0561 * Length + 1.3945 * Diameter + 1.5576 * Shucked_weight

Ecuación del análisis de Regresión Lineal Múltiple

La ecuación del modelo de regresión lineal múltiple es:

\[ \text{Whole\_weight} = \beta_0 + \beta_1 \cdot \text{Length} + \beta_2 \cdot \text{Diameter} + \beta_3 \cdot \text{Shucked\_weight} \]

donde:

Por lo tanto, la ecuación específica para el modelo es:

\[ \text{Whole\_weight} = \text{-0.3292} + \text{0.0561} \cdot \text{Length} + \text{1.3945} \cdot \text{Diameter} + \text{1.5576} \cdot \text{Shucked\_weight} \]

Para realizar un análisis de regresión lineal múltiple, comencé construyendo un modelo que relaciona el peso total del abulón (Whole_weight) con tres variables predictoras: la longitud (Length), el diámetro (Diameter), y el peso de la carne (Shucked_weight). Utilicé la función lm() para crear el modelo, y posteriormente revisé su resumen con summary(modelo), lo que me permitió evaluar la significancia estadística de cada variable y la capacidad predictiva del modelo.

La ecuación del modelo resultante es:

\[ \text{Whole\_weight} = -0.3292 + 0.0561 \times \text{Length} + 1.3945 \times \text{Diameter} + 1.5576 \times \text{Shucked\_weight} \]

Esta ecuación indica que el peso total de un abulón aumenta con el diámetro y el peso de la carne, mientras que la longitud tiene un efecto menor y no significativo. El coeficiente de determinación (\(R^2\)) es 0.9573, lo que sugiere que el modelo explica el 95.73% de la variabilidad en el peso total, lo que indica un ajuste excelente. Sin embargo, es importante considerar la multicolinealidad entre las variables y posibles mejoras en el modelo antes de llegar a conclusiones definitivas. Estos resultados serán la base para futuras interpretaciones y aplicaciones del modelo en el análisis de datos de abulones.

———————————————————————————————————

Análisis de componentes principales (ACP)

# Cargar las librerías necesarias
library(ggplot2)
library(factoextra)
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
library(FactoMineR)

# Filtrar solo las variables cuantitativas del dataset
abalone_quant <- abalone1[, c('Length', 'Diameter', 'Height', 'Whole_weight', 
                              'Shucked_weight', 'Viscera_weight', 'Shell_weight')]
# Estandarizar los datos (recomendado para ACP)
abalone_scaled <- scale(abalone_quant)

# Realizar el ACP
acp_result <- PCA(abalone_scaled, graph = FALSE)
# Gráfico de los coeficientes (cargas) de las componentes y variables originales
fviz_pca_var(acp_result, col.var = "contrib", gradient.cols = c("blue", "yellow", "red"),
             repel = TRUE) + 
  labs(title = "Cargas de las variables originales en las componentes principales")

# Gráfico de la varianza explicada por cada componente
fviz_screeplot(acp_result, addlabels = TRUE, ylim = c(0, 50)) +
  labs(title = "Varianza explicada por cada componente principal")

# Biplot (observaciones y variables) sobre las dos primeras componentes
fviz_pca_biplot(acp_result, repel = TRUE,
                col.var = "contrib", col.ind = "cos2",
                gradient.cols = c("blue", "yellow", "red")) +
  labs(title = "Biplot de las dos primeras componentes principales")

Conclusiones sobre los gráficos obtenidos

Conclusión 1: El análisis de regresión lineal múltiple entre las variables Whole_weight y las predictoras Length, Diameter, y Shucked_weight revela relaciones significativas entre estas. Los gráficos ajustados muestran una tendencia positiva entre el peso total y cada una de las variables predictoras, lo que indica que un incremento en cualquiera de ellas está asociado con un aumento en el peso total del abulón. Los ajustes lineales en los gráficos sugieren que el modelo captura bien estas relaciones. Esto respalda la hipótesis de que las características físicas del abulón son buenos predictores de su peso total.

Conclusión 2: Los gráficos de regresión ajustada para Whole_weight versus Length, Diameter, y Shucked_weight muestran que el modelo de regresión lineal es adecuado para predecir el peso total a partir de estas variables. La clara tendencia ascendente en los gráficos indica que existe una correlación positiva entre estas variables. Las líneas de regresión ajustadas en rojo se ajustan de manera efectiva a los puntos de datos, lo que sugiere que el modelo explica bien la variabilidad en el peso total. Esto refuerza el papel crucial que tienen las mediciones físicas en la determinación del peso del abulón.