Objetivo

Predecir rating de cacaco con respoecto a % de cacao

Descripción

library(readr)
library(ggplot2)
library(dplyr)

Cargar datos

datos <- read.csv("https://raw.githubusercontent.com/rpizarrog/Ciencia-de-los-Datos-Descriptivo-Predictivo/refs/heads/main/datos/flavors_of_cacao_limpio.csv")
head(datos)
##   porcentaje rating
## 1       0.63   3.75
## 2       0.70   2.75
## 3       0.70   3.00
## 4       0.70   3.50
## 5       0.70   3.50
## 6       0.70   2.75
tail(datos)
##      porcentaje rating
## 1790       0.58   3.50
## 1791       0.70   3.75
## 1792       0.65   3.00
## 1793       0.65   3.50
## 1794       0.62   3.25
## 1795       0.65   3.00

Construir el modelo

modelo <- lm(data = datos, formula = rating ~ porcentaje)
summary(modelo)
## 
## Call:
## lm(formula = rating ~ porcentaje, data = datos)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -2.20715 -0.31967  0.04285  0.31781  1.79285 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   4.0806     0.1268  32.192  < 2e-16 ***
## porcentaje   -1.2478     0.1761  -7.085 1.98e-12 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.4716 on 1793 degrees of freedom
## Multiple R-squared:  0.02724,    Adjusted R-squared:  0.02669 
## F-statistic:  50.2 on 1 and 1793 DF,  p-value: 1.985e-12

Coeficiente a y b

a <- modelo$coefficients[1]
b <- modelo$coefficients[2]
a
## (Intercept) 
##    4.080596
b
## porcentaje 
##  -1.247781

A predecir

Valores de %

a_predecir <- data.frame(porcentaje = c(0.30, 0.60, 0.90))
# Predicciones
predicciones <- round(predict(modelo, newdata = a_predecir), 2)
predicciones
##    1    2    3 
## 3.71 3.33 2.96

Visualmente

ggplot(datos, aes(x = porcentaje, y = rating)) +
  geom_point(color = "blue", alpha = 0.7) + # Puntos de datos
  geom_smooth(method = "lm", se = TRUE, color = "red") + # Línea de regresión
  labs(
    title = "Regresión Lineal Simple",
    x = "Variable Independiente (x)",
    y = "Variable Dependiente (y)"
  ) +
  theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'

# otra forma
# ggplot(datos) +
# geom_point(aes(x))

Interpretación

Si se fuera muy exigente con el modelo que tuviere un valor de R square por encima del 50%, este modelo y con estos datos el rating tan solo se ve representado de acuerdo al valor de Multiple R-squared: 0.02724 o sea tan solo del 2% por lo que el modelo no es un buen predictor con estos datos.

Para valores nuevos de 0.30, 0.60 y 0.90 en valores de obscuridad de cacao las prediciones de accuerdo al modelo son 3.71, 3.33 y 2.96 respectivamente.