# Instalamos y cargamos las librerías necesarias:
install.packages(c("dplyr", "ggplot2","Amelia"))
## Installing packages into '/cloud/lib/x86_64-pc-linux-gnu-library/4.5'
## (as 'lib' is unspecified)
install.packages("Amelia")
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.5'
## (as 'lib' is unspecified)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(ggplot2)
library(Amelia)
## Loading required package: Rcpp
## ## 
## ## Amelia II: Multiple Imputation
## ## (Version 1.8.3, built: 2024-11-07)
## ## Copyright (C) 2005-2025 James Honaker, Gary King and Matthew Blackwell
## ## Refer to http://gking.harvard.edu/amelia/ for more information
## ##
# Leemos la base de datos en el archivo CSV:
df <- read.csv("dataorden.csv", header = TRUE)

1. Contextualización de la base de datos y variables

1.1 ¿En qué consiste?

La base contiene información histórica de 209 semanas (aproximadamente 4 años) sobre las 20 principales empresas tecnológicas que cotizan en bolsa (por ejemplo: Nvidia, Microsoft, Apple, Google, Tesla, Netflix, entre otras).

Cada pestaña corresponde a una empresa y muestra sus precios de mercado semana a semana, lo que permite analizar el comportamiento individual de cada acción. La pestaña RESUMEN concentra la visión global de todo el conjunto: el ranking de las empresas, el rango de fechas analizado, el número de semanas consideradas y el precio más reciente de cada acción.

Este tipo de información se utiliza para realizar comparaciones entre empresas, identificar tendencias de crecimiento o caída, evaluar la volatilidad de los precios y aplicar métodos de estadística inferencial para inferir el comportamiento futuro del mercado.

1.2 Variables de la base de datos

1.2.1 Variables en las pestañas individuales (por empresa)

Fecha: indica la semana registrada en el periodo de análisis. Permite organizar la información en orden cronológico y hacer un seguimiento de la evolución temporal de la acción.

Open (Precio de apertura): corresponde al precio con el que inicia la acción al comienzo de la semana. Es un indicador de la expectativa inicial de los inversionistas en ese periodo.

High (Precio máximo): refleja el mayor valor alcanzado por la acción dentro de la semana. Es útil para medir hasta qué punto se valorizó la empresa en ese intervalo de tiempo.

Low (Precio mínimo): muestra el precio más bajo registrado durante la semana. Permite identificar la caída máxima que experimentó la acción en ese lapso.

Close (Precio de cierre): es el precio final de la acción al concluir la semana. Se considera una de las medidas más relevantes en análisis financiero, ya que resume la tendencia del mercado en ese periodo.

Volume (Volumen de transacciones): indica la cantidad de acciones negociadas en la semana. Un volumen alto refleja mayor liquidez e interés de los inversionistas, mientras que un volumen bajo puede indicar menor actividad en el mercado.

Ticker: es el código bursátil que identifica a la empresa (por ejemplo, NVDA = Nvidia). Permite distinguir entre diferentes acciones dentro de la base.

1.2.2 Variables en la pestaña RESUMEN:

Rank: muestra la posición que ocupa la empresa dentro del top 20. El orden refleja la relevancia de cada compañía dentro de la selección de la base.

Ticker: código de la acción que identifica a la empresa en el mercado. Sirve como referencia estándar en las transacciones bursátiles.

Semanas: número total de semanas incluidas en el análisis (209 en todos los casos). Asegura que todas las empresas tengan la misma ventana temporal de comparación.

Desde: fecha de inicio de la serie temporal (27/08/2021). Marca el comienzo del periodo histórico analizado.

Hasta: fecha de cierre de la serie temporal (22/08/2025). Señala el final del periodo analizado y permite calcular el rango total cubierto.

Precio Actual: valor más reciente de la acción al final del periodo considerado. Es el precio vigente al 22/08/2025 y sirve como referencia de la situación más actual de cada empresa.

2. Características generales de la base de datos

2.1 Número de filas y columnas

dim(df)
## [1] 3971    7

2.2 Nombres de las variables

names(df)
## [1] "...1"   "Open"   "High"   "Low"    "Close"  "Volume" "Ticker"

2.3 Tipos de variables (numéricas, categóricas, texto, etc.)

…1: Tipo fecha. “Open”: Tipo numérica. “High”: Tipo numérica. “Low”: Tipo numérica. “Close”: Tipo numérica. “Volume” Tipo numérica. “Ticker”: Tipo categórica.

3. Análisis de variables según su tipo

3.1 Variables numéricas

3.1.1 Medidas de resumen

# Resumen de todas las variables numéricas
summary(df)
##      ...1                Open              High               Low         
##  Length:3971        Min.   :   6.15   Min.   :   6.525   Min.   :   5.92  
##  Class :character   1st Qu.:  96.60   1st Qu.: 101.345   1st Qu.:  92.92  
##  Mode  :character   Median : 170.59   Median : 178.180   Median : 165.33  
##                     Mean   : 312.48   Mean   : 324.777   Mean   : 301.60  
##                     3rd Qu.: 323.91   3rd Qu.: 333.975   3rd Qu.: 311.36  
##                     Max.   :3676.38   Max.   :3762.145   Max.   :3525.15  
##      Close             Volume             Ticker         
##  Min.   :   6.29   Min.   :1.507e+06   Length:3971       
##  1st Qu.:  97.14   1st Qu.:2.338e+07   Class :character  
##  Median : 172.17   Median :8.312e+07   Mode  :character  
##  Mean   : 313.54   Mean   :1.503e+08                     
##  3rd Qu.: 323.71   3rd Qu.:1.944e+08                     
##  Max.   :3676.57   Max.   :2.649e+09

3.1.2 Gráficos

3.1.2.1 Histograma y gráfico de densidad

Nos permite visualizar la distribución de los precios de cierre.

# Histograma del precio de cierre (Close)
ggplot(df, aes(x = Close)) +
  geom_histogram(binwidth = 20, fill = "skyblue", color = "black") +
  labs(title = "Distribución de los Precios de Cierre",
       x = "Precio de Cierre (USD)",
       y = "Frecuencia")

# Gráfico de densidad del precio de cierre
ggplot(df, aes(x = Close)) +
  geom_density(fill = "lightblue", alpha = 0.7) +
  labs(title = "Densidad de Precios de Cierre",
       x = "Precio de Cierre (USD)",
       y = "Densidad")

3.1.2.2 Diagrama de cajas

Nos permite comparar las distribuciones de precios entre todas las empresas (“Ticker”). Esto nos ayuda a detectar de un vistazo las empresas con mayor volatilidad y valores atípicos.

# Boxplot del precio de cierre por empresa
ggplot(df, aes(x = Ticker, y = Close)) +
  geom_boxplot(fill = "lightgreen") +
  labs(title = "Distribución de Precios de Cierre por Empresa",
       x = "Empresa (Ticker)",
       y = "Precio de Cierre (USD)") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

# Boxplot del volumen por empresa
ggplot(df, aes(x = Ticker, y = Volume)) +
  geom_boxplot(fill = "coral") +
  labs(title = "Distribución del Volumen por Empresa",
       x = "Empresa (Ticker)",
       y = "Volumen de Transacciones") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

3.1.2.3 Gráfico de serie de tiempo

# Nos aseguramos de que la variable "Date" esté en formato de fecha
df$...1 <- as.Date(df$...1)

# Filtramos las 4 empresas que queremos analizar
empresas_seleccionadas <- c("AAPL", "META", "BABA", "TSLA")
df_filtrado <- df %>%
  filter(Ticker %in% empresas_seleccionadas)

# Creamos el gráfico de serie de tiempo con facet_wrap()
ggplot(df_filtrado, aes(x = ...1, y = Close, color = Ticker)) +
  geom_line() +
  facet_wrap(~ Ticker, scales = "free_y", ncol = 2) +
  labs(title = "Evolución del Precio de Cierre de Empresas Seleccionadas",
       x = "Fecha",
       y = "Precio de Cierre (USD)") +
  theme(legend.position = "none") 

empresas_seleccionadas <- c("AMD", "ASML", "BABA", "CRM","CSCO")
df_filtrado <- df %>% 
  filter(Ticker %in% empresas_seleccionadas)
ggplot (df_filtrado, aes(x=...1,y= Close,color = Ticker))+
  geom_line()+
  labs(
    tittle = "Precio de cierre a lo largo del tiempo",
    x = "Fecha",
    y = "Precio de cierre",
    color = "Empresa"
  )

3.2 Variables categóricas

La base de datos solo presenta una base categórica: “Ticker”.

3.2.1 Tabla de frecuencia

# Tabla de frecuencia de la variable Ticker
tabla_frecuencia <- table(df$Ticker)
print(tabla_frecuencia)
## 
##  AAPL   AMD  AMZN  ASML  AVGO  BABA   CRM  CSCO  GOOG  META  MSFT  NFLX  NVDA 
##   209   209   209   209   209   209   209   209   209   209   209   209   209 
##  ORCL  PLTR   SAP TCEHY  TSLA   TSM 
##   209   209   209   209   209   209

3.2.2 Gráfico de barras

# Gráfico de barras de la tabla de frecuencia
barplot(tabla_frecuencia,
        main = "Frecuencia de Registros por Empresa",
        xlab = "Empresa (Ticker)",
        ylab = "Número de Registros",
        col = "steelblue",
        las = 2)

4. Revisión de valores faltantes (NA)

# Convertir a data frame clásico (necesario para missmap)
df <- as.data.frame(df)

# Visualizar los NA (datos faltantes) con un mapa
missmap(df)