Toto je rychlá zpráva pro Denisu Keru, aby viděla, co je v datech z našeho dotazníku, který jsme distribuovali mým studentům přes Click4Survey. Tato zpráva ukazuje, jak jsem natáhnul data do R, jak je upravil a pak ukazuje rychlé výsledky.

Příprava

Na samém začátku udělám úplně standardní věci:

  • vymažu obsah paměti
  • uložím si do objektu wd cestu k pracovnímu adresáři
  • načtu potřebné package
## FrK 2020-06-23 Vytvořil
## FrK 2022-02-02 Upravil

# Hlavička
rm(list = ls())
wd = getwd()

# Načtení packagí
library(readxl)
library(dplyr)
library(ggplot2)
library(tidyr)
library(forcats)

Natažení dat

Data si musím ručně stáhnout do pracovního adresáře. To za mne kód nevyřeší - vím samozřejmě, že jde stahovat data z netu, ale na C4S nemáme takovou licenci, aby mi to dovolilo data z C4S stáhnout.

# Načtení dat
df = read_xlsx("eRouska_20200627064430_hodnoty.xlsx")


Protože C4S udělá hrozné názvy proměnných - vezme celý text otázky a udělá z něj název - je třeba to přejmenovat. Nejprve jsem zvolil sadu abreviací, která byla zřejmá ze samotného kódu. Ale pak se ukázalo, že je praktičtější, když názvy nesou nějakou, sice hodně stručnou, ale stále plnohodnotnou, charakteristiku proměnné, tedy: Podpora Ministerstva, Anonymizovaná data, Open source řešení, Automatické mazání dat, Data jsou jen v mobilu, Pravidelný dohled. Ale zbytek jsem vyřešil již dříve zmíněnými abreviacemi zřejmými z kódu.

# Přejmenování proměnných
names(df) = c('idO', 'idR', 'dis', 'startD', 'startT', 'endD', 'endT', 'status', 'kvota', 'cas',
              'inst', 'obavy',
              'Ministry support', 'Data anonymized', 'Open source', 
              'Automatic deletion', 'Data on device', 'Independent oversight',
              'dulMin2', 'dulAnon2', 'dulOpen2', 'dulSmaz2', 'dulMob2', 'dulDohl2', 'dohled', 'vek')
## Warning: The `value` argument of `names<-` must have the same length as `x` as of tibble 3.0.0.
## `names` must have length 25, not 26.
head(df[, 11:25])
## # A tibble: 6 x 15
##    inst obavy   `Ministry supp~` `Data anonymiz~` `Open source` `Automatic del~`
##   <dbl> <chr>              <dbl>            <dbl>         <dbl>            <dbl>
## 1     5 Žádné.                NA               NA            NA               NA
## 2     5 Zneuži~               NA               NA            NA               NA
## 3     5 Žádné ~               NA               NA            NA               NA
## 4     5 Příliš~               NA               NA            NA               NA
## 5     2 Únik d~                1                4             6                6
## 6     5 Po sko~               NA               NA            NA               NA
## # ... with 9 more variables: `Data on device` <dbl>,
## #   `Independent oversight` <dbl>, dulMin2 <dbl>, dulAnon2 <dbl>,
## #   dulOpen2 <dbl>, dulSmaz2 <dbl>, dulMob2 <dbl>, dulDohl2 <dbl>, dohled <chr>

Úprava dat

Aby data dobře fungovala a k něčemu byla, je potřeba udělat několik věcí:

  1. v dotazníku je baterie na důležitost jednotlivých opatření dvakrát - jedno znění otázky je pro ty, co se rozholi, že si eRoušku (někdy) nainstalují, druhé pro ty, co se rozhodli, že si ji nenainstalují - je potřeba vše ‘sesypat’, tj. platné odpovědi z druhé baterie zkopírovat místo neplatných hodnot v první, a pak nepotřebnou baterii odmazat
  2. pak je potřeba opravit kódování proměnné df$inst z 1, 2, 5 na 1, 2, 3 a opatřit tyto kategorie vypovídajícími popisky

Nejprve se tedy pustíme do ‘sesypání’. Provedu to for cyklem, není to možná dobrá praxe, ale mně se nějak blbě dělá v R s názvy proměnných, pořadové číslo proměnné je mi nějak milejší, nevím proč, a proto v kódu používám čísla sloupečků/ pořadí proměnných i a i + 6. Podobně, je asi elegantnější způsob, jak se zbavit druhé baterie, ale já to opět řeším přes pořadová čísla proměnných/ sloupečků c(1:18, 25).

# Sesypání proměnných ze dvou baterií do jedné
for (i in 13:18) {
  df[is.na(df[,i]), i] = df[is.na(df[,i]), (i + 6)]
}

# Teď už nepotřebujeme druhou baterii, tak jí odmažeme
df = df[, c(1:18, 25)]


Zbývá poslední věc, a to labelování (opatření popisky kategorií) a logické přečíslování kategorií proměnné df$inst. Jasně, nejdřív to přečíslujeme a potom labelujeme. Opět není překvapivé, že místo názvu zase používám číslo proměnné/ sloupečku.

# Nejdřív proměnnou logicky přečísluju na 1, 2, 3df[df[, 11] == 5, 11] = 3

# Samotné 'labelování'
df = df %>% filter(status == "dokončená") %>%
  mutate(inst = factor(inst, labels = c('Ano', 'Plánuji', 'Ne')))

Přehled proměnných

Protože bude asi Denisu nejvíc ze všeho zajímat, co moji studenti psali do otevřených odpovědí, začnu jejich výpisem. Potom ukážu, kolik lidí si eRoušku nainstalovalo a nakonec dám přehled důležitosti jednotlivých faktorů dohledu.

Obavy

Nejprve obavy (vynechal jsem prázdné odpovědi):

# Výpis obav
df[!is.na(df$obavy),]$obavy
##  [1] "Žádné."                                                                                                                                                                                                                  
##  [2] "Zneužití osobních dat, nepřesnost vzhledem k malému počtu uživatel"                                                                                                                                                      
##  [3] "Žádné obavy nemám, přijde mi to jako skvělý nápad, pouze jsem neměl potřebu aplikaci využít."                                                                                                                            
##  [4] "Příliš konkrétní poskytování informací druhé straně (např. GPS poloha)"                                                                                                                                                  
##  [5] "Únik dat"                                                                                                                                                                                                                
##  [6] "Po skončení pandemie by mohl někdo získaná data zneužít."                                                                                                                                                                
##  [7] "Ano. Aplikace je sice údajně bezpečná a fungující na decentralizované úrovni. Do té doby, dokud ale nebude open source a já nebudu zdatný programátor rozumnějící kódu, nemohou si být jist tím, že neobsahuje backdoor."
##  [8] "Snad jen potencionální únik dat a tvoření podobných aplikací, jež jsou vytvářeny za účelem zneužití dat apod."                                                                                                           
##  [9] "Asi žádné obavy nemám"                                                                                                                                                                                                   
## [10] "Ano, aplikace nepracuje transparentně s daty a neexistuje kontrola smazání dat."                                                                                                                                         
## [11] "Ze šíření osobních údajů"                                                                                                                                                                                                
## [12] "Nemám, pouze o ni nemam zájem"                                                                                                                                                                                           
## [13] "Únik dat"                                                                                                                                                                                                                
## [14] "Nepoužívám, ale obavy s fungováním určitě  nemám."                                                                                                                                                                       
## [15] "Že to nebude dostačující"                                                                                                                                                                                                
## [16] "Ano, o své soukromí"                                                                                                                                                                                                     
## [17] "Ne"                                                                                                                                                                                                                      
## [18] "Jen doufám, že ty informace nikdo nezneužije+"                                                                                                                                                                           
## [19] "Doufám, že to nikdo nezneužije"                                                                                                                                                                                          
## [20] "Obavy z příliš velké kontroly ( sledování podle GPS polohy)"                                                                                                                                                             
## [21] "nízký počet uživatel -> bezúčelnost, pořeba aktivního bluetooth"                                                                                                                                                         
## [22] "Nemám"                                                                                                                                                                                                                   
## [23] "Nemám."                                                                                                                                                                                                                  
## [24] "Že budou údaje o poloze po skončení epidemie zneužity."                                                                                                                                                                  
## [25] "Žádné obavy nemám"                                                                                                                                                                                                       
## [26] "Ani ne."                                                                                                                                                                                                                 
## [27] "Ne"                                                                                                                                                                                                                      
## [28] "Ne"                                                                                                                                                                                                                      
## [29] "Nemám  obavy z jejího užívání, jen můj aktuální telefon mi její užívání neumožňuje."                                                                                                                                     
## [30] "Obavy nemám, jen jsem neměl potřebu aplikaci instalovat"                                                                                                                                                                 
## [31] "Lze skrze podobné aplikace sledovat polohu a získat tak, pro některé, velmi důvěrné informace. Proto je zásadní, aby bylo správné vedení a nic z toho se nemohlo stát."                                                  
## [32] "Nemám"

Dohled

Nyní, jak by si představovali ideální dohled (opět jsem vynechal prázdné odpovědi):

# Výpis ideálních způsobů dohledu
df[!is.na(df$dohled),]$dohled
##  [1] "Nevím."                                                                                                                                                                                                                                                                                                                                                                                                                                
##  [2] "Tak, jak to je aktuálně"                                                                                                                                                                                                                                                                                                                                                                                                               
##  [3] "Nedokážu říci."                                                                                                                                                                                                                                                                                                                                                                                                                        
##  [4] "-"                                                                                                                                                                                                                                                                                                                                                                                                                                     
##  [5] "Aby se o něj staralo co nejméně lidí, samozřejmě profesionálů, kteří ví co dělají."                                                                                                                                                                                                                                                                                                                                                    
##  [6] "Nezávislá agentura vybraná ve výběrovém řízení namátkově kontroluje, zda nejsou data uživatelů zneužívána"                                                                                                                                                                                                                                                                                                                             
##  [7] "Systém zpětných vazeb od širokého množství nezávislých IT odborníků (popřípadě organizací) i veřejnosti."                                                                                                                                                                                                                                                                                                                              
##  [8] "Moc do toho nevidím, asi nějaký kvalitní “bezpečnostní systém”, taktéž vývojáři, jež nezneužijí dat"                                                                                                                                                                                                                                                                                                                                   
##  [9] "Nevím"                                                                                                                                                                                                                                                                                                                                                                                                                                 
## [10] "Open source, anonymizace, data jen v uživatelském zařízení."                                                                                                                                                                                                                                                                                                                                                                           
## [11] "Co nejméně lidí, kteří ví co dělají."                                                                                                                                                                                                                                                                                                                                                                                                  
## [12] "Ideální dohled podle mého názoru neexistuje"                                                                                                                                                                                                                                                                                                                                                                                           
## [13] "Nezávislý dohled někoho, kdo není ovlivněný"                                                                                                                                                                                                                                                                                                                                                                                           
## [14] "Netuším, prostě ať ty lidi mají soudnost a nezkouší ty informace nijak zneužívat"                                                                                                                                                                                                                                                                                                                                                      
## [15] "Netuším, prostě doufám, že lidi budou mít soudnost a nijak ty data nezneužijí"                                                                                                                                                                                                                                                                                                                                                         
## [16] "-"                                                                                                                                                                                                                                                                                                                                                                                                                                     
## [17] "aktuální se mi zdá být dostačující"                                                                                                                                                                                                                                                                                                                                                                                                    
## [18] "Dle mého je dokonalý dohled nemožný. To ho vlastně dělá ideální, že ano? +Pokud bychom tedy mluvili o ideálním, ne reálném dohledu, jako nejvíce vyhovující by byla skupina nezaujatých jedinců, kteří by mohli nahlížet do osobních dat uživatelů této aplikace, popřípadě tak tuto aplikaci kontrolovali. Otázka je v morálním principu tohoto řešení. Jak jsem ale již zmínila, bavíme se v teoretickém, nikoli praktickém měřítku."
## [19] "Ve výběrovém řízení se vybere nezávislá společnost, která bude dohlížet na to, aby data nebyla zneužívána."                                                                                                                                                                                                                                                                                                                            
## [20] "Nevím"                                                                                                                                                                                                                                                                                                                                                                                                                                 
## [21] "Žádný. Nechme rozhodnout samotné uživatele, jestli si tuto aplikaci nainstalují."                                                                                                                                                                                                                                                                                                                                                      
## [22] "Žádný, nechť si každý rozhodne, jestli si aplikaci nainstaluje."                                                                                                                                                                                                                                                                                                                                                                       
## [23] "Nijak jinak nez je doposud"                                                                                                                                                                                                                                                                                                                                                                                                            
## [24] "Tak jak bylo popsáno výše. Pravidelný dohled nad fungováním systému,transparentní metodologie, která sleduje zabezpečení dat. V ideálním světě by aplikace mohla být velmi účinná, kdyby všichni občané měli možnost jejího užití a všichni by jí správně užívali."                                                                                                                                                                    
## [25] "Nemám tušení."                                                                                                                                                                                                                                                                                                                                                                                                                         
## [26] "Do určité míry dohled samotných uživatelů nad fungováním. Vedením musí být pověřen někdo neutrální."

Důležitost

A jako poslední výpis uděláme důležitost jednotlivých způsobů dohledu nad aplikací. Studenti je bodovali na škále 1–10, kde 1 znamenalo ‘absolutně nedůležité’ a 10 ‘maximálně důležité’. Následující výpis udává průměry, mediány, minima, maxima a hranice horního a dolního kvartilu - je to takový boxplot v číslech :)

# Průměrná důležitost
summary(df[, 13:18])
##  Ministry support Data anonymized   Open source     Automatic deletion
##  Min.   : 1.000   Min.   : 1.000   Min.   : 1.000   Min.   : 1.000    
##  1st Qu.: 1.500   1st Qu.: 4.000   1st Qu.: 3.500   1st Qu.: 2.500    
##  Median : 3.000   Median : 7.000   Median : 5.000   Median : 6.000    
##  Mean   : 4.514   Mean   : 6.229   Mean   : 5.286   Mean   : 5.229    
##  3rd Qu.: 7.500   3rd Qu.: 9.000   3rd Qu.: 7.500   3rd Qu.: 8.000    
##  Max.   :10.000   Max.   :10.000   Max.   :10.000   Max.   :10.000    
##  Data on device   Independent oversight
##  Min.   : 1.000   Min.   : 1.000       
##  1st Qu.: 3.000   1st Qu.: 5.000       
##  Median : 7.000   Median : 8.000       
##  Mean   : 6.029   Mean   : 7.057       
##  3rd Qu.: 9.500   3rd Qu.:10.000       
##  Max.   :10.000   Max.   :10.000

Graf

A nakonec si tu uděláme grafický přehled důležitosti těch jednotlivých prvků dohledu. Aby to bylo přehlednější - když mají eRoušku jen 2 - sloučíme kategorie 1 a 2.

# Trochu nešikovné dočištění proměnné
df$rozhodl = df$inst
df[df$rozhodl == 'Plánuji',]$rozhodl = 'Ano'
df$rozhodl = df$rozhodl[, drop = TRUE]
df$`Nainstaluje si eRoušku?` = df$rozhodl
table(df$`Nainstaluje si eRoušku?`)
## 
## Ano  Ne 
##  11  24


Tak a poslední fáze přípravy - reshape data.framu. Pořád mám tendenci dělat tu analýzu jako ve Statě, tj. nasázet tam třeba 6 proměnných. V eRku jsou ale potřeba tidy data, tzn. mít jeden sloupeček s hodnotami a druhý sloupeček s názvy proměnných. A tenhle formát - ve Statě to je long format - je potřeba vytvořit. Nyní jsou totiž data v tzv. wide format.

dfg = df[, c(13:18, 21)] %>%  # Nebudu tam dávat všechny data, ale jen proměnné potřebné pro graf
  pivot_longer(1:6, 
               names_to = "Regulace", 
               values_to = "Důležitost")


Boxplot s jitter points

A co tak udělat za graf? Pro začátek zkusme boxploty překryté scatterplotem.

dfg %>% mutate(`Nainstaluje si eRoušku?` = recode(`Nainstaluje si eRoušku?`, Ano = "Yes", Ne = "No")) %>% 
  ggplot(mapping = aes(fill = `Nainstaluje si eRoušku?`, 
                       col = `Nainstaluje si eRoušku?`,
                       y = `Důležitost`, 
                       x = Regulace)) +
  geom_boxplot(alpha = 0.15) + 
  geom_point(size = 2.5, alpha = 0.35, 
             position = position_jitterdodge(jitter.height = 0.25, 
                                             jitter.width = 0.5,)) +
  labs (
    title = "Differences in importance of selected regulations of e-rouska",
    subtitle = paste0("by decision to install e-rouska. (N=", nrow(df) ,")."),
    x = "",
    y = "Importance (1 - unimportant, 10 - max. important)",
    fill = "Decided to install e-rouska?", col = "Decided to install e-rouska?"
  ) +
  scale_x_discrete(guide = guide_axis(n.dodge = 2)) +
  theme_classic() + 
  theme(
    legend.position = "bottom"
  )

ggsave("Image01.jpg", width = 8)
## Saving 8 x 5 in image

Dat sice není a už ani nebude moc (N=35). Ale i tak je na první pohled vidět velká diverzita lidí, co si eRoušku nenainstalovali - ve všech regulacích jsou víceméně rozprostření rovnoměrně od 1 do 10. Zatím co Ti, co se rozhodli eRoušku nainstalovat, ti - až na Podporu Ministerstva - jsou koncentrovanější a medián je 6–8 (ti co nenainstalovali mají mediány důležitosti jednotlivých regulací 3–9). Rozhodnutí instalovat tedy s vnímáním důležitosti regulací souvisí, teď je ještě otázka jak. Na to budeme muset přijít!

Houslové grafy

Říkám si, že je škoda zůstat u jednoho grafu, tak se totéž ještě pokusím zpracovat jiným typem grafu a uvidíme, co nakonec bude na data nejlépe sedět. Teď vyzkouším houslové grafy. Ty vlastně ukazují distribuci jednotlivých proměnných. Tedy, na rozdíl od box plotu, který jen ukazuje významné body distribuce (kvartily a odlehlé pozorování), houslový graf ukazuje celkové rozmístění, celkovou distribuci bez těch klíčových bodů. Ale my vyzkoušíme variantu, kde to kvartily vykreslí, a také dokreslíme jednotlivá pozorování, jako u box plotu… Asi to bude hodně podobné… ale to nevadí! :)

dfg %>% 
  ggplot(mapping = aes(fill = `Nainstaluje si eRoušku?`, 
                       col = `Nainstaluje si eRoušku?`,
                       y = `Důležitost`, 
                       x = Regulace)) +
  geom_violin(alpha = 0.35, draw_quantiles = c(0.25, 0.5, 0.75)) + 
  geom_point(size = 2.5, alpha = 0.35, 
             position = position_jitterdodge(jitter.height = 0.25, 
                                             jitter.width = 0.5,)) +
  labs (
    title = "Rozdíly ve vnímání důležitosti vybraných způsobů regulace eRoušky",
    subtitle = paste0("podle rozhodnutí nainstalovat eRoušku. (N=", nrow(df) ,")."),
    x = "",
    y = "Důležitost (1 - nedůležité, 10 - max. důležité)"
  ) +
  scale_x_discrete(guide = guide_axis(n.dodge = 2)) +
  theme_classic() + 
  theme(
    legend.position = "bottom"
  )

Hmm… Tohle se mi líbí víc, ale neukazuje to nic výrazně nového. Potvrzuje to ten prvotní dojem, že instalátorům eRoušky záleží na jednotlivých aspektech kontroly dat víc a jsou v tom homogennější. Zatímco skupina, která eRoušku ignoruje je velmi heterogenní - všude je skupina, které na každém aspektu kontroly/regulace dat velmi záleží a skupina, které absolutně ne, a mezi nimi je rozptýlen zbytek. Činí to na mne dojem, že těm, co eRoušku ignorují, na kontrole dat nezáleží.

Data ke stažení

Data jsou ke stažení v *.xlsx. Jednak jako číselné kódy (ty jsem použil v tomhle reportu), ale jsou k dispozici i jako textové labely.