Consideraciones (supuestos)

Normalidad

Las pruebas de normalidad tienen como objetivo analizar cuánto discrepa la distribución muestral en los datos observados con referencia a lo esperado, si dicha muestra procediese de una distribución normal con la misma media \(\mu\) y desviación estándar \(\sigma\).

Para evaluar la normalidad en los datos, es posible implementar tres mecanismos:

  • Gráficos
  • Métodos analíticos
    • Muestra(s) con coeficientes de Curtosis o Asimetría con valores entre -1 y 1, se consideran generalmente con ligeras desviaciones de la normalidad.
    • Muestra(s) con coeficientes de Curtosis o Asimetría con valores entre -2 y 2, se consideran con evidentes desviaciones de la normalidad.
  • Contraste de hipótesis
    • Test de Shapiro-Wilk
      • En R: función shapiro.test()
    • Test de Kolgomorov-Smirnov
      • En R: función ks.test()
    • Otros

Gráficos

Los ejemplos se llevan a cabo con el conjunto de datos iris que trae internamente R.

  • Histogramas y densidades
library(ggplot2)
ggplot(data = iris, aes(x = Sepal.Length)) +
  geom_histogram(aes(y = ..density..), color = "black", fill = "gray60") +
  geom_density(aes(color = "Longitud de sépalo"), lwd = 0.95) +
  stat_function(aes(color = "Normal"), fun = dnorm, lwd = 0.95,
                args = list(mean = mean(iris$Sepal.Length),
                            sd = sd(iris$Sepal.Length))) +
  scale_colour_manual("Densidad", values = c("red", "blue")) +
  labs(x = "Longitud de sépalo", y = "Densidad",
       title = "Distribución de la longitud de sépalo vs curva normal") +
  theme_bw()

  • Gráfico de cuantiles teóricos (Q-Q plot)

Permite comparar los cuantiles de la distribución observada con los cuantiles teóricos de una distribución normal con la misma media y desviación estándar que los datos. Cuanto más se aproximen los datos a una normal, más alineados están los puntos entorno a la recta.

qqnorm(y = iris$Sepal.Length)
qqline(y = iris$Sepal.Length)

library(car)
## Loading required package: carData
qqPlot(iris$Sepal.Length, main = "Q-Q plot con biblioteca car")

## [1] 132 118

Contraste de hipótesis

La hipótesis nula en este tipo de contrastes considera que los datos proceden de una distribución normal y la hipótesis alternativa plantea lo contrario.

\[H_0: X \sim N(\mu, \sigma^2) \\ H_1: X \neq N(\mu, \sigma^2)\]

  • Test de Shapiro Wilk
    • Se usa para tamaño muestrales menores a 50 observaciones
    • Para tamaños muestrales mayores a 50 observaciones, es equivalente a la prueba de Kolgomorov-Smirnov.
    • Considerar nivel \(\alpha\)
    • Comparar el valor P con \(\alpha\) y concluir
shapiro.test(x = iris$Sepal.Length)
## 
##  Shapiro-Wilk normality test
## 
## data:  iris$Sepal.Length
## W = 0.97609, p-value = 0.01018

Conclusión: como el valor P (0.01018) es menor que el nivel de significancia \(\alpha\) (0.05), existe evidencia para rechazar \(H_0\), es decir, que los datos no provienen de una población con distribución normal.

  • Test de Kolgomorov-Smirnov
    • Permite analizar si una muestra procede de determinada distribución, no necesariamente la normal.
    • Desventajas: asume que se conoce la media y la varianza
    • Considerar nivel \(\alpha\)
    • Comparar el valor P con \(\alpha\) y concluir
ks.test(x = iris$Sepal.Length, y = "pnorm", mean(iris$Sepal.Length),
        sd(iris$Sepal.Length))
## 
##  One-sample Kolmogorov-Smirnov test
## 
## data:  iris$Sepal.Length
## D = 0.088654, p-value = 0.1891
## alternative hypothesis: two-sided

Conclusión: como el valor P (0.1891) es mayor que el nivel de significancia \(\alpha\) (0.05), no existe evidencia para rechazar \(H_0\), es decir, que los datos provienen de una población con distribución normal.

Homocedasticidad

El supuesto de homogeneidad de varianzas plantea que la varianza es constante en los diferentes niveles de un factor, es decir, homogéneo entre grupos (no varía).

Existen diferentes pruebas que permiten evaluar la distribución de la varianza:

  • F-test (razón de varianzas):
    • Para poblaciones con distribución normal
    • Robusto si se satisface la normalidad
    • Altamente sensible a la carencia de normalidad
    • Comparar dos varianzas
    • En R: función var.test()
  • Test de Bartlett:
    • Para poblaciones con distribución normal
    • Robusto si se satisface la normalidad
    • En R: función bartlett.test()
  • Test de Levene:
    • Para poblaciones que no se distribuyen de forma normal
    • Robusto ante la carencia de normalidad (basado en la mediana)
    • En R: función leveneTest() (instalar biblioteca car)

Gráficos

Suponga que se quiere observar si existen diferencias estadísticas entre las varianzas de la longitud del pétalo entre las especies de flores versicolor y setosa del conjunto de datos iris.

datos_filtrados <- iris[iris$Species == "setosa" | iris$Species == "versicolor",]

ggplot(data = datos_filtrados, aes(x = Species, y = Petal.Length, colour = Species)) +
  geom_boxplot() +
  geom_point() +
  theme_bw() +
  theme(legend.position = "none")

Contraste de hipótesis

Todas las pruebas para comparar varianzas consideran como hipóteis nula que la varianza es igual entre los grupos y como hipótesis alternativa lo contrario.

\[H_0: \sigma^2_1 = \sigma^2_2 \\ H_1: \sigma^2_1 \neq \sigma^2_2 \]

  • F-test:
var.test(x = iris[iris$Species == "versicolor", "Petal.Length"],
         y = iris[iris$Species == "setosa", "Petal.Length"])
## 
##  F test to compare two variances
## 
## data:  iris[iris$Species == "versicolor", "Petal.Length"] and iris[iris$Species == "setosa", "Petal.Length"]
## F = 7.3217, num df = 49, denom df = 49, p-value = 1.026e-10
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
##   4.154887 12.902206
## sample estimates:
## ratio of variances 
##           7.321694

Conclusión: como el valor P (1.026e-10) es menor que alfa (0.05), existe evidencia para concluir que la especie setosa y la especie versicolor, presentan diferencias estadísticas en la varianza de la longitud del pétalo.

  • Test de Bartlett:

En este caso, suponga que se quiere contrastar si existe diferencia entre la varianza de alguna de las tres especies de flores (setosa, versicolor y virginica).

ggplot(data = iris, aes(x = Species, y = Petal.Length, colour = Species)) +
  geom_boxplot() +
  geom_point() +
  theme_bw() +
  theme(legend.position = "none")

bartlett.test(iris$Petal.Length ~ iris$Species)
## 
##  Bartlett test of homogeneity of variances
## 
## data:  iris$Petal.Length by iris$Species
## Bartlett's K-squared = 55.423, df = 2, p-value = 9.229e-13

Conclusión: como el valor P (9.229e-13) es menor que alfa (0.05), existe evidencia para concluir que al menos dos especies de flores presentan diferencias estadísticas en la varianza de la longitud del pétalo.

  • Test de Levene:
library(car)
leveneTest(y = iris$Petal.Length, group = iris$Species)
## Levene's Test for Homogeneity of Variance (center = median)
##        Df F value    Pr(>F)    
## group   2   19.48 3.129e-08 ***
##       147                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Conclusión: como el valor P (3.129e-08) es menor que alfa (0.05), existe evidencia para concluir que al menos dos especies de flores presentan diferencias estadísticas en la varianza de la longitud del pétalo.

Ejemplos para \(\mu\)

Ejemplo 1

En la base de datos Soils del paquete car de R hay información de muestras de suelo provenientes de cuatro áreas diferentes (Block), en tres tipos de contornos (Top, Slope, y Depression) y tomadas a cuatro profundidades (0-10, 10-30, 30-60, 60-90).

head(Soils)
##   Group Contour Depth Gp Block   pH     N Dens   P    Ca   Mg    K   Na
## 1     1     Top  0-10 T0     1 5.40 0.188 0.92 215 16.35 7.65 0.72 1.14
## 2     1     Top  0-10 T0     2 5.65 0.165 1.04 208 12.25 5.15 0.71 0.94
## 3     1     Top  0-10 T0     3 5.14 0.260 0.95 300 13.02 5.68 0.68 0.60
## 4     1     Top  0-10 T0     4 5.14 0.169 1.10 248 11.92 7.88 1.09 1.01
## 5     2     Top 10-30 T1     1 5.14 0.164 1.12 174 14.17 8.12 0.70 2.17
## 6     2     Top 10-30 T1     2 5.10 0.094 1.22 129  8.55 6.92 0.81 2.67
##   Conduc
## 1   1.09
## 2   1.35
## 3   1.41
## 4   1.64
## 5   1.85
## 6   3.18
  1. Para la variable pH, construir un intervalo de confianza del 95% para \(\mu\).
  2. Para la variable nitrógeno (N), construir un intervalo de confianza del 90% para \(\mu\).
  3. Para la variable fósforo (P), construir un intervalo de confianza del 99% para \(\mu\).
  4. Suponga que se conoce que en esa región donde se tomaron las muestras el pH promedio es 6.5. A través de una prueba de hipótesis responder si la media de los datos muestrales es congruente con el pH promedio de la región.
  5. ¿Se cumple el supuesto de normalidad en la variable pH?
  6. Contrastar si existen diferencias estadísticamente significativas para el pH entre el contorno Slope y Depression, asumiendo que las varianzas son desconocidas e iguales.

Solución Manual

Nota: para la solución manual, R se utiliza sólo como una calculadora, sin implementar ninguna función, a excepción de la función mean() y sd() para obtener la media y desviación, respectivamente.

  1. Para la variable pH, construir un intervalo de confianza del 95% para \(\mu\).

Para resolverlo manualmente es posible seguir los siguientes pasos:

  • Definir el nivel de significancia \(\alpha\)
  • Obtener la media muestral \(\bar{X}\)
  • Obtener la desviación muestral \(S\) (para este ejemplo la varianza es desconocida)
  • Calcular el límite inferior
  • Calcular el límite superior
  • Interpretar el intervalo de confianza

Para obtener los límites del intervalo, se resuelve la siguiente expresión: \[\bar{X}-t_{\alpha/2,\ n-1}\frac{S}{\sqrt{n}}<\mu<\bar{X}+t_{\alpha/2,\ n-1}\frac{S}{\sqrt{n}}\] Tomando el nivel de significancia \(\alpha\) igual a 5%, el \(t_{\alpha/2,\ n-1}=t_{0.05/2,\ 48-1}\):

  • La base de datos tiene 48 registros, por tanto, \(48-1=47\) grados de libertad
  • \(t_{0.05/2,\ 48-1}=t_{0.025,\ 47}=-2.011\)
  • \(t_{1- 0.05/2,\ 48-1}=t_{1-0.025,\ 47}=t_{0.975,\ 47}=2.011\)
qt(p = 0.025, df = 47) #función qt para hallar el valor (cuantil) de t de alfa/2
## [1] -2.011741
qt(p = 0.975, df = 47) #función qt para hallar el valor (cuantil) de t de alfa/2
## [1] 2.011741
  • Este proceso con la función qt() corresponde a la búsqueda de dicho valor en la tabla \(t-student\).
  • La media de la variable pH es:
mean(Soils$pH)
## [1] 4.669375
  • La desviación estándar de la variable pH es:
sd(Soils$pH)
## [1] 0.6718549

El intervalo de confianza con \(\alpha\) igual a 5% para el pH es: \[4.669-2.011\frac{0.671}{\sqrt{48}}<\mu_{pH}<4.669+2.011\frac{0.671}{\sqrt{48}} \\ = 4.474<\mu_{pH}<4.863\]

Limite_inferior <- 4.669-((2.011)*(0.671/sqrt(48)))
Limite_inferior
## [1] 4.474234
Limite_superior <- 4.669+((2.011)*(0.671/sqrt(48)))
Limite_superior
## [1] 4.863766

Interpretación:

  • Con un nivel de confianza del 95%, se espera que el valor promedio del pH esté entre 4.474 y 4.863, es decir, que de 100 intervalos construidos a partir de muestras de tamaño 48 se espera que 95 de ellos contengan el verdadero valor de \(\mu_{pH}\).
  1. Para la variable nitrógeno (N), construir un intervalo de confianza del 90% para \(\mu\)

Para obtener los límites del intervalo, se resuelve la siguiente expresión: \[\bar{X}-t_{\alpha/2,\ n-1}\frac{S}{\sqrt{n}}<\mu<\bar{X}+t_{\alpha/2,\ n-1}\frac{S}{\sqrt{n}}\] Tomando el nivel de significancia \(\alpha\) igual a 10%, el \(t_{\alpha/2,\ n-1}=t_{0.10/2,\ 48-1}\):

  • \(t_{0.10/2,\ 48-1}=t_{0.05,\ 47}=-1.677\)
  • \(t_{1- 0.10/2,\ 48-1}=t_{1-0.05,\ 47}=t_{0.95,\ 47}=1.677\)
qt(p = 0.05, df = 47) #función qt para hallar el valor (cuantil) de t de alfa/2
## [1] -1.677927
qt(p = 0.95, df = 47) #función qt para hallar el valor (cuantil) de t de alfa/2
## [1] 1.677927
  • La media de la variable N es:
mean(Soils$N)
## [1] 0.1019375
  • La desviación estándar de la variable N es:
sd(Soils$N)
## [1] 0.06715856

El intervalo de confianza con \(\alpha\) igual a 10% para el N es: \[0.101-1.677\frac{0.067}{\sqrt{48}}<\mu_{N}<0.101+1.677\frac{0.067}{\sqrt{48}} \\ = 0.084<\mu_{N}<0.117\]

Limite_inferior <- 0.101-((1.677)*(0.067/sqrt(48)))
Limite_inferior
## [1] 0.08478238
Limite_superior <- 0.101+((1.677)*(0.067/sqrt(48)))
Limite_superior
## [1] 0.1172176

Interpretación:

  • Con un nivel de confianza del 90%, se espera que el valor promedio del N esté entre 0.084 y 0.117, es decir, que de 100 intervalos construidos a partir de muestras de tamaño 48 se espera que 90 de ellos contengan el verdadero valor de \(\mu_{N}\).
  1. Para la variable fósforo (P), construir un intervalo de confianza del 99% para \(\mu\)

Para obtener los límites del intervalo, se resuelve la siguiente expresión: \[\bar{X}-t_{\alpha/2,\ n-1}\frac{S}{\sqrt{n}}<\mu<\bar{X}+t_{\alpha/2,\ n-1}\frac{S}{\sqrt{n}}\]

Tomando el nivel de significancia \(\alpha\) igual a 1%, el \(t_{\alpha/2,\ n-1}=t_{0.01/2,\ 48-1}\):

  • \(t_{0.01/2,\ 48-1}=t_{0.005,\ 47}=-2.684\)
  • \(t_{1- 0.01/2,\ 48-1}=t_{1-0.005,\ 47}=t_{0.995,\ 47}=2.684\)
qt(p = 0.005, df = 47) #función qt para hallar el valor (cuantil) de t de alfa/2
## [1] -2.684556
qt(p = 0.995, df = 47) #función qt para hallar el valor (cuantil) de t de alfa/2
## [1] 2.684556
  • La media de la variable N es:
mean(Soils$P)
## [1] 166.1667
  • La desviación estándar de la variable P es:
sd(Soils$P)
## [1] 81.16055

El intervalo de confianza con \(\alpha\) igual a 1% para el P es: \[166.16-2.684\frac{81.160}{\sqrt{48}}<\mu_{P}<166.16+2.684\frac{81.160}{\sqrt{48}} \\ = 134.71<\mu_{P}<197.60\]

Limite_inferior <- 166.16-((2.684)*(81.160/sqrt(48)))
Limite_inferior
## [1] 134.7185
Limite_superior <- 166.16+((2.684)*(81.160/sqrt(48)))
Limite_superior
## [1] 197.6015

Interpretación:

  • Con un nivel de confianza del 99%, se espera que el valor promedio del P esté entre 134.71 y 197.60, es decir, que de 100 intervalos construidos a partir de muestras de tamaño 48 se espera que 99 de ellos contengan el verdadero valor de \(\mu_{P}\).
  1. Suponga que se conoce que en esa región donde se tomaron las muestras el pH promedio es 6.5. A través de una prueba de hipótesis responder si la media de los datos muestrales es congruente con el pH promedio de la región
  • Definir el juego de hipótesis
  • Calcular el estadístico
  • Nivel de significancia igual a 5% (\(\alpha = 0.05\))
  • Criterio de decisión: región de rechazo (en este caso)
  • Comparar estadístico \(t_{observado}\) vs \(t_{teórico}\)
  • Concluir

Juego de hipótesis: \[H_0: \mu_{pH} = 6.5 \\ H_1: \mu_{pH} \neq 6.5\]

Estadístico \(t\):

mean(Soils$pH) #promedio de pH
## [1] 4.669375
sd(Soils$pH) #desviación estándar (S) de pH
## [1] 0.6718549

\[t_{observado} = \frac{\bar{X}-\mu_0}{S/\sqrt{n}} \\ = \frac{4.6693 - 6.5}{0.6178/\sqrt{48}} \\ = -18.87\]

t_observado <- (4.669375-6.5)/((0.6718549/sqrt(48)))
t_observado
## [1] -18.8775
t_teorico_ <- qt(p = 0.025, df = 47)
t_teorico_
## [1] -2.011741

Región de rechazo:

Las áreas grises indican las zonas de rechazo, es decir, que si el estadístico \(t_{observado}\) es menor o mayor a -2.011 y 2.011, respectivamente, existirá evidencia para rechazar la hipótesis nula con un nivel de significancia \(\alpha\).

\[t_{observado} = \frac{\bar{X}-\mu_0}{S/\sqrt{n}} \\ = \frac{4.6693 - 6.5}{0.6718/\sqrt{48}} \\ = -18.87\]

Conclusión: como el estadístico \(t_{observado}\) (-18.87) está dentro de la zona de rechazo, con un nivel de confianza del 95% existe suficiente evidencia para rechazar la hipótesis nula, es decir, que la media del pH de la muestra difiere de la media del pH en la región.

  1. ¿Se cumple el supuesto de normalidad en la variable pH?

Este punto se desarrolló solamente mediante R.

  1. Contrastar si existen diferencias estadísticamente significativas para el pH entre el contorno Slope y Depression, asumiendo que las varianzas son desconocidas e iguales
  • En este caso, no se conoce la varianza pero se sabe que son iguales, por tanto, el estadístico está definido por la siguiente expresión:

\[t = \frac{\bar{X_1}-\bar{X_2}}{S_p\sqrt{\frac{S_1^2}{n_1}+\frac{S_2^2}{n_2}}}\] Donde \(S_p\) es: \[S_p = \frac{(n_1 - 1)S_1 + (n_2 -1)S_2}{n_1+n_2-2}\]

Número de datos por muestra:

ph_slope <- Soils[Soils$Contour == "Slope", "pH"] #vector con los datos de pH para Slope 
ph_depression <- Soils[Soils$Contour == "Depression", "pH"] #vector con los datos de pH para Depression 
length(ph_slope) #n1
## [1] 16
length(ph_depression) #n2
## [1] 16

Media de pH para Slope y Depression

mean(ph_slope)
## [1] 4.74625
mean(ph_depression)
## [1] 4.691875

Desviación de pH para Slope y Depression

sd(ph_slope)
## [1] 0.8487393
sd(ph_depression)
## [1] 0.5430435

Varianza de pH para Slope y Depression

var(ph_slope)
## [1] 0.7203583
var(ph_depression)
## [1] 0.2948963

\(S_p\):

\[S_p = \frac{(16 - 1)0.8487 + (16 -1)0.5430}{16+16-2} \\ = 13.002\]

sp <- ((16-1)*0.8487) + ((16-1)*0.5430)/(16+16-2)
sp
## [1] 13.002

El estadístico \(t_{observado}\) es:

\[t = \frac{4.742-4.691}{13.002\sqrt{\frac{0.720}{16}+\frac{0.294}{16}}} = 0.0166\]

t_observado <- (4.74625-4.691875)/(13.002*sqrt((0.7203583/16)+(0.2948963/16)))
t_observado
## [1] 0.01660205

Nivel \(\alpha\) y \(t_{teórico}\)

  • Juego de hipótesis: \[H_0: \mu_{pHSlope} = \mu_{pHDepression} \\ H_1: \mu_{pHSlope} \neq \mu_{pHDepression}\]
  • Se fija un nivel de significancia del 5%
  • \(t \sim t_v\), con \(v\) grados de libertan. Donde \(v = n_1 + n_2 - 2\)
  • \(t_v=t_{n_1+n_2-2}=t_{16+16-2}=t_{30}\)
  • \(t_{\alpha/2,\ v}=t_{0.05/2,\ 30}=-2.042\)
  • \(t_{1-\alpha/2,\ v}=t_{1-0.05/2,\ 30}=2.042\)
qt(p = 0.025, df = 30)
## [1] -2.042272
qt(p = 0.025, df = 30)
## [1] -2.042272

Interpretación:

  • Como el \(t_{observado}\) o \(t_{calculado}\) está dentro de la zona de no rechazo, hay evidencia para afirmar que no existe diferencia estadística en el promedio del pH entre el contorno Slope y Depression, es decir, que en promedio para el pH son iguales. Todo lo anterior, con un nivel de confianza del 95%.

Solución con R

  1. Para la variable pH, construir un intervalo de confianza del 95% para \(\mu\)
  • Un intervalo de confianza para \(\mu\), con R puede ser obtenido con la función t.test()
  • La función t.test() arroja además de los límites del intervalo de confianza, el valor P y el estadístico \(t\).
  • Si se pretende extraer sólo la información de los intervalos de confianza, es suficiente con incorporar el resultado de t.test() en una nueva variable y a partr de esta, extraer el resultado que se requiera. Esto con la finalidad de no presentar el resultado completo, dado que no es necesario en algunos casos (como en este numeral del ejemplo).

  • Resultado completo:

t.test(x = Soils$pH, conf.level = 0.95)
## 
##  One Sample t-test
## 
## data:  Soils$pH
## t = 48.151, df = 47, p-value < 2.2e-16
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
##  4.474289 4.864461
## sample estimates:
## mean of x 
##  4.669375

Note que los límites del intervalo de confianza son los mismos obtenidos de manera manual. La interpretación es la misma; con un nivel de confianza del 95%, se espera que el valor promedio del pH esté entre 4.474 y 4.863, es decir, que de 100 intervalos construidos a partir de muestras de tamaño 48 se espera que 95 de ellos contengan el verdadero valor de \(\mu_{pH}\).

  • Resultado necesario (intervalo de confianza):
ic_ph <- t.test(x = Soils$pH, conf.level = 0.95)
names(ic_ph) #nombres de los resultados de ic_ph producto del t.test()
## [1] "statistic"   "parameter"   "p.value"     "conf.int"    "estimate"   
## [6] "null.value"  "alternative" "method"      "data.name"
ic_ph["conf.int"] #Mostrando sólo el resultado que compete a los intervalos de confianza
## $conf.int
## [1] 4.474289 4.864461
## attr(,"conf.level")
## [1] 0.95
  1. Para la variable nitrógeno (N), construir un intervalo de confianza del 90% para \(\mu\)
ic_N <- t.test(x = Soils$N, conf.level = 0.90)
ic_N["conf.int"] #Mostrando sólo el resultado que compete a los intervalos de confianza
## $conf.int
## [1] 0.08567251 0.11820249
## attr(,"conf.level")
## [1] 0.9

Interpretación:

  • Con un nivel de confianza del 90%, se espera que el valor promedio del N esté entre 0.0856 y 0.1182, es decir, que de 100 intervalos construidos a partir de muestras de tamaño 48 se espera que 90 de ellos contengan el verdadero valor de \(\mu_{N}\).
  1. Para la variable fósforo (P), construir un intervalo de confianza del 99% para \(\mu\)
ic_P <- t.test(x = Soils$P, conf.level = 0.99)
ic_P["conf.int"] #Mostrando sólo el resultado que compete a los intervalos de confianza
## $conf.int
## [1] 134.7184 197.6149
## attr(,"conf.level")
## [1] 0.99

Interpretación:

  • Con un nivel de confianza del 99%, se espera que el valor promedio del P esté entre 134.71 y 197.61, es decir, que de 100 intervalos construidos a partir de muestras de tamaño 48 se espera que 99 de ellos contengan el verdadero valor de \(\mu_{P}\).
  1. Suponga que se conoce que en esa región donde se tomaron las muestras el pH promedio es 6.5. A través de una prueba de hipótesis responder si la media de los datos muestrales es congruente con el pH promedio de la región
  • Para solucionarlo con R simplemente hay que ejecutar la función t.test() de la siguiente manera:
t.test(x = Soils$pH, mu = 6.5, alternative = "two.sided", conf.level = 0.95)
## 
##  One Sample t-test
## 
## data:  Soils$pH
## t = -18.878, df = 47, p-value < 2.2e-16
## alternative hypothesis: true mean is not equal to 6.5
## 95 percent confidence interval:
##  4.474289 4.864461
## sample estimates:
## mean of x 
##  4.669375

Interpretación:

  • Valor P: como el valor P (< 2.2e-16) es menor que \(\alpha = 0.05\), existe evidencia para rechazar la hipótesis nula, es decir, que la media del pH de la muestra difiere de la media del pH en la región.
  • Intervalos de confianza: como el intervalo de confianza no contiene a 6.5, existe evidencia en contra de la hipótesis nula, es decir, que la media del pH de la muestra difiere de la media del pH en la región.
  1. ¿Se cumple el supuesto de normalidad en la variable pH?
  • Gráficos:
library(car)
par(mfrow = c(1, 2))
qqPlot(Soils$pH, main = "QQ plot del pH", ylab = "pH")
## [1] 24 20
hist(Soils$pH, xlab = "pH", ylab = "Frecuencia", main = "Distribución del pH",
     col = "gray50", nclass = 15, probability = TRUE)
lines(density(x = Soils$pH), lwd = 1.5, col = "red")

  • Contraste de hipótesis Shapiro Wilk y Kolgomorov-Smirnov:

El juego de hipótesis se define en términos de si se distribuye o no la variable aleatoria, como una distribución normal. En este caso, la variable aleatoria es el pH.

\[H_0: X \sim N(0,1) \\ H_1: X \neq N(0,1)\]

shapiro.test(Soils$pH)
## 
##  Shapiro-Wilk normality test
## 
## data:  Soils$pH
## W = 0.93978, p-value = 0.01591
ks.test(x = Soils$pH, "pnorm")
## Warning in ks.test(x = Soils$pH, "pnorm"): ties should not be present for
## the Kolmogorov-Smirnov test
## 
##  One-sample Kolmogorov-Smirnov test
## 
## data:  Soils$pH
## D = 0.99991, p-value < 2.2e-16
## alternative hypothesis: two-sided

Conclusión: con los gráficos y los contrastes de hipótesis a través de las pruebas de Shapiro-Wilk y Kolgomorov-Smirnov, es posible concluir que dicha muestra del pH no proviene de una población con distribución normal.

  1. Contrastar si existen diferencias estadísticamente significativas para el pH entre el contorno Slope y Depression, asumiendo que las varianzas son desconocidas e iguales.
ph_slope <- Soils[Soils$Contour == "Slope", "pH"] #vector con los datos de pH para Slope 
ph_depression <- Soils[Soils$Contour == "Depression", "pH"] #vector con los datos de pH para Depression 

t.test(x = ph_slope, y = ph_depression, alternative = "two.sided", mu = 0, var.equal = TRUE)
## 
##  Two Sample t-test
## 
## data:  ph_slope and ph_depression
## t = 0.21586, df = 30, p-value = 0.8306
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.4600726  0.5688226
## sample estimates:
## mean of x mean of y 
##  4.746250  4.691875

Interpretación:

  • Como el valor P (0.8306) es mayor que alfa (0.05), no existe evidencia para afirmar que hay diferencia estadística en el promedio del pH entre el contorno Slope y Depression, es decir, que no existe evidencia suficiente para rechazar \(H_0\).
  • El intervalo de confianza (\(-0.4600726, 0.5688226\)) contiene al cero, por lo cual no es posible rechazar la hipótesis nula.

Ejemplo 2

Un fabricante de determinada marca de vehículos de alta gama anuncia en la publicidad que el combustible promedio necesario para llevar a cabo un recorrido de 100 kilómetros es de 18.5 galones. Se toman dos muestras de 10 carros cada una y se observa el consumo cada 100 kilómetros recorridos, obteniendo las siguientes mediciones:

Muestra 1 Muestra 2
19.2 20.1
20.8 18.6
20.5 17.9
18.7 16.5
19.3 21.2
20.2 17.1
20.4 18.6
19.9 19.6
18.7 19.4
16.5 17.9

obtenga:

  1. Un IC del 95% para la muestra 1
  2. Basado en los IC, ¿la afirmación del fabricante es cierta?
  3. Si existen diferencias estadísticas en el promedio de galones consumidos entre las dos muestras (contraste de hipótesis)

Solución con R

  1. Obtener un IC del 95% para ambas muestras
muestra1 <- c(19.2, 20.8, 20.5, 18.7, 19.3, 20.2, 20.4, 19.9, 18.7, 16.5)
muestra2 <- c(20.1, 18.6, 17.9, 16.5, 21.2, 17.1, 18.6, 19.6, 19.4, 17.9)
ic_m1 <- t.test(x = muestra1, conf.level = 0.95)
ic_m1["conf.int"] #Mostrando sólo el resultado que compete a los intervalos de confianza
## $conf.int
## [1] 18.51213 20.32787
## attr(,"conf.level")
## [1] 0.95

Interpretación:

  • Con un nivel de confianza del 95%, se espera que el valor promedio del consumo de combustible (en galones) esté entre 18.512 y 20.327, es decir, que de 100 intervalos construidos a partir de muestras de tamaño 10 se espera que 95 de ellos contengan el verdadero valor de $_{consumo}.
  1. Basado en los IC, ¿la afirmación del fabricante es cierta?
ic_m1 <- t.test(x = muestra1, conf.level = 0.95) #intervalo de confianza muestra 1
ic_m1["conf.int"] 
## $conf.int
## [1] 18.51213 20.32787
## attr(,"conf.level")
## [1] 0.95
ic_m2 <- t.test(x = muestra2, conf.level = 0.95) #intervalo de confianza muestra 2
ic_m2["conf.int"] 
## $conf.int
## [1] 17.67248 19.70752
## attr(,"conf.level")
## [1] 0.95

Interpretación:

  • Con el intervalo de confianza del 95% para la muestra 1 (entre 18.512 y 20.327) es posible afirmar que el fabricante dice “mentiras” en la publicidad, ya que el intervalo no contiene el valor de 18.5 galones.
  • Con el intervalo de confianza del 95% para la muestra 1 (entre 17.672 y 19.707) es posible afirmar que el fabricante dice la verdad en la publicidad, ya que el intervalo contiene el valor de 18.5 galones.
  1. ¿Existen diferencias estadísticas en el promedio de galones consumidos entre las dos muestras (contraste de hipótesis)?

Juego de hipótesis:

\[H_0: \mu_{muestra1} = \mu_{muestra2} \\ H_1: \mu_{muestra1} \neq \mu_{muestra2}\]

Nivel \(\alpha = 0.05\)

Comprobar si las varianzas son iguales

par(mfrow = c(1, 2))
boxplot(muestra1, col = "gray45", main = "Boxplot muestra 1", ylab = "Galones/100 Km")
boxplot(muestra2, col = "gray45", main = "Boxplot muestra 2", ylab = "Galones/100 Km")

Comprobar si existe normalidad

par(mfrow = c(1, 2))
qqPlot(muestra1, main = "Q-Q plot muestra 1")
## [1] 10  2
qqPlot(muestra2, main = "Q-Q plot muestra 2")

## [1] 5 4

Basado en los gráficos, es posible inferir que se cumplen la normalidad y la igualdad de varianzas. Por tanto, el contraste de hipótesis se realiza teniendo en cuenta que las varianzas son desconocidas pero iguales.

Contraste de hipótesis:

t.test(x = muestra1,                    #muestra 1
       y = muestra2,                    #muestra 2
       conf.level = 0.95,               #nivel de confianza
       alternative = "two.sided",       #prueba bilateral
       var.equal = TRUE)                #igualdad de varianzas
## 
##  Two Sample t-test
## 
## data:  muestra1 and muestra2
## t = 1.211, df = 18, p-value = 0.2416
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.5364725  1.9964725
## sample estimates:
## mean of x mean of y 
##     19.42     18.69

Conclusión:

  • \(t_{observado} = 1.211\): está en la zona de no rechazo.
  • El valor P (0.2416) es mayor que el alfa de 0.05.
  • El IC de confianza (entre -0.536 y 1.996) contiene al cero.
  • Conclusión: con cualquiera de los tres criterios, es posible afirmar que no existe evidencia suficiente para rechazar la hipótesis nula, es decir, que en promedio, el consumo de combustible entre la muestra 1 y la muestra 2, no es diferente. Todo lo anterior, con un nivel de significancia del 5%.

Ejemplo 3

Solución con R

Se realiza un experimento donde se midió la producción de vainas de fríjol por cada planta producida, en 12 unidades experimentales bajo las mismas condiciones. La muestra está compuesta por las siguientes observaciones:

Vainas
18
11
17
10
20
25
13
16
25
20
19
20
  • Comprobar la normalidad
  • Obtener un IC del 95% para la producción de vainas por planta

Comprobando normalidad:

vainas_frijol <- c(18,11,17,10,20,25,13,16,25,20,19,20)
par(mfrow = c(1, 2))
hist(vainas_frijol, main = "Distribución del número de vainas",
     probability = TRUE, col = "gray45")
lines(density(vainas_frijol), lwd = 2, col = "red")
qqPlot(vainas_frijol, main = "Gráfico QQ número de vainas")

## [1] 4 6
shapiro.test(vainas_frijol)
## 
##  Shapiro-Wilk normality test
## 
## data:  vainas_frijol
## W = 0.9413, p-value = 0.5152

Conclusión: se acepta la normalidad en la distribución del número de vainas en fríjol, los gráficos y la prueba de Shapiro Wilk permiten afirmar que dicha muestra proviene de una población con distribución normal.

  • Obtener un IC del 95% para la producción de vainas por planta
ic_vainas <- t.test(x = vainas_frijol, conf.level = 0.95)
ic_vainas$conf.int
## [1] 14.78220 20.88447
## attr(,"conf.level")
## [1] 0.95

Interpretación: con un nivel de confianza del 95% es posible afirmar que el verdadero valor promedio de la producción de vainas en fríjol, está entre 14.78 y 20.88 vainas. Si se tomaran nuevas muestras, se espera que el 95% de los intervalos contengan el verdadero valor de \(\mu\).

Ejemplo para \(\sigma^2\)

El conjunto de datos PlantGrowth de R, contiene resultados de un experimento para comparar los rendimientos (medido por el peso seco de las plantas) obtenidos de una tratamiento control (ctrl) y dos tratamientos adiciones (trt1 y trt2). Obtener:

Solución con R

R contiene la función var.test() a partir de la cual se pueden hacer pruebas de hipótesis para dos poblaciones. Al igual que la función t.test(), da como resultado el estadístico, el valor P y el intervalo de confianza.

Conjunto de datos:

head(PlantGrowth)
##   weight group
## 1   4.17  ctrl
## 2   5.58  ctrl
## 3   5.18  ctrl
## 4   6.11  ctrl
## 5   4.50  ctrl
## 6   4.61  ctrl

Contraste de hipótesis

\[H_0: \sigma^2_{trt1} = \sigma^2_{ctrl} \\ H_1: \sigma^2_{trt1} \neq \sigma^2_{ctrl}\]

var.test(x = PlantGrowth[PlantGrowth$group == "trt1", "weight"], 
         y = PlantGrowth[PlantGrowth$group == "ctrl", "weight"],
         alternative = "two.sided",
         ratio = 1,
         conf.level = 0.95)
## 
##  F test to compare two variances
## 
## data:  PlantGrowth[PlantGrowth$group == "trt1", "weight"] and PlantGrowth[PlantGrowth$group == "ctrl", "weight"]
## F = 1.8527, num df = 9, denom df = 9, p-value = 0.3719
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
##  0.4601928 7.4590937
## sample estimates:
## ratio of variances 
##           1.852733

Interpretación: dado que el valor P (0.3719) es mayor que alfa (0.05) y el intervalo de confianza (del cociente) contiene al 1 (entre 0.460 y 7.459), existe suficiente evidencia para no rechazar la hipótesis nula, es decir, que la varianza del tratamiento 1 y el tratamiento control, no difieren entre si. Todo lo anterior con un nivel de significancia del 5%.

Ejemplo para \(p\)

Se tienen los resultados de una encuesta en la que participaron 56 estudiantes, de los cuales 39 respondieron que sí habían tenido contacto con algún lenguaje de programación y 17 respondieron que no. Con esta información construya:

Solución con R

R contiene la función prop.test() a partir de la cual se pueden hacer pruebas de hipótesis para una o dos poblaciones. Al igual que las funciones t.test() y var.test(), da como resultado el estadístico, el valor P y el intervalo de confianza.

  • Un IC del 95% para la propoción esperada de estudiantes de la facultad de Ciencias Agrarias de la Universidad Nacional de Colombia sede Medellín, que han tenido contacto con algún lenguaje de programación.
encuesta <- read.csv("Encuesta.csv")
table(encuesta$LenguajeP)
## < table of extent 0 >

Proporción observada de los que sí han tenido contacto con algún lenguaje de programación:

proporcion_lp <- 17/56
proporcion_lp
## [1] 0.3035714

Intervalo de confianza:

ic_proporcion <- prop.test(x = 17, n = 56, conf.level = 0.95)
ic_proporcion$conf.int
## [1] 0.1915710 0.4425895
## attr(,"conf.level")
## [1] 0.95

Interpretación: con un nivel de confianza del 95%, se espera que la verdadera proporción de estudiantes en la facultad de Ciencias Agrarias que sí han tenido contacto con un lenguaje de programación esté entre 0.191 y 0.442, es decir, entre el 19.1 y 44.2%.

  • A través de una prueba de hipótesis responda si se espera que esta proporción sea menor al 40%.

\(\alpha = 0.05\) y nivel de confiana del 95%.

\[H_0: p = 0.40 \\ H_1: p < 0.40\]

prop.test(x = 17, n = 56, p = 0.40, alternative = "less", conf.level = 0.95)
## 
##  1-sample proportions test with continuity correction
## 
## data:  17 out of 56, null probability 0.4
## X-squared = 1.7865, df = 1, p-value = 0.09068
## alternative hypothesis: true p is less than 0.4
## 95 percent confidence interval:
##  0.0000000 0.4210217
## sample estimates:
##         p 
## 0.3035714

Interpretación: dado que el valor P (0.09068) es mayor que alfa y el intervalo de confianza contiene la proporción contrastada (40%), existe suficiente evidencia para no rechazar la hipótesis nula, es decir, que la proporción esperada de estudiantes que sí hayan tenido contacto con algún lenguaje de programación en la facultad de Ciencias Agrarias, es igual o mayor a 40%.