This week, we will look at the 2018 National Survey of Children’s Health. https://www.census.gov/data/datasets/2018/demo/nsch/nsch2018.html

Load in Our MVP Packages

suppressPackageStartupMessages(library(tidyverse))
library(lme4)
Loading required package: Matrix

Attaching package: ‘Matrix’

The following objects are masked from ‘package:tidyr’:

    expand, pack, unpack
library(Hmisc)
Loading required package: lattice
Loading required package: survival
Loading required package: Formula

Attaching package: ‘Hmisc’

The following objects are masked from ‘package:dplyr’:

    src, summarize

The following objects are masked from ‘package:base’:

    format.pval, units

Part 1: Loading in the Data, and then Recoding Variables

Load in the Data


nsch <- haven::read_dta("nsch_2018_topical.dta")

glimpse(nsch)
Rows: 30,530
Columns: 442
$ fipsst             <dbl+lbl> 51, 48, 48, 21, 13, 27, 39, 28, 31, 21, 28,…
$ stratum            <chr> "1", "1", "1", "2A", "1", "1", "2A", "1", "1", …
$ hhid               <dbl+lbl> 18000001, 18000005, 18000008, 18000010, 180…
$ formtype           <chr> "T1", "T3", "T3", "T1", "T3", "T2", "T3", "T3",…
$ totkids_r          <dbl+lbl> 3, 2, 1, 2, 2, 2, 1, 2, 1, 1, 4, 3, 3, 1, 2…
$ tenure             <dbl+lbl> 1, 1, 3, 1, 2, 1, 3, 1, 2, 1, 3, 3, 2, 1, 1…
$ hhlanguage         <dbl+lbl> 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
$ sc_age_years       <dbl+lbl>  3, 15, 16,  2, 17,  9, 17, 13,  1,  9,  6,…
$ sc_sex             <dbl+lbl> 2, 2, 1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 2, 2, 1…
$ k2q35a_1_years     <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ momage             <dbl+lbl> 36, 38, 34, 31, 29, 28, 30, 30, 29, 41, 23,…
$ k6q41r_still       <dbl+lbl>     2, NA(n), NA(n),     2, NA(n), NA(n), N…
$ k6q42r_never       <dbl+lbl>     2, NA(n), NA(n),     1, NA(n), NA(n), N…
$ k6q43r_never       <dbl+lbl>     2, NA(n), NA(n),     2, NA(n), NA(n), N…
$ k6q13a             <dbl+lbl> NA(l), NA(n), NA(n), NA(l), NA(n), NA(n), N…
$ k6q13b             <dbl+lbl> NA(l), NA(n), NA(n), NA(l), NA(n), NA(n), N…
$ k6q14a             <dbl+lbl> NA(l), NA(n), NA(n),     1, NA(n), NA(n), N…
$ k6q14b             <dbl+lbl> NA(l), NA(n), NA(n),     1, NA(n), NA(n), N…
$ k4q32x01           <dbl+lbl>     2,     2, NA(l),     1,     1,     2,  …
$ k4q32x02           <dbl+lbl>     1,     1, NA(l),     2,     2,     1,  …
$ k4q32x03           <dbl+lbl>     2,     2, NA(l),     2,     2,     2,  …
$ k4q32x04           <dbl+lbl>     1,     2, NA(l),     2,     2,     1,  …
$ k4q32x05           <dbl+lbl>     2,     2, NA(l),     2,     2,     2,  …
$ dentalserv1        <dbl+lbl> NA(l),     1,     1,     1,     1,     1,  …
$ dentalserv2        <dbl+lbl> NA(l),     1,     1,     2,     1,     1,  …
$ dentalserv3        <dbl+lbl> NA(l),     2,     1,     1,     2,     1,  …
$ dentalserv4        <dbl+lbl> NA(l),     1,     1,     2,     2,     1,  …
$ dentalserv5        <dbl+lbl> NA(l),     2,     1,     2,     2,     2,  …
$ dentalserv6        <dbl+lbl> NA(l),     2,     2,     2,     2,     2,  …
$ dentalserv7        <dbl+lbl> NA(l),     2,     2,     2,     2,     2,  …
$ k4q28x01           <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ k4q28x02           <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ k4q28x03           <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ k4q28x_ear         <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ k4q28x04           <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ k4q28x05           <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ sesplanyr          <dbl+lbl> NA(l), NA(l), NA(l), NA(l),     3, NA(l), N…
$ sesplanmo          <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(d), NA(l), N…
$ k4q37              <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(m), NA(l), N…
$ spcservmo          <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(m), NA(l), N…
$ liveusa_yr         <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ liveusa_mo         <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ k11q43r            <dbl+lbl>     2,     3,     6,     0,     2,     1,  …
$ a1_age             <dbl+lbl> 34, 53, 44, 33, 46, 37, 47, 44, 31, 50, 29,…
$ a1_liveusa         <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ a2_age             <dbl+lbl> NA(l),    75,    44,    32,    54,    37, N…
$ a2_liveusa         <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ hhcount            <dbl+lbl> 5, 4, 4, 4, 4, 4, 2, 3, 3, 4, 6, 6, 5, 3, 4…
$ famcount           <dbl+lbl> 5, 4, 3, 4, 4, 4, 2, 3, 3, 4, 6, 6, 5, 3, 4…
$ breathing          <dbl+lbl> 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
$ swallowing         <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
$ stomach            <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2…
$ physicalpain       <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
$ hands              <dbl+lbl>     2, NA(n), NA(n),     2, NA(n), NA(n), N…
$ coordination       <dbl+lbl>     2, NA(n), NA(n),     2, NA(n), NA(n), N…
$ toothaches         <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
$ gumbleed           <dbl+lbl>     2,     2,     2,     2,     2,     2,  …
$ cavities           <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
$ memorycond         <dbl+lbl> NA(n),     2,     2, NA(n),     2,     2,  …
$ walkstairs         <dbl+lbl> NA(n),     2,     2, NA(n),     2,     2,  …
$ dressing           <dbl+lbl> NA(n),     2,     2, NA(n),     2,     2,  …
$ errandalone        <dbl+lbl> NA(n),     2,     2, NA(n),     1, NA(n),  …
$ k2q43b             <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
$ blindness          <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
$ allergies          <dbl+lbl> 2, 1, 1, 2, 2, 1, 2, 2, 2, 2, 2, 1, 2, 2, 2…
$ allergies_curr     <dbl+lbl> NA(l),     1,     1, NA(l), NA(l),     1, N…
$ arthritis          <dbl+lbl>     2,     2,     2,     2,     2,     2,  …
$ arthritis_curr     <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ k2q40a             <dbl+lbl> 1, 1, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2…
$ k2q40b             <dbl+lbl>     2,     1, NA(l), NA(l), NA(l),     2, N…
$ k2q46a             <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
$ k2q46b             <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ k2q61a             <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
$ k2q61b             <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ k2q41a             <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
$ k2q41b             <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ k2q42a             <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
$ k2q42b             <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ heart              <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
$ heart_curr         <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ headache           <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
$ headache_curr      <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ k2q38a             <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
$ k2q38b             <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ k2q33a             <dbl+lbl> 2, 2, 2, 2, 1, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2…
$ k2q33b             <dbl+lbl> NA(l), NA(l), NA(l), NA(l),     1, NA(l), N…
$ k2q32a             <dbl+lbl> 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
$ k2q32b             <dbl+lbl> NA(l),     2, NA(l), NA(l), NA(l), NA(l), N…
$ downsyn            <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
$ blood              <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
$ blood_screen       <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ cystfib            <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
$ cystfib_screen     <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ genetic            <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
$ genetic_screen     <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ subabuse           <dbl+lbl> NA(n),     2,     2, NA(n),     2,     2,  …
$ subabuse_curr      <dbl+lbl> NA(n), NA(l), NA(l), NA(n), NA(l), NA(l), N…
$ k2q34a             <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
$ k2q34b             <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ k2q36a             <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
$ k2q36b             <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ k2q60a             <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
$ k2q60b             <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ k2q37a             <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
$ k2q37b             <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ k2q30a             <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
$ k2q30b             <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ anyother           <dbl+lbl> 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
$ anyother_curr      <dbl+lbl> NA(l), NA(l), NA(l), NA(l),     1, NA(l), N…
$ k2q35a             <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
$ k2q35b             <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ autismmed          <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ autismtreat        <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ k2q31a             <dbl+lbl> 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
$ k2q31b             <dbl+lbl> NA(l), NA(l), NA(l), NA(l),     1, NA(l), N…
$ k2q31d             <dbl+lbl> NA(l), NA(l), NA(l), NA(l),     1, NA(l), N…
$ addtreat           <dbl+lbl> NA(l), NA(l), NA(l), NA(l),     1, NA(l), N…
$ k2q05              <dbl+lbl> 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 1, 2, 1, 2, 1…
$ k6q40              <dbl+lbl>     1, NA(n), NA(n),     1, NA(n), NA(n), N…
$ s4q01              <dbl+lbl> 1, 2, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1…
$ docprivate         <dbl+lbl> NA(n), NA(l), NA(l), NA(n),     1, NA(n), N…
$ overweight         <dbl+lbl>     2,     2,     2,     2,     2,     2,  …
$ k6q10              <dbl+lbl>     2, NA(n), NA(n),     2, NA(n), NA(n), N…
$ k6q12              <dbl+lbl>     2, NA(n), NA(n),     1, NA(n), NA(n), N…
$ k4q01              <dbl+lbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 2…
$ usualgo            <dbl+lbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
$ usualsick          <dbl+lbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1…
$ k4q31_r            <dbl+lbl> 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 2, 2…
$ k4q23              <dbl+lbl> 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
$ althealth          <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2…
$ k4q27              <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
$ notelig            <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ available          <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ appointment        <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ transportcc        <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ notopen            <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ issuecost          <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ hospitalstay       <dbl+lbl> 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
$ k6q15              <dbl+lbl> 2, 2, 2, 2, 1, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2…
$ sescurrsvc         <dbl+lbl> NA(l), NA(l), NA(l), NA(l),     1, NA(l), N…
$ k4q36              <dbl+lbl> 2, 2, 2, 2, 1, 2, 2, 1, 2, 1, 2, 2, 2, 2, 2…
$ k4q38              <dbl+lbl> NA(l), NA(l), NA(l), NA(l),     2, NA(l), N…
$ k5q10              <dbl+lbl> 2, 2, 2, 2, 2, 1, 2, 2, 2, 1, 1, 2, 2, 2, 2…
$ decisions          <dbl+lbl>     2, NA(l), NA(l),     1,     2,     2, N…
$ k5q21              <dbl+lbl> NA(l), NA(l), NA(l),     2,     2,     2, N…
$ treatchild         <dbl+lbl> NA(n),     1,     2, NA(n),     2, NA(n),  …
$ treatadult         <dbl+lbl> NA(n),     2, NA(l), NA(n), NA(l), NA(n), N…
$ medhistory         <dbl+lbl> NA(n),     1,     2, NA(n),     1, NA(n),  …
$ writeplan          <dbl+lbl> NA(n),     2,     2, NA(n),     1, NA(n),  …
$ receivecopy        <dbl+lbl> NA(n), NA(l), NA(l), NA(n),     1, NA(n), N…
$ healthknow         <dbl+lbl> NA(n),     2,     1, NA(n),     1, NA(n),  …
$ keepinsadult       <dbl+lbl> NA(n),     2, NA(l), NA(n), NA(l), NA(n), N…
$ k12q01_a           <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ k12q01_b           <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ k12q01_c           <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ k12q01_d           <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ k12q01_e           <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ k12q01_f           <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ k12q01_g           <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ currcov            <dbl+lbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
$ k12q03             <dbl+lbl> 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1…
$ k12q04             <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2…
$ k12q12             <dbl+lbl> 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2…
$ tricare            <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
$ k11q03r            <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
$ hccovoth           <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
$ k3q25              <dbl+lbl>     2, NA(l),     2,     2,     2,     2, N…
$ stopwork           <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2…
$ cuthours           <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
$ avoidchg           <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
$ oneword            <dbl+lbl>     1, NA(n), NA(n),     1, NA(n), NA(n), N…
$ twowords           <dbl+lbl>     1, NA(n), NA(n),     1, NA(n), NA(n), N…
$ threewords         <dbl+lbl>     1, NA(n), NA(n),     1, NA(n), NA(n), N…
$ askquestion        <dbl+lbl>     1, NA(n), NA(n),     1, NA(n), NA(n), N…
$ askquestion2       <dbl+lbl>     1, NA(n), NA(n),     1, NA(n), NA(n), N…
$ tellstory          <dbl+lbl>     1, NA(n), NA(n),     2, NA(n), NA(n), N…
$ understand         <dbl+lbl>     1, NA(n), NA(n),     1, NA(n), NA(n), N…
$ directions         <dbl+lbl>     1, NA(n), NA(n),     1, NA(n), NA(n), N…
$ point              <dbl+lbl>     1, NA(n), NA(n),     1, NA(n), NA(n), N…
$ directions2        <dbl+lbl>     1, NA(n), NA(n),     1, NA(n), NA(n), N…
$ understand2        <dbl+lbl>     1, NA(n), NA(n),     1, NA(n), NA(n), N…
$ rhymeword          <dbl+lbl>     2, NA(n), NA(n), NA(l), NA(n), NA(n), N…
$ repeated           <dbl+lbl> NA(n),     2,     2, NA(n),     2,     2,  …
$ k7q30              <dbl+lbl> NA(n),     1,     1, NA(n),     2,     1,  …
$ k7q31              <dbl+lbl> NA(n),     1,     1, NA(n),     1,     1,  …
$ k7q32              <dbl+lbl> NA(n),     1,     1, NA(n),     1,     1,  …
$ k7q37              <dbl+lbl> NA(n),     1,     2, NA(n),     1,     1,  …
$ k7q38              <dbl+lbl> NA(n),     1,     2, NA(n),     2,     2,  …
$ bornusa            <dbl+lbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
$ k8q35              <dbl+lbl> 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
$ emosupspo          <dbl+lbl>     1, NA(l),     1,     1,     1,     1,  …
$ emosupfam          <dbl+lbl>     1, NA(l),     1,     1,     1,     2,  …
$ emosuphcp          <dbl+lbl>     1, NA(l),     2,     2,     1,     2,  …
$ emosupwor          <dbl+lbl>     1, NA(l),     2,     2,     1,     2,  …
$ emosupadv          <dbl+lbl>     1, NA(l),     2,     2,     2,     2,  …
$ emosuppeer         <dbl+lbl>     1, NA(l),     2,     2,     2,     2,  …
$ emosupmhp          <dbl+lbl>     1, NA(l),     2,     2,     2,     2,  …
$ emosupoth          <dbl+lbl>     2, NA(l),     2,     2,     2,     2,  …
$ k6q20              <dbl+lbl>     2, NA(n), NA(n),     1, NA(n), NA(n), N…
$ k6q27              <dbl+lbl>     2, NA(n), NA(n),     2, NA(n), NA(n), N…
$ k9q40              <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2…
$ k9q41              <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ mold               <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
$ k11q60             <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
$ k11q61             <dbl+lbl> 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2…
$ k11q62             <dbl+lbl> 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2…
$ s9q34              <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
$ k10q11             <dbl+lbl> 1, 2, 1, 2, 2, 1, 1, 1, 1, 1, 2, 2, 1, 2, 1…
$ k10q12             <dbl+lbl> 2, 2, 1, 1, 2, 1, 1, 2, 1, 1, 1, 2, 2, 2, 1…
$ k10q13             <dbl+lbl> 2, 2, 1, 2, 2, 2, 1, 2, 2, 1, 2, 2, 2, 2, 2…
$ k10q14             <dbl+lbl>     1,     2,     2,     1,     2,     1,  …
$ k10q20             <dbl+lbl> 2, 1, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
$ k10q22             <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2…
$ k10q23             <dbl+lbl>     2,     2,     2,     2,     2,     2,  …
$ k9q96              <dbl+lbl> NA(n),     1,     1, NA(n),     1,     1,  …
$ ace3               <dbl+lbl> 2, 1, 1, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2…
$ ace4               <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
$ ace5               <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2…
$ ace6               <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
$ ace7               <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
$ ace8               <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2…
$ ace9               <dbl+lbl>     2,     2,     2,     2,     2,     2,  …
$ ace10              <dbl+lbl> 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
$ a1_k11q50_r        <dbl+lbl> 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 2, 1, 1, 1…
$ a1_deplstat        <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ a2_k11q50_r        <dbl+lbl> NA(l),     2,     1,     1,     1,     1, N…
$ a2_deplstat        <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ k2q01              <dbl+lbl>     1,     3,     1,     1,     1,     1,  …
$ k2q01_d            <dbl+lbl>     1,     2,     1,     1,     1,     1,  …
$ k6q70_r            <dbl+lbl>     1, NA(n), NA(n),     1, NA(n), NA(n), N…
$ k6q73_r            <dbl+lbl>     1, NA(n), NA(n),     1, NA(n), NA(n), N…
$ k6q71_r            <dbl+lbl>     1,     1,     1,     1,     1,     3,  …
$ k6q72_r            <dbl+lbl>     1, NA(n), NA(n),     1, NA(n), NA(n), N…
$ k7q84_r            <dbl+lbl> NA(n),     1,     2, NA(n),     2,     2,  …
$ k7q85_r            <dbl+lbl> NA(n),     2,     1, NA(n),     1,     2,  …
$ k7q82_r            <dbl+lbl> NA(n),     1,     2, NA(n),     2,     1,  …
$ k7q83_r            <dbl+lbl> NA(n),     1,     2, NA(n),     1,     1,  …
$ k7q70_r            <dbl+lbl> NA(n),     3,     4, NA(n),     4,     4,  …
$ k5q40              <dbl+lbl>     1, NA(l), NA(l),     1,     1,     1, N…
$ k5q41              <dbl+lbl>     1, NA(l), NA(l),     1,     1,     1, N…
$ k5q42              <dbl+lbl>     1, NA(l), NA(l),     1,     1,     1, N…
$ k5q43              <dbl+lbl>     1, NA(l), NA(l),     1,     1,     1, N…
$ k5q44              <dbl+lbl>     1, NA(l), NA(l),     1,     1,     1, N…
$ discussopt         <dbl+lbl> NA(l), NA(l), NA(l),     1, NA(l), NA(l), N…
$ raiseconc          <dbl+lbl> NA(l), NA(l), NA(l),     1, NA(l), NA(l), N…
$ bestforchild       <dbl+lbl> NA(l), NA(l), NA(l),     1, NA(l), NA(l), N…
$ k3q20              <dbl+lbl> 2, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1…
$ k3q22              <dbl+lbl> 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1…
$ k3q21b             <dbl+lbl>     2, NA(l),     2,     2,     3,     2, N…
$ bullied_r          <dbl+lbl> NA(n),     1,     1, NA(n),     1,     1,  …
$ bully              <dbl+lbl> NA(n),     1,     1, NA(n),     1,     1,  …
$ allergies_desc     <dbl+lbl> NA(l),     1,     1, NA(l), NA(l),     1, N…
$ arthritis_desc     <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ k2q40c             <dbl+lbl> NA(l),     2, NA(l), NA(l), NA(l), NA(l), N…
$ k2q46c             <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ cerpals_desc       <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ k2q41c             <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ k2q42c             <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ heart_desc         <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ headache_desc      <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ k2q38c             <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ k2q33c             <dbl+lbl> NA(l), NA(l), NA(l), NA(l),     2, NA(l), N…
$ k2q32c             <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ blood_desc         <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ genetic_desc       <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ k2q34c             <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ k2q36c             <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ k2q60c             <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ k2q37c             <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ k2q30c             <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ anyother_desc      <dbl+lbl> NA(l), NA(l), NA(l), NA(l),     2, NA(l), N…
$ k2q35c             <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ k2q31c             <dbl+lbl> NA(l), NA(l), NA(l), NA(l),     1, NA(l), N…
$ recogbegin         <dbl+lbl>     2, NA(n), NA(n), NA(l), NA(n), NA(n), N…
$ clearexp           <dbl+lbl>     1, NA(n), NA(n), NA(l), NA(n), NA(n), N…
$ writename          <dbl+lbl>     2, NA(n), NA(n), NA(l), NA(n), NA(n), N…
$ recshapes          <dbl+lbl>     2, NA(n), NA(n), NA(l), NA(n), NA(n), N…
$ distracted         <dbl+lbl>     3, NA(n), NA(n), NA(l), NA(n), NA(n), N…
$ worktofin          <dbl+lbl>     2, NA(n), NA(n), NA(l), NA(n), NA(n), N…
$ simpleinst         <dbl+lbl>     1, NA(n), NA(n), NA(l), NA(n), NA(n), N…
$ playwell           <dbl+lbl>     2, NA(n), NA(n), NA(l), NA(n), NA(n), N…
$ newactivity        <dbl+lbl>     3, NA(n), NA(n), NA(l), NA(n), NA(n), N…
$ hurtsad            <dbl+lbl>     1, NA(n), NA(n), NA(l), NA(n), NA(n), N…
$ calmdown           <dbl+lbl>     2, NA(n), NA(n), NA(l), NA(n), NA(n), N…
$ temper             <dbl+lbl>     3, NA(n), NA(n), NA(l), NA(n), NA(n), N…
$ sitstill           <dbl+lbl>     2, NA(n), NA(n), NA(l), NA(n), NA(n), N…
$ recogabc           <dbl+lbl>     1, NA(n), NA(n), NA(l), NA(n), NA(n), N…
$ talkabout          <dbl+lbl> 1, 3, 2, 1, 1, 3, 1, 1, 2, 3, 2, 2, 1, 2, 2…
$ wktosolve          <dbl+lbl> 1, 3, 1, 1, 1, 3, 1, 1, 2, 3, 1, 2, 1, 2, 2…
$ strengths          <dbl+lbl> 1, 2, 2, 1, 1, 4, 1, 1, 2, 3, 2, 2, 1, 1, 2…
$ hopeful            <dbl+lbl> 1, 1, 1, 1, 1, 4, 1, 1, 2, 2, 1, 2, 1, 1, 2…
$ a1_physhealth      <dbl+lbl> 1, 4, 3, 1, 2, 2, 1, 3, 2, 3, 2, 3, 1, 2, 2…
$ a1_menthealth      <dbl+lbl> 2, 3, 2, 1, 1, 2, 1, 3, 2, 3, 3, 2, 1, 2, 2…
$ a2_physhealth      <dbl+lbl> NA(l),     4,     2,     1,     3,     3, N…
$ a2_menthealth      <dbl+lbl> NA(l),     2,     2,     1,     3,     3, N…
$ k10q30             <dbl+lbl> 1, 1, 4, 1, 2, 1, 1, 1, 1, 2, 2, 1, 1, 1, 2…
$ k10q31             <dbl+lbl> 1, 2, 4, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1…
$ k10q40_r           <dbl+lbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
$ goforhelp          <dbl+lbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1…
$ k10q41_r           <dbl+lbl> NA(n),     1,     1, NA(n),     1,     1,  …
$ k8q31              <dbl+lbl> 2, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1…
$ k8q32              <dbl+lbl> 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 2…
$ k8q34              <dbl+lbl> 2, 2, 1, 1, 1, 2, 1, 2, 1, 2, 2, 2, 1, 1, 2…
$ a1_relation        <dbl+lbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
$ a1_sex             <dbl+lbl> 1, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 1…
$ a1_born            <dbl+lbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1…
$ a1_grade           <dbl+lbl> 8, 3, 8, 8, 7, 6, 7, 7, 9, 9, 5, 5, 8, 7, 7…
$ a1_marital         <dbl+lbl> 2, 5, 1, 1, 1, 1, 4, 4, 1, 2, 1, 1, 1, 2, 1…
$ a2_relation        <dbl+lbl> 8, 3, 1, 1, 1, 1, 8, 8, 1, 1, 1, 1, 1, 1, 1…
$ a2_sex             <dbl+lbl> NA(l),     2,     1,     1,     1,     1, N…
$ a2_born            <dbl+lbl> NA(l),     1,     1,     1,     1,     1, N…
$ a2_grade           <dbl+lbl> NA(l),     6,     6,     7,     2,     7, N…
$ a2_marital         <dbl+lbl> NA(l),     6,     4,     1,     1,     1, N…
$ a1_active          <dbl+lbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
$ a2_active          <dbl+lbl> NA(l),     1,     1,     1,     1,     1, N…
$ howmuch            <dbl+lbl> 4, 1, 5, 3, 4, 4, 1, 5, 2, 3, 2, 1, 2, 1, 3…
$ athomehc           <dbl+lbl> 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6…
$ arrangehc          <dbl+lbl> 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6…
$ k7q02r_r           <dbl+lbl> NA(n),     2,     3, NA(n),     1,     1,  …
$ k7q04r_r           <dbl+lbl> NA(n),     1,     1, NA(n),     3,     1,  …
$ physactiv          <dbl+lbl> NA(n),     2,     3, NA(n),     3,     4,  …
$ hoursleep05        <dbl+lbl>     6, NA(n), NA(n),     5, NA(n), NA(n), N…
$ hoursleep          <dbl+lbl> NA(n),     3,     6, NA(n),     4,     6,  …
$ screentime         <dbl+lbl> 3, 5, 5, 3, 2, 3, 3, 4, 1, 4, 2, 3, 1, 1, 3…
$ k6q60_r            <dbl+lbl>     4, NA(n), NA(n),     4, NA(n), NA(n), N…
$ k6q61_r            <dbl+lbl>     4, NA(n), NA(n),     4, NA(n), NA(n), N…
$ k8q11              <dbl+lbl> 3, 4, 2, 3, 3, 4, 3, 2, 4, 2, 4, 4, 4, 4, 4…
$ foodsit            <dbl+lbl> 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 2, 1, 1, 1, 1…
$ pesticide          <dbl+lbl> 5, 7, 6, 6, 3, 7, 7, 5, 7, 7, 5, 5, 6, 7, 7…
$ poschoice          <dbl+lbl> NA(n),     1,     2, NA(n),     1, NA(n),  …
$ gainskills         <dbl+lbl> NA(n),     1,     2, NA(n),     1, NA(n),  …
$ changeage          <dbl+lbl> NA(n),     2,     2, NA(n),     1, NA(n),  …
$ k2q35d             <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ hcability          <dbl+lbl> 1, 2, 2, 1, 4, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1…
$ hcextent           <dbl+lbl> NA(l), NA(l), NA(l), NA(l),     2, NA(l), N…
$ k4q20r             <dbl+lbl>     2, NA(l), NA(l),     3,     3,     2, N…
$ docroom            <dbl+lbl>     2, NA(l), NA(l),     2,     1,     3, N…
$ wgtconc            <dbl+lbl> 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3…
$ k4q02_r            <dbl+lbl>     1,     1,     1,     1,     1,     1,  …
$ dentistvisit       <dbl+lbl> NA(l),     3,     3,     2,     3,     2,  …
$ k4q22_r            <dbl+lbl> 3, 3, 3, 3, 1, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3…
$ treatneed          <dbl+lbl> NA(l), NA(l), NA(l), NA(l),     1, NA(l), N…
$ k4q24_r            <dbl+lbl> 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3…
$ k4q26              <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ c4q04              <dbl+lbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1…
$ hospitaler         <dbl+lbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1…
$ k4q04_r            <dbl+lbl> 1, 2, 1, 1, 2, 1, 3, 1, 1, 1, 1, 1, 1, 3, 1…
$ k5q11              <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l),     1, N…
$ k5q20_r            <dbl+lbl>     3, NA(l), NA(l),     2,     2,     2, N…
$ k5q22              <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ k5q30              <dbl+lbl> NA(l), NA(l), NA(l),     1,     1,     1, N…
$ k5q32              <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ k5q31_r            <dbl+lbl>     3, NA(l), NA(l),     3,     3,     2, N…
$ k8q21              <dbl+lbl> NA(n),     1,     1, NA(n),     1,     1,  …
$ k8q30              <dbl+lbl> 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 2, 1, 1, 1…
$ countto            <dbl+lbl>     4, NA(n), NA(n), NA(l), NA(n), NA(n), N…
$ k7q33              <dbl+lbl> NA(n),     2,     2, NA(n),     1,     1,  …
$ bedtime            <dbl+lbl> 2, 3, 3, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 3, 2…
$ k3q04_r            <dbl+lbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
$ k6q08_r            <dbl+lbl>     3, NA(n), NA(n), NA(l), NA(n), NA(n), N…
$ confident          <dbl+lbl>     1, NA(n), NA(n), NA(l), NA(n), NA(n), N…
$ ace1               <dbl+lbl> 2, 1, 1, 1, 1, 1, 4, 2, 1, 2, 3, 2, 1, 1, 1…
$ usepencil          <dbl+lbl>     1, NA(n), NA(n), NA(l), NA(n), NA(n), N…
$ makefriend         <dbl+lbl>     1,     1,     1, NA(l),     2,     1,  …
$ sleeppos           <dbl+lbl> NA(l), NA(n), NA(n), NA(l), NA(n), NA(n), N…
$ color              <dbl+lbl>     1, NA(n), NA(n), NA(l), NA(n), NA(n), N…
$ k4q30_r            <dbl+lbl> 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 1…
$ startschool        <dbl+lbl>     1, NA(n), NA(n), NA(l), NA(n), NA(n), N…
$ menbevcov          <dbl+lbl> 5, 5, 5, 5, 3, 5, 5, 5, 5, 1, 5, 5, 5, 5, 5…
$ planneeds_r        <dbl+lbl> NA(n), NA(l), NA(l), NA(n),     1, NA(n), N…
$ year               <dbl+lbl> 2018, 2018, 2018, 2018, 2018, 2018, 2018, 2…
$ cbsafp_yn          <dbl+lbl>     1,     1,     1,     1,     1,     1,  …
$ metro_yn           <dbl+lbl> NA(d),     2,     1,     2,     1,     1,  …
$ mpc_yn             <dbl+lbl> NA(d),     2,     2,     2,     2,     2,  …
$ totage_0_5         <dbl+lbl> 1, 0, 0, 2, 0, 0, 0, 0, 1, 0, 1, 0, 3, 1, 0…
$ totage_6_11        <dbl+lbl> 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 2, 1, 0, 0, 0…
$ totage_12_17       <dbl+lbl> 2, 2, 1, 0, 2, 0, 1, 2, 0, 0, 1, 2, 0, 0, 2…
$ totcshcn           <dbl+lbl> 1, 2, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0…
$ totnonshcn         <dbl+lbl> 2, 0, 0, 2, 1, 1, 1, 2, 1, 0, 3, 2, 3, 1, 2…
$ sc_race_r          <dbl+lbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1…
$ sc_hispanic_r      <dbl+lbl> 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
$ sc_cshcn           <dbl+lbl> 2, 1, 1, 2, 1, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2…
$ sc_k2q10           <dbl+lbl> 2, 1, 1, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
$ sc_k2q11           <dbl+lbl> NA(l),     1,     1, NA(l),     1, NA(l), N…
$ sc_k2q12           <dbl+lbl> NA(l),     1,     1, NA(l),     1, NA(l), N…
$ sc_k2q13           <dbl+lbl> 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
$ sc_k2q14           <dbl+lbl> NA(l), NA(l), NA(l), NA(l),     1, NA(l), N…
$ sc_k2q15           <dbl+lbl> NA(l), NA(l), NA(l), NA(l),     1, NA(l), N…
$ sc_k2q16           <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
$ sc_k2q17           <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ sc_k2q18           <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ sc_k2q19           <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
$ sc_k2q20           <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ sc_k2q21           <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ sc_k2q22           <dbl+lbl> 2, 2, 2, 2, 1, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2…
$ sc_k2q23           <dbl+lbl> NA(l), NA(l), NA(l), NA(l),     1, NA(l), N…
$ sc_age_lt4         <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2…
$ sc_age_lt6         <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2…
$ sc_age_lt9         <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2…
$ sc_age_lt10        <dbl+lbl> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2…
$ agepos4            <dbl+lbl> 4, 3, 1, 2, 2, 2, 1, 3, 1, 1, 4, 2, 3, 1, 2…
$ tenure_if          <dbl+lbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
$ totmale            <dbl+lbl> 1, 0, 1, 2, 2, 1, 1, 0, 1, 0, 1, 1, 1, 0, 2…
$ totfemale          <dbl+lbl> 2, 2, 0, 0, 0, 1, 0, 2, 0, 1, 3, 2, 2, 1, 0…
$ sc_race_r_if       <dbl+lbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
$ sc_racer           <dbl+lbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1…
$ sc_raceasia        <dbl+lbl>     1, NA(l), NA(l), NA(l), NA(l),     1, N…
$ sc_raceaian        <dbl+lbl> NA(l), NA(l), NA(l), NA(l), NA(l), NA(l), N…
$ sc_hispanic_r_if   <dbl+lbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
$ sc_sex_if          <dbl+lbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
$ a2_if              <dbl+lbl> 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0…
$ birthwt_oz_s       <dbl+lbl>   105,   144,   135,   102,    95,   107,  …
$ breastfedend_day_s <dbl+lbl> NA(d), NA(n), NA(n), NA(d), NA(n), NA(n), N…
$ breastfedend_wk_s  <dbl+lbl> NA(d), NA(n), NA(n), NA(d), NA(n), NA(n), N…
$ breastfedend_mo_s  <dbl+lbl>    25, NA(n), NA(n),    11, NA(n), NA(n), N…
$ frstformula_day_s  <dbl+lbl> NA(d), NA(n), NA(n), NA(l), NA(n), NA(n), N…
$ frstformula_wk_s   <dbl+lbl> NA(d), NA(n), NA(n), NA(l), NA(n), NA(n), N…
$ frstformula_mo_s   <dbl+lbl>     5, NA(n), NA(n), NA(l), NA(n), NA(n), N…
$ frstsolids_day_s   <dbl+lbl> NA(d), NA(n), NA(n), NA(d), NA(n), NA(n), N…
$ frstsolids_wk_s    <dbl+lbl> NA(d), NA(n), NA(n), NA(d), NA(n), NA(n), N…
$ frstsolids_mo_s    <dbl+lbl>     6, NA(n), NA(n),    11, NA(n), NA(n), N…
$ house_gen          <dbl+lbl> 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 3, 3, 3…
$ family_r           <dbl+lbl> 6, 5, 2, 1, 1, 1, 5, 5, 1, 2, 1, 1, 1, 2, 1…
$ currins            <dbl+lbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
$ insgap             <dbl+lbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
$ instype            <dbl+lbl> 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2…
$ higrade            <dbl+lbl> 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3…
$ higrade_tvis       <dbl+lbl> 4, 3, 4, 4, 4, 4, 4, 4, 4, 4, 3, 4, 4, 4, 4…
$ birthwt_vl         <dbl+lbl>     2,     2,     2,     2,     2,     2,  …
$ birthwt_l          <dbl+lbl>     2,     2,     2,     2,     2,     2,  …
$ birthwt            <dbl+lbl>     3,     3,     3,     3,     3,     3,  …
$ fpl_if             <dbl+lbl> 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0…
$ a1_grade_if        <dbl+lbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
$ bmiclass           <dbl+lbl> NA(n),     4,     2, NA(n),     3, NA(n),  …
$ hhcount_if         <dbl+lbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
$ fpl_i1             <dbl+lbl> 325,  87, 400, 241,  71, 160, 184, 140, 400…
$ fpl_i2             <dbl+lbl> 325,  63, 400, 241, 100,  78, 184, 209, 400…
$ fpl_i3             <dbl+lbl> 325,  71, 400, 241, 126, 125, 184, 173, 400…
$ fpl_i4             <dbl+lbl> 325,  50, 400, 241, 400,  95, 184, 351, 400…
$ fpl_i5             <dbl+lbl> 325,  50, 400, 241, 180, 101, 184, 400, 400…
$ fpl_i6             <dbl+lbl> 325,  75, 400, 241,  50, 108, 184, 273, 400…
$ fwc                <dbl+lbl>  6132.6177, 12203.8996,  3124.5496,  2935.6…

The select function is really useful, especially with really big datasets.

First, we narrow down the data by selecting only the variables we need. Then, we use the as_factor function to convert all variable to factors ahead of time.

glimpse(nsch.2)
Rows: 30,530
Columns: 6
$ fipsst    <fct> Virginia, Texas, Texas, Kentucky, Georgia, Minnesota, Oh…
$ hhid      <fct> 18000001, 18000005, 18000008, 18000010, 18000015, 180000…
$ k2q40a    <fct> Yes, Yes, No, No, No, Yes, No, No, No, No, No, No, No, N…
$ k9q41     <fct> Logical skip, Logical skip, Logical skip, Logical skip, …
$ mold      <fct> No, No, No, No, No, No, No, No, No, No, No, No, No, No, …
$ physactiv <fct> Not in universe, 1 - 3 days, 4 - 6 days, Not in universe…

The table function is a great way to figure out how variables are labelled…

table(nsch.2$mold)

                           Yes                             No 
                          2853                          27188 
             No valid response Suppressed for confidentiality 
                           489                              0 
                  Logical skip                Not in universe 
                             0                              0 

Now, we can use filter to only keep observations that have valid categories…

nsch.2.clean <- nsch.2 %>%
  filter(!(k2q40a %in% 
                  c("No valid response", "Suppressed for confidentiality", "Not in universe", "Logical skip"))) %>%
  filter(!(k9q41 %in% 
                  c("No valid response", "Suppressed for confidentiality", "Not in universe", "Logical skip"))) %>%
filter(!(physactiv %in% 
                  c("No valid response", "Suppressed for confidentiality", "Not in universe", "Logical skip"))) %>%
filter(!(mold %in% 
                  c("No valid response", "Suppressed for confidentiality", "Not in universe", "Logical skip"))) %>%
  rename(.,
        asthma = k2q40a,
        smoke_house = k9q41) %>%
  mutate(.,
         asthma.num = as.numeric(asthma), 
         asthma.recode = case_when(
           asthma.num == 2 ~ 0,
           asthma.num == 1 ~ 1
         ))

glimpse(nsch.2.clean)
Rows: 3,346
Columns: 8
$ fipsst        <fct> Kentucky, Oklahoma, New Jersey, California, Wyoming,…
$ hhid          <fct> 18000030, 18000113, 18000217, 18000230, 18000315, 18…
$ asthma        <fct> No, No, No, Yes, No, No, No, Yes, No, No, No, Yes, N…
$ smoke_house   <fct> No, No, No, No, No, No, No, No, No, No, No, No, No, …
$ mold          <fct> No, No, No, No, No, No, No, No, No, No, No, No, No, …
$ physactiv     <fct> Every day, Every day, 1 - 3 days, 1 - 3 days, 0 days…
$ asthma.num    <dbl> 2, 2, 2, 1, 2, 2, 2, 1, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2…
$ asthma.recode <dbl> 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0…

The describe function from Hmisc is a nice codebook…

Hmisc::describe(nsch.2.clean)
nsch.2.clean 

 8  Variables      3346  Observations
-----------------------------------------------------------------------------
fipsst : State FIPS Code 
       n  missing distinct 
    3346        0       51 

lowest : Alabama       Alaska        Arizona       Arkansas      California   
highest: Virginia      Washington    West Virginia Wisconsin     Wyoming      
-----------------------------------------------------------------------------
hhid : Unique Household ID 
       n  missing distinct 
    3346        0     3346 

lowest : 18000030 18000113 18000217 18000230 18000315
highest: 18175731 18175815 18175981 18175986 18176000
-----------------------------------------------------------------------------
asthma : Asthma 
       n  missing distinct 
    3346        0        2 
                      
Value        Yes    No
Frequency    582  2764
Proportion 0.174 0.826
-----------------------------------------------------------------------------
smoke_house : Anyone Smoke Inside of Home 
       n  missing distinct 
    3346        0        2 
                    
Value       Yes   No
Frequency   503 2843
Proportion 0.15 0.85
-----------------------------------------------------------------------------
mold : Mold Inside of Home 
       n  missing distinct 
    3346        0        2 
                      
Value        Yes    No
Frequency    449  2897
Proportion 0.134 0.866
-----------------------------------------------------------------------------
physactiv : Exercise, Play Sport, or Physical Activity for 60 Minutes 
       n  missing distinct 
    3346        0        4 
                                                      
Value          0 days 1 - 3 days 4 - 6 days  Every day
Frequency         392       1333        863        758
Proportion      0.117      0.398      0.258      0.227
-----------------------------------------------------------------------------
asthma.num 
       n  missing distinct     Info     Mean      Gmd 
    3346        0        2    0.431    1.826   0.2875 
                      
Value          1     2
Frequency    582  2764
Proportion 0.174 0.826
-----------------------------------------------------------------------------
asthma.recode 
       n  missing distinct     Info      Sum     Mean      Gmd 
    3346        0        2    0.431      582   0.1739   0.2875 

-----------------------------------------------------------------------------

Part 2: Multilevel Logistic Regression Models

We use glmer instead of lmer now that we have a binary outcome…

model.null <- glmer(asthma.recode ~ (1|fipsst), family = binomial, data = nsch.2.clean)
summary(model.null)
Generalized linear mixed model fit by maximum likelihood (Laplace
  Approximation) [glmerMod]
 Family: binomial  ( logit )
Formula: asthma.recode ~ (1 | fipsst)
   Data: nsch.2.clean

     AIC      BIC   logLik deviance df.resid 
  3095.5   3107.7  -1545.7   3091.5     3344 

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-0.4805 -0.4639 -0.4553 -0.4391  2.3156 

Random effects:
 Groups Name        Variance Std.Dev.
 fipsst (Intercept) 0.01808  0.1345  
Number of obs: 3346, groups:  fipsst, 51

Fixed effects:
            Estimate Std. Error z value Pr(>|z|)    
(Intercept)   -1.562      0.050  -31.23   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Calculate ICC for logistic regression (L1 random variance is fixed)

null.icc
[1] 0.005465624

Let’s add a L1 predictor, whether anyone smokes in the house…

model.2 <- glmer(asthma.recode ~ smoke_house + (1|fipsst), family = binomial, data = nsch.2.clean)
summary(model.2)
Generalized linear mixed model fit by maximum likelihood (Laplace
  Approximation) [glmerMod]
 Family: binomial  ( logit )
Formula: asthma.recode ~ smoke_house + (1 | fipsst)
   Data: nsch.2.clean

     AIC      BIC   logLik deviance df.resid 
  3087.3   3105.7  -1540.7   3081.3     3343 

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-0.5655 -0.4526 -0.4428 -0.4272  2.4132 

Random effects:
 Groups Name        Variance Std.Dev.
 fipsst (Intercept) 0.01995  0.1413  
Number of obs: 3346, groups:  fipsst, 51

Fixed effects:
              Estimate Std. Error z value Pr(>|z|)    
(Intercept)    -1.2380     0.1096 -11.300   <2e-16 ***
smoke_houseNo  -0.3877     0.1188  -3.263   0.0011 ** 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Correlation of Fixed Effects:
            (Intr)
smoke_housN -0.888

These estimates are logit coefficients. Long story short, negative numbers suggest lower odds relative to the reference group, and positive number suggest higher odds. So here, we would say that children in houses without a smoker have lower odds of having asthma. But that’s about all we can say without some more math.

We can exponentiate this coefficient to get an odds ratio- this makes things a little easier to interpret.

smoke.odds.ratio
[1] 0.6786159

When the OR is less than one (.68 in this case), we subtract 1 - OR which equals .32. This means that for children in houses without a smoker, the odds of having asthma are 32% lower than for children who live in houses with a smoker.

We can also get predicted probabilities associated with each estimate. To do this, we need to add up the logits and plug them into the formula below:

exp(-1.2380)/(1+exp(-1.2380))
[1] 0.2247843

So, for a child in a house with a smoker, the predicted probability of having asthma is 22%.

What about for a child in a house that doesn’t have a smoker?

exp(-1.6257)/(1+exp(-1.6257))
[1] 0.1644203

For a child in a house without a smoker, the predicted probability of having asthma is 16%.

Now add another L1 predictor, mold

model.3 <- glmer(asthma.recode ~ smoke_house + mold + (1|fipsst), family = binomial, data = nsch.2.clean)
summary(model.3)
Generalized linear mixed model fit by maximum likelihood (Laplace
  Approximation) [glmerMod]
 Family: binomial  ( logit )
Formula: asthma.recode ~ smoke_house + mold + (1 | fipsst)
   Data: nsch.2.clean

     AIC      BIC   logLik deviance df.resid 
  3075.9   3100.3  -1533.9   3067.9     3342 

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-0.6790 -0.4484 -0.4290 -0.4121  2.4910 

Random effects:
 Groups Name        Variance Std.Dev.
 fipsst (Intercept) 0.02022  0.1422  
Number of obs: 3346, groups:  fipsst, 51

Fixed effects:
              Estimate Std. Error z value Pr(>|z|)    
(Intercept)    -0.8724     0.1451  -6.011 1.85e-09 ***
smoke_houseNo  -0.3590     0.1194  -3.007 0.002641 ** 
moldNo         -0.4603     0.1221  -3.768 0.000164 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Correlation of Fixed Effects:
            (Intr) smk_hN
smoke_housN -0.629       
moldNo      -0.653 -0.064

The estimate for smoke_house looks very similar (-.35). So, the calculations we ran for the first model (ORs, predicted probabilities) would still hold. But, we can do the same thing for the mold variable:

First, we can exponentiate the coefficient to get an odds ratio:

mold.odds.ratio <- exp(-0.4672)
mold.odds.ratio
[1] 0.6267547

Pretty similar to smoke! So, the odds of having asthma for a child in a house without mold (mold = No) are about 37 percent lower than the odds for a child in a house with mold.

We can also get predicted probabilities associated with each estimate. To do this, we need to add up the logits and plug them into the formula below:

exp(-0.8724)/(1+exp(-0.8724))
[1] 0.2947552

So, for a child in a house with a smoker AND mold, the predicted probability of having asthma is 29%.

What about for a child in a house that doesn’t have a smoker OR mold?

# Predicted probability for child in house without smoker (logit = -0.8724 + -0.3590 + -0.4603 = -1.6917)

exp(-1.6917)/(1+exp(-1.6917))
[1] 0.1555524

For a child in a house without a smoker OR mold, the predicted probability of having asthma is 15%. Other combinations can be found by adding or removing the logits for each coefficient.

Now add a third L1 predictor, physactiv

model.4 <- glmer(asthma.recode ~ smoke_house + mold + physactiv + (1|fipsst), family = binomial, data = nsch.2.clean)
summary(model.4)
Generalized linear mixed model fit by maximum likelihood (Laplace
  Approximation) [glmerMod]
 Family: binomial  ( logit )
Formula: asthma.recode ~ smoke_house + mold + physactiv + (1 | fipsst)
   Data: nsch.2.clean

     AIC      BIC   logLik deviance df.resid 
  3079.8   3122.7  -1532.9   3065.8     3339 

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-0.6976 -0.4550 -0.4300 -0.4064  2.6157 

Random effects:
 Groups Name        Variance Std.Dev.
 fipsst (Intercept) 0.02058  0.1435  
Number of obs: 3346, groups:  fipsst, 51

Fixed effects:
                    Estimate Std. Error z value Pr(>|z|)    
(Intercept)         -0.85916    0.18199  -4.721 2.35e-06 ***
smoke_houseNo       -0.34851    0.12030  -2.897 0.003767 ** 
moldNo              -0.45557    0.12230  -3.725 0.000195 ***
physactiv1 - 3 days  0.04014    0.14958   0.268 0.788427    
physactiv4 - 6 days -0.12221    0.16223  -0.753 0.451273    
physactivEvery day  -0.05369    0.16391  -0.328 0.743262    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Correlation of Fixed Effects:
            (Intr) smk_hN moldNo ph1-3d ph4-6d
smoke_housN -0.435                            
moldNo      -0.501 -0.060                     
physctv1-3d -0.575 -0.088 -0.024              
physctv4-6d -0.506 -0.116 -0.037  0.716       
physctvEvrd -0.517 -0.089 -0.030  0.707  0.654

How about a mold by smoke_house interaction?

model.5 <- glmer(asthma.recode ~ smoke_house + mold + smoke_house:mold + (1|fipsst), family = binomial, data = nsch.2.clean)
summary(model.5)
Generalized linear mixed model fit by maximum likelihood (Laplace
  Approximation) [glmerMod]
 Family: binomial  ( logit )
Formula: asthma.recode ~ smoke_house + mold + smoke_house:mold + (1 |  
    fipsst)
   Data: nsch.2.clean

     AIC      BIC   logLik deviance df.resid 
  3077.4   3107.9  -1533.7   3067.4     3341 

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-0.6366 -0.4471 -0.4275 -0.4104  2.5025 

Random effects:
 Groups Name        Variance Std.Dev.
 fipsst (Intercept) 0.02053  0.1433  
Number of obs: 3346, groups:  fipsst, 51

Fixed effects:
                     Estimate Std. Error z value Pr(>|z|)    
(Intercept)           -1.0033     0.2357  -4.257 2.07e-05 ***
smoke_houseNo         -0.1890     0.2664  -0.709    0.478    
moldNo                -0.2933     0.2639  -1.111    0.266    
smoke_houseNo:moldNo  -0.2137     0.2977  -0.718    0.473    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Correlation of Fixed Effects:
            (Intr) smk_hN moldNo
smoke_housN -0.878              
moldNo      -0.885  0.784       
smk_hsN:mlN  0.785 -0.894 -0.887

Same thing, PLUS adding a random slope for mold

model.6 <- glmer(asthma.recode ~ smoke_house + mold + (mold|fipsst), family = binomial, data = nsch.2.clean)
boundary (singular) fit: see ?isSingular
summary(model.6)
Generalized linear mixed model fit by maximum likelihood (Laplace
  Approximation) [glmerMod]
 Family: binomial  ( logit )
Formula: asthma.recode ~ smoke_house + mold + (mold | fipsst)
   Data: nsch.2.clean

     AIC      BIC   logLik deviance df.resid 
  3079.8   3116.5  -1533.9   3067.8     3340 

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-0.6905 -0.4473 -0.4298 -0.4124  2.4853 

Random effects:
 Groups Name        Variance Std.Dev. Corr 
 fipsst (Intercept) 0.03305  0.18180       
        moldNo      0.00214  0.04626  -1.00
Number of obs: 3346, groups:  fipsst, 51

Fixed effects:
              Estimate Std. Error z value Pr(>|z|)    
(Intercept)    -0.8742     0.1465  -5.967 2.42e-09 ***
smoke_houseNo  -0.3593     0.1194  -3.008 0.002630 ** 
moldNo         -0.4574     0.1232  -3.714 0.000204 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Correlation of Fixed Effects:
            (Intr) smk_hN
smoke_housN -0.623       
moldNo      -0.660 -0.064
convergence code: 0
boundary (singular) fit: see ?isSingular

Should we keep that random slope for model? rand won’t work with GLMMs, but we can compare AIC and BIC

Here, we see that both AIC and BIC went up, which is not a good sign…We probably don’t need the random slopes.

model.6.bic - model.5.bic
[1] 8.6

Using the modelsummary and broom.mixed Packages to Organize Your Results:

Model 1 Model 2 Model 3 Model 4 Model 5 Model 6
(Intercept) -1.562 -1.238 -0.872 -0.859 -1.003 -0.874
(0.050) (0.110) (0.145) (0.182) (0.236) (0.147)
sd__(Intercept) 0.134 0.141 0.142 0.143 0.143 0.182
smoke_houseNo -0.388 -0.359 -0.349 -0.189 -0.359
(0.119) (0.119) (0.120) (0.266) (0.119)
moldNo -0.460 -0.456 -0.293 -0.457
(0.122) (0.122) (0.264) (0.123)
physactiv1 - 3 days 0.040
(0.150)
physactiv4 - 6 days -0.122
(0.162)
physactivEvery day -0.054
(0.164)
smoke_houseNo × moldNo -0.214
(0.298)
cor__(Intercept).moldNo -1.000
sd__moldNo 0.046
AIC 3095.5 3087.3 3075.9 3079.8 3077.4 3079.8
BIC 3107.7 3105.7 3100.3 3122.7 3107.9 3116.5
Log.Lik. -1545.742 -1540.660 -1533.940 -1532.923 -1533.680 -1533.911
LS0tCnRpdGxlOiAnTXVsdGlsZXZlbCBNb2RlbGluZywgTW9kdWxlIDk6IEJpbmFyeS9HZW5lcmFsaXplZCBMaW5lYXIgTWl4ZWQgTW9kZWxzJwphdXRob3I6ICdEci4gQnJvZGEnCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KClRoaXMgd2Vlaywgd2Ugd2lsbCBsb29rIGF0IHRoZSAyMDE4IE5hdGlvbmFsIFN1cnZleSBvZiBDaGlsZHJlbidzIEhlYWx0aC4gCjxodHRwczovL3d3dy5jZW5zdXMuZ292L2RhdGEvZGF0YXNldHMvMjAxOC9kZW1vL25zY2gvbnNjaDIwMTguaHRtbD4KCiMgTG9hZCBpbiBPdXIgTVZQIFBhY2thZ2VzCmBgYHtyfQpzdXBwcmVzc1BhY2thZ2VTdGFydHVwTWVzc2FnZXMobGlicmFyeSh0aWR5dmVyc2UpKQpsaWJyYXJ5KGxtZTQpCmxpYnJhcnkoSG1pc2MpCmBgYAoKIyBQYXJ0IDE6IExvYWRpbmcgaW4gdGhlIERhdGEsIGFuZCB0aGVuIFJlY29kaW5nIFZhcmlhYmxlcwojIyBMb2FkIGluIHRoZSBEYXRhCmBgYHtyfQoKbnNjaCA8LSBoYXZlbjo6cmVhZF9kdGEoIm5zY2hfMjAxOF90b3BpY2FsLmR0YSIpCgpnbGltcHNlKG5zY2gpCmBgYAoKIyMgVGhlIGBzZWxlY3RgIGZ1bmN0aW9uIGlzIHJlYWxseSB1c2VmdWwsIGVzcGVjaWFsbHkgd2l0aCByZWFsbHkgYmlnIGRhdGFzZXRzLgpGaXJzdCwgd2UgbmFycm93IGRvd24gdGhlIGRhdGEgYnkgc2VsZWN0aW5nIG9ubHkgdGhlIHZhcmlhYmxlcyB3ZSBuZWVkLiBUaGVuLCB3ZSB1c2UgdGhlIGBhc19mYWN0b3JgIGZ1bmN0aW9uIHRvIGNvbnZlcnQgYWxsIHZhcmlhYmxlIHRvIGZhY3RvcnMgYWhlYWQgb2YgdGltZS4KYGBge3J9Cm5zY2guMiA8LSBuc2NoICU+JQogIHNlbGVjdCguLAogICAgICAgICBmaXBzc3QsIAogICAgICAgICBoaGlkLCAKICAgICAgICAgazJxNDBhLCAKICAgICAgICAgazlxNDEsIAogICAgICAgICBtb2xkLCAKICAgICAgICAgcGh5c2FjdGl2KSAlPiUKICBhc19mYWN0b3IoKQoKZ2xpbXBzZShuc2NoLjIpCgpgYGAKIyMgVGhlIGB0YWJsZWAgZnVuY3Rpb24gaXMgYSBncmVhdCB3YXkgdG8gZmlndXJlIG91dCBob3cgdmFyaWFibGVzIGFyZSBsYWJlbGxlZC4uLgpgYGB7cn0KdGFibGUobnNjaC4yJGsycTQwYSkKdGFibGUobnNjaC4yJGs5cTQxKQp0YWJsZShuc2NoLjIkcGh5c2FjdGl2KQp0YWJsZShuc2NoLjIkbW9sZCkKYGBgCiMjIE5vdywgd2UgY2FuIHVzZSBgZmlsdGVyYCB0byBvbmx5IGtlZXAgb2JzZXJ2YXRpb25zIHRoYXQgaGF2ZSB2YWxpZCBjYXRlZ29yaWVzLi4uCmBgYHtyfQpuc2NoLjIuY2xlYW4gPC0gbnNjaC4yICU+JQogIGZpbHRlcighKGsycTQwYSAlaW4lIAogICAgICAgICAgICAgICAgICBjKCJObyB2YWxpZCByZXNwb25zZSIsICJTdXBwcmVzc2VkIGZvciBjb25maWRlbnRpYWxpdHkiLCAiTm90IGluIHVuaXZlcnNlIiwgIkxvZ2ljYWwgc2tpcCIpKSkgJT4lCiAgZmlsdGVyKCEoazlxNDEgJWluJSAKICAgICAgICAgICAgICAgICAgYygiTm8gdmFsaWQgcmVzcG9uc2UiLCAiU3VwcHJlc3NlZCBmb3IgY29uZmlkZW50aWFsaXR5IiwgIk5vdCBpbiB1bml2ZXJzZSIsICJMb2dpY2FsIHNraXAiKSkpICU+JQpmaWx0ZXIoIShwaHlzYWN0aXYgJWluJSAKICAgICAgICAgICAgICAgICAgYygiTm8gdmFsaWQgcmVzcG9uc2UiLCAiU3VwcHJlc3NlZCBmb3IgY29uZmlkZW50aWFsaXR5IiwgIk5vdCBpbiB1bml2ZXJzZSIsICJMb2dpY2FsIHNraXAiKSkpICU+JQpmaWx0ZXIoIShtb2xkICVpbiUgCiAgICAgICAgICAgICAgICAgIGMoIk5vIHZhbGlkIHJlc3BvbnNlIiwgIlN1cHByZXNzZWQgZm9yIGNvbmZpZGVudGlhbGl0eSIsICJOb3QgaW4gdW5pdmVyc2UiLCAiTG9naWNhbCBza2lwIikpKSAlPiUKICByZW5hbWUoLiwKICAgICAgICBhc3RobWEgPSBrMnE0MGEsCiAgICAgICAgc21va2VfaG91c2UgPSBrOXE0MSkgJT4lCiAgbXV0YXRlKC4sCiAgICAgICAgIGFzdGhtYS5udW0gPSBhcy5udW1lcmljKGFzdGhtYSksIAogICAgICAgICBhc3RobWEucmVjb2RlID0gY2FzZV93aGVuKAogICAgICAgICAgIGFzdGhtYS5udW0gPT0gMiB+IDAsCiAgICAgICAgICAgYXN0aG1hLm51bSA9PSAxIH4gMQogICAgICAgICApKQoKZ2xpbXBzZShuc2NoLjIuY2xlYW4pCmBgYAojIyBUaGUgYGRlc2NyaWJlYCBmdW5jdGlvbiBmcm9tIGBIbWlzY2AgaXMgYSBuaWNlIGNvZGVib29rLi4uCmBgYHtyfQpIbWlzYzo6ZGVzY3JpYmUobnNjaC4yLmNsZWFuKQpgYGAKCiMgUGFydCAyOiBNdWx0aWxldmVsIExvZ2lzdGljIFJlZ3Jlc3Npb24gTW9kZWxzCiMjIFdlIHVzZSBgZ2xtZXJgIGluc3RlYWQgb2YgYGxtZXJgIG5vdyB0aGF0IHdlIGhhdmUgYSBiaW5hcnkgb3V0Y29tZS4uLgpgYGB7cn0KbW9kZWwubnVsbCA8LSBnbG1lcihhc3RobWEucmVjb2RlIH4gKDF8Zmlwc3N0KSwgZmFtaWx5ID0gYmlub21pYWwsIGRhdGEgPSBuc2NoLjIuY2xlYW4pCnN1bW1hcnkobW9kZWwubnVsbCkKYGBgCgojIyMgQ2FsY3VsYXRlIElDQyBmb3IgbG9naXN0aWMgcmVncmVzc2lvbiAoTDEgcmFuZG9tIHZhcmlhbmNlIGlzIGZpeGVkKQpgYGB7cn0KbnVsbC5pY2MgPC0gMC4wMTgwOC8oMC4wMTgwOCArIChwaV4yLzMpKQpudWxsLmljYwpgYGAKCiMjIExldCdzIGFkZCBhIEwxIHByZWRpY3Rvciwgd2hldGhlciBhbnlvbmUgc21va2VzIGluIHRoZSBob3VzZS4uLgpgYGB7cn0KbW9kZWwuMiA8LSBnbG1lcihhc3RobWEucmVjb2RlIH4gc21va2VfaG91c2UgKyAoMXxmaXBzc3QpLCBmYW1pbHkgPSBiaW5vbWlhbCwgZGF0YSA9IG5zY2guMi5jbGVhbikKc3VtbWFyeShtb2RlbC4yKQpgYGAKVGhlc2UgZXN0aW1hdGVzIGFyZSBsb2dpdCBjb2VmZmljaWVudHMuIExvbmcgc3Rvcnkgc2hvcnQsIG5lZ2F0aXZlIG51bWJlcnMgc3VnZ2VzdCBsb3dlciBvZGRzIHJlbGF0aXZlIHRvIHRoZSByZWZlcmVuY2UgZ3JvdXAsIGFuZCBwb3NpdGl2ZSBudW1iZXIgc3VnZ2VzdCBoaWdoZXIgb2Rkcy4gU28gaGVyZSwgd2Ugd291bGQgc2F5IHRoYXQgY2hpbGRyZW4gaW4gaG91c2VzIHdpdGhvdXQgYSBzbW9rZXIgaGF2ZSBsb3dlciBvZGRzIG9mIGhhdmluZyBhc3RobWEuIEJ1dCB0aGF0J3MgYWJvdXQgYWxsIHdlIGNhbiBzYXkgd2l0aG91dCBzb21lIG1vcmUgbWF0aC4KCldlIGNhbiBleHBvbmVudGlhdGUgdGhpcyBjb2VmZmljaWVudCB0byBnZXQgYW4gb2RkcyByYXRpby0gdGhpcyBtYWtlcyB0aGluZ3MgYSBsaXR0bGUgZWFzaWVyIHRvIGludGVycHJldC4KCmBgYHtyfQpzbW9rZS5vZGRzLnJhdGlvIDwtIGV4cCgtMC4zODc3KQpzbW9rZS5vZGRzLnJhdGlvCmBgYAoKV2hlbiB0aGUgT1IgaXMgbGVzcyB0aGFuIG9uZSAoLjY4IGluIHRoaXMgY2FzZSksIHdlIHN1YnRyYWN0IDEgLSBPUiB3aGljaCBlcXVhbHMgLjMyLiBUaGlzIG1lYW5zIHRoYXQgZm9yIGNoaWxkcmVuIGluIGhvdXNlcyB3aXRob3V0IGEgc21va2VyLCB0aGUgb2RkcyBvZiBoYXZpbmcgYXN0aG1hIGFyZSAzMiUgbG93ZXIgdGhhbiBmb3IgY2hpbGRyZW4gd2hvIGxpdmUgaW4gaG91c2VzIHdpdGggYSBzbW9rZXIuCgpXZSBjYW4gYWxzbyBnZXQgcHJlZGljdGVkIHByb2JhYmlsaXRpZXMgYXNzb2NpYXRlZCB3aXRoIGVhY2ggZXN0aW1hdGUuIFRvIGRvIHRoaXMsIHdlIG5lZWQgdG8gYWRkIHVwIHRoZSBsb2dpdHMgYW5kIHBsdWcgdGhlbSBpbnRvIHRoZSBmb3JtdWxhIGJlbG93OgpgYGB7cn0KIyBQcmVkaWN0ZWQgcHJvYmFiaWxpdHkgZm9yIGNoaWxkIGluIGhvdXNlIHdpdGggc21va2VyIChsb2dpdCA9IC0xLjIzODApCgpleHAoLTEuMjM4MCkvKDErZXhwKC0xLjIzODApKQpgYGAKU28sIGZvciBhIGNoaWxkIGluIGEgaG91c2Ugd2l0aCBhIHNtb2tlciwgdGhlIHByZWRpY3RlZCBwcm9iYWJpbGl0eSBvZiBoYXZpbmcgYXN0aG1hIGlzIDIyJS4KCldoYXQgYWJvdXQgZm9yIGEgY2hpbGQgaW4gYSBob3VzZSB0aGF0IGRvZXNuJ3QgaGF2ZSBhIHNtb2tlcj8KYGBge3J9CiMgUHJlZGljdGVkIHByb2JhYmlsaXR5IGZvciBjaGlsZCBpbiBob3VzZSB3aXRob3V0IHNtb2tlciAobG9naXQgPSAtMS4yMzgwICsgLTAuMzg3NyA9IC0xLjYyNTcpCgpleHAoLTEuNjI1NykvKDErZXhwKC0xLjYyNTcpKQpgYGAKRm9yIGEgY2hpbGQgaW4gYSBob3VzZSB3aXRob3V0IGEgc21va2VyLCB0aGUgcHJlZGljdGVkIHByb2JhYmlsaXR5IG9mIGhhdmluZyBhc3RobWEgaXMgMTYlLgoKIyMgTm93IGFkZCBhbm90aGVyIEwxIHByZWRpY3RvciwgYG1vbGRgLi4uCmBgYHtyfQptb2RlbC4zIDwtIGdsbWVyKGFzdGhtYS5yZWNvZGUgfiBzbW9rZV9ob3VzZSArIG1vbGQgKyAoMXxmaXBzc3QpLCBmYW1pbHkgPSBiaW5vbWlhbCwgZGF0YSA9IG5zY2guMi5jbGVhbikKc3VtbWFyeShtb2RlbC4zKQpgYGAKVGhlIGVzdGltYXRlIGZvciBgc21va2VfaG91c2VgIGxvb2tzIHZlcnkgc2ltaWxhciAoLS4zNSkuIFNvLCB0aGUgY2FsY3VsYXRpb25zIHdlIHJhbiBmb3IgdGhlIGZpcnN0IG1vZGVsIChPUnMsIHByZWRpY3RlZCBwcm9iYWJpbGl0aWVzKSB3b3VsZCBzdGlsbCBob2xkLiBCdXQsIHdlIGNhbiBkbyB0aGUgc2FtZSB0aGluZyBmb3IgdGhlIGBtb2xkYCB2YXJpYWJsZToKCkZpcnN0LCB3ZSBjYW4gZXhwb25lbnRpYXRlIHRoZSBjb2VmZmljaWVudCB0byBnZXQgYW4gb2RkcyByYXRpbzoKCmBgYHtyfQptb2xkLm9kZHMucmF0aW8gPC0gZXhwKC0wLjQ2NzIpCm1vbGQub2Rkcy5yYXRpbwpgYGAKUHJldHR5IHNpbWlsYXIgdG8gc21va2UhIFNvLCB0aGUgb2RkcyBvZiBoYXZpbmcgYXN0aG1hIGZvciBhIGNoaWxkIGluIGEgaG91c2Ugd2l0aG91dCBtb2xkIChgbW9sZGAgPSBObykgYXJlIGFib3V0IDM3IHBlcmNlbnQgbG93ZXIgdGhhbiB0aGUgb2RkcyBmb3IgYSBjaGlsZCBpbiBhIGhvdXNlIHdpdGggbW9sZC4KCldlIGNhbiBhbHNvIGdldCBwcmVkaWN0ZWQgcHJvYmFiaWxpdGllcyBhc3NvY2lhdGVkIHdpdGggZWFjaCBlc3RpbWF0ZS4gVG8gZG8gdGhpcywgd2UgbmVlZCB0byBhZGQgdXAgdGhlIGxvZ2l0cyBhbmQgcGx1ZyB0aGVtIGludG8gdGhlIGZvcm11bGEgYmVsb3c6CmBgYHtyfQojIFByZWRpY3RlZCBwcm9iYWJpbGl0eSBmb3IgY2hpbGQgaW4gaG91c2Ugd2l0aCBtb2xkIEFORCBzbW9rZXIgKHRoaXMgaXMgdGhlIGludGVyY2VwdCkgKGxvZ2l0ID0gLTAuODcyNCkKCmV4cCgtMC44NzI0KS8oMStleHAoLTAuODcyNCkpCmBgYApTbywgZm9yIGEgY2hpbGQgaW4gYSBob3VzZSB3aXRoIGEgc21va2VyIEFORCBtb2xkLCB0aGUgcHJlZGljdGVkIHByb2JhYmlsaXR5IG9mIGhhdmluZyBhc3RobWEgaXMgMjklLgoKV2hhdCBhYm91dCBmb3IgYSBjaGlsZCBpbiBhIGhvdXNlIHRoYXQgZG9lc24ndCBoYXZlIGEgc21va2VyIE9SIG1vbGQ/CmBgYHtyfQojIFByZWRpY3RlZCBwcm9iYWJpbGl0eSBmb3IgY2hpbGQgaW4gaG91c2Ugd2l0aG91dCBzbW9rZXIgKGxvZ2l0ID0gLTAuODcyNCArIC0wLjM1OTAgKyAtMC40NjAzID0gLTEuNjkxNykKCmV4cCgtMS42OTE3KS8oMStleHAoLTEuNjkxNykpCmBgYApGb3IgYSBjaGlsZCBpbiBhIGhvdXNlIHdpdGhvdXQgYSBzbW9rZXIgT1IgbW9sZCwgdGhlIHByZWRpY3RlZCBwcm9iYWJpbGl0eSBvZiBoYXZpbmcgYXN0aG1hIGlzIDE1JS4gT3RoZXIgY29tYmluYXRpb25zIGNhbiBiZSBmb3VuZCBieSBhZGRpbmcgb3IgcmVtb3ZpbmcgdGhlIGxvZ2l0cyBmb3IgZWFjaCBjb2VmZmljaWVudC4KCiMjIE5vdyBhZGQgYSB0aGlyZCBMMSBwcmVkaWN0b3IsIGBwaHlzYWN0aXZgLi4uCmBgYHtyfQptb2RlbC40IDwtIGdsbWVyKGFzdGhtYS5yZWNvZGUgfiBzbW9rZV9ob3VzZSArIG1vbGQgKyBwaHlzYWN0aXYgKyAoMXxmaXBzc3QpLCBmYW1pbHkgPSBiaW5vbWlhbCwgZGF0YSA9IG5zY2guMi5jbGVhbikKc3VtbWFyeShtb2RlbC40KQpgYGAKIyMgSG93IGFib3V0IGEgYG1vbGRgIGJ5IGBzbW9rZV9ob3VzZWAgaW50ZXJhY3Rpb24/CmBgYHtyfQptb2RlbC41IDwtIGdsbWVyKGFzdGhtYS5yZWNvZGUgfiBzbW9rZV9ob3VzZSArIG1vbGQgKyBzbW9rZV9ob3VzZTptb2xkICsgKDF8Zmlwc3N0KSwgZmFtaWx5ID0gYmlub21pYWwsIGRhdGEgPSBuc2NoLjIuY2xlYW4pCnN1bW1hcnkobW9kZWwuNSkKYGBgCgojIyBTYW1lIHRoaW5nLCBQTFVTIGFkZGluZyBhIHJhbmRvbSBzbG9wZSBmb3IgYG1vbGRgCmBgYHtyfQptb2RlbC42IDwtIGdsbWVyKGFzdGhtYS5yZWNvZGUgfiBzbW9rZV9ob3VzZSArIG1vbGQgKyAobW9sZHxmaXBzc3QpLCBmYW1pbHkgPSBiaW5vbWlhbCwgZGF0YSA9IG5zY2guMi5jbGVhbikKc3VtbWFyeShtb2RlbC42KQpgYGAKCiMjIFNob3VsZCB3ZSBrZWVwIHRoYXQgcmFuZG9tIHNsb3BlIGZvciBtb2RlbD8gYHJhbmRgIHdvbid0IHdvcmsgd2l0aCBHTE1NcywgYnV0IHdlIGNhbiBjb21wYXJlIEFJQyBhbmQgQklDCkhlcmUsIHdlIHNlZSB0aGF0IGJvdGggQUlDIGFuZCBCSUMgd2VudCB1cCwgd2hpY2ggaXMgbm90IGEgZ29vZCBzaWduLi4uV2UgcHJvYmFibHkgZG9uJ3QgbmVlZCB0aGUgcmFuZG9tIHNsb3Blcy4KYGBge3J9Cm1vZGVsLjYuYWljIDwtIDMwNDUuMQptb2RlbC42LmJpYyA8LSAzMDgxLjgKCm1vZGVsLjUuYWljIDwtIDMwNDIuNwptb2RlbC41LmJpYyA8LSAzMDczLjIKCm1vZGVsLjYuYWljIC0gbW9kZWwuNS5haWMKCm1vZGVsLjYuYmljIC0gbW9kZWwuNS5iaWMKYGBgCgojIFVzaW5nIHRoZSBgbW9kZWxzdW1tYXJ5YCBhbmQgYGJyb29tLm1peGVkYCBQYWNrYWdlcyB0byBPcmdhbml6ZSBZb3VyIFJlc3VsdHM6CmBgYHtyfQpsaWJyYXJ5KG1vZGVsc3VtbWFyeSkKbGlicmFyeShicm9vbS5taXhlZCkKCm1vZGVsczEgPC0gbGlzdChtb2RlbC5udWxsLCBtb2RlbC4yLCBtb2RlbC4zLCBtb2RlbC40LCBtb2RlbC41LCBtb2RlbC42KQptb2RlbHN1bW1hcnkobW9kZWxzMSwgb3V0cHV0ID0gIm1hcmtkb3duIikKYGBgCg==