# Librerías
library(ggplot2)
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.2.3
## 
## 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
#Generamos datos 

set.seed(182)
distancia <- seq(100, 2000, by = 100)

# pH ORDENADOS
ph_ordenado <- sort(runif(length(distancia), min = 4.2, max = 5.2))

# pH DESORDENADOS
set.seed(123)
ph_desordenado <- runif(length(distancia), min = 4.2, max = 5.2)

df1 <- data.frame(distancia, ph = ph_ordenado, tipo = "Ordenado")
df2 <- data.frame(distancia, ph = ph_desordenado, tipo = "Desordenado")

datos <- rbind(df1, df2)

# MEDIA ARITMÉTICA
media_arit_ordenado <- mean(ph_ordenado)
media_arit_desordenado <- mean(ph_desordenado)

# MEDIA PONDERADA: pesos = 1/distancia
w <- 1/distancia
media_pond_ordenado <- sum(ph_ordenado * w) / sum(w)
media_pond_desordenado <- sum(ph_desordenado * w) / sum(w)

media_arit_ordenado
## [1] 4.808135
media_pond_ordenado
## [1] 4.54269
#Centroides

centroides <- data.frame(
  tipo = c("Ordenado", "Ordenado", "Desordenado", "Desordenado"),
  metodo = c("Aritmética", "Ponderada", "Aritmética", "Ponderada"),
  valor = c(media_arit_ordenado, media_pond_ordenado,
            media_arit_desordenado, media_pond_desordenado)
)

centroides
##          tipo     metodo    valor
## 1    Ordenado Aritmética 4.808135
## 2    Ordenado  Ponderada 4.542690
## 3 Desordenado Aritmética 4.750808
## 4 Desordenado  Ponderada 4.725638
#Graficos

ggplot(datos, aes(x = distancia, y = ph, color = tipo)) +
  geom_line(size = 1) +
  geom_point(size = 2) +
  theme_minimal() +
  labs(title = "Transecto de valores de pH (ordenado vs desordenado)",
       x = "Distancia (m)",
       y = "pH")
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

#Graficos 

ggplot(datos, aes(x = distancia, y = ph, color = tipo)) +
  geom_point(alpha = 0.7) +
  geom_line(alpha = 0.5) +
  geom_hline(data = centroides,
             aes(yintercept = valor, linetype = metodo, color = tipo),
             size = 1) +
  theme_minimal() +
  labs(title = "Centroides (medias) sobre el transecto",
       x = "Distancia (m)", y = "pH",
       linetype = "Método") +
  scale_linetype_manual(values = c("dashed", "solid"))

#pesos
w1 <- 1/distancia              # inversa
w2 <- 1/(distancia^2)          # inversa al cuadrado
w3 <- distancia                # distancia

#medidas ph ponderado ordenado

mp_ordenado_w1 <- sum(ph_ordenado * w1) / sum(w1)
mp_ordenado_w2 <- sum(ph_ordenado * w2) / sum(w2)
mp_ordenado_w3 <- sum(ph_ordenado * w3) / sum(w3)

#medidas ph ponderado desordenado
mp_desordenado_w1 <- sum(ph_desordenado * w1) / sum(w1)
mp_desordenado_w2 <- sum(ph_desordenado * w2) / sum(w2)
mp_desordenado_w3 <- sum(ph_desordenado * w3) / sum(w3)

# Tabla comparativa
centroides_pesos <- data.frame(
  tipo = rep(c("Ordenado", "Desordenado"), each = 3),
  metodo = rep(c("IDW (1/d)", "IDW (1/d^2)", "Distancia"), 2),
  valor = c(
    mp_ordenado_w1, mp_ordenado_w2, mp_ordenado_w3,
    mp_desordenado_w1, mp_desordenado_w2, mp_desordenado_w3
  )
)

centroides_pesos
##          tipo      metodo    valor
## 1    Ordenado   IDW (1/d) 4.542690
## 2    Ordenado IDW (1/d^2) 4.329549
## 3    Ordenado   Distancia 4.950034
## 4 Desordenado   IDW (1/d) 4.725638
## 5 Desordenado IDW (1/d^2) 4.630093
## 6 Desordenado   Distancia 4.728365