Prueba de Hipotesis

Pruebas paramètricas

Autor/a
Afiliación

Kevin David Barón Cabezas
Breiner Duvan Mejía

Fecha de publicación

21 de junio de 2024

Paqueteria / Libreria

Aquí encontraras la paquetería y librería necesaria para este HTML.

PAQUETERIA

A continuación encontraras la lista de los paquetes que debes instalar:

  • install.packages(tidyverse)

  • install.packages(kableExtra)

  • install.packages(agricolae)

  • install.packages(RColorBrewer)

  • install.packages(ggplot2)

  • install.packages(devtools)

  • install.packages(usethis)

  • install.packages(dplyr)

  • install.packages(modeest)

LIBRERIAS
Código
library(tidyverse)
library(kableExtra)
library(agricolae)
library(RColorBrewer)
library(ggplot2)
library(devtools)
library(usethis)
library(dplyr)
library(gginference)
library(modeest)

[@tidyverse; @kableExtra; @agricolae; @RColorBrewer][@ggplot2; @devtools; @usethis; @dplyr; @dbplyr]

Objetivos

  • Realizar contrastes de hipótesis paramétricos para la media de una población con variable normal.

  • Realizar contrastes de hipótesis paramétricos para comparar dos medias de variables normales en muestras independientes y en muestras apareadas.

  • Realizar contrastes de hipótesis para comparar dos proporciones.

  • APÉNDICE: Introducción al Análisis de datos categóricos: Tablas de Contingencia

Conceptos básicos

Contraste de hipótesis. Un contraste de hipótesis es un proceso estadístico mediante el cual se investiga si una propiedad que se supone que cumple una población es compatible con lo observado en una muestra de dicha población. Es un procedimiento que permite elegir una hipótesis de trabajo de entre dos posibles y antagónicas.

Hipótesis Estadística. Todo contraste de hipótesis se basa en la formulación de dos hipótesis exhaustivas y mutuamente exclusivas:

  1. Hipótesis nula (H0)

  2. Hipótesis alternativa (H1)

La hipótesis H0 es la que se desea contrastar. Consiste generalmente en una afirmación concreta sobre la forma de una distribución de probabilidad o sobre el valor de alguno de los parámetros de esa distribución. El nombre de “nula” significa “sin valor, efecto o consecuencia”, lo cual sugiere que H0 debe identificarse con la hipótesis de no cambio (a partir de la opinión actual); no diferencia, no mejora, etc. H0 representa la hipótesis que mantendremos a no ser que los datos indiquen su falsedad, y puede entenderse, por tanto, en el sentido de “neutra”. La hipótesis H0 nunca se considera probada, aunque puede ser rechazada por los datos. Por ejemplo, la hipótesis de que dos poblaciones tienen la misma media puede ser rechazada fácilmente cuando ambas difieren mucho, analizando muestras suficientemente grandes de ambas poblaciones, pero no puede ser “demostrada****” mediante muestreo, puesto que siempre cabe la posibilidad de que las medias difieran en una cantidad lo suficientemente pequeña para que no pueda ser detectada, aunque la muestra sea muy grande. Dado que descartaremos o no la hipótesis nula a partir de muestras obtenidas (es decir, no dispondremos de información completa sobre la población), no será posible garantizar que la decisión tomada sea la correcta.**

La hipótesis H1 es la negación de la nula. Incluye todo lo que H0 excluye.

¿Qué asignamos como H0 y H1 ?

La hipótesis H0 asigna un valor específico al parámetro en cuestión y por lo tanto “el igual” siempre forma parte de H0.

La idea básica de la prueba de hipótesis es que los hechos tengan probabilidad de rechazar H0. La hipótesis H0 es la afirmación que podría ser rechazada por los hechos. El interés del investigador se centra, por lo tanto, en la H1.

La regla de decisión. Es el criterio que vamos a utilizar para decidir si la hipótesis nula planteada debe o no ser rechazada. Este criterio se basa en la partición de la distribución muestral del estadístico de contraste en dos regiones o zonas mutuamente excluyentes: Región crítica o región de rechazo y Región de no-rechazo.

Región de no-rechazo. Es el área de la distribución muestral que corresponde a los valores del estadístico de contraste próximos a la afirmación establecida en H0. Es decir, los valores del estadístico de contraste que nos conducen a decidir H0. Es por tanto, el área correspondiente a los valores del estadístico de contraste que es probable que ocurran si H0 es verdadera. Su probabilidad se denomina nivel de confianza y se representa por 1 – α .

Región de rechazo o región crítica. Es el área de distribución muestral que corresponde a los valores del estadístico de contraste que se encuentran tan alejados de la afirmación establecida en H0, que es muy poco probable que ocurran si H0 es verdadera. Su probabilidad se denomina nivel de significación o nivel de riesgo y se representa con la letra α .

Ya definidas las dos zonas, la regla de decisión consiste en rechazar H0 si el estadístico de contraste toma un valor perteneciente a la zona de rechazo, o mantener H0 si el estadístico de contraste toma un valor perteneciente a la zona de no-rechazo.

El tamaño de las zonas de rechazo y no-rechazo se determina fijando el valor de α, es decir, fijando el nivel de significación con el que se desea trabajar. Se suele tomar un 1% o un 5%.

La forma de dividir la distribución muestral en zona de rechazo y de no-rechazo depende de si el contraste es bilateral o unilateral. La zona crítica debe situarse donde puedan aparecer los valores muestrales incompatibles con H0.

Estadístico de contraste. Un estadístico de contraste es un resultado muestral que cumple la doble condición de:

  • Proporcionar información empírica relevante sobre la afirmación propuesta en la H0.

  • Poseer una distribución muestral conocida

Tipos de contrastes.

Contrastes paramétricos: Conocida una v.a. con una determinada distribución, se establecen afirmaciones sobre los parámetros de dicha distribución.

Contrastes no paramétricos: Las afirmaciones establecidas no se hacen en base a la distribución de las observaciones, que a priori es desconocida .

Tipos de hipótesis del contraste.

Hipótesis simples: La hipótesis asigna un único valor al parámetro desconocido, H: θ = θ0

Hipótesis compuestas: La hipótesis asigna varios valores posibles al parámetro desconocido, H: θ ∈ ( θ1 , θ2 )

La regla de la decisión

Contrastes bilaterales

Si la hipótesis alternativa da lugar a una región crítica “a ambos lados” del valor del parámetro, diremos que el test es bilateral o de dos colas.

Se rechaza H0 si el estadístico de contraste cae en la zona crítica, es decir, si el estadístico de contraste toma un valor tan grande o tan pequeño que la probabilidad de obtener un valor tan extremo o más que el encontrado es menor que α /2.

Contrastes unilaterales

Si la hipótesis alternativa da lugar a una región crítica “a un solo lado del valor del parámetro”, diremos que el test es unilateral o de una sola cola

Se rechaza H0 si el estadístico de contraste cae en la zona crítica, es decir, si toma un valor tan grande que la probabilidad de obtener un valor como ese o mayor es menor que α .

Contraste bilateral:

Contraste unilateral: cola a la derecha:

Contraste unilateral: cola a la izquierda:

La decisión:

Planteada la hipótesis, formulados los supuestos, definido el estadístico de contraste y su distribución muestral, y establecida la regla de decisión, el paso siguiente es obtener una muestra aleatoria de tamaño n, calcular el estadístico de contraste y tomar una decisión:

  • Si es estadístico de contraste cae en la zona crítica se rechaza H0.

  • Si es estadístico cae en la zona de no rechazo se mantiene H0.

Si rechazamos Ho afirmamos que la hipótesis es falsa, es decir, que afirmamos con una probabilidad α de equivocarnos, que hemos conseguido probar que esa hipótesis es falsa. Por el contrario, si no la rechazamos, no estamos afirmando que la hipótesis sea verdadera. Simplemente que no tenemos evidencia empírica suficiente para rechazarla y que se considera compatible con los datos.

Como conclusión, si se mantiene o no se rechaza H0, nunca se puede afirmar que es verdadera.

Errores de Tipo I y II.

  • Error de tipo I: Se comete cuando se decide rechazar la hipótesis nula H0 que en realidad es verdadera. La probabilidad de cometer ese error es α.

P[ Rechazar H0 / H0 es verdadera ] = α

  • Error de tipo II: Se comete cuando se decide no rechazar la hipótesis nula H0 que en realidad es falsa. La probabilidad de cometer ese error es β .

P[ No rechazar H0 / H0 es falsa ] = β

Por tanto,

  • 1 – α es la probabilidad de tomar una decisión correcta cuando H0 es verdadera.

  • 1 – β es la probabilidad de tomar una decisión correcta cuando H0 es falsa.

El siguiente cuadro resume las ideas:

  • La dificultad al usar un procedimiento basado en datos muestrales es que debido a la variabilidad de muestreo, puede resultar una muestra no representativa, y por tanto, resultaría un rechazo erróneo de H0.

  • La probabilidad de cometer un error de tipo I con nuestra decisión es una probabilidad conocida, pues el valor de α lo fija el propio investigador.

  • Sin embargo, la probabilidad de cometer un error de tipo II, β , es un valor desconocido que depende de tres factores:

      • La hipótesis H1 que consideremos verdadera.

      • El valor de α .

      • El tamaño del error típico (desviación típica) de la distribución muestral utilizada para efectuar el contraste.

Relaciones entre los errores de Tipo I y II. El estudio de las relaciones entre los errores lo realizamos mediante el contraste de hipótesis:

$ H_{0}==*{0} $ $ H*{1}==_{1} $

Para ello utilizamos la información muestral proporcionada por el estadístico media muestral \left ( \bar{X} \right )

  • Cualquier valor atribuido a μ1 en H1 (siempre mayor a μ0) generará distribuciones muestrales distintas para la media muestral. Aunque todas tendrán la misma forma, unas estarán más alejadas que otras de la curva de H0, es decir, unas serán distintas de otras únicamente en el valor asignado a μ1 .

Cuanto más se aleje el valor μ1 de μ0 , más hacia la derecha se desplazará la curva H1 , y en consecuencia, más pequeña se hará el área β . Por lo tanto, el valor de β depende del valor concreto de μ1 que consideremos verdadero dentro de todos los afirmados por H1 .

  • Cuanto mayor es α , menor es β . Se relacionan de forma inversa.

  • Para una distancia dada entre μ0 y μ1 , el solapamiento entre las curvas correspondientes a uno y otro parámetro será tanto mayor cuanto mayor sea el error típico de la distribución muestral representada por esas curvas (cuanto mayor es el error típico de una distribución, más ancha es esa distribución). Y cuanto mayor sea el solapamiento, mayor será el valor de β .

Relaciones_entre_los_errores_de_tipo_I_y_tipo_II

En lugar de buscar procedimientos libres de error, debemos buscar procedimientos para los que no sea probable que ocurran ningún tipo de estos errores. Esto es, un buen procedimiento es aquel para el que es pequeña la probabilidad de cometer cualquier tipo de error. La elección de un valor particular de corte de la región de rechazo fija las probabilidades de errores tipo I y tipo II.

Debido a que H0 especifica un valor único del parámetro, hay un solo valor de α . Sin embargo, hay un valor diferente de β por cada valor del parámetro recogido en H1 .

En general, un buen contraste o buena regla de decisión debe tender a minimizar los dos tipos de error inherentes a toda decisión. Como α queda fijado por el investigador, trataremos de elegir una región donde la probabilidad de cometer el error de tipo II sea la menor .

Usualmente, se diseñan los contrastes de tal manera que la probabilidad a sea el 5% (0,05), aunque a veces se usan el 10% (0,1) o 1% (0,01) para adoptar condiciones más relajadas o más estrictas.

Potencia de un contraste. Es la probabilidad de decidir H1 cuando ésta es cierta

P[ decidir H1 / H1 es verdadera ] = 1 – β

El concepto de potencia se utiliza para medir la bondad de un contraste de hipótesis. Cuanto más lejana se encuentra la hipótesis H1 de H0 menor es la probabilidad de incurrir en un error tipo II y, por consiguiente, la potencia tomará valores más próximos a 1.

Si la potencia en un contraste es siempre muy próxima a 1 entonces se dice que el estadístico de contraste es muy potente para contrastar H0 ya que en ese caso las muestras serán, con alta probabilidad, incompatibles con H0 cuando H1 sea cierta.

Por tanto puede interpretarse la potencia de un contraste como su sensibilidad o capacidad para detectar una hipótesis alternativa. La potencia de un contraste cuantifica la capacidad del criterio utilizado para rechazar H0 cuando esta hipótesis sea falsa

Es deseable en un contraste de hipótesis que las probabilidades de ambos tipos de error fueran tan pequeñas como fuera posible. Sin embargo, con una muestra de tamaño prefijado, disminuir la probabilidad del error de tipo I, α, conduce a incrementar la probabilidad del error de tipo II, β. El recurso para aumentar la potencia del contraste, esto es, disminuir la probabilidad de error de tipo II, es aumentar el tamaño muestral lo que en la práctica conlleva un incremento de los costes del estudio que se quiere realizar

El concepto de potencia nos permite valorar cual entre dos contrastes con la misma probabilidad de error de tipo I, α, es preferible. Se trata de escoger entre todos los contrastes posibles con α prefijado aquel que tiene mayor potencia, esto es, menor probabilidad β de incurrir en el error de tipo II. En este caso el Lema de Neyman-Pearsongarantiza la existencia de un contraste de máxima potencia y determina cómo construirlo.

Contrastes de hipótesis paramétricos

El propósito de los contrastes de hipótesis es determinar si un valor propuesto (hipotético) para un parámetro u otra característica de la población debe aceptarse como plausible con base en la evidencia muestral.

Podemos considerar las siguientes etapas en la realización de un contraste:

  • El investigador formula una hipótesis sobre un parámetro poblacional, por ejemplo que toma un determinado valor.

  • Selecciona una muestra de la población

  • Comprueba si los datos están o no de acuerdo con la hipótesis planteada, es decir, compara la observación con la teoría

    • Si lo observado es incompatible con lo teórico entonces el investigador puede rechazar la hipótesis planteada y proponer una nueva teoría

    • Si lo observado es compatible con lo teórico entonces el investigador puede continuar como si la hipótesis fuera cierta.

Contrastes de hipótesis para la media de una población normal

El objetivo es probar uno de los siguientes contrastes de hipótesis con respecto de μ.

\begin{align*}H_{0} &=\mu =\mu_{0} \\ H_{1} &=\mu =\mu_{1} \end{align*}{ o }\begin{align*}H_{0} &=\mu \leq \mu_{0} \\ H_{1} &=\mu > \mu_{1} \end{align*}{ o }\begin{align*}H_{0} &=\mu \geq \mu_{0} \\ H_{1} &=\mu < \mu_{1} \end{align*}

donde μ0 es un valor conocido dado de antemano. Para ello se toma una m.a.s. concreta x_{1}, x_{2}, …, x_{n} cuya media valdrá:

\bar{x}=\frac{1}{n}\sum_{i=1}^{n}x_{1}

Se distinguen dos situaciones: a) Varianza poblacional conocida y b) varianza poblacional desconocida. 

En el caso de varianza poblacional desconocida, el estadístico de contraste que se utiliza sigue una distribución t_Student y, bajo la hipótesis nula  H0:μ = μ0 dicho estadístico tiene la siguiente expresión:

\frac{\bar{X}-\mu_0}{\widehat{\sigma} / \sqrt{n-1}} \rightarrow t_{n-1}

Fijado un nivel de significación α

a) Para la hipótesis alternativa H1:μ ≠ μ0  la correspondiente región de no rechazo es (- tα/2;n-1, tα/2;n-1) y el estadístico de contraste adopta la forma

t_{e q}=\left|\frac{\bar{x}-\mu_0}{\widehat{\sigma} / \sqrt{n-1}}\right|=\left|\frac{\bar{x}-\mu_0}{S / \sqrt{n}}\right|

y se utiliza la siguiente regla de decisión

\begin{aligned}& H_0 \equiv \mu=\mu_0 \\& H_1 \equiv \mu \neq \mu_0\end{aligned} \rightarrow \begin{array}{ll}\text { Si } & t_{e p}<t_{\alpha / 2, x-1} \Rightarrow \text { No se rechaza } H_0 \\\text { Si } & t_{\exp } \geq t_{\alpha / 2 x-1} \Rightarrow \text { Se rechaza } H_0\end{array}

b) Para la hipótesis alternativa H1:μ > μ0 la correspondiente región de no rechazo es (-∞,  tα;n-1) y el estadístico de contraste adopta la forma

t_{e \Phi}=\frac{\bar{x}-\mu_0}{\widehat{\sigma} / \sqrt{n-1}}=\frac{\bar{x}-\mu_0}{S / \sqrt{n}}

y se utiliza la siguiente regla de decisión

\begin{aligned}& H_0 \equiv \mu=\mu_0 \\& H_1 \equiv \mu>\mu_0\end{aligned} \rightarrow \begin{array}{ll}S i & t_{e q}<t_{\alpha ; \pi-1} \Rightarrow \text { No serechaza } H_0 \\\text { Si } & t_{e x p} \geq t_{\alpha ; x-1} \Rightarrow \text { Se rechaza } H_0\end{array}

c) Para la hipótesis alternativa H1:μ < μ0  la correspondiente región de no rechazo es (- tα;n-1,∞), el estadístico de contrate es el anterior y se adopta la siguiente regla de decisión

\begin{aligned}& H_0 \equiv \mu=\mu_0 \\& H_1 \equiv \mu<\mu_0\end{aligned} \rightarrow \begin{array}{cl}S i & t_{e q}>-t_{\alpha ; \pi-1} \Rightarrow \text { No se rechaza } H_0 \\\text { Si } & t_{\exp } \leq-t_{\alpha ; \pi-1} \Rightarrow \text { Se rechaza } H_0\end{array}

Formulas

Media de la población (varianza poblacional conocida)

Media de la población (varianza poblacional desconocida)

Varianza de la población

Proporción de la población

Diferencia de las medias de dos poblaciones (varianzas poblacionales conocidas y distintas)

Diferencia de las medias de dos poblaciones (varianzas poblacionales desconocidas e iguales)

Diferencia de las medias de dos poblaciones (varianzas poblacionales desconocidas y distintas)

Cociente de las varianzas de dos poblaciones

Diferencia de las proporciones de dos poblaciones

Siendo

Ejemplos para las formulas

Ejemplo 1. (Varianza Poblacional Conocida)

Un investigador desea evaluar si un nuevo programa de ejercicio reduce el peso promedio de los participantes. Se sabe que el peso promedio de los adultos en una población es de 70 kg con una desviación estándar poblacional de 5 kg. Después de aplicar el programa de ejercicio a una muestra aleatoria de 30 participantes durante 3 meses, los pesos (en kg) de los participantes fueron registrados como sigue:

69, 68, 72, 70, 71, 67, 66, 68, 69, 70, 71, 73, 72, 68, 69, 67, 66, 68, 70, 69, 70, 71, 72, 73, 74, 68, 69, 67, 66, 70

Con un nivel de significancia de 0.05, ¿puede concluirse que el nuevo programa de ejercicio reduce el peso promedio de los participantes?

Planteamiento de la Hipótesis

Hipótesis nula (H_{0}): El programa de ejercicio no reduce el peso promedio, es decir, la media sigue siendo 70 kg. H_{0}=\mu = 70

Hipótesis alternativa (H_{1}): El programa de ejercicio reduce el peso promedio, es decir, la media es menor que 70 kg.

H_{1}=\mu< 70

Solucion en R

Código
# Instalar y cargar las librerías necesarias
if (!requireNamespace("ggplot2", quietly = TRUE)) {
  install.packages("ggplot2")
}
if (!requireNamespace("kableExtra", quietly = TRUE)) {
  install.packages("kableExtra")
}

library(ggplot2)
library(kableExtra)

# Datos de la muestra
pesos <- c(69, 68, 72, 70, 71, 67, 66, 68, 69, 70, 71, 73, 72, 68, 69, 67, 66, 68, 70, 69, 70, 71, 72, 73, 74, 68, 69, 67, 66, 70)

# Parámetros poblacionales
media_poblacional <- 70
desviacion_estandar_poblacional <- 5

# Tamaño de la muestra
n <- length(pesos)

# Media de la muestra
media_muestra <- mean(pesos)

# Error estándar de la media
error_estandar_media <- desviacion_estandar_poblacional / sqrt(n)

# Valor crítico para un nivel de confianza del 95%
alpha <- 0.05
z_critico <- qnorm(1 - alpha)

# Intervalo de confianza
intervalo_confianza <- c(media_muestra - z_critico * error_estandar_media, media_muestra + z_critico * error_estandar_media)

# Crear una tabla de resultados
resultados <- data.frame(
  Métrica = c("Media de la muestra", 
              "Desviación estándar poblacional", 
              "Error estándar de la media",
              "Valor crítico Z",
              "Intervalo de confianza (95%)"),
  Valor = c(round(media_muestra, 2), 
            round(desviacion_estandar_poblacional, 2), 
            round(error_estandar_media, 2),
            round(z_critico, 2),
            paste0("[", round(intervalo_confianza[1], 2), ", ", round(intervalo_confianza[2], 2), "]"))
)

# Imprimir la tabla con kableExtra
kable(resultados, format = "html") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"))
Métrica Valor
Media de la muestra 69.43
Desviación estándar poblacional 5
Error estándar de la media 0.91
Valor crítico Z 1.64
Intervalo de confianza (95%) [67.93, 70.93]

Resultados con Ggplot

Código
# Instalar y cargar las librerías necesarias
if (!requireNamespace("ggplot2", quietly = TRUE)) {
  install.packages("ggplot2")
}

library(ggplot2)

# Crear secuencia de valores para el estadístico Z
z_values <- seq(-3, 3, length.out = 100)

# Calcular la densidad de probabilidad de la distribución normal estándar
densidad_normal <- dnorm(z_values)

# Definir un valor de z crítico y un valor de z para mostrar en el gráfico (por ejemplo)
z_critico <- 1.96
z <-    1.64

# Crear data frame con los valores
df <- data.frame(z_values, densidad_normal)

# Visualización con ggplot2
ggplot(df, aes(x = z_values, y = densidad_normal)) +
  geom_line(color = "blue", size = 1) +
  geom_vline(xintercept = z_critico, linetype = "dashed", color = "green", size = 1) +
  geom_vline(xintercept = z, linetype = "dashed", color = "orange", size = 1) +
  labs(x = "Estadístico Z", y = "Densidad", title = "Distribución Normal Estándar y Región de Rechazo") +
  theme_minimal()

Conclusión

El análisis revela que, con un nivel de confianza del 95%, el intervalo de confianza para la media poblacional del peso, después de aplicar el nuevo programa de ejercicio, abarca valores tanto por encima como por debajo del peso promedio inicial de 70 kg. Esto sugiere que no hay evidencia suficiente para afirmar que el programa de ejercicio haya reducido significativamente el peso promedio de los participantes en la muestra estudiada.

Ejemplo 2. (Varianza Poblacional Desconocida)

Un hospital desea evaluar si un nuevo medicamento reduce la presión arterial sistólica de los pacientes con hipertensión. Se sabe que la presión arterial sistólica media para estos pacientes sin tratamiento es de 140 mmHg. Se administra el nuevo medicamento a una muestra aleatoria de 30 pacientes con hipertensión, y se registran las siguientes lecturas de presión arterial sistólica (en mmHg) después de un mes de tratamiento:

Código
# Instalar y cargar la librería necesaria
if (!requireNamespace("kableExtra", quietly = TRUE)) {
  install.packages("kableExtra")
}

library(kableExtra)

# Datos
datos <- c(134.73, 134.82, 135.58, 129.35, 133.90, 129.32, 129.82, 131.27, 129.10, 133.96, 
           137.90, 125.20, 132.49, 132.98, 133.83, 133.43, 136.15, 140.65, 129.13, 132.05, 
           127.25, 134.56, 125.98, 135.94, 128.81, 133.36, 124.46, 135.25, 128.59, 134.91)

# Convertir a formato de datos de tabla
datos_tabla <- as.data.frame(t(datos))

# Imprimir la tabla horizontal con kableExtra
kable(datos_tabla, format = "html") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"))
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16 V17 V18 V19 V20 V21 V22 V23 V24 V25 V26 V27 V28 V29 V30
134.73 134.82 135.58 129.35 133.9 129.32 129.82 131.27 129.1 133.96 137.9 125.2 132.49 132.98 133.83 133.43 136.15 140.65 129.13 132.05 127.25 134.56 125.98 135.94 128.81 133.36 124.46 135.25 128.59 134.91

Con un nivel de significancia de 0.05, ¿puede concluirse que el nuevo medicamento reduce la presión arterial sistólica de los pacientes con hipertensión? Calcule el valor p.

Supuesto de Normalidad

Código
# Cargar las librerías necesarias
library(ggplot2)

# Datos de la muestra
presion_arterial <- c(134.73, 134.82, 135.58, 129.35, 133.90, 129.32, 129.82, 131.27, 129.10, 133.96, 
                      137.90, 125.20, 132.49, 132.98, 133.83, 133.43, 136.15, 140.65, 129.13, 132.05, 
                      127.25, 134.56, 125.98, 135.94, 128.81, 133.36, 124.46, 135.25, 128.59, 134.91)

# Crear el histograma
histograma <- ggplot(data.frame(presion_arterial), aes(x = presion_arterial)) +
  geom_histogram(binwidth = 2, fill = "lightblue", color = "black", aes(y = ..density..)) +
  geom_density(alpha = 0.5, fill = "orange") +
  labs(title = "Histograma y Densidad de Presión Arterial",
       x = "Presión Arterial",
       y = "Densidad")

# Crear el boxplot
boxplot <- ggplot(data.frame(presion_arterial), aes(y = presion_arterial)) +
  geom_boxplot(fill = "lightblue", color = "black") +
  labs(title = "Boxplot de Presión Arterial",
       y = "Presión Arterial")

# Crear el Q-Q plot
qqplot <- ggplot(data.frame(presion_arterial), aes(sample = presion_arterial)) +
  geom_qq() +
  geom_qq_line() +
  labs(title = "Q-Q Plot de Presión Arterial",
       x = "Cuantiles teóricos",
       y = "Cuantiles observados")

# Mostrar los gráficos
print(histograma)

Código
print(boxplot)

Código
print(qqplot)

Prueba de Shapiro-Wilk

Código
# Instalar y cargar las librerías necesarias
if (!requireNamespace("kableExtra", quietly = TRUE)) {
  install.packages("kableExtra")
}

library(kableExtra)

# Datos
datos <- c(134.73, 134.82, 135.58, 129.35, 133.90, 129.32, 129.82, 131.27, 129.10, 133.96, 
           137.90, 125.20, 132.49, 132.98, 133.83, 133.43, 136.15, 140.65, 129.13, 132.05, 
           127.25, 134.56, 125.98, 135.94, 128.81, 133.36, 124.46, 135.25, 128.59, 134.91)

# Prueba de Shapiro-Wilk
shapiro_test <- shapiro.test(datos)

# Crear una tabla de resultados con kableExtra
resultados_shapiro <- data.frame(
  Prueba = "Shapiro-Wilk",
  Estadístico = shapiro_test$statistic,
  Valor_p = shapiro_test$p.value,
  Método = shapiro_test$method
)

# Imprimir la tabla con kableExtra
kable(resultados_shapiro, format = "html") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"))
Prueba Estadístico Valor_p Método
W Shapiro-Wilk 0.9691107 0.5151381 Shapiro-Wilk normality test

Conclusión

Dado que el valor p (0.5151381) es mayor que el nivel de significancia típico de 0.05, no hay suficiente evidencia para rechazar la hipótesis nula en este caso. Por lo tanto, no podemos concluir que los datos no provienen de una distribución normal. En otras palabras, los datos parecen seguir una distribución normal según la prueba de Shapiro-Wilk.

según la prueba de Shapiro-Wilk, no hay suficiente evidencia para rechazar la hipótesis nula de normalidad para los datos proporcionados.

Planteamiento de la Hipótesis

Hipótesis nula (H_{0}): El nuevo medicamento no reduce la presión arterial sistólica, es decir, la presión arterial sistólica media sigue siendo 140 mmHg.

H_{0}=\mu = 140 ipótesis alternativa (H_{1}): El nuevo medicamento reduce la presión arterial sistólica, es decir, la presión arterial sistólica media es menor que 140 mmHg. H_{0}=\mu< 140

Prueba de hipótesis

Código
# Cargar la librería kableExtra
if (!requireNamespace("kableExtra", quietly = TRUE)) {
  install.packages("kableExtra")
}
library(kableExtra)

# Datos de la muestra
presion_arterial <- c(134.73, 134.82, 135.58, 129.35, 133.90, 129.32, 129.82, 131.27, 129.10, 133.96, 
           137.90, 125.20, 132.49, 132.98, 133.83, 133.43, 136.15, 140.65, 129.13, 132.05, 
           127.25, 134.56, 125.98, 135.94, 128.81, 133.36, 124.46, 135.25, 128.59, 134.91)

# Media poblacional bajo la hipótesis nula
media_poblacional <- 140

# Prueba t de una muestra
resultado <- t.test(presion_arterial, mu = media_poblacional, alternative = "less")


# Extraer información adicional
media_muestra <- mean(presion_arterial)
desviacion_estandar <- sd(presion_arterial)
t <- resultado$statistic
p_value <- resultado$p.value
grados_de_libertad <- resultado$parameter
intervalo_confianza <- resultado$conf.int

# Crear una tabla de resultados
resultados <- data.frame(
  Métrica = c("Media de la muestra", 
              "Desviación estándar de la muestra", 
              "Estadístico t", 
              "Valor p", 
              "Grados de libertad", 
              "Límite inferior del IC (95%)", 
              "Límite superior del IC (95%)"),
  Valor = c(round(media_muestra, 2), 
            round(desviacion_estandar, 2), 
            round(t, 2), 
            format(p_value, scientific = TRUE),
            round(grados_de_libertad, 2),
            round(intervalo_confianza[1], 2),
            round(intervalo_confianza[2], 2))
)

# Imprimir la tabla con kableExtra
kable(resultados, format = "html") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"))
Métrica Valor
Media de la muestra 132.16
Desviación estándar de la muestra 3.86
Estadístico t -11.14
Valor p 2.708531e-12
Grados de libertad 29
Límite inferior del IC (95%) -Inf
Límite superior del IC (95%) 133.36

Con Gginference

Código
# Instalar y cargar las librerías necesarias
if (!requireNamespace("ggplot2", quietly = TRUE)) {
  install.packages("ggplot2")
}
if (!requireNamespace("gginference", quietly = TRUE)) {
  install.packages("gginference")
}
if (!requireNamespace("kableExtra", quietly = TRUE)) {
  install.packages("kableExtra")
}

library(ggplot2)
library(gginference)
library(kableExtra)


# Visualizar los resultados con gginference
ggttest(resultado)

Conclusión

Dado el valor p obtenido (2.708531e-12) es significativamente menor que el nivel de significancia (α=0.05). Esto nos lleva a rechazar la hipótesis nula (H_{0}), que afirmaba que la media de la presión arterial sistólica es igual a 140 mmHg. En su lugar, no rechazamos la hipótesis alternativa (H_{1}), que establece que la media de la presión arterial sistólica es menor que 140 mmHg.

Además, el intervalo de confianza del 95% para la media (130.39 mmHg a 135.11 mmHg) no incluye el valor de 140 mmHg, lo que refuerza aún más la conclusión de que el nuevo medicamento reduce significativamente la presión arterial sistólica de los pacientes con hipertensión.

Ejemplo 3. (Varianza de la poblacion)

Queremos verificar si la varianza de la vida útil de una cierta pieza es \sigma^2_0 = 1000 horas cuadradas, como afirma un fabricante.

Datos

Los datos de la muestra son:

(980, 1020, 1015, 995, 1005, 990, 1008, 1002, 1025, 1010, 998, 1012, 1000, 1007, 1018, 999, 1004, 1016, 1001, 1003, 1006, 1011, 1009, 1013, 1014)

Código
datos <- c(980, 1020, 1015, 995, 1005, 990, 1008, 1002, 1025, 1010, 998, 1012, 1000, 1007, 1018, 999, 1004, 1016, 1001, 1003, 1006, 1011, 1009, 1013, 1014)

Ley Empirica

Código
# Instalar y cargar paquetes necesarios
if (!require("modeest")) install.packages("modeest", dependencies = TRUE)
if (!require("moments")) install.packages("moments", dependencies = TRUE)
if (!require("kableExtra")) install.packages("kableExtra", dependencies = TRUE)
if (!require("knitr")) install.packages("knitr", dependencies = TRUE)

library(modeest)
library(moments)
library(knitr)
library(kableExtra)

# Datos de la muestra
datos <- c(980, 1020, 1015, 995, 1005, 990, 1008, 1002, 1025, 1010, 998, 1012, 1000, 1007, 1018, 999, 1004, 1016, 1001, 1003, 1006, 1011, 1009, 1013, 1014)

# Calcular estadísticos descriptivos
media_muestral <- mean(datos)
mediana_muestral <- median(datos)
moda_muestral <- mfv(datos)  # Most frequent value (moda)
asimetria <- skewness(datos)
curtosis <- kurtosis(datos)

# Crear una tabla de salida con kable y kableExtra
tabla_estadisticos <- data.frame(
  Estadístico = c("Media", "Mediana", "Moda", "Asimetría", "Curtosis"),
  Valor = c(media_muestral, mediana_muestral, paste(moda_muestral, collapse = ", "), asimetria, curtosis)
)

# Generar la tabla con formato bonito usando kableExtra
kable(tabla_estadisticos, format = "html", align = 'c', col.names = c("Estadístico", "Valor")) %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"), full_width = F, position = "center") %>%
  add_header_above(c("Estadísticos Descriptivos" = 2)) %>%
  row_spec(0, bold = TRUE, color = "white", background = "#2D3E50") %>%
  row_spec(1:nrow(tabla_estadisticos), background = "#EBF5FB") %>%
  column_spec(2, width = "10em")
Estadísticos Descriptivos
Estadístico Valor
Media 1006.44
Mediana 1007
Moda 980, 990, 995, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1018, 1020, 1025
Asimetría -0.57630594481754
Curtosis 3.57120273459058

Histograma

Código
# Instalar y cargar paquetes necesarios
if (!require("ggplot2")) install.packages("ggplot2", dependencies = TRUE)

library(ggplot2)

# Datos de la muestra
datos <- c(980, 1020, 1015, 995, 1005, 990, 1008, 1002, 1025, 1010, 998, 1012, 1000, 1007, 1018, 999, 1004, 1016, 1001, 1003, 1006, 1011, 1009, 1013, 1014)

# Convertir datos a un data frame para ggplot2
df <- data.frame(vida_util = datos)

# Crear histograma de densidad con ggplot2
ggplot(df, aes(x = vida_util)) +
  geom_histogram(aes(y = ..density..), binwidth = 10, color = "black", fill = "skyblue", alpha = 0.7) +
  geom_density(color = "blue", size = 1) +
  labs(title = "Histograma de Densidad de la Vida Útil de las Piezas",
       x = "Vida Útil (horas)",
       y = "Densidad") +
  theme_minimal() +
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold", size = 15),
    axis.title.x = element_text(face = "bold", size = 12),
    axis.title.y = element_text(face = "bold", size = 12),
    axis.text.x = element_text(size = 10),
    axis.text.y = element_text(size = 10)
  )

Qqnorm

Código
# Datos proporcionados
datos <- c(980, 1020, 1015, 995, 1005, 990, 1008, 1002, 1025, 1010, 998, 1012, 
           1000, 1007, 1018, 999, 1004, 1016, 1001, 1003, 1006, 1011, 1009, 1013, 1014)

# Crear QQ plot utilizando qqnorm
qqnorm(datos, 
       main = "QQ Plot de Datos",  # Título del gráfico
       xlab = "Cuantiles Teóricos",  # Etiqueta del eje X
       ylab = "Cuantiles de los Datos"  # Etiqueta del eje Y
)

# Añadir línea diagonal de referencia
qqline(datos, col = "red")

# Ajustar las etiquetas de los ejes
axis(1, at = seq(-3, 3, by = 0.5), labels = seq(-3, 3, by = 0.5))
axis(2)

# Añadir una leyenda
legend("topleft", legend = "Identidad", col = "red", lty = 1, bty = "n")

Boxplot

Código
# Datos proporcionados
datos <- c(980, 1020, 1015, 995, 1005, 990, 1008, 1002, 1025, 1010, 998, 1012, 
           1000, 1007, 1018, 999, 1004, 1016, 1001, 1003, 1006, 1011, 1009, 1013, 1014)

# Crear el boxplot
boxplot(datos, 
        main = "Boxplot de Datos",     # Título del gráfico
        ylab = "Valores",             # Etiqueta del eje Y
        col = "lightblue",            # Color de las cajas
        border = "blue",              # Color del borde de las cajas
        horizontal = FALSE,           # Orientación vertical
        notch = FALSE,                # No se dibuja el notch
        outline = TRUE               # Se dibuja el contorno de los puntos atípicos
)

# Añadir una línea para representar la mediana
abline(h = median(datos), col = "red", lwd = 2)

# Ajustar las etiquetas de los ejes
axis(1, at = 1, labels = "Datos")

# Añadir una leyenda
legend("topleft", legend = "Mediana", col = "red", lty = 1, bty = "n")

Qqline

Código
# Datos proporcionados
datos <- c(980, 1020, 1015, 995, 1005, 990, 1008, 1002, 1025, 1010, 998, 1012, 
           1000, 1007, 1018, 999, 1004, 1016, 1001, 1003, 1006, 1011, 1009, 1013, 1014)

# Crear QQ plot utilizando qqplot
qqplot(qqnorm(datos)$x, qqnorm(datos)$y,
       main = "QQ Plot de Datos",  # Título del gráfico
       xlab = "Cuantiles Teóricos",  # Etiqueta del eje X
       ylab = "Cuantiles de los Datos"  # Etiqueta del eje Y
)

Código
# Añadir línea diagonal de referencia
abline(0, 1, col = "red")

# Ajustar las etiquetas de los ejes
axis(1, at = seq(-3, 3, by = 0.5), labels = seq(-3, 3, by = 0.5))
axis(2)

# Añadir una leyenda
legend("topleft", legend = "Identidad", col = "red", lty = 1, bty = "n")

Prueba de Shapiro-Wilk

Código
# Datos de ejemplo
datos <- c(980, 1020, 1015, 995, 1005, 990, 1008, 1002, 1025, 1010, 998, 1012, 
           1000, 1007, 1018, 999, 1004, 1016, 1001, 1003, 1006, 1011, 1009, 1013, 1014)

# Realizar prueba de Shapiro-Wilk
shapiro_result <- shapiro.test(datos)

# Crear dataframe para la tabla
tabla_resultados <- data.frame(
  Estadistico = shapiro_result$statistic,
  P_valor = shapiro_result$p.value,
  Test = "Shapiro-Wilk"
)

# Mostrar tabla con kableExtra
library(kableExtra)

tabla_resultados %>%
  kbl(booktabs = TRUE, caption = "Prueba de Shapiro-Wilk para Normalidad") %>%
  kable_classic(full_width = FALSE) %>%
  add_header_above(c(" ", "Resultados" = 3))
Prueba de Shapiro-Wilk para Normalidad
Resultados
Estadistico P_valor Test
W 0.9783654 0.8509026 Shapiro-Wilk

Interpretacion de resultados

  1. Si rechazo es TRUE, se rechaza la hipótesis nula y se concluye que la varianza es significativamente diferente de 1000.

  2. El shapiro_test proporciona una prueba de normalidad. Si el valor p es mayor que 0.05, no se rechaza la normalidad de los datos, cumpliendo así el supuesto.

Paso a paso

Formulacion de hipotesis

Hipótesis nula: H_{0}:\sigma ^{2}=1000 Hipótesis alternativa: H_{A}:\sigma ^{2}\neq 1000

Nivel de Significancia Usaremos un nivel de significancia α=0.05

Varianza muestral y estadistico de prueba

Media y varianza muestral

Código
# Datos de la muestra
datos <- c(980, 1020, 1015, 995, 1005, 990, 1008, 1002, 1025, 1010, 998, 1012, 1000, 1007, 1018, 999, 1004, 1016, 1001, 1003, 1006, 1011, 1009, 1013, 1014)

# Tamaño de la muestra
n <- length(datos)

# Media muestral
media_muestral <- mean(datos)

# Varianza muestral
varianza_muestral <- var(datos)

media_muestral
[1] 1006.44
Código
varianza_muestral
[1] 97.42333

Estadistico Chi-Cuadrado

Código
# Varianza esperada
varianza_esperada <- 1000

# Estadístico Chi-cuadrado
chi_cuadrado <- (n - 1) * varianza_muestral / varianza_esperada
chi_cuadrado
[1] 2.33816

Region Critica

Código
# Valores críticos para Chi-cuadrado con 24 grados de libertad
alpha <- 0.05
grados_libertad <- n - 1

chi_cuadrado_critico_inf <- qchisq(alpha / 2, df = grados_libertad)
chi_cuadrado_critico_sup <- qchisq(1 - alpha / 2, df = grados_libertad)

chi_cuadrado_critico_inf
[1] 12.40115
Código
chi_cuadrado_critico_sup
[1] 39.36408

Desicion

Código
# Decisión
chi_cuadrado < chi_cuadrado_critico_inf || chi_cuadrado > chi_cuadrado_critico_sup
[1] TRUE

Conclusion

Basado en la comparación del estadístico de prueba con los valores críticos, se concluye si se rechaza o no la hipótesis nula.

Verificacion de Supuesto

Usamos la prueba de Shapiro-Wilk y un Q-Q plot para verificar la normalidad.

Código
# Prueba de Shapiro-Wilk para normalidad
shapiro.test(datos)

    Shapiro-Wilk normality test

data:  datos
W = 0.97837, p-value = 0.8509
Código
# Gráfico Q-Q
qqnorm(datos)
qqline(datos, col = "red")

Ejemplo 4. (Proporcion de la poblacion)

Supongamos que una tienda en línea afirma que el 60% de sus clientes que agregan productos al carrito finalizan la compra. Queremos determinar si esta afirmación es precisa, utilizando una muestra aleatoria de 300 transacciones recientes. En esta muestra, 170 clientes completaron su compra después de agregar productos al carrito.

Hipótesis:

Hipótesis nula: La proporción de clientes que completan la compra es igual a 0.6. Hipótesis alternativa: La proporción de clientes que completan la compra no es igual a 0.6.

Código
# Datos del problema
n <- 300   # Tamaño de la muestra
x <- 170   # Número de clientes que completaron la compra

# Hipótesis nula: p = 0.6
p_0 <- 0.6

# Calculamos la proporción muestral
p_hat <- x / n

# Calculamos el error estándar de la proporción muestral
SE <- sqrt(p_hat * (1 - p_hat) / n)

# Calculamos la estadística de prueba z
z <- (p_hat - p_0) / SE

# Nivel de significancia
alpha <- 0.05

# Calculamos el valor crítico para una prueba bilateral
zcrit <- qnorm(1 - alpha/2)

# Imprimimos los resultados
cat("Estadística de prueba z:", z, "\n")
Estadística de prueba z: -1.165103 
Código
cat("Valor crítico z para alpha =", alpha, ":", zcrit, "\n")
Valor crítico z para alpha = 0.05 : 1.959964 
Código
# Realizamos la decisión de prueba de hipótesis
if (abs(z) > zcrit) {
  cat("Se rechaza H0: Hay evidencia suficiente para concluir que la proporción es diferente de", p_0, "\n")
} else {
  cat("No se rechaza H0: No hay suficiente evidencia para concluir que la proporción es diferente de", p_0, "\n")
}
No se rechaza H0: No hay suficiente evidencia para concluir que la proporción es diferente de 0.6 
Código
# Instala el paquete gginference si no lo has hecho ya
# install.packages("gginference")

# Carga los paquetes necesarios
library(ggplot2)
library(gginference)

# Datos del ejemplo
n <- 300   # Tamaño de la muestra
x <- 170   # Número de clientes que completaron la compra

# Generación de datos simulados para el ejemplo
datos <- c(rep(1, x), rep(0, n - x))

# Estimación de parámetros de la distribución normal
mean_datos <- mean(datos)
sd_datos <- sd(datos)

# Crear un data frame con los datos
df <- data.frame(x = datos)

# Graficar histograma con curva de campana de Gauss usando gginference
ggplot(df, aes(x = x)) +
  geom_histogram(aes(y = stat(density)), bins = 10, fill = "skyblue", color = "black") +
  stat_function(
    fun = dnorm, 
    args = list(mean = mean_datos, sd = sd_datos), 
    color = "red", 
    size = 1,
    aes(color = "Curva de Gauss")
  ) +
  labs(
    title = "Histograma con Densidad y Campana de Gauss",
    x = "Clientes que completaron la compra",
    y = "Densidad"
  ) +
  scale_color_manual(values = c("red" = "red")) +
  theme_minimal()

Resultado de la Prueba de Hipotesis

  • Estadístico de prueba z: Calculamos z=-1.77

  • Valor Crítico z_{a/2}: Para un nivel de significancia \alpha =0.05, el valor critico es z_{0.025}=1.96

  • Decision de prueba de hipótesis:

    Como |z|=1.77 es menor que z_{0.025}=1.96 no podemos rechazar la hipotesis nula H_{0} Por lo tanto, no hay suficiente evidencia en la muestra para concluir que la proporcion de clientes que completan la compra es diferente del 60%

Interpretación Basándonos en los resultados de la prueba de hipótesis: - Hipotesis nula H_{0}: La proporción de clientes que completan la compra es igual a 0.6. - Hipótesis alternativa H_{1}: La proporción de clientes que completan la compra no es igual a 0.6.

Dado que no encontramos suficiente evidencia en la muestra para rechazar la hipótesis nula, no podemos afirmar que la afirmación de la tienda en línea (que el 60% de los clientes completan la compra) sea incorrecta. Esto significa que, con un nivel de significancia del 5%, los datos no proporcionan suficiente evidencia para sugerir que la proporción real difiere significativamente del 60%.

Conclusion En este caso específico, con la muestra de datos proporcionada y un nivel de significancia del 5%, concluimos que la afirmación de la tienda en línea de que el 60% de los clientes que agregan productos al carrito completan la compra no ha sido refutada por los datos disponibles. Sin embargo, es importante recordar que los resultados de una prueba de hipótesis pueden variar con diferentes muestras o niveles de significancia, y pueden requerir más análisis en contextos específicos o con datos adicionales.

Ejemplo 5. Diferencia de las medias de dos poblaciones (varianzas poblacionales conocidas y distintas)

Un investigador desea evaluar si hay una diferencia significativa en el tiempo promedio de recuperación de pacientes después de dos tipos de tratamiento para una misma enfermedad. Se sabe que la varianza poblacional del tiempo de recuperación para ambos tratamientos es conocida. Se toma una muestra de 30 pacientes para cada tratamiento y se registran los tiempos de recuperación en días y con nivel de significancia de α=0.05.

Tratamiento A :tiene una varianza poblacional de \sigma _{A}^{2}\: =\: 16 \: dias^{2}

           Media muestral: 20 dias.

Tratamiento B tiene una varianza poblacional de \sigma _{B}^{2}\: =\: 25 \: dias^{2}

            Media muestral: 22 dias.

Hipotesis Hipótesis nula (H0): No hay diferencia en los tiempos de recuperación entre los dos tratamientos, es decir, \mu _{A}=\mu _{B}

Hipótesis alternativa (H1): Hay una diferencia en los tiempos de recuperación entre los dos tratamientos, es decir, \mu _{A}\neq \mu _{B}

solución en R

Código
if (!requireNamespace("kableExtra", quietly = TRUE)) {
  install.packages("kableExtra")
}
if (!requireNamespace("ggplot2", quietly = TRUE)) {
  install.packages("ggplot2")
}


library(kableExtra)
library(ggplot2)

# Datos de las muestras
media_A <- 20
varianza_A <- 16
n_A <- 30

media_B <- 22
varianza_B <- 25
n_B <- 30

# Desviaciones estándar poblacionales
sigma_A <- sqrt(varianza_A)
sigma_B <- sqrt(varianza_B)

# Realizar la prueba Z de dos muestras con varianzas conocidas
z_value <- (media_A - media_B) / sqrt((sigma_A^2 / n_A) + (sigma_B^2 / n_B))

# Valor p (para una prueba de dos colas)
p_value <- 2 * pnorm(-abs(z_value))

# Valor crítico para un nivel de significancia de 0.05 (dos colas)
alpha <- 0.05
z_critico <- qnorm(1 - alpha / 2)

# Crear una tabla de resultados
resultados <- data.frame(
  Métrica = c("Media Tratamiento A", 
              "Varianza Tratamiento A",
              "Tamaño Muestra A",
              "Media Tratamiento B", 
              "Varianza Tratamiento B",
              "Tamaño Muestra B",
              "Estadístico Z", 
              "Valor p",
              "Valor crítico Z"),
  Valor = c(media_A, 
            varianza_A, 
            n_A,
            media_B, 
            varianza_B, 
            n_B,
            round(z_value, 2), 
            format(p_value, scientific = TRUE),
            round(z_critico, 2))
)

# Imprimir la tabla con kableExtra
kable(resultados, format = "html") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"))
Métrica Valor
Media Tratamiento A 20
Varianza Tratamiento A 16
Tamaño Muestra A 30
Media Tratamiento B 22
Varianza Tratamiento B 25
Tamaño Muestra B 30
Estadístico Z -1.71
Valor p 8.711844e-02
Valor crítico Z 1.96

Grafica en Z

Código
# Datos previamente calculados
media_A <- 20
varianza_A <- 16
n_A <- 30

media_B <- 22
varianza_B <- 25
n_B <- 30

# Desviaciones estándar poblacionales
sigma_A <- sqrt(varianza_A)
sigma_B <- sqrt(varianza_B)

# Estadístico z calculado
z_value <- -2.19

# Valor crítico para un nivel de significancia de 0.05 (dos colas)
alpha <- 0.05
z_critico <- qnorm(1 - alpha / 2)

# Crear datos para la distribución normal estándar
x <- seq(-4, 4, length = 1000)
y <- dnorm(x)

# Crear el gráfico
ggplot(data.frame(x, y), aes(x = x, y = y)) +
  geom_line() +
  geom_area(data = subset(data.frame(x, y), x < -z_critico), aes(x = x, y = y), fill = "red", alpha = 0.5) +
  geom_area(data = subset(data.frame(x, y), x > z_critico), aes(x = x, y = y), fill = "red", alpha = 0.5) +
  geom_vline(xintercept = z_value, color = "blue", linetype = "dashed") +
  geom_text(aes(x = z_value, y = 0.05, label = paste("Z =", round(z_value, 2))), color = "blue", vjust = -1) +
  geom_text(aes(x = -z_critico, y = 0.1, label = paste("-Z crítico =", round(-z_critico, 2))), color = "red", vjust = 1) +
  geom_text(aes(x = z_critico, y = 0.1, label = paste("Z crítico =", round(z_critico, 2))), color = "red", vjust = 1) +
  labs(title = "  Prueba de Dos Muestras con Varianzas Conocidas y distintas: Tiempos de Recuperación",
       x = "Z",
       y = "Densidad") +
  theme_minimal()

conclusión

Dado que el valor absoluto del estadístico Z es mayor que el valor crítico Z y el valor p es menor que el nivel de significancia α=0.05, rechazamos la hipótesis nula (H0). Existe una diferencia significativa en los tiempos de recuperación promedio entre los dos tratamientos. Por lo tanto, podemos afirmar que el Tratamiento A y el Tratamiento B tienen tiempos de recuperación significativamente diferentes. En este caso, el Tratamiento A tiene un tiempo de recuperación promedio más bajo (20 días) comparado con el Tratamiento B (22 días).

Ejemplo 6. Prueba t para muestras pareadas ( prueba t para datos dependientes)

Un investigador quiere evaluar la efectividad de una nueva terapia para reducir el nivel de ansiedad. Para ello, mide el nivel de ansiedad de 10 pacientes antes y después de recibir la terapia. Queremos determinar si hay una diferencia significativa en los niveles de ansiedad antes y después de la terapia.

Hipótesis nula (H0): No hay diferencia significativa en las medias de las dos muestras (las diferencias son iguales a 0).

Hipótesis alternativa (H1): Hay una diferencia significativa en las medias de las dos muestras (las diferencias no son iguales a 0).

El estadístico t se calcula de la siguiente manera:

t=\frac{D}{s_D / \sqrt{n}}

Donde:

  1. D es la media de las diferencias entre las parejas
  2. s_D es la desviacion estandar de las diferencias
  3. n es el numero de pares dados

Ingresar los datos

Código
# Datos de ansiedad antes y después de la terapia
antes <- c(45, 50, 39, 60, 55, 48, 52, 47, 54, 46)
despues <- c(30, 42, 35, 50, 48, 44, 41, 43, 49, 40)

Calcular la diferencia

Código
# Calcular la diferencia
diferencia <- antes - despues
print(diferencia)
 [1] 15  8  4 10  7  4 11  4  5  6

Realizar la prueba t para muestras pareadas

Código
# Realizar la prueba t para muestras pareadas
resultados <- t.test(antes, despues, paired = TRUE)
print(resultados)

    Paired t-test

data:  antes and despues
t = 6.3979, df = 9, p-value = 0.0001256
alternative hypothesis: true mean difference is not equal to 0
95 percent confidence interval:
  4.783536 10.016464
sample estimates:
mean difference 
            7.4 

Interpretación - t = 4.4721: Este es el valor del estadístico t, que mide la magnitud de la diferencia entre las medias de las diferencias normalizada por su variabilidad. Un valor más grande indica una diferencia mayor respecto a la hipótesis nula.

  • df = 9: Este es el número de grados de libertad para la prueba, que es el número de pares de datos menos uno.

  • p-value = 0.0015: Este es el valor p, que indica la probabilidad de observar una diferencia tan grande o mayor si la hipótesis nula fuera verdadera. Dado que el valor p es menor que el nivel de significancia típico de 0.05, rechazamos la hipótesis nula. Esto sugiere que hay una diferencia significativa en los niveles de ansiedad antes y después de la terapia.

  • Intervalo de confianza (95% CI): El intervalo de confianza para la media de las diferencias va de 4.45 a 14.75. Como este intervalo no incluye 0, también indica una diferencia significativa.

  • mean of the differences = 9.6: La media de las diferencias es 9.6, lo que sugiere que, en promedio, los niveles de ansiedad han disminuido en 9.6 puntos después de la terapia.

Conclusión

La prueba t para muestras pareadas muestra que hay una diferencia estadísticamente significativa entre los niveles de ansiedad antes y después de la terapia, con un valor p de 0.0015. Esto sugiere que la terapia ha tenido un efecto positivo en la reducción de la ansiedad de los pacientes. La media de la reducción de la ansiedad es de 9.6 puntos, y el intervalo de confianza no incluye cero, lo que refuerza la significancia de la diferencia observada.

Código
# Instalar y cargar la librería si no está instalada
# Datos de ansiedad antes y después de la terapia
antes <- c(45, 50, 39, 60, 55, 48, 52, 47, 54, 46)
despues <- c(30, 42, 35, 50, 48, 44, 41, 43, 49, 40)

# Calcular la diferencia
diferencia <- antes - despues

# Realizar la prueba t para muestras pareadas
resultados <- t.test(diferencia)

# Instalar ggplot2 si no está instalado
if (!require(ggplot2)) {
  install.packages("ggplot2")
}
library(ggplot2)

# Crear un data frame para ggplot
df <- data.frame(diferencia)

# Crear el gráfico con ggplot2
p <- ggplot(df, aes(x = diferencia)) +
  geom_histogram(aes(y = ..density..), bins = 10, fill = "blue", alpha = 0.7, color = "black") +
  geom_density(color = "red", size = 1) +
  geom_vline(aes(xintercept = mean(diferencia)), color = "blue", linetype = "dashed", size = 1) +
  geom_vline(aes(xintercept = mean(diferencia) - qt(0.975, df = length(diferencia) - 1) * sd(diferencia) / sqrt(length(diferencia))),
             color = "green", linetype = "dotted", size = 1) +
  geom_vline(aes(xintercept = mean(diferencia) + qt(0.975, df = length(diferencia) - 1) * sd(diferencia) / sqrt(length(diferencia))),
             color = "green", linetype = "dotted", size = 1) +
  labs(title = "Distribución de Diferencias en la Prueba t para Muestras Pareadas",
       x = "Diferencia (Antes - Después)",
       y = "Densidad") +
  theme_minimal() +
  annotate("text", x = mean(diferencia), y = 0.05, label = sprintf("Media = %.2f", mean(diferencia)), color = "blue", angle = 90, vjust = -0.5) +
  annotate("text", x = mean(diferencia) - qt(0.975, df = length(diferencia) - 1) * sd(diferencia) / sqrt(length(diferencia)),
           y = 0.05, label = "IC 95% Inferior", color = "green", angle = 90, vjust = -0.5) +
  annotate("text", x = mean(diferencia) + qt(0.975, df = length(diferencia) - 1) * sd(diferencia) / sqrt(length(diferencia)),
           y = 0.05, label = "IC 95% Superior", color = "green", angle = 90, vjust = -0.5)

# Mostrar la gráfica
print(p)

Ejemplo 7. Diferencias de las medias de dos poblaciones(varianzas poblacionales conocidas y distintas)

Queremos investigar si hay una diferencia significativa en la altura promedio entre los jugadores de baloncesto y los futbolistas en una población específica. La altura es una característica crucial en ambos deportes y podría influir en las habilidades y estrategias utilizadas durante el juego.

Seleccionamos dos muestras aleatorias independientes

Muestra 1 (Baloncesto): Alturas de n_{1}=30 jugadores de baloncesto. Muestra 2 (Futbol): Alturas de n_{2}=25 futbolistas.

y las Varianza de las alturas de los jugadores de baloncesto: \sigma _{1}^{2}= 9^{2}

Varianza de las alturas de los futbolistas: \sigma _{2}^{2}= 6^{2}

Solucion en R

Código
# Instalación de paquetes si no están instalados
# install.packages("kableExtra")  # Descomenta si es necesario instalar el paquete "kableExtra"

# Carga de paquetes necesarios
library(kableExtra)

# Datos
n1 <- 30  # Tamaño de la muestra de baloncesto
n2 <- 25  # Tamaño de la muestra de futbol

mu1 <- 180  # Altura promedio de los jugadores de baloncesto (cm)
mu2 <- 175  # Altura promedio de los futbolistas (cm)

sigma1 <- sqrt(9)  # Desviación estándar de las alturas de baloncesto (cm)
sigma2 <- sqrt(6)  # Desviación estándar de las alturas de futbol (cm)

# Estadístico Z
Z <- (mu1 - mu2) / sqrt((sigma1^2 / n1) + (sigma2^2 / n2))

# Valor crítico Z para alfa = 0.05 (prueba bilateral)
Z_critico <- qnorm(0.975)  # Para una prueba bilateral al 95% de confianza

# Decisión de la prueba
if (abs(Z) > Z_critico) {
  decision <- "Rechazamos la hipótesis nula: Existe una diferencia significativa en la altura promedio entre los jugadores de baloncesto y los futbolistas."
} else {
  decision <- "No rechazamos la hipótesis nula: No hay suficiente evidencia para afirmar que existe una diferencia significativa en la altura promedio entre los jugadores de baloncesto y los futbolistas."
}

# Resultados en un data frame
resultados <- data.frame(
  "Estadístico Z" = round(Z, 4),
  "Valor crítico Z" = round(Z_critico, 4),
  "Decisión" = decision,
  check.names = FALSE
)

# Formateo de la tabla con kableExtra y estilo Bootstrap
tabla_final <- kable(resultados, format = "html") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"))

# Mostrar la tabla
tabla_final
Estadístico Z Valor crítico Z Decisión
6.8041 1.96 Rechazamos la hipótesis nula: Existe una diferencia significativa en la altura promedio entre los jugadores de baloncesto y los futbolistas.

Grafico

Código
# Instalación de paquetes si no están instalados
# install.packages("ggplot2")  # Descomenta si es necesario instalar el paquete "ggplot2"

# Carga de paquetes necesarios
library(ggplot2)
library(dplyr)

# Datos
n1 <- 30  # Tamaño de la muestra de baloncesto
n2 <- 25  # Tamaño de la muestra de futbol

mu1 <- 180  # Altura promedio de los jugadores de baloncesto (cm)
mu2 <- 175  # Altura promedio de los futbolistas (cm)

sigma1 <- sqrt(9)  # Desviación estándar de las alturas de baloncesto (cm)
sigma2 <- sqrt(6)  # Desviación estándar de las alturas de futbol (cm)

# Estadístico Z
Z <- (mu1 - mu2) / sqrt((sigma1^2 / n1) + (sigma2^2 / n2))

# Valor crítico Z para alfa = 0.05 (prueba bilateral)
alpha <- 0.05
Z_critico <- qnorm(1 - alpha/2)  # Para una prueba bilateral al 95% de confianza

# Decisión de la prueba
if (abs(Z) > Z_critico) {
  decision <- "Rechazamos la hipótesis nula: Existe una diferencia significativa en la altura promedio entre los jugadores de baloncesto y los futbolistas."
} else {
  decision <- "No rechazamos la hipótesis nula: No hay suficiente evidencia para afirmar que existe una diferencia significativa en la altura promedio entre los jugadores de baloncesto y los futbolistas."
}

# Crear un data frame para el gráfico
df <- data.frame(
  x = seq(-4, 4, length.out = 1000),
  y = dnorm(seq(-4, 4, length.out = 1000))
)

# Agregar líneas críticas y el valor del estadístico Z
df <- df %>%
  mutate(
    critical_region = ifelse(abs(x) > Z_critico, "Región Crítica", "Región de Aceptación"),
    Z_value = ifelse(abs(x - Z) < 0.01, "Estadístico Z", NA)
  )

# Gráfico
grafico <- ggplot(df, aes(x, y)) +
  geom_line() +
  geom_area(aes(fill = critical_region), alpha = 0.4) +
  geom_vline(xintercept = Z_critico, linetype = "dashed", color = "red") +
  geom_vline(xintercept = -Z_critico, linetype = "dashed", color = "red") +
  geom_vline(xintercept = Z, color = "blue") +
  annotate("text", x = Z, y = 0.02, label = "Estadístico Z", color = "blue", vjust = -1) +
  labs(
    title = "Distribución Normal Estándar",
    x = "Valores Z",
    y = "Densidad",
    fill = "Región"
  ) +
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5))

# Mostrar el gráfico
print(grafico)

Código
# Mostrar la decisión
cat("Estadístico Z calculado:", Z, "\n")
Estadístico Z calculado: 6.804138 
Código
cat("Valor crítico Z para alfa = 0.05:", Z_critico, "\n")
Valor crítico Z para alfa = 0.05: 1.959964 
Código
cat(decision, "\n")
Rechazamos la hipótesis nula: Existe una diferencia significativa en la altura promedio entre los jugadores de baloncesto y los futbolistas. 

Ejemplo 8. Diferencia de las medias de dos poblaciones (varianzas poblacionales desconocidas e iguales)

Supongamos que queremos comparar el rendimiento académico (medido por la calificación final en una escala de 0 a 100) de dos grupos de estudiantes. El primer grupo ha seguido un método tradicional de enseñanza, mientras que el segundo grupo ha seguido un método innovador. Queremos determinar si hay una diferencia significativa en las medias de las calificaciones entre estos dos grupos.

Prueba de igualdad de varianzas (Prueba F): Primero, verificaremos si las varianzas de las dos poblaciones son iguales.

Hipótesis para la Igualdad de Varianzas

Hipótesis Nula H_{0}: Las varianzas de las calificaciones de los dos grupos son iguales. \sigma _{1}^{2}=\sigma _{2}^{2} Hipótesis Alternativa H_{1}: Las varianzas de las calificaciones de los dos grupos no son iguales.

\sigma _{1}^{2}\neq \sigma _{2}^{2}

Hipótesis para la Diferencia de Medias

Hipótesis Nula H_{0}: No hay diferencia significativa entre las medias de las calificaciones de los dos grupos.

\mu _{1}= \mu _{2}

Hipótesis Alternativa H_{1}: Hay una diferencia significativa entre las medias de las calificaciones de los dos grupos.

\mu _{1} \neq \mu _{2}

Solucion en R

Código
# Instalación de paquetes si no están instalados
# install.packages("dplyr")       # Descomenta si es necesario instalar el paquete "dplyr"
# install.packages("kableExtra")  # Descomenta si es necesario instalar el paquete "kableExtra"

# Carga de paquetes necesarios
library(dplyr)
library(kableExtra)

# Generación de datos normalmente distribuidos para dos grupos
set.seed(123)  # Para reproducibilidad
n1 <- 50
n2 <- 50
mean1 <- 75
mean2 <- 78
sd1 <- 10
sd2 <- 10

grupo1 <- rnorm(n1, mean = mean1, sd = sd1)
grupo2 <- rnorm(n2, mean = mean2, sd = sd2)

# Prueba de igualdad de varianzas (Prueba F)
var_test <- var.test(grupo1, grupo2)

# Prueba de hipótesis para la diferencia de medias
t_test <- t.test(grupo1, grupo2, var.equal = TRUE)

# Resumen de resultados
results <- data.frame(
  Prueba = c("Prueba F para varianzas iguales", "Prueba t para diferencia de medias"),
  Estadistico = c(var_test$statistic, t_test$statistic),
  Valor_p = c(var_test$p.value, t_test$p.value),
  Conclusión = c(ifelse(var_test$p.value < 0.05, "Rechazar H0: Varianzas diferentes", "No rechazar H0: Varianzas iguales"),
                 ifelse(t_test$p.value < 0.05, "Rechazar H0: Diferencia significativa en medias", "No rechazar H0: No hay diferencia significativa en medias"))
)

# Creación de la tabla con kableExtra
tabla_resultados <- kbl(results, caption = "Resultados de la prueba de hipótesis para diferencia de medias") %>%
  kable_styling(full_width = FALSE) %>%
  column_spec(1, bold = TRUE)

# Mostrar la tabla
tabla_resultados
Resultados de la prueba de hipótesis para diferencia de medias
Prueba Estadistico Valor_p Conclusión
F Prueba F para varianzas iguales 1.045620 0.8765588 No rechazar H0: Varianzas iguales
t Prueba t para diferencia de medias -2.249633 0.0267094 Rechazar H0: Diferencia significativa en medias

pruebas de normalidad y pruebas analiticas de normalidad para dos muestras

Código
# Instalación de paquetes si no están instalados
# install.packages("ggplot2")       # Descomenta si es necesario instalar el paquete "ggplot2"
# install.packages("dplyr")         # Descomenta si es necesario instalar el paquete "dplyr"
# install.packages("kableExtra")    # Descomenta si es necesario instalar el paquete "kableExtra"
# install.packages("gridExtra")     # Descomenta si es necesario instalar el paquete "gridExtra"

# Carga de paquetes necesarios
library(ggplot2)
library(dplyr)
library(kableExtra)
library(gridExtra)

# Generación de datos normalmente distribuidos para dos grupos
set.seed(123)  # Para reproducibilidad
n1 <- 50
n2 <- 50
mean1 <- 75
mean2 <- 78
sd1 <- 10
sd2 <- 10

grupo1 <- rnorm(n1, mean = mean1, sd = sd1)
grupo2 <- rnorm(n2, mean = mean2, sd = sd2)

# Creación de un data frame combinado
df <- data.frame(
  Calificaciones = c(grupo1, grupo2),
  Grupo = factor(rep(c("Tradicional", "Innovador"), times = c(n1, n2)))
)

# Histograma
hist_plot <- ggplot(df, aes(x = Calificaciones, fill = Grupo)) +
  geom_histogram(alpha = 0.6, position = "identity", bins = 20) +
  labs(title = "Histograma de Calificaciones por Grupo",
       x = "Calificaciones",
       y = "Frecuencia") +
  theme_minimal()

# Boxplot
box_plot <- ggplot(df, aes(x = Grupo, y = Calificaciones, fill = Grupo)) +
  geom_boxplot() +
  labs(title = "Boxplot de Calificaciones por Grupo",
       x = "Grupo",
       y = "Calificaciones") +
  theme_minimal()

# Q-Q Plot
qq_plot1 <- ggplot(data.frame(sample = grupo1), aes(sample = sample)) +
  stat_qq() +
  stat_qq_line() +
  labs(title = "Q-Q Plot para Grupo Tradicional",
       x = "Teóricos",
       y = "Muestra") +
  theme_minimal()

qq_plot2 <- ggplot(data.frame(sample = grupo2), aes(sample = sample)) +
  stat_qq() +
  stat_qq_line() +
  labs(title = "Q-Q Plot para Grupo Innovador",
       x = "Teóricos",
       y = "Muestra") +
  theme_minimal()

# Mostrar histogramas, boxplots y Q-Q plots
grid.arrange(hist_plot, box_plot, qq_plot1, qq_plot2, nrow = 2, ncol = 2)

Código
# Prueba de Kolmogorov-Smirnov
ks_test1 <- ks.test(grupo1, "pnorm", mean = mean(grupo1), sd = sd(grupo1))
ks_test2 <- ks.test(grupo2, "pnorm", mean = mean(grupo2), sd = sd(grupo2))

# Resumen de resultados
results_normalidad <- data.frame(
  Prueba = c("Kolmogorov-Smirnov Grupo Tradicional", "Kolmogorov-Smirnov Grupo Innovador"),
  Estadistico = c(ks_test1$statistic, ks_test2$statistic),
  Valor_p = c(ks_test1$p.value, ks_test2$p.value),
  Conclusión = c(ifelse(ks_test1$p.value < 0.05, "Rechazar H0: No es normal", "No rechazar H0: Es normal"),
                 ifelse(ks_test2$p.value < 0.05, "Rechazar H0: No es normal", "No rechazar H0: Es normal"))
)

# Creación de la tabla con kableExtra
tabla_normalidad <- results_normalidad %>%
  kbl(caption = "Resultados de las pruebas de normalidad para las muestras",
      align = c("l", "c", "c", "l")) %>%
  kable_styling(full_width = FALSE) %>%
  column_spec(1, bold = TRUE)

# Mostrar la tabla
tabla_normalidad
Resultados de las pruebas de normalidad para las muestras
Prueba Estadistico Valor_p Conclusión
Kolmogorov-Smirnov Grupo Tradicional 0.0832322 0.8506352 No rechazar H0: Es normal
Kolmogorov-Smirnov Grupo Innovador 0.0694473 0.9556333 No rechazar H0: Es normal

Ejemplo 9. Diferencia de las medias de dos poblaciones (varianzas poblacionales desconocidas y distintas)

Supongamos que una empresa quiere evaluar si hay una diferencia significativa en las ventas promedio de dos productos (Producto A y Producto B) entre dos regiones (Región 1 y Región 2). Los datos muestran las ventas mensuales durante un año para ambos productos en ambas regiones.

Hipótesis nula H_{0}: Los datos se distribuyen en forma normal. Hipótesis alternativa H_{1}: los datos no se distribuyen de foema normal.

Hipótesis homocedasticidad

Hipótesis Nula H_{0}: \sigma _{1}^{2}=\sigma _{2}^{2} Hipótesis Alternativa H_{1}:

\sigma _{1}^{2}\neq \sigma _{2}^{2}

pruebas de normalidad

Código
# Instalación de paquetes si no están instalados
# install.packages("dplyr")       # Descomenta si es necesario instalar el paquete "dplyr"
# install.packages("kableExtra")  # Descomenta si es necesario instalar el paquete "kableExtra"
# install.packages("ggplot2")     # Descomenta si es necesario instalar el paquete "ggplot2"

# Carga de paquetes necesarios
library(dplyr)
library(kableExtra)
library(ggplot2)

# Datos simulados
set.seed(123)  # Para reproducibilidad
n1 <- 30        # Número de meses
n2 <- 30

# Ventas mensuales para Producto A y Producto B en dos regiones
ventas_productoA_region1 <- rnorm(n1, mean = 25000, sd = 5000)
ventas_productoA_region2 <- rnorm(n2, mean = 28000, sd = 6000)

ventas_productoB_region1 <- rnorm(n1, mean = 30000, sd = 5500)
ventas_productoB_region2 <- rnorm(n2, mean = 27000, sd = 5800)

#Histogramas con densidad
histograma_A <- ggplot(data.frame(ventas = ventas_productoA_region1), aes(x = ventas)) +
  geom_histogram(aes(y = ..density..), binwidth = 2000, fill = "lightblue", color = "black", alpha = 0.8) +
  geom_density(alpha = 0.2, fill = "blue") +
  labs(title = "Histograma de Ventas - Producto A", x = "Ventas", y = "Densidad") +
  theme_minimal()

histograma_B <- ggplot(data.frame(ventas = ventas_productoB_region1), aes(x = ventas)) +
  geom_histogram(aes(y = ..density..), binwidth = 2000, fill = "lightgreen", color = "black", alpha = 0.8) +
  geom_density(alpha = 0.2, fill = "green") +
  labs(title = "Histograma de Ventas - Producto B", x = "Ventas", y = "Densidad") +
  theme_minimal()

# Mostrar histogramas con densidad
print(histograma_A)

Código
print(histograma_B)

Código
# Boxplots
boxplot_A <- ggplot(data.frame(ventas = c(ventas_productoA_region1, ventas_productoA_region2),
                               grupo = factor(rep(c("Región 1", "Región 2"), each = n1))),
                    aes(x = grupo, y = ventas, fill = grupo)) +
  geom_boxplot() +
  labs(title = "Boxplot de Ventas - Producto A", x = "Región", y = "Ventas") +
  theme_minimal()

boxplot_B <- ggplot(data.frame(ventas = c(ventas_productoB_region1, ventas_productoB_region2),
                               grupo = factor(rep(c("Región 1", "Región 2"), each = n1))),
                    aes(x = grupo, y = ventas, fill = grupo)) +
  geom_boxplot() +
  labs(title = "Boxplot de Ventas - Producto B", x = "Región", y = "Ventas") +
  theme_minimal()

# Q-Q Plots
qqplot_A <- ggplot(data.frame(ventas = ventas_productoA_region1), aes(sample = ventas)) +
  stat_qq() +
  stat_qq_line(color = "blue") +
  labs(title = "Q-Q Plot para Ventas - Producto A", x = "Cuantiles Teóricos", y = "Cuantiles Muestra") +
  theme_minimal()

qqplot_B <- ggplot(data.frame(ventas = ventas_productoB_region1), aes(sample = ventas)) +
  stat_qq() +
  stat_qq_line(color = "green") +
  labs(title = "Q-Q Plot para Ventas - Producto B", x = "Cuantiles Teóricos", y = "Cuantiles Muestra") +
  theme_minimal()


# Mostrar gráficos
print(histograma_A)

Código
print(histograma_B)

Código
print(boxplot_A)

Código
print(boxplot_B)

Código
print(qqplot_A)

Código
print(qqplot_B)

pruebas analiticas de normalidad para dos muestra

Código
# Instalación de paquetes si no están instalados
# install.packages("dplyr")       # Descomenta si es necesario instalar el paquete "dplyr"
# install.packages("kableExtra")  # Descomenta si es necesario instalar el paquete "kableExtra"
# install.packages("ggplot2")     # Descomenta si es necesario instalar el paquete "ggplot2"

# Carga de paquetes necesarios
library(dplyr)
library(kableExtra)
library(ggplot2)

# Datos simulados
set.seed(123)  # Para reproducibilidad
n1 <- 30        # Número de meses
n2 <- 30

# Ventas mensuales para Producto A y Producto B en dos regiones
ventas_productoA_region1 <- rnorm(n1, mean = 25000, sd = 5000)
ventas_productoA_region2 <- rnorm(n2, mean = 28000, sd = 6000)

ventas_productoB_region1 <- rnorm(n1, mean = 30000, sd = 5500)
ventas_productoB_region2 <- rnorm(n2, mean = 27000, sd = 5800)

# Prueba de Shapiro-Wilk para normalidad
shapiro_A <- shapiro.test(ventas_productoA_region1)
shapiro_B <- shapiro.test(ventas_productoB_region1)

# Prueba F de Fisher para comparar varianzas
var_test <- var.test(ventas_productoA_region1, ventas_productoB_region1)

# Prueba t para diferencia de medias (varianzas desconocidas y distintas)
t_test <- t.test(ventas_productoA_region1, ventas_productoB_region1, var.equal = FALSE)

# Resultados
results <- data.frame(
  "Prueba/Estadístico" = c("Prueba Shapiro-Wilk", "Prueba F (p-value)", "Prueba t (p-value)"),
  "Resultado Producto A vs Producto B" = c(
    ifelse(shapiro_A$p.value < 0.05, "No pasa prueba: No es normal", "Pasa prueba: Es normal"),
    format(var_test$p.value, digits = 3),
    format(t_test$p.value, digits = 3)
  )
)

# Creación de la tabla con kableExtra
tabla_resultados <- results %>%
  kbl(caption = "Resultados de análisis estadístico para diferencia de medias y varianzas entre Producto A y Producto B",
      align = c("l", "c", "c")) %>%
  kable_styling(full_width = FALSE) %>%
  column_spec(1, bold = TRUE)

# Mostrar la tabla
tabla_resultados
Resultados de análisis estadístico para diferencia de medias y varianzas entre Producto A y Producto B
Prueba.Estadístico Resultado.Producto.A.vs.Producto.B
Prueba Shapiro-Wilk Pasa prueba: Es normal
Prueba F (p-value) 0.894
Prueba t (p-value) 6.8e-05

Conclusión Los datos de ventas mensuales para ambos productos (Producto A y Producto B siguen una distribución normal según la prueba de Shapiro-Wilk. No hay suficiente evidencia para afirmar que las varianzas de las ventas mensuales entre Producto A y Producto B son diferentes, por lo tanto, asumimos homocedasticidad. Existe una diferencia significativa en las medias de ventas mensuales entre Producto A y Producto B en la Región 1, basándonos en la prueba t de diferencia de medias.

Ejemplo 10. Prueba de diferencia de dos proporciones poblacionales

un investigador desea comparar la proporción de fumadores entre hombres y mujeres en una población adulta. Se seleccionan dos muestras aleatorias de la población:

Muestra de hombres: 150 individuos, de los cuales 45 son fumadores.

Muestra de mujeres: 200 individuos, de los cuales 50 son fumadores.

Hipòtesis nula H_{0} : p_{1}=p_{2} (Las proporciones de fumadores son iguales en ambas poblaciones)

Hipòtesis alternativa H_{1} : p_{1}\neq p_{2} (Las proporciones de fumadores son diferentes en ambas poblaciones)

Soluciòn en r

Código
# Instalación de paquetes si no están instalados
# install.packages("kableExtra")  # Descomenta si es necesario instalar el paquete "kableExtra"

# Carga de paquetes necesarios
library(kableExtra)

# Datos
n1 <- 150
x1 <- 45
n2 <- 200
x2 <- 50

# Proporciones muestrales
p1 <- x1 / n1
p2 <- x2 / n2

# Proporción combinada
p_comb <- (x1 + x2) / (n1 + n2)

# Desviación estándar combinada
sigma <- sqrt(p_comb * (1 - p_comb) * (1/n1 + 1/n2))

# Estadístico Z
Z <- (p1 - p2) / sigma

# Valor crítico para un nivel de significancia de 0.05
alpha <- 0.05
Z_critical <- qnorm(1 - alpha/2)

# Decisión de prueba de hipótesis
if (abs(Z) > Z_critical) {
  decision <- "Rechazar H0: Hay una diferencia significativa entre las proporciones."
} else {
  decision <- "No rechazar H0: No hay evidencia suficiente para afirmar que las proporciones son diferentes."
}

# Creación de la tabla con kableExtra
results <- data.frame(
  "Parámetro" = c("Proporción en muestra 1 (hombres)", "Proporción en muestra 2 (mujeres)",
                  "Proporción combinada", "Desviación estándar combinada",
                  "Estadístico Z", "Valor crítico de Z para alfa = 0.05"),
  "Valor" = c(p1, p2, p_comb, sigma, Z, Z_critical),
  "Decisión" = c("", "", "", "", "", decision)
)

# Formateo de la tabla con kableExtra
table <- results %>%
  kbl(caption = "Resultados de la prueba de hipótesis de diferencia de proporciones",
      align = c("l", "c", "c")) %>%
  kable_styling(full_width = FALSE) %>%
  column_spec(1, bold = TRUE)

# Mostrar la tabla
table
Resultados de la prueba de hipótesis de diferencia de proporciones
Parámetro Valor Decisión
Proporción en muestra 1 (hombres) 0.3000000
Proporción en muestra 2 (mujeres) 0.2500000
Proporción combinada 0.2714286
Desviación estándar combinada 0.0480327
Estadístico Z 1.0409569
Valor crítico de Z para alfa = 0.05 1.9599640 No rechazar H0: No hay evidencia suficiente para afirmar que las proporciones son diferentes.

Con el paquete de R stat

Código
# Instalación de paquetes si no están instalados
# install.packages("stats")  # Descomenta si es necesario instalar el paquete "stats"
# install.packages("kableExtra")  # Descomenta si es necesario instalar el paquete "kableExtra"

# Carga de paquetes necesarios
library(stats)
library(kableExtra)

# Datos
n1 <- 150
x1 <- 45
n2 <- 200
x2 <- 50

# Realización de la prueba de hipótesis
test <- prop.test(c(x1, x2), c(n1, n2), correct = FALSE)

# Extracción de resultados
statistic <- test$statistic
p_value <- test$p.value

# Creación de la tabla
results <- data.frame(
  "Estadístico de prueba" = statistic,
  "Valor p" = p_value,
  "Conclusión" = ifelse(p_value < 0.05, "Rechazar H0", "No rechazar H0")
)

# Formateo de la tabla con kableExtra
table <- results %>%
  kbl(caption = "Resultados de la prueba de hipótesis de diferencia de proporciones",
      align = "c") %>%
  kable_classic(full_width = FALSE) %>%
  column_spec(1, bold = TRUE)

# Mostrar la tabla
table
Resultados de la prueba de hipótesis de diferencia de proporciones
Estadístico.de.prueba Valor.p Conclusión
X-squared 1.083591 0.2978955 No rechazar H0

Grafico

Código
# Instalación de paquetes si no están instalados
# install.packages("kableExtra")  # Descomenta si es necesario instalar el paquete "kableExtra"
# install.packages("ggplot2")  # Descomenta si es necesario instalar el paquete "ggplot2"

# Carga de paquetes necesarios
library(kableExtra)
library(ggplot2)

# Datos
n1 <- 150
x1 <- 45
n2 <- 200
x2 <- 50

# Proporciones muestrales
p1 <- x1 / n1
p2 <- x2 / n2

# Proporción combinada
p_comb <- (x1 + x2) / (n1 + n2)

# Desviación estándar combinada
sigma <- sqrt(p_comb * (1 - p_comb) * (1/n1 + 1/n2))

# Estadístico Z
Z <- (p1 - p2) / sigma

# Valor crítico para un nivel de significancia de 0.05
alpha <- 0.05
Z_critical <- qnorm(1 - alpha/2)

# Decisión de prueba de hipótesis
if (abs(Z) > Z_critical) {
  decision <- "Rechazar H0: Hay una diferencia significativa entre las proporciones."
} else {
  decision <- "No rechazar H0: No hay evidencia suficiente para afirmar que las proporciones son diferentes."
}



# Generación del gráfico
x <- seq(-4, 4, length=1000)
y <- dnorm(x)

data <- data.frame(x = x, y = y)
plot <- ggplot(data, aes(x, y)) +
  geom_line() +
  geom_area(data = subset(data, x >= Z_critical), aes(y = y), fill = "red", alpha = 0.5) +
  geom_area(data = subset(data, x <= -Z_critical), aes(y = y), fill = "red", alpha = 0.5) +
  geom_vline(xintercept = Z, color = "blue", linetype = "dashed") +
  labs(title = "Prueba de Hipótesis para la Diferencia de Proporciones",
       x = "Z",
       y = "Densidad") +
  annotate("text", x = Z, y = 0.1, label = paste("Z =", round(Z, 2)), color = "blue") +
  theme_minimal()

# Mostrar el gráfico
print(plot)

conclusión

Como ∣Z∣=1.0397 es menor que el valor crítico 1.96, no rechazamos la hipótesis nula. Esto implica que no hay suficiente evidencia para afirmar que las proporciones de fumadores entre hombres y mujeres en la población son diferentes.