Social distancing: evidence of privilege in a pandemic from smartphones
Nabarun Dasgupta, MPH, PhD | nab@unc.edu | @nabarund
Dr. Dasgupta is an epidemiologist at the University of North Carolina in Chapel Hill. He studies population level patterns of infectious disease, medication safety, and opioids.
Thanks to Ben White for data munging help. Code available on GitHub.

Co-authors
Michele Jonsson Funk, PhD
Allison Lazard, PhD
Benjamin Eugene White
Steve W. Marshall, PhD

**Warning:** Code and output provided for evaluation only. Paper under review. Results have not been peer-reviewed and should not be used for clinical or public health interpretation.

On March 23, 2020 Stuart Thompson and Yaryna Serkez of The New York Times published a fascinating use of cell phone GPS signal information to gauge movement and commuting, during the advent of social distancing. They compared the state-level data in a slick graphic to political leanings. But we wanted to understand more about other community level characteristics of slow versus fast adopters.

We were provided access to the same location dataset on social distancing published today in the. We used a data merging approach we have previously published. Repurposing code from an ongoing project, we merged in community-level data from the Robert Wood Johnson Foundation's County Health Rankings. This very rich dataset contains dozens of explanatory variables about health, social, and economic indicators.

The main finding is that counties that did the most social distancing were wealthier and healthier in a wide range of ways. This structural advantage may be central to being able to isolate.

Figure 1


In [1]:
display "Notebook generated on $S_DATE at $S_TIME ET"
Notebook generated on 22 Apr 2020 at 21:27:00 ET

Models

In [2]:
// Load pre-procesed data
clear all
set scheme economist
use "https://github.com/opioiddatalab/covid/blob/master/analysiset.dta?raw=true"

// Create results frame
frame create results str20 strat level avg LL UL

// Program to invert differences
program define invert, rclass
    version 16
    args ee ll ul
    
    di round((1-(1/`ee'))*-100,.1)
    di "LL: " round((1-(1/`ll'))*-100,.1)
    di "UL: " round((1-(1/`ul'))*-100,.1)
end

// Set up negative binomial model
program define modelrun, rclass
    version 16
    syntax varlist(numeric)
    
    frame change default
    foreach var of local varlist {
    
    di "----- RURALITY-ADJUSTED NEGBIN MODEL -----"
       nbreg `var' levels* homeorder i.rucc, irr nocons vce(r)

    * Store results
        frame post results ("`var'") (1) (round((r(table)[1,1]),.1)) (round((r(table)[5,1]),.1)) (round((r(table)[6,1]),.1))
        frame post results ("`var'") (2) (round((r(table)[1,2]),.1)) (round((r(table)[5,2]),.1)) (round((r(table)[6,2]),.1))
        frame post results ("`var'") (3) (round((r(table)[1,3]),.1)) (round((r(table)[5,3]),.1)) (round((r(table)[6,3]),.1))
        frame post results ("`var'") (4) (round((r(table)[1,4]),.1)) (round((r(table)[5,4]),.1)) (round((r(table)[6,4]),.1))
        frame post results ("`var'") (5) (round((r(table)[1,5]),.1)) (round((r(table)[5,5]),.1)) (round((r(table)[6,5]),.1))
        
        di "Compare to tabular data:"
        table iso5, c(count `var' mean `var' sem `var') 

    di "----- PERCENT DIFFERENCE MODEL -----"
    * Rate difference models
        nbreg `var' levels* homeorder i.rucc, irr vce(r)   
           
   * Plot graph
       frame change results
       la var level "Social Distancing: Lowest (1) to Highest (5)"
       line avg level if inlist(strat,"`var'"), title("`var'")

    frame change default
    
    }
end

// Set up scaled Poisson model

program define modelpoisson, rclass
    version 16
    syntax varlist(numeric)
    
    frame change default
    foreach var of local varlist {

    di "----- RURALITY-ADJUSTED POISSON MODEL -----"
       glm `var' levels* homeorder i.rucc, family(poisson) link(log) scale(x2) eform nocons 

    * Store results
        frame post results ("`var'") (1) (round((r(table)[1,1]),.1)) (round((r(table)[5,1]),.1)) (round((r(table)[6,1]),.1))
        frame post results ("`var'") (2) (round((r(table)[1,2]),.1)) (round((r(table)[5,2]),.1)) (round((r(table)[6,2]),.1))
        frame post results ("`var'") (3) (round((r(table)[1,3]),.1)) (round((r(table)[5,3]),.1)) (round((r(table)[6,3]),.1))
        frame post results ("`var'") (4) (round((r(table)[1,4]),.1)) (round((r(table)[5,4]),.1)) (round((r(table)[6,4]),.1))
        frame post results ("`var'") (5) (round((r(table)[1,5]),.1)) (round((r(table)[5,5]),.1)) (round((r(table)[6,5]),.1))
        
        di "Compare to tabular data:"
        table iso5, c(count `var' mean `var' sem `var') 

    di "----- PERCENT DIFFERENCE MODEL -----"
    * Rate difference models
       glm `var' levels* homeorder i.rucc, family(poisson) link(log) scale(x2) eform 
           
   * Plot graph
       frame change results
       la var level "Social Distancing: Lowest (1) to Highest (5)"
       line avg level if inlist(strat,"`var'"), title("`var'")

    frame change default
    
    }
end

Descriptive Results

In [3]:
// Basic distributions of counties and traces
* iso5 is the main outcome variable representing quintiles of mobility change

tab rucc, m
tab iso5, m
su last3_sample
    
di "Quintile boundaries:"
    gen last3i=last3_index-100
        table iso5, c(min last3i max last3i)
            di "Places with positive movement:"
                tab state if last3i>=0
                table state if last3i>=0, c(median last3i mean rucc)

di "US average change in mobility:"
    qui: su last3_index
        return list
di "US median distance traveled km):"
    qui: su last3_m50, d
        di r(p50)
di "US mean change in mobility:"
    qui: su last3i
        di r(mean)
        
di "Mean mobility change by quintile:"
    table iso5, c(count last3_index mean last3i median last3_m50) 
    table iso5, c(sum last3_sample) format(%12.0fc)
        qui: su last3_sample
            di "Total traces in 3 days: "
            di %12.0fc r(sum)

di "Mean mobility change by status of homeorder:"
    table homeorder, c(count rucc mean last3i sem last3i)

di "Rurality/urbanicity by quintile:"
    table iso5, c(median rucc)

di "Small municipalities in highest tier:"
    tab state if rucc>=6 & iso5==5
    
di "Large municipalities in lowest tier:"
    tab state if rucc<=3 & iso5==1

       rucc |      Freq.     Percent        Cum.
------------+-----------------------------------
          1 |        426       16.18       16.18
          2 |        368       13.98       30.16
          3 |        336       12.76       42.92
          4 |        214        8.13       51.04
          5 |         92        3.49       54.54
          6 |        572       21.72       76.26
          7 |        387       14.70       90.96
          8 |        124        4.71       95.67
          9 |        114        4.33      100.00
------------+-----------------------------------
      Total |      2,633      100.00


Distancing: |
 Lowest (1) |
 to Highest |
        (5) |      Freq.     Percent        Cum.
------------+-----------------------------------
          1 |        519       19.71       19.71
          2 |        526       19.98       39.69
          3 |        513       19.48       59.17
          4 |        540       20.51       79.68
          5 |        535       20.32      100.00
------------+-----------------------------------
      Total |      2,633      100.00


    Variable |        Obs        Mean    Std. Dev.       Min        Max
-------------+---------------------------------------------------------
last3_sample |      2,633    24893.38    41699.36        100     285845

Quintile boundaries:



------------------------------------
Distancin |
g: Lowest |
(1) to    |
Highest   |
(5)       | min(last3i)  max(last3i)
----------+-------------------------
        1 |   -45.83333          193
        2 |       -55.4          -46
        3 |   -62.33333    -55.40625
        4 |   -74.83334     -62.4058
        5 |        -100          -75
------------------------------------

Places with positive movement:


               state |      Freq.     Percent        Cum.
---------------------+-----------------------------------
              Alaska |          1       14.29       14.29
            Arkansas |          1       14.29       28.57
                Iowa |          1       14.29       42.86
         Mississippi |          1       14.29       57.14
          New Mexico |          1       14.29       71.43
               Texas |          2       28.57      100.00
---------------------+-----------------------------------
               Total |          7      100.00


--------------------------------------
      state | med(last3i)   mean(rucc)
------------+-------------------------
     Alaska |    26.33334            7
   Arkansas |    6.666664            6
       Iowa |    119.3333            9
Mississippi |    3.666664            5
 New Mexico |    63.66667            7
      Texas |       105.5            8
--------------------------------------

US average change in mobility:



scalars:
                  r(N) =  2633
              r(sum_w) =  2633
               r(mean) =  40.27232371120683
                r(Var) =  378.1592527463074
                 r(sd) =  19.44631720265581
                r(min) =  0
                r(max) =  293
                r(sum) =  106037.0283316076

US median distance traveled km):


4.3673334

US mean change in mobility:


-59.727676

Mean mobility change by quintile:


-------------------------------------------------------
Distancin |
g: Lowest |
(1) to    |
Highest   |
(5)       |   N(last3_~x)   mean(last3i)  med(last3~50)
----------+--------------------------------------------
        1 |           519       -33.2338          6.991
        2 |           526      -51.11703       5.701638
        3 |           513      -59.35949       4.606933
        4 |           540      -67.38671       3.749153
        5 |           535      -86.51745           1.14
-------------------------------------------------------


------------------------
Distancin |
g: Lowest |
(1) to    |
Highest   |
(5)       | sum(last3~e)
----------+-------------
        1 |    2,289,735
        2 |   12,686,755
        3 |   21,464,240
        4 |   17,229,129
        5 |   11,874,409
------------------------


Total traces in 3 days: 

  65,544,268

Mean mobility change by status of homeorder:


----------------------------------------------------
Stay at   |
home      |
order for |
COVID-19  |      N(rucc)  mean(last3i)   sem(last3i)
----------+-----------------------------------------
        0 |          337     -52.30764      1.047917
        1 |        2,296     -60.81676      .4015633
----------------------------------------------------

Rurality/urbanicity by quintile:


----------------------
Distancin |
g: Lowest |
(1) to    |
Highest   |
(5)       |  med(rucc)
----------+-----------
        1 |          6
        2 |          5
        3 |          5
        4 |          3
        5 |          3
----------------------

Small municipalities in highest tier:


               state |      Freq.     Percent        Cum.
---------------------+-----------------------------------
          California |          4        2.29        2.29
            Colorado |          3        1.71        4.00
               Idaho |          3        1.71        5.71
            Illinois |          2        1.14        6.86
             Indiana |         10        5.71       12.57
                Iowa |          5        2.86       15.43
              Kansas |          5        2.86       18.29
            Kentucky |          2        1.14       19.43
               Maine |          2        1.14       20.57
            Maryland |          1        0.57       21.14
       Massachusetts |          2        1.14       22.29
            Michigan |         31       17.71       40.00
           Minnesota |         14        8.00       48.00
         Mississippi |          1        0.57       48.57
            Missouri |          2        1.14       49.71
             Montana |          2        1.14       50.86
            Nebraska |          3        1.71       52.57
          New Mexico |          3        1.71       54.29
            New York |          7        4.00       58.29
      North Carolina |          2        1.14       59.43
        North Dakota |          4        2.29       61.71
                Ohio |          2        1.14       62.86
            Oklahoma |          5        2.86       65.71
              Oregon |          1        0.57       66.29
        Pennsylvania |          9        5.14       71.43
        South Dakota |          1        0.57       72.00
           Tennessee |          1        0.57       72.57
               Texas |         12        6.86       79.43
                Utah |          2        1.14       80.57
             Vermont |          8        4.57       85.14
            Virginia |          9        5.14       90.29
          Washington |          3        1.71       92.00
       West Virginia |          2        1.14       93.14
           Wisconsin |         10        5.71       98.86
             Wyoming |          2        1.14      100.00
---------------------+-----------------------------------
               Total |        175      100.00

Large municipalities in lowest tier:


               state |      Freq.     Percent        Cum.
---------------------+-----------------------------------
             Alabama |         15       10.00       10.00
             Arizona |          1        0.67       10.67
            Arkansas |          9        6.00       16.67
          California |          1        0.67       17.33
             Florida |          1        0.67       18.00
             Georgia |         22       14.67       32.67
               Idaho |          2        1.33       34.00
             Indiana |          1        0.67       34.67
                Iowa |          2        1.33       36.00
              Kansas |          1        0.67       36.67
            Kentucky |          2        1.33       38.00
           Louisiana |         17       11.33       49.33
         Mississippi |          6        4.00       53.33
            Missouri |          8        5.33       58.67
      North Carolina |         11        7.33       66.00
        North Dakota |          2        1.33       67.33
            Oklahoma |          2        1.33       68.67
              Oregon |          1        0.67       69.33
        Pennsylvania |          1        0.67       70.00
      South Carolina |          8        5.33       75.33
        South Dakota |          1        0.67       76.00
           Tennessee |          8        5.33       81.33
               Texas |         19       12.67       94.00
                Utah |          1        0.67       94.67
            Virginia |          8        5.33      100.00
---------------------+-----------------------------------
               Total |        150      100.00

Healthcare

To gauge overall baseline healthcare access and utilization, we examined primary care providers per 100,000 population and percent uninsured under age 65 (e.g., Medicare eligibility). As a marker for a closely related preventive health behavior, we examined whether earlier influenza vaccination rates were associated with how much the county was likely to slow down in the current coronavirus outbreak. This was quantified as the percent of annual Medicare enrollees having an annual influenza vaccination.

Primary care providers

We wanted to see if places with more social distancing had better healthcare resources. So we looked at primary care providers per 100,000 population.

In [4]:
modelrun pcp_rate
----- RURALITY-ADJUSTED NEGBIN MODEL -----
note: you are responsible for interpretation of non-count dep. variable

Fitting Poisson model:

Iteration 0:   log pseudolikelihood = -320092.99  
Iteration 1:   log pseudolikelihood = -48882.026  
Iteration 2:   log pseudolikelihood = -30820.243  
Iteration 3:   log pseudolikelihood =  -26330.47  
Iteration 4:   log pseudolikelihood = -26328.915  
Iteration 5:   log pseudolikelihood = -26328.915  

Fitting full model:

Iteration 0:   log pseudolikelihood = -12906.655  
Iteration 1:   log pseudolikelihood = -12333.437  
Iteration 2:   log pseudolikelihood = -12073.753  
Iteration 3:   log pseudolikelihood = -12073.291  
Iteration 4:   log pseudolikelihood = -12073.291  

Negative binomial regression                    Number of obs     =      2,579
Dispersion           = mean                     Wald chi2(14)     =  158357.87
Log pseudolikelihood = -12073.291               Prob > chi2       =     0.0000

------------------------------------------------------------------------------
             |               Robust
    pcp_rate |        IRR   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
     levels1 |   49.92198   2.325957    83.93   0.000     45.56514    54.69541
     levels2 |   54.89074   2.441119    90.06   0.000     50.30882    59.88996
     levels3 |   57.89873   2.709556    86.73   0.000     52.82437    63.46053
     levels4 |   61.49219   2.753973    91.97   0.000     56.32462    67.13387
     levels5 |   73.62823   3.207945    98.67   0.000     67.60175    80.19195
   homeorder |   .9716535   .0285067    -0.98   0.327     .9173575    1.029163
             |
        rucc |
          2  |   1.031687    .039499     0.81   0.415     .9571034    1.112082
          3  |   1.120497   .0519795     2.45   0.014     1.023113     1.22715
          4  |   .9427865   .0368889    -1.51   0.132     .8731884    1.017932
          5  |   1.279302   .0611998     5.15   0.000     1.164805    1.405055
          6  |   .8080024   .0295491    -5.83   0.000     .7521142    .8680436
          7  |   1.027799   .0403114     0.70   0.484     .9517511    1.109924
          8  |   .5639108   .0416387    -7.76   0.000      .487931     .651722
          9  |   .6694049   .0419761    -6.40   0.000      .591988     .756946
-------------+----------------------------------------------------------------
    /lnalpha |  -1.354027   .0344678                     -1.421582   -1.286471
-------------+----------------------------------------------------------------
       alpha |   .2581985   .0088995                      .2413319    .2762439
------------------------------------------------------------------------------
Note: Estimates are transformed only in the first equation.
Compare to tabular data:

----------------------------------------------------------
Distancin |
g: Lowest |
(1) to    |
Highest   |
(5)       |    N(pcp_rate)  mean(pcp_rate)   sem(pcp_rate)
----------+-----------------------------------------------
        1 |            499        46.57405        1.122683
        2 |            520       50.705057        1.227417
        3 |            504       53.536733        1.405582
        4 |            526       57.650394        1.358795
        5 |            530       69.016454        1.764024
----------------------------------------------------------
----- PERCENT DIFFERENCE MODEL -----
note: you are responsible for interpretation of non-count dep. variable
note: levels5 omitted because of collinearity

Fitting Poisson model:

Iteration 0:   log pseudolikelihood =  -26328.97  
Iteration 1:   log pseudolikelihood = -26328.915  
Iteration 2:   log pseudolikelihood = -26328.915  

Fitting constant-only model:

Iteration 0:   log pseudolikelihood = -12966.731  
Iteration 1:   log pseudolikelihood = -12449.434  
Iteration 2:   log pseudolikelihood = -12278.236  
Iteration 3:   log pseudolikelihood = -12278.172  
Iteration 4:   log pseudolikelihood = -12278.172  

Fitting full model:

Iteration 0:   log pseudolikelihood = -12090.402  
Iteration 1:   log pseudolikelihood = -12073.452  
Iteration 2:   log pseudolikelihood = -12073.291  
Iteration 3:   log pseudolikelihood = -12073.291  

Negative binomial regression                    Number of obs     =      2,579
                                                Wald chi2(13)     =     423.89
Dispersion           = mean                     Prob > chi2       =     0.0000
Log pseudolikelihood = -12073.291               Pseudo R2         =     0.0167

------------------------------------------------------------------------------
             |               Robust
    pcp_rate |        IRR   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
     levels1 |   .6780277   .0239497   -11.00   0.000     .6326751    .7266314
     levels2 |   .7455121   .0261976    -8.36   0.000     .6958942    .7986679
     levels3 |   .7863659   .0279794    -6.75   0.000     .7333958    .8431619
     levels4 |   .8351714   .0287434    -5.23   0.000     .7806934     .893451
     levels5 |          1  (omitted)
   homeorder |   .9716535   .0285067    -0.98   0.327     .9173575    1.029163
             |
        rucc |
          2  |   1.031687   .0394989     0.81   0.415     .9571034    1.112082
          3  |   1.120497   .0519795     2.45   0.014     1.023113     1.22715
          4  |   .9427864   .0368889    -1.51   0.132     .8731884    1.017932
          5  |   1.279302   .0611998     5.15   0.000     1.164805    1.405055
          6  |   .8080024   .0295491    -5.83   0.000     .7521141    .8680435
          7  |   1.027799   .0403114     0.70   0.484      .951751    1.109924
          8  |   .5639107   .0416387    -7.76   0.000      .487931     .651722
          9  |   .6694049   .0419761    -6.40   0.000      .591988     .756946
             |
       _cons |   73.62823   3.207945    98.67   0.000     67.60175    80.19196
-------------+----------------------------------------------------------------
    /lnalpha |  -1.354026   .0344678                     -1.421582   -1.286471
-------------+----------------------------------------------------------------
       alpha |   .2581985   .0088995                      .2413319     .276244
------------------------------------------------------------------------------
Note: Estimates are transformed only in the first equation.
Note: _cons estimates baseline incidence rate.

Interpretation



Relative effect measures
^ levels1 | 49.92198 2.325957 83.93 0.000 45.56514 54.69541 levels2 | 54.89074 2.441119 90.06 0.000 50.30882 59.88996 levels3 | 57.89873 2.709556 86.73 0.000 52.82437 63.46053 levels4 | 61.49219 2.753973 91.97 0.000 56.32462 67.13387 levels5 | 73.62823 3.207945 98.67 0.000 67.60175 80.19195

Percent difference
levels1 | .6780277 .0239497 -11.00 0.000 .6326751 .7266314

In [5]:
invert .6780277 .6326751 .7266314
47.5
LL: 58.1
UL: 37.6

The counties showing the smallest declines in mobility had 50 primary care providers per 100,000, whereas the most social distancing counties had 74 per 100,000 after adjusting for rurality and stay-at-home orders, a 47% (95% CI: 38%, 58%) difference.


Percent uninsured

Percent of without health insurance below Medicare elgibility (age 65).

In [6]:
// Comparing percent uninsured to social distancing
modelrun uninsured_p
----- RURALITY-ADJUSTED NEGBIN MODEL -----
note: you are responsible for interpretation of non-count dep. variable

Fitting Poisson model:

Iteration 0:   log pseudolikelihood = -25368.195  
Iteration 1:   log pseudolikelihood = -7847.5733  
Iteration 2:   log pseudolikelihood = -7718.5574  
Iteration 3:   log pseudolikelihood = -7718.2864  
Iteration 4:   log pseudolikelihood = -7718.2864  

Fitting full model:

Iteration 0:   log pseudolikelihood = -8982.7909  
Iteration 1:   log pseudolikelihood = -7464.8863  
Iteration 2:   log pseudolikelihood = -7462.9819  
Iteration 3:   log pseudolikelihood =  -7462.981  
Iteration 4:   log pseudolikelihood =  -7462.981  

Negative binomial regression                    Number of obs     =      2,633
Dispersion           = mean                     Wald chi2(14)     =   94084.62
Log pseudolikelihood =  -7462.981               Prob > chi2       =     0.0000

------------------------------------------------------------------------------
             |               Robust
 uninsured_p |        IRR   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
     levels1 |   10.74092   .3917303    65.09   0.000     9.999938     11.5368
     levels2 |   9.464582   .3546025    59.99   0.000     8.794479    10.18574
     levels3 |   8.480079   .3192442    56.78   0.000     7.876899    9.129449
     levels4 |   8.000203   .3006194    55.34   0.000     7.432174    8.611645
     levels5 |   7.044127   .2647529    51.94   0.000     6.543873    7.582624
   homeorder |   1.156171   .0313348     5.35   0.000     1.096358    1.219246
             |
        rucc |
          2  |   1.036269   .0311154     1.19   0.235     .9770437    1.099084
          3  |    1.02913   .0307182     0.96   0.336     .9706509    1.091133
          4  |   1.050335   .0360446     1.43   0.152     .9820124    1.123411
          5  |    1.05925   .0478817     1.27   0.203     .9694404    1.157379
          6  |   1.170248   .0327939     5.61   0.000     1.107706    1.236321
          7  |   1.123108   .0352113     3.70   0.000     1.056173    1.194286
          8  |   1.237528   .0477472     5.52   0.000     1.147396     1.33474
          9  |     1.1618   .0488127     3.57   0.000     1.069962    1.261521
-------------+----------------------------------------------------------------
    /lnalpha |  -2.682096   .0589782                     -2.797691   -2.566501
-------------+----------------------------------------------------------------
       alpha |   .0684196   .0040353                      .0609506    .0768038
------------------------------------------------------------------------------
Note: Estimates are transformed only in the first equation.
Compare to tabular data:

----------------------------------------------------------
Distancin |
g: Lowest |
(1) to    |
Highest   |
(5)       |    N(uninsu~p)  mean(uninsu~p)   sem(uninsu~p)
----------+-----------------------------------------------
        1 |            519       13.379365        .2038213
        2 |            526       11.729307        .2069097
        3 |            513       10.520381        .2010726
        4 |            540       9.8374245        .1876119
        5 |            535       8.6297361        .1775762
----------------------------------------------------------
----- PERCENT DIFFERENCE MODEL -----
note: you are responsible for interpretation of non-count dep. variable
note: levels5 omitted because of collinearity

Fitting Poisson model:

Iteration 0:   log pseudolikelihood = -7718.2865  
Iteration 1:   log pseudolikelihood = -7718.2864  

Fitting constant-only model:

Iteration 0:   log pseudolikelihood = -9016.9274  
Iteration 1:   log pseudolikelihood =  -7680.503  
Iteration 2:   log pseudolikelihood = -7675.9149  
Iteration 3:   log pseudolikelihood = -7675.8619  
Iteration 4:   log pseudolikelihood = -7675.8619  

Fitting full model:

Iteration 0:   log pseudolikelihood = -7480.4687  
Iteration 1:   log pseudolikelihood = -7463.1407  
Iteration 2:   log pseudolikelihood =  -7462.981  
Iteration 3:   log pseudolikelihood =  -7462.981  

Negative binomial regression                    Number of obs     =      2,633
                                                Wald chi2(13)     =     482.26
Dispersion           = mean                     Prob > chi2       =     0.0000
Log pseudolikelihood =  -7462.981               Pseudo R2         =     0.0277

------------------------------------------------------------------------------
             |               Robust
 uninsured_p |        IRR   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
     levels1 |   1.524804   .0395603    16.26   0.000     1.449206    1.604347
     levels2 |   1.343613   .0368115    10.78   0.000     1.273367    1.417735
     levels3 |   1.203851   .0339756     6.57   0.000     1.139068    1.272318
     levels4 |   1.135727   .0316513     4.57   0.000     1.075355    1.199488
     levels5 |          1  (omitted)
   homeorder |   1.156171   .0313348     5.35   0.000     1.096358    1.219246
             |
        rucc |
          2  |   1.036269   .0311154     1.19   0.235     .9770437    1.099084
          3  |    1.02913   .0307182     0.96   0.336     .9706509    1.091133
          4  |   1.050335   .0360446     1.43   0.152     .9820124    1.123411
          5  |    1.05925   .0478817     1.27   0.203     .9694404    1.157379
          6  |   1.170248   .0327939     5.61   0.000     1.107706    1.236321
          7  |   1.123108   .0352113     3.70   0.000     1.056173    1.194286
          8  |   1.237528   .0477472     5.52   0.000     1.147396     1.33474
          9  |     1.1618   .0488127     3.57   0.000     1.069962    1.261521
             |
       _cons |   7.044127   .2647529    51.94   0.000     6.543873    7.582624
-------------+----------------------------------------------------------------
    /lnalpha |  -2.682096   .0589782                     -2.797691   -2.566501
-------------+----------------------------------------------------------------
       alpha |   .0684196   .0040353                      .0609506    .0768038
------------------------------------------------------------------------------
Note: Estimates are transformed only in the first equation.
Note: _cons estimates baseline incidence rate.

Interpretation



Relative effect measures
^ levels1 | 10.74092 .3917303 65.09 0.000 9.999938 11.5368 levels2 | 9.464582 .3546025 59.99 0.000 8.794479 10.18574 levels3 | 8.480079 .3192442 56.78 0.000 7.876899 9.129449 levels4 | 8.000203 .3006194 55.34 0.000 7.432174 8.611645 levels5 | 7.044127 .2647529 51.94 0.000 6.543873 7.582624

Percent difference
levels1 | 1.524804 .0395603 16.26 0.000 1.449206 1.604347

Counties with lower social distancing also had a higher proportion of people without health insurance. The lowest social distancing counties had 10.7% uninsured adults, whereas the most social distancing counties had only 7.0% uninsured after adjusting for rurality and social distancing orders, a 52% (95% CI: 45%, 60%) difference.


Flu Vaccination

We had a hypothesis that counties that were more involved in preventative behaviors would be more likely to self-isolate more thoroughly. To test this, we examined whether earlier flu vaccination rates impacted how much the county was likely to slow down in the current coronavirus outbreak. This is quantified as the percent of annual Medicare enrollees having an annual flu vaccination, as reported by the Robert Wood Johnson Foundation. Since the flu vaccine is free to all Medicare beneficiaries, and this is the elderly age group with the most influenza mortality, this is a convenient metric to test a priori how conscientious the population was, on average.

In [7]:
// Basic descriptive on background influenza vaccine
frame change default
summ fluvaccine, d
hist fluvaccine, bin(10)


        % Medicare Beneficiaries Getting Flu Vaccine
-------------------------------------------------------------
      Percentiles      Smallest
 1%           19              9
 5%           26             12
10%           30             12       Obs               2,630
25%           37             13       Sum of Wgt.       2,630

50%           43                      Mean           42.15703
                        Largest       Std. Dev.       8.51741
75%           48             62
90%           52             62       Variance       72.54627
95%           54             63       Skewness      -.6164957
99%           57             65       Kurtosis       3.235287

(bin=10, start=9, width=5.6)

In [8]:
// Comparing background flu vaccination with current social distancing
modelpoisson fluvaccine
----- RURALITY-ADJUSTED POISSON MODEL -----

Iteration 0:   log likelihood = -9326.8988  
Iteration 1:   log likelihood = -9325.1183  
Iteration 2:   log likelihood = -9325.1183  

Generalized linear models                         Number of obs   =      2,630
Optimization     : ML                             Residual df     =      2,616
                                                  Scale parameter =          1
Deviance         =  4029.442144                   (1/df) Deviance =   1.540307
Pearson          =  3820.490076                   (1/df) Pearson  =   1.460432

Variance function: V(u) = u                       [Poisson]
Link function    : g(u) = ln(u)                   [Log]

                                                  AIC             =   7.101991
Log likelihood   = -9325.118318                   BIC             =  -16570.88

------------------------------------------------------------------------------
             |                 OIM
  fluvaccine |        IRR   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
     levels1 |   47.99562   .7799153   238.23   0.000      46.4911    49.54882
     levels2 |    48.2899   .7663704   244.31   0.000     46.81096    49.81556
     levels3 |   49.35107   .7754712   248.13   0.000     47.85434    50.89462
     levels4 |   49.66889   .7746225   250.41   0.000     48.17363    51.21056
     levels5 |   50.96012   .7778188   257.55   0.000      49.4582    52.50765
   homeorder |   .9198825   .0101901    -7.54   0.000     .9001255    .9400732
             |
        rucc |
          2  |   .9804055    .012666    -1.53   0.126     .9558922    1.005547
          3  |   .9893659   .0131858    -0.80   0.422     .9638569     1.01555
          4  |   .9732812   .0148226    -1.78   0.075     .9446587    1.002771
          5  |   .9212544   .0199685    -3.78   0.000     .8829365    .9612352
          6  |   .8735529   .0106074   -11.13   0.000     .8530082    .8945924
          7  |   .8206082   .0113219   -14.33   0.000     .7987151    .8431015
          8  |   .8344541   .0164987    -9.15   0.000     .8027359    .8674256
          9  |   .7862014   .0165937   -11.40   0.000     .7543418    .8194065
------------------------------------------------------------------------------
(Standard errors scaled using square root of Pearson X2-based dispersion.)
Compare to tabular data:

----------------------------------------------------------
Distancin |
g: Lowest |
(1) to    |
Highest   |
(5)       |    N(fluvac~e)  mean(fluvac~e)   sem(fluvac~e)
----------+-----------------------------------------------
        1 |            517       40.218567        .3511693
        2 |            526       41.165398        .3810684
        3 |            513       42.111111        .3742107
        4 |            539       42.922077        .3666867
        5 |            535       44.278503        .3587537
----------------------------------------------------------
----- PERCENT DIFFERENCE MODEL -----
note: levels5 omitted because of collinearity

Iteration 0:   log likelihood = -9326.8988  
Iteration 1:   log likelihood = -9325.1183  
Iteration 2:   log likelihood = -9325.1183  

Generalized linear models                         Number of obs   =      2,630
Optimization     : ML                             Residual df     =      2,616
                                                  Scale parameter =          1
Deviance         =  4029.442144                   (1/df) Deviance =   1.540307
Pearson          =  3820.490076                   (1/df) Pearson  =   1.460432

Variance function: V(u) = u                       [Poisson]
Link function    : g(u) = ln(u)                   [Log]

                                                  AIC             =   7.101991
Log likelihood   = -9325.118318                   BIC             =  -16570.88

------------------------------------------------------------------------------
             |                 OIM
  fluvaccine |        IRR   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
     levels1 |   .9418269   .0112491    -5.02   0.000     .9200352    .9641349
     levels2 |   .9476017   .0110092    -4.63   0.000      .926268    .9694268
     levels3 |   .9684253   .0112147    -2.77   0.006     .9466925     .990657
     levels4 |   .9746619   .0110035    -2.27   0.023     .9533323    .9964687
     levels5 |          1  (omitted)
   homeorder |   .9198825   .0101901    -7.54   0.000     .9001255    .9400732
             |
        rucc |
          2  |   .9804055    .012666    -1.53   0.126     .9558922    1.005547
          3  |   .9893659   .0131858    -0.80   0.422     .9638569     1.01555
          4  |   .9732812   .0148226    -1.78   0.075     .9446587    1.002771
          5  |   .9212544   .0199685    -3.78   0.000     .8829365    .9612352
          6  |   .8735529   .0106074   -11.13   0.000     .8530082    .8945924
          7  |   .8206082   .0113219   -14.33   0.000     .7987151    .8431015
          8  |   .8344541   .0164987    -9.15   0.000     .8027359    .8674256
          9  |   .7862014   .0165937   -11.40   0.000     .7543418    .8194065
             |
       _cons |   50.96012   .7778188   257.55   0.000      49.4582    52.50765
------------------------------------------------------------------------------
Note: _cons estimates baseline incidence rate.
(Standard errors scaled using square root of Pearson X2-based dispersion.)

Interpretation



Relative effect measures
^ levels1 | 47.99562 .7799153 238.23 0.000 46.4911 49.54882 levels2 | 48.2899 .7663704 244.31 0.000 46.81096 49.81556 levels3 | 49.35107 .7754712 248.13 0.000 47.85434 50.89462 levels4 | 49.66889 .7746225 250.41 0.000 48.17363 51.21056 levels5 | 50.96012 .7778188 257.55 0.000 49.4582 52.50765

Percent difference
levels1 | .9418269 .0112491 -5.02 0.000 .9200352 .9641349

The lowest social distancing counties had 48.0% flu vaccine coverage among Medicare beneficiaries, whereas the most social distancing counties had 51.0% after adjusting for rurality and social distancing orders, a 6.2% (95% CI: 3.7%, 8.7%) difference.

In [9]:
invert .9418269 .9200352    .9641349
6.2
LL: 8.7
UL: 3.7

Economic

There is a trend emerging. So, since the places with more social distancing seem to have more health resources, perhaps there are trends in financial means? We explored two baseline economic metrics in relation to social distancing, one representing the overall wealth of the community and one proxy for poverty: 80th percentile of annual household income in dollars and the percent of school-age children eligible for subsidized or free lunches.

Household income

In [10]:
// Comparing 80th percentile income to social distancing
modelrun income80
----- RURALITY-ADJUSTED NEGBIN MODEL -----

Fitting Poisson model:

Iteration 0:   log pseudolikelihood = -2.396e+09  
Iteration 1:   log pseudolikelihood = -2.765e+08  (backed up)
Iteration 2:   log pseudolikelihood = -2.287e+08  
Iteration 3:   log pseudolikelihood = -7797007.7  
Iteration 4:   log pseudolikelihood =   -3712358  
Iteration 5:   log pseudolikelihood = -3655049.8  
Iteration 6:   log pseudolikelihood =   -3655041  
Iteration 7:   log pseudolikelihood =   -3655041  

Fitting full model:

Iteration 0:   log pseudolikelihood = -32813.382  
Iteration 1:   log pseudolikelihood = -29141.104  
Iteration 2:   log pseudolikelihood = -29125.526  
Iteration 3:   log pseudolikelihood = -29125.351  
Iteration 4:   log pseudolikelihood = -29125.351  

Negative binomial regression                    Number of obs     =      2,633
Dispersion           = mean                     Wald chi2(14)     =   1.42e+07
Log pseudolikelihood = -29125.351               Prob > chi2       =     0.0000

------------------------------------------------------------------------------
             |               Robust
    income80 |        IRR   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
     levels1 |   118675.2   1873.364   740.18   0.000     115059.7    122404.3
     levels2 |   122077.6   1869.469   764.83   0.000       118468    125797.3
     levels3 |   125227.2   2022.182   726.89   0.000     121325.9      129254
     levels4 |     129432   1971.797   772.66   0.000     125624.5    133354.9
     levels5 |     139390   2261.967   729.93   0.000     135026.4    143894.6
   homeorder |   .9368546    .008621    -7.09   0.000     .9201093    .9539046
             |
        rucc |
          2  |   .8432181   .0117573   -12.23   0.000     .8204863    .8665797
          3  |   .8122305   .0110667   -15.26   0.000     .7908273    .8342129
          4  |   .7601974   .0110199   -18.91   0.000     .7389027    .7821058
          5  |    .793445   .0154531   -11.88   0.000     .7637282    .8243182
          6  |   .7209769    .009222   -25.58   0.000     .7031268    .7392802
          7  |     .72983   .0106562   -21.57   0.000     .7092403    .7510174
          8  |   .6908203   .0120309   -21.24   0.000     .6676381    .7148074
          9  |   .6910585   .0140465   -18.18   0.000     .6640691    .7191448
-------------+----------------------------------------------------------------
    /lnalpha |   -3.62168   .0344743                     -3.689249   -3.554112
-------------+----------------------------------------------------------------
       alpha |   .0267377   .0009218                      .0249908    .0286068
------------------------------------------------------------------------------
Note: Estimates are transformed only in the first equation.
Compare to tabular data:

----------------------------------------------------------
Distancin |
g: Lowest |
(1) to    |
Highest   |
(5)       |    N(income80)  mean(income80)   sem(income80)
----------+-----------------------------------------------
        1 |            519       85968.287        590.9798
        2 |            526       90843.228        733.2388
        3 |            513       93619.183        872.0948
        4 |            540       98925.328        890.1288
        5 |            535       110406.09        1298.318
----------------------------------------------------------
----- PERCENT DIFFERENCE MODEL -----
note: levels5 omitted because of collinearity

Fitting Poisson model:

Iteration 0:   log pseudolikelihood = -3655043.1  
Iteration 1:   log pseudolikelihood =   -3655041  
Iteration 2:   log pseudolikelihood =   -3655041  

Fitting constant-only model:

Iteration 0:   log pseudolikelihood = -32840.589  
Iteration 1:   log pseudolikelihood =   -29881.7  
Iteration 2:   log pseudolikelihood = -29881.116  
Iteration 3:   log pseudolikelihood = -29881.116  

Fitting full model:

Iteration 0:   log pseudolikelihood = -29307.258  
Iteration 1:   log pseudolikelihood = -29157.452  
Iteration 2:   log pseudolikelihood = -29125.374  
Iteration 3:   log pseudolikelihood = -29125.351  
Iteration 4:   log pseudolikelihood = -29125.351  

Negative binomial regression                    Number of obs     =      2,633
                                                Wald chi2(13)     =    1399.51
Dispersion           = mean                     Prob > chi2       =     0.0000
Log pseudolikelihood = -29125.351               Pseudo R2         =     0.0253

------------------------------------------------------------------------------
             |               Robust
    income80 |        IRR   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
     levels1 |   .8513898   .0096039   -14.26   0.000      .832773    .8704228
     levels2 |   .8757993   .0097536   -11.91   0.000     .8568898    .8951261
     levels3 |   .8983949    .010434    -9.23   0.000     .8781757    .9190797
     levels4 |   .9285604   .0105342    -6.53   0.000     .9081416    .9494384
     levels5 |          1  (omitted)
   homeorder |   .9368545    .008621    -7.09   0.000     .9201092    .9539046
             |
        rucc |
          2  |   .8432181   .0117573   -12.23   0.000     .8204863    .8665797
          3  |   .8122305   .0110667   -15.26   0.000     .7908273     .834213
          4  |   .7601975   .0110199   -18.91   0.000     .7389028    .7821059
          5  |    .793445   .0154531   -11.88   0.000     .7637282    .8243181
          6  |   .7209769    .009222   -25.58   0.000     .7031268    .7392802
          7  |     .72983   .0106562   -21.57   0.000     .7092403    .7510174
          8  |   .6908203   .0120309   -21.24   0.000     .6676381    .7148075
          9  |   .6910585   .0140465   -18.18   0.000      .664069    .7191448
             |
       _cons |   139389.9   2261.966   729.93   0.000     135026.3    143894.5
-------------+----------------------------------------------------------------
    /lnalpha |  -3.621674   .0344743                     -3.689242   -3.554105
-------------+----------------------------------------------------------------
       alpha |   .0267379   .0009218                      .0249909     .028607
------------------------------------------------------------------------------
Note: Estimates are transformed only in the first equation.
Note: _cons estimates baseline incidence rate.

Interpretation



Relative effect measures
^ levels1 | 118675.2 1873.364 740.18 0.000 115059.7 122404.3 levels2 | 122077.6 1869.469 764.83 0.000 118468 125797.3 levels3 | 125227.2 2022.182 726.89 0.000 121325.9 129254 levels4 | 129432 1971.797 772.66 0.000 125624.5 133354.9 levels5 | 139390 2261.967 729.93 0.000 135026.4 143894.6

Percent difference
levels1 | .8513898 .0096039 -14.26 0.000 .832773 .8704228

The lowest social distancing counties the 80th percentile of annual household income was around $120,000, whereas in the most social distancing counties it was $140,000, after adjusting for rurality and social distancing orders, a 17% (95% CI: 15%, 20%) difference.

In [11]:
invert .8513898 .832773 .8704228
17.5
LL: 20.1
UL: 14.9

Subsidized lunches

In [12]:
modelrun schoollunch
----- RURALITY-ADJUSTED NEGBIN MODEL -----
note: you are responsible for interpretation of non-count dep. variable

Fitting Poisson model:

Iteration 0:   log pseudolikelihood = -290091.97  
Iteration 1:   log pseudolikelihood = -36368.036  
Iteration 2:   log pseudolikelihood = -18347.941  
Iteration 3:   log pseudolikelihood =  -13295.81  
Iteration 4:   log pseudolikelihood = -13295.279  
Iteration 5:   log pseudolikelihood = -13295.279  

Fitting full model:

Iteration 0:   log pseudolikelihood = -12572.459  
Iteration 1:   log pseudolikelihood = -11473.257  
Iteration 2:   log pseudolikelihood =  -11337.08  
Iteration 3:   log pseudolikelihood = -10886.708  
Iteration 4:   log pseudolikelihood = -10555.215  
Iteration 5:   log pseudolikelihood = -10531.961  
Iteration 6:   log pseudolikelihood = -10531.538  
Iteration 7:   log pseudolikelihood = -10531.537  

Negative binomial regression                    Number of obs     =      2,520
Dispersion           = mean                     Wald chi2(14)     =  474857.54
Log pseudolikelihood = -10531.537               Prob > chi2       =     0.0000

------------------------------------------------------------------------------
             |               Robust
 schoollunch |        IRR   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
     levels1 |   40.67673   1.205293   125.06   0.000     38.38169    43.10901
     levels2 |   37.48201   1.116649   121.64   0.000     35.35609    39.73576
     levels3 |      35.28   1.065025   118.04   0.000     33.25315     37.4304
     levels4 |   33.67241   1.010585   117.17   0.000     31.74882    35.71253
     levels5 |   32.23657   .9852857   113.63   0.000     30.36215    34.22671
   homeorder |   1.314872   .0259834    13.85   0.000     1.264919    1.366798
             |
        rucc |
          2  |   1.137772   .0288759     5.09   0.000      1.08256    1.195799
          3  |   1.123658   .0287948     4.55   0.000     1.068615    1.181537
          4  |   1.199803   .0324922     6.73   0.000      1.13778    1.265206
          5  |   1.219814   .0468732     5.17   0.000     1.131318    1.315232
          6  |   1.288721   .0298801    10.94   0.000     1.231468    1.348636
          7  |   1.254022   .0310345     9.15   0.000     1.194647    1.316348
          8  |   1.279151   .0427903     7.36   0.000     1.197974    1.365829
          9  |   1.327901   .0434874     8.66   0.000     1.245345     1.41593
-------------+----------------------------------------------------------------
    /lnalpha |  -2.628985   .0381112                     -2.703681   -2.554288
-------------+----------------------------------------------------------------
       alpha |   .0721517   .0027498                      .0669586    .0777476
------------------------------------------------------------------------------
Note: Estimates are transformed only in the first equation.
Compare to tabular data:

----------------------------------------------------------
Distancin |
g: Lowest |
(1) to    |
Highest   |
(5)       |    N(school~h)  mean(school~h)   sem(school~h)
----------+-----------------------------------------------
        1 |            494       62.302429         .824396
        2 |            499       56.844878        .7677724
        3 |            485       53.521044        .8046446
        4 |            523       50.439806        .7411138
        5 |            519       47.833955        .7046043
----------------------------------------------------------
----- PERCENT DIFFERENCE MODEL -----
note: you are responsible for interpretation of non-count dep. variable
note: levels5 omitted because of collinearity

Fitting Poisson model:

Iteration 0:   log pseudolikelihood = -13295.279  
Iteration 1:   log pseudolikelihood = -13295.279  

Fitting constant-only model:

Iteration 0:   log pseudolikelihood = -12599.584  
Iteration 1:   log pseudolikelihood = -11803.044  
Iteration 2:   log pseudolikelihood = -11687.587  
Iteration 3:   log pseudolikelihood = -11124.475  
Iteration 4:   log pseudolikelihood = -10805.793  
Iteration 5:   log pseudolikelihood = -10804.028  
Iteration 6:   log pseudolikelihood = -10804.028  

Fitting full model:

Iteration 0:   log pseudolikelihood = -10560.506  
Iteration 1:   log pseudolikelihood = -10531.679  
Iteration 2:   log pseudolikelihood = -10531.537  
Iteration 3:   log pseudolikelihood = -10531.537  

Negative binomial regression                    Number of obs     =      2,520
                                                Wald chi2(13)     =     555.41
Dispersion           = mean                     Prob > chi2       =     0.0000
Log pseudolikelihood = -10531.537               Pseudo R2         =     0.0252

------------------------------------------------------------------------------
             |               Robust
 schoollunch |        IRR   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
     levels1 |    1.26182   .0244192    12.02   0.000     1.214855    1.310599
     levels2 |   1.162717   .0229728     7.63   0.000     1.118552    1.208626
     levels3 |   1.094409   .0225473     4.38   0.000     1.051098    1.139506
     levels4 |   1.044541   .0213772     2.13   0.033     1.003471    1.087291
     levels5 |          1  (omitted)
   homeorder |   1.314872   .0259834    13.85   0.000     1.264919    1.366798
             |
        rucc |
          2  |   1.137772   .0288759     5.09   0.000      1.08256    1.195799
          3  |   1.123658   .0287948     4.55   0.000     1.068615    1.181537
          4  |   1.199803   .0324922     6.73   0.000      1.13778    1.265206
          5  |   1.219814   .0468732     5.17   0.000     1.131318    1.315232
          6  |   1.288721   .0298801    10.94   0.000     1.231468    1.348636
          7  |   1.254022   .0310345     9.15   0.000     1.194647    1.316348
          8  |   1.279151   .0427903     7.36   0.000     1.197974    1.365829
          9  |   1.327901   .0434874     8.66   0.000     1.245345     1.41593
             |
       _cons |   32.23657   .9852857   113.63   0.000     30.36215    34.22671
-------------+----------------------------------------------------------------
    /lnalpha |  -2.628985   .0381112                     -2.703681   -2.554288
-------------+----------------------------------------------------------------
       alpha |   .0721517   .0027498                      .0669586    .0777476
------------------------------------------------------------------------------
Note: Estimates are transformed only in the first equation.
Note: _cons estimates baseline incidence rate.

Interpretation



Relative effect measures
^ levels1 | 40.67673 1.205293 125.06 0.000 38.38169 43.10901 levels2 | 37.48201 1.116649 121.64 0.000 35.35609 39.73576 levels3 | 35.28 1.065025 118.04 0.000 33.25315 37.4304 levels4 | 33.67241 1.010585 117.17 0.000 31.74882 35.71253 levels5 | 32.23657 .9852857 113.63 0.000 30.36215 34.22671

Percent difference
levels1 | 1.26182 .0244192 12.02 0.000 1.214855 1.310599

In the lowest social distancing counties, 41% of schoolage children were eligible for free or reduced price lunches. By comparison, in the most social distancing counties 32% were eligible, after adjusting for rurality and social distancing orders, a 26% (95% CI: 21%, 31%) difference.


Structural

Three lifestyle metrics were selected to provide a diverse snapshot of baseline structural factors that could influence defiance of prolonged stay-at-home orders. The percent of people experiencing food insecurity was derived from Map the Meal Gap project, based on responses from the Current Population Survey and a cost-of-food index. Access to exercise opportunities was the percent of population with adequate access to locations for physical activity. The percent of households with overcrowding was based on the Comprehensive Housing Affordability Strategy measurements.

Food insecurity

In [13]:
modelpoisson foodinsec
----- RURALITY-ADJUSTED POISSON MODEL -----
note: foodinsec has noninteger values

Iteration 0:   log likelihood = -7184.3437  
Iteration 1:   log likelihood = -7182.0944  
Iteration 2:   log likelihood = -7182.0943  

Generalized linear models                         Number of obs   =      2,633
Optimization     : ML                             Residual df     =      2,619
                                                  Scale parameter =          1
Deviance         =  2683.121099                   (1/df) Deviance =   1.024483
Pearson          =   2797.25662                   (1/df) Pearson  =   1.068063

Variance function: V(u) = u                       [Poisson]
Link function    : g(u) = ln(u)                   [Log]

                                                  AIC             =    5.46608
Log likelihood   = -7182.094311                   BIC             =  -17943.81

------------------------------------------------------------------------------
             |                 OIM
   foodinsec |        IRR   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
     levels1 |   12.93501   .3216935   102.93   0.000     12.31962    13.58114
     levels2 |   11.84488   .2918237   100.33   0.000     11.28651    12.43088
     levels3 |   11.64897   .2858669   100.05   0.000     11.10194    12.22295
     levels4 |   10.89867   .2676669    97.26   0.000     10.38648    11.43612
     levels5 |   10.17634   .2475631    95.37   0.000     9.702515    10.67331
   homeorder |   1.088589   .0183214     5.04   0.000     1.053266    1.125097
             |
        rucc |
          2  |    1.10029   .0228933     4.59   0.000     1.056322    1.146087
          3  |   1.104049    .023559     4.64   0.000     1.058826    1.151203
          4  |   1.149369   .0274078     5.84   0.000     1.096887    1.204363
          5  |   1.131871   .0367085     3.82   0.000     1.062163    1.206155
          6  |   1.165615    .022003     8.12   0.000     1.123278    1.209548
          7  |   1.135392   .0237196     6.08   0.000     1.089841    1.182846
          8  |   1.219673   .0342862     7.06   0.000     1.154291    1.288758
          9  |   1.189152   .0350341     5.88   0.000     1.122431    1.259839
------------------------------------------------------------------------------
(Standard errors scaled using square root of Pearson X2-based dispersion.)
Compare to tabular data:

----------------------------------------------------------
Distancin |
g: Lowest |
(1) to    |
Highest   |
(5)       |    N(foodin~c)  mean(foodin~c)   sem(foodin~c)
----------+-----------------------------------------------
        1 |            519       15.759152        .1923148
        2 |            526         14.3327        .1790774
        3 |            513       14.082261         .174559
        4 |            540       13.073889        .1640634
        5 |            535       12.078692        .1441107
----------------------------------------------------------
----- PERCENT DIFFERENCE MODEL -----
note: levels5 omitted because of collinearity
note: foodinsec has noninteger values

Iteration 0:   log likelihood = -7184.3437  
Iteration 1:   log likelihood = -7182.0944  
Iteration 2:   log likelihood = -7182.0943  

Generalized linear models                         Number of obs   =      2,633
Optimization     : ML                             Residual df     =      2,619
                                                  Scale parameter =          1
Deviance         =  2683.121099                   (1/df) Deviance =   1.024483
Pearson          =   2797.25662                   (1/df) Pearson  =   1.068063

Variance function: V(u) = u                       [Poisson]
Link function    : g(u) = ln(u)                   [Log]

                                                  AIC             =    5.46608
Log likelihood   = -7182.094311                   BIC             =  -17943.81

------------------------------------------------------------------------------
             |                 OIM
   foodinsec |        IRR   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
     levels1 |   1.271086   .0226617    13.45   0.000     1.227437    1.316288
     levels2 |   1.163963   .0207984     8.50   0.000     1.123904    1.205449
     levels3 |   1.144711   .0205843     7.52   0.000     1.105069    1.185774
     levels4 |   1.070981   .0192196     3.82   0.000     1.033966    1.109321
     levels5 |          1  (omitted)
   homeorder |   1.088589   .0183214     5.04   0.000     1.053266    1.125097
             |
        rucc |
          2  |    1.10029   .0228933     4.59   0.000     1.056322    1.146087
          3  |   1.104049    .023559     4.64   0.000     1.058826    1.151203
          4  |   1.149369   .0274078     5.84   0.000     1.096887    1.204363
          5  |   1.131871   .0367085     3.82   0.000     1.062163    1.206155
          6  |   1.165615    .022003     8.12   0.000     1.123278    1.209548
          7  |   1.135392   .0237196     6.08   0.000     1.089841    1.182846
          8  |   1.219673   .0342862     7.06   0.000     1.154291    1.288758
          9  |   1.189152   .0350341     5.88   0.000     1.122431    1.259839
             |
       _cons |   10.17634   .2475631    95.37   0.000     9.702515    10.67331
------------------------------------------------------------------------------
Note: _cons estimates baseline incidence rate.
(Standard errors scaled using square root of Pearson X2-based dispersion.)

Interpretation



Relative effect measures
^ levels1 | 12.93501 .3216935 102.93 0.000 12.31962 13.58114 levels2 | 11.84488 .2918237 100.33 0.000 11.28651 12.43088 levels3 | 11.64897 .2858669 100.05 0.000 11.10194 12.22295 levels4 | 10.89867 .2676669 97.26 0.000 10.38648 11.43612 levels5 | 10.17634 .2475631 95.37 0.000 9.702515 10.67331

Percent difference
levels1 | 1.271086 .0226617 13.45 0.000 1.227437 1.316288

The lowest social distancing counties had greater food insecurity, among 12.9% of residents. The most social distancing counties had 10.2%, after adjusting for rurality and social distancing orders, a 27% (95% CI: 23%, 32%) difference.


Exercise opportunities

In [14]:
modelrun exercise
----- RURALITY-ADJUSTED NEGBIN MODEL -----
note: you are responsible for interpretation of non-count dep. variable

Fitting Poisson model:

Iteration 0:   log pseudolikelihood = -397571.32  
Iteration 1:   log pseudolikelihood = -24410.221  
Iteration 2:   log pseudolikelihood = -16708.317  
Iteration 3:   log pseudolikelihood = -16405.591  
Iteration 4:   log pseudolikelihood = -16405.296  
Iteration 5:   log pseudolikelihood = -16405.296  

Fitting full model:

Iteration 0:   log pseudolikelihood = -13629.269  
Iteration 1:   log pseudolikelihood = -12618.453  
Iteration 2:   log pseudolikelihood = -12003.767  
Iteration 3:   log pseudolikelihood =  -11968.11  
Iteration 4:   log pseudolikelihood = -11967.878  
Iteration 5:   log pseudolikelihood = -11967.878  

Negative binomial regression                    Number of obs     =      2,633
Dispersion           = mean                     Wald chi2(14)     =  725576.80
Log pseudolikelihood = -11967.878               Prob > chi2       =     0.0000

------------------------------------------------------------------------------
             |               Robust
    exercise |        IRR   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
     levels1 |   70.82756   1.902913   158.57   0.000     67.19442    74.65715
     levels2 |   76.05735   1.841866   178.86   0.000      72.5317    79.75439
     levels3 |   78.16616   1.906506   178.71   0.000     74.51738     81.9936
     levels4 |   82.19944   1.871535   193.65   0.000     78.61194    85.95066
     levels5 |   91.41497   2.000766   206.31   0.000     87.57646    95.42173
   homeorder |   .9263275   .0160495    -4.42   0.000     .8953991    .9583242
             |
        rucc |
          2  |   .9315932   .0170231    -3.88   0.000     .8988189    .9655625
          3  |   .9221747   .0189775    -3.94   0.000     .8857196    .9601303
          4  |   .9217404   .0170166    -4.41   0.000     .8889847     .955703
          5  |   1.031934   .0218027     1.49   0.137     .9900745    1.075564
          6  |   .7820271   .0142184   -13.52   0.000     .7546503    .8103971
          7  |    .864374   .0185513    -6.79   0.000     .8287684    .9015094
          8  |   .6065847   .0300327   -10.10   0.000     .5504875    .6683983
          9  |   .6802969   .0328991    -7.97   0.000     .6187774    .7479328
-------------+----------------------------------------------------------------
    /lnalpha |  -2.222633   .0655469                     -2.351102   -2.094163
-------------+----------------------------------------------------------------
       alpha |   .1083235   .0071003                      .0952641    .1231733
------------------------------------------------------------------------------
Note: Estimates are transformed only in the first equation.
Compare to tabular data:

----------------------------------------------------------
Distancin |
g: Lowest |
(1) to    |
Highest   |
(5)       |    N(exercise)  mean(exercise)   sem(exercise)
----------+-----------------------------------------------
        1 |            519       56.906538        .9544925
        2 |            526       61.787498        .9064765
        3 |            513       63.396324          .89163
        4 |            540       68.048161        .8530419
        5 |            535        76.76011        .8015522
----------------------------------------------------------
----- PERCENT DIFFERENCE MODEL -----
note: you are responsible for interpretation of non-count dep. variable
note: levels5 omitted because of collinearity

Fitting Poisson model:

Iteration 0:   log pseudolikelihood = -16405.303  
Iteration 1:   log pseudolikelihood = -16405.296  
Iteration 2:   log pseudolikelihood = -16405.296  

Fitting constant-only model:

Iteration 0:   log pseudolikelihood = -13662.944  
Iteration 1:   log pseudolikelihood = -12842.373  
Iteration 2:   log pseudolikelihood = -12215.778  
Iteration 3:   log pseudolikelihood = -12215.652  
Iteration 4:   log pseudolikelihood = -12215.652  

Fitting full model:

Iteration 0:   log pseudolikelihood = -11993.273  
Iteration 1:   log pseudolikelihood = -11968.037  
Iteration 2:   log pseudolikelihood = -11967.878  
Iteration 3:   log pseudolikelihood = -11967.878  

Negative binomial regression                    Number of obs     =      2,633
                                                Wald chi2(13)     =     690.24
Dispersion           = mean                     Prob > chi2       =     0.0000
Log pseudolikelihood = -11967.878               Pseudo R2         =     0.0203

------------------------------------------------------------------------------
             |               Robust
    exercise |        IRR   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
     levels1 |   .7747917   .0157072   -12.59   0.000     .7446098    .8061969
     levels2 |   .8320011   .0150512   -10.17   0.000      .803018    .8620301
     levels3 |   .8550695   .0146972    -9.11   0.000     .8267433    .8843663
     levels4 |   .8991901   .0137357    -6.96   0.000     .8726677    .9265186
     levels5 |          1  (omitted)
   homeorder |   .9263275   .0160495    -4.42   0.000     .8953991    .9583241
             |
        rucc |
          2  |   .9315932   .0170231    -3.88   0.000     .8988189    .9655625
          3  |   .9221747   .0189775    -3.94   0.000     .8857196    .9601303
          4  |   .9217404   .0170166    -4.41   0.000     .8889847     .955703
          5  |   1.031934   .0218027     1.49   0.137     .9900745    1.075564
          6  |   .7820271   .0142184   -13.52   0.000     .7546503    .8103971
          7  |    .864374   .0185513    -6.79   0.000     .8287684    .9015094
          8  |   .6065847   .0300327   -10.10   0.000     .5504875    .6683983
          9  |   .6802969   .0328991    -7.97   0.000     .6187774    .7479328
             |
       _cons |   91.41497   2.000766   206.31   0.000     87.57646    95.42173
-------------+----------------------------------------------------------------
    /lnalpha |  -2.222633   .0655469                     -2.351102   -2.094163
-------------+----------------------------------------------------------------
       alpha |   .1083235   .0071003                      .0952641    .1231733
------------------------------------------------------------------------------
Note: Estimates are transformed only in the first equation.
Note: _cons estimates baseline incidence rate.

Interpretation



Relative effect measures
^ levels1 | 70.82756 1.902913 158.57 0.000 67.19442 74.65715 levels2 | 76.05735 1.841866 178.86 0.000 72.5317 79.75439 levels3 | 78.16616 1.906506 178.71 0.000 74.51738 81.9936 levels4 | 82.19944 1.871535 193.65 0.000 78.61194 85.95066 levels5 | 91.41497 2.000766 206.31 0.000 87.57646 95.42173

Percent difference
levels1 | .7747917 .0157072 -12.59 0.000 .7446098 .8061969

In the lowest social distancing counties, 69% of residents had access to physical spaces for exercise, whereas in the most social distancing counties 90% had access, after adjusting for rurality and social distancing orders, a 32% (95% CI: 26%, 40%) difference.

In [15]:
invert .7747917 .7446098 .8061969
29.1
LL: 34.3
UL: 24

Overcrowding

In [16]:
modelpoisson overcrowding
----- RURALITY-ADJUSTED POISSON MODEL -----
note: overcrowding has noninteger values

Iteration 0:   log likelihood = -4756.5858  
Iteration 1:   log likelihood = -4744.9748  
Iteration 2:   log likelihood = -4744.9632  
Iteration 3:   log likelihood = -4744.9632  

Generalized linear models                         Number of obs   =      2,633
Optimization     : ML                             Residual df     =      2,619
                                                  Scale parameter =          1
Deviance         =  2650.197886                   (1/df) Deviance =   1.011912
Pearson          =  3524.251156                   (1/df) Pearson  =   1.345648

Variance function: V(u) = u                       [Poisson]
Link function    : g(u) = ln(u)                   [Log]

                                                  AIC             =    3.61486
Log likelihood   = -4744.963158                   BIC             =  -17976.73

------------------------------------------------------------------------------
             |                 OIM
overcrowding |        IRR   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
     levels1 |   2.367699   .1589751    12.84   0.000     2.075745    2.700717
     levels2 |   2.162979   .1437291    11.61   0.000     1.898848     2.46385
     levels3 |   1.876126   .1261733     9.36   0.000     1.644436     2.14046
     levels4 |   1.934634   .1285511     9.93   0.000     1.698396    2.203733
     levels5 |   2.068613   .1338108    11.24   0.000     1.822293    2.348229
   homeorder |   1.167809    .055477     3.27   0.001     1.063985    1.281765
             |
        rucc |
          2  |   1.029311    .055311     0.54   0.591     .9264173    1.143634
          3  |   .9498813   .0537281    -0.91   0.363     .8502035    1.061245
          4  |   .9483685   .0611599    -0.82   0.411     .8357637    1.076145
          5  |    1.15092   .0952304     1.70   0.089       .97862    1.353555
          6  |    1.04307    .051264     0.86   0.391      .947282    1.148544
          7  |   .9874639   .0545025    -0.23   0.819     .8862162    1.100279
          8  |   1.001858   .0774844     0.02   0.981     .8609413    1.165839
          9  |    .817196   .0710091    -2.32   0.020     .6892269    .9689251
------------------------------------------------------------------------------
(Standard errors scaled using square root of Pearson X2-based dispersion.)
Compare to tabular data:

----------------------------------------------------------
Distancin |
g: Lowest |
(1) to    |
Highest   |
(5)       |    N(overcr~g)  mean(overcr~g)   sem(overcr~g)
----------+-----------------------------------------------
        1 |            519       2.6832882        .0894385
        2 |            526       2.4762081        .0830075
        3 |            513       2.1469685        .0588481
        4 |            540       2.2162362        .0747709
        5 |            535        2.388474        .0858484
----------------------------------------------------------
----- PERCENT DIFFERENCE MODEL -----
note: levels5 omitted because of collinearity
note: overcrowding has noninteger values

Iteration 0:   log likelihood = -4756.5858  
Iteration 1:   log likelihood = -4744.9748  
Iteration 2:   log likelihood = -4744.9632  
Iteration 3:   log likelihood = -4744.9632  

Generalized linear models                         Number of obs   =      2,633
Optimization     : ML                             Residual df     =      2,619
                                                  Scale parameter =          1
Deviance         =  2650.197886                   (1/df) Deviance =   1.011912
Pearson          =  3524.251156                   (1/df) Pearson  =   1.345648

Variance function: V(u) = u                       [Poisson]
Link function    : g(u) = ln(u)                   [Log]

                                                  AIC             =    3.61486
Log likelihood   = -4744.963158                   BIC             =  -17976.73

------------------------------------------------------------------------------
             |                 OIM
overcrowding |        IRR   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
     levels1 |   1.144583   .0535491     2.89   0.004     1.044297      1.2545
     levels2 |   1.045618   .0488222     0.96   0.339     .9541759    1.145823
     levels3 |   .9069486   .0439847    -2.01   0.044     .8247106    .9973871
     levels4 |   .9352325   .0440449    -1.42   0.155     .8527704    1.025669
     levels5 |          1  (omitted)
   homeorder |   1.167809    .055477     3.27   0.001     1.063985    1.281765
             |
        rucc |
          2  |   1.029311    .055311     0.54   0.591     .9264173    1.143634
          3  |   .9498813   .0537281    -0.91   0.363     .8502035    1.061245
          4  |   .9483685   .0611599    -0.82   0.411     .8357637    1.076145
          5  |    1.15092   .0952304     1.70   0.089       .97862    1.353555
          6  |    1.04307    .051264     0.86   0.391      .947282    1.148544
          7  |   .9874639   .0545025    -0.23   0.819     .8862162    1.100279
          8  |   1.001858   .0774844     0.02   0.981     .8609413    1.165839
          9  |    .817196   .0710091    -2.32   0.020     .6892269    .9689251
             |
       _cons |   2.068613   .1338108    11.24   0.000     1.822293    2.348229
------------------------------------------------------------------------------
Note: _cons estimates baseline incidence rate.
(Standard errors scaled using square root of Pearson X2-based dispersion.)

Interpretation



Relative effect measures
^ levels1 | 2.367699 .1589751 12.84 0.000 2.075745 2.700717 levels2 | 2.162979 .1437291 11.61 0.000 1.898848 2.46385 levels3 | 1.876126 .1261733 9.36 0.000 1.644436 2.14046 levels4 | 1.934634 .1285511 9.93 0.000 1.698396 2.203733 levels5 | 2.068613 .1338108 11.24 0.000 1.822293 2.348229

Percent difference
levels1 | 1.144583 .0535491 2.89 0.004 1.044297 1.2545

The lowest social distancing counties had 14% (95% CI: 4.4%, 25%) less overcrowding, after adjusting for rurality and social distancing orders.


Sociodemographics

Youth

Less than age 18

In [17]:
modelpoisson youth
----- RURALITY-ADJUSTED POISSON MODEL -----
note: youth has noninteger values

Iteration 0:   log likelihood = -7047.4698  
Iteration 1:   log likelihood = -7047.2764  
Iteration 2:   log likelihood = -7047.2764  

Generalized linear models                         Number of obs   =      2,633
Optimization     : ML                             Residual df     =      2,619
                                                  Scale parameter =          1
Deviance         =  1084.966828                   (1/df) Deviance =   .4142676
Pearson          =  1091.163655                   (1/df) Pearson  =   .4166337

Variance function: V(u) = u                       [Poisson]
Link function    : g(u) = ln(u)                   [Log]

                                                  AIC             =   5.363674
Log likelihood   = -7047.276406                   BIC             =  -19541.96

------------------------------------------------------------------------------
             |                 OIM
       youth |        IRR   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
     levels1 |   25.54333   .3027171   273.42   0.000     24.95686    26.14359
     levels2 |   24.97196   .2904891   276.61   0.000     24.40905    25.54785
     levels3 |   24.65616   .2854101   276.88   0.000     24.10306    25.22195
     levels4 |   24.76482   .2843834   279.48   0.000     24.21366    25.32852
     levels5 |   23.59149   .2675883   278.67   0.000     23.07281    24.12183
   homeorder |   .9355478   .0075003    -8.31   0.000     .9209623    .9503643
             |
        rucc |
          2  |   .9687538    .009452    -3.25   0.001     .9504042    .9874577
          3  |   .9474401   .0095882    -5.34   0.000     .9288327    .9664203
          4  |   .9468317   .0109397    -4.73   0.000     .9256313    .9685176
          5  |   .9792884    .015412    -1.33   0.184     .9495426    1.009966
          6  |   .9535839   .0085333    -5.31   0.000     .9370048    .9704565
          7  |   .9514734    .009464    -5.00   0.000      .933104    .9702044
          8  |   .9060676   .0129889    -6.88   0.000     .8809641    .9318865
          9  |   .8965563   .0133864    -7.31   0.000     .8706997    .9231807
------------------------------------------------------------------------------
(Standard errors scaled using square root of Pearson X2-based dispersion.)
Compare to tabular data:

-------------------------------------------------
Distancin |
g: Lowest |
(1) to    |
Highest   |
(5)       |    N(youth)  mean(youth)   sem(youth)
----------+--------------------------------------
        1 |         519    23.013114     .1388531
        2 |         526    22.562249     .1310086
        3 |         513    22.287634     .1227711
        4 |         540    22.396111     .1464031
        5 |         535    21.385909     .1390452
-------------------------------------------------
----- PERCENT DIFFERENCE MODEL -----
note: levels5 omitted because of collinearity
note: youth has noninteger values

Iteration 0:   log likelihood = -7047.4698  
Iteration 1:   log likelihood = -7047.2764  
Iteration 2:   log likelihood = -7047.2764  

Generalized linear models                         Number of obs   =      2,633
Optimization     : ML                             Residual df     =      2,619
                                                  Scale parameter =          1
Deviance         =  1084.966828                   (1/df) Deviance =   .4142676
Pearson          =  1091.163655                   (1/df) Pearson  =   .4166337

Variance function: V(u) = u                       [Poisson]
Link function    : g(u) = ln(u)                   [Log]

                                                  AIC             =   5.363674
Log likelihood   = -7047.276406                   BIC             =  -19541.96

------------------------------------------------------------------------------
             |                 OIM
       youth |        IRR   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
     levels1 |   1.082735   .0095077     9.05   0.000      1.06426    1.101531
     levels2 |   1.058516   .0091489     6.58   0.000     1.040735      1.0766
     levels3 |   1.045129   .0090803     5.08   0.000     1.027483    1.063079
     levels4 |   1.049735   .0089242     5.71   0.000     1.032389    1.067373
     levels5 |          1  (omitted)
   homeorder |   .9355478   .0075003    -8.31   0.000     .9209623    .9503643
             |
        rucc |
          2  |   .9687538    .009452    -3.25   0.001     .9504042    .9874577
          3  |   .9474401   .0095882    -5.34   0.000     .9288327    .9664203
          4  |   .9468317   .0109397    -4.73   0.000     .9256313    .9685176
          5  |   .9792884    .015412    -1.33   0.184     .9495426    1.009966
          6  |   .9535839   .0085333    -5.31   0.000     .9370048    .9704565
          7  |   .9514734    .009464    -5.00   0.000      .933104    .9702044
          8  |   .9060676   .0129889    -6.88   0.000     .8809641    .9318865
          9  |   .8965563   .0133864    -7.31   0.000     .8706997    .9231807
             |
       _cons |   23.59149   .2675883   278.67   0.000     23.07281    24.12183
------------------------------------------------------------------------------
Note: _cons estimates baseline incidence rate.
(Standard errors scaled using square root of Pearson X2-based dispersion.)

Interpretation



Relative effect measures
^ levels1 | 25.54333 .3027171 273.42 0.000 24.95686 26.14359 levels2 | 24.97196 .2904891 276.61 0.000 24.40905 25.54785 levels3 | 24.65616 .2854101 276.88 0.000 24.10306 25.22195 levels4 | 24.76482 .2843834 279.48 0.000 24.21366 25.32852 levels5 | 23.59149 .2675883 278.67 0.000 23.07281 24.12183

Percent difference
levels1 | 1.082735 .0095077 9.05 0.000 1.06426 1.101531

Counties with the least restriction of movement had 8.2% more children (95% CI: 6.4%, 10%) than areas that most greatly had their movement reduced.


Elderly

In [18]:
modelpoisson elderly
----- RURALITY-ADJUSTED POISSON MODEL -----
note: elderly has noninteger values

Iteration 0:   log likelihood = -7218.0267  
Iteration 1:   log likelihood = -7216.9383  
Iteration 2:   log likelihood = -7216.9383  

Generalized linear models                         Number of obs   =      2,633
Optimization     : ML                             Residual df     =      2,619
                                                  Scale parameter =          1
Deviance         =  2003.292916                   (1/df) Deviance =   .7649076
Pearson          =  2072.529905                   (1/df) Pearson  =    .791344

Variance function: V(u) = u                       [Poisson]
Link function    : g(u) = ln(u)                   [Log]

                                                  AIC             =   5.492547
Log likelihood   = -7216.938253                   BIC             =  -18623.63

------------------------------------------------------------------------------
             |                 OIM
     elderly |        IRR   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
     levels1 |   14.16821   .2681426   140.07   0.000     13.65229    14.70363
     levels2 |   14.60455   .2709946   144.50   0.000     14.08295    15.14547
     levels3 |   14.94807   .2750933   146.96   0.000      14.4185    15.49708
     levels4 |   15.00888   .2744157   148.15   0.000     14.48055    15.55647
     levels5 |   15.22254   .2732011   151.71   0.000     14.69638    15.76753
   homeorder |   1.035171   .0129279     2.77   0.006     1.010141    1.060822
             |
        rucc |
          2  |   1.124375   .0177546     7.42   0.000      1.09011    1.159718
          3  |   1.149063   .0186141     8.58   0.000     1.113153    1.186131
          4  |   1.182938   .0214397     9.27   0.000     1.141655    1.225715
          5  |   1.096782   .0282309     3.59   0.000     1.042823    1.153533
          6  |   1.268995    .018046    16.75   0.000     1.234114    1.304862
          7  |   1.284184   .0200334    16.03   0.000     1.245514    1.324056
          8  |   1.391649    .028851    15.94   0.000     1.336236    1.449361
          9  |   1.430253   .0305757    16.74   0.000     1.371563    1.491453
------------------------------------------------------------------------------
(Standard errors scaled using square root of Pearson X2-based dispersion.)
Compare to tabular data:

-------------------------------------------------------
Distancin |
g: Lowest |
(1) to    |
Highest   |
(5)       |    N(elderly)  mean(elderly)   sem(elderly)
----------+--------------------------------------------
        1 |           519      17.897361       .1736063
        2 |           526       18.07345       .1721838
        3 |           513      18.483562        .162852
        4 |           540      18.246843       .1874652
        5 |           535      18.115094       .2083171
-------------------------------------------------------
----- PERCENT DIFFERENCE MODEL -----
note: levels5 omitted because of collinearity
note: elderly has noninteger values

Iteration 0:   log likelihood = -7218.0267  
Iteration 1:   log likelihood = -7216.9383  
Iteration 2:   log likelihood = -7216.9383  

Generalized linear models                         Number of obs   =      2,633
Optimization     : ML                             Residual df     =      2,619
                                                  Scale parameter =          1
Deviance         =  2003.292916                   (1/df) Deviance =   .7649076
Pearson          =  2072.529905                   (1/df) Pearson  =    .791344

Variance function: V(u) = u                       [Poisson]
Link function    : g(u) = ln(u)                   [Log]

                                                  AIC             =   5.492547
Log likelihood   = -7216.938253                   BIC             =  -18623.63

------------------------------------------------------------------------------
             |                 OIM
     elderly |        IRR   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
     levels1 |    .930739   .0124421    -5.37   0.000     .9066697    .9554473
     levels2 |   .9594032   .0125665    -3.16   0.002     .9350867    .9843519
     levels3 |   .9819697   .0128292    -1.39   0.164     .9571442    1.007439
     levels4 |   .9859642   .0126631    -1.10   0.271     .9614548    1.011098
     levels5 |          1  (omitted)
   homeorder |   1.035171   .0129279     2.77   0.006     1.010141    1.060822
             |
        rucc |
          2  |   1.124375   .0177546     7.42   0.000      1.09011    1.159718
          3  |   1.149063   .0186141     8.58   0.000     1.113153    1.186131
          4  |   1.182938   .0214397     9.27   0.000     1.141655    1.225715
          5  |   1.096782   .0282309     3.59   0.000     1.042823    1.153533
          6  |   1.268995    .018046    16.75   0.000     1.234114    1.304862
          7  |   1.284184   .0200334    16.03   0.000     1.245514    1.324056
          8  |   1.391649    .028851    15.94   0.000     1.336236    1.449361
          9  |   1.430253   .0305757    16.74   0.000     1.371563    1.491453
             |
       _cons |   15.22254   .2732011   151.71   0.000     14.69638    15.76753
------------------------------------------------------------------------------
Note: _cons estimates baseline incidence rate.
(Standard errors scaled using square root of Pearson X2-based dispersion.)

Interpretation



Relative effect measures
^ levels1 | 14.16821 .2681426 140.07 0.000 13.65229 14.70363 levels2 | 14.60455 .2709946 144.50 0.000 14.08295 15.14547 levels3 | 14.94807 .2750933 146.96 0.000 14.4185 15.49708 levels4 | 15.00888 .2744157 148.15 0.000 14.48055 15.55647 levels5 | 15.22254 .2732011 151.71 0.000 14.69638 15.76753

Percent difference
levels1 | .930739 .0124421 -5.37 0.000 .9066697 .9554473

Counties that did the best at restricting movement had 7.4% (95% CI: 4.7%, 10%) more elderly people, compared to the lowest tier of movement restriction.

In [19]:
invert .930739 .9066697 .9554473
7.4
LL: 10.3
UL: 4.7

Segregation

Racial segregation, white vs. non-white

In [20]:
modelrun segregation_wnw
----- RURALITY-ADJUSTED NEGBIN MODEL -----
note: you are responsible for interpretation of non-count dep. variable

Fitting Poisson model:

Iteration 0:   log pseudolikelihood = -137517.44  
Iteration 1:   log pseudolikelihood = -14752.896  
Iteration 2:   log pseudolikelihood = -13227.944  
Iteration 3:   log pseudolikelihood = -13227.003  
Iteration 4:   log pseudolikelihood = -13227.003  

Fitting full model:

Iteration 0:   log pseudolikelihood = -11513.071  
Iteration 1:   log pseudolikelihood = -10469.271  
Iteration 2:   log pseudolikelihood =  -10203.36  
Iteration 3:   log pseudolikelihood =  -10195.34  
Iteration 4:   log pseudolikelihood = -10195.337  
Iteration 5:   log pseudolikelihood = -10195.337  

Negative binomial regression                    Number of obs     =      2,581
Dispersion           = mean                     Wald chi2(14)     =  216209.08
Log pseudolikelihood = -10195.337               Prob > chi2       =     0.0000

-------------------------------------------------------------------------------
              |               Robust
segregatio~nw |        IRR   Std. Err.      z    P>|z|     [95% Conf. Interval]
--------------+----------------------------------------------------------------
      levels1 |   29.07819   1.106746    88.54   0.000     26.98794    31.33033
      levels2 |   29.62044   1.078855    93.03   0.000     27.57963    31.81226
      levels3 |   30.05066   1.117545    91.50   0.000     27.93823    32.32281
      levels4 |   30.79493   1.091354    96.71   0.000     28.72851    33.00999
      levels5 |     31.866    1.11741    98.72   0.000     29.74948     34.1331
    homeorder |   1.075855   .0295754     2.66   0.008     1.019423    1.135412
              |
         rucc |
           2  |   1.023216   .0261958     0.90   0.370     .9731398    1.075869
           3  |   1.018929    .028167     0.68   0.498     .9651917    1.075658
           4  |   1.020022   .0288734     0.70   0.484     .9649719    1.078212
           5  |   1.028869   .0393519     0.74   0.457     .9545604    1.108962
           6  |   .9387745   .0235422    -2.52   0.012     .8937482    .9860692
           7  |   .9473715   .0303327    -1.69   0.091     .8897474    1.008728
           8  |   .7978725   .0400495    -4.50   0.000     .7231146    .8803591
           9  |   .8521205   .0532593    -2.56   0.010     .7538747    .9631698
--------------+----------------------------------------------------------------
     /lnalpha |  -1.962348   .0443816                     -2.049334   -1.875361
--------------+----------------------------------------------------------------
        alpha |   .1405281   .0062369                      .1288207    .1532996
-------------------------------------------------------------------------------
Note: Estimates are transformed only in the first equation.
Compare to tabular data:

----------------------------------------------------------
Distancin |
g: Lowest |
(1) to    |
Highest   |
(5)       |    N(segreg~w)  mean(segreg~w)   sem(segreg~w)
----------+-----------------------------------------------
        1 |            506       29.687411        .5589038
        2 |            513       30.582416        .5315276
        3 |            498       31.042838        .5548652
        4 |            535       32.147839        .5309895
        5 |            529       33.599273        .5652224
----------------------------------------------------------
----- PERCENT DIFFERENCE MODEL -----
note: you are responsible for interpretation of non-count dep. variable
note: levels5 omitted because of collinearity

Fitting Poisson model:

Iteration 0:   log pseudolikelihood = -13227.003  
Iteration 1:   log pseudolikelihood = -13227.003  

Fitting constant-only model:

Iteration 0:   log pseudolikelihood = -11521.003  
Iteration 1:   log pseudolikelihood = -10513.242  
Iteration 2:   log pseudolikelihood = -10247.006  
Iteration 3:   log pseudolikelihood =   -10241.9  
Iteration 4:   log pseudolikelihood = -10241.899  

Fitting full model:

Iteration 0:   log pseudolikelihood = -10196.302  
Iteration 1:   log pseudolikelihood = -10195.338  
Iteration 2:   log pseudolikelihood = -10195.337  

Negative binomial regression                    Number of obs     =      2,581
                                                Wald chi2(13)     =      87.17
Dispersion           = mean                     Prob > chi2       =     0.0000
Log pseudolikelihood = -10195.337               Pseudo R2         =     0.0045

-------------------------------------------------------------------------------
              |               Robust
segregatio~nw |        IRR   Std. Err.      z    P>|z|     [95% Conf. Interval]
--------------+----------------------------------------------------------------
      levels1 |   .9125145   .0241028    -3.47   0.001     .8664759    .9609994
      levels2 |   .9295311   .0233124    -2.91   0.004     .8849443    .9763643
      levels3 |   .9430319   .0234616    -2.36   0.018     .8981512    .9901554
      levels4 |   .9663884   .0228272    -1.45   0.148     .9226678    1.012181
      levels5 |          1  (omitted)
    homeorder |   1.075855   .0295754     2.66   0.008     1.019423    1.135412
              |
         rucc |
           2  |   1.023216   .0261958     0.90   0.370     .9731399    1.075869
           3  |   1.018929    .028167     0.68   0.498     .9651917    1.075658
           4  |   1.020022   .0288734     0.70   0.484     .9649719    1.078212
           5  |   1.028869   .0393519     0.74   0.457     .9545604    1.108962
           6  |   .9387745   .0235422    -2.52   0.012     .8937482    .9860692
           7  |   .9473715   .0303327    -1.69   0.091     .8897475    1.008728
           8  |   .7978726   .0400495    -4.50   0.000     .7231146    .8803592
           9  |   .8521205   .0532593    -2.56   0.010     .7538748    .9631698
              |
        _cons |     31.866    1.11741    98.72   0.000     29.74948     34.1331
--------------+----------------------------------------------------------------
     /lnalpha |  -1.962348   .0443816                     -2.049334   -1.875362
--------------+----------------------------------------------------------------
        alpha |   .1405281   .0062369                      .1288207    .1532995
-------------------------------------------------------------------------------
Note: Estimates are transformed only in the first equation.
Note: _cons estimates baseline incidence rate.

Interpretation



Relative effect measures
^ levels1 | 29.07819 1.106746 88.54 0.000 26.98794 31.33033 levels2 | 29.62044 1.078855 93.03 0.000 27.57963 31.81226 levels3 | 30.05066 1.117545 91.50 0.000 27.93823 32.32281 levels4 | 30.79493 1.091354 96.71 0.000 28.72851 33.00999 levels5 | 31.866 1.11741 98.72 0.000 29.74948 34.1331

Percent difference
levels1 | .9125145 .0241028 -3.47 0.001 .8664759 .9609994

The lowest social distancing counties had 16% (95% CI: 4.5%, 30%) less overcrowding, after adjusting for rurality and social distancing orders.

In [21]:
invert .9125145  .8664759  .9609994
9.6
LL: 15.4
UL: 4.1

Exploratory analyses

In [22]:
frame change default
foreach var of varlist drivealone_p {
    table iso5, c(count `var' mean `var' sem `var')
        frame put `var' iso5, into(`var')
            frame change `var'
                collapse (mean) `var', by(iso5)
                    la var `var' "% of Drivers"
                        line `var' iso5, note("Commuting Alone by Vehicle")  
                            frame change default
                                frame drop `var'
}


----------------------------------------------------------
Distancin |
g: Lowest |
(1) to    |
Highest   |
(5)       |    N(drivea~p)  mean(drivea~p)   sem(drivea~p)
----------+-----------------------------------------------
        1 |            519       82.089322        .2316678
        2 |            526       81.973571        .1901521
        3 |            513       81.401447        .1971413
        4 |            540        80.95994        .1918464
        5 |            535       77.732723        .3661999
----------------------------------------------------------

In [23]:
frame change default
foreach var of varlist rucc {
    table iso5, c(count `var' mean `var' sem `var')
        frame put `var' iso5, into(`var')
            frame change `var'
                collapse (median) `var', by(iso5)
                    la var `var' "Meidan RUCC"
                        line `var' iso5, note("Urban-Rural")   
                            frame change default
                                frame drop `var'
}


----------------------------------------------
Distancin |
g: Lowest |
(1) to    |
Highest   |
(5)       |    N(rucc)  mean(rucc)   sem(rucc)
----------+-----------------------------------
        1 |        519   5.2524085    .0987557
        2 |        526     4.63308    .1022326
        3 |        513    4.594542    .1055764
        4 |        540    4.062963     .104029
        5 |        535   3.6093459    .1101034
----------------------------------------------
In [24]:
frame change default
foreach var of varlist longcommute_p {
    table iso5, c(count `var' mean `var' sem `var')
        frame put `var' iso5, into(`var')
            frame change `var'
                collapse (mean) `var', by(iso5)
                    la var `var' "% of Solo Commuters Driving 30+ mins"
                        line `var' iso5, note("Long Solo Commute")     
                            frame change default
                                frame drop `var'
}


----------------------------------------------------------
Distancin |
g: Lowest |
(1) to    |
Highest   |
(5)       |    N(longco~p)  mean(longco~p)   sem(longco~p)
----------+-----------------------------------------------
        1 |            519       29.061464        .5501718
        2 |            526       31.741635         .530849
        3 |            513       32.373489         .503766
        4 |            540       32.046667        .5223995
        5 |            535        33.41215         .499872
----------------------------------------------------------

External validation with Google data

Correlations between March 1 to April 11 in Google and DL data by county-day

In [25]:
// Import Descartes Labs data
clear
import delimited "https://raw.githubusercontent.com/descarteslabs/DL-COVID-19/master/DL-us-mobility-daterow.csv", encoding(ISO-8859-9) stringcols(6) 

    di "Drop state aggregates:"
        drop if admin2==""
    di "Drop improbable outliers (n=490 or <0.4% of observations N=130,685):"
        drop if m50_index>200

    * Format date
        gen date2=date(date,"YMD")
            format date2 %td
                drop date
                    rename date2 date

    * Note data start and end dates for graphs
        su date 
            local latest: disp %td r(max)
                di "`latest'"
            local earliest: disp %td r(min)
                di "`earliest'"

    * Rename variables for consistency
        rename admin1 state
        rename admin2 county


save dl_x_valid, replace

// Process Google app check-in data
clear
import delimited "/Users/nabarun/Documents/GitHub/covid/fips-google-mobility-daily-as-of-04-20-20.csv", stringcols(1) numericcols(5 6 8)  

    * Format date
        gen date=date(report_date, "YMD")
            format date %td
                order date, first
                    drop report_date

    * Note data start and end dates for graphs
        su date 
            local latest: disp %td r(max)
                di "Latest: " "`latest'"
            local earliest: disp %td r(min)
                di "Earliest: " "`earliest'"

    save google_x_valid, replace
    

// Merge by date and county, retain
    merge 1:1 date fips using dl_x_valid

    tab _merge
        keep if _merge==3
            drop _merge country_code admin_level

    * Variable cleanup
    destring retail_and_recreation_percent_ch grocery_and_pharmacy_percent_cha workplaces_percent_change_from_b, replace force
    rename retail_and_recreation_percent_ch retailrec
    rename grocery_and_pharmacy_percent_cha grocery
    rename workplaces_percent_change_from_b work
    rename residential_percent_change_from_ home
    rename parks_percent_change_from_baseli parks
        la var parks "Parks"
    rename transit_stations_percent_change_ transit
                la var transit "Transit"
    
    gen m50i = m50_index-100
            la var m50i "Re-centered at zero"

    * Correlation matrix on complete case data (n=20,891)
    correlate m50i retailrec grocery work home parks transit
        matrix C = r(C)
     
    * Pairwise correlations
    correlate m50i retailrec
    correlate m50i grocery
    correlate m50i work
    correlate m50i home
    correlate m50i parks
    correlate m50i transit

frame change default

(9 vars, 133,285 obs)

Drop state aggregates:

(2,600 observations deleted)

Drop improbable outliers (n=490 or <0.4% of observations N=130,685):

(490 observations deleted)






    Variable |        Obs        Mean    Std. Dev.       Min        Max
-------------+---------------------------------------------------------
        date |    130,195    21999.54    14.42399      21975      22024


19apr2020


01mar2020



file dl_x_valid.dta saved


(8 vars, 152,039 obs)






    Variable |        Obs        Mean    Std. Dev.       Min        Max
-------------+---------------------------------------------------------
        date |    152,039     21988.1    16.42271      21960      22016


Latest: 11apr2020


Earliest: 15feb2020

file google_x_valid.dta saved


    Result                           # of obs.
    -----------------------------------------
    not matched                        70,280
        from master                    46,062  (_merge==1)
        from using                     24,218  (_merge==2)

    matched                           105,977  (_merge==3)
    -----------------------------------------


                 _merge |      Freq.     Percent        Cum.
------------------------+-----------------------------------
        master only (1) |     46,062       26.13       26.13
         using only (2) |     24,218       13.74       39.87
            matched (3) |    105,977       60.13      100.00
------------------------+-----------------------------------
                  Total |    176,257      100.00

(70,280 observations deleted)


retail_and_recreation_percent_ch: contains nonnumeric characters; replaced as in
> t
(13296 missing values generated)
grocery_and_pharmacy_percent_cha: contains nonnumeric characters; replaced as in
> t
(16918 missing values generated)
workplaces_percent_change_from_b: contains nonnumeric characters; replaced as by
> te
(4687 missing values generated)











(obs=20,880)

             |     m50i retail~c  grocery     work     home    parks  transit
-------------+---------------------------------------------------------------
        m50i |   1.0000
   retailrec |   0.8886   1.0000
     grocery |   0.7168   0.7586   1.0000
        work |   0.8442   0.9074   0.6948   1.0000
        home |  -0.8197  -0.8908  -0.6763  -0.9734   1.0000
       parks |   0.2293   0.3274   0.2975   0.2521  -0.2896   1.0000
     transit |   0.7759   0.8348   0.6688   0.8106  -0.8111   0.3484   1.0000



(obs=92,681)

             |     m50i retail~c
-------------+------------------
        m50i |   1.0000
   retailrec |   0.7649   1.0000


(obs=89,059)

             |     m50i  grocery
-------------+------------------
        m50i |   1.0000
     grocery |   0.5353   1.0000


(obs=101,290)

             |     m50i     work
-------------+------------------
        m50i |   1.0000
        work |   0.7471   1.0000


(obs=49,666)

             |     m50i     home
-------------+------------------
        m50i |   1.0000
        home |  -0.8297   1.0000


(obs=27,182)

             |     m50i    parks
-------------+------------------
        m50i |   1.0000
       parks |   0.2424   1.0000


(obs=41,299)

             |     m50i  transit
-------------+------------------
        m50i |   1.0000
     transit |   0.7088   1.0000



Figure Data

Figure 1

In [26]:
frame change results
list


     +----------------------------------------------------------+
     |           strat   level        avg         LL         UL |
     |----------------------------------------------------------|
  1. |        pcp_rate       1       49.9       45.6       54.7 |
  2. |        pcp_rate       2       54.9       50.3       59.9 |
  3. |        pcp_rate       3       57.9       52.8       63.5 |
  4. |        pcp_rate       4       61.5       56.3       67.1 |
  5. |        pcp_rate       5       73.6       67.6       80.2 |
     |----------------------------------------------------------|
  6. |     uninsured_p       1       10.7         10       11.5 |
  7. |     uninsured_p       2        9.5        8.8       10.2 |
  8. |     uninsured_p       3        8.5        7.9        9.1 |
  9. |     uninsured_p       4          8        7.4        8.6 |
 10. |     uninsured_p       5          7        6.5        7.6 |
     |----------------------------------------------------------|
 11. |      fluvaccine       1         48       46.5       49.5 |
 12. |      fluvaccine       2       48.3       46.8       49.8 |
 13. |      fluvaccine       3       49.4       47.9       50.9 |
 14. |      fluvaccine       4       49.7       48.2       51.2 |
 15. |      fluvaccine       5         51       49.5       52.5 |
     |----------------------------------------------------------|
 16. |        income80       1   118675.2   115059.7   122404.3 |
 17. |        income80       2   122077.6     118468   125797.3 |
 18. |        income80       3   125227.2   121325.9     129254 |
 19. |        income80       4     129432   125624.5   133354.9 |
 20. |        income80       5     139390   135026.4   143894.6 |
     |----------------------------------------------------------|
 21. |     schoollunch       1       40.7       38.4       43.1 |
 22. |     schoollunch       2       37.5       35.4       39.7 |
 23. |     schoollunch       3       35.3       33.3       37.4 |
 24. |     schoollunch       4       33.7       31.7       35.7 |
 25. |     schoollunch       5       32.2       30.4       34.2 |
     |----------------------------------------------------------|
 26. |       foodinsec       1       12.9       12.3       13.6 |
 27. |       foodinsec       2       11.8       11.3       12.4 |
 28. |       foodinsec       3       11.6       11.1       12.2 |
 29. |       foodinsec       4       10.9       10.4       11.4 |
 30. |       foodinsec       5       10.2        9.7       10.7 |
     |----------------------------------------------------------|
 31. |        exercise       1       70.8       67.2       74.7 |
 32. |        exercise       2       76.1       72.5       79.8 |
 33. |        exercise       3       78.2       74.5         82 |
 34. |        exercise       4       82.2       78.6         86 |
 35. |        exercise       5       91.4       87.6       95.4 |
     |----------------------------------------------------------|
 36. |    overcrowding       1        2.4        2.1        2.7 |
 37. |    overcrowding       2        2.2        1.9        2.5 |
 38. |    overcrowding       3        1.9        1.6        2.1 |
 39. |    overcrowding       4        1.9        1.7        2.2 |
 40. |    overcrowding       5        2.1        1.8        2.3 |
     |----------------------------------------------------------|
 41. |           youth       1       25.5         25       26.1 |
 42. |           youth       2         25       24.4       25.5 |
 43. |           youth       3       24.7       24.1       25.2 |
 44. |           youth       4       24.8       24.2       25.3 |
 45. |           youth       5       23.6       23.1       24.1 |
     |----------------------------------------------------------|
 46. |         elderly       1       14.2       13.7       14.7 |
 47. |         elderly       2       14.6       14.1       15.1 |
 48. |         elderly       3       14.9       14.4       15.5 |
 49. |         elderly       4         15       14.5       15.6 |
 50. |         elderly       5       15.2       14.7       15.8 |
     |----------------------------------------------------------|
 51. | segregation_wnw       1       29.1         27       31.3 |
 52. | segregation_wnw       2       29.6       27.6       31.8 |
 53. | segregation_wnw       3       30.1       27.9       32.3 |
 54. | segregation_wnw       4       30.8       28.7         33 |
 55. | segregation_wnw       5       31.9       29.7       34.1 |
     +----------------------------------------------------------+

Methods Detail

Baseline Health Data

In order to identify explanatory health and socioeconomic indicators, we used the 2019 Robert Wood Johnson Foundation (RWJF) County Health Rankings (CHR) dataset.20,23 The publicly available dataset contains dozens of metrics compiled from national surveys and healthcare databases. It is a well-documented public health resource,20 including data from the American Community Survey and Center for Medicare and Medicaid Services.

We compared the intensity of social distancing to 11 metrics: three healthcare, two economic, three structural, and three demographic. These were selected from the CHR dataset because they are established indicators of other health and behavioral outcomes,20 with an emphasis on emergent concerns about equality arising during the pandemic.

Healthcare metrics

To gauge overall baseline healthcare access and utilization, we examined primary care providers per 100,000 population and percent uninsured under age 65 (e.g., Medicare eligibility). As a marker for a closely related preventive health behavior, we examined whether earlier influenza vaccination rates were associated with how much the county was likely to slow down during the current coronavirus outbreak. This was quantified as the percent of annual Medicare enrollees having an annual influenza vaccination.

Economic metrics

We explored two baseline economic metrics, one representing the overall wealth of the community and one proxy for poverty: 80th percentile of annual household income in dollars and the percent of school-age children eligible for subsidized or free lunches.

Structural metrics

Three lifestyle metrics were selected to provide a diverse snapshot of baseline structural factors that could influence defiance of prolonged stay-at-home orders. The percent of people experiencing food insecurity was established from survey responses and a cost-of-food index. Access to exercise opportunities was the percent of population with adequate access to locations for physical activity. The percent of households with overcrowding was based on housing condition surveys.

Demographic metrics

The three demographic metrics were: percent of youth (age under 18 years) because of concerns about non-compliance with stay-at-home orders, the percent of elderly (aged 65 years and above) because they are risk group for COVID-19 mortality, and a residential segregation index (white versus non-white).

Primary Mobility Data

The analytic dataset started with public, anonymized, aggregated county-level (or similar geopolitical units) data from smartphone GPS movement tracing, collected from January 1 through April 15, 2020 in the United States, pre-processed by Descartes Labs (Santa Fe, New Mexico, United States). Raw mobility data generated from location services were processed using a parallel bucket sort to create device-based (e.g., node) records that for a given day are longitudinal.24 Maximum distance mobility (Mmax) was defined as by the maximum Haversine (great circle) distance in kilometers from the first location report.7 Conceptually, this represents the straight-line distance between the first observation and the day’s farthest. Across all reports, the median accuracy of location measurement was 15 to 20 meters. Adjustments were made for poor GPS signal locks, too few observations (less than 10 reports per day), and signal accuracy (50 meter threshold).7 To reduce bias from devices merely transiting through a county (e.g., interstate highways), Mmax is limited to nodes with 8 hours of observation per day. The resulting analysis dataset contained 2,633 of 3,142 US counties.
The pre-processed mobility dataset in this analysis could not be used to identify individuals. Using geotemporally coarse data provides further safeguards for protecting privacy. To this end, the values of Mmax were summarized by taking the median per county-day (m50). The median was indexed against the baseline period February 17 through March 7, 2020 (e.g., before widespread social distancing) to obtain our main study metric: the percentage change in mobility since baseline (m50_index) as a proxy for the intensity of social distancing.

Variable Construction

To account for weekly periodicity in movement (e.g., lower on weekends) we limited analysis to weekdays. To prevent undue influence from single-day variability, we averaged the last 3 weekday values of m50_index: April 13, 14, 15. The resulting distribution approximated a Gaussian function; to reduce outlier influence, we constructed a 5-level inverted stratification of m50_index, where the highest quintile (5) represented the greatest reduction in mobility since baseline, interpreted as the highest 20% of counties in terms of social distancing intensity. Category boundaries for m50_index by quintile were: lowest mobility change (1) +193% to -45.8%, (2) -46.0% to -55.4%, (3) -55.5% to -62.3%, (4) 62.4% to 74.8%, and highest (5) -75.0% to -100%. Only 7 counties (all less than 20,000 population) showed an increase in mobility from baseline and were included in the lowest change category.

Potential Confounders

We adjusted models for two potential confounders. First, state and municipal stay-at-home-orders issued from February through April 2020 were identified by county.25 These orders limited travel to basic necessities and employment in sectors deemed essential. Municipal stay-at-home orders were identified for the eight states that did not have stay-at-home orders.
Second, even though our main outcome was change in mobility from baseline, rurality might be considered a potential confounder due to distances traveled for essential activities. We used federal rural-urban continuum codes (RUCC) to adjust for rurality and transportation connections between city centers and satellite counties.26 Although RUCC can be conceptualized as a 9-point ordinal scale of urbanicity (or rurality), it was modeled using indicator coding to impose fewer assumptions. Other potential spatial and economic confounders (number of solo vehicle commuters, longer vehicle commuting times, and CHR socioeconomic status composite rank) were not included in the final model because they did not meaningful improve model fit.

External Validation

In the context of social distancing, coarse mobility data have the potential for misclassification. One way to cross-validate the findings is to compare these data to more granular location information, such as by type of visited venue. The data came from aggregated and anonymized GPS traces of devices for which the Location History setting within Google apps had been turned on (off by default). Since detailed information on data collection was not available, we did not consider the Google Location Services data appropriate for the primary analysis.
During the study period, Google published county-level datasets showing COVID-19-related mobility changes across six types of venues: grocery and pharmacy; parks, transit stations, retail and recreation, places of residence; and places of work. The metric was percent change in mobility changes since baseline, January 3 to February 6, 2020, controlling for day of week. A validation dataset was created for March 1 to April 11, the overlap period with mobility data used in the primary analyses, for which county-day could be established. Pearson product-moments were calculated for correlations between the six venue-specific changes in mobility and percent change in mobility from baseline in the primary location data. To have confidence in overall mobility change to serve a proxy for social distancing, we expected the strongest correlations with staying at home, transit, work and retail, and less correlation with use of other venues that were permissible or essential during stay-at-home orders.

Statistical Analysis

Datasets were analyzed with Stata MP (version 16, College Station, Texas, United States). Scaled Poisson regression with robust variance estimators was used in base models regressing each of the 11 metrics individually against quintiles of mobility change. Negative binomial (NB2) models were employed when warranted by further overdispersion. The adjusted models included indicator variables to control for rurality/urbanicity. For a given health or socioeconomic indicator, mean and 95% confidence intervals were calculated for each quintile using non-intercept models; pairwise contrasts of percent difference between quintiles were estimated using the full model with adjustment. We intentionally did not include all explanatory variables in a combined multivariable model because we wanted to highlight the individual associations, not explain away the variance. Adjusted model-predicted means and confidence intervals of bivariate associations were plotted visually. For cross-validation, pairwise pearson product-moment correlations were generated, comparing zero-recentered m50_index against percent change from baseline by venue, as reported by Google Location Services users. Code and datasets are available at https://github.com/opioiddatalab/covid.


fin.