Observaciones:
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)
})
MISSING
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:
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)