Los datos utilizados en este dashboard corresponden al precio de las acciones de Amazon, recopilados de forma diaria. Contienen información sobre:
open)close)low)high)volume)Este análisis busca explorar estadísticas descriptivas, patrones temporales y generar pronósticos simples del comportamiento futuro del precio de cierre.
| Variable | Min | Max | Media | Mediana | SD | CV |
|---|---|---|---|---|---|---|
| open | 105.93 | 845.79 | 337.88 | 282.50 | 189.29 | 56.02 |
| close | 108.61 | 844.36 | 337.90 | 282.92 | 189.11 | 55.97 |
| low | 105.80 | 840.60 | 333.97 | 279.87 | 187.65 | 56.19 |
| high | 111.29 | 847.21 | 341.46 | 285.07 | 190.53 | 55.80 |
| volume | 984400.00 | 42421100.00 | 4607595.97 | 3890700.00 | 3091557.23 | 67.10 |
open, close,
low, high, volume) presentan
distribuciones similares, con sesgos hacia valores bajos, especialmente
en el volumen de transacciones, lo cual sugiere que la mayoría de los
días hubo bajo volumen y pocos días con volúmenes muy altos.---
title: "Dashboard de Acciones de Amazon"
output:
flexdashboard::flex_dashboard:
orientation: rows
vertical_layout: fill
source_code: embed
---
```{r setup, include=FALSE}
library(readr)
library(dplyr)
library(ggplot2)
library(lubridate)
library(gridExtra)
library(forecast)
library(scales)
datos <- read_csv("AmazonStockPredictionDepurated.csv")
datos <- datos %>% mutate(date = dmy(date))
numericas <- c("open", "close", "low", "high", "volume")
```
# Introducción
## Descripción General de los Datos
Los datos utilizados en este dashboard corresponden al precio de las acciones de Amazon, recopilados de forma diaria. Contienen información sobre:
- **Fecha** del registro
- Precio de **apertura** (`open`)
- Precio de **cierre** (`close`)
- Precio **mínimo** del día (`low`)
- Precio **máximo** del día (`high`)
- **Volumen** de acciones transadas (`volume`)
Este análisis busca explorar estadísticas descriptivas, patrones temporales y generar pronósticos simples del comportamiento futuro del precio de cierre.
# Estadísticas
## Resumen Estadístico por Variable
```{r resumen}
resumen_bloques <- function(nombre_var) {
x <- datos[[nombre_var]]
data.frame(
Variable = nombre_var,
Min = min(x, na.rm = TRUE),
Max = max(x, na.rm = TRUE),
Media = mean(x, na.rm = TRUE),
Mediana = median(x, na.rm = TRUE),
SD = sd(x, na.rm = TRUE),
CV = sd(x, na.rm = TRUE) / mean(x, na.rm = TRUE) * 100
)
}
estadisticas <- do.call(rbind, lapply(numericas, resumen_bloques))
knitr::kable(estadisticas, digits = 2, caption = "Estadísticas por Variable")
```
# Visualización
## Histogramas con Frecuencia y Curva de Densidad
```{r histogramas, fig.width=18, fig.height=12}
graficos <- lapply(numericas, function(var) {
ggplot(datos, aes_string(x = var)) +
geom_histogram(aes(y = ..count..), fill = "skyblue", bins = 30, alpha = 0.6) +
geom_density(aes(y = ..density.. * diff(range(datos[[var]])) * length(datos[[var]]) / 30), color = "darkblue") +
ggtitle(paste("Distribución de", var)) +
theme_minimal() +
ylab("Frecuencia") +
scale_x_continuous(labels = comma)
})
do.call(grid.arrange, c(graficos, ncol = 2))
```
## Serie temporal del precio de cierre
```{r serie_temporal, fig.width=14, fig.height=8}
ggplot(datos, aes(x = date, y = close)) +
geom_line(color = "seagreen", linewidth = 1.5) +
ggtitle("Evolución Temporal del Precio de Cierre") +
xlab("Fecha") + ylab("Precio de Cierre") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
```
## Promedio anual del precio de cierre
```{r promedio_anual, fig.width=14, fig.height=8}
datos <- datos %>% mutate(year = year(date))
promedios <- datos %>%
group_by(year) %>%
summarise(avg_close = mean(close, na.rm = TRUE))
ggplot(promedios, aes(x = factor(year), y = avg_close)) +
geom_bar(stat = "identity", fill = "coral") +
ggtitle("Precio de Cierre Promedio por Año") +
xlab("Año") + ylab("Promedio de Precio de Cierre") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
```
# Pronósticos
## Suavización Exponencial Simple (SES)
```{r ses_modelo, fig.width=14, fig.height=8}
datos <- datos[order(datos$date), ]
datos$close <- as.numeric(datos$close)
amazon_ts <- ts(datos$close, start = c(2010, 1), frequency = 252)
modelo_ses <- ses(amazon_ts, h = 10)
fechas_hist <- datos$date
fechas_pred <- seq(from = max(fechas_hist) + 1, by = "day", length.out = 10)
df_hist <- data.frame(fecha = fechas_hist, precio = datos$close)
df_pred <- data.frame(fecha = fechas_pred, precio = as.numeric(modelo_ses$mean))
fecha_inicio <- max(df_hist$fecha) - 60
fecha_fin <- max(df_pred$fecha)
ggplot() +
geom_line(data = df_hist, aes(x = fecha, y = precio), color = "blue", size = 1.1) +
geom_line(data = df_pred, aes(x = fecha, y = precio), color = "red", size = 1.4) +
ggtitle("Pronóstico SES del Precio de Cierre de Amazon") +
xlab("Fecha") + ylab("Precio (USD)") +
coord_cartesian(xlim = c(fecha_inicio, fecha_fin)) +
theme_minimal()
```
## Modelo Holt (tendencia)
```{r holt_modelo, fig.width=14, fig.height=8}
modelo_holt <- holt(amazon_ts, h = 10)
fechas_pred <- seq(from = max(fechas_hist) + 1, by = "day", length.out = 10)
df_pred_holt <- data.frame(fecha = fechas_pred, precio = as.numeric(modelo_holt$mean))
fecha_fin <- max(df_pred_holt$fecha)
ggplot() +
geom_line(data = df_hist, aes(x = fecha, y = precio), color = "black", size = 1.1) +
geom_line(data = df_pred_holt, aes(x = fecha, y = precio), color = "orange", size = 1.4) +
ggtitle("Pronóstico Holt del Precio de Cierre de Amazon") +
xlab("Fecha") + ylab("Precio (USD)") +
coord_cartesian(xlim = c(fecha_inicio, fecha_fin)) +
theme_minimal()
```
# Conclusiones
## Conclusiones
- Alta volatilidad: El análisis estadístico reveló una fuerte dispersión en los precios de las acciones de Amazon. Esto se refleja en los valores altos de desviación estándar y coeficiente de variación (superiores al 50%), lo cual indica que los precios no siguen un patrón estable diario.
- Impacto del volumen de operaciones: El volumen de negociación mostró variaciones significativas, posiblemente influenciadas por eventos externos, noticias del mercado o decisiones corporativas. Esto refuerza la importancia de considerar factores contextuales en el análisis financiero.
- Las variables analizadas (`open`, `close`, `low`, `high`, `volume`) presentan distribuciones similares, con sesgos hacia valores bajos, especialmente en el volumen de transacciones, lo cual sugiere que la mayoría de los días hubo bajo volumen y pocos días con volúmenes muy altos.
- El análisis por año confirma que el precio promedio de cierre ha aumentado gradualmente, destacando años de mayor crecimiento sostenido.
- En cuanto a pronósticos, los modelos de Suavización Exponencial Simple (SES) y Holt indican una continuación de la estabilidad en el precio de cierre. El modelo de Holt es más sensible a posibles tendencias, mientras que SES solo suaviza el comportamiento reciente.
- Importancia del preprocesamiento: La limpieza de datos fue esencial para garantizar la calidad del análisis. Los errores de formato, como la ubicación incorrecta de puntos decimales, pueden afectar seriamente los resultados si no se corrigen adecuadamente.
- El uso de software estadístico como R y bibliotecas de visualización ayudó a comprender y comunicar los resultados de manera clara.