#E1U1D
setwd("~/VERANOPYE")

library(pacman)
p_load(modeest, tidyverse, plotly, fdth, readxl)

pozos <- read_excel("pozos.xlsx")
pH <- pozos$PH
temp <- pozos$TEMP

#A) Ordene los datos menor a mayor, indique el valor máximo / mínimo y el rango total de datos.
#PH
sort(pH) #Orden de menor a mayor
##   [1] 6.1 6.3 6.4 6.4 6.4 6.4 6.4 6.4 6.4 6.5 6.5 6.5 6.5 6.5 6.5 6.5 6.5 6.5
##  [19] 6.5 6.5 6.5 6.5 6.5 6.5 6.5 6.5 6.6 6.6 6.6 6.6 6.6 6.6 6.6 6.6 6.6 6.6
##  [37] 6.6 6.6 6.6 6.6 6.6 6.6 6.6 6.6 6.6 6.6 6.6 6.6 6.6 6.7 6.7 6.7 6.7 6.7
##  [55] 6.7 6.7 6.7 6.7 6.8 6.8 6.8 6.8 6.8 6.8 6.8 6.8 6.8 6.8 6.8 6.8 6.8 6.8
##  [73] 6.8 6.8 6.8 6.8 6.8 6.8 6.8 6.8 6.8 6.8 6.8 6.8 6.8 6.8 6.8 6.8 6.8 6.8
##  [91] 6.8 6.8 6.8 6.8 6.8 6.8 6.8 6.8 6.8 6.8 6.8 6.8 6.8 6.8 6.8 6.8 6.8 6.8
## [109] 6.8 6.8 6.8 6.8 6.8 6.8 6.8 6.8 6.9 6.9 6.9 6.9 6.9 6.9 6.9 6.9 6.9 6.9
## [127] 6.9 6.9 6.9 6.9 6.9 6.9 6.9 6.9 6.9 6.9 6.9 6.9 6.9 6.9 6.9 6.9 6.9 6.9
## [145] 6.9 6.9 6.9 6.9 6.9 6.9 6.9 6.9 6.9 6.9 6.9 6.9 6.9 6.9 6.9 6.9 7.0 7.0
## [163] 7.0 7.0 7.0 7.0 7.0 7.0 7.0 7.0 7.0 7.0 7.0 7.0 7.0 7.0 7.0 7.0 7.0 7.0
## [181] 7.0 7.0 7.0 7.0 7.0 7.0 7.0 7.0 7.0 7.0 7.0 7.0 7.0 7.0 7.0 7.0 7.0 7.0
## [199] 7.0 7.0 7.0 7.0 7.0 7.0 7.0 7.0 7.0 7.0 7.0 7.0 7.0 7.0 7.0 7.0 7.0 7.0
## [217] 7.0 7.0 7.0 7.0 7.0 7.0 7.0 7.0 7.0 7.0 7.0 7.0 7.0 7.0 7.0 7.0 7.0 7.0
## [235] 7.0 7.0 7.0 7.0 7.1 7.1 7.1 7.1 7.1 7.1 7.1 7.1 7.1 7.1 7.1 7.1 7.1 7.1
## [253] 7.1 7.1 7.1 7.1 7.1 7.1 7.1 7.1 7.1 7.1 7.1 7.1 7.1 7.1 7.1 7.1 7.2 7.2
## [271] 7.2 7.2 7.2 7.2 7.2 7.2 7.2 7.2 7.2 7.2 7.3 7.3 7.3 7.3 7.3 7.3 7.4 7.4
## [289] 7.4 7.4 7.4 7.4 7.5
summary(pH) #Resumen estadístico
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    6.10    6.80    6.90    6.89    7.00    7.50
range(pH) #Rango (de donde a donde)
## [1] 6.1 7.5
min(pH) #Valor mínimo
## [1] 6.1
max(pH) #Valor máximo
## [1] 7.5
rangopH <- max(pH)-min(pH) #Cálculo de rango total
rangopH #Rango total
## [1] 1.4
#TEMPERATURA
sort(temp) #Orden de menor a mayor
##   [1] 25.6 25.8 26.2 26.3 26.3 26.4 26.4 26.8 26.8 26.9 27.0 27.0 27.1 27.2 27.2
##  [16] 27.3 27.3 27.3 27.3 27.4 27.4 27.4 27.4 27.4 27.5 27.5 27.5 27.5 27.5 27.5
##  [31] 27.5 27.5 27.5 27.5 27.5 27.5 27.6 27.7 27.7 27.7 27.7 27.8 27.8 27.8 27.8
##  [46] 27.8 27.8 27.8 27.8 27.8 27.8 27.8 27.9 27.9 27.9 27.9 27.9 27.9 27.9 27.9
##  [61] 27.9 27.9 27.9 27.9 27.9 27.9 28.0 28.0 28.0 28.0 28.0 28.0 28.0 28.0 28.0
##  [76] 28.0 28.0 28.0 28.0 28.0 28.0 28.0 28.0 28.0 28.1 28.1 28.1 28.2 28.2 28.2
##  [91] 28.2 28.2 28.2 28.2 28.2 28.2 28.2 28.2 28.2 28.3 28.3 28.3 28.3 28.3 28.3
## [106] 28.3 28.4 28.4 28.4 28.4 28.4 28.4 28.4 28.5 28.5 28.5 28.5 28.5 28.5 28.5
## [121] 28.5 28.5 28.6 28.6 28.6 28.6 28.6 28.6 28.6 28.6 28.6 28.6 28.6 28.6 28.6
## [136] 28.6 28.6 28.6 28.6 28.6 28.6 28.7 28.7 28.7 28.7 28.7 28.7 28.7 28.7 28.7
## [151] 28.7 28.7 28.7 28.7 28.8 28.8 28.8 28.8 28.8 28.8 28.8 28.8 28.8 28.8 28.8
## [166] 28.8 28.9 28.9 28.9 28.9 28.9 28.9 28.9 28.9 28.9 28.9 28.9 28.9 28.9 28.9
## [181] 28.9 28.9 28.9 28.9 29.0 29.0 29.0 29.0 29.0 29.0 29.0 29.0 29.0 29.0 29.0
## [196] 29.0 29.0 29.0 29.1 29.1 29.1 29.1 29.1 29.1 29.1 29.1 29.1 29.1 29.1 29.2
## [211] 29.2 29.2 29.2 29.2 29.2 29.2 29.2 29.2 29.2 29.2 29.2 29.2 29.2 29.3 29.3
## [226] 29.3 29.3 29.4 29.4 29.4 29.4 29.4 29.4 29.4 29.4 29.4 29.4 29.4 29.5 29.5
## [241] 29.5 29.5 29.5 29.5 29.5 29.5 29.5 29.6 29.6 29.6 29.7 29.7 29.8 29.8 29.8
## [256] 29.8 29.8 29.8 29.9 29.9 29.9 29.9 30.0 30.0 30.0 30.0 30.0 30.0 30.1 30.1
## [271] 30.1 30.1 30.2 30.2 30.2 30.3 30.3 30.3 30.3 30.4 30.5 30.6 30.8 30.9 31.1
## [286] 31.1 31.1 31.2 31.4 31.5 31.7 31.9 32.1
summary(temp) #Resumen estadístico
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    25.6    28.0    28.7    28.7    29.2    32.1
range(temp) #Rango (de donde a donde)
## [1] 25.6 32.1
min(temp) #Valor mínimo
## [1] 25.6
max(temp) #Valor máximo
## [1] 32.1
rangoTemp <- max(temp)-min(temp) #Cálculo de rango total
rangoTemp #Rango total
## [1] 6.5
#B) Obtenga (el número de) los intervalos (o clases) usando la fórmula según Sturges y el ancho de clase.
#PH
intpH <- 1+3.3*log10(length(pH)) #Cálculo de intervalos o clases
intpH <- ceiling(intpH) #Redondeo hacia el siguiente valor entero
intpH #Número dentervalos o clases
## [1] 10
ACpH <- rangopH/intpH #Cálculo de ancho de clase
ACpH #Valor del ancho de clase
## [1] 0.14
#TEMPERATURA
intTemp <- 1+3.3*log10(length(temp)) #Cálculo de intervalos o clases
intTemp <- ceiling(intTemp) #Redondeo hacia el siguiente valor entero
intTemp #Número dentervalos o clases
## [1] 10
ACtemp <- rangoTemp/intTemp #Cálculo de ancho de clase
ACtemp #Valor del ancho de clase
## [1] 0.65
#C) Construya una tabla de frecuencias que incluya: límites de clases, frecuencia absoluta, frecuencia relativa, frecuencia relativa porcentual, frecuencia acumulada y explique a detalle que refleja esta tabla.
#PH
sturgespH <- fdt(pH, breaks = "Sturges")
sturgespH
##   Class limits   f   rf rf(%)  cf  cf(%)
##  [6.039,6.193)   1 0.00  0.34   1   0.34
##  [6.193,6.346)   1 0.00  0.34   2   0.68
##    [6.346,6.5)   7 0.02  2.39   9   3.07
##    [6.5,6.653)  40 0.14 13.65  49  16.72
##  [6.653,6.807)  67 0.23 22.87 116  39.59
##  [6.807,6.961)  44 0.15 15.02 160  54.61
##  [6.961,7.114) 108 0.37 36.86 268  91.47
##  [7.114,7.268)  12 0.04  4.10 280  95.56
##  [7.268,7.421)  12 0.04  4.10 292  99.66
##  [7.421,7.575)   1 0.00  0.34 293 100.00
#EXPLICACIÓN: Los datos de pH se encuentran acumulados en el centro, ya que de la clase 4 a la clase 7 se concentran el 89% de los datos, siendo la clase 7 con el mayor número de frecuencias. Esto quiere decir que los extremos solo cuentan con el 11% de los datos. También se observa que los datos se encuentran un poco más concentrados hacia la derecha.

#TEMPERATURA
sturgesTemp <- fdt(temp, breaks = "Sturges")
sturgesTemp
##     Class limits  f   rf rf(%)  cf  cf(%)
##  [25.344,26.052)  2 0.01  0.68   2   0.68
##  [26.052,26.759)  5 0.02  1.71   7   2.39
##  [26.759,27.467) 17 0.06  5.80  24   8.19
##  [27.467,28.175) 63 0.22 21.50  87  29.69
##  [28.175,28.883) 79 0.27 26.96 166  56.66
##   [28.883,29.59) 81 0.28 27.65 247  84.30
##   [29.59,30.298) 28 0.10  9.56 275  93.86
##  [30.298,31.006)  9 0.03  3.07 284  96.93
##  [31.006,31.713)  7 0.02  2.39 291  99.32
##  [31.713,32.421)  2 0.01  0.68 293 100.00
#EXPLICACIÓN: Los datos de temperatura se encuentran centrados ligeramente hacia izquierda, ya que de la clase 4 a la clase 6 se concentran el 77% de los datos, siendo la clase 6 con el mayor número de frecuencias. 

#D) Elabore un histograma, polígono de frecuencias, histograma de frecuencias acumulado.
#PH 
plot(sturgespH, type="fh") #Histograma de frecuencias absolutas

plot(sturgespH, type="cfh") #Histograma de frecuencias acumuladas

plot(sturgespH, type="fp") #Polígono de frecuencias

#TEMPERATURA
plot(sturgesTemp, type="fh") #Histograma de frecuencias absolutas

plot(sturgesTemp, type="cfh") #Histograma de frecuencias acumuladas

plot(sturgesTemp, type="fp") #Polígono de frecuencias

#E) Obtenga la media, mediana, moda e interprete los resultados.
#PH
mean(pH) #Media
## [1] 6.890444
median(pH) #Mediana
## [1] 6.9
mlv(pH, method="mfv") #Moda
## [1] 7
#EXPLICACIÓN: La media (6.89), mediana (6.9) y moda(7) cuentan con una pequeña diferencia decimal entre sí pero los valores trabajados en el pH son muy sensibles a los decimales, por lo tanto en este caso la media es menor que la mediana, esto quiere decir que la distribución se encuentra sesgada a la izquierda (negativamente). 

#TEMPERATURA
mean(temp) #Media
## [1] 28.69795
median(temp) #Mediana
## [1] 28.7
mlv(temp, method="mfv") #Moda
## [1] 28.6
#EXPLICACIÓN: La media (28.69795), mediana (28.7) y moda (28.6) cuentan con una pequeña diferancia decimal al igual que el ejemplo pasado, en este caso la media también es menor a la mediana, por lo tanto se trata de una distribución sesgada hacia la izquierda (negativamente), pero también podría considerarse una distribución unimodal o simétrica por las pequeñas variaciones y tomar los valores como iguales al redondearlos.

#F)Obtenga la varianza y la desviación estándar, interprete los resultados. 
#¿Pueden estas medidas ser negativas?
#Estas medidas no pueden ser negativas, ya que consiste en sumas cuadráticas y cualquier número elevado al cuadrado (incluyendo negativos) siempre será positivo.
#PH
var(pH) #Varianza
## [1] 0.04908645
sd(pH) #Desviación estándar
## [1] 0.2215546
#EXPLICACIÓN: La dispersión de los datos de pH entre sí es muy pequeña, ya que cuenta con una desviación estándar de 0.2215546, esto quiere decir que los datos se encuentran muy concentrados.

#TEMPERATURA
var(temp) #Varianza
## [1] 1.035407
sd(temp) #Desviación estándar
## [1] 1.017549
#EXPLICACIÓN: La dispersión de los datos de temperaturaes muy baja al igual que el pH pero mayor que esta última, ya que cuenta con una desviación estándar de 1.017549.

#G) Elabore un gráfico de caja y bigote
#PH
boxplot(pH)

#TEMPERATURA
boxplot(temp)

#H) Elabora una gráfica de dispersión de pH versus temperatura, use ggplot aquí. 
ggplot(pozos) +
  geom_point(mapping = aes(x=pH, y=temp))

#En base a esta gráfica: ¿Considera que estas 2 variables están relacionadas?
#No, ya que en la gráfica de dispersión se alcanza a observar que para todos los pH (a excepción de los extremos, pero esto porque tienen baja frecuencia) se mantienen igual a distintas temperaturas, como por ejemplo el pH 6.8 se mantiene igual a 31°C y a 26°C. Así que se puede concluir que la tempertura no afecta al pH en este caso.