Ćwiczenie 3 — odpowiedzi i demonstracja dla prowadzącego
Podstawy dziennikarstwa danych
Przeznaczenie: wewnętrzny dokument dla prowadzącego. Zawiera odpowiedzi liczbowe, zalecaną trasę kliknięć w jamovi i Datawrapper oraz decyzje redakcyjne, które warto komentować głośno, kiedy studenci skończą ćwiczenie. Nie udostępniać studentom przed oddaniem ich własnych deliverables.
Pytanie redakcyjne i wniosek
Pytanie: „Gdzie w Polsce jest najwięcej przestępstw — i czy to, co widzimy w nagłówkach, zmienia się, kiedy policzymy to per capita?“
Wniosek, do którego powinna doprowadzić analiza: tak, zmienia się — radykalnie. Dwie top-10 listy (absolut vs per capita) nie mają ani jednego wspólnego powiatu. „Tabloidowa” historia opowiada o wielkich miastach; analiza per capita opowiada o małych powiatach ziemskich, głównie na południu i zachodzie Polski. Decyzja, którą historię opowiadamy, jest redakcyjna, nie techniczna.
Dane obejmują wszystkie 380 polskich powiatów (314 ziemskich + 66 miast na prawach powiatu), z kolumną teryt jako unikalnym kluczem. To rozwiązuje problem 10 par duplikujących się nazw (brzeski, grodziski, świdnicki itd. występują w różnych województwach).
Część 1: analiza w jamovi
Ustawienie typów pomiaru (krok obowiązkowy)
Jeśli pominiecie ten krok, Split by nie zadziała — to najczęstszy błąd studentów:
- województwo, typ_powiatu → Nominal
- teryt, powiat → ID
- wszystkie zmienne liczbowe (ludność, przestępstwa_ogółem, przestępstwa_na_100k oraz pięć kolumn kategorii) → Continuous
Typ zmienia się przez dwuklik na nagłówku kolumny. Uwaga na teryt: jamovi domyślnie rozpozna go jako liczbę (4 cyfry) → trzeba ręcznie zmienić na ID, żeby nie pojawiał się w analizach jako zmienna ciągła.
Krok 1: Exploration → Descriptives (bez Split by)
Wrzucamy do Variables: przestępstwa_ogółem i przestępstwa_na_100k. W panelu Statistics zaznaczamy: Mean, Median, Minimum, Maximum, Std. deviation, Skewness.
Oczekiwane wyniki (należy porównać z tym, co mają studenci):
| Statystyka | przestępstwa_ogółem | przestępstwa_na_100k |
|---|---|---|
| N | 380 | 380 |
| Mean | 1 738,6 | 1 701,5 |
| Median | 1 225,5 | 1 693,4 |
| Minimum | 181 | 400,0 |
| Maximum | 37 809 | 3 431,9 |
| Std. deviation | 2 625,6 | 583,3 |
| Skewness | 8,72 | 0,28 |
Co komentujemy na głos:
- Średnia ogółem (1 739) jest ok. 40 % wyższa od mediany (1 226) — klasyczny sygnał prawoskośnego rozkładu. Warszawa (37 809) ciągnie średnią w górę.
- Skewness 8,72 dla ogółem vs 0,28 dla na_100k — wskaźnik per capita jest praktycznie symetryczny. To jest pedagogical payoff pułapki 4 (agregacja): liczby bezwzględne są zdominowane przez jeden outlier; wskaźnik ujawnia prawdziwy rozkład.
- Konsekwencja dla wykresu: dla ogółem sensowna jest albo skala logarytmiczna, albo pokazanie tylko top N. Dla na_100k skala liniowa jest OK.
Krok 2: Descriptives with Split by typ_powiatu
Ponownie Descriptives, tym razem do Split by wrzucamy typ_powiatu. Patrzymy tylko na przestępstwa_na_100k.
Oczekiwane wyniki:
| typ_powiatu | N | Mean | Median | Min | Max | SD |
|---|---|---|---|---|---|---|
| miejski | 66 | 2 122,4 | 2 130,3 | 1 014,2 | 3 153,0 | 465,3 |
| ziemski | 314 | 1 613,0 | 1 590,2 | 400,0 | 3 431,9 | 567,2 |
Co komentujemy:
- Miejskie (66 miast na prawach powiatu) mają wyraźnie wyższą medianę (2 130 vs 1 590) — miasta mają średnio więcej zgłoszonych przestępstw per capita niż powiaty ziemskie. To spójne z ogólną intuicją, ale nie jest pełną historią.
- Ziemskie (314) mają większą rozpiętość (SD 567 vs 465) i obejmują zarówno powiaty o niskiej (400), jak i skrajnie wysokiej (3 432) przestępczości per capita. Zakres ziemskich rozciąga się praktycznie przez cały zakres danych.
- Wniosek: tak, miasta mają w większości wyższe wskaźniki, ale hotspoty per capita są rozrzucone głównie w grupie ziemskiej. Grupa miejska jest bardziej jednorodna; grupa ziemska zawiera wszystkie warianty — od najspokojniejszych do najbardziej problematycznych.
Krok 3: rankingi (sortowanie)
Sortujemy arkusz po kolumnie malejąco (kliknięcie nagłówka → strzałka). Jamovi sortuje widok, a nie plik — jeśli chcecie skopiować top 10, zaznaczcie 10 wierszy i Ctrl+C, albo otwórzcie plik w Excelu/Numbers.
Top 10 po przestępstwa_ogółem (wszystkie 10 to miasta na prawach powiatu):
| # | powiat | województwo | typ | ogółem | na_100k |
|---|---|---|---|---|---|
| 1 | Warszawa | mazowieckie | miejski | 37 809 | 2 031 |
| 2 | Kraków | małopolskie | miejski | 18 877 | 2 347 |
| 3 | Wrocław | dolnośląskie | miejski | 16 034 | 2 379 |
| 4 | Poznań | wielkopolskie | miejski | 15 012 | 2 773 |
| 5 | Łódź | łódzkie | miejski | 10 777 | 1 607 |
| 6 | Szczecin | zachodniopomorskie | miejski | 9 139 | 2 334 |
| 7 | Gdańsk | pomorskie | miejski | 8 688 | 1 788 |
| 8 | Bydgoszcz | kujawsko-pomorskie | miejski | 7 934 | 2 340 |
| 9 | Lublin | lubelskie | miejski | 7 670 | 2 292 |
| 10 | Wałbrzych | dolnośląskie | miejski | 7 215 | 2 929 |
Top 10 po przestępstwa_na_100k (8 ziemskich + 2 miejskie — jest wyjątek!):
| # | powiat | województwo | typ | ogółem | na_100k |
|---|---|---|---|---|---|
| 1 | międzyrzecki | lubuskie | ziemski | 3 433 | 3 432 |
| 2 | legnicki | dolnośląskie | ziemski | 3 894 | 3 350 |
| 3 | goleniowski | zachodniopomorskie | ziemski | 1 674 | 3 275 |
| 4 | lubański | dolnośląskie | ziemski | 2 498 | 3 215 |
| 5 | nyski | opolskie | ziemski | 2 723 | 3 182 |
| 6 | Bytom | śląskie | miejski | 4 648 | 3 153 |
| 7 | strzeliński | dolnośląskie | ziemski | 1 813 | 3 078 |
| 8 | głogowski | dolnośląskie | ziemski | 1 688 | 3 045 |
| 9 | Kalisz | wielkopolskie | miejski | 2 615 | 3 021 |
| 10 | bieszczadzki | podkarpackie | ziemski | 2 260 | 3 014 |
Co komentujemy (to jest moment dydaktyczny seminarium):
- Zero powiatów znajduje się w obu top-10 listach (absolut vs per capita).
- W top 10 per capita: 8 ziemskich + 2 miejskie (Bytom, Kalisz). To jest subtelniejsza historia niż „wszystkie top ziemskie” — daje studentom niuans: są miasta, które wyróżniają się też per capita, ale większość top-10 to ziemskie powiaty peryferyjne.
- Geograficznie: top-10 per capita jest zdominowane przez zachód Polski (dolnośląskie × 4: legnicki, lubański, strzeliński, głogowski; lubuskie: międzyrzecki; zachodniopomorskie: goleniowski). Tylko bieszczadzki jest z południowego wschodu.
- Nagłówek tabloidowy „Warszawa najbardziej niebezpieczna” jest arytmetycznie prawdziwy i redakcyjnie oszukańczy — wynika z populacji, nie ze stopy przestępczości.
- Dobre propozycje nagłówka dla tego wykresu:
- „Najwięcej zgłoszeń w Warszawie, ale stopa przestępczości najwyższa w międzyrzeckim”
- „Per capita — to nie największe miasta są liderami”
- „Dolnośląskie dominuje w rankingach stopy przestępczości”
Część 2: wizualizacja w Datawrapper
Rekomendowany wybór dla demonstracji
Wszystkie trzy formaty (ranking, mapa, scatter) są poprawne — nagradzamy studentów za wybór dopasowany do ich historii. Dla demonstracji po ćwiczeniu najmocniejszy dydaktycznie jest ranking top 15 per capita, bo najmocniej pokazuje odwrócenie historii.
Demonstracja A: wykres słupkowy top 15 per capita
- Upload: wklejamy CSV (Ctrl+V) albo wgrywamy plik.
- Check & describe: Datawrapper rozpoznaje typy automatycznie. Sprawdzamy: powiat → text, ludność i wszystkie kolumny przestępstw → number.
- Visualize → Bar chart:
- Value column: przestępstwa_na_100k
- Label column: powiat
- Filtr/limit: Show only → 15 (domyślnie sortowane malejąco)
- Color: highlight na top 3 (wybrać kolor odmienny od reszty)
- Annotate → Axes: oś zaczyna od 0 (domyślne; nie wyłączajcie).
- Tytuł: „Stopa przestępczości na 100 tys. mieszkańców — najwyższa w małych powiatach ziemskich”
- Description: „Ranking 15 powiatów o najwyższym wskaźniku przestępstw na 100 tys. mieszkańców w 2025 r. Żaden z nich nie jest miastem na prawach powiatu.”
- Source: „Dane dydaktyczne — kurs Podstawy dziennikarstwa danych, Uniwersytet SWPS”
- Publish & embed: publikujemy, zapisujemy link.
Demonstracja B: mapa choropleth powiatów
- Visualize → Symbol map / Choropleth map
- Wybór mapy: Poland » Powiats
- Match: w kroku Check & describe Datawrapper pyta, po czym dopasować dane. Wybieramy kolumnę teryt (nie powiat — 10 par nazw się duplikuje, dopasowanie po nazwie pomyliłoby np. brzeski w małopolskim z brzeskim w opolskim). Wszystkie 380 powiatów dopasuje się poprawnie.
- Value column: przestępstwa_na_100k
- Refine → Colors: paleta sekwencyjna, daltonizm-friendly (np. YlOrRd albo Blues). Steps: skośność na_100k wynosi 0,28 (praktycznie symetryczna), więc liniowa skala albo kwantyle — oba są obroń. Dla przestępstwa_ogółem (skośność 8,72) zawsze kwantyle albo skala log, inaczej Warszawa będzie ciemna, reszta mapy jednolita.
- Tytuł: „Stopa przestępczości na 100 tys. mieszkańców, wszystkie powiaty 2025”
- Source + description jak w demonstracji A. Warto dodać: „Kolor według kwantyli; podział 5-klasowy.”
Demonstracja C: scatter plot populacja vs przestępstwa ogółem
- Visualize → Scatter plot
- X-axis: ludność
- Y-axis: przestępstwa_ogółem
- Color: typ_powiatu (kategorialny, 2 wartości)
- Refine: prawie zawsze warto włączyć skalę logarytmiczną dla obu osi — populacja ma zakres 25 tys.–1,86 mln a przestępstwa ogółem 181–37 809. Na liniowej skali Warszawa dominuje a 379 pozostałych powiatów kłębi się w lewym dolnym rogu. Jeśli włączacie log, dopiszcie to w tytule lub podpisie.
- Tytuł: „Liczba przestępstw idzie w parze z populacją — to skala, nie bezpieczeństwo, tłumaczy nagłówki”
- Annotate: linia trendu (regresja) jest dobrym dodatkiem.
Typowe błędy studentów
- Nie ustawili typów pomiaru w jamovi → Split by nic nie zwraca albo pokazuje absurd (średnie policzone z ID).
- Zostawili teryt jako Continuous → w Descriptives pojawia się bezsensowna średnia kodu TERYT = 17 000 i coś. Muszą zmienić typ na ID.
- Łączyli mapę po powiat zamiast teryt → 10 par powiatów się duplikuje; część będzie miała zsumowane wartości z dwóch różnych powiatów, część pójdzie nie na ten powiat. Zawsze łączcie po TERYT.
- Wybrali ogółem, ale nie przyznali tego w tytule → nagłówek typu „Najwyższa przestępczość w Warszawie” bez kontekstu per capita. Sprawdźcie, czy tytuł zawiera rozróżnienie albo je implikuje.
- Oś od zera wyłączona bez powodu → Datawrapper pyta czy chcą to zrobić; odpowiedź domyślnie zostawić włączone.
- Mapa choropleth ze skalą liniową dla ogółem (skośność 8,72) → wyjdzie Warszawa ciemna, cała reszta jednolicie jasna. Skala logarytmiczna lub kwantyle.
- Brak noty metodologicznej „dane dydaktyczne” w Source → niedopuszczalne, nawet dla ćwiczenia.
- Source podany jako dane.gov.pl → dane są fikcyjne; tak pisać nie wolno. Jeśli studenci to zrobili, to jest czerwona flaga i warto omówić na forum grupy.
Self-check (pięć pułapek) — jak interpretować
| # | Pułapka | Typowy fail w tym ćwiczeniu |
|---|---|---|
| 1 | Korelacja vs przyczynowość | Tytuł sugerujący „biedne regiony powodują więcej przestępstw” — nie ma dla tego w danych podstawy, to odwrotna przyczynowość albo confounder |
| 2 | Cherry-picking | Pokazanie tylko top 5 bez zaznaczenia, że to wybór |
| 3 | Oszukujący wykres | Oś nie od zera; czerwono-zielona paleta |
| 4 | Agregacja | Najczęstszy błąd: wybór ogółem bez ostrzeżenia w tytule |
| 5 | Oficjalne ≠ prawdziwe | Brak noty „dane dydaktyczne” albo fałszywe przypisanie do dane.gov.pl |
Jak omawiać publiczne wykresy po ćwiczeniu
Propozycja: 5 minut na początku seminarium 4, nie w tym seminarium. Wybrać 2–3 wykresy z Classroom: jeden mocny (dobra decyzja redakcyjna + czysta wizualizacja), jeden z typowym błędem agregacji, jeden kreatywny (scatter plot z interesującą adnotacją). Nie krytykować imiennie; pytać „co ta wizualizacja komunikuje” i „czy mogłaby komunikować to silniej”.
Ściąga: najczęstsze pytania studentów
„Mapa nie łączy wszystkich powiatów.” Prawdopodobnie próbują łączyć po nazwie. Powiedzcie im, żeby wybrali kolumnę teryt w Check & describe jako klucz dopasowania. Z TERYT wszystkie 380 powiatów dopasuje się bez błędu.
„Który typ wykresu jest ‘najlepszy’?“ Żaden. Najlepszy jest ten, który odpowiada na pytanie waszego nagłówka. Jeśli nagłówek mówi o rankingu, zrobicie słupkowy. Jeśli o geografii, mapę. Jeśli o związku ze skalą, scatter.
„Moja analiza pokazuje coś innego niż odpowiedzi.” Sprawdźcie: (a) typy pomiaru w jamovi, (b) czy nie filtrowaliście przypadkiem podzbioru, (c) czy kolumna jest rzeczywiście przestępstwa_na_100k, nie przestępstwa_ogółem. Jeśli dalej się nie zgadza — pokażcie plik.
„Jak wyeksportować wykres z jamovi?“ Prawy klik → Copy albo Export. Format PNG albo PDF. Dla raportu: PDF.
„Czy mogę użyć wszystkich 380 powiatów na mapie?“ Tak — mapa właśnie do tego jest stworzona. Dla wykresu słupkowego 380 słupków jest nieczytelnych — ograniczcie do top 15–20 i wyraźnie zaznaczcie w tytule, że to top N, nie pełny ranking.