Examine Individual Hospital Missingness by Hospital Survey Response

Table 0. Characteristics of Adult Medical and Surgical Hospitals by Survey Response

1 (N=3368) 2 (N=1189) p value
Organization < 0.001
   Govenrnment, nonfederal 685 (20.3%) 271 (22.8%)
   Government, federal 35 (1.0%) 120 (10.1%)
   Investor-owned (for-profit) 385 (11.4%) 278 (23.4%)
   Nongovernment, not-for-profit 2258 (67.0%) 485 (40.8%)
   Other 5 (0.1%) 35 (2.9%)
Teaching hospital < 0.001
   Not a teaching hospital 2007 (59.6%) 799 (67.2%)
   Teaching hospital 1361 (40.4%) 390 (32.8%)
Census Region < 0.001
   Midwest 1076 (31.9%) 280 (23.5%)
   Northeast 432 (12.8%) 112 (9.4%)
   Other 2 (0.1%) 49 (4.1%)
   South 1228 (36.5%) 449 (37.8%)
   West 630 (18.7%) 299 (25.1%)
Census Division < 0.001
   E.N. Central 571 (17.0%) 122 (10.3%)
   E.S. Central 224 (6.7%) 148 (12.4%)
   Mid Atlantic 306 (9.1%) 69 (5.8%)
   Mountain 285 (8.5%) 122 (10.3%)
   New England 126 (3.7%) 43 (3.6%)
   Pacific 345 (10.2%) 177 (14.9%)
   S. Atlantic 466 (13.8%) 211 (17.7%)
   US Territories 2 (0.1%) 49 (4.1%)
   W.N. Central 505 (15.0%) 158 (13.3%)
   W.S. Central 538 (16.0%) 90 (7.6%)
Core-Based Statistical Area Type < 0.001
   Metro 2063 (61.3%) 662 (55.7%)
   Micro 577 (17.1%) 189 (15.9%)
   Rural 728 (21.6%) 338 (28.4%)
Bed size code < 0.001
   >499 272 (8.1%) 27 (2.3%)
   100-199 674 (20.0%) 257 (21.6%)
   200-299 400 (11.9%) 133 (11.2%)
   25-49 718 (21.3%) 287 (24.1%)
   300-399 259 (7.7%) 63 (5.3%)
   400-499 133 (3.9%) 35 (2.9%)
   50-99 481 (14.3%) 202 (17.0%)
   6-24 431 (12.8%) 185 (15.6%)
Total hospital beds (calculated) < 0.001
   Range 2.0 - 3890.0 4.0 - 1532.0
   Mean (SD) 183.3 (229.8) 126.8 (141.5)
   Median (Q1, Q3) 105.5 (27.0, 247.0) 74.0 (25.0, 176.0)

Examine Counties by Percent Missing, Hospitals

For each county, we tally the total number of adult general medical-surgical hospitals that responded to the survey and those that did not respond to the survey. Here we see the county-level percent of hospitals with missing information due to survey non-response.

Extremes (Total N = 3184:
+ The number of counties with 0% hospital survey response = 265
+ The number of counties with 100% hospital survey response = 1925

ggplot(data = full2017_2019, 
       aes(x = percent.missing.hospitals))+
  geom_histogram() +
  theme_bw()

summary(full2017_2019$percent.missing.hospitals)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##     0.0     0.0     0.0    15.2     0.0   100.0     712

Histogram reveals lots of 0s and 100s so lets filter these out, graph and summarize

ggplot(data = subset(full2017_2019, 
                     percent.missing.hospitals != 0 & 
                       percent.missing.hospitals != 100),
       aes(x = percent.missing.hospitals))+
  geom_histogram() +
  theme_bw()

with(subset(full2017_2019, 
            percent.missing.hospitals != 0 &
              percent.missing.hospitals != 100), summary(percent.missing.hospitals))
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    6.00   25.00   50.00   39.23   50.00   80.00

Examine Counties Percent Missing, General Hospital Beds

The AHA still keeps a census on basic information for all hospitals, even ones that do not respond to the annual survey. While they do not keep a tally on ICU beds, they do keep tallies on general hospital beds. In this way, we can tally up all the beds for each county accounted for by responding hospitals which may be a more robust measure of how ‘complete’ the county-level CCR data is.

Extremes (Total N = 3184:
+ The number of counties with 100% hospital beds accounted for by respondent hospitals = 1926
+ The number of counties with 0% hospital beds accounted for by respondent hospitals = 265

ggplot(data = full2017_2019, 
       aes(x = percent.missing.beds))+
  geom_histogram() +
  theme_bw()

summary(full2017_2019$percent.missing.beds)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##    0.00    0.00    0.00   14.27    0.00  100.00     712

N of hospitals with 0s and 100s nearly the same as above, which I guess makes sense if all hospitals not responding…

ggplot(data = subset(full2017_2019, 
                     percent.missing.beds != 0 & 
                       percent.missing.beds != 100),
       aes(x = percent.missing.beds))+
  geom_histogram() +
  theme_bw()

with(subset(full2017_2019, 
            percent.missing.beds != 0 & 
              percent.missing.beds != 100), summary(percent.missing.beds))
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    1.00   13.00   27.00   31.24   48.00   87.00

Now Compare both side by side

ggplot(data = full2017_2019, 
       aes(x = percent.missing.beds,
           y = percent.missing.hospitals))+
  geom_point() +
  geom_abline(slope = 1, intercept = 0) +
  theme_bw()

My interpretation here overall is that percent.missing.beds results in lower magnitude of missingness so I’ll proceed with this variable.

Examine County Hospital Bed Missingness by County Variables

Other AHA variables

ggplot(data = full2017_2019, 
       aes(x = percent.missing.beds,
           y = total.hospitals))+
  geom_point() +
  
  theme_bw()

ggplot(data = full2017_2019, 
       aes(x = percent.missing.beds,
           y = county.hospital.beds.total))+
  geom_point() +
  theme_bw()

ggplot(data = full2017_2019, 
       aes(x = percent.missing.beds,
           y = county.adult.icu.beds))+
  geom_point() +
  theme_bw()

ggplot(data = subset(full2017_2019, county.hospital.beds.total<7500),
       aes(x = percent.missing.beds,
           y = adult_icubeds_per1k))+
  geom_point() +
  
  theme_bw()

ggplot(data = full2017_2019, 
       aes(x = percent.missing.beds,
           y = county.adult.fte))+
    
  geom_point() +
  theme_bw()

ACS variables

ggplot(data = full2017_2019, 
       aes(x = percent.missing.beds,
           y = total.thousands))+
  geom_point() +
    
  theme_bw()

ggplot(data = full2017_2019, 
       aes(x = percent.missing.beds,
           y = perc.minority))+
  geom_point() +
  
  theme_bw()

ggplot(data = full2017_2019, 
       aes(x = percent.missing.beds,
           y = median.fam.income))+
  geom_point() +
  
  theme_bw()

ggplot(data = full2017_2019, 
       aes(x = percent.missing.beds,
           y = median.fam.income))+
  geom_point() +
  
  theme_bw()

ggplot(data = full2017_2019, 
       aes(x = percent.missing.beds,
           y = perc.fam.poverty))+
  geom_point() +
  
  theme_bw()

ggplot(data = full2017_2019, 
       aes(x = percent.missing.beds,
           y = income.disparity))+
  geom_point() +
  
  theme_bw()

ggplot(data = full2017_2019, 
       aes(x = percent.missing.beds,
           y = perc.noinsurance))+
  geom_point() +
  
  theme_bw()