Las discretizaciones sirven para trasnformar una variable continua en una discreta. En este caso me interesa comparar si los precios estuvieron por encima o por debajo de otro valor.
Utilizo el dataset que tenia las medias entre periodos y aún no había eliminado las mediciones originales
# Renombro las columnas de las mediciones
preciosdiscretos <- dfremplazo %>% rename("m1" ="1", "m2"="2", "m3"="3", "m4"="4","m5"="5","m6"="6","m7"="7","m8"="8","m9"="9","m10"="10")
colnames(preciosdiscretos)
[1] "producto" "nombre" "Categoria"
[4] "marca" "presentacion" "sucursal"
[7] "sucursalTipo" "banderaDescripcion" "comercioRazonSocial"
[10] "direccion" "barrio" "m1"
[13] "m2" "m3" "m4"
[16] "m5" "m6" "m7"
[19] "m8" "m9" "m10"
[22] "periodo1" "periodo2" "periodo3"
[25] "periodo4" "promedio"
Variacion intra periodo: definido en funcion de cada mes
Calculo la variación de datos intra periodo de todos los productos.
# Variaciones intra periodo y total
preciosdiscretos = (
preciosdiscretos %>%
dplyr::mutate(variacion1 = (m3-m1)/m1, variacion2 = (m5-m4)/m4, variacion3 = (m7-m6)/m6, variacion4 = (m10-m8)/m8, variacionT = (m10-m1)/m1)
)
Para tener un valor comparable de precios por producto en distintas sucursales
preciosdiscretos = (
preciosdiscretos %>%
group_by(producto, nombre) %>%
dplyr::mutate(media_prod1 = mean(periodo1), media_prod2 = mean(periodo2), media_prod3 = mean(periodo3), media_prod4 = mean(periodo4), media_prodT = mean(promedio))
)
El precio relativo se calcula con la formula:
\(Precio_r = (Psucursal - P_mproducto)/P_mproducto)\)
preciosdiscretos = (
preciosdiscretos %>%
group_by(sucursal, producto) %>%
dplyr::mutate(precio_rel1 = (periodo1-media_prod1)/periodo1, precio_rel2 = (periodo2-media_prod2)/periodo2, precio_rel3 = (periodo3-media_prod3)/periodo3, precio_rel4 = (periodo4-media_prod4)/periodo4, precio_rel_medio = (promedio-media_prodT)/promedio)
)
barrio <- read.csv("./files/Datasets adicionales/barrios.csv")
inflacion <- read.csv("./files/Datasets adicionales/inflacion.csv")
precio_metros2 <- read.csv("./files/barrios/precio_metro.csv")
Agregamos precio por metro cuadrado del barrio
# Agregamos el precio por metro cuadrado
preciosdiscretos = inner_join(preciosdiscretos, precio_metros2[1:2], by = c("barrio" = "BARRIO"))
# Renombramos la columna PRECIO
preciosdiscretos = (preciosdiscretos %>% rename(precio_m2 = PRECIO))
Agregamos una columna de “canasta”
# Armamos canasta de alimentos
target_rec = c("Agua","Infusiones","Leche", "Leche en polvo", "Arroz","Harinas","Verduras congeladas")
target_mod = c("Conservas","Quesos","Pastas","Yogur","Aceite", "Aceite de oliva", "Manteca","Endulzantes")
target_evi = c("Bebidas sin alcohol", "Bebidas deportivas", "Jugos en polvo", "Carnes congeladas", "Otros congelados", "Cereales azucarados", "Panificados","Salsas")
# Agregamos la columna "canasta"
preciosdiscretos = mutate(preciosdiscretos, canasta = ifelse(Categoria %in% target_rec, "recomendado",
ifelse(Categoria %in% target_mod, "moderado",
ifelse(Categoria %in% target_evi, "evitar", NA))))
¿Debajo o encima de la inflación?
# Agregamos columnas de inflación
preciosdiscretos = mutate(preciosdiscretos, inflacion1 =
ifelse(variacion1 < 0.034, "debajo de inflación", "encima de inflación"))
preciosdiscretos = mutate(preciosdiscretos, inflacion2 =
ifelse(variacion2 < 0.017, "debajo de inflación", "encima de inflación"))
preciosdiscretos = mutate(preciosdiscretos, inflacion3 =
ifelse(variacion3 < 0.034, "debajo de inflación", "encima de inflación"))
preciosdiscretos = mutate(preciosdiscretos, inflacion4 =
ifelse(variacion4 < 0.057, "debajo de inflación", "encima de inflación"))
preciosdiscretos = mutate(preciosdiscretos, inflacionT =
ifelse(variacionT < 0.149, "debajo de inflación", "encima de inflación"))
Funcion discretize
discretize(x, method=“interval”, categories = 3, labels = , ordered=FALSE, onlycuts=FALSE, …)
Metodos
library(arules)
#Hago una copia del dataframe para hacerle modificiones
df_disc <- preciosdiscretos
Creo intervalos para la variacion
# Variación
intervalos = c(-Inf, -0.05, -0.02, -0.005, 0.005, 0.05, 0.1, Inf)
etiquetas = c("disminucion fuerte", "disminucion media", "disminucion leve", "mantiene", "aumento leve", "aumento medio", "aumento fuerte")
df_disc$variacion1 = discretize(df_disc$variacion1, method = "fixed", breaks = intervalos, labels = etiquetas)
df_disc$variacion2 = discretize(df_disc$variacion2, method = "fixed", breaks = intervalos, labels = etiquetas)
df_disc$variacion3 = discretize(df_disc$variacion3, method = "fixed", breaks = intervalos, labels = etiquetas)
df_disc$variacion4 = discretize(df_disc$variacion4, method = "fixed", breaks = intervalos, labels = etiquetas)
df_disc$variacionT = discretize(df_disc$variacionT, method = "fixed", breaks = intervalos, labels = etiquetas)
Intervalos para el precio relativo
# Precio
intervalos1 = c(-Inf, -0.1, -0.05, -0.01, 0.01, 0.05, 0.1, Inf)
etiquetas1 = c("muy barato", "medianamente barato", "levemente barato", "medio", "levemente caro", "medianamente caro", "muy caro")
df_disc$precio_rel1 = discretize(df_disc$precio_rel1, method = "fixed", breaks = intervalos1, labels = etiquetas1)
df_disc$precio_rel2 = discretize(df_disc$precio_rel2, method = "fixed", breaks = intervalos1, labels = etiquetas1)
df_disc$precio_rel3 = discretize(df_disc$precio_rel3, method = "fixed", breaks = intervalos1, labels = etiquetas1)
df_disc$precio_rel4 = discretize(df_disc$precio_rel4, method = "fixed", breaks = intervalos1, labels = etiquetas1)
df_disc$precio_rel_medio = discretize(df_disc$precio_rel_medio, method = "fixed", breaks = intervalos1, labels = etiquetas1)
Intervalos para el valor del m2
# Preio m2
intervalos2 = c(-Inf, 1000, 2000, 4000, 5000, 6000, Inf)
etiquetas2 = c("barato", "medianamente barato", "medio", "medianamente caro", "caro", "muy caro")
df_disc$precio_m2 = discretize(df_disc$precio_m2, method = "fixed", breaks = intervalos2, labels = etiquetas2)
# Nos quedamos sólo con las variables discretas
df = select(df_disc,-c(12:26,32:36))
glimpse(df)
Observations: 162,630
Variables: 28
Groups: sucursal, producto [162,630]
$ producto [3m[38;5;246m<chr>[39m[23m "7790762052364", "12-1-2800000937881"...
$ nombre [3m[38;5;246m<fct>[39m[23m Vino Rosado Seleccion Especial Santa ...
$ Categoria [3m[38;5;246m<fct>[39m[23m Bebidas con alcohol, Conservas, Bebid...
$ marca [3m[38;5;246m<fct>[39m[23m SANTA ANA, COTO, NIETO SANETINER, BOD...
$ presentacion [3m[38;5;246m<fct>[39m[23m 700.0 ml, 81.0 gr, 750.0 cc, 750.0 ml...
$ sucursal [3m[38;5;246m<chr>[39m[23m "12-1-44", "12-1-44", "12-1-44", "12-...
$ sucursalTipo [3m[38;5;246m<fct>[39m[23m Supermercado, Supermercado, Supermerc...
$ banderaDescripcion [3m[38;5;246m<fct>[39m[23m COTO CICSA, COTO CICSA, COTO CICSA, C...
$ comercioRazonSocial [3m[38;5;246m<fct>[39m[23m Coto Centro Integral de Comercializac...
$ direccion [3m[38;5;246m<fct>[39m[23m Av. Monroe 3284, Av. Monroe 3284, Av....
$ barrio [3m[38;5;246m<chr>[39m[23m "COGHLAN", "COGHLAN", "COGHLAN", "COG...
$ variacion1 [3m[38;5;246m<fct>[39m[23m mantiene, mantiene, mantiene, mantien...
$ variacion2 [3m[38;5;246m<fct>[39m[23m mantiene, mantiene, mantiene, mantien...
$ variacion3 [3m[38;5;246m<fct>[39m[23m mantiene, aumento leve, mantiene, man...
$ variacion4 [3m[38;5;246m<fct>[39m[23m mantiene, mantiene, mantiene, mantien...
$ variacionT [3m[38;5;246m<fct>[39m[23m mantiene, aumento leve, mantiene, aum...
$ precio_rel1 [3m[38;5;246m<fct>[39m[23m NA, medio, medianamente caro, NA, med...
$ precio_rel2 [3m[38;5;246m<fct>[39m[23m NA, medio, medianamente caro, medio, ...
$ precio_rel3 [3m[38;5;246m<fct>[39m[23m NA, medio, NA, levemente caro, medio,...
$ precio_rel4 [3m[38;5;246m<fct>[39m[23m NA, medio, NA, medio, medio, NA, NA, ...
$ precio_rel_medio [3m[38;5;246m<fct>[39m[23m levemente caro, medio, medianamente c...
$ precio_m2 [3m[38;5;246m<fct>[39m[23m medio, medio, medio, medio, medio, me...
$ canasta [3m[38;5;246m<chr>[39m[23m NA, "moderado", NA, NA, "evitar", "mo...
$ inflacion1 [3m[38;5;246m<chr>[39m[23m "debajo de inflación", "debajo de inf...
$ inflacion2 [3m[38;5;246m<chr>[39m[23m "debajo de inflación", "debajo de inf...
$ inflacion3 [3m[38;5;246m<chr>[39m[23m "debajo de inflación", "encima de inf...
$ inflacion4 [3m[38;5;246m<chr>[39m[23m "debajo de inflación", "debajo de inf...
$ inflacionT [3m[38;5;246m<chr>[39m[23m "debajo de inflación", "debajo de inf...
Quiero un histograma con los productos que aumentaron menos que la inflación para recoleta, separado por Canasta
bajo <- df %>% filter(inflacionT=="debajo de inflación", barrio=="RECOLETA")
ggplot(bajo, aes(x = sucursalTipo, y = stat(count), fill = canasta)) +
geom_bar(position = "dodge") +
labs(y = "Count",
fill = "Canasta",
x = "Tipo de sucursal",
title = 'Cant. Productos')+
theme_grey()
Quiero un mapa donde cada punto represente aumento del precio relativo, por barrio, separado en las cuatro cadenas mas grandes y en donde pueda ver el valor de los metros cuadrados por barrio
Mapa