1 Úvod a cieľ

Cieľom je ukázať: načítanie dát, základná kontrola kvality, vizualizácie, deskriptívna štatistika, jednoduché testovanie hypotéz a ilustračná regresia. Výstupy sú interpretované tak, aby bolo jasné, čo jednotlivé výsledky znamenajú.

2 Zdroje dát

Kde hľadať otvorené dáta
  1. Mendeley Data – verejné datasety viazané na publikované výskumy.
  2. Kaggle Datasets – datasety pre data science projekty a súťaže.
  3. R balíky – napr. datasets, wooldridge, nycflights13 (cez príkaz data()).

3 Import vlastných dát: dopravné nehody

Dataset obsahuje informácie o nehode (napr. počasie, osvetlenie, typ zrážky) a tiež premenné opisujúce následky nehody (zranenia) a časové charakteristiky (hodina, deň v týždni, mesiac). V ďalších častiach budú údaje spracované a vizualizované.

Základný prehľad datasetu
Počet riadkov Počet stĺpcov % chýbajúcich hodnôt
209306 14 0

Kontrola chýbajúcich hodnôt (NA) je dôležitá, pretože chýbajúce údaje môžu skresliť výsledky (štatistiky, grafy aj testy). V tejto časti zisťujem, v ktorých premenných sa NA vyskytujú najčastejšie, aby som vedel/a rozhodnúť, či budem musieť niektoré premenné vynechať, filtrovať záznamy alebo použiť jednoduché ošetrenie (napr. pracovať len s dostupnými hodnotami).

4 Príprava dát pre analýzu

Pred samotnou analýzou upravím typy premenných. Kategórie ako počasie alebo osvetlenie sú v CSV často uložené ako text. V R je však vhodnejšie previesť ich na faktory, pretože sa potom správne správajú v grafoch (osi, poradie kategórií) aj v štatistických modeloch (napr. ANOVA alebo regresia s kategóriami).

V ďalších častiach sa zameriam na premenné, ktoré najlepšie opisujú podmienky nehody a jej následky. Ide o kombináciu kategórií (počasie, osvetlenie) a číselných premenných (počet zúčastnených vozidiel, počet zranených a čas nehody).

  • weather_condition – počasie
  • lighting_condition – osvetlenie
  • num_units – počet vozidiel/jednotiek
  • injuries_total – počet zranených
  • crash_hour, crash_day_of_week, crash_month – čas nehody

5 Grafy

V tejto časti pripravím podmnožinu dát len pre nehody za denného svetla (DAYLIGHT). Dôvodom je, že denné a nočné podmienky môžu mať odlišné riziká a priebeh nehôd. Takto získam homogénnejšiu skupinu a scatter graf bude prehľadnejší.

5.1 Scatter: zranenia podľa hodiny (cez deň)

Graf zobrazuje rozptyl počtu zranených pri nehodách za denného svetla v jednotlivých hodinách. Vo väčšine prípadov je počet zranených nízky, no v niektorých hodinách sa objavujú aj nehody s vyšším počtom zranených. To môže súvisieť s vyššou hustotou premávky a vyšším počtom zúčastnených vozidiel v exponovaných časoch dňa.

5.2 Boxplot: zranenia podľa počasia

Boxplot porovnáva medián, kvartily a extrémne hodnoty počtu zranených pri najčastejších typoch počasia. Väčšina nehôd má nízky počet zranených, no pri niektorých podmienkach sa môžu častejšie objaviť aj udalosti s vyšším počtom zranených. Rozdiely medzi kategóriami treba vnímať opatrne – okrem počasia môžu výsledky ovplyvňovať aj iné faktory (intenzita premávky, typ zrážky, počet vozidiel).

5.3 Trend: priemerné zranenia podľa mesiaca

Graf ukazuje, či existuje sezónnosť v priemernom počte zranených. Ak sa v určitých mesiacoch priemer zvyšuje, môže to súvisieť so sezónnymi podmienkami (počasie, viditeľnosť, stav ciest), prípadne so zmenou intenzity premávky. Výsledok je vhodné interpretovať spolu s počtom nehôd v mesiaci (n).

6 Deskriptívna štatistika

V tejto časti sumarizujem premennú injuries_total (počet zranených) podľa kategórií počasia. Cieľom je rýchlo porovnať, či sa pri rôznych poveternostných podmienkach líši typický počet zranených, rozptyl a extrémne hodnoty. Zároveň uvádzam aj počet pozorovaní v kategórii (n) a jej podiel v dátach.

6.1 Tabuľka štatistík podľa počasia

Základné štatistiky počtu zranených podľa počasia
Rozsah dát
Štatistiky (injuries_total)
weather_condition n podiel mean sd min q25 median q75 max
CLEAR 164700 78.7 0.39 0.81 0 0 0 1 21
RAIN 21703 10.4 0.41 0.81 0 0 0 1 15
CLOUDY/OVERCAST 7533 3.6 0.37 0.75 0 0 0 1 11
SNOW 6871 3.3 0.31 0.70 0 0 0 0 7
UNKNOWN 6534 3.1 0.17 0.49 0 0 0 0 6
OTHER 627 0.3 0.48 0.82 0 0 0 1 5
FREEZING RAIN/DRIZZLE 510 0.2 0.46 0.86 0 0 0 1 6
FOG/SMOKE/HAZE 360 0.2 0.44 0.83 0 0 0 1 5
SLEET/HAIL 308 0.1 0.46 0.85 0 0 0 1 6
BLOWING SNOW 127 0.1 0.31 0.75 0 0 0 0 4
SEVERE CROSS WIND GATE 32 0.0 0.25 0.76 0 0 0 0 4
BLOWING SAND, SOIL, DIRT 1 0.0 0.00 NA 0 0 0 0 0

Tabuľka sumarizuje rozdelenie počtu zranených podľa počasia: priemer, štandardnú odchýlku, minimum/maximum a kvartily. Rozdiely medzi kategóriami nemusia byť spôsobené iba počasím – výsledok môžu ovplyvniť aj ďalšie faktory (napr. počet zúčastnených vozidiel, typ zrážky, intenzita premávky). Preto je tabuľka dobrým východiskom, no na presnejšie závery je vhodné doplniť testovanie (ANOVA) a regresný model.

7 Korelačná analýza (heatmapa)

Korelačná analýza pomáha rýchlo zistiť, ktoré numerické premenné spolu súvisia (pozitívne alebo negatívne). Je to užitočné najmä pri výbere premenných do modelu a pri hľadaní vzťahov, ktoré dávajú zmysel. Treba však pamätať, že korelácia neznamená príčinnosť.

Heatmapa ukazuje silu a smer vzťahu medzi numerickými premennými. Najsilnejšie korelácie sa očakávane objavujú medzi jednotlivými typmi zranení (fatal, incapacitating, …), pretože ide o súčasti celkového počtu zranených. Premenná injuries_total býva pozitívne spojená aj s num_units (viac zúčastnených vozidiel často znamená vyššiu závažnosť nehody). Časové premenné (hodina, deň, mesiac) majú zvyčajne slabšie korelácie, čo naznačuje, že samy o sebe nevysvetľujú veľkú časť variability v zraneniach. Korelácia však neznamená príčinný vzťah.

8 Testovanie hypotéz

8.1 t-test: Deň vs. noc

Kontrola: počet záznamov v skupinách pre t-test
lighting_condition Počet záznamov
DAYLIGHT 134109
DARKNESS, LIGHTED ROAD 53378
t-test: DAYLIGHT vs. DARKNESS, LIGHTED ROAD
Priemer (DAYLIGHT) Priemer (DARKNESS, LIGHTED ROAD) Rozdiel (DAY - NIGHT) t df p-hodnota 95% CI
0.3594 0.4575 -0.0981 -22.186 85326.85 0 [-0.107, -0.089]

t-test porovnáva priemerný počet zranených v dvoch skupinách (DAYLIGHT vs. DARKNESS, LIGHTED ROAD). Ak je p-hodnota nízka (napr. < 0.05), rozdiel v priemeroch je štatisticky významný. Zároveň si vždy všimni aj rozdiel priemerov a interval spoľahlivosti (95% CI), aby bolo jasné, aký veľký je rozdiel v praxi.

8.2 ANOVA: vplyv počasia na počet zranených

ANOVA (analýza rozptylu) porovnáva priemerný počet zranených medzi viacerými skupinami (kategóriami počasia). Testuje nulovú hypotézu, že všetky priemery sú rovnaké. Ak vyjde p-hodnota nízka, znamená to, že aspoň jedna kategória počasia sa líši.

ANOVA: vplyv počasia (weather_condition) na počet zranených (injuries_total)
Zdroj Sum Sq Df Mean Sq F p-hodnota
weather_condition 387.5964 11 35.2360 55.252 0
Residuals 133473.8446 209294 0.6377 NA NA

ANOVA testuje, či je priemerný počet zranených (injuries_total) rovnaký pre všetky kategórie počasia (weather_condition). Výsledok ukazuje veľmi nízku p-hodnotu (prakticky 0), preto nulovú hypotézu zamietame. To znamená, že aspoň jedna kategória počasia má odlišný priemerný počet zranených. Zároveň si treba všimnúť, že veľká časť variability ostáva v reziduách, takže samotné počasie vysvetľuje len časť rozdielov – na podrobnejšie vysvetlenie je vhodné doplniť ďalšie premenné alebo regresný model.

9 Lineárna regresia

Regresné koeficienty (OLS): injuries_total ~ num_units + crash_hour + crash_day_of_week + crash_month
Premenná Odhad Std. chyba t hodnota p-hodnota 95% CI Sig
Intercept -0.248 0.011 -22.403 0 [-0.27, -0.226] ***
Počet vozidiel (num_units) 0.323 0.004 74.227 0 [0.315, 0.332] ***
Hodina nehody (crash_hour) -0.002 0.000 -7.916 0 [-0.003, -0.002] ***
Deň v týždni (crash_day_of_week) -0.006 0.001 -6.718 0 [-0.008, -0.004] ***
Mesiac (crash_month) 0.003 0.001 6.013 0 [0.002, 0.004] ***
Note:
Signif. kódy: *** p<0.001, ** p<0.01, * p<0.05, · p<0.1.

Lineárna regresia (OLS) je tu použitá ako jednoduchý ilustračný model, ktorý skúma vzťah medzi počtom zranených (injuries_total) a vybranými faktormi: počtom vozidiel v nehode (num_units) a časom nehody (hodina, deň v týždni, mesiac). Tabuľka zobrazuje odhady koeficientov (smer vplyvu), t-hodnoty, intervaly spoľahlivosti a p-hodnoty – čím je p-hodnota menšia, tým je výsledok štatisticky presvedčivejší (hviezdičky). Najsilnejší a najlogickejší efekt má premenná počet vozidiel (num_units) – koeficient je kladný, takže pri nehode s viacerými vozidlami v priemere očakávame viac zranení. Časové premenné majú v porovnaní s num_units menší vplyv, no môžu zachytávať jemné rozdiely v riziku počas dňa a roka.

Graf predikované vs. skutočné porovnáva hodnoty odhadnuté modelom so skutočnými pozorovaniami. Keďže počet zranených je diskrétna premenná (často 0 alebo 1), body sa prirodzene zhlukujú pri nízkych hodnotách a rozptyl je veľký. Model preto berieme ako orientačný – ukazuje základný trend, ale nie je určený na presné predikcie každého prípadu. Pre presnejšie modelovanie by sa v praxi použili count-modely (Poisson/NegBin) a doplnili by sa ďalšie premenné (typ zrážky, stav vozovky, typ križovatky, rýchlosť, príčina nehody a pod.).

9.1 Štatistiky prispôsobenia modelu

Štatistiky prispôsobenia modelu
R-squared Adj. R-squared F-statistic F p-value AIC BIC Num. obs.
0.026 0.026 1410.997 0 494869.2 494930.7 209306

Hodnoty R-squared a Adjusted R-squared hovoria, akú časť variability v počte zranených model vysvetľuje (pri takýchto dátach býva často nízka, čo nie je automaticky chyba). F-test overuje, či má model ako celok štatistický význam (t. j. či aspoň jedna vysvetľujúca premenná pomáha). Kritériá AIC a BIC sa používajú najmä na porovnávanie viacerých modelov – nižšia hodnota zvyčajne znamená lepší kompromis medzi presnosťou a jednoduchosťou. Na presnejšie vysvetlenie by bolo vhodné doplniť ďalšie faktory (typ zrážky, stav vozovky, typ križovatky, príčina nehody a pod.).

10 Zhrnutie

V tejto práci som spracovala dataset dopravných nehôd a urobila som základnú analýzu v R – od importu údajov, kontroly chýbajúcich hodnôt (NA) a úpravy typov premenných (napr. počasie a osvetlenie na faktory), až po grafy, deskriptívnu štatistiku, testovanie hypotéz a ilustračnú regresiu. Kontrola NA bola dôležitá, aby som videla, v ktorých premenných môžu byť výsledky skreslené a kde je potrebné pracovať len s dostupnými hodnotami.

Grafy ukázali, že väčšina nehôd má nízky počet zranených, no v niektorých hodinách dňa sa objavujú aj prípady s vyšším počtom zranení. Boxploty a tabuľky podľa počasia naznačili rozdiely medzi kategóriami, no tieto rozdiely som interpretovala opatrne, pretože zranenia ovplyvňujú aj ďalšie faktory (napr. počet vozidiel alebo typ zrážky). Korelačná analýza potvrdila očakávané vzťahy: jednotlivé typy zranení spolu silno súvisia a injuries_total má pozitívny vzťah s num_units, teda pri nehodách s viacerými vozidlami býva v priemere viac zranených.

Pri testovaní hypotéz som pomocou t-testu porovnala priemery zranení medzi denným svetlom a tmou na osvetlenej ceste a ANOVA ukázala, že aspoň jedna kategória počasia sa líši v priemernom počte zranených. Na záver som zostavila OLS model, kde najsilnejší a najlogickejší efekt mal počet vozidiel (num_units), zatiaľ čo časové premenné mali skôr menší vplyv. Model beriem ako orientačný – zachytáva trend, ale na presnejšie vysvetlenie by bolo vhodné doplniť ďalšie premenné a zvážiť count-modely (Poisson/NegBin).