1 Estudio Preliminar

1.1 Numero de operaciones y facturacion por tipo de clientes.

Observaciones:

  1. Casi el 50% de los registros no contiene información relativa al tipo de server asociado al cliente
  2. En aquellos casos donde la información esta presente, solo se tiene información sobre el tipo de server actual de un cliente.
  3. La información faltante podria extraerse de otros campos
  4. Se consideran las operaciones asociadas a un server_id

Entonces es importante recordar que los resultados de este estudio preliminar son parciales y no incluyen a todos los clientes.

Nota: Los outliers fueron removidos de los graficos.

info_by_server_type=invoice_data %>% 
  group_by(server_number_of_clients,server_id) %>% 
  summarise(total_operation_count=n(),invoice_total=sum(invoice_item_amount),operation_mean=mean(invoice_item_amount),operation_sd=sd(invoice_item_amount)) %>%
  filter(! is.na(server_number_of_clients ))

bwplot(invoice_total~factor(server_number_of_clients),data=info_by_server_type,
       main="Distribución del monto total de facturacion por tipo de clientes",do.out = F, ylab='monto total de facturacion', xlab='tipo de server', scales=list(x=list(rot='45')),
        panel = function(x, y, ...) {
    panel.bwplot(x, y, ...)
    nn <- table(x)
    panel.text(nn, x = seq_along(nn),
               y = current.panel.limits()$y[1], pos = 3,cex=0.5)
  })

info_by_server_type_percent=info_by_server_type %>% 
  group_by(server_number_of_clients) %>% 
  summarise(server_type_invoice_total=sum(invoice_total)) %>%  
  mutate(percent=(server_type_invoice_total/sum(server_type_invoice_total))*100)
barchart(percent~factor(server_number_of_clients),data=info_by_server_type_percent,xlab='tipo de server',ylab='porcentaje de facturacion total',main="Distribución de la facturacion total por tipo de cliente",scales=list(x=list(rot='45')),)

operations_by_client_by_server_type=invoice_data %>%
  group_by(server_number_of_clients,server_id) %>% 
  summarise(n_operations_by_client=n_distinct(invoice_id)) %>%
   filter(! is.na(server_number_of_clients ))

bwplot(n_operations_by_client~factor(server_number_of_clients),data=operations_by_client_by_server_type,main="Distribución del numero total de operaciones por tipo de clientes",do.out = F, xlab='tipo de server', ylab='numero de operaciones por cliente',scales=list(x=list(rot='45')),
    panel = function(x, y, ...) {
    panel.bwplot(x, y, ...)
    nn <- table(x)
    panel.text(nn, x = seq_along(nn),
               y = current.panel.limits()$y[1], pos = 3,cex=0.5)
  })

1.2 Conclusiones

MISSING

2 Analisis sobre todos clientes

Se presenta información de los clientes de manera individual, sin tener en cuenta el tipo de licencia que poseen. Se han calculado los siguientes atributos:

  1. Tiempo transcurrido desde la primera la primera operacion hasta la ultima. Se calcula como la diferencia entre la ultima y la primera facturacion
  2. Monto total de facturacion
  3. Numero total de operaciones realizadas
  4. Numero de veces que se realización un aumento o renovacion de licencia (increase|renew server)

2.1 Numero de operaciones y tiempo transcurrido desde el inicio de operaciones para cada cliente

El siguiente grafico muestra la relación entre el tiempo transcurrido en la empresa y el monto total de facturación por cada cliente. Cada punto representa un cliente. Ademas, el color indica el numero de operaciones realizadas y el tamaño, la cantidad de veces que un cliente incremento o renovo la licencia. Finalmente, la recta de color cyan, muestra la tendencia observada.

number_of_increases=invoice_data %>% filter(invoice_item_kind=='increase'& invoice_item_article=='server' | invoice_item_kind=='renew'& invoice_item_article=='server' ) %>% 
  group_by(client_id) %>% 
  summarise(increase_or_renew=n())
  
# Extrayendo informacion de facturacion por cliente
client_invoice_amount= invoice_data %>% group_by(client_id) %>% 
  summarise(total_invoice_amount=sum(invoice_item_amount)/1000)

# Extrayendo informacion personal del cliente
client_personal_info = invoice_data  %>% 
  select(client_id,client_name,client_company_name,client_country_name,client_geo_provice) %>% 
  distinct()

client_info=inner_join(client_info_operations,client_info_elapsed_time,by="client_id") %>% 
  inner_join(number_of_increases,by="client_id") %>%
inner_join(client_invoice_amount,by="client_id")  %>% 
  inner_join(client_personal_info,by="client_id")  

gg=ggplot(client_info,aes(x=elapsed_time,y=total_invoice_amount))+
  geom_jitter(aes(colour=total_operation_count_per_client,size=increase_or_renew, text = paste0("client_name:", client_name)),alpha=0.8)+
  scale_x_continuous('Tiempo de permanencia en la empresa [meses]', expand=c(0.01,0.3 ) )+ylab("monto total de facturacion [Ku$S]")+
  labs(colour = 'numero de operaciones', size = 'numero de renovaciones y upgrades (increase|renew)')+
  scale_color_gradient2(low = "cyan", mid='blue',high = "red")+
  ggtitle("Información por cliente (sin considerar tipo de server)")+  
  theme(plot.title = element_text(lineheight=3.5, face="bold"))+
  scale_size(range = c(1, 10))+
  geom_smooth(aes(x=elapsed_time,y=total_invoice_amount),method='lm',colour='skyblue',se = F)
#  facet_wrap(~client_country_name)
ggplotly(gg,layerData=1)
020406005101520
Información por cliente (sin considerar tipo de server) Tiempo de permanencia en la empresa [meses]monto total de facturacion [Ku$S]204060numero de operaciones