Supongamos que tenemos dos poblaciones y queremos comparar la proporción de éxitos en ambas. Para ello, consideramos dos muestras aleatorias independientes de tamaño \(n_1\) y \(n_2\) de las poblaciones 1 y 2, respectivamente. La proporción de éxitos en la muestra 1 es \(\hat{p}_1\) y en la muestra 2 es \(\hat{p}_2\). La diferencia entre las proporciones de éxitos en ambas poblaciones es \(\hat{p}_1 - \hat{p}_2\).
Podemos calcular el error estándar de la diferencia entre las proporciones de éxitos en ambas poblaciones utilizando la fórmula:
\[ SE = \sqrt{\hat{p}_1(1-\hat{p}_1)/n_1 + \hat{p}_2(1-\hat{p}_2)/n_2} \]
La estimación de la diferencia entre las proporciones de éxitos en ambas poblaciones y su intervalo de confianza se puede calcular utilizando la fórmula:
\[ \hat{p}_1 - \hat{p}_2 \pm z_{\alpha/2} \sqrt{\frac{\hat{p}_1(1-\hat{p}_1)}{n_1} + \frac{\hat{p}_2(1-\hat{p}_2)}{n_2}} \]
donde \(z_{\alpha/2}\) es el valor crítico de la distribución normal estándar para un nivel de confianza de \(1-\alpha\). Este valor z lo calculamos como:
\[ z = \frac{(\hat{p}_1 - \hat{p}_2)}{SE} \]
Con este valor z se puede calcular el valor-p para la prueba de hipótesis de que la diferencia entre las proporciones es cero, utilizando la distribución normal estándar.
Cálculo del valor-p:
\[ p = 2(1 - \Phi(|z|)) \]
donde \(\Phi\) es la función de
distribución acumulada de la distribución normal estándar (la función
pnorm
en R).
Este valor-p se compara con un nivel de significancia \(\alpha\) para determinar si se rechaza o no la hipótesis nula.
La mamografía es un procedimiento de rayos X que se utiliza para detectar cáncer de mama. Si se deben utilizar las mamografías es parte de una discusión controvertida y lo utilizaremos de ejemplo de prueba de hipótesis de 2 proporciones, que podemos plantear como:
Se realizó un estudio de 30 años con casi 90 000 participantes femeninas. Durante un período de detección de 5 años, cada mujer fue asignada aleatoriamente a uno de dos grupos: en el primer grupo, las mujeres recibieron mamografías regulares para detectar el cáncer de mama, y en el segundo grupo, las mujeres recibieron exámenes regulares de cáncer de mama sin mamografía. No se realizó ninguna intervención durante los siguientes 25 años del estudio, y consideraremos la muerte resultante de cáncer de mama durante el período completo de 30 años. Los resultados del estudio se resumen en la siguiente tabla.
# Load the gt package
library(gt)
# Create a data frame with the given data
death_table_df <- data.frame(
Group = c("Mamografía", "Control"),
Yes = c(500, 505),
No = c(44425, 44405)
)
# Create a gt table
death_table_gt <- death_table_df %>%
gt() %>%
tab_header(
title = "TABLA 1. Muertes por Cáncer de Mama",
subtitle = "Comparación entre Mamografía y Control"
) %>%
cols_label(
Group = "Grupo",
Yes = "Muertes por Cáncer de Mama (Sí)",
No = "Muertes por Cáncer de Mama (No)"
) %>%
fmt_number(
columns = c(Yes, No),
decimals = 0
) %>%
tab_style(
style = cell_borders(sides = "all", color = "gray"),
locations = cells_body()
)
# Print the gt table
death_table_gt
TABLA 1. Muertes por Cáncer de Mama | ||
Comparación entre Mamografía y Control | ||
Grupo | Muertes por Cáncer de Mama (Sí) | Muertes por Cáncer de Mama (No) |
---|---|---|
Mamografía | 500 | 44,425 |
Control | 505 | 44,405 |
Si las mamografías son mucho más efectivas que los exámenes de cáncer de mama sin mamografía, entonces esperaríamos ver muertes adicionales por cáncer de mama en el grupo de control. Por otro lado, si las mamografías no son tan efectivas como los exámenes regulares de cáncer de mama, esperaríamos ver un aumento en las muertes por cáncer de mama en el grupo de mamografía.
A continuación, realizaremos una prueba de hipótesis para determinar si hay una diferencia significativa en la proporción de muertes por cáncer de mama entre los dos grupos.
# Data from the study
mammogram_deaths <- 500
mammogram_total <- 500 + 44425
control_deaths <- 505
control_total <- 505 + 44405
# Calculate proportions
p1 <- mammogram_deaths / mammogram_total
p2 <- control_deaths / control_total
# Difference in proportions
p_diff <- p1 - p2
# Standard error of difference
SEd <- sqrt((p1*(1-p1)/mammogram_total) + (p2*(1-p2)/control_total))
# Confidence interval of difference
CId <- p_diff + c(-1, 1) * qnorm(0.975) * SEd
# Combine proportions for pooled estimate
p_pool <- (mammogram_deaths + control_deaths) / (mammogram_total + control_total)
# Standard Error
SE <- sqrt(p_pool * (1 - p_pool) * (1 / mammogram_total + 1 / control_total))
# 95% Confidence Interval
CI <- p_pool + c(-1, 1) * qnorm(0.975) * SE
# Calculate z-score
z <- (p1 - p2) / SEd
# Calculate p-value (two-tailed test)
p_value <- 2 * (1 - pnorm(abs(z)))
Lista de resultados y decisión para \(\alpha\) = 0.05:
library(dplyr)
library(gt)
# Create a data frame with the results
results_df <- data.frame(
"Estadística" = c("Proporción 1", "Proporción 2", "Diferencia", "Error Estándar", "Intervalo de Confianza", "Valor Z", "Valor p"),
"Valor" = c(round(p1,5), round(p2,5), round(p_diff,5), round(SEd,6), paste0("(", round(CId[1], 4), ", ", round(CId[2], 4), ")"), round(z,3), round(p_value,3)
))
# Create a gt table with the results
results_gt <- results_df %>%
gt() %>%
tab_header(
title = "TABLA 2. Resultados de la Prueba de Hipótesis",
subtitle = "Comparación de Proporciones de Muertes por Cáncer de Mama"
) %>%
cols_label(
Estadística = "Estadístico",
Valor = "Valor"
) %>%
tab_style(
style = cell_borders(sides = "all", color = "gray"),
locations = cells_body()
)
results_gt
TABLA 2. Resultados de la Prueba de Hipótesis | |
Comparación de Proporciones de Muertes por Cáncer de Mama | |
Estadístico | Valor |
---|---|
Proporción 1 | 0.01113 |
Proporción 2 | 0.01124 |
Diferencia | -0.00012 |
Error Estándar | 0.000702 |
Intervalo de Confianza | (-0.0015, 0.0013) |
Valor Z | -0.164 |
Valor p | 0.87 |
# Decision based on p-value
if (p_value < 0.05) {
cat("Rechazar la hipótesis nula: Existe una diferencia significativa entre las proporciones.\n")
} else {
cat("No se rechaza la hipótesis nula: No hay diferencia significativa entre las proporciones.\n")
}
## No se rechaza la hipótesis nula: No hay diferencia significativa entre las proporciones.
# Load ggplot2 library
library(ggplot2)
# Define the Z-score and alpha level
z_value <- -0.1639328
alpha <- 0.05
# Create a data frame for the normal distribution
x <- seq(-4, 4, length = 1000) # Range of Z-scores
y <- dnorm(x) # Standard normal distribution density
data <- data.frame(x = x, y = y)
# Calculate the critical value for negative alpha = 0.05
z_alpha <- qnorm(alpha)
# Create the plot
ggplot(data, aes(x = x, y = y)) +
# Plot the normal distribution curve
geom_line(color = "blue", size = 1) +
# Shade the negative alpha area
geom_area(data = subset(data, x <= z_alpha), aes(x = x, y = y), fill = "red", alpha = 0.5) +
# Add a vertical line for the Z-value
geom_vline(xintercept = z_value, color = "black", linetype = "dashed", size = 1) +
# Add text annotation for the Z-value
annotate("text", x = z_value, y = 0.2, label = paste("Z =", round(z_value, 3)), color = "black", hjust = -0.1) +
# Add text annotation for alpha
annotate("text", x = z_alpha, y = 0.05, label = expression(alpha == 0.05), color = "red", hjust = 1.2) +
# Customize the plot
labs(x = "Valor Z", y = "Densidad") +
theme_minimal()
Figura 1. Gráfica de la distribución normal con el área para \(\alpha\) = 0.05 y el valor z de la diferencia de las proporciones.
No rechazamos la hipótesis nula, lo que significa que no contamos con evidencia suficiente para concluir que las mamografías reducen o aumentan las muertes por cáncer de mama.
Si las mamografías son beneficiosas o perjudiciales, los datos sugieren que el efecto no es muy significativo.
¿Son las mamografías más o menos costosas que un examen de mama sin mamografía? Si una opción es mucho más costosa que la otra y no ofrece beneficios claros, entonces deberíamos inclinarnos por la opción más económica.
La prueba de bondad de ajuste mediante chi-cuadrado se utiliza para determinar si una muestra de datos se ajusta a una distribución de probabilidad específica. La hipótesis nula (\(H_0\)) es que los datos se ajustan a la distribución de probabilidad especificada, mientras que la hipótesis alternativa (\(H_a\)) es que los datos no se ajustan a la distribución de probabilidad especificada.
Los supuestos de esta prueba son:
La distribución chi-cuadrado es una distribución de probabilidad continua que se utiliza en estadística para probar la independencia de dos eventos. La distribución chi-cuadrado se utiliza en pruebas de bondad de ajuste, pruebas de independencia y pruebas de homogeneidad.
La distribución chi-cuadrado se utiliza a veces para caracterizar conjuntos de datos y estadísticas que siempre son positivos y, por lo general, con sesgo a la derecha. Recordemos que una distribución normal tenía dos parámetros (media y desviación estándar) que podían utilizarse para describir sus características exactas. La distribución chi-cuadrado tiene un solo parámetro llamado grados de libertad (gl), que influye en la forma, el centro y la dispersión de la distribución.
# Load necessary libraries
library(ggplot2)
# Create a data frame with chi-squared distributions
chi_df <- data.frame(x = seq(0, 20, by = 0.1))
chi_df$df1 <- dchisq(chi_df$x, df = 1)
chi_df$df2 <- dchisq(chi_df$x, df = 2)
chi_df$df4 <- dchisq(chi_df$x, df = 4)
# Plot chi-squared distributions
ggplot(chi_df, aes(x = x)) +
geom_line(aes(y = df1, color = "df = 1"), size = 1) +
geom_line(aes(y = df2, color = "df = 2"), size = 1) +
geom_line(aes(y = df4, color = "df = 4"), size = 1) +
labs(
x = "Valor del estadístico", y = "Densidad") +
scale_color_manual(values = c("df = 1" = "red", "df = 2" = "blue", "df = 4" = "green")) +
theme_minimal()
Figura 2. Distribución chi-cuadrado con diferentes grados de libertad.
El estadístico de prueba chi-cuadrado se calcula como:
\[ \chi^2 = \sum \frac{(O_i - E_i)^2}{E_i} \]
donde:
Si el valor de \(\chi^2\) es mayor que el valor crítico para un \(\alpha\) predeterminado (usualmente 0.05), entonces rechazamos la hipótesis nula. Igualmente, si el valor-p es menor que \(\alpha\), rechazamos la hipótesis nula.
Genética Mendeliana para la distribución de probabilidad esperada. En un sistema dialélico, la proporción esperada de genotipos en la descendencia de un cruce monohíbrido es 1:2:1. Supongamos que realizamos un experimento genético y obtenemos los siguientes resultados:
# Observed and expected frequencies
observed <- c(24, 63, 18) # Observed counts
total <- sum(observed) # Total sample size
expected <- total * c(1/4, 2/4, 1/4) # Expected counts based on 1:2:1 ratio
# Perform Chi-square goodness-of-fit test
chi_sq_test <- chisq.test(x = observed, p = c(1/4, 2/4, 1/4))
# Print test results
print(chi_sq_test)
##
## Chi-squared test for given probabilities
##
## data: observed
## X-squared = 4.8857, df = 2, p-value = 0.08691
# Visualize the p-value area using ggplot2
library(ggplot2)
# Generate Chi-square distribution for visualization
df <- length(observed) - 1
x_vals <- seq(0, 20, by = 0.01)
y_vals <- dchisq(x_vals, df = df)
# Create a data frame for ggplot
chi_data <- data.frame(x = x_vals, y = y_vals)
# Critical value and observed statistic
critical_value <- qchisq(0.95, df = df)
observed_stat <- chi_sq_test$statistic
# Plot the Chi-square distribution
ggplot(chi_data, aes(x = x, y = y)) +
geom_line(color = "blue", size = 1) +
geom_area(data = subset(chi_data, x > critical_value), aes(x = x, y = y), fill = "red", alpha = 0.5) +
geom_vline(xintercept = observed_stat, color = "darkgreen", linetype = "dashed", size = 1) +
labs(,
x = "Estadístico chi-cuadrado",
y = "Densidad",
) +
theme_minimal()
Figura 3. Distribución chi-cuadrado con la región crítica en rojo (\(\alpha = 0.05\)) y el estadístico de prueba (\(\chi^2\)) en verde oscuro.
Una tabla de contingencia es una tabla que muestra la distribución conjunta de dos o más variables categóricas. La prueba de independencia se utiliza para determinar si existe una relación significativa entre dos variables categóricas.
La hipótesis nula (\(H_0\)) es que las dos variables son independientes, mientras que la hipótesis alternativa (\(H_a\)) es que las dos variables están relacionadas.
La hipótesis se prueba con el estadístico de prueba chi-cuadrado, que se calcula como:
\[ \chi^2 = \sum_{i=1}^r \sum_{j=1}^c \frac{(O_{ij} - E_{ij})^2}{E_{ij}} \]
donde:
La frecuencia esperada \(E_{ij}\) se calcula como:
\[ E_{ij} = \frac{R_i \times C_j}{N} \]
donde:
Los grados de libertad (gl) para la prueba de independencia se calculan como:
\[ gl = (R - 1) \times (C - 1) \]
donde \(R\) es el número de filas y \(C\) es el número de columnas en la tabla de contingencia.
Una vez obtenido el valor de \(\chi^2\), se compara con el valor crítico de la distribución chi-cuadrado para determinar si se rechaza o no la hipótesis nula.
El valor-p se calcula utilizando la distribución chi-cuadrado con los
grados de libertad correspondientes, mediante la función
pchisq()
en R.
Vamos a considerar un estudio clínico en el que se evalúa la eficacia de un tratamientos para una enfermedad. Se registraron los resultados (mejoría, igual y empeora) de los pacientes tratados con la droga y un placebo y se desea determinar si hay una asociación entre el tratamiento y la respuesta de los pacientes.
# Entrada de datos
datos_tc <- matrix(c(40, 5, 5, 18, 12, 20), nrow = 2, byrow = TRUE,
dimnames = list(Tratamiento = c("Droga", "Placebo"),
Resultado = c("Mejoría", "No Cambio", "Empeora")))
TABLA 3. Tabla de Contingencia de Tratamiento y Resultado
# Create a contingency table
contingency_table <- as.table(datos_tc)
contingency_table
## Resultado
## Tratamiento Mejoría No Cambio Empeora
## Droga 40 5 5
## Placebo 18 12 20
TABLA 4. Valores esperados en la tabla de contingencia
# Expected values
expected_values <- chisq.test(contingency_table)$expected
expected_values
## Resultado
## Tratamiento Mejoría No Cambio Empeora
## Droga 29 8.5 12.5
## Placebo 29 8.5 12.5
TABLA 5. Resultados de la prueba de independencia
# Perform chi-square test for independence
chi_test <- chisq.test(contingency_table)
# Print results
print(chi_test)
##
## Pearson's Chi-squared test
##
## data: contingency_table
## X-squared = 20.227, df = 2, p-value = 4.053e-05
# Visualize the p-value area using ggplot2
library(ggplot2)
# Generate Chi-square distribution for visualization
df <- chi_test$parameter
x_vals <- seq(0, 20, by = 0.01)
y_vals <- dchisq(x_vals, df = df)
# Create a data frame for ggplot
chi_data <- data.frame(x = x_vals, y = y_vals)
# Critical value and observed statistic
critical_value <- qchisq(0.95, df = df)
observed_stat <- chi_test$statistic
# Plot the Chi-square distribution
ggplot(chi_data, aes(x = x, y = y)) +
geom_line(color = "blue", size = 1) +
geom_area(data = subset(chi_data, x > critical_value), aes(x = x, y = y), fill = "red", alpha = 0.5) +
geom_vline(xintercept = observed_stat, color = "darkgreen", linetype = "dashed", linewidth = 1) +
labs(
x = "Estadístico chi-cuadrado",
y = "Densidad"
) +
theme_minimal()
Figura 4. Distribución chi-cuadrado con la región crítica en rojo (\(\alpha = 0.05\)) y el estadístico de prueba (\(\chi^2\)) en verde oscuro.
# Load necessary libraries
library(vcd)
## Loading required package: grid
# Change names in contingency_table
rownames(contingency_table) <- c("Droga", "Placebo")
colnames(contingency_table) <- c("Mejoría", "NC", "Emp")
# Create mosaic plot
mosaic(contingency_table, shade = TRUE, legend = TRUE, labeling = labeling_values)
Figura 5. Gráfico de mosaico para la tabla de contingencia de tratamiento y resultado. Incluye el estadístico de residuales de Pearson.