CARGA DE DATOS
#Carga de datos
setwd("~/UNI/ESTADISTICA")
datos <- read.csv("Depositos_Sulfuro.csv", sep = ";", dec = ".", header = TRUE)
CARGA DE LIBRERIAS
#Carga de librerias
library(dplyr)
library(knitr)
# GRAFICA DE DISTRIBUCION DE PROBABILIDA – VARIABLE GRAMOS DE ORO
# Limpieza de la variable
oro <- as.numeric(datos$augrd)
oro <- na.omit(oro)
oro <- subset(oro, oro > 0)
#Gráfica de la variable
histograma<-hist(oro,
freq = FALSE,
main="Gráfica 1.Distribucion de probabilidad de gramos de oro en
los depósitos masivos de sulfuros volcánicos",
xlab="Gramos de oro (g/T)",
ylab="Densidad de probabilidad",
col="blue")
Debido a la similitud de las barras asociamos con el modelo probabilístico log-normal
Gráfica del modelo probabiliístico
#Gráfica de modelo de probabilidad log-normal
hist(oro,
freq = FALSE,
main = "Gráfica 2. Modelo de probabilidad lognormal de gramos de oro",
xlab = "Gramos de oro (g/T)",
ylab = "Densidad de probabilidad",
col = "lightblue",
border = "black")
# Parámetros lognormales
h<-length(histograma$counts)
medialog <- mean(log(oro))
sd_log<-sd(log(oro))
sd_log
## [1] 1.54045
medialog
## [1] 3.010767
x <- seq(min(oro),max(oro),0.01)
curve(dlnorm(x,meanlog = medialog,sdlog = sd_log),add = TRUE,col=("black"),lwd=3)
#FECUENCIAS OBSERVADAS
Fo<-histograma$counts
Fo
## [1] 433 50 14 6 5 0 0 1
#FRECUENCIAS ESPERADAS
P<-c(0)
for (i in 1:h)
{P[i] <-(plnorm(histograma$breaks[i+1],medialog,sd_log)-
plnorm(histograma$breaks[i],medialog,sd_log))}
Fe<-P*length(oro)
Fe
## [1] 432.482642 41.511673 14.536427 6.981746 3.932796 2.444655 1.625964
## [8] 1.136476
#COMPARAR TAMAÑO REAL Y MODELO
sum(Fe)
## [1] 504.6524
n<-length(oro)
n
## [1] 509
TEST DE PEARSON
plot(Fo,Fe,main="Gráfica 3: Correlación de frecuencias en el modelo lognormal
de gramos de oro",xlab="Frecuencia Observada",ylab="Frecuencia esperada",col="blue3")
abline(lm(Fe ~ Fo), col="red",lwd=2)
Correlación<-cor(Fo,Fe)*100
Correlación
## [1] 99.97451
APRUEBA TEST PEARSON
TEST DE CHI-CUADRADO
grados_libertad <- (length(histograma$counts)-1)
grados_libertad
## [1] 7
nivel_significancia <- 0.05
Fo<-(histograma$counts/n)*100
Fo
## [1] 85.0687623 9.8231827 2.7504912 1.1787819 0.9823183 0.0000000 0.0000000
## [8] 0.1964637
Fe<-P*100
Fe
## [1] 84.9671203 8.1555350 2.8558797 1.3716594 0.7726516 0.4802858 0.3194429
## [8] 0.2232762
x2<-sum((Fe-Fo)^2/Fe)
x2
## [1] 1.231977
umbral_aceptacion <- qchisq(1 - nivel_significancia, grados_libertad)
umbral_aceptacion
## [1] 14.06714
x2<umbral_aceptacion
## [1] TRUE
APRUEBA TEST DE CHI-CUADRADO
TABLA DE RESUMEN
Variable<-c("Gramos de oro")
tabla_resumen<-data.frame(Variable,round(Correlación,2),round(x2,2),round(umbral_aceptacion,2))
colnames(tabla_resumen)<-c("Variable","Test Pearson (%)","Chi Cuadrado","Umbral de aceptación")
kable(tabla_resumen, format = "markdown", caption = "Tabla.Resumen de test de bondad al modelo de probabilidad")
| Variable | Test Pearson (%) | Chi Cuadrado | Umbral de aceptación |
|---|---|---|---|
| Gramos de oro | 99.97 | 1.23 | 14.07 |
¿Cuál es la probabilidad de que el contenido de oro esté entre 50 g/t y 150 g/t ?
# PROBABILIDAD ENTRE 50 y 150 g/T
probabilidad_oro <- plnorm(150, meanlog = medialog, sdlog = sd_log) -
plnorm(50, meanlog = medialog, sdlog = sd_log)
# En porcentaje
probabilidad_oro * 100
## [1] 18.21506
# Rango para la curva
x <- seq(min(oro), max(oro), 0.01)
# Curva log-normal
plot(x, dlnorm(x, meanlog = medialog, sdlog = sd_log),
col = "skyblue3", lwd = 2,
main = "Gráfica 4. Cálculo de probabilidades del contenido de oro en los
depositos masivos de sulfuros volcanicos",
ylab = "Densidad de probabilidad",
xlab = "Gramos de oro (g/T)")
# Área de probabilidad (50–150 g/T)
x_area <- seq(50, 150, 0.01)
y_area <- dlnorm(x_area, meanlog = medialog, sdlog = sd_log)
# Línea del área
lines(x_area, y_area, col = "red", lwd = 2)
# Área sombreada
polygon(c(x_area, rev(x_area)),
c(y_area, rep(0, length(y_area))),
col = rgb(1, 0, 0, 0.5),
border = NA)
# Leyenda
legend("topright",
legend = c("Modelo Log-normal", "Área de Probabilidad"),
col = c("skyblue3", "red"),
lwd = 2,
cex = 0.5)
#Texto
texto_prob <- paste0("Probabilidad = ",
round(probabilidad_oro*100, 2), " %")
text(x = 250,
y = max(dlnorm(x, medialog, sd_log)) * 0.7,
labels = texto_prob,
col = "black",
cex = 0.9,
font = 2)