knitr::opts_chunk$set( fig.width=9, fig.height=4, fig.retina=3, out.width = "100%", echo = F, message = FALSE, warning = FALSE)
library(tidyverse) bd <- readxl::read_excel("Reporte Philip Morris - Diciembre 2021.xlsx") bd <- as_tibble(bd) source("R/informacion.R", encoding = "UTF-8")
En el periodo entre el r format(inicio_periodo, "%d de %B")
y el r format(fin_periodo, "%d de %B del %Y")
hubo un total de r total_notas
notas en r total_medios
medios distintos. La mayoría de estas notas fueron r tiponota_max
con un r scales::percent(tiponota_max_per)
del total de notas.
La mayoría de las notas publicadas en este periodo son neutras con un porcentaje de r scales::percent(pp_neutro)
. Asimismo, el r scales::percent(pp_positivo)
de las notas son positivas y el r scales::percent(pp_negativo)
son negativas.
En promedio, al dia fueron publicadas r scales::comma(promedio_notas_dia)
notas.
datos <- bd %>% count(Fecha) %>% # Forzar que las fechas sin publicaciones se contabilicen con un 0 complete(Fecha=seq(inicio_periodo, fin_periodo, by= "1 day"), fill=list(n=0)) # Hacer análisis de la tabla de contingencia. g <- bd %>% count(Fecha, Calificación) %>% complete(Fecha=seq(inicio_periodo, fin_periodo, by= "1 day"), Calificación=c("Positivo","Negativo","Neutro"), fill=list(n=0)) %>% mutate(Calificación=forcats::fct_relevel(Calificación, levels=c("Neutro", "Positivo", "Negativo"))) %>% ggplot()+ geom_area(aes(x=Fecha, y=n, fill=Calificación), stat="identity", alpha=.8) + geom_path(data=datos, aes(x=Fecha, y=n), color="#177E89")+ scale_fill_manual(values=c("Negativo"="#FF6464", "Neutro"="#EDD958", "Positivo"="#91C483"))+ geom_hline(yintercept = 0) + geom_vline(xintercept = inicio_periodo)+ theme(panel.background = element_blank(), panel.grid.major.x = element_blank(), panel.grid.minor.x = element_blank())
library(EnvStats) detectar_eventos_informativos <- function(frecuencia_diaria){ # Detectar eventos sospechosos cuartiles <- quantile(frecuencia_diaria$n, prob=seq(0, 1, .25)) rango_intercuartilico <- cuartiles[3]-cuartiles[1] sospechosos <- frecuencia_diaria %>% filter(n<cuartiles[1]-1.5*rango_intercuartilico | n>cuartiles[3]+1.5*rango_intercuartilico) # Realizar prueba de outlier para esos eventos test <- rosnerTest(frecuencia_diaria$n, k = nrow(sospechosos) ) # Detectar los días críticos sospechosos <- left_join(frecuencia_diaria, test$all.stats %>% select(n=Value, Outlier)) # Agrupar días en eventos #Recomiendo ver eventos <- sospechosos %>% filter(Outlier) %>% mutate(evento=Fecha-lag(Fecha)>1, evento=cumsum(ifelse(is.na(evento), 0, evento))+1) # Resumir info por evento eventos <- eventos %>% group_by(evento) %>% summarise(Inicio=min(Fecha), Fin=max(Fecha), n=sum(n)) return(eventos) } eventos <- detectar_eventos_informativos(datos) g_eventos <- g + geom_text(data=eventos,aes(x=Inicio, y=n, label=evento))
En este periodo ocurrieron los siguientes eventos informativos:
kableExtra::kbl(eventos) %>% kableExtra::kable_styling(bootstrap_options = "striped", full_width = F, position = "center")
g_eventos
La siguiente gráfica muestra el porcentaje de notas por cada tipo de medio en el que fueron publicadas.
g_tipomedio
La siguiente gráfica muestra el número de notas en cada tipo de medio según su calificación.
g_calificacion_tipomedio
kableExtra::kbl(tbl_mayor_impacto) %>% kableExtra::kable_styling(bootstrap_options = "striped", full_width = F, position = "center")
kableExtra::kbl(tbl_mas_positivo) %>% kableExtra::kable_styling(bootstrap_options = "striped", full_width = F, position = "center")
kableExtra::kbl(tbl_mas_negativo) %>% kableExtra::kable_styling(bootstrap_options = "striped", full_width = F, position = "center")
kableExtra::kbl(tbl_tmedio_cal_imp) %>% kableExtra::kable_styling(bootstrap_options = "striped", full_width = F, position = "center")
kableExtra::kbl(tbl_mayor_costo) %>% kableExtra::kable_styling(bootstrap_options = "striped", full_width = F, position = "center")
g_impacto_costo
kableExtra::kbl(tbl_tmedio_cal_costo) %>% kableExtra::kable_styling(bootstrap_options = "striped", full_width = F, position = "center")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.