Codigo
library(readr)
library(dplyr)
library(tidyr)
library(stringr)
library(ggplot2)
url <- "https://docs.google.com/spreadsheets/d/e/2PACX-1vQgvFxytN5X9ThquAMpNGY7B3_kIQZY3o1nmq9OJSh0dToodBnsdgl6tpnvumGbd3I3eEy_t29ier36/pub?output=csv"
df <- read_csv(url, show_col_types = FALSE)
df_long <- df %>%
pivot_longer(
cols = 4:9, # <- tus preguntas de cantidad por precio
names_to = "pregunta",
values_to = "cantidad_raw"
) %>%
mutate(
# saca el número del precio desde el texto de la columna
precio = as.numeric(str_extract(pregunta, "\\d+")),
cantidad = parse_number(as.character(cantidad_raw), locale = locale(decimal_mark = ",", grouping_mark = "."))
) %>%
filter(!is.na(precio), !is.na(cantidad))
Revisión rápida
cat("\n=== Resumen df_long ===\n") print(summary(df_long[, c("precio","cantidad")]))
Gráfico + ajuste lineal
ggplot(df_long, aes(x = precio, y = cantidad)) +
geom_point() +
geom_smooth(method = "lm", se = TRUE) +
labs(title = "Cantidad demandada vs Precio (Galleta)",
x = "Precio (COP)", y = "Cantidad")
Regresión Q = b0 + b1*P}
m <- lm(cantidad ~ precio, data = df_long) cat("\n=== REGRESIÓN ===\n") print(summary(m))
Correlación
corr <- cor(df_long$precio, df_long$cantidad, use = "complete.obs")
cat("\n=== CORRELACIÓN ===\n")
print(corr)
Elasticidad en el promedio: E = b1*(Pbar/Qbar)
b1 <- coef(m)[["precio"]]
Pbar <- mean(df_long$precio)
Qbar <- mean(df_long$cantidad)
E <- b1 * (Pbar / Qbar)
cat("\n=== ELASTICIDAD ===\n")
cat("b1 =", b1, "\nPbar =", Pbar, "\nQbar =", Qbar, "\nE =", E, "\n")