#E1U1
#establecer folder de trabajo
setwd("~/PyE")
#cargar las bibliotecas necesarias
library(readxl)
library(fdth)
##
## Attaching package: 'fdth'
## The following objects are masked from 'package:stats':
##
## sd, var
library(ggplot2)
#importar tabla de excel y guardarla en una variable de R
pozos <- read_excel ("pozos.xlsx")
View (pozos)
#se establece la variable de pH
pH<- pozos$PH
#se ordenan los datos de menor a mayor
sort(pH)
## [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
View (sort(pH))
#se obtiene el valor maximo
max(pH)
## [1] 7.5
View (max(pH))
#se obtiene el valor minimo
min(pH)
## [1] 6.1
View (min(pH))
#se obtiene el rango total de datos
rangopH <- max(pH)- min(pH)
rangopH
## [1] 1.4
#se obtiene el numero de clases usando la formula segun Sturges
nclass.Sturges(pH)
## [1] 10
#aunque si se obtiene manualmente serian 9 clases.
#se obtiene el ancho de clase con los datos de R y los datos que se obtuvieron manual
anchoR <- (1.4/10)
anchoR
## [1] 0.14
anchoM <- (1.4/9)
anchoM
## [1] 0.1555556
#se construye tabla de frecuencias
dist <- fdt(pH, breaks = "Sturges")
dist
## 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
#en la primera columna se pueden observar los limites de clase que en total son 10.
#aunque se habia calculado que aproximadamnete el ancho de cada clase seria de .14
#con esta funcion de r puede variar un poco, y su ancho es de .153.
#enseguida se tiene la columna de "f" esto representa la frecuencia absoluta,
#es decir cuantos datos existen entre el rango de la clase.
#enseguida esta "rf" que significa frecuencias relativa. La frecuencia relativa es
#es el cociente entre la frecuencia absoluta de un determinado valor y el número total de datos
#"rf%" es la frecuencia relativa porcentual, para obtenerlo solo se multiplica la frecuencia
#relativa por 100.
#"cf" es la frecuencia acumulada, es decir se le suman los datos anteriores de cada clase para
#conocer la distribucion de los datos en las clases. En otras palabras es es el resultado de sumar sucesivamente
#las frecuencias absolutas o relativas, desde el menor al mayor de sus valores.
#y por ultimo "cf%" es la frecuencia acumulada porcentual, que para obtenerlo solo se van sumando
#sucesivamente la frecuencia relativa procentual de los datos anteriores
#Ahora, lo que se puede observar en esta tabla de frecuencia, es que la mayor parte de los
#datos se encuentra en el limite de clase de [6.961,7.114), se encuentran 108 de los 293 datos.
#el unico otro limite de clase con una frecuencia absoluta tan grande es el de [6.653,6.807)
#con 67 datos. Podemos observar como varias clases solo cuentan con una frecuencia
#absoluta de 1, pero cada clase tiene su frecuencia absoluta.
#histograma segun sturges
hist(pH, breaks = "Sturges")

#histograma de frecuencias absolutas
plot(dist, type = "fh")

#poligono de frecuencias absolutas
plot(dist, type = "fp")

#poligono de frecuencias acumuladas
plot(dist, type = "cfp")

#histograma de frecuencias acumuladas
plot(dist, type = "cfh")

#obtener media, mediana y moda de los datos
mean(pH)
## [1] 6.890444
median(pH)
## [1] 6.9
Mode <- function(x) {
ux <- unique(x)
ux[which.max(tabulate(match(x, ux)))]
}
Mode(pH)
## [1] 7
#se puede observar que los tres datos son muy cercanos entre si, pero
#la mediana es mayor que la de media entonces la distribución está sesgada a la
#izquierda (negativamente), aunque mi hipotesis es que la varianza y la desviacion
#sera muy poco
#Varianza
var(pH)
## [1] 0.04908645
#desviacion estandar
sd(pH)
## [1] 0.2215546
#podemos observar que la varianza y la desviacion son muy cercanas a cero, por lo que los valores de
#la serie estan mas concentrados alrededor de la media.
#estas dos medidas, no pueden ser negativas.
#Grafico de caja y bigote
boxplot(pH)

#se establece la variable de temperatura
temperatura<- pozos$TEMP
#se ordenan los datos de menor a mayor
sort(temperatura)
## [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
View (sort(temperatura))
#se obtiene el valor maximo
max(temperatura)
## [1] 32.1
View (max(temperatura))
#se obtiene el valor minimo
min(temperatura)
## [1] 25.6
View (min(temperatura))
#se obtiene el rango total de datos
rangopH <- max(temperatura)- min(temperatura)
rangopH
## [1] 6.5
#se obtiene el numero de clases usando la formula segun Sturges
nclass.Sturges(temperatura)
## [1] 10
#aunque si se obtiene manualmente serian 9 clases.
#se obtiene el ancho de clase con los datos de R y los datos que se obtuvieron manual
anchoR <- (6.5/10)
anchoR
## [1] 0.65
anchoM <- (6.5/9)
anchoM
## [1] 0.7222222
#se construye tabla de frecuencias
dist <- fdt(temperatura, breaks = "Sturges")
dist
## 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
#en la primera columna se pueden observar los limites de clase que en total son 10.
#aunque se habia calculado que aproximadamnete el ancho de cada clase seria de .605
#con esta funcion de r puede variar un poco, y su ancho es de .708.
#enseguida se tiene la columna de "f" esto representa la frecuencia absoluta,
#es decir cuantos datos existen entre el rango de la clase.
#enseguida esta "rf" que significa frecuencias relativa. La frecuencia relativa es
#es el cociente entre la frecuencia absoluta de un determinado valor y el número total de datos
#"rf%" es la frecuencia relativa porcentual, para obtenerlo solo se multiplica la frecuencia
#relativa por 100.
#"cf" es la frecuencia acumulada, es decir se le suman los datos anteriores de cada clase para
#conocer la distribucion de los datos en las clases. En otras palabras es es el resultado de sumar sucesivamente
#las frecuencias absolutas o relativas, desde el menor al mayor de sus valores.
#y por ultimo "cf%" es la frecuencia acumulada porcentual, que para obtenerlo solo se van sumando
#sucesivamente la frecuencia relativa procentual de los datos anteriores
#Ahora, lo que se puede observar en esta tabla de frecuencia, es que la mayor parte de los
#datos se encuentra en el limite de clase de [28.883,29.59), se encuentran 81 de los 293 datos.
#El otro limite de clase con una gran cantidad de datos es la de [28.175,28.883), la cual tiene
#una frecuencia absoluta de 79.
#Todos los limites de clase tienen una frecuencia absoluta >= a 2.
#histograma segun sturges
hist(temperatura, breaks = "Sturges")

#histograma de frecuencias absolutas
plot(dist, type = "fh")

#poligono de frecuencias absolutas
plot(dist, type = "fp")

#poligono de frecuencias acumuladas
plot(dist, type = "cfp")

#histograma de frecuencias acumuladas
plot(dist, type = "cfh")

#obtener media, mediana y moda de los datos
mean(temperatura)
## [1] 28.69795
median(temperatura)
## [1] 28.7
Mode <- function(x) {
ux <- unique(x)
ux[which.max(tabulate(match(x, ux)))]
}
Mode(temperatura)
## [1] 28.6
#se puede observar que los tres datos son muy cercanos entre si, pero
#la mediana es mayor que la de media entonces la distribución está sesgada a la
#izquierda (negativamente), aunque mi hipotesis es que la varianza y la desviacion
#sera muy poco
#Varianza
var(temperatura)
## [1] 1.035407
#desviacion estandar
sd(temperatura)
## [1] 1.017549
#podemos observar que la varianza y la desviacion pequenas, pues ambas
#son cercanas a 1, por lo que los valores de
#la serie estan mas concentrados alrededor de la media.
#estas dos medidas, no pueden ser negativas.
#Grafico de caja y bigote
boxplot(temperatura)

#gráfica de dispersión de pH versus temperatura
ggplot(data = pozos)+
geom_point(mapping = aes(x= temperatura, y=pH))

#al observar el grafico de dispersion me doy cuenta que cuando la temperatura es
#menor el pH aumenta, en cambio cuando la temperatura aumenta el pH disminuye un poco.
#especialmente se puede observar esto en el valor extremo del pH, se encuentra en
#la temperatura mas baja. Por lo que yo concluyo que efectivamente estas dos medidas
#(temperatura y pH) estan relacionadas.