Análisis técnico

Para trabajar, primero decargué las dos tablas de demanda y precio.

library(readxl)
## Warning: package 'readxl' was built under R version 4.3.2
Demanda <- read_excel("Ejercicio 2.xlsx", 
    sheet = "Demanda")

Demanda
## # A tibble: 46,680 × 3
##    Fecha                Hora `Energia Asiganada MWh`
##    <dttm>              <dbl>                   <dbl>
##  1 2018-01-01 00:00:00     1                  22659.
##  2 2018-01-01 00:00:00     2                  21891.
##  3 2018-01-01 00:00:00     3                  21194.
##  4 2018-01-01 00:00:00     4                  20501.
##  5 2018-01-01 00:00:00     5                  19898.
##  6 2018-01-01 00:00:00     6                  19625.
##  7 2018-01-01 00:00:00     7                  19370.
##  8 2018-01-01 00:00:00     8                  18828.
##  9 2018-01-01 00:00:00     9                  19023.
## 10 2018-01-01 00:00:00    10                  20043.
## # ℹ 46,670 more rows
PRECIO <- read_excel("Ejercicio 2.xlsx", 
    sheet = "Precio de la energia")
PRECIO
## # A tibble: 46,776 × 3
##    Fecha                Hora `Precio promedio de la energia $/MWh`
##    <dttm>              <dbl>                                 <dbl>
##  1 2018-01-01 00:00:00     1                                  635.
##  2 2018-01-01 00:00:00     2                                  609.
##  3 2018-01-01 00:00:00     3                                  604.
##  4 2018-01-01 00:00:00     4                                  581.
##  5 2018-01-01 00:00:00     5                                  547.
##  6 2018-01-01 00:00:00     6                                  508.
##  7 2018-01-01 00:00:00     7                                  499.
##  8 2018-01-01 00:00:00     8                                  452.
##  9 2018-01-01 00:00:00     9                                  460.
## 10 2018-01-01 00:00:00    10                                  565.
## # ℹ 46,766 more rows

Queremos ver la relación entre las variables

dem <- Demanda$`Energia Asiganada MWh`
precio <- PRECIO$`Precio promedio de la energia $/MWh`
precio <-precio[1:46680]  #Para que los dos arreglos sean del mismo tamaño
fechas <- Demanda$Fecha

¿Cuál es la correlación entre estas dos variables?

cor(dem, precio)
## [1] 0.2011623

Una correlación de 0.201162 indica una relación positiva débil entre las dos variables analizadas. Esto quiere decir que mientras aumente la demanda también el precio, como indica la ley de la demanda, aunque en este caso en específico no es tanta la relación entre estas dos variables.

Varianza de cada variable

vardem <- var(dem)
varpr <- var(precio)

Graficando vemos que

datos <- data.frame(fechas, precio, dem)

library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.3.2
library(gridExtra)
## Warning: package 'gridExtra' was built under R version 4.3.2
ggplot(data = datos, aes(x = format(fechas, "%Y"), y =precio )) +
  geom_boxplot() + theme_bw()

En este grafico podemos observar como, a pesar de que sí hay mucha dispersion de datos, la media del precio tiende a bajar año con año.

Otra cosa importante que podemos descrubirir es cómo se distribuyen los datos ya sea de demanda o de precios y si es que se distribuyen igual. Esto nos ayudará a calcular probabilidades y estar más consicientes del movimiento de los datos. Para esto, usaremos una prueba Shapiro que establece que,

H0: los datos son normales Ha: Los datos no son normales

(usaremos poisson para ejemplificar)

shapiro.test(precio[1:5000])
## 
##  Shapiro-Wilk normality test
## 
## data:  precio[1:5000]
## W = 0.91789, p-value < 2.2e-16

Como el p valor es menor que 0.05 podemos decir que los datos de precios no se distribuyen normales

shapiro.test(dem[1:5000])
## 
##  Shapiro-Wilk normality test
## 
## data:  dem[1:5000]
## W = 0.99227, p-value = 7.322e-16

La demanda tampoco se distribuye normal.

Usando pruebas de hipótesis se pueden responder preguntas relevantes, por ejemplo si un cliente pone como condición para firmar contrato de un año que se le compruebe que los precios no tendrán una variabilidad mayor al 30,000 pesos.

En estos casos se podría usar la siguiente función:

hipvar <-  function(alpha, n, sig0, scuad, colas){
  
  
  df <- n-1
  #Estadístico de prueba
  x <-  (n-1)*scuad/sig0
  
  #Seleccion de cola (1=cola izq, 2=cola der, 3=dos colas)
  ####Cola izquierda
  if (colas==1){ 
    xa <- qchisq(alpha,df,lower.tail=TRUE)
    p <- pchisq(x, df,lower.tail=TRUE)
    print("Probaremos la hipótesis")     
    cat("H0: sig^2 = sig0^2 =",sig0, "\n")
    print("vs.")           
    cat("H1: sig^2<sig0^2=",sig0, " \n")
    print("")          
    print("Tus datos son: ")     
    cat("El estadístico de prueba es", x, "\n")
    cat("El valor del cuantil izquierdo es", xa, "\n")
    cat("El p-valor es", p, "\n")
    if ( x<xa){
      resultado=0
    }else {
      if(p<=alpha){
        resultado=0
      }else {
        resultado=1
      }
    }
    ####Cola derecha
  }else if (colas==2){
    xa <- qchisq(alpha,df,lower.tail=FALSE)
    p <- pchisq(x, df,lower.tail=FALSE)
    print("Probaremos la hipótesis")     
    cat("H0: sig^2 = sig0^2=",sig0, " \n")
    print("vs. ")          
    cat("H1: sig^2 > sig0^2 =",sig0, "\n")
    print("")      
    print("Tus datos son: ")
    cat("El estadístico de prueba es", x, "\n")
    cat("El valor del cuantil derecho es", xa, "\n")
    cat("El p-valor es", p, "\n")
    if ( x>xa){
      resultado=0
    }else {
      if(p<=alpha){
        resultado=0
      }else {
        resultado=1
      }
    }
    #####Dos colas
  }else if (colas==3){
    xai <- qchisq(alpha/2,df,lower.tail=TRUE)
    xad <- qchisq(alpha/2,df,lower.tail=FALSE)
    p <- 2*min(pchisq(x,df),pchisq(x,df,lower.tail = FALSE))
    print("Probaremos la hipótesis")     
    cat("H0: sig^2 = sig0^2 =",sig0, "\n")
    print("vs.")        
    cat("H1: sig^2 != sig0^2 =",sig0, "\n")
    print("")     
    print("Tus datos son: ")     
    cat("El estadístico de prueba es", x, "\n")
    cat("La cola izquierda es ", xai, "\n" )
    cat("La cola derecha es ", xad, "\n" )
    cat("El p-valor es", p, "\n")
    if (x<xai||x>xad){
      resultado=0
    }else {
      if(p<=alpha){
        resultado=0
      }else {
        resultado=1
      }
    }
  }else{
    print("La cola tiene que ser 1=cola izquierda, 2=cola derecha o 3=dos colas")      
  } 
  if (resultado==1){
    cat("No se rechaza H0 a un nivel", alpha, "\n")
    cat("No existe evidencia suficiente para afirmar H1")
  }else if(resultado==0){
    cat("Se rechaza H0 a un nivel",alpha, "\n")
  }
}
hipvar(0.05, 46680, 30000, varpr, 2)
## [1] "Probaremos la hipótesis"
## H0: sig^2 = sig0^2= 30000  
## [1] "vs. "
## H1: sig^2 > sig0^2 = 30000 
## [1] ""
## [1] "Tus datos son: "
## El estadístico de prueba es 616709.8 
## El valor del cuantil derecho es 47182.71 
## El p-valor es 0 
## Se rechaza H0 a un nivel 0.05

Como se rechaza H0 con una probabilidad de error del 5% podemos decir que la variabilidad en los precios sí puede superar los $30,000.