datos = read.table(file = "datos/p5-ENSE2012-seleccion.csv", header = TRUE, sep = ";")
En este fichero puedes encontrar parte de los resultados de la encuesta nacional de salud, en la que se preguntó por distintos hábitos a 21007 individuos.
A continuación aparecen las variables eleccionadas junto con su codificación.
SEXOa
. Identificación del adulto seleccionado: Sexo.
S105
. ¿Fuma actualmente?
Por si te interesa, aquí está en enlace a la página del INE. Allí encontrarás
Vamos a usar los datos de la encuesta nacional de salud realizada en 2011-2012 para estimar al probabilidad de ciertos eventos a nivel poblacional. Básicamente:
Descarga de los datos.
datos
de tu carpeta de trabajo**.read.table
y guárdalo en un data.frame con el nombre ense
.Prepara los datos
all(complete.cases(datos))
## [1] TRUE
8
y 9
.elimina1 = which(datos[ , 1] %in% c(8, 9))
elimina2 = which(datos[ , 2] %in% c(8, 9))
datos = datos[-c(elimina1, elimina2), ]
Calcula la tabla de contingencia para las dos variables. Incluye los valores marginales.
(tabla1 = table(datos))
## S105
## SEXOa 1 2 3 4
## 1 2662 307 2759 3906
## 2 2100 247 1422 7581
rownames(tabla1) <- c("hombre", "mujer")
colnames(tabla1) <- c("habitual", "ocasional", "ex-fumador", "no-fumador")
tabla1Mrgs = addmargins(tabla1)
Usar la tabla para estimar a nivel poblacional las siguientes probabilidades.
tabla1[2,2]/sum(tabla1[, ])
## [1] 0.01177087
tabla1Mrgs[2,2]/tabla1Mrgs[3,5]
## [1] 0.01177087
tabla1[2,2]/sum(tabla1[ ,2])
## [1] 0.4458484
tabla1Mrgs[2,2]/tabla1Mrgs[3,2]
## [1] 0.4458484
Estima, a partir de la regla de Laplace (casos favorables entre casos posibles), la probabilidad de que al elegir un individuos al azar:
(sum(datos$SEXOa == 2)/nrow(datos) )
## [1] 0.5408883
# alternativamente
length(datos$SEXOa[datos$SEXOa == 2])/nrow(datos)
## [1] 0.5408883
nrow(datos[(datos$SEXOa == 2) & (datos$S105==2), ])/sum(datos$SEXOa == 2)
## [1] 0.02176211
Con las variables G21c_14
y S105
prepara los datos
all(complete.cases(datos))
## [1] TRUE
8
y 9
.elimina1 = which(datos[ , 1] %in% c(8, 9))
elimina2 = which(datos[ , 2] %in% c(8, 9))
datos = datos[-c(elimina1, elimina2), ]
Durante un ensayo clínico de una nueva prueba diagnística se ha aplicado dicho test a 1000 individuos repartidos entre sanos (S) y enfermos (E), y se ha medido si cada uno de ellos dio positivo (+) o negativo (-).
Descarga de los datos.
datos
de tu carpeta de trabajo.read.table
y guárdalo en un data.frame con el nombre tabla
.datos2 = read.table(file = "datos/p5-test-diagnostico-ensayo-clinicoBis.csv", header = TRUE, sep = ";")
head(datos2, 8)
## test estado
## 1 + E
## 2 + E
## 3 + E
## 4 + E
## 5 + E
## 6 + E
## 7 + S
## 8 + E
summary(datos2)
## test estado
## -:455 E:575
## +:545 S:425
Prepara los datos
all(complete.cases(datos2))
## [1] TRUE
summary(datos2)
## test estado
## -:455 E:575
## +:545 S:425
(tabla2 = table(datos2, deparse.level = ))
## estado
## test E S
## - 75 380
## + 500 45
datos2$test = factor(datos2$test, levels = c("+", "-"))
(tabla2 = table(datos2))
## estado
## test E S
## + 500 45
## - 75 380
col.names()
, row.names()
. Añade a la tabla los valores marginales con la función addmargins()
colnames(tabla2) <- c("Enfermo", "Sano")
row.names(tabla2) <- c("Positivo", "Negativo")
(tabla2Mrgs = addmargins(tabla2))
## estado
## test Enfermo Sano Sum
## Positivo 500 45 545
## Negativo 75 380 455
## Sum 575 425 1000
# tabla2Mrgs[1,3]/tabla2Mrgs[3,3]
sum(tabla2[1, ])/sum(tabla2)
## [1] 0.545
# tabla2Mrgs[1,1]/tabla2Mrgs[3, 3]
tabla2[1,1]/sum(tabla2)
## [1] 0.5
# (tabla2Mrgs[2,1]/tabla2Mrgs[3,3])/(tabla2Mrgs[2,3]/tabla2Mrgs[3,3])
(tabla2[2,1]/sum(tabla2))/(sum(tabla2[2, ])/sum(tabla2))
## [1] 0.1648352
# (tabla2Mrgs[1,1]/tabla2Mrgs[3,3])/(tabla2Mrgs[3,1]/tabla2Mrgs[3,3])
(tabla2[1,1]/sum(tabla2))/(sum(tabla2[,1])/sum(tabla2))
## [1] 0.8695652
# (tabla2Mrgs[2,2]/tabla2Mrgs[3,3])/(tabla2Mrgs[3,2]/tabla2Mrgs[3,3])
(tabla2[2,2]/sum(tabla2))/(sum(tabla2[ ,2])/sum(tabla2))
## [1] 0.8941176
# (tabla2Mrgs[1,1]/tabla2Mrgs[3,3])/(tabla2Mrgs[1,3]/tabla2Mrgs[3,3])
(tabla2[1,1]/sum(tabla2))/(sum(tabla2[1, ])/sum(tabla2))
## [1] 0.9174312
# (tabla2Mrgs[2,2]/tabla2Mrgs[3,3])/(tabla2Mrgs[2,3]/tabla2Mrgs[3,3])
(tabla2[2,2]/sum(tabla2))/(sum(tabla2[2,])/sum(tabla2))
## [1] 0.8351648
Ahora calcularemos las probabilidades directamente con la regla de Laplace contando a partir de los datos originales del data.frame
:
sum(datos2$test=="+")/nrow(datos2)
## [1] 0.545
sum((datos2$estado == "E") & (datos2$test == "-"))/nrow(datos2)
## [1] 0.075
sum((datos2$estado == "E") & (datos2$test == "-"))/sum(datos2$test == "-")
## [1] 0.1648352