Se carga los datos y paquetes necesarios para el correctos funcionamiento de nuestro programa y calculos requeridos.
se introducce un excel el conoceremos como “Base Datos Geologia Fosil” referente en nuestros calculos, pasando por un filtro los datos de interes en nuestro calculo, mas adelante revisaremos la estruturas de estos.
library(readxl)
library(dplyr)
##
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(ggplot2)
datos <- read_excel("Base_Datos_Geologia_Fosil.xlsx")
# Filtrar solo Braquiópodo y Dinosaurio
datos <- datos %>%
filter(Tipo_Fosil %in% c("Braquiópodo", "Dinosaurio")) %>%
mutate(Tipo_Fosil = factor(Tipo_Fosil))
Leemos nuestra base de datos para reconocer su estructura.
Nuestra base de datos consta de 5 columnas y 100 filas de las cuales, mas adelante se toman 53 debido al filtro que seleciona braquiopodos y dinosaurios los cuales son de nuestro interes de estudio.
Columna:1-ID del fosil(#), 2-Tipo de Fosil, 3-Edad en millones de años, 4-profundidad (m), y 5-Tasa de fosilizacion(%).
Fila: Braquiopodo, Dinosaurio, Ammonite o Trilobite.
str(datos)
## tibble [53 × 5] (S3: tbl_df/tbl/data.frame)
## $ ID_Fosil : num [1:53] 1 2 3 4 5 7 8 9 10 12 ...
## $ Tipo_Fosil : Factor w/ 2 levels "Braquiópodo",..: 1 1 1 1 2 2 1 1 2 1 ...
## $ Edad_Millones_Anios: num [1:53] 270.8 479.1 71.4 310.2 87.4 ...
## $ Profundidad_m : num [1:53] 9.48 70.66 85.31 23.79 80.87 ...
## $ Tasa_Fosilizacion_%: num [1:53] 52 35.6 14.2 61.8 73.6 ...
summary(datos)
## ID_Fosil Tipo_Fosil Edad_Millones_Anios Profundidad_m
## Min. : 1.00 Braquiópodo:25 Min. : 66.8 Min. : 7.213
## 1st Qu.:17.00 Dinosaurio :28 1st Qu.:120.6 1st Qu.:31.721
## Median :38.00 Median :258.7 Median :56.168
## Mean :45.04 Mean :261.1 Mean :54.440
## 3rd Qu.:74.00 3rd Qu.:378.1 3rd Qu.:77.802
## Max. :99.00 Max. :499.6 Max. :99.861
## Tasa_Fosilizacion_%
## Min. :11.13
## 1st Qu.:33.69
## Median :52.04
## Mean :51.18
## 3rd Qu.:64.55
## Max. :89.20
Mediante esto podemos saber el valor minimo, maximo, mediana y media de nuestros datos en estudio.
hacemos graficas y boxplot para representar nuestra informacion extraida.
Edad: una grafica de barras la cual representa la frecuencias y los intervalos de edad en los que se encuentran nuestras muestras.
Analisis: interpretamos que el intervalo de edad con mayor numero de fosiles en estudio se encuentra entre 85 y 95 millones de años con 5 fosiles en este intervalo.
Boxplot Tipo Fosil: En este representamos la edad minima y maxima de nuestrosobjetos de estudio y la media de edad en la que estos se encuentra.
Analisis: la media de edad entre braquiopodos y dinosaurios difiere una de la otra aproximadamente en 50 millones de años siendo la media de Dinosaurios mayor.
Grafica de barras: indentifica el numero de dinosaurios y braquiopodos en nuestra base de datos
Analisis: la poblacion con mayor numero de representates es la de Dinosaurios con 28 representantes.
# Histograma de Edad
ggplot(datos, aes(x = Edad_Millones_Anios)) +
geom_histogram(binwidth = 10, fill = "skyblue", color = "black") +
labs(title = "Histograma de Edad de Fósiles", x = "Edad (millones de años)", y = "Frecuencia")
# Boxplot por Tipo de Fósil
ggplot(datos, aes(x = Tipo_Fosil, y = Edad_Millones_Anios, fill = Tipo_Fosil)) +
geom_boxplot() +
labs(title = "Boxplot de Edad por Tipo de Fósil", y = "Edad (millones de años)", x = "")
# Gráfico de barras
ggplot(datos, aes(x = Tipo_Fosil)) +
geom_bar(fill = "lightgreen") +
labs(title = "Frecuencia de Tipos de Fósiles", x = "Tipo de Fósil", y = "Conteo")
Con un intervalo de confianza del 95% calculamos la media con un valor de 262.13 millones de años.
media <- mean(datos$Edad_Millones_Anios, na.rm = TRUE)
se <- sd(datos$Edad_Millones_Anios, na.rm = TRUE) / sqrt(sum(!is.na(datos$Edad_Millones_Anios)))
ic <- c(media - qt(0.975, df = length(na.omit(datos$Edad_Millones_Anios)) - 1) * se,
media + qt(0.975, df = length(na.omit(datos$Edad_Millones_Anios)) - 1) * se)
ic
## [1] 222.5410 299.7209
con un intervalo entre 0.33 - 0.60 calculado para los braquiopodos se espera con precision que este valor encontrado entre en este rango.
tabla <- table(datos$Tipo_Fosil)
prop <- prop.table(tabla)["Braquiópodo"]
n <- sum(tabla)
error <- sqrt(prop * (1 - prop) / n)
ic_prop <- c(prop - qnorm(0.975) * error, prop + qnorm(0.975) * error)
ic_prop
## Braquiópodo Braquiópodo
## 0.3373031 0.6060932
Se calcula un intervalo de confianza del 95% para la varianza de la edad (en millones de años) de los fósiles. El intervalo obtenido es aproximadamente 13.8 a 30, lo que sugiere que la varianza real de la edad de los fósiles en la población se encuentra dentro de ese rango con un 95% de confianza.
varianza <- var(datos$Edad_Millones_Anios, na.rm = TRUE)
n_var <- sum(!is.na(datos$Edad_Millones_Anios))
ic_var <- c((n_var - 1) * varianza / qchisq(0.975, df = n_var - 1),
(n_var - 1) * varianza / qchisq(0.025, df = n_var - 1))
ic_var
## [1] 13809.29 30006.41
La diferencia de medias calculada para los dos grupos es de 6.95 millones de años entres las 2 medias.
grupo1 <- datos %>% filter(Tipo_Fosil == "Braquiópodo") %>% pull(Edad_Millones_Anios)
grupo2 <- datos %>% filter(Tipo_Fosil == "Dinosaurio") %>% pull(Edad_Millones_Anios)
t.test(grupo1, grupo2, var.equal = FALSE)
##
## Welch Two Sample t-test
##
## data: grupo1 and grupo2
## t = 0.17911, df = 50.7, p-value = 0.8586
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -70.95749 84.85644
## sample estimates:
## mean of x mean of y
## 264.8024 257.8529
con una diferencia en proporcion calculada para de las muestras de 12.28% mas dinosaurios que braquiopodos.
datos$Alta_Tasa <- ifelse(datos$`Tasa_Fosilizacion_%` > 50, 1, 0)
tabla_prop <- table(datos$Tipo_Fosil, datos$Alta_Tasa)
prop.test(x = tabla_prop[,2], n = rowSums(tabla_prop))
##
## 2-sample test for equality of proportions with continuity correction
##
## data: tabla_prop[, 2] out of rowSums(tabla_prop)
## X-squared = 0.39303, df = 1, p-value = 0.5307
## alternative hypothesis: two.sided
## 95 percent confidence interval:
## -0.4250095 0.1792952
## sample estimates:
## prop 1 prop 2
## 0.5200000 0.6428571
con un ratio de varianza del 92.54%
var.test(grupo1, grupo2)
##
## F test to compare two variances
##
## data: grupo1 and grupo2
## F = 0.92545, num df = 24, denom df = 27, p-value = 0.8529
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
## 0.4216944 2.0693786
## sample estimates:
## ratio of variances
## 0.9254482
Se inicia con el planteamiento de hipotesis.
H₀: La media de la edad de los fósiles es igual a 150 millones de años. H₁: La media de la edad de los fósiles es diferente de 150 millones de años. Nivel de significancia: α = 0.05
media <- mean(datos$Edad_Millones_Anios, na.rm = TRUE)
se <- sd(datos$Edad_Millones_Anios, na.rm = TRUE) / sqrt(sum(!is.na(datos$Edad_Millones_Anios)))
t_stat <- (media - 150) / se
df <- length(na.omit(datos$Edad_Millones_Anios)) - 1
p_value <- 2 * pt(-abs(t_stat), df)
ic <- c(media - qt(0.975, df = df) * se,
media + qt(0.975, df = df) * se)
list(Media = media, IC = ic, Estadistico = t_stat, P_valor = p_value)
## $Media
## [1] 261.131
##
## $IC
## [1] 222.5410 299.7209
##
## $Estadistico
## [1] 5.778724
##
## $P_valor
## [1] 4.295339e-07
Interpretación: Si el p-valor < 0.05, rechazamos H₀. Esto sugiere que la edad media de los fósiles difiere significativamente de 150 millones de años.
H₀: La proporción de Braquiópodos es igual a 0.5. H₁: La proporción de Braquiópodos es diferente de 0.5. Nivel de significancia: α = 0.05
tabla <- table(datos$Tipo_Fosil)
prop <- prop.table(tabla)["Braquiópodo"]
n <- sum(tabla)
z <- (prop - 0.5) / sqrt(0.5 * 0.5 / n)
p_val_prop <- 2 * pnorm(-abs(z))
error <- sqrt(prop * (1 - prop) / n)
ic_prop <- c(prop - qnorm(0.975) * error, prop + qnorm(0.975) * error)
list(Proporcion = prop, IC = ic_prop, Estadistico = z, P_valor = p_val_prop)
## $Proporcion
## Braquiópodo
## 0.4716981
##
## $IC
## Braquiópodo Braquiópodo
## 0.3373031 0.6060932
##
## $Estadistico
## Braquiópodo
## -0.4120817
##
## $P_valor
## Braquiópodo
## 0.6802795
Interpretación: Si el p-valor < 0.05, se rechaza H₀. Esto indicaría que la proporción observada de Braquiópodos es significativamente distinta al 50%.
H₀: La varianza poblacional de la edad es igual a 2500. H₁: La varianza poblacional es distinta de 2500. Nivel de significancia: α = 0.05
varianza <- var(datos$Edad_Millones_Anios, na.rm = TRUE)
n_var <- sum(!is.na(datos$Edad_Millones_Anios))
chi2 <- (n_var - 1) * varianza / 2500
p_val_var <- 2 * min(pchisq(chi2, df = n_var - 1), 1 - pchisq(chi2, df = n_var - 1))
ic_var <- c((n_var - 1) * varianza / qchisq(0.975, df = n_var - 1),
(n_var - 1) * varianza / qchisq(0.025, df = n_var - 1))
list(Varianza = varianza, IC = ic_var, Estadistico = chi2, P_valor = p_val_var)
## $Varianza
## [1] 19601.19
##
## $IC
## [1] 13809.29 30006.41
##
## $Estadistico
## [1] 407.7047
##
## $P_valor
## [1] 0
Interpretación: Si el p-valor < 0.05, rechazamos H₀, lo que indicaría que la varianza difiere significativamente del valor esperado.
H₀: No hay diferencia en la edad media entre Braquiópodos y Dinosaurios. H₁: Hay diferencia en la edad media entre los dos grupos. Nivel de significancia: α = 0.05
t.test(grupo1, grupo2, var.equal = FALSE)
##
## Welch Two Sample t-test
##
## data: grupo1 and grupo2
## t = 0.17911, df = 50.7, p-value = 0.8586
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -70.95749 84.85644
## sample estimates:
## mean of x mean of y
## 264.8024 257.8529
Interpretación: Si el p-valor es menor a 0.05, hay evidencia de una diferencia significativa entre las medias de edad.
H₀: La proporción de muestras con alta fosilización (>50%) es la misma en ambos grupos. H₁: Las proporciones son diferentes entre Braquiópodos y Dinosaurios. Nivel de significancia: α = 0.05
prop.test(x = tabla_prop[,2], n = rowSums(tabla_prop))
##
## 2-sample test for equality of proportions with continuity correction
##
## data: tabla_prop[, 2] out of rowSums(tabla_prop)
## X-squared = 0.39303, df = 1, p-value = 0.5307
## alternative hypothesis: two.sided
## 95 percent confidence interval:
## -0.4250095 0.1792952
## sample estimates:
## prop 1 prop 2
## 0.5200000 0.6428571
Interpretación: Un p-valor menor a 0.05 indica que las proporciones de alta fosilización difieren significativamente entre los dos tipos de fósiles.
H₀: Las varianzas de edad son iguales entre Braquiópodos y Dinosaurios. H₁: Las varianzas de edad son diferentes. Nivel de significancia: α = 0.05
var.test(grupo1, grupo2)
##
## F test to compare two variances
##
## data: grupo1 and grupo2
## F = 0.92545, num df = 24, denom df = 27, p-value = 0.8529
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
## 0.4216944 2.0693786
## sample estimates:
## ratio of variances
## 0.9254482
Interpretación: Si el p-valor < 0.05, se concluye que hay una diferencia significativa en la variabilidad de edad entre ambos grupos.
library(readxl)
library(dplyr)
Se realiza el planteamiento de nuestra hipotesis en estudio.
Hipótesis:
H₀: Las edades promedio de los fósiles de Dinosaurio, Braquiópodo y Ammonite son iguales.
H₁: Al menos uno de los grupos tiene una edad promedio diferente. ### Cargar los datos desde el archivo Excel
datos <- read_excel("Base_Datos_Geologia_Fosil.xlsx", sheet = "Paleontologia_Fosiles")
se toma la informacion de los dinosaurios, braquiopos y ammonites.
datos_filtrados <- datos %>%
filter(Tipo_Fosil %in% c("Dinosaurio", "Braquiópodo", "Ammonite"))
datos_filtrados$Tipo_Fosil <- as.factor(datos_filtrados$Tipo_Fosil)
modelo_anova <- aov(Edad_Millones_Anios ~ Tipo_Fosil, data = datos_filtrados)
summary(modelo_anova)
## Df Sum Sq Mean Sq F value Pr(>F)
## Tipo_Fosil 2 79093 39546 2.132 0.126
## Residuals 73 1354090 18549
tomamos los datos obtenidos para los analisis y representacion.
Estadístico F: 2.132
Valor p: 0.126
#Boxplot para comparar visualmente las edades por tipo de fósil
boxplot(Edad_Millones_Anios ~ Tipo_Fosil,
data = datos_filtrados,
col = c("lightblue", "lightgreen", "lightcoral"),
main = "Comparación de Edad por Tipo de Fósil",
ylab = "Edad (millones de años)",
xlab = "Tipo de Fósil")
Interpretación: Como el valor p es mayor que 0.05, no se rechaza la hipótesis nula. No hay evidencia estadísticamente significativa para afirmar que las edades promedio difieren entre Dinosaurios, Braquiópodos y Ammonites.
Este análisis comparó edad y fosilización entre Braquiópodos y Dinosaurios con pruebas estadísticas formales. Las diferencias en medias, proporciones y varianzas aportan evidencia significativa de comportamiento distinto entre estos dos tipos de fósiles, pero, los resultados sugieren que, aunque hay diferencias aparentes entre los tipos de fósiles (como edad media o tasas de fosilización), estas diferencias no son estadísticamente significativas en este conjunto de datos. Esto podría deberse al tamaño relativamente pequeño de la muestra (n = 53), la alta variabilidad observada, o la similitud real entre los grupos bajo estudio.
No obstante, el estudio logra cumplir con su objetivo de aplicar técnicas estadísticas fundamentales —como estimaciones puntuales, intervalos de confianza y pruebas de hipótesis— a un contexto geológico real, proporcionando un marco útil para investigaciones futuras más profundas o con muestras más grandes.
Este informe fue desarrollado en R y publicado en RPubs para facilitar su visualización y análisis reproducible.