Actividad 1

Análisis exploratorio de datos y tratamiento de series temporales

library(readr)
base <- read_csv("Base actividad1.csv")
## Rows: 33045 Columns: 13
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr   (2): type, geography
## dbl  (10): average_price, total_volume, 4046, 4225, 4770, total_bags, small_...
## date  (1): date
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.

La base consta de 33.045 observaciones y 13 variables: 1 variable tipo fecha, 2 variables de texto (type,geography) y 10 variables numéricas

#Verificamos si existen datos faltantes
which(is.na(base))
## integer(0)
#y lo verficamos ya que todas las variables tienen 33.405 observaciones
registros_no_na <- colSums(!is.na(base))
print(registros_no_na)
##          date average_price  total_volume          4046          4225 
##         33045         33045         33045         33045         33045 
##          4770    total_bags    small_bags    large_bags   xlarge_bags 
##         33045         33045         33045         33045         33045 
##          type          year     geography 
##         33045         33045         33045

Estadística Descriptiva

summary(base)
##       date            average_price   total_volume           4046         
##  Min.   :2015-01-04   Min.   :0.44   Min.   :      85   Min.   :       0  
##  1st Qu.:2016-06-19   1st Qu.:1.10   1st Qu.:   15119   1st Qu.:     767  
##  Median :2017-12-10   Median :1.35   Median :  129117   Median :   10995  
##  Mean   :2017-12-12   Mean   :1.38   Mean   :  968400   Mean   :  302391  
##  3rd Qu.:2019-06-16   3rd Qu.:1.62   3rd Qu.:  505828   3rd Qu.:  119022  
##  Max.   :2020-11-29   Max.   :3.25   Max.   :63716144   Max.   :22743616  
##       4225               4770             total_bags         small_bags      
##  Min.   :       0   Min.   :      0.0   Min.   :       0   Min.   :       0  
##  1st Qu.:    2712   1st Qu.:      0.0   1st Qu.:    9122   1st Qu.:    6479  
##  Median :   23436   Median :    178.1   Median :   53222   Median :   36877  
##  Mean   :  279769   Mean   :  21482.6   Mean   :  364673   Mean   :  250198  
##  3rd Qu.:  135239   3rd Qu.:   5096.5   3rd Qu.:  174431   3rd Qu.:  120662  
##  Max.   :20470573   Max.   :2546439.1   Max.   :31689189   Max.   :20550407  
##    large_bags        xlarge_bags            type                year     
##  Min.   :       0   Min.   :      0.0   Length:33045       Min.   :2015  
##  1st Qu.:     466   1st Qu.:      0.0   Class :character   1st Qu.:2016  
##  Median :    6376   Median :      0.0   Mode  :character   Median :2017  
##  Mean   :  106733   Mean   :   7742.6                      Mean   :2017  
##  3rd Qu.:   40417   3rd Qu.:    804.4                      3rd Qu.:2019  
##  Max.   :13327601   Max.   :1403184.0                      Max.   :2020  
##   geography        
##  Length:33045      
##  Class :character  
##  Mode  :character  
##                    
##                    
## 

El precio promedio por aguacate es de 1,38 unidades monetarias, el precio más bajo fue de 0,44 y su precio más alto llegó a ser 3,25, sin embargo el 75% de los precios fueron menores a 1,62. El promedio de aguacates vendidos (total_volume) es de 968400, el valor máx registrado hace presumir que se trata de un valor atípico. El promedio del total de bolsas es 364673. Analizando el formato de ventas se observa que existe mayor demanda de las fundas pequeñas en promedio 250198 a diferencia de las bolsas grandes que en promedio es 106733 y bolsas extra grandes 7742. La desviación estándar de las variables muestra que registran datos muy dispersos y sugiere la presencia de oytliers.

En cuanto a las variables tipo texto:

unique(base$type)
## [1] "conventional" "organic"
length(unique(base$geography))
## [1] 54
unique(base$geography)
##  [1] "Albany"               "Atlanta"              "Baltimore/Washington"
##  [4] "Boise"                "Boston"               "Buffalo/Rochester"   
##  [7] "California"           "Charlotte"            "Chicago"             
## [10] "Cincinnati/Dayton"    "Columbus"             "Dallas/Ft. Worth"    
## [13] "Denver"               "Detroit"              "Grand Rapids"        
## [16] "Great Lakes"          "Harrisburg/Scranton"  "Hartford/Springfield"
## [19] "Houston"              "Indianapolis"         "Jacksonville"        
## [22] "Las Vegas"            "Los Angeles"          "Louisville"          
## [25] "Miami/Ft. Lauderdale" "Midsouth"             "Nashville"           
## [28] "New Orleans/Mobile"   "New York"             "Northeast"           
## [31] "Northern New England" "Orlando"              "Philadelphia"        
## [34] "Phoenix/Tucson"       "Pittsburgh"           "Plains"              
## [37] "Portland"             "Raleigh/Greensboro"   "Richmond/Norfolk"    
## [40] "Roanoke"              "Sacramento"           "San Diego"           
## [43] "San Francisco"        "Seattle"              "South Carolina"      
## [46] "South Central"        "Southeast"            "Spokane"             
## [49] "St. Louis"            "Syracuse"             "Tampa"               
## [52] "Total U.S."           "West"                 "West Tex/New Mexico"

La variable type corresponde a una variable que toma dos valores “conventional” y “organic”, mientras que, la variable geography tiene 54 valores únicos.

El diagrama de cajas o bigote confirma la presencia de datos atpicos en las variables analizadas.

par(mfrow = c(2, 3))
boxplot(base$average_price, main = "Precio por unidad")
boxplot(base$total_volume, main = "Volumen de ventas")
boxplot(base$total_bags, main = "Total Bolsas")
boxplot(base$small_bags, main = "Bolsas pequeñas")
boxplot(base$large_bags, main = "Bolsas grandes")
boxplot(base$xlarge_bags, main = "Bolsas extra grandes")

Aguacates orgánicos en Albany

Albany<-base[base$geography=="Albany",]
Albanyorganic <- Albany[Albany$type=="organic",]
mean(Albanyorganic$average_price)
## [1] 1.683529

El precio promedio de los aguacates orgánicos en Albany es 1,68

Aguacates orgánicos en Boston

Boston<-base[base$geography=="Boston",]
Bostonorganic <- Boston[Boston$type=="organic",]
mean(Bostonorganic$average_price)
## [1] 1.742778

El precio promedio de los aguacates orgánicos en Boston es 1,74

Análisis de covarianza y correlación (base total)

#Aguacates orgánicos
organic <- base[base$type=="organic",]
cov(organic$average_price, organic$total_volume)
## [1] -3027.04
cor(organic$average_price, organic$total_volume)
## [1] -0.04665951

Se evidencia una relaión negativa, sin embargo, dado que el valor es cercano a 0, no se evidencia una relación lineal entre el precio de los aguacates orgánicos y el volumen total ventas

#Aguacates convencionales
convencional <- base[base$type=="conventional",]
cov(convencional$average_price, convencional$total_volume)
## [1] -122979.7
cor(convencional$average_price, convencional$total_volume)
## [1] -0.09164995

Se evidencia una relación negativa, sin embargo, dado que el valor es cercano a 0, no se evidencia una relación lineal entre el precio de los aguacates convencionales y el volumen total de ventas

ANÁLISIS DE REGRESIÓN

estimaciónorgánicos <-lm(log(organic$total_volume) ~ log(organic$average_price))
summary(estimaciónorgánicos)
## 
## Call:
## lm(formula = log(organic$total_volume) ~ log(organic$average_price))
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -5.3478 -0.9586 -0.1608  0.7926  4.8868 
## 
## Coefficients:
##                            Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                10.14072    0.02636  384.73   <2e-16 ***
## log(organic$average_price) -0.76654    0.05227  -14.66   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.427 on 16519 degrees of freedom
## Multiple R-squared:  0.01285,    Adjusted R-squared:  0.01279 
## F-statistic:   215 on 1 and 16519 DF,  p-value: < 2.2e-16

El parámetro es estadísticamente significativo (***) lo que significa que si el precio sube un 10% la venta disminuye en 0,076%, lo que realmente es una afectación mínima.

estimaciónconvencional <- lm(log(convencional$total_volume) ~ log(convencional$average_price))
summary(estimaciónconvencional)
## 
## Call:
## lm(formula = log(convencional$total_volume) ~ log(convencional$average_price))
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.8152 -0.9493 -0.1589  0.5785  4.5734 
## 
## Coefficients:
##                                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                     13.42427    0.01134 1183.72   <2e-16 ***
## log(convencional$average_price) -1.32043    0.04629  -28.52   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.298 on 16522 degrees of freedom
## Multiple R-squared:  0.04694,    Adjusted R-squared:  0.04688 
## F-statistic: 813.7 on 1 and 16522 DF,  p-value: < 2.2e-16

El parámetro es estadísticamente significativo (***) y significa que cuando el precio sube un 10% la venta disminuye un 0,13%.

PREDICCIÓN

#Predicción precio de venta aguacates orgánicos en Albany

precioalbany <- ts(Albany$average_price, start =  c(2015,1), frequency=52)
plot(precioalbany)

library(forecast)
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
modelo <- auto.arima(precioalbany)

predicción<-forecast(modelo,12)
plot(predicción)

predicción$mean
## Time Series:
## Start = c(2026, 41) 
## End = c(2026, 52) 
## Frequency = 52 
##  [1] 0.9288717 1.5492443 0.8644969 1.5899525 0.9615437 1.5430591 1.0479606
##  [8] 1.6014913 1.1442428 1.4587715 1.1936428 1.4915513