En esta unidad trabajaremos funciones de R para construir intervalos de confianza (IC) de:
Usaremos como ejemplo la base medidas del cuerpo.
Paquetes usados:
car(QQ‑plot),stests(var.test extendido).
req <- c("car")
inst <- req[!req %in% installed.packages()[, "Package"]]
if(length(inst)) install.packages(inst)
suppressPackageStartupMessages(library(car))
# stests desde GitHub si no está
if(!"stests" %in% installed.packages()[, "Package"]) {
if(!"devtools" %in% installed.packages()[, "Package"]) install.packages("devtools")
devtools::install_github("fhernanb/stests", force = TRUE)
}
library(stests)
##
## Adjuntando el paquete: 'stests'
## The following object is masked from 'package:stats':
##
## var.test
url <- "https://raw.githubusercontent.com/fhernanb/datos/master/medidas_cuerpo"
datos <- read.table(file = url, header = TRUE)
hombres <- subset(datos, sexo == "Hombre")
mujeres <- subset(datos, sexo == "Mujer")
str(datos)
## 'data.frame': 36 obs. of 6 variables:
## $ edad : int 43 65 45 37 55 33 25 35 28 26 ...
## $ peso : num 87.3 80 82.3 73.6 74.1 85.9 73.2 76.3 65.9 90.9 ...
## $ altura: num 188 174 176 180 168 ...
## $ sexo : chr "Hombre" "Hombre" "Hombre" "Hombre" ...
## $ muneca: num 12.2 12 11.2 11.2 11.8 12.4 10.6 11.3 10.2 12 ...
## $ biceps: num 35.8 35 38.5 32.2 32.9 38.5 38.3 35 32.1 40.4 ...
t.testLa función t.test() calcula IC para la
media y para la diferencia de medias
(muestras independientes o pareadas). Argumentos principales:
t.test(x, y = NULL,
alternative = c("two.sided", "less", "greater"),
mu = 0, paired = FALSE, var.equal = FALSE,
conf.level = 0.95, ...)
Objetivo. IC bilateral para la media poblacional, a partir de una muestra (supuesto de normalidad o \(n\) grande).
Ejemplo (90 %): altura de hombres.
par(mfrow=c(1,2))
qqPlot(hombres$altura, pch=19, id=FALSE,
main="QQplot altura (Hombres)",
xlab="Cuantiles teóricos", ylab="Cuantiles muestrales")
hist(hombres$altura, main="Histograma altura (Hombres)",
xlab="Altura", ylab="Frecuencia")
par(mfrow=c(1,1))
ic_h <- t.test(hombres$altura, conf.level = 0.90)$conf.int
ic_h
## [1] 176.4384 181.7172
## attr(,"conf.level")
## [1] 0.9
Interpretación. Con 90 % de confianza, \(\) (altura media de hombres) está entre los extremos del vector anterior.
Objetivo. IC de \(_1 - _2\) con dos muestras
independientes. Usar var.equal = TRUE si se asume igualdad
de varianzas.
ic_diff_ind <- t.test(x = hombres$altura, y = mujeres$altura,
var.equal = TRUE, conf.level = 0.95)$conf.int
ic_diff_ind
## [1] 10.06571 20.02318
## attr(,"conf.level")
## [1] 0.95
Interpretación. El intervalo anterior acota la diferencia media de alturas (H − M) al 95 %.
Objetivo. IC de \(_D\) cuando cada individuo tiene dos mediciones.
set.seed(123)
# Ejemplo de datos pareados (antes vs después)
antes <- c(15, 18, 20, 14, 17, 21, 19, 16)
despues<- c(10, 11, 14, 9, 12, 15, 13, 10)
ic_p <- t.test(antes, despues, paired = TRUE, conf.level = 0.95)$conf.int
ic_p
## [1] 5.158844 6.341156
## attr(,"conf.level")
## [1] 0.95
Lectura. Si el intervalo para \(D = {}-_{}\) es totalmente positivo, “antes” supera a “después”.
Usar alternative = "less" (inferior) o
"greater" (superior).
set.seed(321)
x <- rnorm(50, mean = 18, sd = 3)
t.test(x, alternative = "greater", conf.level = 0.90)$conf.int
## [1] 17.7119 Inf
## attr(,"conf.level")
## [1] 0.9
var.testPara IC de una varianza o de la razón de
varianzas: - stats::var.test() (1 población); -
stests::var.test() (1 o 2 poblaciones, versión
extendida).
res_var <- stests::var.test(x = hombres$altura, conf.level = 0.98)
res_var$conf.int
## [1] 21.08468 109.93095
## attr(,"conf.level")
## [1] 0.98
Interpretación. IC al 98 % para la varianza de altura (hombres).
stats::var.test(x = hombres$altura, y = mujeres$altura,
conf.level = 0.95)$conf.int
## [1] 0.2327398 1.6632830
## attr(,"conf.level")
## [1] 0.95
prop.testIC para proporciones y diferencia de proporciones (basado en aproximación normal).
Ejemplo (90 %): 275 éxitos en 500 ensayos.
prop.test(x = 275, n = 500, conf.level = 0.90)$conf.int
## [1] 0.5122310 0.5872162
## attr(,"conf.level")
## [1] 0.9
Ejemplo (90 %): defectos antes 75/1500 vs después 80/2000.
prop.test(x = c(75, 80), n = c(1500, 2000), conf.level = 0.90)$conf.int
## [1] -0.002314573 0.022314573
## attr(,"conf.level")
## [1] 0.9
Conclusión. Si 0 está dentro del IC de \(p_1-p_2\), no hay evidencia de cambio real en las proporciones.
t.test() → medias (una muestra, dos muestras
independientes, pareadas; bilateral y unilateral).var.test() → varianza y razón de varianzas.prop.test() → proporciones (una o dos).conf.level.