Intervalos de confianza con R

David Sulmont

6/10/2016

Introducción

En esta presentación mostraremos cómo calcular intervalos de confianza usando el R

Para ello utilizaremos los datos de la EMV de Perú que deben descargarse de la plataforma PAIDEIA

load("wvs_peru_v2.rdata")
wvs.peru$oleada <- factor(wvs.peru$oleada)
table(wvs.peru$oleada)
## 
## 1995-1998 1999-2004 2005-2009 2010-2014 
##      1211      1501      1500      1210

Intervalos de confianza para medias

La fórmula para calcular un intervalo de confianza para medias es la siguiente:

\[IC_{1-\alpha}=\bar{x}\pm \sigma_{\bar{x}}(Z_{1-\alpha})\]

Donde:

Niveles de confianza más comunes en CCSS:

Ejemplo de cálculo manual de intervalos de confianza

Variable: Satisfacción con la vida para la última oleada (a170r)

Primero necesitamos los estadísticos descriptivos

peru12 <- subset(wvs.peru, oleada=="2010-2014")
length(peru12$a170r)
## [1] 1210
summary(peru12$a170r)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   1.000   6.000   7.000   7.134   9.000  10.000       4
sd(peru12$a170r, na.rm=T)
## [1] 2.184487

Cálculo de intervalo de confianza al 95%

Tenemos: N = 1206; \(\bar{x}=7.13\); \(S_{x}=2.18\)

Cálculo del Error estándar

2.18/sqrt(1206)
## [1] 0.06277444

Cálculo del Margen de error

(2.18/sqrt(1206))*1.96
## [1] 0.1230379

Límite inferior y superior del intervalo de confianza

7.13 - (2.18/sqrt(1206))*1.96
## [1] 7.006962
7.13 + (2.18/sqrt(1206))*1.96
## [1] 7.253038

Cálculo de intervalo de confianza usando la función summarySE

library(Rmisc)

Intervalo de confianza al 95%

summarySE(data=peru12, measurevar = "a170r", na.rm = T)
##    .id    N    a170r       sd         se        ci
## 1 <NA> 1206 7.134328 2.184487 0.06290364 0.1234128

Intervalo de confianza al 99%

summarySE(data=peru12, measurevar = "a170r", conf.interval = 0.99, na.rm = T)
##    .id    N    a170r       sd         se        ci
## 1 <NA> 1206 7.134328 2.184487 0.06290364 0.1622861

Intervalo de confianza al 95% por grupo usando summarySE

summarySE(data=wvs.peru, measurevar = "a170r", groupvars = "oleada" , na.rm = T)
##      oleada    N    a170r       sd         se        ci
## 1 1995-1998 1191 6.361881 2.434181 0.07053374 0.1383843
## 2 1999-2004 1490 6.440268 2.396155 0.06207573 0.1217652
## 3 2005-2009 1490 7.024832 2.229613 0.05776123 0.1133020
## 4 2010-2014 1206 7.134328 2.184487 0.06290364 0.1234128

Gráficar intervalos de confianza

df.g1 <- summarySE(data=wvs.peru, measurevar = "a170r", 
                   groupvars = "oleada" , na.rm = T)

library(ggplot2)
graf1 <- ggplot(data=df.g1, aes(x=oleada, y=a170r)) + geom_point() +
  ylim(4,9) + geom_errorbar(aes(ymin=a170r-ci, ymax=a170r+ci), width=0.2) +
  xlab("") + ylab("Nivel de satisfacción con la vida") +
  ggtitle("Perú EMV: Nivel de satisfacción con la vida según oleada\n Media e intervalo de confianza al 95%") +
  theme_bw()

Media de satisfacción con la vida, por oleada y grupo de edad

df.g2 <- summarySE(data=wvs.peru, measurevar = "a170r", 
                   groupvars = c("oleada", "gedad"), na.rm = T)
df.g2
##       oleada    gedad   N    a170r       sd         se        ci
## 1  1995-1998  15 a 29 511 6.475538 2.251555 0.09960291 0.1956825
## 2  1995-1998  30 a 49 488 6.209016 2.566840 0.11619537 0.2283061
## 3  1995-1998 50 a más 192 6.447917 2.545378 0.18369683 0.3623350
## 4  1999-2004  15 a 29 601 6.524126 2.304308 0.09399467 0.1845985
## 5  1999-2004  30 a 49 633 6.274882 2.397312 0.09528460 0.1871127
## 6  1999-2004 50 a más 256 6.652344 2.580514 0.16128213 0.3176146
## 7  2005-2009  15 a 29 550 7.029091 2.154985 0.09188887 0.1804968
## 8  2005-2009  30 a 49 617 6.977310 2.144035 0.08631561 0.1695085
## 9  2005-2009 50 a más 323 7.108359 2.502922 0.13926631 0.2739868
## 10 2010-2014  15 a 29 409 7.315403 2.052206 0.10147508 0.1994792
## 11 2010-2014  30 a 49 492 7.095528 2.203732 0.09935193 0.1952074
## 12 2010-2014 50 a más 305 6.954098 2.310842 0.13231844 0.2603760

Gráfico

graf2 <- ggplot(data=df.g2, aes(x=oleada, y=a170r)) + geom_point() +
  ylim(4,9) + geom_errorbar(aes(ymin=a170r-ci, ymax=a170r+ci), width=0.2) +
  xlab("") + ylab("Nivel de satisfacción con la vida") +
  facet_wrap(~gedad) +
  ggtitle("Perú EMV: Nivel de satisfacción con la vida según oleada y grupo de edad\n Media e intervalo de confianza al 95%") +
  theme_bw() +
  theme(axis.text.x  = element_text(angle=45, vjust=0.5, size=10))