streaming_ipu$plan <- factor(streaming_ipu$plan)
levels(streaming_ipu$plan)
## [1] "Basic" "Premium" "Standard"
mod1 <- lm(ipu_usd ~ plan, data = streaming_ipu)
summary(mod1)
##
## Call:
## lm(formula = ipu_usd ~ plan, data = streaming_ipu)
##
## 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
dummy <- model.matrix(ipu_usd ~ plan, data = streaming_ipu)
head(cbind(streaming_ipu[, c("plan", "ipu_usd")], as.data.frame(dummy)))
## plan ipu_usd (Intercept) planPremium planStandard
## 1 Standard 17.00 1 0 1
## 2 Premium 22.53 1 1 0
## 3 Premium 18.70 1 1 0
## 4 Standard 21.79 1 0 1
## 5 Basic 16.59 1 0 0
## 6 Standard 17.62 1 0 1
En este primer paso se observa como R maneja la variable categórica plan. El modelo busca explicar las diferencias en el ingreso promedio (IPU) únicamente por el tipo de plan. Además, la matriz de diseño permite ver como R genera internamente las variables dummy que representan cada plan frente a la categoría base. Este análisis inicial sirve para entender la estructura de la base antes de incorporar otras variables.
Intercepto:IPU(8.91): 8.91 es el promedio esperado para un usuario del plan Basic cuando sus horas activas son 0.
Plan Premium (15.75): los usuarios del plan Premium generan en promedio $15.75 más que los del plan Básico.
Plan Estándar (25.70): los usuarios del plan Estándar generan en promedio $25.70 más que los del plan Básico.
Horas (0.71): por cada hora adicional de uso, el IPU aumenta en promedio $0.71.
R² (0.734): el modelo explica aproximadamente el 73.4% de la variabilidad del IPU. Este porcierto indica una relacion fuerte entre las variables.
#Referencia: Basic
streaming_ipu$plan <- relevel(streaming_ipu$plan, ref = "Basic")
levels(streaming_ipu$plan)
## [1] "Basic" "Premium" "Standard"
#Modelo con factor + numérica
mod_mix1 <- lm(ipu_usd ~ plan + horas_activas_mes, data = streaming_ipu)
summary(mod_mix1)
##
## Call:
## lm(formula = ipu_usd ~ plan + horas_activas_mes, data = streaming_ipu)
##
## 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
En este modelo se incluyen tanto las horas activas como el tipo de plan, lo que permite controlar el uso del servicio al comparar los planes. El plan Basic se usa como referencia, por ser el más económico y representar el punto de partida. Los coeficientes de planStandard y planPremium indican cuánto difiere su ingreso promedio del de Basic, manteniendo el mismo número de horas activas. El coeficiente de horas_activas_mes muestra cómo cambia el IPU a medida que los usuarios usan más la plataforma. En conjunto, el modelo describe de forma más completa el comportamiento del ingreso mensual y cómo se relaciona con las dos variables principales.
Intercepto:IPU(23.50): Cuando las horas de uso son 0 el IPU esperado es $23.50.
Horas(0.72): Por cada hora adicional de uso el IPU aumenta $0.72.
R^2(0.445):El modelo explica el 44.5% de la variabilidad de IPU. El modelo indica un ajuste moderado, casi la mitad de la variación del IPU se le atribuye a la horas de uso.
#IPU para usuarios con 60 horas activas al mes para los tres planes
escenarios <- data.frame(
plan = c("Basic", "Standard", "Premium"),
horas_activas_mes = c(60, 60, 60)
)
#Predicciones con IC 90%
pred_90 <- predict(mod_mix1, newdata = escenarios, interval = "confidence", level = 0.90)
cbind(escenarios, round(pred_90, 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
El resultado muestra el IPU esperado para cada plan cuando los usuarios registran 60 horas activas mensuales: Basic = $15.32(IC90%: 14.59–16.04), Standard = $18.59(IC90%: 18.03–19.14), Premium $17.35(IC90%: 16,60–18,10).Estos valores permiten comparar los planes en igualdad de condiciones y analizar si los ingresos siguen las expectativas de la gerencia. La hipótesis de la gerencia se prueba correcta, Standar genera el mayor ingreso, luego Premium y le sigue Basic.
En este análisis podemos ver como las horas activas al mes son el factor principal del ingreso de la plataforma de streaming. Esta muestra un efecto positivo ya que por cada hora adicional de uso el IPU aumenta un promedio de $0.17. El tipo de plan también tiene un efecto significativo, especialmente el plan Standard que genera alrededor de $3.27 más que el Basic y el Premium que genera $2.04 más. Cuando controlamos el número de horas el Standard tiene más ingreso mensual por usuario. Lo que quiere decir que aunque controlemos el número de horas el plan standard es el que más le provee ingreso a la empresa. La empresa debería revisar la estrategia de precios o promociones del plan Premium, para aumentar el ingreso por usuario de este plan. El plan Standard es el que genera más IPU de los tres, convirtiéndose en el más rentable y equilibrado.