Ćwiczenie 3 — odpowiedzi i demonstracja dla prowadzącego

Podstawy dziennikarstwa danych

Autor
Afiliacja

Ben Stanley

Wydział Nauk Społecznych, Uniwersytet SWPS

Opublikowano

25 kwietnia 2026

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_powiatuNominal
  • teryt, powiatID
  • 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

  1. Upload: wklejamy CSV (Ctrl+V) albo wgrywamy plik.
  2. Check & describe: Datawrapper rozpoznaje typy automatycznie. Sprawdzamy: powiattext, ludność i wszystkie kolumny przestępstw → number.
  3. 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”
  4. Publish & embed: publikujemy, zapisujemy link.

Demonstracja B: mapa choropleth powiatów

  1. Visualize → Symbol map / Choropleth map
  2. Wybór mapy: Poland » Powiats
  3. 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.
  4. Value column: przestępstwa_na_100k
  5. 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.
  6. Tytuł: „Stopa przestępczości na 100 tys. mieszkańców, wszystkie powiaty 2025”
  7. 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

  1. Visualize → Scatter plot
  2. X-axis: ludność
  3. Y-axis: przestępstwa_ogółem
  4. Color: typ_powiatu (kategorialny, 2 wartości)
  5. 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.
  6. Tytuł: „Liczba przestępstw idzie w parze z populacją — to skala, nie bezpieczeństwo, tłumaczy nagłówki”
  7. 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.