if (!require("readxl")) install.packages("readxl")
## Loading required package: readxl
library(readxl)
datos <- read_excel("Base_Datos_Mineralogia.xlsx")
Contexto La base de datos Base_Datos_Mineralogia.xlsx recopila información geológica de 100 muestras de rocas recolectadas en una zona con actividad tectónica activa.
Cada muestra fue clasificada segĆŗn su tipo de roca (Ćgnea, sedimentaria o metamórfica), e identificada por su mineral principal.
AdemĆ”s, se obsevaron tres propiedades fĆsico-quĆmicas clave:
Dureza Mohs: Escala que mide la resistencia del mineral al rayado, útil para su identificación.
Contenido de SĆlice (%): Porcentaje de dióxido de silicio presente en la muestra, relevante en la clasificación de rocas y su origen.
Color: Atributo cualitativo que puede relacionarse con la composición quĆmica o procesos de alteración.
Esta información permite realizar anĆ”lisis estadĆsticos como pruebas de hipótesis para conocer si ciertas propiedades (como dureza, proporción de colores o variabilidad en la sĆlice) se ajustan a parĆ”metros esperados o teóricos.
AsĆ, se puede evaluar la homogeneidad mineralógica de las muestras y detectar patrones geológicos relevantes.
head(datos)
# Cargar librerĆas necesarias
library(readxl)
library(ggplot2)
# Leer los datos
datos <- read_excel("Base_Datos_Mineralogia.xlsx")
# Hipótesis:
# H0: mu = 5
# H1: mu ā 5
# Prueba t para la media
resultado_t <- t.test(datos$Dureza_Mohs, mu = 5, alternative = "two.sided", conf.level = 0.95)
# Crear el texto del resultado
texto_resultado <- if (resultado_t$p.value < 0.05) {
paste0("Resultado: Se RECHAZA H0\n",
"p-valor = ", round(resultado_t$p.value, 4), "\n",
"La media es distinta de 5.")
} else {
paste0("Resultado: NO se rechaza H0\n",
"p-valor = ", round(resultado_t$p.value, 4), "\n",
"No hay evidencia suficiente para afirmar que la media es distinta de 5.")
}
# Mostrar resultado en consola tambiƩn
print(resultado_t)
##
## One Sample t-test
##
## data: datos$Dureza_Mohs
## t = 2.0397, df = 99, p-value = 0.04404
## alternative hypothesis: true mean is not equal to 5
## 95 percent confidence interval:
## 5.011010 5.797904
## sample estimates:
## mean of x
## 5.404457
cat("\n", texto_resultado, "\n")
##
## Resultado: Se RECHAZA H0
## p-valor = 0.044
## La media es distinta de 5.
# GrÔfico: Curva de densidad + recuadro de interpretación
ggplot(datos, aes(x = Dureza_Mohs)) +
geom_density(fill = "skyblue", alpha = 0.5) +
geom_vline(xintercept = 5, color = "red", linetype = "dashed", size = 1.2) +
annotate("text", x = Inf, y = Inf, label = texto_resultado,
hjust = 1.1, vjust = 1.1, size = 4, color = "black",
fontface = "bold",
inherit.aes = FALSE) +
labs(title = "Curva de Densidad de Dureza Mohs",
subtitle = "LĆnea roja: Media hipotĆ©tica = 5",
x = "Dureza Mohs", y = "Densidad") +
theme_minimal()
## 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.
## Warning in annotate("text", x = Inf, y = Inf, label = texto_resultado, hjust =
## 1.1, : Ignoring unknown parameters: `inherit.aes`
# Cargar librerĆas necesarias
library(readxl)
library(ggplot2)
# Leer los datos
datos <- read_excel("Base_Datos_Mineralogia.xlsx")
# Crear variable binaria: 1 si es Negro, 0 si no
datos$es_negro <- ifelse(datos$Color == "Negro", 1, 0)
# ParƔmetros
x <- sum(datos$es_negro) # número de éxitos
n <- nrow(datos) # tamaƱo de muestra
p0 <- 0.30 # proporción bajo H0
phat <- x / n # proporción muestral
se <- sqrt(p0 * (1 - p0) / n) # error estƔndar
z <- (phat - p0) / se # estadĆstico Z
p_value <- 2 * (1 - pnorm(abs(z))) # p-valor
# Texto para el recuadro de interpretación
texto_resultado <- if (p_value < 0.05) {
paste0("Resultado: Se RECHAZA H0\n",
"p-valor = ", round(p_value, 4), "\n",
"La proporción es distinta de 30%.")
} else {
paste0("Resultado: NO se rechaza H0\n",
"p-valor = ", round(p_value, 4), "\n",
"No hay evidencia suficiente para afirmar que la proporción es distinta de 30%.")
}
# Mostrar resultado tambiƩn en consola
cat("Proporción muestral =", round(phat, 4), "\n")
## Proporción muestral = 0.2
cat("Z =", round(z, 4), "\n")
## Z = -2.1822
cat("p-valor =", round(p_value, 4), "\n")
## p-valor = 0.0291
cat(texto_resultado, "\n")
## Resultado: Se RECHAZA H0
## p-valor = 0.0291
## La proporción es distinta de 30%.
# Crear curva de distribución normal
x_vals <- seq(-4, 4, length.out = 500)
y_vals <- dnorm(x_vals)
df_plot <- data.frame(Z = x_vals, Densidad = y_vals)
# GrĆ”fico con curva de Gauss, lĆneas crĆticas, z observado e interpretación
ggplot(df_plot, aes(x = Z, y = Densidad)) +
geom_line(color = "blue", size = 1) +
geom_vline(xintercept = z, color = "black", linetype = "dotted", size = 1.2) +
geom_vline(xintercept = qnorm(0.975), color = "red", linetype = "dashed") +
geom_vline(xintercept = -qnorm(0.975), color = "red", linetype = "dashed") +
annotate("text", x = 3.5, y = 0.3, label = texto_resultado,
hjust = 1, vjust = 1, size = 4, color = "black", fontface = "bold") +
labs(title = "Distribución normal estÔndar para prueba de proporción",
subtitle = paste0("Z = ", round(z, 2),
", lĆneas rojas = valores crĆticos ±1.96"),
x = "Z", y = "Densidad") +
theme_minimal()
# Cargar librerĆas necesarias
library(readxl)
library(ggplot2)
# Leer los datos
datos <- read_excel("Base_Datos_Mineralogia.xlsx")
# ParƔmetros
var_hipotetica <- 200 # H0: varianza = 200
n <- nrow(datos)
gl <- n - 1
var_muestral <- var(datos$`Contenido_Silice_%`) # ”Aquà estÔ corregido!
# EstadĆstico chi-cuadrado
chi2_stat <- (gl * var_muestral) / var_hipotetica
# Valores crĆticos
alpha <- 0.05
chi2_izq <- qchisq(alpha / 2, df = gl)
chi2_der <- qchisq(1 - alpha / 2, df = gl)
# p-value bilateral
if (chi2_stat < var_hipotetica) {
p_value <- 2 * pchisq(chi2_stat, df = gl)
} else {
p_value <- 2 * (1 - pchisq(chi2_stat, df = gl))
}
# Interpretación en texto
texto_resultado <- if (p_value < alpha) {
paste0("Resultado: Se RECHAZA H0\n",
"p-valor = ", round(p_value, 4), "\n",
"La varianza es distinta de 200.")
} else {
paste0("Resultado: NO se rechaza H0\n",
"p-valor = ", round(p_value, 4), "\n",
"No hay evidencia suficiente para afirmar que la varianza es distinta de 200.")
}
# Mostrar resultados en consola
cat("Varianza muestral =", round(var_muestral, 4), "\n")
## Varianza muestral = 191.2639
cat("Chi² =", round(chi2_stat, 4), "\n")
## Chi² = 94.6756
cat("p-valor =", round(p_value, 4), "\n")
## p-valor = 0.7915
cat(texto_resultado, "\n")
## Resultado: NO se rechaza H0
## p-valor = 0.7915
## No hay evidencia suficiente para afirmar que la varianza es distinta de 200.
# Curva chi-cuadrado
x_vals <- seq(0, max(chi2_der * 1.5, chi2_stat + 10), length.out = 500)
y_vals <- dchisq(x_vals, df = gl)
df_plot <- data.frame(x = x_vals, y = y_vals)
# GrÔfico con interpretación
ggplot(df_plot, aes(x = x, y = y)) +
geom_line(color = "blue", size = 1) +
geom_vline(xintercept = chi2_izq, color = "red", linetype = "dashed") +
geom_vline(xintercept = chi2_der, color = "red", linetype = "dashed") +
geom_vline(xintercept = chi2_stat, color = "black", linetype = "dotted", size = 1.2) +
annotate("text", x = max(x_vals) * 0.95, y = max(y_vals) * 0.9,
label = texto_resultado, hjust = 1, vjust = 1,
size = 4, color = "black", fontface = "bold") +
labs(title = "Distribución Chi-cuadrado para prueba de varianza",
subtitle = paste0("Chi² observado = ", round(chi2_stat, 2),
", lĆneas rojas = valores crĆticos"),
x = expression(chi^2), y = "Densidad") +
theme_minimal()