Kada duomenys gali padėti priimti sprendimus?

Prieš pusantrų metų mano rašytas dienoraščio įrašas apie duomenų kultūrą organizacijose pastarosiomis savaitėmis vėl iš naujo užkabino skaitytojus: šia tema parašė „Verslo žinios“ ir apie tai nemažai buvo kalbama Login koridoriuose. Matyt, kompanijose duomenų atsiranda vis daugiau, tik dar nelabai aišku, kaip iš jų išpešti naudos.

Kad ir kaip skambėtų neįprastai, manau, jog duomenų analizėje sudėtingiausia yra ne algoritmai ir ne duomenų infrastruktūra. Svarbiausia ne kur stovi jūsų serveriai, kokia kalba parašytos jūsų duomenų apdorojimo programos ar kuris kietas matematikas darys statistinę jūsų klientų analizę. Svarbiausia, ar jūsų kompanijos kultūra leis jums priimti verslo sprendimus remiantis šaltais ir objektyviais duomenimis, nekreipiant dėmesio į vidinį politikavimą ir norą prieš vadovą pasirodyti geresniu nei esi. Iš duomenų analizės jokios naudos (o netgi sakyčiau dar blogiau – ji žalinga!), jeigu ji naudojama tik savo išankstinei nuomonei apginti bei parodyti, kad jūsų padalinys dirba puikiai. Analitikai turėtų būti skatinami ieškoti kontraargumentų vyraujančiai nuomonei, nes duomenys tam ir yra, kad sprendimai būtų priimami ne vien tik pagal vadovo šeštąjį jausmą. Tai nelengva, jei vadovas galvoja, jog jis geriausiai viską išmano, o jam dirba tik jo valią vykdantys pavaldiniai.

Būti atviram pačiam sau nelengva bet kuriam vadovui. Kartais, žvelgiant į duomenis, reikia giliai įkvėpti ir pripažinti klydus: gal visgi už krentančius pardavimus yra kalti ne konkurentai ar oro temperatūra, o ne itin tobulas pačios kompanijos darbas. Gal nepataikyta su rinkodara, gal buvo problema su sandėliu, gal pritrūko vadybininkų, gal buvo broko ar kokių kitų nesklandumų. Duomenų analizės nauda prasideda nuo atvirumo sau, nuo nuoširdaus noro išsiaiškinti, kur yra problemos šaknys ir noro ją išspręsti. O tai neįmanoma, jeigu kompanijoje vyrauja kaltų paieškos kultūra: natūralu, kad visi stengsis duomenis pagražinti ir parodyti save kuo geresnėje šviesoje.

Tad kai šiomis dienomis kas nors manęs paklausia, ko reikia imtis pirmiausia, kad duomenys padėtų priimti verslo sprendimus, atsakau, jog tai vadovų tikėjimas duomenų kultūra ir realus noras prisikasti iki tiesos. Net geriausi algoritmai jūsų verslui nepadės, jei sprendimai ir toliau bus priimami vien tik remiantis nenuginčijama aukščiausio vadovo nuomone arba jei save pagiriant analizės bus naudojamos tik gražesniam paveikslui valdybai pateikti. Pradėti reikia nuo kompanijos kultūros.

Telefonas žino, kada tu nuėjai miegoti

Iš anksto įspėju: tai techniškas įrašas, kuris bus įdomus tik stiprokai užkietėjusiems duomenų analitikams, kurių negąsdina R ar Ruby. Jei šie dalykai jus nelabai domina, štai trumpa įrašo santrauka: jūsų telefonas gali kaupti daug įdomios informacijos apie jūsų judėjimą, mat jis moka būti ir žingsniamačiu. Tuos duomenis galima išsitraukti ir pribraižyti visokių gudrių grafikų, kurie parodo, kad kažkodėl antradieniais ir ketvirtadieniais jūs keliatės valandą anksčiau nei įprastai, 2015 metų gegužę kelias savaites praleidote kitoje Atlanto pusėje ar bent jau panašioje laiko zonoje, o tų pačių metų rugsėjo pradžioje buvote vakarėlyje, iš kurio grįžote apie 2 valandą ryto.

Išsitraukti duomenis iš iPhone telefono nesudėtinga: keli mygtukų paspaudimai, keletas minučių laukimo, ir sugeneruojamas nemažas XML archyvas. Jame yra ne vien tik nueiti žingsniai ir kilometrai, bet ir visi kiti Health programėlės duomenys: gal ten kada vedėtės savo svorį, gal dar koks Runkeeper ten saugojo bėgimo rezultatus ar panašiai – viskas bus viename archyve. Duomenų nemažokai: per pusantrų metų vien žingsniamačio duomenų buvo virš 130 tūkstančių įrašų. Iki 2015 kovo pabaigos, kai Apple išleido Apple Watch ir atnaujino žingsniamačio programinę įrangą, telefonas per dieną jų sugeneruodavo po kelis tūkstančius eilučių. Vos tik stabteli ir atsiranda naujas įrašas: per paskutinės keturias sekundes nuėjai 3,5 metro. Vėliau jau duomenys užrašinėjami ne tokiu jautrumu, tad duomenų mažiau, ir jie nebe tokie smulkūs (nors suminis nueitų žingsnių/kilometrų kiekis nepakito).

XML su Ruby konvertavau į CSV:

require 'nokogiri'
puts "start,end,source,dist"
doc = File.open('export.xml') { |f| Nokogiri.XML(f) }
doc.xpath("//Record[@type='HKQuantityTypeIdentifierDistanceWalkingRunning']").each do |record|
  puts "#{record['startDate']},#{record['endDate']},#{record['sourceName']},#{record['value']}"
end

Tada su R po nedidelių duomenų pakeitimų (tais atvejais, kai judėjimas tęsiasi per vidurnaktį, reikėjo įrašą išskaidyti į du segmentus: iki vidurnakčio ir po jo) sudėjau visus duomenis ant vieno grafiko. Aišku, kai duomenų eilučių šimtas tūkstančių, tai jis labiau primena baltąjį triukšmą, nors kai kurie dalykai visgi matosi: tarkim, galima matyti, jog 2015 gegužę judėjimo ir ramybės laikas ryškiai pasistūmęs, nes tuo metu buvau už Atlanto.

library(lubridate)
library(ggplot2)
library(data.table)

foo = read.csv("distances.csv")
foo$start_hour = hour(foo$start) + minute(foo$start)/60 + second(foo$start)/3600
foo$end_hour = hour(foo$end) + minute(foo$end)/60 + second(foo$end)/3600

foo_overlap = foo[end_hour < start_hour]
foo_overlap[end_hour < start_hour, start_hour := 0]
foo_overlap[end_hour < start_hour, start := end]
foo$end_hour = ifelse(foo$end_hour < foo$start_hour, 24, foo$end_hour)
foo_awesome = rbind(foo, foo_overlap)

ggplot(foo_awesome) + 
  geom_segment( 
    aes(
      x    = start_hour,
      xend = end_hour,
      y    = as.Date(start),
      yend = as.Date(start)
    ),
    size=0.7) +
  xlab("Paros laikas") + ylab("Data") + 
  scale_x_continuous(breaks=c(0,2,4,6,8,10,12,14,16,18,20,22,24), limits=c(0,24), expand=c(0,0)) + 
  scale_y_date(expand=c(0,0), date_breaks="2 month", date_labels = "%Y %b") + 
  guides(colour=FALSE)
Visi duomenys yra beveik kaip baltas triukšmas
Kai sudedi visus duomenis į vieną grafiką gauni beveik tik triukšmą

Akivaizdu, kad norint pamatyti ką nors gudresnio, reikia duomenis kaip nors pjaustyti ar grupuoti. Parą galima suskaidyti į intervalus po 10 minučių, ir kiekviename šių intervalų pažymėti ar buvo judama ar ne: duomenų kiekis sumažėja ir juos galima žymiai lengviau analizuoti. Grupuojant pagal savaitės dienas grafikas žymiai iškalbingesnis.

Mano aktyvumas pagal savaitės dienas
Mano aktyvumas pagal savaitės dienas: žalia – neaktyvu, kuo raudoniau/balčiau tuo daugiau judėjimo

Čia aiškiai matosi, kad antradieniais ir ketvirtadieniais keliuosi anksčiau, mat nuo 8 ryto einu į baseiną. Darbo dienomis apie 10 valandą būna mažokai judėjimo – tuo metu skaitau elektroninį paštą bei geriu kavą, kaip ir mažiau judėjimo apie 14-15 valandą, kai dirbu produktyviausiai. Savaitgaliais miegu dar ilgiau, o sekmadieniais iš lovos išlipu 9.30. Šeštadienis – aktyviausia diena, o sekmadienio vakaras tingus jau nuo pat 18-19 valandos.

Lietuvos toponimų žemėlapis

Prieš keletą dienų užtikęs smagią Vokietijos miestų priesagų vizualizaciją, užsinorėjau ką nors panašaus papaišyti ir su Lietuvos duomenimis. Juolab, kad tai galimybė pažaisti su vis naujais ir dar nepažintais įrankiais bei programomis: ne vien ką nors įdomaus išpeši iš duomenų, bet ir išmoksti ką nors naujo. Duomenis ėmiau iš geonames, analizei ir piešimui naudojau QGIS, MMQGIS bei Mapbox.

-aičiai yra visiškai žemaitiška priesaga
-aičiai yra visiškai žemaitiška priesaga

Įdomiausios priesagos pasirodė -aičiai ir -onys: pirmieji ryškiai dominuoja Žemaitijoje, o antrųjų pas žemaičius beveik nerasi. -ininkai lyg ir Dzūkijos bei Panemunės mada. -upiai žymiai populiaresni nei -ežeriai, kurių net ežeringiausiuose kraštuose retai sutiksi. Visi žemėlapiai ir priesagos šiame puslapyje.

-onių Žemaitijoje nerasi
-onių Žemaitijoje beveik nerasi

Negalima pasitikėti tuo, ką skaitai apie maisto naudą ar žalą

„Įrodyti“, kad vienas ar kitas maisto produktas yra labai sveikas ar didina grėsmę ligoms yra labai labai LABAI sunku. Todėl ir tiek konfliktuojančių teorijų bei madingų dietų. O gal tiesiog geriausia nekreipti į nieką dėmesio ir valgyti tai, kas patinka.

Šaltinis: You Can’t Trust What You Read About Nutrition | FiveThirtyEight

Kelionės trukmės žemėlapis Vilniuje

Vakar sėdėdamas kasdieniame Vilniaus kamštyje ir prisiminęs ryte skaitytą straipsnį apie paskutines vizualizacijos madas sugalvojau pabraižyti kelionės trukmių žemėlapį: gal čia tik man taip prastokai sekasi, kad tenka keliauti iš Lazdynų į Žirmūnų pabaigą. Per Google Maps API programiniu būdu gana nesunkiai galima išsitraukti planuojamą kelionės trukmę tarp kelių taškų (juos galima nurodyti ir geografinėmis koordinatėmis), tada duomenis sudėti į duomenų bazę ir su Tableau įvairiomis spalvomis perkelti ant žemėlapio. Žemėlapyje vaizduojama kelionės trukmė nuo Jonažolių gatvės Lazdynuose – pasirinkau savo namų atskaitos tašką: kuo žaliau, tuo kelionės trukmė trumpesnė, o kuo raudoniau, tuo keliauti teks ilgiau. Duomenys rinkti antradienio 10.00-10.30 valandą, tad kamščiai jau turėjo būti išsisklaidę.

Kelionės trukmė nuo Jonažolių gatvės
Kelionės trukmė nuo Jonažolių gatvės

Rezultatai gana gražūs ir labai aiškiai parodantys aplinkelių naudą: iš Lazdynų į Pilaitę, Pašilaičius ar Justiniškes patekti nesunku, lygiai taip kaip ir iki oro uosto. Užtat Žirmūnai, Antakalnis ir viskas į rytus nuo šiaurinės Geležinio Vilko gatvės dalies yra lyg kitas miestas: ten dominuoja geltona ir raudonos spalvos. Nors, ne piko metu skųstis nereiktų, mat vis tiek didžiausia prognozuojama kelionės trukmė automobiliu yra maždaug pusvalandis. Tiesa, piko metu vaizdas tikriausiai daug blogesnis: neretai pačiam tenka kamštyje prasėdėti virš valandos.

Duomenų analizė Twitter

Geras straipsnis apie tai, ką reiškia būti duomenų analitiku tokioje didelėje kompanijoje kaip Twitter: ką jie veikia, su kokiomis problemomis susiduria ir kodėl norinčiam knistis dideliuose duomenyse reikia mokėti programuoti. Jei sukūrei modelį R kalba savo kompiuteryje tai dar nereiškia, jog jį bus galima panaudoti praktikoje – ties juo dar nemažai turės prisidėti programuotojai, kol jis galės būti perkeltas į produkcinę aplinką.

Šaltinis: Doing Data Science at Twitter — Medium

Alaus degustavimas: pigūs ir stiprūs nebūtinai yra blogai

Prieš truputį daugiau nei metus su kolegomis darėme eksperimentą: degustuodami įvairaus brangumo vynus bandėme suprasti, ar kaina mums koreliuoja su skoniu. Koreliavo: brangiausias vynas pelnytai buvo populiariausias, net jeigu ir eksperimente dalyvavę somelje buvo ne profesionalūs vyno snobai. Šįmet gimtadienio vakarėlyje eksperimentą pakartojom su skirtingomis alaus rūšimis.

Alus – žymiai demokratiškesnis gėrimas nei vynas, tad šešeto kartų kainų skirtumą parduotuvėse ne taip jau lengva rasti (pernykštėje vynų degustacijoje bandomieji buteliai kainavo nuo 15 iki 100 Lt), bet gerai pasistengus – pavyko. Tiesa, teko pigiausių pavyzdžių ieškoti Kruonio miestelio parduotuvėje, nes tokių prekinių alaus ženklų nesu matęs dideliuose prekybos centruose: alaus „Vo!“, „Grifas“ bei „Žalčio Stipriojo“ litriniai bambaliai kainavo tik apie €0,85. Brangiausiųjų klasę atstovavo ispaniškas „Estrella“ (už litrą kiek daugiau nei €5) bei „London Pride“ (litras – €4). Nors pradžioje galvojau kaip kontrolinį pavyzdį įtraukti visiškai standartinį „Carlsberg“ alų, bet paskutinę minutę pakeičiau jį nealkoholiniu „Bavaria“. Bent jau kiek esu ragavęs nealkoholinio alaus, šis lyg ir buvo visai geriamas. Bent jau leidau sau taip galvoti.

Dešimt degustuotojų atsitiktine tvarka ragavo visas šešias alaus rūšis bei skalėje nuo 1 iki 5 turėjo įvertinti alaus kvapą, skonį bei savo norą testuojamą alų pakartoti. Rezultatai nebuvo visiškai netikėti: brangiausias „Estrella“ surinko daugiausiai balų (nors, net keli degustatoriai sumaišė jį su nealkoholiniu alumi – paragavus keletą stipriųjų Kruonio klasės alaus pavyzdžių, bet koks kitas alus atrodo be alkoholio), o antram brangiausiam „London Pride“ vertinimuose koją pakišo specifinis kartumas. Gal kiek netikėtai nuo nugalėtojo visai nedaug atsiliko alus „Vo!“ bei „Žalčio stiprusis“: tikėtina, jog nesofistikuotoje degustatorių kompanijoje jie būtų visiškai lygiaverčiai varžovai šešetą kartų prabangesniems konkurentams, jei tik turėtų savyje mažiau alkoholio. Bet net ir būdami stiprūs kaip kaimo vyrų prakaitas, kvapu bei skoniu jie gali lygintis su pasaulinio lygio aludarių gaminiais.

Aiškiausias degustacijos nusivylimas – nealkoholinis alus „Bavaria“: jokių šansų konkuruoti su alkoholio pertekusiais varžovais. Jeigu kvapo rungtyje dar buvo kažkokios vilties jog juo mėgautis galima, nuosprendis dėl skonio buvo negailestingas. Ar iš vis būna geriamo nealkoholinio alaus?

Alaus vertinimai
Alaus vertinimai

Visus rezultatus galima parsisiųsti Excel formatu.