#Cargamos los datos históricos de las ventas iniciales del teléfono celular, está dado en millones de unidades (del tercer trimestre de 2014 al primer trimestre del 2020).

Ventas<-c(0.2943,1.21971,2.52335,1.94347,4.05153,7.51228,4.76657,4.13437,5.76392,8.00823,9.52333,10.62968,10.89782,15.41478,16.93315,21.41523,22.16842,18.60957,29.47796,38.21976,26.62652,29.34171,51.43601)

#Construimos la serie de tiempo de los históricos de la venta de los teléfonos celulares.

Ventas=ts(Ventas,start=c(2014,3),freq=4)
Ventas
##          Qtr1     Qtr2     Qtr3     Qtr4
## 2014                    0.29430  1.21971
## 2015  2.52335  1.94347  4.05153  7.51228
## 2016  4.76657  4.13437  5.76392  8.00823
## 2017  9.52333 10.62968 10.89782 15.41478
## 2018 16.93315 21.41523 22.16842 18.60957
## 2019 29.47796 38.21976 26.62652 29.34171
## 2020 51.43601

#Resultado:

#Graficamos la serie de tiempo histórica.

plot(Ventas,type="l",lty=2, col="red", ylab="", xlab="")
points(Ventas,pch=20, col="blue")
title("Ventas trimestrales del teléfono celular (millones)")

#Graficamos las ventas acumuladas de la serie de tiempo de la venta de teléfonos celulares.

Y=cumsum(Ventas)
Y=ts(Y,start=c(2014,3),freq=4)
plot(Y,type="l", lty=2, col="red", ylab="",xlab="")
points(Y,pch=20,col="blue")
title("Ventas acumuladas del teléfono celular (millones)")

#Construimos el modelo de Bass y calculamos m, p y q.

Y=c(0,Y[1:(length(Y)-1)])
Ysq=Y**2
out=lm(Ventas~Y+Ysq)
summary(out)
## 
## Call:
## lm(formula = Ventas ~ Y + Ysq)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -9.1789 -1.1306  0.3516  1.4683  9.6525 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  2.358e+00  1.577e+00   1.495 0.150421    
## Y            1.640e-01  3.638e-02   4.508 0.000215 ***
## Ysq         -9.608e-05  1.365e-04  -0.704 0.489611    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4.427 on 20 degrees of freedom
## Multiple R-squared:  0.8984, Adjusted R-squared:  0.8882 
## F-statistic:  88.4 on 2 and 20 DF,  p-value: 1.175e-10
a=out$coef[1]
b=out$coef[2]
c=out$coef[3]
mplus=(-b+sqrt(b**2-4*a*c))/(2*c)
mminus=(-b-sqrt(b**2-4*a*c))/(2*c)
m=mminus
p=1/m
q=b+p

#Desplegamos en el Scrip (Cuadran I de R) los valores calculados de m, p y q. #m=1721.235 #p=0.0005809781 #q=0.1645916

m
##        Y 
## 1721.235
p
##            Y 
## 0.0005809781
q
##         Y 
## 0.1645916

#Calculamos el modelo de Bass

bassModel=function(p,q,m,T=65)
{
  S=double(T)
  Y=double(T+1)
  Y[1]=0
  for(t in 1:T)
  {
    S[t]=p*m+(q-p)*Y[t]-(q/m)*Y[t]**2
  Y[t+1]=Y[t]+S[t]
  }
  return(list(sales=S,cumSales=cumsum(S)))
}
Spred=bassModel(p,q,m,T=23)$sales
Spred=ts(Spred,start=c(2014,3),freq=4)

#Graficamos el comparativo de la serie histórica de ventas vs. la proyección estimada con el modelo de Bass.

ts.plot(Ventas,Spred,col=c("blue","red"))
legend("topleft", legend=c("Ventas históricas", "Proyección con modelo de Bass"),fill=c("blue","red"))

#Calculamos y graficamos la proyección del modelo de Bass hasta el año 2030 de manera trimestral. Se observa que a largo plazo este dispositivo móvil alcanzará su madurez de venta -ceteris paribus- en 2028-2030, información relevante para la estrategia de la compañía y toma de decisiones.

Spred=bassModel(p,q,m)$sales
CumSpred=ts(cumsum(Spred),start=c(2014,3),freq=4)
CumVentas=ts(cumsum(Ventas),start=c(2014,3),freq=4)
ts.plot(CumVentas,CumSpred,col=c("blue","red"))
legend("topleft", legend=c("Ventas históricas", "Proyección con modelo de Bass"),fill=c("blue","red"))
title("Proyección de ventas acumuladas del teléfono celular ")

Elaboración propia con guía de UCLA Anderson School of Management. Sales Forecasting 2013.