La directora de marketing de una importante compañía de telefonía móvil obtuvo los registros de los minutos consumidos por una muestra aleatoria de 150 abonados al plan más barato de la empresa (400 minutos mensuales). El objetivo es analizar estos datos para entender mejor el comportamiento de los usuarios.
# Instalar y cargar las librerías
#install.packages("ggplot2")
#install.packages("dplyr")
#install.packages("gridExtra")
#install.packages("grid")
#install.packages('tinytex')
#tinytex::install_tinytex()
library(ggplot2)
library(dplyr)
library(gridExtra)
library(grid)
# Datos de minutos consumidos
# Nota: Asegúrate de completar esta lista con todos los valores proporcionados
minutos_consumidos <- c(414, 412, 315, 393, 431, 405, 330, 348, 401, 342, 388, 399, 373, 358, 405, 402, 344, 354, 387, 386, 389, 367, 362, 382, 334, 357, 371, 455, 452, 384, 345, 347, 400, 389, 399, 408, 376, 451, 414, 385, 378, 413, 364, 379, 372, 403, 310, 379, 401, 401, 344, 365, 414, 358, 407, 354, 394, 430, 389, 425, 382, 348, 387, 362, 307, 403, 412, 419, 349, 346, 340, 428, 342, 330, 351, 440, 445, 390, 358, 353, 407, 391, 446, 369, 378, 365, 368, 377, 399, 379, 370, 412, 311, 352, 365, 384, 384, 357, 423, 341, 409, 381, 363, 358, 422, 404, 463, 421, 419, 379, 325, 353, 379, 385, 359, 359, 392, 245, 390, 340, 372, 421, 382, 373, 374, 348, 415, 388, 431, 382, 388, 409, 373, 371, 312, 367, 375, 359, 411, 411, 341, 380, 397, 358, 406, 416, 408, 440, 398, 346)
# Crear un DataFrame con los datos
df_minutos <- data.frame(Minutos_Consumidos = minutos_consumidos)
# Calcular medidas descriptivas
summary_stats <- df_minutos %>%
summarise(
Media = mean(Minutos_Consumidos),
Mediana = median(Minutos_Consumidos),
Moda = as.numeric(names(sort(table(Minutos_Consumidos), decreasing = TRUE)[1])),
Desviacion_Estandar = sd(Minutos_Consumidos),
Minimo = min(Minutos_Consumidos),
Maximo = max(Minutos_Consumidos)
)
# Imprimir estadísticas descriptivas
summary_stats
## Media Mediana Moda Desviacion_Estandar Minimo Maximo
## 1 381.3467 382 358 33.87521 245 463
Media (Promedio): 381.35 minutos. Esto significa que en promedio, cada abonado consumió aproximadamente 381 minutos en el mes.
Mediana: 382 minutos. La mitad de los abonados consumió menos de 382 minutos y la otra mitad más.
Moda: 358 minutos. Este es el número de minutos más frecuentemente consumido por los abonados.
Desviación Estándar: 33.88 minutos. Esto indica cuánto varían los minutos consumidos en comparación con el promedio.
Mínimo y Máximo: Los minutos consumidos varían entre 245 y 463 minutos.
# Crear boxplot
boxplot <- ggplot(df_minutos, aes(y = Minutos_Consumidos)) +
geom_boxplot(fill = "orange", color = "black") +
theme_minimal() +
labs(title = "Diagrama de Caja de Minutos Consumidos", x = "", y = "Minutos Consumidos")
boxplot
# Calcular medidas descriptivas
media <- mean(df_minutos$Minutos_Consumidos)
mediana <- median(df_minutos$Minutos_Consumidos)
moda <- as.numeric(names(sort(table(df_minutos$Minutos_Consumidos), decreasing = TRUE)[1]))
# Crear histograma con líneas para media, mediana y moda
Histograma <- ggplot(df_minutos, aes(x = Minutos_Consumidos)) +
geom_histogram(binwidth = 10, fill = "blue", color = "black") +
geom_vline(xintercept = media, color = "red", linetype = "dashed", size = 1) +
geom_vline(xintercept = mediana, color = "green", linetype = "dashed", size = 1) +
geom_vline(xintercept = moda, color = "yellow", linetype = "dashed", size = 1) +
theme_minimal() +
labs(title = "Histograma de Minutos Consumidos",
x = "Minutos Consumidos",
y = "Frecuencia") +
annotate("text", x = media, y = 5, label = paste("Media:", round(media, 2)), vjust = -1) +
annotate("text", x = mediana, y = 10, label = paste("Mediana:", mediana), vjust = -1) +
annotate("text", x = moda, y = 15, label = paste("Moda:", moda), vjust = -1)
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
Histograma
# Datos del comerciante al menudeo
costos_publicidad <- c(40, 20, 25, 20, 30, 50, 40, 20, 50, 40, 25, 50)
ventas <- c(385, 400, 395, 365, 475, 440, 490, 420, 560, 525, 480, 510)
# Crear un DataFrame con los datos
df_ventas <- data.frame(Costos_Publicidad = costos_publicidad, Ventas = ventas)
# Modelo de regresión lineal
modelo <- lm(Ventas ~ Costos_Publicidad, data = df_ventas)
summary_modelo <- summary(modelo)
# Imprimir el resumen del modelo
print(summary_modelo)
##
## Call:
## lm(formula = Ventas ~ Costos_Publicidad, data = df_ventas)
##
## Residuals:
## Min 1Q Median 3Q Max
## -87.538 -32.700 8.566 39.118 55.774
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 343.706 44.766 7.678 1.68e-05 ***
## Costos_Publicidad 3.221 1.240 2.598 0.0266 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 50.23 on 10 degrees of freedom
## Multiple R-squared: 0.403, Adjusted R-squared: 0.3433
## F-statistic: 6.751 on 1 and 10 DF, p-value: 0.02657
La ecuación de la línea de regresión para predecir las ventas semanales a partir de los gastos en publicidad es:
343.71 + 3.22 × Publicidad Ventas=343.71+3.22×Publicidad
Donde:
El intercepto (343.71) representa las ventas esperadas cuando no hay gasto en publicidad. El coeficiente de la publicidad (3.22) significa que por cada mil dólares adicionales gastados en publicidad, se espera un incremento de aproximadamente 3.22 mil dólares en las ventas.
intervalo_confianza <- confint(modelo, "Costos_Publicidad", level = 0.95)
print(intervalo_confianza)
## 2.5 % 97.5 %
## Costos_Publicidad 0.4587991 5.982825
El intervalo de confianza del 95% para el intercepto (ventas cuando no hay gasto en publicidad) es entre 243.96 y 443.45 mil dólares. Esto indica que estamos bastante seguros de que las ventas, sin gastar en publicidad, estarían en este rango.
p_valor <- summary(modelo)$coefficients[2,4]
print(p_valor)
## [1] 0.0265709
Una prueba para ver si la publicidad influye positivamente en las ventas. El resultado (p-valor = 0.0266) indica que sí hay una influencia positiva significativa de la publicidad en las ventas, ya que este valor es menor que 0.05 (nuestro nivel de significación).
r_cuadrado <- summary(modelo)$r.squared
print(r_cuadrado)
## [1] 0.4030184
El modelo explica aproximadamente el 40.3% de la variabilidad en las ventas semanales. Esto significa que un poco más de la mitad de los cambios en las ventas semanales pueden ser explicados por factores distintos a la publicidad