Se cargó la base de datos en un documento CSV.

datos <- read.csv("streaming_ipu.csv", header = T)

1. Modelo de regresión lineal

Se decidió utilizar la categoría Standard como referencia. Esto es porque la gerencia quiere investigar a los que tienen el plan Premium con los del Standard por sus diferencias en IPU. Al usar Standard como la referencia, nos da una respuesta más directa sobre si el IPU de Premium es mayor o menor al de Standard, siendo ajustado por las horas.

# Referencia
datos$plan <- relevel(as.factor(datos$plan), ref = "Standard")

# Ajuste de modelo
modelo <- lm(ipu_usd ~ plan + horas_activas_mes, data=datos)
summary(modelo)
## 
## Call:
## lm(formula = ipu_usd ~ plan + horas_activas_mes, data = datos)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -8.1927 -2.0258  0.0218  2.1624 10.2951 
## 
## Coefficients:
##                   Estimate Std. Error t value Pr(>|t|)    
## (Intercept)        8.58924    0.96481   8.903  < 2e-16 ***
## planBasic         -3.26961    0.50047  -6.533 2.81e-10 ***
## planPremium       -1.23342    0.60320  -2.045   0.0418 *  
## horas_activas_mes  0.16660    0.01664  10.010  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.36 on 296 degrees of freedom
## Multiple R-squared:  0.5561, Adjusted R-squared:  0.5516 
## F-statistic: 123.6 on 3 and 296 DF,  p-value: < 2.2e-16

2. Interpretación del modelo

3. Predicciones y Comparaciones

Se creó un data frame para calcular el IPU esperado de usuarios con 60 horas activas al mes por cada plan. Las predicciones se hicieron con un intervalo de confianza de 90%.

# Creación de data frame
usuarios_60 <- data.frame(plan = c("Basic", "Standard", "Premium"), 
                          horas_activas_mes = 60)
# Predicciones
pred <- predict(modelo, usuarios_60 , interval = "confidence", level=0.90)
cbind(usuarios_60, round(pred, 2))
##       plan horas_activas_mes   fit   lwr   upr
## 1    Basic                60 15.32 14.59 16.04
## 2 Standard                60 18.59 18.03 19.14
## 3  Premium                60 17.35 16.60 18.10

Gráfico

library(plotly)

pred_df <- cbind(usuarios_60, round(pred, 2))

# Calcular barras de error (IC90%)
err_up   <- pred_df$upr - pred_df$fit
err_down <- pred_df$fit - pred_df$lwr

# Gráfico 3D
plot_ly(pred_df, x = ~horas_activas_mes, y = ~plan, z = ~fit, 
        color = ~plan, colors = "Set1",
        type = "scatter3d", mode = "lines+markers",
        marker = list(size = 5),
        line = list(width = 3),
         error_z = list(array = err_up, arrayminus = err_down, visible = TRUE)) %>%
  layout(
    scene = list(
      xaxis = list(title = "Horas activas al mes"),
      yaxis = list(title = "Plan"),
      zaxis = list(title = "IPU estimado (IC90%)")
    ),
    legend = list(title = list(text = "Plan")))

Cuando evaluamos 60 horas activas al mes:

Se puede decir con estos resultados que la gerencia de la empresa tiene razón en cuanto a los descuentos y promociones. A pesar de que tenemos que los usuarios del plan Premium son los que más horas consumen, no son los que mayor ingreso aportan. Entre las comparaciones, queda claro que el tipo de suscripción determina significativamente el ingreso mensual y no solamente se trata de cuántas horas utilizó el servicio.

4. Conclusión

Los factores que más influyen en el ingreso promedio de los usuarios son las horas activas al mes, aunque también se debe tener un cuenta que los descuentos de algunos planes reducen el beneficio neto de las horas activas al mes. En resumen, según el coeficiente de 0.1666, podemos decir que, por cada hora activa al mes, el ingreso aumenta unos 17 centavos manteniendo fijo el plan.

El efecto del plan no desaparece al controlar por horas de uso. Según los resultados, el efecto se mantiene significativo. Podemos decir que hay una diferencia de ingreso según el plan que se selecciona. Podemos ir todavía más allá con el análisis y decir que los precios y descuentos que ofrece la empresa son exitosos para generar ingresos.

La empresa debe revisar la política de descuentos para el plan Premium para no reducir tanto el ingreso neto a causa de ellos. Otra sugerencia que pudieran considerar, sería el ajuste de las tarifas del plan Premium; esto brindaría un balance entre el ingreso neto que la empresa busca, y lo que atrae a los clientes a comprar ese plan. Por otro lado, la empresa debe considerar mercadear mejor el plan Standard, ya que es el más rentable por horas de uso. Igualmente, pueden investigar la posibilidad de convencer a los usuarios de otros planes a cambiarse al Standard. Por último, en cuanto al plan Basic, considerando que es el que menos ingreso neto aporta a la compañía, puede ser bueno contar con esta opción para los clientes que no pueden pagar el plan Standard o Premium.