#Cargar Datos
setwd("C:/Users/ronal/OneDrive/Desktop")
datos <- read.csv("database (1).csv",
header = TRUE,
sep = ",",
dec = ".")
#2. Cargar Libreria
library(readxl)
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
#3. Extracción y limpieza de la variable
Environmental <- na.omit(datos$Environmental.Remediation.Costs)
Environmental <- Environmental[Environmental > 0]
#4. Rango y número de clases (Regla de Sturges)
xmin <- min(Environmental)
xmax <- max(Environmental)
R <- xmax - xmin
K <- floor(1 + 3.3 * log10(length(Environmental)))
A <- R / K
xmin
## [1] 35
xmax
## [1] 635000000
R
## [1] 634999965
K
## [1] 11
A
## [1] 57727270
#5. Límites de clase y marca de clase
Li <- seq(from = xmin, to = xmax - A, by = A)
Li <- round(Li, 2)
Ls <- seq(from = xmin + A, to = xmax, by = A)
Ls <- round(Ls, 2)
MC <- round((Li + Ls) / 2, 2)
length(MC) == K
## [1] TRUE
#6. Tabla de distribución de frecuencias
#6.1 Frecuencia absoluta
ni <- numeric(K)
for (i in 1) {
ni[i] <- sum(Environmental >= Li[i] & Environmental < Ls[i])
}
ni[K] <- sum(Environmental >= Li[K] & Environmental <= xmax)
sum(ni)
## [1] 1547
length(Environmental)
## [1] 1547
sum(ni) == length(Environmental)
## [1] TRUE
#6.2 Frecuencias relativas y acumuladas
hi <- ni / sum(ni) * 100
Ni_asc <- cumsum(ni)
Ni_desc <- rev(cumsum(rev(ni)))
Hi_asc <- cumsum(hi)
Hi_desc <- rev(cumsum(rev(hi)))
#6.3 Tabla final de frecuencias
TDF <- data.frame(
Li = Li,
Ls = Ls,
MC = MC,
ni = ni,
hi_porc = round(hi, 2),
Ni_asc = Ni_asc,
Ni_desc = Ni_desc,
Hi_asc_porc = round(Hi_asc, 2),
Hi_desc_porc = round(Hi_desc, 2)
)
TDF
## Li Ls MC ni hi_porc Ni_asc Ni_desc Hi_asc_porc
## 1 35 57727305 28863670 1546 99.94 1546 1547 99.94
## 2 57727305 115454574 86590939 0 0.00 1546 1 99.94
## 3 115454574 173181844 144318209 0 0.00 1546 1 99.94
## 4 173181844 230909113 202045478 0 0.00 1546 1 99.94
## 5 230909113 288636383 259772748 0 0.00 1546 1 99.94
## 6 288636383 346363652 317500018 0 0.00 1546 1 99.94
## 7 346363652 404090922 375227287 0 0.00 1546 1 99.94
## 8 404090922 461818191 432954557 0 0.00 1546 1 99.94
## 9 461818191 519545461 490681826 0 0.00 1546 1 99.94
## 10 519545461 577272730 548409096 0 0.00 1546 1 99.94
## 11 577272730 635000000 606136365 1 0.06 1547 1 100.00
## Hi_desc_porc
## 1 1e+02
## 2 6e-02
## 3 6e-02
## 4 6e-02
## 5 6e-02
## 6 6e-02
## 7 6e-02
## 8 6e-02
## 9 6e-02
## 10 6e-02
## 11 6e-02
#7. Histograma
h <- hist(
Environmental,
main = "Gráfica No.1: Distribución de Costos Ambientales",
breaks = seq(min(Environmental), max(Environmental) + A, by = A),
xlab = "Costos Ambientales",
ylab = "Frecuencia",
col = "pink2",
xaxt = "n"
)
axis(1,
at = pretty(h$breaks),
labels = format(pretty(h$breaks), scientific = FALSE))

#8. Ojivas ascendente y descendente
x_asc <- c(min(Ls), Ls)
y_asc <- c(0, Ni_asc)
x_desc <- c(Li, max(Li))
y_desc <- c(Ni_desc, 0)
x_range <- range(c(x_asc, x_desc))
y_range <- c(0, max(c(y_asc, y_desc)))
plot(x_asc, y_asc, type = "o", col = "skyblue",
main = "Gráfica No.2: Ojivas Ascendente y Descendente de Costos Ambientales",
xlab = "Costos Ambientales",
ylab = "Frecuencia acumulada",
xlim = x_range, ylim = y_range,
xaxt = "n", yaxt = "n")
axis(1,
at = pretty(x_range),
labels = format(pretty(x_range), scientific = FALSE))
axis(2, at = pretty(y_range))
lines(x_desc, y_desc, type = "o", col = "pink4")
legend("topright",
legend = c("Ascendente", "Descendente"),
col = c("skyblue", "pink4"),
lty = 1, pch = 1, cex = 0.8)

#9. Diagramas de caja
boxplot(Environmental, horizontal = TRUE, col = "blue",
main = "Gráfica No.3: Remediación de Costos Ambientales",
xlab = "Costos Ambientales",
xaxt = "n")
axis(1,
at = pretty(Environmental),
labels = format(pretty(Environmental), scientific = FALSE))

#10. Diagrama de caja logarítmico
boxplot(log10(Environmental),
horizontal = TRUE,
col = "skyblue",
main = "Gráfica No.4 (log10): Costos Ambientales",
xlab = "log10(Costos Ambientales)")

#11. Indicadores estadísticos
n <- length(Environmental)
minimo <- min(Environmental)
maximo <- max(Environmental)
media <- mean(Environmental)
mediana <- median(Environmental)
varianza <- var(Environmental)
desviacion <- sd(Environmental)
Q1 <- quantile(Environmental, 0.25)
Q3 <- quantile(Environmental, 0.75)
RIC <- Q3 - Q1
Indicadores <- data.frame(
n = n,
Minimo = minimo,
Maximo = maximo,
Media = media,
Mediana = mediana,
Varianza = varianza,
Desviacion_Estandar = desviacion,
Q1 = Q1,
Q3 = Q3,
RIC = RIC
)
Indicadores
## n Minimo Maximo Media Mediana Varianza Desviacion_Estandar
## 25% 1547 35 635000000 653619.9 11200 2.622951e+14 16195527
## Q1 Q3 RIC
## 25% 3000 54523.5 51523.5
#CONCLUSIONES
###El análisis estadístico de la variable Costos Ambientales evidencia una distribución altamente asimétrica positiva, caracterizada por una fuerte concentración de observaciones en valores bajos y la presencia de valores extremos de gran magnitud. La tabla de distribución de frecuencias muestra que más del 99 % de los datos se agrupan en el primer intervalo de clase, mientras que los intervalos intermedios no presentan observaciones, y únicamente un valor extremo se ubica en el último intervalo.
##Los indicadores estadísticos refuerzan este comportamiento, ya que la media se encuentra notablemente influenciada por valores atípicos, mientras que la mediana representa de mejor manera el costo ambiental típico. Asimismo, la elevada varianza y desviación estándar reflejan una alta dispersión de los datos, propia de variables económicas asociadas a eventos de gran impacto pero baja frecuencia.Las representaciones gráficas (histograma, boxplot y ojivas) confirman estos resultados, destacando la presencia de outliers y la concentración de datos en rangos bajos. En conjunto, los resultados obtenidos permiten concluir que los costos ambientales analizados presentan un comportamiento no simétrico, típico de fenómenos económicos y ambientales, donde la mayoría de los eventos generan costos moderados, pero algunos pocos casos ocasionan pérdidas extraordinarias.