Homework 2

What is the data being evaluated and what questions are being asked

The tables will be pulled from the indicators page (https://www.who.int/data/gho/data/indicators), specifically for the assistve technology (AT) indicator, on the WHO website.

Research Questions

  • What is the prevalence for need and use assistive technologies (ATs) across the data?

  • What is the prevalence for need and use of vision related assistive technologies (ATs) within a specific parent location (Europe)? What about across the different countries within Europe?

  • What is the prevalence for need and use of hearing related assistive technologies (ATs) within a specific parent location (Europe)? What about across the different countries within Europe?

  • How does the need and use of ATs compare across parent locations? Are they correlated with each other (e.g. if the need increases, does use increase, decrease or neither)

  • What are the most common types of AT education in each country?

Pull in Data from World Health Organization (WHO)

Pull in Prevalence of AT use Data

prevATUse <- read_csv("Final Project/Prev_Use_AT.csv")
## Rows: 1430 Columns: 34
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr  (15): IndicatorCode, Indicator, ValueType, ParentLocationCode, ParentLo...
## dbl   (3): Period, FactValueNumeric, FactValueTranslationID
## lgl  (15): IsLatestYear, Dim2 type, Dim2, Dim2ValueCode, Dim3 type, Dim3, Di...
## dttm  (1): DateModified
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
head(prevATUse)
## # A tibble: 6 × 34
##   IndicatorCode            Indicator ValueType ParentLocationCode ParentLocation
##   <chr>                    <chr>     <chr>     <chr>              <chr>         
## 1 ASSISTIVETECH_USEPREVAL… Prevalen… numeric   EUR                Europe        
## 2 ASSISTIVETECH_USEPREVAL… Prevalen… numeric   EUR                Europe        
## 3 ASSISTIVETECH_USEPREVAL… Prevalen… numeric   EUR                Europe        
## 4 ASSISTIVETECH_USEPREVAL… Prevalen… numeric   EUR                Europe        
## 5 ASSISTIVETECH_USEPREVAL… Prevalen… numeric   EUR                Europe        
## 6 ASSISTIVETECH_USEPREVAL… Prevalen… numeric   EUR                Europe        
## # ℹ 29 more variables: `Location type` <chr>, SpatialDimValueCode <chr>,
## #   Location <chr>, `Period type` <chr>, Period <dbl>, IsLatestYear <lgl>,
## #   `Dim1 type` <chr>, Dim1 <chr>, Dim1ValueCode <chr>, `Dim2 type` <lgl>,
## #   Dim2 <lgl>, Dim2ValueCode <lgl>, `Dim3 type` <lgl>, Dim3 <lgl>,
## #   Dim3ValueCode <lgl>, DataSourceDimValueCode <lgl>, DataSource <lgl>,
## #   FactValueNumericPrefix <lgl>, FactValueNumeric <dbl>, FactValueUoM <lgl>,
## #   FactValueNumericLowPrefix <lgl>, FactValueNumericLow <lgl>, …

Pull in Prevalence of AT need Data

prevATNeed <- read_csv("Final Project/Prev_Need_AT.csv")
## Rows: 1435 Columns: 34
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr  (15): IndicatorCode, Indicator, ValueType, ParentLocationCode, ParentLo...
## dbl   (3): Period, FactValueNumeric, FactValueTranslationID
## lgl  (15): IsLatestYear, Dim2 type, Dim2, Dim2ValueCode, Dim3 type, Dim3, Di...
## dttm  (1): DateModified
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
head(prevATNeed)
## # A tibble: 6 × 34
##   IndicatorCode           Indicator  ValueType ParentLocationCode ParentLocation
##   <chr>                   <chr>      <chr>     <chr>              <chr>         
## 1 ASSISTIVETECH_TOTALNEED Prevalenc… numeric   AFR                Africa        
## 2 ASSISTIVETECH_TOTALNEED Prevalenc… numeric   AFR                Africa        
## 3 ASSISTIVETECH_TOTALNEED Prevalenc… numeric   AFR                Africa        
## 4 ASSISTIVETECH_TOTALNEED Prevalenc… numeric   AFR                Africa        
## 5 ASSISTIVETECH_TOTALNEED Prevalenc… numeric   AFR                Africa        
## 6 ASSISTIVETECH_TOTALNEED Prevalenc… numeric   AFR                Africa        
## # ℹ 29 more variables: `Location type` <chr>, SpatialDimValueCode <chr>,
## #   Location <chr>, `Period type` <chr>, Period <dbl>, IsLatestYear <lgl>,
## #   `Dim1 type` <chr>, Dim1 <chr>, Dim1ValueCode <chr>, `Dim2 type` <lgl>,
## #   Dim2 <lgl>, Dim2ValueCode <lgl>, `Dim3 type` <lgl>, Dim3 <lgl>,
## #   Dim3ValueCode <lgl>, DataSourceDimValueCode <lgl>, DataSource <lgl>,
## #   FactValueNumericPrefix <lgl>, FactValueNumeric <dbl>, FactValueUoM <lgl>,
## #   FactValueNumericLowPrefix <lgl>, FactValueNumericLow <lgl>, …

Pull in Educational resources for AT Data

eduAT <- read_csv("Final Project/Ava_Edu_AT.csv")
## Rows: 490 Columns: 34
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr  (14): IndicatorCode, Indicator, ValueType, ParentLocationCode, ParentLo...
## dbl   (2): Period, FactValueTranslationID
## lgl  (17): IsLatestYear, Dim2 type, Dim2, Dim2ValueCode, Dim3 type, Dim3, Di...
## dttm  (1): DateModified
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
head(eduAT)
## # A tibble: 6 × 34
##   IndicatorCode     Indicator        ValueType ParentLocationCode ParentLocation
##   <chr>             <chr>            <chr>     <chr>              <chr>         
## 1 ASSISTIVETECH_Q07 Availability of… text      EMR                Eastern Medit…
## 2 ASSISTIVETECH_Q07 Availability of… text      EMR                Eastern Medit…
## 3 ASSISTIVETECH_Q07 Availability of… text      EMR                Eastern Medit…
## 4 ASSISTIVETECH_Q07 Availability of… text      EMR                Eastern Medit…
## 5 ASSISTIVETECH_Q07 Availability of… text      EMR                Eastern Medit…
## 6 ASSISTIVETECH_Q07 Availability of… text      EMR                Eastern Medit…
## # ℹ 29 more variables: `Location type` <chr>, SpatialDimValueCode <chr>,
## #   Location <chr>, `Period type` <chr>, Period <dbl>, IsLatestYear <lgl>,
## #   `Dim1 type` <chr>, Dim1 <chr>, Dim1ValueCode <chr>, `Dim2 type` <lgl>,
## #   Dim2 <lgl>, Dim2ValueCode <lgl>, `Dim3 type` <lgl>, Dim3 <lgl>,
## #   Dim3ValueCode <lgl>, DataSourceDimValueCode <lgl>, DataSource <lgl>,
## #   FactValueNumericPrefix <lgl>, FactValueNumeric <lgl>, FactValueUoM <lgl>,
## #   FactValueNumericLowPrefix <lgl>, FactValueNumericLow <lgl>, …

Clean up the the three data tables before joining them

I checked different columns using distinct function in the console to remove any columns that did not contain any data. I also checked to see if columns have repetitive data (e.g. Dim 1 Type has the same information found in Dim1 and Dim1ValueCode).

I will remove all these columns from all the data sets with the intention to join them when we learn how to do that next week.

#remove `IndicatorCode`, `ValueType`, `ParentLocationCode`, `Location type`, `SpatialDimValueCode`, `Period type`, `IsLatestYear`, `Dim1 type`, `Dim2 type`, `Dim3 type`. `DataSource`, `FactValueNumericPrefix`, `FactValueUoM`, `FactValueNumericLowPrefix`, `FactValueNumericHigh`, `Language` from all the data sets 

prevATUseClean <- prevATUse %>% 
  select(-`IndicatorCode`, -`ValueType`, -`ParentLocationCode`, 
         -`Location type`, -`SpatialDimValueCode`, -`Period type`, 
         -`IsLatestYear`, -`Dim1 type`, -`Dim2 type`, -`Dim3 type`,
         -`DataSource`, -`FactValueNumericPrefix`, -`FactValueUoM`, 
         -`FactValueNumericLowPrefix`, -`FactValueNumericHigh`, -`Language`)

prevATNeedClean <- prevATNeed %>% 
  select(-`IndicatorCode`, -`ValueType`, -`ParentLocationCode`, 
         -`Location type`, -`SpatialDimValueCode`, -`Period type`, 
         -`IsLatestYear`, -`Dim1 type`, -`Dim2 type`, -`Dim3 type`,
         -`DataSource`, -`FactValueNumericPrefix`, -`FactValueUoM`, 
         -`FactValueNumericLowPrefix`, -`FactValueNumericHigh`, -`Language`)

eduATClean <- eduAT %>% 
  select(-`IndicatorCode`, -`ValueType`, -`ParentLocationCode`, 
         -`Location type`, -`SpatialDimValueCode`, -`Period type`, 
         -`IsLatestYear`, -`Dim1 type`, -`Dim2 type`, -`Dim3 type`,
         -`DataSource`, -`FactValueNumericPrefix`, -`FactValueUoM`, 
         -`FactValueNumericLowPrefix`, -`FactValueNumericHigh`, -`Language`)

Re-type variable as needed

#NEED DATA FRAME: make `Value` numeric rather than categorical as it is the decimal of what the prevalence of each assistive technology is in each country
typeof(prevATNeedClean$Value)
## [1] "character"
#NEED DATA FRAME: change Value from character to numeric
prevATNeedClean$Value <- as.numeric(gsub("[^0-9.]", "", prevATNeedClean$Value))

#NEED DATA FRAME: Check the data type again
typeof(prevATNeedClean$Value)
## [1] "double"
#USE DATA FRAME: make `Value` numeric rather than categorical as it is the decimal of what the prevalence of each assistive technology is in each country
typeof(prevATUseClean$Value)
## [1] "character"
#USE DATA FRAME: change Value from character to numeric
prevATUseClean$Value <- as.numeric(gsub("[^0-9.]", "", prevATUseClean$Value))

#USE DATA FRAME: Check the data type again
typeof(prevATUseClean$Value)
## [1] "double"

Shorten names of AT

shortenATLabels <- function(data) {
  shorten <- data %>% 
    mutate(DimUpdated = case_when(
      Dim1 %in% c("Audio-players with DAISY capability") ~ "Audio-players",
      Dim1 %in% c("Grab-bars / Hand rails") ~ "Grab-bars",
      Dim1 %in% c("Braille displays (note takers)") ~ "Braille displays",
      Dim1 %in% c("Braille writing equipment/braillers") ~ "Braille writing", 
      Dim1 %in% c("Closed captioning displays") ~ "CC display",
      Dim1 %in% c("Pressure relief cushions") ~ "Cushions",
      Dim1 %in% c("Deafblind communicators (for seeing/vision)") ~ "Deafblind vision comms.",
      Dim1 %in% c("Gesture to voice technology") ~ "Gesture to voice",
      Dim1 %in% c("Global Positioning System (GPS) locators") ~ "GPS locator",
      Dim1 %in% c("Keyboard and mouse emulation software") ~ "Keyboard/mouse emulation",
      Dim1 %in% c("Orthoses (upper limb)") ~ "Upper orthoses",
      Dim1 %in% c("Personal emergency alarm systems") ~ "Alarm system",
      Dim1 %in% c("Prostheses (lower limb)") ~ "Lower protheses",
      Dim1 %in% c("Prostheses (upper limb)*") ~ "Upper protheses",
      Dim1 %in% c("Ramps, portable") ~ "Portable ramp",
      Dim1 %in% c("Rollators") ~ "Walker",
      Dim1 %in% c("Screen readers") ~ "Screen reader",
      Dim1 %in% c("Simplified mobile phones") ~ "Simplified mobile phones",
      Dim1 %in% c("Smart phones/tablets/PDA (for communication)") ~ "Smart phone for comm",
      Dim1 %in% c("Smart phones/tablets/PDA (for hearing)") ~ "Smart phone for hearing",
      Dim1 %in% c("Smart phones/tablets/PDA (for seeing/vision)") ~ "Smart phone for vision",
      Dim1 %in% c("Therapeutic footwear (diabetic, neuropathic, orthopedic)") ~ "Therapeutic footwear",
      Dim1 %in% c("Travel aids, portable") ~ "Travel aids",
      Dim1 %in% c("Video communication devices") ~ "Video comms",
      Dim1 %in% c("Watches, talking/touching") ~ "Watches",
      Dim1 %in% c("Deafblind communicators (for hearing)") ~ "Deafblind vision hearing",
      Dim1 %in% c("Hearing loops/FM systems") ~ "Hearing loops",
      Dim1 %in% c("Incontinence products, absorbent") ~ "Incontinence Prod",
      Dim1 %in% c("Smart phones/tablets/PDA (for cognition)") ~ "Smart phone for cog.",
      Dim1 %in% c("Standing frames, adjustable") ~ "Standing frames",
      Dim1 %in% c("Time management products") ~ "Time Manag.",
      Dim1 %in% c("Chairs for shower/bath/toilet") ~ "Shower Chairs",
      Dim1 %in% c("Club foot braces") ~ "Foot braces",
      Dim1 %in% c("Communication boards/books/cards") ~ "Comms Boards",
      Dim1 %in% c("Communication software") ~ "Comms software",
      Dim1 %in% c("Magnifiers, digital handheld") ~ "Digital Magnifier",
      Dim1 %in% c("Magnifiers, optical") ~ "Optical magnifier",
      Dim1 %in% c("Orthoses (lower limb)") ~ "Lower Orthoses",
      Dim1 %in% c("Wheelchairs, electrically powered") ~ "Electric wheelchair",
      Dim1 %in% c("Wheelchairs, manual with postural support") ~ "Manual wheelchair",
      Dim1 %in% c("Alarm signalers with light/sound/vibration") ~ "A11y alarm signalers",
      Dim1 %in% c("Orthoses (spinal)") ~ "Spinal Orthoses",
      Dim1 %in% c("walking frames/walkers") ~ "Walker",
      Dim1 %in% c("Manual wheelchairs - push type") ~ "Manual Wheelchair",
      Dim1 %in% c("Manual wheelchairs - basic type for active users") ~ "Manual Wheelchair",
      Dim1 %in% c("Axillary / Elbow crutches") ~ "Crutches",
      Dim1 %in% c("Hearing aids (digital) and batteries") ~ "Hearing Aids",
      Dim1 %in% c("Canes/sticks, tripod and quadripod") ~ "Canes",
      Dim1 %in% c("Spectacles; low-vision, short/long distance/filters etc") ~ "Vision Glasses",
      TRUE ~ as.character(Dim1)
    ))
  return(shorten)
}

Apply shortened names to all three data sets

prevATUseClean1 <- shortenATLabels(prevATUseClean)

prevATNeedClean1 <- shortenATLabels(prevATNeedClean) 

Defining AT to Disability group

During this analysis, I want to have visualizations of the prevalent different types of assistive technology grouped by different accessibility groups. In order to look at all these assistive technologies, I will be grouping them into 6 accessibility/disability categories. I organized it by the accessibility/disability category that I believe it is the most applicable to.

This approach has it limitations. Assistive technology does not ‘belong’ to only one accessibility/disability category as it can be applicable to multiple different disabilities. This is just to give a visual estimation that is visually less overwhelming than seeing 53 individual type of assistive technologies.

Below are how I categorized the assistive technologies.

HEARING - Audio-players - CC display - Gesture to voice - Smart phone for hearing - Deafblind vision hearing - Hearing loops - Hearing Aids - A11y alarm signalers

LOWER BODY MOBILITY - Grab-bars - Cushions - Fall detectors - Lower protheses - Portable ramp - Walker - Therapeutic footwear - Travel aids - tricycles - Standing frames - Shower Chairs - Pressure relief mattresses - Foot braces - Lower Orthoses - Electric wheelchair - Manual wheelchair - Spinal Orthoses - Manual Wheelchair - Crutches - Canes

VISION - Braille displays - Braille writing - Screen reader - Smart phone for vision - White canes - Digital Magnifier - Optical magnifier - Vision Glasses

COGNITION - GPS locator - Alarm system - Pill organizers - Simplified mobile phones - Watches - Incontinence Prod - Smart phone for cog. - Time Manag. - Recorders

UPPER BODY MOBILITY - Keyboard/mouse emulation - Upper orthoses - Upper protheses

SPEECH - Smart phone for comm - Deafblind vision comms. - Video comms - Comms Boards - Comms software

Defining Vision and Hearing AT

Since we will be looking more closely at vision and hearing AT, below I will define what each of the AT to ensure there is no misinterpretation of what is most prevalent

VISION

  • Braille displays: This tool provide access to information on a computer screen by electronically raising and lowering different combinations of pins in braille cells.

  • Braille writing: A tactile writing system used by people who are visually impaired on physical products

  • Screen reader: A tool that renders text and image content from a digitial format to an auditory one.

  • Smart phone for vision: A smart device specifically make for individuals with vision impairment

  • White canes: A mobility device for individuals who are blind to feel their surrounds while moving

  • Digital Magnifier: an electronic reading aid for people

  • Optical magnifier: A magnifying glass

  • Vision Glasses: Glasses that help individuals read or see farther away

HEARING

  • Audio-players: a piece of computer software for playing audio files.

  • CC display: Closed captioning which displays what videos are saying in written form

  • Gesture to voice: any nonverbal communication, such as verbal cues and voice commands, that intends to convey information to the computer.

  • Smart phone for hearing: Use of a smart phone specifically for hearing

  • Deafblind vision used for hearing: Examples of this technology are teletypewriters (TTY) or a telephone device for the deaf (TDD).

  • Hearing loops: Is a system in which an audio source can be transmitted to a devices someone can wear to hear better in circumstances such as pharmacies, information desks, subway ticket counters, auditoriums, etc.

  • Hearing Aids: is small electronic device that you wear in or behind your ear that makes some sounds louder.

  • A11y alarm signalers: Alarms made to alert people who are deaf and/or hard of hearing to changes within their environment.

#Create function so all data frames can have a new column added for accessibility category
a11yCatAdded <- function(data) {
  result <- data %>%
    mutate('Accessibility Category' = case_when(
      `DimUpdated` %in% c(
        "Braille displays",  
        "Braille writing", 
        "Screen reader", 
        "Smart phone for vision", 
        "White canes",
        "Digital Magnifier", 
        "Optical magnifier", 
        "Vision Glasses"
      ) ~ "Vision AT",
      `DimUpdated` %in% c(
        "Audio-players",
        "CC display",
        "Gesture to voice",
        "Smart phone for hearing",
        "Deafblind vision hearing",
        "Hearing loops",
        "Hearing Aids",
        "A11y alarm signalers"
      ) ~ "Hearing AT",
      `DimUpdated` %in% c(
        "Grab-bars", 
        "Cushions",
        "Fall detectors",
        "Lower protheses",
        "Portable ramp",
        "Walker",
        "Therapeutic footwear",
        "Travel aids",
        "tricycles",
        "Standing frames",
        "Shower Chairs",
        "Pressure relief mattresses",
        "Foot braces",
        "Lower Orthoses",
        "Electric wheelchair",
        "Manual wheelchair",
        "Spinal Orthoses",
        "Manual Wheelchair",
        "Canes", 
        "Crutches"
      ) ~ "Lower Mobility AT",
      `DimUpdated` %in% c(
        "GPS locator",
        "Alarm system",
        "Pill organizers",
        "Simplified mobile phones",
        "Watches",
        "Incontinence Prod",
        "Smart phone for cog.",
        "Time Manag.",
        "Recorders"
      ) ~ "Cognition AT",
      `DimUpdated` %in% c(
        "Keyboard/mouse emulation",
        "Upper orthoses",
        "Upper protheses"
      ) ~ "Upper Mobility AT",
      `DimUpdated` %in% c(
        "Smart phone for comm",
        "Deafblind vision comms.",
        "Video comms",
        "Comms Boards",
        "Comms software"
      ) ~ "Speech AT",
      TRUE ~ as.character(`DimUpdated`)
    ))
  return(result)
}

Apply the function to your data frames

prevATUseClean2 <- a11yCatAdded(prevATUseClean1)
prevATNeedClean2 <- a11yCatAdded(prevATNeedClean1)

What countries are included in the different parent areas?

World health organization does not all have the data for all the countries in the world. So the graphs don’t get mis-interperted without being aware of what coutries are included, below is a table of all the countries grouped by their parent location.

#Countries within the use prevalance data frame
countriesPrevATUse <- prevATUseClean2 %>%
  group_by(ParentLocation) %>%
  summarize(
    Locations = toString(unique(Location)),
    LocationCount = n_distinct(Location)
  ) %>% 
  ungroup()
countriesPrevATUse
## # A tibble: 6 × 3
##   ParentLocation        Locations                                  LocationCount
##   <chr>                 <chr>                                              <int>
## 1 Africa                Burkina Faso, Kenya, Liberia, Malawi, Sen…             6
## 2 Americas              Dominican Republic, Guatemala                          2
## 3 Eastern Mediterranean Djibouti, Iran (Islamic Republic of), Ira…             5
## 4 Europe                Azerbaijan, Georgia, Italy, Poland, Swede…             7
## 5 South-East Asia       Indonesia, Maldives, Nepal, Myanmar                    4
## 6 Western Pacific       China, Mongolia                                        2
#Countries within the need prevalance data frame. This is the same as the use data frame
countriesPrevATNeed <- prevATNeedClean2 %>%
  group_by(ParentLocation) %>%
  summarize(
    Locations = toString(unique(Location)),
    LocationCount = n_distinct(Location)
  ) %>% 
  ungroup()

countriesPrevATNeed
## # A tibble: 6 × 3
##   ParentLocation        Locations                                  LocationCount
##   <chr>                 <chr>                                              <int>
## 1 Africa                Burkina Faso, Kenya, Liberia, Senegal, To…             6
## 2 Americas              Dominican Republic, Guatemala                          2
## 3 Eastern Mediterranean Djibouti, Iran (Islamic Republic of), Ira…             5
## 4 Europe                Poland, Sweden, Tajikistan, Ukraine, Azer…             7
## 5 South-East Asia       Indonesia, Maldives, Nepal, Myanmar                    4
## 6 Western Pacific       China, Mongolia                                        2
# for reference the Americas can actually be broken down into 4 areas (North America, South America, The Caribbean, Central America) Within those four areas there are 35 countries. This who data frame only has 2 countries data. It is important to take the visualations and data with a large grain of salt. It will not be representative of the parent areas. 

#Countries within the education avaliability data frame. This is the same as the use data frame. This is more represenative than the other two data frames
countriesEduAT <- eduATClean %>%
  group_by(ParentLocation) %>%
  summarize(
    Locations = toString(unique(Location)),
    LocationCount = n_distinct(Location)
  ) %>% 
  ungroup()

countriesEduAT
## # A tibble: 6 × 3
##   ParentLocation        Locations                                  LocationCount
##   <chr>                 <chr>                                              <int>
## 1 Africa                Gambia, Mali, Mauritius, Niger, Nigeria, …            21
## 2 Americas              Antigua and Barbuda, Brazil, Guatemala, N…            12
## 3 Eastern Mediterranean Afghanistan, Bahrain, Djibouti, Iraq, Jor…            10
## 4 Europe                Belgium, Croatia, Czechia, The former Yug…            16
## 5 South-East Asia       Myanmar, Sri Lanka, Timor-Leste, Bhutan, …             7
## 6 Western Pacific       Brunei Darussalam, Australia, New Zealand…             4

What is the prevalence for need and use assistive technologies (ATs) across the data?

Visualization of need

#organizing the data by grouping by parent country and accessibility (a11y) category type. The summing up the prevalnce of the categorized AT for each parent location. Since not all the data is avaliable for all types of AT, I have it remove NA values
prevNeedA11yCatParentLocation <- prevATNeedClean2 %>%
  group_by(ParentLocation, `Accessibility Category`) %>% 
  summarise(CatMean = mean(FactValueNumeric, na.rm = TRUE)) %>%
  ungroup()
## `summarise()` has grouped output by 'ParentLocation'. You can override using
## the `.groups` argument.
#visualing the different parent locations by AT category. Vision has the most need across all the parent countries followed behind with lower mobility AT. Hearing and hearing AT are very close and switch between 3rd and 4th depending on the parent location
prevNeedA11yCatParentLocation %>% 
  ggplot(aes(x = reorder(`Accessibility Category`, -CatMean), y = CatMean)) +
  geom_bar(stat = "identity", fill = 'lightblue')+ 
  geom_text(aes(label = sprintf("%.2f", CatMean)), vjust = -0.5, color = "white", size = 3) + 
  geom_point(data = prevATNeedClean2, aes(x = reorder(`Accessibility Category`, -FactValueNumeric), y = FactValueNumeric), alpha = 0.2) +  
  theme_dark() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1), plot.title = element_text(hjust = 0.5)) +
  labs(title = "Assistive Tech need prevalence grouped\n by Accessibility category and Parent Location", x = "Assistive Technology Category") +
  scale_y_continuous(name = "Prevalence", labels = scales::percent_format(scale = 1), limits = c(0, 70)) +
  facet_wrap(vars(ParentLocation))
## Warning: Removed 55 rows containing missing values (`geom_point()`).

#because most of the individual data points are from vision AT, it is hear to see the points for the rest of the AT. Here I will decrease the limits ofthe Y axis focus on the AT besides vision. Excluding vision, there is some more variation across the different parent locations for lower body mobility, hearing and cognition. 
prevNeedA11yCatParentLocation %>% 
  ggplot(aes(x = reorder(`Accessibility Category`, -CatMean), y = CatMean)) +
  geom_bar(stat = "identity", fill = 'lightblue')+ 
  geom_text(aes(label = sprintf("%.2f", CatMean)), vjust = -0.5, color = "white", size = 3) + 
  geom_point(data = prevATNeedClean2, aes(x = reorder(`Accessibility Category`, -FactValueNumeric), y = FactValueNumeric), alpha = 0.2) +  
  theme_dark() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1), plot.title = element_text(hjust = 0.5)) +
  labs(title = "Assistive Tech need prevalence grouped\n by Accessibility category and Parent Location y-axis adjusted down", x = "Assistive Technology Category") +
  scale_y_continuous(name = "Prevalence", labels = scales::percent_format(scale = 1), limits = c(0, 10)) +
  facet_wrap(vars(ParentLocation))
## Warning: Removed 75 rows containing missing values (`geom_point()`).

Visualization of Use

prevUseA11yCatParentLocation <- prevATUseClean2 %>%
  group_by(ParentLocation, `Accessibility Category`) %>% 
  summarise(CatMean = mean(FactValueNumeric, na.rm = TRUE)) %>%
  ungroup()
## `summarise()` has grouped output by 'ParentLocation'. You can override using
## the `.groups` argument.
#visualing the different parent locations by AT category. Use follows the same trend as need prevelance although the look a bit lower. 
prevUseA11yCatParentLocation %>% 
  ggplot(aes(x = reorder(`Accessibility Category`, -CatMean), y = CatMean)) +
  geom_bar(stat = "identity", fill = 'lightblue') +
 geom_text(aes(label = sprintf("%.2f", CatMean)), vjust = -0.5, color = "white", size = 3) + 
   geom_point(data = prevATNeedClean2, aes(x = reorder(`Accessibility Category`, -FactValueNumeric), y = FactValueNumeric), alpha = 0.2) + 
  theme_dark() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1), plot.title = element_text(hjust = 0.5)) +
  labs(title = "Assistive Tech use prevalence grouped\n by Accessibility category and Parent Location", x = "Assistive Technology Category") +
  scale_y_continuous(name = "Prevalence", labels = scales::percent_format(scale = 1), limits = c(0, 60)) +
  facet_wrap(vars(ParentLocation))
## Warning: Removed 56 rows containing missing values (`geom_point()`).

#because most of the individual data points are from vision AT, it is hear to see the points for the rest of the AT. Here I will decrease the limits ofthe Y axis focus on the AT besides vision. Excluding vision, there is some more variation across the diffrent parent locations for all AT groups except upper mobility AT. 
prevUseA11yCatParentLocation %>% 
  ggplot(aes(x = reorder(`Accessibility Category`, -CatMean), y = CatMean)) +
  geom_bar(stat = "identity", fill = 'lightblue') +
 geom_text(aes(label = sprintf("%.2f", CatMean)), vjust = -0.5, color = "white", size = 3) + 
   geom_point(data = prevATNeedClean2, aes(x = reorder(`Accessibility Category`, -FactValueNumeric), y = FactValueNumeric), alpha = 0.2) + 
  theme_dark() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1), plot.title = element_text(hjust = 0.5)) +
  labs(title = "Assistive Tech use prevalence grouped by Accessibility\n category and Parent Location y-axis adjusted down", x = "Assistive Technology Category") +
  scale_y_continuous(name = "Prevalence", labels = scales::percent_format(scale = 1), limits = c(0, 10)) +
  facet_wrap(vars(ParentLocation))
## Warning: Removed 75 rows containing missing values (`geom_point()`).

How does the need and use of ATs compare across parent locations?

Join use and need data

#making a table with only the information I need before I join it together. Also re-labeling the value column to be specific to need values
prevNeedA11yCatParentLocation1 <- prevNeedA11yCatParentLocation %>% 
  rename("Need Value" = CatMean)

#re-labeling the value column to be specific to use values
prevUseA11yCatParentLocation1 <- prevUseA11yCatParentLocation %>% 
  rename("Use Value" = CatMean)

#joining the two simplified data frames
prevNeedVsUseParentLocation <- left_join(
  prevNeedA11yCatParentLocation1,
  prevUseA11yCatParentLocation1,
  by = c("ParentLocation", "Accessibility Category")
)
#pivoting longer to column the values in Need Value and Use values

prevNeedVsUseParentLocationLong <- prevNeedVsUseParentLocation %>%
  pivot_longer(c(`Need Value`, `Use Value`), names_to = "PrevType", values_to = "Value")

#making the visualization. Although the bars are next to each other, it is hard to read what the difference in need versus use is for each category. 
prevNeedVsUseParentLocationLong %>% 
  group_by(ParentLocation, `Accessibility Category`, PrevType) %>% 
  summarise(sumValue = sum(Value, na.rm = TRUE)) %>%
  ungroup() %>%
  ggplot(aes(x = reorder(`Accessibility Category`, -sumValue), y = sumValue, fill = PrevType)) +
  geom_bar(stat = "identity", position = "dodge", color = "black") +
  geom_text(aes(label = sprintf("%.2f", sumValue)), position = position_dodge(width = 0.9), vjust = -0.5, color = "black", size = 2) +
  scale_fill_okabeito(name = "Prevalence") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1), plot.title = element_text(hjust = 0.5)) +
  labs(
    title = "Assistive Tech need and use prevalence grouped by\n Accessibility category and Parent Location",
    x = "Assistive Technology Category",
    y = "Prevalence",
    fill = "PrevType"
  ) +
  scale_y_continuous(labels = scales::percent_format(scale = 1), limits = c(0, 5)) +
  facet_wrap(vars(ParentLocation), scales = "free_x")
## `summarise()` has grouped output by 'ParentLocation', 'Accessibility Category'.
## You can override using the `.groups` argument.

Subtracting need versus use to better see the difference

#subtracting the need versus use
prevNeedVsUseParentLocation1 <- prevNeedVsUseParentLocation %>%
  mutate(`Difference Between Need and Use` = (`Use Value` - `Need Value`))


#plot the difference. If it is a positive number then the use is more than the need (colored green). If it is a negative number then the need is more than use (colored red). There is no country that has more use than reported need. Vision has the most difference across the board for all parent countries, which could be coorlated to having the highest need from previous graphs
prevNeedVsUseParentLocation1 %>% 
  ggplot(aes(
    x = reorder(`Accessibility Category`, `Difference Between Need and Use`),
    y = `Difference Between Need and Use`,
    fill = `Difference Between Need and Use`
  )) +
  geom_bar(stat = "identity", position = "dodge", color = "black") +
  geom_text(
    aes(label = sprintf("%.2f",`Difference Between Need and Use`)),
    position = position_dodge(width = 0.9),
    vjust = -0.5,
    color = "black",
    size = 2
  ) +
  scale_fill_gradientn(
    name = "Difference Between Need and Use",
    colors = c("red", "green"),
    values = scales::rescale(c(-5, 5)),
    limits = c(-5, 5)
  ) +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 60, hjust = 1), plot.title = element_text(hjust = 0.5)) +
  labs(
    title = "Assistive Tech need and use prevalence grouped by\n Accessibility category and Parent Location",
    x = "Assistive Technology Category",
    y = "Prevalence",
    fill = "Difference Between Need and Use"
  ) +
  scale_y_continuous(limits = c(-5, 5)) +
  facet_wrap(vars(ParentLocation), scales = "free_x")

By AT

#updating the data frame with specific AT column and removing the a11y category column within the the need prevalence data
prevNeedATParentLocation2 <- prevNeedATParentLocation1 %>% 
  rename("Need Value" = ATMean)


#updating the data frame with specific AT column and removing the a11y category column within the the use prevalence data
prevUsedATParentLocation2 <- prevUseATParentLocation1 %>% 
  rename("Use Value" = ATMean)

#joining the two simplified data frames
prevNeedVsUseATParentLocation <- left_join(
  prevNeedATParentLocation2,
  prevUsedATParentLocation2,
  by = c("ParentLocation", "Location", "DimUpdated")
)

#subtracting the need versus use
prevNeedVsUseATParentLocation1 <- prevNeedVsUseATParentLocation %>%
  mutate(`Difference Between Need and Use` = (`Use Value` - `Need Value`))

# Specific Europe vision difference between need and use. Just like in the other chart, if it is a positive number then the use is more than the need (colored green). If it is a negative number then the need is more than use (colored red). Vision glasses have the highest different with use and need. 
prevNeedVsUseATParentLocation1 %>% 
  filter(`Accessibility Category.x` == "Vision AT", ParentLocation == "Europe") %>%
  group_by(ParentLocation, DimUpdated) %>%
  summarise(`Difference Between Need and Use` = sum(`Difference Between Need and Use`, na.rm = TRUE), .groups = "keep") %>%
  ungroup() %>% 
  ggplot(aes(
    x = reorder(DimUpdated, `Difference Between Need and Use`),
    y = `Difference Between Need and Use`,
    fill = `Difference Between Need and Use`
  )) +
  geom_bar(stat = "identity", position = "dodge", color = "black") +
  geom_text(
    aes(label = `Difference Between Need and Use`),
    position = position_dodge(width = 0.9),
    vjust = -0.5,
    color = "black",
    size = 3
  ) +
  scale_fill_gradientn(
    name = "Difference Between Need and Use",
    colors = c("red", "green"),
    values = scales::rescale(c(-30, 30)),
    limits = c(-30, 30)
  ) +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 60, hjust = 1), plot.title = element_text(hjust = 0.5)) +
  labs(
    title = "Assistive Tech need and use prevalence grouped for\n vision AT within Europe",
    x = "Assistive Technology",
    y = "Prevalence",
    fill = "Difference Between Need and Use"
  ) +
  scale_y_continuous(limits = c(-30, 30)) +
  facet_wrap(vars(ParentLocation), scales = "free_x")

What are the most common types of AT education in each country?

#filter out the no information and counting the different values (full, partial or no coverage)
eduCoverage <- eduATClean %>% 
  filter(Dim1 == "Summary" & Value != "No Information") %>% 
  count(Value)

#graphing how coverage is of total, partial, and no coverage. There is the most with partial coverage, which makes sense as anywere from 1 type to 5 types of training would fit in this category
eduCoverage %>% 
  mutate(Value=factor(Value,levels=c("Total coverage","Partial coverage","No coverage"),ordered=T)) %>%
  ggplot(aes(x = Value, y = n)) +
  geom_bar(stat = "identity", fill='lightblue') +
  geom_text(aes(label = n), vjust = -0.5, color = "white", size = 3) +
  theme_dark() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1), plot.title = element_text(hjust = 0.5)) + 
scale_y_continuous(limits = c(0, 40)) +
  labs(title = "Coverage", x = "Type of Coverage", y = "Number of Countries")

#summarizing the type of coverage across the entire data set
eduATClean1 <- eduATClean %>% 
  group_by(Dim1) %>% 
  summarise(sumValue = sum(Value == "Yes", na.rm = TRUE)) %>%
  ungroup() %>% 
  filter(Dim1 != "Summary" )


#Most common type of Coverage. Traingin related to mobility and vision are the most common
eduATClean1 %>% 
  ggplot(aes(x = reorder(Dim1, -sumValue), y = sumValue)) +
  geom_bar(stat = "identity", fill='lightblue') +
  geom_text(aes(label = sumValue), vjust = -0.5, color = "white", size = 3) +
  theme_dark() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1), plot.title = element_text(hjust = 0.5)) + 
  scale_y_continuous(limits = c(0, 50)) +
  labs(title = "Most common type of Coverage", x = "Type of Coverage", y = "Number of Countries")

Conlusions

Although there is need for all types of assistive technologies across all parent locations, vision vision is the most reported need for assistitve technology. For use of AT vision again is higher but there is even less use of over AT categories across the board.

When specifically looking at vision AT, glasses were by far the most reported AT. From other reports, the prevalance of vision glasses seems inline to other reports (example: https://www.statista.com/statistics/711514/individuals-who-wear-spectacles-in-selected-european-countries/).

For hearing AT need and use across parent locations hearing aids are the most common AT. Anecdotally, I am surprised hearing AT doesn’t have a higher use. There are many ATs that people use even if they do require to use them in order to engage in the digital space (e.g. closed/open captions). It makes me wonder what the methods of obtaining this data was and if it was through self-reporting, then how were those questions framed.

When comparing need and use all the AT and AT categories had a higher need than use. This is to be expected as depending on the assistive technology, they can be quite expensive to obtain (at least in the US). It is more of note that the average need does not have a larger gap to the average use.

Specifically in Europe, vision glasses have a large difference indicating the need is not being meant. This would be a space to dig into further to understand why individuals are not able to get glasses when they need them.

Separately, education on how to use these ATs exist. This data should be looked at separately than the need/use prevalence data as there are more countries represented. It is a limitation that I did not remove countries that occurred in the other two data set for consistency and ability to compare the data across.

Most countries have partial coverage with most education across countries related to mobility and vision, followed closely behind by vision. Additionally, these trainings are not broken down by AT but by broad category (communication, self-care, vision, etc.) which makes it hard to understand what the training actually covers and if it is supporting the users who are using different AT or what topics are being covered.

limitations

This data set has quite limited data on assistive technology use from around the globe as it has many countries missing. Because not all countries are represented in their parent location, viewing visualization based on parent location can be deceiving. For example witin the visualization of “Vision Assistive Tech need prevalence Parent Location”, it looks as though the Americas average prevalance of glasses is ~16%. This would be odd as there are reports within the use that put use of glasses at ~64% (https://thevisioncouncil.org/sites/default/files/assets/media/TVC_OrgOverview_sheet_2021.pdf).

The visualization that are likely most difficult to understand is the difference between use and need combined so as the numbers get closer to 1 there is less of a differnce between the two variables.