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:
hist()
y density()
qqnorm()
y qqline()
shapiro.test()
ks.test()
Los ejemplos se llevan a cabo con el conjunto de datos iris
que trae internamente R.
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()
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
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)\]
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.
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.
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:
var.test()
bartlett.test()
leveneTest()
(instalar biblioteca car
)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")
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 \]
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.
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.
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.
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
pH
, construir un intervalo de confianza del 95% para \(\mu\).N
), construir un intervalo de confianza del 90% para \(\mu\).P
), construir un intervalo de confianza del 99% para \(\mu\).pH
?pH
entre el contorno Slope
y Depression
, asumiendo que las varianzas son desconocidas e iguales.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.
pH
, construir un intervalo de confianza del 95% para \(\mu\).Para resolverlo manualmente es posible seguir los siguientes pasos:
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}\):
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
qt()
corresponde a la búsqueda de dicho valor en la tabla \(t-student\).pH
es:mean(Soils$pH)
## [1] 4.669375
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:
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}\):
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
N
es:mean(Soils$N)
## [1] 0.1019375
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:
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}\).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}\):
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
N
es:mean(Soils$P)
## [1] 166.1667
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:
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}\).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.
Este punto se desarrolló solamente mediante R.
pH
entre el contorno Slope
y Depression
, asumiendo que las varianzas son desconocidas e iguales\[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}\)
qt(p = 0.025, df = 30)
## [1] -2.042272
qt(p = 0.025, df = 30)
## [1] -2.042272
Interpretación:
pH
, construir un intervalo de confianza del 95% para \(\mu\)t.test()
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}\).
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
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:
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}\).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:
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}\).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:
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")
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.
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:
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:
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:
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:
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:
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 |
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.
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\).
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:
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%.
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:
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.
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%.
\(\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%.