Cargamos los datos y observamos el nivel de referencia.

datos = read.csv("streaming_ipu.csv")
datos$plan <- factor(datos$plan)
levels(datos$plan)
## [1] "Basic"    "Premium"  "Standard"

En este caso, se estará utilizando como nivel de referencia el plan Básico, ya que cuando trabajamos con variables ordinales, usualmente queremos utilizar la categoría más baja como punto de partida natural.

A través de este método podremos contestar la pregunta que nos hace la gerencia: ¿Los descuentos y promociones del plan Premium reducen nuestro ingreso neto promedio, en comparación con el plan Standard?

Ajustamos el 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)        5.31963    0.75896   7.009 1.63e-11 ***
## planPremium        2.03619    0.74489   2.734  0.00664 ** 
## planStandard       3.26961    0.50047   6.533 2.81e-10 ***
## 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

Intercepto: +5.32 - Representa el ingreso base mensual por usuario para la categoría de referencia “Basic”, cuando las horas activas al mes toman el valor 0.

Premium: +2.04 y Standard: +3.26 - Representan las diferencias promedio frente a la categoría Basic, una vez ajustadas por las horas activas al mes. Basándonos en esto, los clientes Standard generan en promedio 1.23 unidades más que los clientes Premium.

Horas Activas al Mes: +0.17 - El ingreso mensual aumenta aproximadamente 0.17 unidades por cada hora activa al mes.

Todos los resultados fueron estadísticamente significativos (\(p < \alpha\)).

Adicionalmente, observamos que el \(R^2\) ajustado nos da un valor de 0.55, lo cual nos muestra que, aunque el modelo brinda una buena capacidad para explicar la variabilidad del IPU, se podrían realizar ajustes en las variables explicativas para aumentar el poder predictivo.

Corremos modelos para las horas activas al mes y para el tipo de plan.

modelo_horas <- lm(ipu_usd ~ horas_activas_mes, data=datos)
summary(modelo_horas)
## 
## Call:
## lm(formula = ipu_usd ~ horas_activas_mes, data = datos)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -9.9382 -2.2462 -0.0285  2.3196 11.7016 
## 
## Coefficients:
##                   Estimate Std. Error t value Pr(>|t|)    
## (Intercept)        5.19943    0.68167   7.627 3.24e-13 ***
## horas_activas_mes  0.19998    0.01184  16.892  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.592 on 298 degrees of freedom
## Multiple R-squared:  0.4892, Adjusted R-squared:  0.4874 
## F-statistic: 285.4 on 1 and 298 DF,  p-value: < 2.2e-16
modelo_plan <- lm(ipu_usd ~ plan, data=datos)
summary(modelo_plan)
## 
## Call:
## lm(formula = ipu_usd ~ plan, data = datos)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -12.0139  -2.4207  -0.1239   2.4786  11.1861 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   12.2332     0.3634   33.66   <2e-16 ***
## planPremium    7.6031     0.5724   13.28   <2e-16 ***
## planStandard   5.4608     0.5198   10.51   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.88 on 297 degrees of freedom
## Multiple R-squared:  0.4059, Adjusted R-squared:  0.4019 
## F-statistic: 101.5 on 2 and 297 DF,  p-value: < 2.2e-16

Ahora calculamos IPU esperado para usuarios con 60 horas activas al mes para los tres planes.

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

Con una confianza del 90%, podemos decir que aquellos clientes que le dedican 60 horas activas al mes y se encuentran en el plan Standard, generarían entre 18.03 y 19.14 de ingreso mensual, en comparación con aquellos en el plan Premium que se encuentran en un rango de 16.60 a 18.10.

¿Qué factores influyen más en el ingreso promedio de los usuarios?

Según el resultado de nuestros modelos, el factor más influyente en la determinación del ingreso promedio de los usuarios es la cantidad de horas activas al mes.

El modelo de horas nos presenta un \(R^2\) de aproximadamente 48.9%, frente al modelo de plan que nos muestra un \(R^2\) de aproximadamente 40.6%.

¿Se mantiene el efecto del tipo de plan al controlar por horas de uso?

Sí. Al controlar las horas de uso, observamos que el efecto del tipo de plan se mantiene. Aquellos clientes pertenecientes al plan Standard generan a la firma una mayor cantidad de ingresos que los demás planes.

¿Qué implicaciones tienen los resultados para la estrategia de precios o promociones de la empresa?

Estos resultados deberían ser considerados a la hora de debatir la idea de si los descuentos y promociones frecuentes en el plan Premium reducen su ingreso neto en comparación con el plan Standard, una vez controlado su tiempo de uso.

Sin embargo, entiendo que un cambio no debería ocurrir inmediatamente, ya que hay unas variables importantes que no podemos responder por la falta de datos, tales como:

¿Cuál es la tasa de retención de los clientes Premium versus los clientes Standard y cómo la frecuencia de descuentos y promociones aumenta o disminuye esa tasa?

Esta pregunta es importante porque, si observamos que la diferencia en la retención de clientes entre los planes es amplia, podríamos concluir que tal vez los descuentos y promociones, con su frecuencia actual, nos resultan rentables.