Preguntas de investigación

Es común que los autos nuevos tengan un kilometraje alto?

Las estimaciones que da Manheim Market Report son acertadas con los precios de venta reales?

Que rangos de gama manejan las marcas actuales?

Que estados son lo que al momento de comprar un automovil deciden Marcas de lujo?

Limpieza de datos

En primera instancia se cargan las librerias y se importan los datos

library(tidyverse)
library(ggplot2)

cars <- read.csv("car_prices.csv")

A continuación se procede a la limpieza de datos Donde se eliminan las columnas innecesarias para este analísis, se eliminan datos atipicos y los espacios en blanco se cambian por NA para despues poder removerlos. Se eliminaron datos de odometros dado a que en automoviles del ultimo año tenian un recorrido de mas de 100,000 kilometros. Los NA fueron removidos ya que la base de datos inicialmente contaba con más de 500,000 observaciones, con esta limpieza se redujeron a 308,000 que sigue siendo un tamaño bastante considerable.

cars <- cars %>% select(-trim,-vin,-condition,-interior,-seller,-saledate)

cars <- subset(cars, odometer <= 75000)

cars<-cars %>% mutate(across(c(make,body,model,transmission,state,color), ~ na_if(., "")))
cars <- na.omit(cars)

Una vez teniendo la base de datos limpia podemos proceder a hacer el analísis estadístico

Analísis estadístico

ggplot(cars)+
  geom_point(aes(x=year,y=odometer))+
  geom_smooth(aes(x=year,y=odometer))+
  geom_point(aes(x=year,y=mean(odometer)),color="red")+
  theme_minimal()+
  labs(title = "Km recorridos por año de fabricación",caption="Vehicle Sales and
       Market Trends Dataset", x="Año",y="Km recorridos")

ggplot(cars)+
  geom_point(aes(x=sellingprice, y=mmr,fill=year))+
  geom_smooth(aes(x=sellingprice, y=mmr))+
  theme_minimal()+
  labs(title = "Correlación precio de venta con estimacion de precio de venta",
       caption = "Vehicle Sales and Market Trends Dataset",
       x= "Precio de venta", y="Estimacion de Manheim Market Report")

Para responder las dos ultimas preguntas de investigación se tuvieron que filtrar los datos, esto por un factor muy importante, la inflacion, que esta puede afectar en gran medida nuestros datos.

cars2015<- cars%>% filter(year==2010:2015)%>%filter(transmission=="automatic")
## Warning: There was 1 warning in `filter()`.
## ℹ In argument: `year == 2010:2015`.
## Caused by warning in `year == 2010:2015`:
## ! longitud de objeto mayor no es múltiplo de la longitud de uno menor
ggplot(cars2015)+
  geom_boxplot(aes(x=make, y=sellingprice,fill=make))+
  guides(fill=F)+
  theme_minimal()+
  theme(axis.text.x = element_text(angle = 45))+
  labs(title="Rango de precios por marca", caption="Vehicle Sales and Market Trends Dataset",
       x="Marca de autos", y="Precio de venta")
## Warning: The `<scale>` argument of `guides()` cannot be `FALSE`. Use "none" instead as
## of ggplot2 3.3.4.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

ggplot(cars2015)+
  geom_boxplot(aes(x=state,y=sellingprice,fill=state))+
  guides(fill=F)+
  theme_minimal()+
  labs(title="Rango de precio de compra por estado", caption="Vehicle Sales
       and Market Trends Dataset", x="Estado", y="Precio de compra")

Referencias

https://es.stackoverflow.com/questions/563695/c%c3%b3mo-hallar-el-m%c3%a1ximo-valor-de-cada-columna-de-un-dataframe-en-rstudio

https://www.diegocalvo.es/eliminar-na-o-valores-nulos-en-r/

https://r-coder.com/mutate-dplyr-en-r/