-
Notifications
You must be signed in to change notification settings - Fork 0
Devolución TP2 #2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
eliocamp
wants to merge
12
commits into
feedback2
Choose a base branch
from
main
base: feedback2
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from 3 commits
Commits
Show all changes
12 commits
Select commit
Hold shift + click to select a range
db295fc
Mod menores
RexCaecos e7d2620
Realizado parcialmente
RexCaecos fdde55b
Más cambios
RexCaecos bcac909
Lista 2da entrega.
RexCaecos f2c0207
Corregido diseño y añadido agrupamiento de factores en "Otros.
RexCaecos ba111a1
Puliendo tablas
RexCaecos 463e907
Casi listo
RexCaecos fa62193
buffer de imagen
RexCaecos d6e5553
corregido?
RexCaecos 99a61ce
pffff
RexCaecos e7f15ea
Listo
RexCaecos 8255cc3
Lesto
RexCaecos File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,14 +1,17 @@ | ||
| --- | ||
| title: "Informe para alcoholistas" | ||
| title: "Informe para Alcoholistas" | ||
| author: "Alejandro Blasco" | ||
| # output: | ||
| # html_document: | ||
| # theme: darkly | ||
| # highlight: tango | ||
| date: "2023-06-09" | ||
| output: | ||
| revealjs::revealjs_presentation: | ||
| theme: moon | ||
| highlight: pygments | ||
| html_document: | ||
| theme: darkly | ||
| highlight: tango | ||
| toc: true | ||
| # output: | ||
| # revealjs::revealjs_presentation: | ||
| # theme: moon | ||
| # highlight: pygments | ||
| # toc: true | ||
|
|
||
| --- | ||
|
|
||
|
|
@@ -19,28 +22,18 @@ knitr::opts_chunk$set(echo = TRUE) | |
| library(readr) | ||
| library(dplyr) | ||
| library(ggplot2) | ||
| library(DescTools) | ||
| library(tidyr) | ||
| library(datos) # por si las dudas | ||
|
|
||
|
|
||
| # Esto lo necesito para poder acceder desde el laburo | ||
| IP <- gsub(".*? ([[:digit:]])", "\\1", system("ipconfig", intern=T)[grep("IPv4", system("ipconfig", intern = T))]) | ||
| if (IP == "10.2.29.7") { | ||
| Sys.setenv("https_proxy"="proxy.jus.gov.ar:8080/") | ||
| Sys.setenv("http_proxy"="proxy.jus.gov.ar:8080/") | ||
| options(internet.info = 0) #valor 0 o 1 para ver la comunicación con internet | ||
| } | ||
| ``` | ||
|
|
||
|
|
||
| ## Introducción | ||
| # Introducción | ||
|
|
||
|
|
||
| # ¿Qué datos son? | ||
| ## ¿Qué datos son? | ||
|
|
||
| La base posee datos sobre diferentes vinos y sus reseñas. El detalle de los datos lo transcribo del diccionario: | ||
|
|
||
| # `vinos` | ||
| ## `df vinos` | ||
|
|
||
| |Variable |Clase |Descripción | | ||
| |:--------------|:-------------------|:-----------| | ||
|
|
@@ -55,20 +48,20 @@ La base posee datos sobre diferentes vinos y sus reseñas. El detalle de los dat | |
| | vina | caracter | Nombre de la viña | | ||
| | titulo_resena| caracter | Título de la reseña. | | ||
|
|
||
| # ¿De dónde provienen? | ||
| ## ¿De dónde provienen? | ||
|
|
||
| La fuente de los datos es la revista *Wine Enthusiast*, extraidos por *zackthoutt* y alojados en *Kaggle*, de donde fueron tomados y luego traducidos. | ||
|
|
||
| # ¿Quién los tomó? | ||
| ## ¿Quién los tomó? | ||
|  | ||
|
|
||
| # ¿En qué período se tomaron? | ||
| ## ¿En qué período se tomaron? | ||
|
|
||
| El dataset en español es de 2019-06-12 (dato obtenido de la url), el original en inglés de Keggle fue actualizado por última vez hace 5 años (2018), pero no se indica la fecha exacta de procedencia de los datos. | ||
|
|
||
| ## Exploración de los datos | ||
| # Exploración de los datos | ||
|
|
||
| # Muestreo | ||
| ## Muestreo | ||
|
|
||
| Primero cargo los datos: | ||
| ```{r} | ||
|
|
@@ -78,10 +71,10 @@ vinos <- read_csv('datos/vinos.csv', show_col_types = FALSE) | |
|
|
||
| Luego presento una muestra: | ||
| ```{r echo=FALSE} | ||
| head(vinos) | ||
| sample(vinos) | ||
| ``` | ||
|
|
||
| # Conteo | ||
| ## Conteo | ||
|
|
||
| ```{r} | ||
| observaciones <- nrow(vinos) | ||
|
|
@@ -91,11 +84,11 @@ variables <- ncol(vinos) | |
|
|
||
| El dataset tiene ``r observaciones`` observaciones y ``r variables`` variables. | ||
|
|
||
| # Variables a analizar | ||
| ## Variables a analizar | ||
|
|
||
| Se consideran las variables ***puntos*** y ***precio*** para el análisis, ya que son las únicas numéricas. | ||
|
|
||
| # ¿Cuál es su valor medio y desvío estándar? | ||
| ## ¿Cuál es su valor medio y desvío estándar? | ||
|
|
||
| *Puntos* | ||
| ```{r echo=FALSE} | ||
|
|
@@ -110,7 +103,7 @@ summarise(vinos, precio_media = mean(precio, na.rm = TRUE), precio_ds = sd(preci | |
| Por la media y el desvío, se puede suponer que la distribución no es normal. | ||
|
|
||
|
|
||
| # ¿Cuál es su rango (valor máximo y valor mínimo)? | ||
| ## ¿Cuál es su rango (valor máximo y valor mínimo)? | ||
|
|
||
| *Puntos* | ||
| ```{r echo=FALSE} | ||
|
|
@@ -122,61 +115,224 @@ summarise(vinos, puntos_min = min(puntos, na.rm = TRUE), puntos_max = max(puntos | |
| summarise(vinos, precio_min = min(precio, na.rm = TRUE), precio_max = max(precio, na.rm = TRUE)) | ||
| ``` | ||
|
|
||
| # ¿Hay alguna anomalía que sugiera que hay datos incorrectos? | ||
| Se ve que los puntos no bajan de 80, y en base al máximo, mínimo y promedio de precios, que los precios altos tienen mucha dispersión, se alejan mucho de la media, con lo que existiría una asimetría hacia la derecha. | ||
|
|
||
| ## ¿Hay alguna anomalía que sugiera que hay datos incorrectos? | ||
|
|
||
| No hay evidencias de que existan anomalías, solo algunos datos llamativos, como la diferencia entre la media de precios y los precios máximos | ||
| ```{r} | ||
| vinos_caros <- nrow(filter(vinos, precio > 250)) | ||
| precio_max <- summarise(vinos, max(precio, na.rm = TRUE)) | ||
| tamanio_muestra <- nrow(vinos) | ||
| precio_media <- mean(vinos$precio, na.rm = TRUE) | ||
| precio_ds <- sd(vinos$precio, na.rm = TRUE) | ||
| precio_caro <- precio_media + 3*precio_ds | ||
| vinos_caros <- nrow(filter(vinos, precio > precio_caro)) # se estimó con media(35.36) + 3 desvios estandar (41.02) | ||
| precio_max <- summarise(vinos, max(precio, na.rm = TRUE)) | ||
| ``` | ||
| ya que, aunque el máximo es ``r precio_max``, solo existen ``r vinos_caros`` que superen los ``$250``. | ||
| ya que, aunque el máximo es ``r precio_max``, solo existen US\$``r vinos_caros`` que superen los US\$``r precio_caro``. | ||
|
|
||
|
|
||
|
|
||
| # | ||
| Esto se observa mejor con un gráfico: | ||
|
|
||
| ```{r echo=FALSE} | ||
| # precios <- select(vinos, precio) | ||
| p <- vinos |> | ||
| filter(precio < 250) |> | ||
| ggplot( aes(x=precio, fill=precio)) + | ||
| geom_histogram(binwidth=3, show.legend = FALSE, fill=rainbow(83)) | ||
| filter(precio <= precio_caro) |> | ||
| ggplot(aes(x=precio, fill = cut(precio, 100))) + | ||
| geom_histogram(binwidth=3, show.legend = FALSE) | ||
| show(p) | ||
| ``` | ||
|
|
||
| # | ||
|
|
||
| ```{r} | ||
| paises <- length(unique(na.omit(vinos$pais))) | ||
| variedades <- length(unique(na.omit(vinos$variedad))) | ||
| paises_len <- length(unique(na.omit(vinos$pais))) | ||
| variedades_len <- length(unique(na.omit(vinos$variedad))) | ||
| cepas <- sort(unique(na.omit(vinos$variedad))) | ||
| ``` | ||
| También llamó la atención la cantidad de variedades de vinos, ``r variedades``. | ||
| También llamó la atención la cantidad de variedades de vinos, ``r variedades_len``, porque no se esperaban tantas variedades de vino. | ||
|
|
||
| # ¿Cuántas observaciones hay por cada grupo? ¿Cuántos valores faltantes? ¿Hay diferencias? | ||
| ## ¿Cuántas observaciones hay por cada grupo? ¿Cuántos valores faltantes? ¿Hay diferencias? | ||
|
|
||
| ```{r} | ||
| ```{r echo=FALSE} | ||
| prop_no_encontrados <- round(colSums(is.na(vinos))/nrow(vinos),4)*100 | ||
| show(prop_no_encontrados) | ||
| ``` | ||
| Podemos encontrar bastantes valores faltantes, pero únicamente en las columnas de nombre (``r prop_no_encontrados[2]``%), region_1 (``r prop_no_encontrados[6]``%) y region_2 (``r prop_no_encontrados[6]``%). | ||
|
|
||
|
|
||
| ## Hipótesis | ||
| # Hipótesis | ||
|
|
||
| # Se presentan 3 hipótesis: | ||
| Se presentan 3 hipótesis: | ||
|
|
||
| * Podría existir una diferencia importante entre el promedio de precios de los vinos según el país. | ||
| * Habría una incremento en el precio promedio del vino conforme su puntaje. | ||
| * Existirían variedades que podrían tener un precio promedio significativamente mayor, pero no así su puntaje. | ||
| 1. Podría existir una diferencia importante entre el promedio de precios de los vinos según el país. | ||
| 2. Habría una incremento en el precio promedio del vino conforme su puntaje. | ||
| 3. Existirían variedades que podrían tener un precio promedio significativamente mayor, pero no así su puntaje. | ||
|
|
||
| ```{r include=FALSE} | ||
| # TP 2 | ||
| # | ||
| # 1. Escribir la pregunta. | ||
| # 2. Mostrar uno o varios gráficos o tablas relevantes | ||
| # 3. Escribir un texto interpretando esos resultados y llegar a una conclusión. | ||
| # | ||
| # Y repetir para cada pregunta. | ||
| # | ||
| # Si durante el análisis le surgen otras preguntas, son bienvenides de responderlas también. Muchas veces aparecen cosas que nos sorprenden y es necesario indagar más. | ||
| ``` | ||
|
|
||
| ## Hipótesis 1 | ||
|
|
||
| ### Podría existir una diferencia importante entre el promedio de precios de los vinos según el país. | ||
|
|
||
| Un gráfico de dispersión de la relación puntaje y precio: | ||
| Para analizar esto, primero realizamos un gráfico para ver los promedios de precio x país: | ||
| ```{r echo=FALSE} | ||
| vinos |> | ||
| filter(!is.na(pais)) |> | ||
| group_by(pais) |> | ||
| summarise(precio_promedio = mean(precio, na.rm = TRUE)) |> | ||
| filter(!is.na(precio_promedio)) |> | ||
| ggplot(aes(precio_promedio, reorder(pais, precio_promedio))) + | ||
| geom_col(width = 0.5, color='steelblue',fill='steelblue', alpha = 0.6) + | ||
| labs(x = "Precio", y = "Pais") | ||
|
|
||
| ``` | ||
|
|
||
| p <- vinos |> | ||
| filter(precio < 1500) |> | ||
| ggplot(aes(x=puntos, y=precio)) + | ||
| geom_point() | ||
| Vemos una gran dispersión, con precios que van desde menos de US\$10 (Ucrania), hasta más de US\$85 (Suiza) | ||
| Para verificar que estos promedios sean estadísticamente significativos, veamos cuantas reseñas hay de cada pais: | ||
| ```{r echo=FALSE} | ||
| vinos |> | ||
| filter(!is.na(pais)) |> | ||
| group_by(pais) |> | ||
| summarise(resenias = n()) |> | ||
| arrange(resenias) | ||
| ``` | ||
| ```{r echo=FALSE} | ||
| vinos |> | ||
| filter(!is.na(pais)) |> | ||
| group_by(pais) |> | ||
| summarise(resenias = n()) |> | ||
| ggplot(aes(resenias, reorder(pais, resenias))) + | ||
| geom_col(width = 0.5, color='orangered',fill='orangered', alpha = 0.6) + | ||
| labs(x = "Reseñas", y = "Pais") | ||
|
|
||
| ``` | ||
|
|
||
| Se ve que existen paises con muy pocas reseñas, por lo que vamos a filtrar aquellos paises cuyas cantidad de reseñas no sean representativas (0,1% del tamaño de la muestra, ``r round(tamanio_muestra/1000)``): | ||
|
|
||
| ```{r echo=FALSE} | ||
| vinos |> | ||
| filter(!is.na(pais)) |> | ||
| group_by(pais) |> | ||
| summarise(precio_promedio = mean(precio, na.rm = TRUE), resenias = n()) |> | ||
| filter(resenias > tamanio_muestra/1000) |> | ||
| filter(!is.na(precio_promedio)) |> | ||
| ggplot(aes(precio_promedio, reorder(pais, precio_promedio))) + | ||
| geom_col(width = 0.5, color='yellowgreen',fill='yellowgreen', alpha = 0.6) + | ||
| labs(x = "Precio", y = "Pais") | ||
| ``` | ||
|
|
||
| Ahora vemos que la diferencia persiste, pero matizada, y que los precios oscilan entre US\$15 y US\$42. | ||
|
|
||
| *Conclusiones:* Se constata que existe una diferencia significativa entre los precios promedio y el pais de origen del vino, ya sea que se contabilicen todos los países o se excluyan aquellos que poseen pocas reseñas. | ||
|
|
||
| Respecto de la cantidad de reseñas, no es posible establecer si esto se debe a una limitación de la muestra, que fue producida por una revista estadounidense que evidentemente tiene mayor acceso o interés en reseñar vinos locales (la cantidad de reseñas de EEUU casi triplica al segundo, Francia), si posee menos reseñas por ser un país con una producción vitivinícola acotada (podría ser el caso de Suiza), o pueden existir otros motivos. Por lo tanto, no tenemos suficiente información para saber si es lícito excluir a estos países, y por lo tanto se incluyen ambos gráficos. | ||
|
|
||
| Tampoco es posible determinar en base a los datos provistos los motivos de la variación de precio, podemos suponer que podría deberse a la reputación de ciertos países, al tamaño de sus economías (países con economías más desarrolladas parecerían ocupar los puestos más altos de precio promedio), u otras causas. | ||
|
|
||
| ## Hipótesis 2 | ||
|
|
||
| ### Habría una incremento en el precio promedio del vino conforme su puntaje. | ||
|
|
||
| Primeramente, elaboramos un gráfico de dispersión de la relación puntaje y precio: | ||
| ```{r echo=FALSE} | ||
| p <- vinos |> | ||
| filter(!is.na(puntos)) |> | ||
| filter(!is.na(precio)) |> | ||
| ggplot(aes(x=puntos, y=precio, color=desc(precio))) + | ||
| geom_jitter() + | ||
| labs(x = "Puntos", y = "Precio (US$)", colour = "Precio") | ||
| show(p) | ||
| ``` | ||
|
|
||
| Este gráfico parecería mostrar que, si bien los vinos de puntaje bajo no suelen tener precio alto, existe vinos de precio bajo en casi todos los puntajes, aunque parecería ir en aumento el precio promedio conforme sube el puntaje. Para comprobarlo: | ||
|
|
||
| ```{r echo=FALSE} | ||
| p <- vinos |> | ||
| filter(!is.na(puntos)) |> | ||
| filter(!is.na(precio)) |> | ||
| group_by(puntos) |> | ||
| summarise(precio_promedio = mean(precio, na.rm = TRUE)) |> | ||
| ggplot(aes(x=puntos, y=precio_promedio, fill=desc(precio_promedio))) + | ||
| geom_col() + | ||
| labs(x = "Puntos", y = "Precio (US$)", fill = "Precio") | ||
| show(p) | ||
| ``` | ||
|
|
||
| Con esto se ve más claramente que el precio promedio de los vino se incrementa significativamente conforme el puntaje. | ||
| También podemos observar como se distribuyen los puntajes: | ||
|
|
||
| ```{r echo=FALSE} | ||
| vinos |> | ||
| filter(!is.na(puntos)) |> | ||
| filter(!is.na(precio)) |> | ||
| group_by(puntos) |> | ||
| summarise(precio_promedio = mean(precio, na.rm = TRUE), resenias = n()) | ||
| ``` | ||
|
|
||
| ```{r echo=FALSE} | ||
| vinos |> | ||
| filter(!is.na(puntos)) |> | ||
| filter(!is.na(precio)) |> | ||
| group_by(puntos) |> | ||
| summarise(precio_promedio = mean(precio, na.rm = TRUE), resenias = n()) |> | ||
| ggplot(aes(x = puntos, y = resenias)) + | ||
| geom_col() | ||
| ``` | ||
|
|
||
| Se observa que los puntajes parecerían tene una distribución semejante a la normal. | ||
|
|
||
| Vamos a ver si existe algun otro rasgo relevante de la relación puntaje y precio. Primeramente creamos una nueva variable que las relacione: | ||
| ```{r} | ||
| vinos_ratio <- vinos |> | ||
| mutate(ratio = precio*puntos*0.01) | ||
|
||
| show(max(vinos_ratio$ratio, na.rm = TRUE)) | ||
| show(min(vinos_ratio$ratio, na.rm = TRUE)) | ||
| ``` | ||
|
|
||
| Y luego veamos si existe una relacíon entre la cantidad de reseñas y este ratio puntaje/precio: | ||
| ```{r echo=FALSE} | ||
| vinos_ratio |> | ||
| filter(!is.na(ratio)) |> | ||
| group_by(cut(ratio, 15)) |> | ||
| summarise(n = n()) | ||
| ``` | ||
|
|
||
|
|
||
| ```{r} | ||
| # vinos_ratio |> | ||
| # filter(!is.na(ratio)) |> | ||
| # group_by(cut(ratio, 100)) |> | ||
| # summarise(n = n()) | ||
|
|
||
| vinos_ratio |> | ||
| filter(!is.na(ratio)) |> | ||
| filter(ratio < 500) |> | ||
| group_by(ratio) |> | ||
| ggplot(aes(ratio)) + | ||
| geom_histogram() | ||
|
|
||
| ``` | ||
|
|
||
|
|
||
|
|
||
| *Conclusiones:* Entendemos que existe una correlación entre el puntaje y el precio, aunque desconocemos si esto puede deberse a un sesgo de quien evalúa (que podría tender a asignar puntajes altos a vinos caros) o a una efectiva correlación entre calidad y precio, ya que hay muchos vinos de | ||
|
|
||
|
|
||
| ## Hipótesis 3 | ||
|
|
||
| ### Existirían variedades que podrían tener un precio promedio significativamente mayor, pero no así su puntaje. | ||
|
|
||
| Me atrasé. Entrego hasta acá, y si puedo hago un nuevo commit. | ||
|
|
||
|
|
||
|
|
||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
En el gráfico anterior se ve que la distribución de precios tiene algunos pocos valores muy altos pero muchos con valores bajos. Quizás en vez del promedio, podés probar con la mediana.