0% encontró este documento útil (0 votos)
24 vistas84 páginas

Análisis de Datos de Encuestas en R

El documento analiza el uso de datos de encuestas para estimar características de poblaciones, enfatizando la importancia de las ponderaciones en los análisis. Se describen diferentes métodos de muestreo, como el Muestreo Aleatorio Simple y Estratificado, y se presenta un caso práctico utilizando la Encuesta Nacional de Examinación de la Salud y Nutrición (NHANES). Además, se muestra cómo visualizar y analizar variables categóricas en R, destacando la variación de tasas de diabetes según la raza.

Cargado por

ecaverocarlos
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
24 vistas84 páginas

Análisis de Datos de Encuestas en R

El documento analiza el uso de datos de encuestas para estimar características de poblaciones, enfatizando la importancia de las ponderaciones en los análisis. Se describen diferentes métodos de muestreo, como el Muestreo Aleatorio Simple y Estratificado, y se presenta un caso práctico utilizando la Encuesta Nacional de Examinación de la Salud y Nutrición (NHANES). Además, se muestra cómo visualizar y analizar variables categóricas en R, destacando la variación de tasas de diabetes según la raza.

Cargado por

ecaverocarlos
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Ejercicio practico: Análisis de datos de encuestas

Datos de encuestas

Situación: Se identificó un problema de interés público, del cual se tiene una


pregunta y se desea responder. Se dispone de una base de datos de una
encuesta para responder la pregunta, en la base de datos hay una columna
que representa las ponderaciones de la encuesta (conocido también como
pesos). Y uno se pregunta ¿Qué son estos? ¿Puedo ignorarlos y hacer mis
calculos sin conisderarlos?
Datos de encuestas
Por ejemplo, veamos aquí las primeras dos columnas de una encuesta de la
oficina de estadísticas laborales(2016):
▶ La variable FINCBTAX representa la cantidad de ingresos de un hogar
antes de los impuestos.
▶ La primera columna del conjunto de datos FINLWT21 es la variable de
ponderación de la encuesta.
Ponderaciones de la encuesta

Entonces ¿Qué son las ponderaciones de las encuestas?


▶ Son los resultados de usar un diseño complejo de muestreo para
seleccionar una muestra de una población.
▶ Las ponderaciones nos dicen el número de individuos de la población que
representa cada individuo de la muestra.
▶ La primera fila el peso es igual a 25,985; lo que significa que el primer
hogar muestreado en la base de datos representa a 25,985 hogares en la
población.
▶ La segunda fila representa a 6,581 hogares, entonces ¿Cómo impacta las
ponderaciones a nuestro análisis?
Estimación con datos de encuesta
▶ La información de la encuesta sirve normalmente para estimar cantidades
sobre poblaciones finitas.
▶ Estimar el ingreso promedio de los hogares de una población
𝑁
𝜇 = 𝑁1 ∑𝑖=1 𝑦𝑖
Estimación con datos de encuesta
▶ Usando un diseño de muestreo complejo se toma una muestra aleatoria
m de n hogares.
1 𝑛
▶ Estimador muestra de la media: 𝑦 ̄ = 𝑛 ∑𝑖=1 𝑦𝑖
Estimación con datos de encuesta

▶ Para las unidades muestreadas, tenemos los valores y las ponderaciones.

▶ ¿Cómo incorporamos las ponderaciones?


▶ ¿Cómo impactan nuestras estimaciones, gráficos y modelos?
Especificando los elementos de diseño en R
Ahora veamos cómo se especifican los diseños utilizando el popular paquete
survey en R.
Supongamos que queremos estimar el tiempo promedio que los residentes de
Pensilvania pasan en las redes sociales. Esto significa que nuestra población
objetivo son los residentes de Pensilvania y nuestra variable de estudio son las
horas semanales que pasamos en las redes sociales.
Muestreo Aleatorio Simple (MAS)
Supongamos que se tiene un listado de todos los residentes de Pensilvania y
seleccionamos aleatoriamente 200 residentes, denotados por los puntos
rosados.
En el MAS cada residente tiene la misma probabilidad de ser seleccionado en
la muestra.
Muestreo Aleatorio Simple (MAS)

Para especificar el diseño usamos svydesign() del paquete survey, donde


indicamos la base de datos (data), la columna de ponderación (weights), la
columna de tamaño de la población (fcp: finite population correction) y la
columna que guarda la preparación, dado que el muestreo se hizo en una sola
etapa de MAS, entonces indicamos id igual a tilde 1, las tildes (~) que
anteceden indican que estos son los nombres de las columnas en la base de
datos.
Muestreo Aleatorio Simple (MAS)

Se puede ver que con el MAS una gran parte de la muestra está concentrada
en las dos ciudades más pobladas (Philadelphia y Pittsburgh). Otras dos
ciudades en verde (con poca población) no tienen información.
Muestreo Aleatorio Estratificado (MAE)

Para solucionar esto, podemosagrupar nuestra población porcondados


(distritos, provincias,regiones).
Luego podemos aplicar un MAS en cada condado. A esto se llama Muestreo
Aleatorio Estratificado (MAE) y los grupos o condados son los estratos.
Este tipo de muestreo es pertinente para conseguir una muestra más
diversificada y útil para calcular las estimaciones por subgrupos.
Muestreo Aleatorio Estratificado (MAE)

Para especificar el diseño muestral necesitamos mapear en la base de datos la


columna que contiene los grupos para argumentar en “strata” que este caso es
condado, el fpc tiene reflejar ahora el tamaño de la población asociado a cada
condado.
Muestreo por Conglomerados

Aplicar el diseño del MAE implica disponer de presupuesto y tiempo para


viajar y recoger información para cada unidad muestreada.
Para acortar los costos, otro diseño comunmente usado es el diseño de
muestreo por conglomerados, donde la población es agrupada en grupos o sub
conjuntos denominados conglomerados.
Muestreo por Conglomerados

Dentro de cada conglomerado se aplica un MAS para seleccionar a las


personas. Para especificar el diseño de muestreo por conglomerados, es
necesario cambiar “id” y “fpc”, en la primera etapa se seleccionó
aleatoriamente el condado y en la segunda a la persona, entonces id es igual a
condado más el id de la persona; de forma similar fpc será N1 (número de
condados) más N2 (número de personas).
Encuesta Nacional de Examinación de la Salud y Nutrición
National Health and Nutrition Examination Survey (NHANES) conducido por
el Centro Nacional de Estadísticas de la Salud de EEUU, cuyo objetivo es
entender la salud de los adultos y niños:
▶ Se recolecta usando un diseño de 4 etapas, los investigadores diseñaron
cuidadosamente un diseño costo-efectivo.
▶ Etapa 0: El país es estratificado geograficamente y por distribución de
población minoritaria.
▶ Etapa 1: Dentro de cada estrato, los condados son seleccionados
aleatoriamente.
▶ Etapa 2: Dentro de cada condado, los bloques de manzanas son
seleccionadas aleatoriamente.
▶ Etapa 3: Dentro de cada manzana, los hogares son seleccionados
aleatoriamente.
▶ Etapa 4: Dentro de los hogares, las personas son seleccionadas
aleatoriamente.
NHANES

NHANESraw contiene muestreada del 2009 al 2012, se encuentra en el


paqeute NHANES
library(NHANES)
dim(NHANESraw)

[1] 20293 78
WTMEC2YR es la variable que contiene a cuantas personas representa cada
persona muestreada.
library(dplyr)
summarize(NHANESraw, N_hat = sum(WTMEC2YR))

# A tibble: 1 x 1
N_hat
<dbl>
1 608534400.
NHANES

608 millones de personas, es el doble de la población de EEUU porque se tiene


la data de 4 años, sin embargo, se recoge la muestra cada 2 años. Entonces
creamos una nueva variable WTMEC4YR dividiendo entre 2 la variable
original de ponderación, con la función mutate().
NHANESraw <- mutate(NHANESraw, WTMEC4YR = WTMEC2YR / 2)
NHANES

Especifiquemos la estructura de diseño en R con la función svydesign().


library(survey)
NHANES_design <- svydesign(data = NHANESraw,
strata = ~SDMVSTRA,
id = ~SDMVPSU, nest = TRUE,
weights = ~WTMEC4YR)

En los argumentos necesitamos especificar la base de datos NHANESraw y la


columna de estratos SDMVSTRA. Recordar que en id se especifica la variable
que contiene los conglomerados, el diseño actual tiene 3 niveles de
conglomerados (condados, manzanas y viviendas), en la práctica es común
especificar sólo el primer nivel, denotado aquí por SDMVPSU.
NHANES

Vemos que sólo hay 3 valores, esto porque se seleccionaron de 1 a 3 condados


dentro de cada estrato. nest es verdadero porque los id de los conglomerados
está anidados dentro de cada estrato, finalmente la variable de ponderación es
WTMEC4YR.
distinct(NHANESraw, SDMVPSU)

# A tibble: 3 x 1
SDMVPSU
<int>
1 1
2 2
3 3
Visualizando el impacto de la ponderación en el análisis
Supongamos que se desea estimar la distribución de la población por raza:
Visualizando el impacto de la ponderación en el análisis

Se puede ver que la distribución es diferente entre ambos gráficos. En el


gráfico de arriba se toma en cuenta las ponderaciones o pesos y en el debajo
no. Las ponderaciones toman en cuenta el diseño de muestreo, en el que los
grupos minoritarios se sobre muestrean, se ajustan por falta de respuesta y
calibran según información conocida de la población. En conclusión no se
pueden ignorar.
Visualizando el diseño muestral

Veamos en resumen que contiene el objeto del diseño de la encuesta:


#summary(NHANES_design)

Ahora que ya se tiene especificado el diseño de la encuesta NHANES,


podemos iniciar el análisis de la data. Empecemos viendo el análisis de
variables categóricas.
Analisis de variables categóricas: Gráfica de una variable
Vamos a estimar la distribución de la raza en los EEUU usando la variable
categórica Race1 que autoreportado por los participantes.
tab_unw <- NHANESraw %>% # nueva data sin los pesos
group_by(Race1) %>% # agrupando por raza
summarize(Freq = n()) %>% # nueva columna
mutate(Prop = Freq / sum(Freq)) %>% # nueva
arrange(desc(Prop)) # ordena las columnas
tab_unw

# A tibble: 5 x 3
Race1 Freq Prop
<fct> <int> <dbl>
1 White 7393 0.364
2 Black 4640 0.229
3 Mexican 3739 0.184
4 Other 2312 0.114
5 Hispanic 2209 0.109
Analisis de variables categóricas: Gráfica de una variable

Ahora visualicemos la gráfica de la variable categórica raza:


library(ggplot2)
ggplot(data = tab_unw, # base de datos
mapping = aes(x=Race1, y=Prop)) + # define ejes
geom_col() + coord_flip() + # cambia los ejes
scale_x_discrete(limits=tab_unw$Race1) # ordena

Hispanic

Other
Race1

Mexican

Black

White

0.0 0.1 0.2 0.3


Prop
Analisis de variables categóricas: dos variables categóricas

Ahora que sabemos cómo explicar adecuadamente el diseño muestral cuando


resumimos y visualizamos una variable categórica, veamos cómo explorar la
relación entre dos variables categóricas.
Como NHANES es una encuesta sobre la salud entonces, exploremos una
variable de salud, Diabetes, que tiene dos categorías: Sí, si un profesional de
la salud ha diagnosticado diabetes al participante, y No, si no.
Como antes, podemos usar svytable() para crear una tabla de frecuencia de la
prevalencia estimada de diabetes. Según la tabla, se estima que alrededor de
24 millones de personas han sido diagnosticadas con diabetes en los EE. UU.
svytable(~Diabetes, design = NHANES_design)

Diabetes
No Yes
275814034 24335536
Analisis de variables categóricas: pregunta de investigación

En lugar de explorar la diabetes de forma aislada, la pregunta de investigación


podría ser ¿Cómo varían las tasas de diabetes según la raza?.
Para ello, necesitamos una tabla de contingencia donde cada entrada
contenga los recuentos de una combinación de las dos variables. Para adquirir
una tabla de contingencia ponderada por encuesta de Race1 y Diabetes,
usaremos nuevamente svytable() e incluiremos ambas variables, separadas
por un signo más.
Analisis de variables categóricas: raza y diabetes

tab_w <- svytable(~Race1 + Diabetes, design = NHANES_design)


tab_w

Diabetes
Race1 No Yes
Black 32697528 4003497
Hispanic 17258245 1370393
Mexican 27886500 2081657
White 177088354 14708094
Other 20883407 2171895
Por ejemplo, se estima que más de 4 millones de personas de color negro se
les ha diagnosticado diabetes, mientras que a más de 32 millones no.
Analisis de variables categóricas: gráfica
Antes de graficar la tabla, debemos transformarla en un marco de datos donde
cada fila represente una de las entradas de la tabla de contingencia. Ahora
tenemos tres columnas, Race1, Diabetes y Freq, el recuento estimado.
tab_w <- [Link](tab_w)
tab_w

Race1 Diabetes Freq


1 Black No 32697528
2 Hispanic No 17258245
3 Mexican No 27886500
4 White No 177088354
5 Other No 20883407
6 Black Yes 4003497
7 Hispanic Yes 1370393
8 Mexican Yes 2081657
9 White Yes 14708094
10 Other Yes 2171895
Analisis de variables categóricas: gráfica
ggplot(data = tab_w,
mapping = aes(x = Race1, fill = Diabetes, y = Freq)) +
geom_col() + coord_flip()

Other

White

Diabetes
Race1

Mexican No
Yes

Hispanic

Black

0.0e+00 5.0e+07 1.0e+08 1.5e+08 2.0e+08


Freq
Analisis de variables categóricas: gráfica

Esto crea un gráfico de barras apiladas donde apilamos las barras de diabetes
dentro de cada grupo racial. Observe que para facilitar la lectura, se invierte
las coordenadas. Podemos hacer un par de observaciones.
▶ Primero, cada barra tiene más rosa que turqueza porque, para cada grupo
racial, es más probable que uno no haya sido diagnosticado con diabetes.
▶ En segundo lugar, la altura de las barras refleja los recuentos estimados
en cada grupo racial. Por tanto, la blanca es la barra más alta ya que es
el grupo más común.
Analisis de variables categóricas: gráfica

Sin embargo, para responder a nuestra pregunta original, “¿Las tasas de


diabetes varían según la raza?”, se requiere comparar la proporción relativa de
turqueza con la de color rosa en cada grupo racial.
Para hacerlo es necesario agregar en geom_col(position = “fill”). Ahora la
altura de cada relleno es la proporción condicional dentro de un grupo racial.
Con este gráfico de barras segmentadas, es más fácil ver que existen algunas
diferencias en las tasas de diabetes entre grupos.
Analisis de variables categóricas: gráfica
ggplot(data = tab_w,
mapping = aes(x = Race1, y = Freq, fill = Diabetes)) +
geom_col(position = "fill") +
coord_flip()

Other

White

Diabetes
Race1

Mexican No
Yes

Hispanic

Black

0.00 0.25 0.50 0.75 1.00


Freq
Inferencia con variables categóricas

Como vimos en el último gráfico, parece haber una relación entre la raza de
una persona y la probabilidad de que sea diagnosticado con diabetes. Esto se
puede aseverar observando el gráfico de que las tasas de prevalencia difieren
según cada grupo. Pero recuerde, estas estimaciones solo se basan en una
muestra aleatoria de la población de EE. UU. y, por lo tanto, tal vez la
asociación que estamos observando podría deberse puramente al azar.
Ahora es necesario realizar una prueba estadística formal para determinar, si
tenemos o no evidencia de una asociación entre la raza y diabetes.
Inferencia: prueba de Chi-Cuadrado

Como tenemos dos variables categóricas, ejecutaremos una prueba de


asociación de Chi-Cuadrado.
Recuerde que cuando utilizamos pruebas de hipótesis, primero definimos una
hipótesis nula, que a menudo contiene una afirmación nula.
Para las variables categóricas, esta afirmación sería que no existe relación y,
para nuestro ejemplo, diríamos que la prevalencia de la diabetes no está
asociada con la raza. También definimos una hipótesis alternativa, que
contiene la afirmación contraria y normalmente más interesante. En nuestro
caso, es que la prevalencia de diabetes sí está asociada a la raza.
Luego obtenemos nuestra medida de coherencia con el nulo ejecutando
svychisq() en nuestras dos variables y especificando nuestro diseño.
Inferencia: prueba de Chi-Cuadrado

▶ Hipótesis Nula: La prevalencia de la diabetes no está asociada con la


raza.
▶ Hipótesis Alatena: La prevalencia de la diabetes está asociada con la
raza.
svychisq(~Race1 + Diabetes, design = NHANES_design,
statistic = "Chisq")

Pearson's X^2: Rao & Scott adjustment

data: svychisq(~Race1 + Diabetes, design = NHANES_design, statistic


X-squared = 37.708, df = 4, p-value = 0.0001177
Inferencia: prueba de Chi-Cuadrado

El resultado contiene dos partes importantes: el estadístico de prueba,


denominado X-squared, y el valor p-value.
La estadística de prueba resume la discrepancia entre los resultados de nuestra
muestra y los resultados de la muestra que habrían sido más consistentes con
la hipótesis nula. Cuanto mayor sea el estadístico de prueba, mayor será la
discrepancia.
El valor p-value determina la probabilidad de observar la estadística de prueba
(Chi-Cuadrado) si realmente no hubiera relación entre nuestras dos variables,
Raza1 y Diabetes.
Dado que nuestro valor p es tan pequeño aquí, esto nos dice que sería muy
poco probable ver las diferencias en las tasas de diabetes que observamos si la
tasa es realmente consistente en todos los grupos raciales en los EE. UU. Por
lo tanto, tenemos evidencia de que la prevalencia de la diabetes varía según la
raza.
Análisis de variables cuantitativas: Explorando una variable
Cambiemos nuestro enfoque a una variable cuantitativa. Veamos la variable
DaysPhysHlthBad de NHANES, que es la cantidad de días que un
participante ha sentido que su salud física era mala en los últimos 30 días.
Solo se hizo la pregunta a los participantes que tenían al menos 12 años, por
lo que filtré para incluir solo esas filas y la variable de interés.
NHANESraw %>%
filter(Age >= 12) %>% select(DaysPhysHlthBad)

# A tibble: 14,390 x 1
DaysPhysHlthBad
<int>
1 0
2 2
3 20
4 2
5 0
6 0
7 0
Análisis de variables cuantitativas: Explorando una variable

La cantidad de información que podemos obtener al observar una instantánea


de los datos sin procesar es limitada y, por lo tanto, deberíamos preguntarnos:
“¿Qué estadísticas podemos calcular con esta variable para comprender mejor
la salud física de los estadounidenses?”
Análisis de variables cuantitativas: media, total y mediana

Podríamos estimar el número promedio de días de mala salud usando


svymean(). El resultado nos dice que estimaríamos que, en un mes
determinado, los estadounidenses tienen en promedio 3,3 días de mala salud
física. Hay otras cantidades que tal vez queramos estimar, como el número
total de días de mala salud en un mes determinado cambiando svymean()
por svytotal().
svymean(x = ~DaysPhysHlthBad,
design = NHANES_design, [Link] = TRUE)

mean SE
DaysPhysHlthBad 3.3315 0.1128
svytotal(x = ~DaysPhysHlthBad,
design = NHANES_design, [Link] = TRUE)

total SE
DaysPhysHlthBad 7.65e+08 35784824
Análisis de variables cuantitativas: media, total y mediana
Aunque para este ejemplo probablemente estemos más interesados en la
mediana. Para hacer esto, usaremos svyquantile() y agregaremos quantiles
= 0.5, ya que la mediana es el cuantil número 50. En este caso, la mediana
es igual a 0, lo que significa que estimaríamos que la mayoría de los
estadounidenses no tienen ningún día de mala salud en un mes determinado.

svyquantile(x = ~DaysPhysHlthBad,
design = NHANES_design, [Link] = TRUE,
quantiles = 0.5)

$DaysPhysHlthBad
quantile ci.2.5 ci.97.5 se
0.5 0 0 1 0.2457588

attr(,"hasci")
[1] TRUE
attr(,"class")
[1] "newsvyquantile"
Análisis de variables cuantitativas: por grupos
En las estadísticas de encuestas, también es común estimar cantidades dentro
de diferentes subgrupos de la población. Para una variable cuantitativa, como
DaysPhysHlthBad, nuestros subgrupos podrían ser fumadores y no
fumadores, donde queremos estimar el número promedio de días de mala
salud para ambos grupos. Para hacer esto, usaremos la función svyby().

svyby(formula = ~DaysPhysHlthBad, by = ~SmokeNow,


design = NHANES_design, FUN = svymean,
[Link] = TRUE, [Link] = FALSE)

SmokeNow DaysPhysHlthBad se
No No 3.908984 0.1996290
Yes Yes 4.951750 0.2346189

Vemos que los fumadores tienen, en promedio, un día más de mala salud física
que los no fumadores en un mes determinado.
Análisis de variables cuantitativas: por grupos

Causalidad: Recuerde, los datos de la encuesta son datos observacionales, no


experimentales y, por lo tanto, no podemos concluir que hay causalidad.
Podría haber variables de confusión en juego aquí. Por ejemplo, fumar podría
ser un indicador de la edad. En otras palabras, tal vez el grupo de fumadores
sean de mayor edad que el grupo de no fumadores y en realidad es la edad, y
no, el fumar o no fumar, lo que está afectando la salud.
Análisis de variables cuantitativas: por grupos

Podemos estimar la edad promedio de fumadores y no fumadores


reemplazando DaysPhysHlthBad con Age en svyby(). Resulta que los
fumadores son, en promedio, más jóvenes que los no fumadores. Y, por lo
tanto, si controlamos por la edad, tal vez veamos una diferencia aún mayor en
la calidad de la salud entre fumadores y no fumadores.
Pero ¿qué otras variables de confusión podríamos estar pasando por alto?, si
bien no es posible concluir un vínculo causal aquí, ha habido muchos estudios
que han demostrado que fumar tiene un impacto negativo en la salud.

svyby(formula = ~Age, by = ~SmokeNow,


design = NHANES_design, FUN = svymean,
[Link] = TRUE, [Link] = FALSE)

SmokeNow Age se
1 No 54.57933 0.6249442
2 Yes 42.76574 0.4087738
Análisis de variables cuantitativas: tabla de medias

Volvamos al ejemplo de la salud física en el que exploramos el número


promedio de días malos para fumadores y no fumadores. Estimamos las
medias usando svyby(). Usemos la salida, almacenada como tab, para crear
un gráfico de barras de las medias.
SmokeNow DaysPhysHlthBad se
1 No 3.908984 0.1996290
2 Yes 4.951750 0.2346189
Análisis de variables cuantitativas: gráfico de barras
Colocamos SmokeNow, la variable de agrupación, en el eje x y luego la altura
de la barra, y, viene dada por DaysPhysHlthBad. labs() agrega las etiquetas.

ggplot(data = tab,
mapping = aes(x = SmokeNow, y = DaysPhysHlthBad)) +
geom_col() +
labs(y = "Número de días malos de salud", x = "Fumador?")
5

4
Número de días malos de salud

No Yes
Fumador?
Análisis de variables cuantitativas: gráfico de barras con error

A veces es bueno agregar barras de error para darle al espectador una


sensación de incertidumbre sobre la verdadera altura de la barra. Aquí, la parte
superior de la barra de error está un error estándar por encima de la media del
grupo y la parte inferior está un error estándar por debajo. Para crear este
gráfico necesitamos agregar estos cálculos de error a nuestro marco de datos.

tab <- mutate(tab, lower = DaysPhysHlthBad - se,


upper = DaysPhysHlthBad + se)
tab

SmokeNow DaysPhysHlthBad se lower upper


1 No 3.908984 0.1996290 3.709355 4.108613
2 Yes 4.951750 0.2346189 4.717131 5.186369
Análisis de variables cuantitativas: gráfico de barras con error

ggplot(data = tab,
mapping = aes(x = SmokeNow, y = DaysPhysHlthBad,
ymin = lower, ymax = upper)) +
geom_col(fill = "blue") + geom_errorbar(width = 0.5) +
labs(y = "Número de días malos de salud",x = "Fumador?")

4
Número de días malos de salud

No Yes
Fumador?
Análisis de variables cuantitativas: histograma
Es posible que queramos mostrar algo más que la tendencia central de una
variable de encuesta. Por ejemplo, tal vez queramos ver la forma y
distribución del número de días de mala salud. Para ello podemos crear un
histograma o un gráfico de densidad.
ggplot(data = NHANESraw,
mapping = aes(x = DaysPhysHlthBad, weight = WTMEC4YR)) +
geom_histogram(binwidth = 1, color = "white") +
labs(x = "Number of Bad Health Days in a Month")
1.5e+08

1.0e+08
count

5.0e+07

0.0e+00

0 10 20 30
Análisis de variables cuantitativas: histograma

Para el histograma usamos geom_histogram. La estética es nuestra variable


de interés, DaysPhysHealthBad, y el peso (WTMEC4YR), nuestros pesos de
muestra. Ponderar a cada participante según su peso en la encuesta es un
paso importante para garantizar que obtengamos una forma que estime con
precisión la distribución de los días de mala salud para la población.
¡No utilizar las ponderaciones solo reflejará la distribución de la muestra y no
tendrá en cuenta el complejo diseño de muestreo! Dentro de
geom_histogram, también especifiqué un ancho de barra igual a 1 para que
cada barra represente un solo día y coloreé las barras de blanco para que sean
más fáciles de diferenciar. Ahora, como vimos en la mediana, la mayoría de
las personas no tienen ningún día de mala salud en un mes. Pero la mala
salud está muy sesgada con pequeños picos a los 10, 15, 20 y 30 días. La
barra en 30 representa la porción de la población que siente que su salud es
mala durante todo el mes.
Análisis de variables cuantitativas: gráfico de densidad

Un gráfico de densidad también nos dará una sensación de forma. Dado que
el área bajo la curva representa probabilidades, debe integrarse a uno y, por lo
tanto, tenemos que realizar algunos pasos de procesamiento de datos antes de
crear la gráfica.
Primero, eliminaremos los NA de nuestra variable mediante filter() y luego
agregaremos una columna de pesos que sume 1. ¡Observa que luego podemos
canalizar estos datos directamente a ggplot()! ¡Reemplazamos
geom_histogram con geom_density y tenemos nuestra trama! bw es un
argumento importante de geom_density ya que controla la suavidad de la
curva.
Análisis de variables cuantitativas: gráfico de densidad
NHANESraw %>%
filter(![Link](DaysPhysHlthBad)) %>%
mutate(WTMEC4YR_std = WTMEC4YR/sum(WTMEC4YR)) %>%
ggplot(mapping = aes(x = DaysPhysHlthBad,
weight = WTMEC4YR_std)) +
geom_density(bw = 0.6, fill = "blue") +
labs(x = "Número de días de mala salud en un mes")

0.4

0.3
density

0.2

0.1

0.0

0 10 20 30
Número de días de mala salud en un mes
Inferencia con variables cuantitativas

Hemos resumido los datos de encuesta y los hemos graficado. Pero ¿qué pasa
con la inferencia para una variable cuantitativa? Exploremos cómo comparar
las medias de una variable de encuesta cuantitativa para dos subgrupos de la
población.
Pregunta de investigación: ¿Existe evidencia convincente de que el
número promedio de días de mala salud es diferente entre fumadores y
no fumadores?
Al observar las estadísticas descriptivas, parece que la respuesta es “¡Sí!” Pero
recuerde, el gráfico de barras contiene estimaciones basadas en la muestra y
no en los promedios reales de todos los fumadores y no fumadores en Estados
Unidos. Y si bien las barras con error nos dan una sensación de incertidumbre,
no pueden responder nuestra pregunta.
Necesitamos realizar una prueba de hipótesis.
Inferencia con variables cuantitativas: prueba-t (t-test)

Como tenemos una variable cuantitativa y una variable categórica con dos
grupos, debemos ejecutar una prueba-t de dos muestras.
Hipótesis nula: El número promedio mensual de días de mala salud es el
mismo para fumadores y no fumadores.
Hipótesis alternativa: La conjetura planteada sería, de que los fumadores
tienen un número promedio mensual diferente de días de mala salud que los
no fumadores.
El estadístico de prueba-t es la diferencia en las medias de la muestra
ponderada de la encuesta dividida por el error estándar de la diferencia de
medias.

𝑦𝑓𝑢𝑚𝑎𝑑𝑜𝑟𝑒𝑠
̄ − 𝑦𝑛𝑜𝑓𝑢𝑚𝑎𝑑𝑜𝑟𝑒𝑠
̄
𝑡=
𝑆𝐸
Inferencia con variables cuantitativas: prueba-t (t-test)
La función R que usaremos es svyttest(). Usamos svyttest() y no la función
R [Link]() porque svyttest() calcula una estadística de prueba que toma en
cuenta el complejo diseño de muestreo.

svyttest(formula = DaysPhysHlthBad ~ SmokeNow,


design = NHANES_design)

Design-based t-test

data: DaysPhysHlthBad ~ SmokeNow


t = 3.8208, df = 32, p-value = 0.0005778
alternative hypothesis: true difference in mean is not equal to 0
95 percent confidence interval:
0.486850 1.598682
sample estimates:
difference in mean
1.042766
Inferencia con variables cuantitativas: prueba-t (t-test)

En svyttest(), proporcionamos la fórmula que es igual a DaysPhysHlthBad


tilde SmokeNow. También debemos proporcionar el diseño.
La salida contiene el estadístico de prueba, denotado por t = 3,82, pero ¿es
esa una discrepancia lo suficientemente grande?
Recuerde que el valor p ayuda con esa pregunta, aquí p= 0,00058. El valor p
nos dice que la probabilidad de obtener resultados tan extremos si el promedio
de días de mala salud es el mismo para fumadores y no fumadores es muy
pequeña.
Por lo tanto, tenemos evidencia de que el número promedio mensual
de días de mala salud es diferente entre el grupo de fumadores y no
fumadores.
Modelamiento de variables cuantitativas: filtración
Ahora nos centraremos en describir cómo se relacionan dos variables
cuantitativas. Siguiendo con los datos de NHANES, veamos la relación entre
la edad en meses y la circunferencia de la cabeza en centímetros.
Dado que la circunferencia de la cabeza solo se midió en bebés de 6 meses o
menos, primero filtramos los datos para incluir solo esas filas.

bebes <- filter(NHANESraw, AgeMonths <= 6) %>%


select(AgeMonths, HeadCirc)
bebes

# A tibble: 484 x 2
AgeMonths HeadCirc
<int> <dbl>
1 3 42.7
2 4 42.8
3 2 38.8
4 0 36
5 5 42.7
Modelamiento de variables cuantitativas: visualización
El gráfico habitual para visualizar la relación entre dos variables cuantitativas
es el diagrama de dispersión. Aquí asignamos AgeMonths a x y HeadCirc a
y. Vemos que a medida que aumenta la edad, el tamaño de la cabeza
también aumenta y de forma bastante lineal.
ggplot(data = bebes,
mapping = aes(x = AgeMonths, y = HeadCirc)) +
geom_point()

45
HeadCirc

40

35

0 2 4 6
AgeMonths
Modelamiento de variables cuantitativas: visualización
Un problema es que, dado que la edad está en meses, el apilamiento es un
problema en eje x para estos datos, solo se especifica el ancho y no el alto.
Entonces los puntos solo se moverán un poco hacia la izquierda o hacia la
derecha, no hacia arriba o hacia abajo.
ggplot(data = bebes,
mapping = aes(x = AgeMonths, y = HeadCirc)) +
geom_jitter(width = 0.3, height = 0)

45
HeadCirc

40

35

0 2 4 6
AgeMonths
Modelamiento de variables cuantitativas: visualización
Sin embargo, el principal problema de nuestro diagrama de dispersión es que
no incorpora el diseño muestral. Agreguemos la variable de peso de la
encuesta, WTMEC4YR, a nuestro conjunto de datos.
Esto nos dice que el primer bebé representa 12.915 bebés mientras que el
tercero sólo representa 2.359. Queremos tener en cuenta estas diferencias de
peso muestral en nuestro diagrama de dispersión.

bebes <- filter(NHANESraw, AgeMonths <= 6) %>%


select(AgeMonths, HeadCirc, WTMEC4YR)
bebes

# A tibble: 484 x 3
AgeMonths HeadCirc WTMEC4YR
<int> <dbl> <dbl>
1 3 42.7 12915.
2 4 42.8 12791.
3 2 38.8 2359.
4 0 36 4306.
Modelamiento de variables cuantitativas: visualización
Una forma de hacerlo es asignando los pesos a la estética del tamaño.
Entonces, el tamaño de las burbujas es proporcional al peso, donde una
burbuja más grande representa un peso de encuesta mayor. La última capa
especifica que no quiero una leyenda. Esto se llama diagrama de burbujas.
ggplot(data = bebes,
mapping = aes(x=AgeMonths, y=HeadCirc, size=WTMEC4YR)) +
geom_jitter(width = 0.3, height = 0) + guides(size = "none")

45
HeadCirc

40

35

0 2 4 6
AgeMonths
Modelamiento de variables cuantitativas: visualizar tendencias
Volviendo al diagrama de dispersión de la edad versus circunferencia de la
cabeza, donde hay una clara tendencia positiva entre estas variables. Sin
embargo, ¿dónde se encuentra exactamente la línea de mejor ajuste?
Agreguemos eso a la trama.
ggplot(data = bebes,
mapping = aes(x = AgeMonths, y = HeadCirc, alpha = WTMEC4YR)) +
geom_jitter(width = 0.3, height = 0) + guides(alpha = "none") +
geom_smooth(method = "lm", se = FALSE,
mapping = aes(weight = WTMEC4YR))

45
HeadCirc

40

35

0 2 4 6
AgeMonths
Modelamiento de variables cuantitativas: visualizar tendencias

Podemos agregar la línea de mejor ajuste agregando una capa más a nuestro
ggplot(), geom_smooth. Luego especificamos que el método es igual a “lm”
para el modelo lineal y se = FALSO, para no asignar el error estándar. La
última pieza es agregar un nuevo argumento estético que no necesitábamos
para nuestro geom_jitter: weight = WTMEC4YR, el peso es igual a los
pesos de la encuesta.

Recuerde que la línea de mejor ajuste, también llamada línea de regresión, es


la que minimiza la distancia al cuadrado entre los puntos y la línea. Para los
datos de la encuesta, queremos ponderar esa distancia según la ponderación
de la encuesta. Esto significa que cuanto mayor sea el peso de la encuesta,
más importante será que se encuentre cerca de la línea de mejor ajuste. ¿Por
qué tiene eso sentido? Porque los puntos con un alto peso en la encuesta
representan a más personas en la población.
Modelamiento de variables cuantitativas: visualizar tendencias
Bien, ahora que podemos agregar una línea de tendencia, incorporemos un
predictor categórico a la selección. ¿Cómo se relacionan la edad y el
tamaño de la cabeza según el género?. Para agregar género a nuestra
gráfica, primero debemos agregarlo al conjunto de datos de bebés.

bebes <- filter(NHANESraw, AgeMonths <= 6) %>%


select(AgeMonths, HeadCirc, WTMEC4YR, Gender)
bebes

# A tibble: 484 x 4
AgeMonths HeadCirc WTMEC4YR Gender
<int> <dbl> <dbl> <fct>
1 3 42.7 12915. male
2 4 42.8 12791. female
3 2 38.8 2359. female
4 0 36 4306. female
5 5 42.7 2922. female
6 2 41.9 5561. male
Modelamiento de variables cuantitativas: visualizar tendencias
Y ahora para incorporar el género a nuestra trama, lo asignaremos al color.
Observe que ahora tenemos dos líneas de tendencia, una para cada género.
ggplot(data = bebes,
mapping = aes(x=AgeMonths, y=HeadCirc, alpha=WTMEC4YR,
color=Gender)) +
geom_jitter(width=0.3, height=0) + guides(alpha="none") +
geom_smooth(method = "lm", se = FALSE,
mapping = aes(weight = WTMEC4YR))

45

Gender
HeadCirc

female
40
male

35

0 2 4 6
Modelamiento de variables cuantitativas: regresión lineal
Ahora que agregamos la línea de regresión a nuestro diagrama de dispersión,
que resalta la relación lineal positiva entre la edad y el tamaño de la cabeza.
En consecuancia podemos usar esta línea para predecir el tamaño de la cabeza
de un bebé determinado.
Por ejemplo, ¿cuál sería el tamaño de la cabeza de un bebé de 4 meses?

45
HeadCirc

40

35

0 2 4 6
AgeMonths
Modelamiento de variables cuantitativas: regresión lineal
Según nuestro gráfico, predeciríamos que un bebé de 4 meses tendría un
tamaño de cabeza de alrededor de 42,5 centímetros. Si bien estas líneas de
referencia naranjas fueron útiles para hacer nuestra predicción, sería más fácil
usar la ecuación de regresión directamente. Entonces, ¿cómo es la ecuación
de regresión?
Modelamiento de variables cuantitativas: ecuación de la
regresión
La ecuación de regresión lineal es una línea recta, donde a es la intersección
con el eje Y, y b es la pendiente, y 𝑦 ̂ es el valor de predicción para 𝑦 basado
en un valor dado de 𝑥.
Pero, ¿cómo sabemos a qué equivalen a y b? Como mencionamos antes, se
eligen de modo que la distancia al cuadrado entre 𝑦 e 𝑦,̂ multiplicado por el
peso de la encuesta, sea pequeña.
▶ La ecuación de la regresión está dado por:

𝑦 ̂ = 𝑎 + 𝑏𝑥

▶ Para encontrar a y b se minimiza:

𝑛
∑ 𝑤𝑖 (𝑦𝑖 − 𝑦𝑖̂ )
𝑖=1
Modelamiento de variables cuantitativas: ajustando la
regresión

Para encontrar los valores de a y b, se realiza a través de la función svyglm().


glm significa modelo lineal generalizado. Aquí especificamos la formula “y ~
x” e indicamos el diseño. A través del comando summary() se visualiza los
resultados.
mod <- svyglm(HeadCirc ~ AgeMonths, design = NHANES_design)
summary(mod)
Modelamiento de variables cuantitativas: ajustando la
regresión

Call:
svyglm(formula = HeadCirc ~ AgeMonths, design = NHANES_design)

Survey design:
svydesign(data = NHANESraw, strata = ~SDMVSTRA, id = ~SDMVPSU,
nest = TRUE, weights = ~WTMEC4YR)

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 38.13757 0.20043 190.28 <2e-16 ***
AgeMonths 1.07081 0.05927 18.07 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for gaussian family taken to be 0.9008025)


Modelamiento de variables cuantitativas: ajustando la
regresión

En concreto, en la tabla de coeficientes vemos que a = 38,1 y b = 1,07.


Interpretación: se espera que un recién nacido tenga una circunferencia de la
cabeza de alrededor de 38,1 centímetros y por cada mes adicional, se espera
que la circunferencia de la cabeza aumente en aproximadamente 1,07
centímetros.
La tabla también muestra los errores estándar asociados con las estimaciones
de los coeficientes. Las dos últimas columnas proporcionan estadísticas de
prueba y valores de p-value para las pruebas de hipótesis.
¿Pero qué hipótesis se están probando realmente? Para responder a esta
pregunta, debemos volver a la definición de recta de regresión.
Modelamiento de variables cuantitativas: inferencia con
regresión
La línea de regresión, es en realidad estimada según la muestra.

𝑦 ̂ = 𝑎 + 𝑏𝑥

Estamos estimando la verdadera relación lineal entre 𝑥 y el valor promedio (o


esperado) de 𝑦, denotado por 𝐸(𝑦). Por lo tanto, 𝑎 estima la intersección
verdadera, denotada por A, y b estima la pendiente verdadera, denotada por B.
Además, asumimos que la desviación estándar de 𝑦 es igual a 𝑠𝑑(𝑦) = 𝜎. Esta
es una medida de cuánto variarán los puntos alrededor de la línea de regresión.

𝐸(𝑦) = 𝐴 + 𝐵𝑥

Una pregunta inferencial común que podríamos hacer es ¿están nuestras dos
variables relacionadas linealmente?. Esto es lo mismo que preguntar si 𝐵
es distinto de [Link] esa pregunta en hipótesis nulas y alternativas.
Modelamiento de variables cuantitativas: inferencia con
regresión
Hipótesis nula: La circunferencia de la cabeza no está relacionada
linealmente con la edad, es decir (𝐵 = 0).
Hipótesis alternativa: La circunferencia de la cabeza SI está relacionada
linealmente con la edad, es decir (𝐵 ≠ 0).
mod <- svyglm(HeadCirc ~ AgeMonths, design = NHANES_design)
summary(mod)

𝑏
El estadístico de prueba: 𝑡 = 𝑆𝐸
Modelamiento de variables cuantitativas: inferencia con
regresión

¿Y cómo se relaciona esto con el resumen de nuestro modelo? Bueno, el


estadístico de prueba (t value) y el valor p de la segunda fila corresponden
exactamente a estas hipótesis.
El estadístico de prueba, que es la pendiente estimada sobre su error estándar,
sigue nuevamente una distribución t.
Aquí, con un estadístico de prueba de 𝑡 = 18, 1 y un valor de 𝑝 esencialmente
cero, tenemos evidencia para indicar que existe una tendencia lineal entre la
edad y el tamaño de la cabeza.
Modelamiento de variables cuantitativas: regresión
multivariante
Ahora veamos un modelo de regresión lineal múltiple. Esto es cuando
incluimos más de una variable predictora y tal vez algunos de los predictores
puedan ser variables categóricas.
Por ejemplo, ¿cómo obtenemos la línea de regresión asociada con las curvas
en este gráfico?

45

Gender
HeadCirc

female
40
male

35

0 2 4 6
AgeMonths
Modelamiento de variables cuantitativas: regresión
multivariante

En este caso, queremos construir un modelo de regresión lineal múltiple.


Modificamos nuestra ecuación anterior para reflejar el hecho de que ahora
tenemos no una sino p variables predictoras.

𝐸(𝑦) = 𝐵0 + 𝐵1 𝑥1 + 𝐵2 𝑥2 + ... + 𝐵𝑝 𝑥𝑝

En el caso de los datos de bebés, tenemos dos predictores, AgeMonths y


Gender.

𝐸(𝑦) = 𝐵0 + 𝐵1 𝑥1 + 𝐵2 𝑥2
Modelamiento de variables cuantitativas: regresión
multivariante

Pero no podemos agregar Género directamente a la ecuación porque no es


numérico. Por lo tanto, necesitamos transformar la variable para que sea igual
a 1 para hombres y 0 para mujeres.
head(bebes,6)

# A tibble: 6 x 4
AgeMonths HeadCirc WTMEC4YR Gender
<int> <dbl> <dbl> <fct>
1 3 42.7 12915. male
2 4 42.8 12791. female
3 2 38.8 2359. female
4 0 36 4306. female
5 5 42.7 2922. female
6 2 41.9 5561. male
Modelamiento de variables cuantitativas: regresión
multivariante

Aquí usando la función case_when() donde en el lado izquierdo de la tilde


especificas el caso y en el lado derecho es igual al valor de la nueva variable
Gender2.
bebes <- mutate(bebes,
Gender2 = case_when(Gender == "male" ~ 1,
Gender == "female" ~ 0))
head(bebes,4)

# A tibble: 4 x 5
AgeMonths HeadCirc WTMEC4YR Gender Gender2
<int> <dbl> <dbl> <fct> <dbl>
1 3 42.7 12915. male 1
2 4 42.8 12791. female 0
3 2 38.8 2359. female 0
4 0 36 4306. female 0
Modelamiento de variables cuantitativas: regresión
multivariante
Ahora nuestra ecuación de regresión tiene dos 𝑥: 𝑥1 para la edad y 𝑥2 para el
género. Para los hombres, 𝑥2 = 1, por lo que su intercepto es 𝐵0 + 𝐵2 con
una pendiente de 𝐵1 . Y para las mujeres, 𝑥2 = 0, por lo que su intercepto es
sólo 𝐵0 .

𝐸(𝑦) = 𝐵0 + 𝐵1 𝑥1 + 𝐵2 𝑥2

La ecuación para hombres será:

𝐸(𝑦) = (𝐵0 + 𝐵2 ) + 𝐵1 𝑥1

La ecuación para mujeres será:

𝐸(𝑦) = 𝐵0 + 𝐵1 𝑥1
Modelamiento de variables cuantitativas: regresión
multivariante

Este modelo se puede ajustar usando la función svyglm() donde agregamos el


nuevo predictor, Género, a la fórmula. ¡Observe que puedo proporcionar la
variable de factor y R la convierte a unos y ceros en segundo plano! Y ahora
la tabla de coeficientes de la ejecución de summary() contiene una nueva fila
para Gendermale y proporciona estimaciones de 𝐵0 , 𝐵1 y 𝐵2 .

mod <- svyglm(HeadCirc ~ AgeMonths + Gender,


design = NHANES_design)
Modelamiento de variables cuantitativas: regresión
multivariante

Call:
svyglm(formula = HeadCirc ~ AgeMonths + Gender, design = NHANES_design)

Survey design:
svydesign(data = NHANESraw, strata = ~SDMVSTRA, id = ~SDMVPSU,
nest = TRUE, weights = ~WTMEC4YR)

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 37.48508 0.18320 204.613 < 2e-16 ***
AgeMonths 1.08658 0.05379 20.200 < 2e-16 ***
Gendermale 1.15034 0.16298 7.058 6.3e-08 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for gaussian family taken to be 0.7885399)

Number of Fisher Scoring iterations: 2


Modelamiento de variables cuantitativas: regresión
multivariante

Sin embargo, las pruebas de hipótesis asociadas con la tabla de coeficientes ahora ha
cambiado. Ahora las hipótesis preguntan si esa variable debería incluirse o no en el
modelo que contiene los otros predictores.
Hipótesis nula: dado la edad en el modelo, el género no debe incluirse (𝐵2 = 0).
Hipótesis altervativa: dado la edad en el modelo, el género debe incluirse (𝐵2 ≠ 0).
𝑏2
Estadístico de prueba: 𝑡 = 𝑆𝐸
Modelamiento de variables cuantitativas: regresión
multivariante

Para AgeMonths, queremos saber si se debe agregar a un modelo que contenga


Género. Ambas pruebas tienen un valor p pequeño, lo que indica que ambas
variables proporcionan información útil al modelo. Como antes, la prueba de
hipótesis asociada con la fila de intersección no es realmente de interés.
Hipótesis nula: dado el género en el modelo, la edad no debe incluirse (𝐵1 = 0).
Hipótesis altervativa: dado el género en el modelo, la edad debe incluirse (𝐵1 ≠ 0).
𝑏1
Estadístico de prueba: 𝑡 = 𝑆𝐸
Modelamiento de variables cuantitativas: regresión
multivariante
Ajustamos un modelo de regresión lineal múltiple que obligó a que la
pendiente para ambos sexos fuera igual a B1. Eso parece razonable para este
modelo según nuestro diagrama de dispersión. Pero ¿y si quisiéramos que las
pistas fueran diferentes? ¿Cómo afecta eso a la forma del modelo de
regresión?

También podría gustarte