Prace dyplomowe · Dziennikarstwo i komunikacja społeczna

Statystyka w pracy z dziennikarstwa i komunikacji społecznej: analiza zawartości, ankiety odbiorców, eksperymenty i media społecznościowe

Jak policzyć zgodność kodujących w analizie zawartości mediów, porównać ramy informacyjne w dwóch portalach, przeanalizować ankietę odbiorców, eksperyment z nagłówkiem i liczbę komentarzy pod postami: wybór testu, wielkość efektu i gotowe zdania APA – na danych do pobrania, z kodem R.

Strona główna / Blog / Statystyka w dziennikarstwie
W skrócie: W pracy z dziennikarstwa i komunikacji społecznej najczęściej analizujesz zakodowane teksty medialne, ankietę odbiorców, eksperyment z dwiema wersjami przekazu albo liczby reakcji i komentarzy w mediach społecznościowych. W analizie zawartości policz zgodność dwóch kodujących dla każdej zmiennej (alfa Krippendorffa albo kappa), a nie sam odsetek zgodności – w przykładzie 93.3% zgodności dało tylko α = .57. Liczby komentarzy analizuj regresją ujemną dwumianową, bo model Poissona przy nadmiernym rozproszeniu daje za wąskie przedziały: efekt weekendu zmienia się z p < .001 na p = .060.

Pięć typowych projektów w pracy z dziennikarstwa i komunikacji społecznej

Prace dyplomowe z dziennikarstwa i komunikacji społecznej opierają się na dwóch rodzajach materiału. Pierwszym są same media: artykuły, materiały telewizyjne, nagłówki, posty i komentarze. Drugim są ludzie: odbiorcy, czytelnicy, użytkownicy mediów społecznościowych, czasem dziennikarze. W pierwszym przypadku jednostką analizy jest tekst, a dane powstają w wyniku kodowania. W drugim jednostką jest osoba, a dane pochodzą z ankiety albo eksperymentu. Najwięcej problemów sprawiają analizy łączące te dwa światy, np. gdy w jednej pracy pojawia się analiza zawartości i ankieta. Tabela porządkuje pięć projektów omówionych w tym poradniku.

Pięć typowych projektów prac z dziennikarstwa i komunikacji społecznej: pytanie, dane, analiza i wielkość efektu
ProjektTypowe pytanieDaneAnaliza głównaWielkość efektu
1. Analiza zawartości mediówCzy dwa portale różnią się ramami, w jakich przedstawiają wydarzenia?artykuły zakodowane według instrukcji, próba rzetelności kodowana przez dwie osobyalfa Krippendorffa i kappa dla każdej zmiennej, chi-kwadrat z resztamiV Craméra
2. Ankieta odbiorcówCzy zaufanie do mediów zależy od głównego źródła informacji?skala Likerta, pytanie o źródłoANOVA Welcha, test Gamesa–Howellaω², różnice średnich z 95% CI
3. Eksperyment z nagłówkiemCzy nagłówek typu clickbait zmienia ocenę wiarygodności i chęć czytania?losowy przydział do wersji, skala wiarygodności, odpowiedź tak/nietest t Welcha, różnica dwóch proporcjig Hedgesa, różnica odsetków z 95% CI
4. Media społecznościoweCzy posty z wideo dostają więcej komentarzy niż posty z linkiem?liczby komentarzy pod postamiregresja ujemna dwumianowaIRR z 95% CI
5. Rozpoznawanie fałszywych informacjiCzy osoby spędzające więcej czasu w mediach społecznościowych gorzej rozpoznają fałszywe nagłówki?wynik testu 0–12, czas korzystania z mediów, wiekregresja wielorakaR², β z 95% CI

Wszystkie dane w przykładach są symulowane i nie opisują żadnych rzeczywistych redakcji ani portali. Możesz je pobrać jako plik XLSX (osobny arkusz dla każdego projektu i arkusz z opisem) i powtórzyć analizy w dowolnym programie. Jeśli nie wiesz jeszcze, jaki test pasuje do Twoich zmiennych, zacznij od kreatora doboru testu, a ogólny plan pracy znajdziesz w przewodniku statystyka w pracy dyplomowej. Projekty ankietowe są podobne do prac z socjologii, dlatego zajrzyj też do poradnika statystyka w pracy z socjologii, gdzie omawiamy margines błędu, ważenie i regresję logistyczną.

Zanim zaczniesz: jednostka analizy, próba i etyka

Nazwij jednostkę analizy. W analizie zawartości jednostką może być artykuł, akapit, nagłówek, wypowiedź, post albo komentarz. Od tego wyboru zależy, co liczysz: „30% artykułów zawierało ramę konfliktu” to inna informacja niż „30% akapitów”. Ustal jednostkę przed kodowaniem i trzymaj się jej w całej pracy. Gdy w jednym artykule kodujesz kilka wypowiedzi, wypowiedzi z tego samego tekstu nie są niezależne, a zwykły test chi-kwadrat przeszacuje pewność wyniku.

Opisz, jak dobrałeś(-aś) materiał. Najczęściej bierzesz wszystkie teksty z określonego okresu, które zawierają dane słowo kluczowe, albo losujesz dni z kalendarza. Oba sposoby są w porządku, jeśli je opiszesz: jakie media, jaki okres, jakie słowa kluczowe, ile tekstów odrzucono i dlaczego. Wyniki dotyczą tego zbioru tekstów, a nie „polskich mediów” w ogóle. To samo dotyczy ankiety rozesłanej w mediach społecznościowych: osoby, które ją wypełniły, nie reprezentują wszystkich odbiorców mediów.

Pomyśl o etyce danych z sieci. Publicznie dostępny post nie oznacza zgody autora na cytowanie go w pracy. Williams i in. (2017) krytykują publikowanie wpisów z Twittera bez zgody autorów tylko dlatego, że są publiczne i regulamin serwisu na to pozwala. Proponują podejście, które uwzględnia opinie samych użytkowników, kontekst wypowiedzi w sieci i ryzyko identyfikacji osób. W pracy dyplomowej analizuj posty i komentarze w formie zakodowanej, cytuj dosłownie przede wszystkim profile instytucji i redakcji, a wypowiedzi osób prywatnych parafrazuj tak, aby nie dało się ich odnaleźć w wyszukiwarce. Więcej o tym piszemy w poradniku analiza dyskursu w pracy magisterskiej, który pomoże też wtedy, gdy Twoje pytanie dotyczy raczej sposobu konstruowania znaczeń niż liczenia kategorii.

Projekt 1. Analiza zawartości: ramy informacyjne w dwóch portalach

Analiza zawartości (ilościowa analiza treści) to najbardziej typowa metoda prac z dziennikarstwa. Przykład: 240 artykułów o tym samym temacie społecznym, po 120 z dwóch portali (portal A i portal B). Dla każdego artykułu ustalasz dominującą ramę informacyjną, ton, obecność cytowanego eksperta i to, czy tekst wzywa odbiorców do działania. Kategorie ram wzięto z badania Semetko i Valkenburg (2000), które opisały pięć ram: przypisanie odpowiedzialności, konflikt, ludzki wymiar, konsekwencje ekonomiczne i moralność. W ich analizie ponad czterech tysięcy materiałów prasowych i telewizyjnych użycie ram zależało od typu medium, a media sensacyjne częściej sięgały po ramę ludzkiego wymiaru. Takie wcześniejsze badanie dobrze uzasadnia hipotezę i klucz kategorii.

Instrukcja kodowania i próba rzetelności

Zanim zaczniesz kodować wszystkie teksty, przygotuj instrukcję kodowania (książkę kodową): definicję każdej zmiennej, kategorie, przykłady i reguły dla przypadków granicznych. Następnie druga osoba (np. koleżanka z roku po krótkim szkoleniu) koduje niezależnie część materiału. W przykładzie była to losowa próba 60 artykułów (25%). Dopiero gdy zgodność jest zadowalająca, kodujesz resztę. Jeśli zgodność jest słaba, poprawiasz instrukcję i powtarzasz próbę na nowych tekstach, a nie na tych samych.

Lombard i in. (2002) przeanalizowali 200 badań z analizą zawartości i stwierdzili, że autorzy często nie oceniali zgodności kodujących albo podawali tylko odsetek zgodności, który jest zbyt liberalnym wskaźnikiem. Odsetek nie uwzględnia zgodności przypadkowej. Dlatego obok niego podaj kappę Cohena albo alfę Krippendorffa. Hayes i Krippendorff (2007) proponują alfę jako standard dla danych z kodowania, bo działa przy dowolnej liczbie kodujących, różnych poziomach pomiaru i brakach danych. Krippendorff (2004) analizuje popularne współczynniki zgodności, pokazuje, że część obiegowych przekonań o nich jest błędna, i formułuje zalecenia dotyczące testowania rzetelności w analizie treści. Minimalny poziom zgodności ustal przed kodowaniem, zapisz go w planie pracy i uzasadnij cytowaniem, a nie dopiero po zobaczeniu wyników.

Zgodność dwóch kodujących w próbie 60 artykułów: odsetek zgodności, kappa Cohena i alfa Krippendorffa z 95% CI
ZmiennaPoziom pomiaruZgodnośćκ [95% CI]α Krippendorffa [95% CI]
Dominująca ramanominalny, 5 kategorii91.7%.89 [.81, .98].90 [.80, .98]
Ton artykułuporządkowy, 3 kategorie85.0%.75 [.60, .90].84 [.71, .94]
Cytowany ekspertnominalny, tak/nie93.3%.85 [.71, .99].85 [.70, .97]
Wezwanie do działanianominalny, tak/nie93.3%.56 [.18, .95].57 [−.03, .90]

Przy tonie artykułu alfa jest liczona na poziomie porządkowym, więc pomyłka „negatywny – neutralny” waży mniej niż „negatywny – pozytywny”. Zwykła kappa traktuje obie pomyłki jednakowo, dlatego jest niższa. Przy porządkowej zmiennej możesz zamiast niej podać kappę ważoną. Przedziały ufności dla alfy wyznaczono metodą bootstrap, losując artykuły ze zwracaniem.

Zgodność dwóch kodujących w 60 artykułach dla czterech zmiennych: dominująca rama 91.7% zgodności i alfa .90, ton 85.0% i alfa .84, cytowany ekspert 93.3% i alfa .85, wezwanie do działania 93.3% zgodności, ale alfa tylko .57 z przedziałem od −.03 do .90
Rysunek 1. Zgodność dwóch kodujących w próbie rzetelności: odsetek zgodności (trójkąty) i alfa Krippendorffa z 95% CI (punkty). Obliczenia: R (dane symulowane).

Dlaczego 93% zgodności może nie wystarczyć

Rysunek 1 pokazuje typowy problem. Przy zmiennej „wezwanie do działania” kodujący zgadzali się w 93.3% artykułów, tak samo jak przy cytowanym ekspercie. Alfa wynosi jednak tylko .57, a jej przedział ufności sięga od wartości ujemnych do .90. Powód jest prosty: wezwanie do działania pojawiło się rzadko (każda osoba zaznaczyła je w 5 z 60 tekstów, obie zgodnie tylko w 3). Przy tak rzadkiej kategorii zgodność wynika głównie z tego, że oba kodujące wpisują „nie”. Alfa i kappa to wychwytują. Co możesz zrobić? Doprecyzować definicję, dobrać do próby rzetelności więcej tekstów z tą kategorią albo opisać zmienną jako niepewną i nie budować na niej głównych wniosków. Paradoksy kappy przy rzadkich kategoriach omawiamy szerzej w poradniku zgodność sędziów: kappa, ICC i alfa Krippendorffa, a kappę dla dwóch kodujących szybko policzysz w kalkulatorze kappy Cohena.

Porównanie portali: chi-kwadrat i reszty

Po kodowaniu porównujesz rozkład ram w obu portalach. W portalu A najczęstsza była rama odpowiedzialności (34.2%, 41 z 120), a w portalu B rama ludzkiego wymiaru (32.5%, 39 z 120 wobec 15.0% w portalu A). Rozkład ram różnił się między portalami: test chi-kwadrat niezależności χ²(4) = 14.33, p = .006, V Craméra = .24. Najmniejsza liczebność oczekiwana wynosiła 13.0, więc warunek testu był spełniony. Sam test mówi tylko, że rozkłady się różnią. Gdzie leży różnica, pokazują reszty standaryzowane skorygowane: najwięcej wnosi rama ludzkiego wymiaru (3.19 w portalu B) i rama odpowiedzialności (2.31 w portalu A). Jak czytać reszty i co zrobić z małymi liczebnościami, opisujemy w poradniku test chi-kwadrat krok po kroku.

Ta analiza różni się od kodowania odpowiedzi na pytania otwarte w ankiecie, gdzie jednostką jest respondent, a jedna odpowiedź może mieć kilka kodów. Tamtą procedurę opisujemy w poradniku analiza treści pytań otwartych. Przy bardzo dużych zbiorach tekstów (tysiące postów) zamiast ręcznego kodowania możesz użyć metod automatycznych, opisanych w poradniku analiza tekstu w R. Wtedy też warto sprawdzić wynik algorytmu na próbie zakodowanej ręcznie.

Analizą zawartości objęto 240 artykułów (po 120 z portalu A i portalu B). Losową próbę 60 artykułów (25%) zakodowały niezależnie dwie osoby. Zgodność kodowania dominującej ramy wyniosła 91.7%, κ = .89, 95% CI [.81, .98], α Krippendorffa = .90, 95% CI [.80, .98]; tonu artykułu α = .84, 95% CI [.71, .94] (poziom porządkowy); obecności eksperta α = .85, 95% CI [.70, .97]. Zmienną „wezwanie do działania” wyłączono z analiz głównych z powodu niskiej zgodności (α = .57, 95% CI [−.03, .90]). Rozkład dominujących ram różnił się między portalami, χ²(4) = 14.33, p = .006, V Craméra = .24. Portal B częściej niż portal A stosował ramę ludzkiego wymiaru (32.5% wobec 15.0%; reszta skorygowana = 3.19), a rzadziej ramę odpowiedzialności (20.8% wobec 34.2%; reszta = −2.31).

Projekt 2. Ankieta odbiorców: zaufanie do mediów a źródło informacji

Druga duża grupa prac to badania odbiorców. Przykład: 300 osób odpowiedziało na pięć pytań o zaufanie do mediów informacyjnych (skala Likerta 1–5) i wskazało główne źródło informacji: telewizję (n = 91), portale internetowe (n = 114) albo media społecznościowe (n = 95). Rzetelność skali była dobra (alfa Cronbacha = .87), więc wynik policzono jako średnią z pozycji.

Średnie zaufanie wynosiło 3.27 (SD = 0.70) w grupie telewizji, 3.18 (SD = 0.77) w grupie portali i 2.75 (SD = 0.88) w grupie mediów społecznościowych. Grupy mają różne liczebności i różne rozproszenie, dlatego zamiast klasycznej ANOVA użyto ANOVA Welcha. Delacre i in. (2019) pokazali w symulacjach, że przy realistycznych różnicach wariancji klasyczny test F może dawać silnie obciążone wyniki, i zalecają domyślne stosowanie testu Welcha przy porównywaniu średnich. Wynik: F(2, 192.87) = 10.94, p < .001, ω² = .07, 95% CI [.03, 1.00]. Porównania par wykonano testem Gamesa–Howella: osoby korzystające głównie z mediów społecznościowych ufały mediom mniej niż widzowie telewizji (różnica 0.52 punktu, 95% CI [0.25, 0.80], p < .001) i mniej niż użytkownicy portali (0.43, 95% CI [0.16, 0.70], p < .001). Telewizja i portale nie różniły się istotnie (0.09, 95% CI [−0.15, 0.33], p = .654).

To badanie przekrojowe, a źródło informacji ludzie wybierają sami. Wynik nie znaczy więc, że media społecznościowe obniżają zaufanie. Równie dobrze osoby nieufne mogą częściej wybierać media społecznościowe, a obie zmienne mogą zależeć od wieku. W pracy pisz o związku, a nie o wpływie. Jak zbudować kwestionariusz do takiego badania, opisujemy w poradniku jak zrobić ankietę do pracy dyplomowej.

Zaufanie do mediów informacyjnych (5 pozycji, 1–5; α = .87) różniło się w zależności od głównego źródła informacji, ANOVA Welcha: F(2, 192.87) = 10.94, p < .001, ω² = .07, 95% CI [.03, 1.00]. Osoby czerpiące informacje głównie z mediów społecznościowych (n = 95; M = 2.75, SD = 0.88) deklarowały niższe zaufanie niż widzowie telewizji (n = 91; M = 3.27, SD = 0.70; różnica 0.52, 95% CI [0.25, 0.80], p < .001) i użytkownicy portali internetowych (n = 114; M = 3.18, SD = 0.77; różnica 0.43, 95% CI [0.16, 0.70], p < .001; test Gamesa–Howella). Telewizja i portale nie różniły się istotnie, p = .654.

Projekt 3. Eksperyment z nagłówkiem: informacyjny czy clickbait

Eksperyment w pracy dyplomowej wcale nie musi być trudny. Wystarczy ankieta online, w której program losowo pokazuje jedną z dwóch wersji tego samego artykułu. Przykład: 196 osób zobaczyło artykuł z nagłówkiem informacyjnym albo z nagłówkiem typu clickbait (po 98 osób). Treść artykułu była identyczna. Pytanie brzmi, czy wersja nagłówka zmienia ocenę wiarygodności tekstu i chęć przeczytania go w całości. Molyneux i Coddington (2020) w dwóch eksperymentach online zauważyli, że nagłówki typu clickbait mogą obniżać postrzeganą wiarygodność i jakość tekstu. Na takie badanie możesz się powołać, stawiając hipotezę.

Losowanie i sprawdzenie manipulacji

O sile tego schematu decyduje randomizacja: dzięki losowemu przydziałowi grupy różnią się (poza przypadkiem) tylko wersją nagłówka, więc różnicę w wynikach można przypisać nagłówkowi. Najpierw sprawdź, czy manipulacja zadziałała (sprawdzenie manipulacji). Nagłówek clickbaitowy oceniano jako bardziej sensacyjny (M = 5.03, SD = 1.28) niż informacyjny (M = 3.13, SD = 1.27), t(193.99) = 10.41, p < .001. Gdyby ta różnica była mała, brak efektu na wiarygodność niewiele by znaczył, bo uczestnicy mogliby w ogóle nie dostrzec różnicy między wersjami.

Wiarygodność: test Welcha i g Hedgesa

Wiarygodność mierzono czterema pozycjami 1–7 (α = .81). Artykuł z nagłówkiem informacyjnym oceniano jako nieco bardziej wiarygodny (M = 4.72, SD = 0.99) niż z nagłówkiem clickbaitowym (M = 4.46, SD = 0.93). Różnica wyniosła 0.26 punktu, 95% CI [−0.01, 0.53], test t Welcha: t(193.03) = 1.90, p = .059, g Hedgesa = 0.27, 95% CI [−0.01, 0.55]. Wynik nie jest istotny, ale to nie dowód braku efektu. Przedział ufności obejmuje zarówno zero, jak i różnicę bliską pół punktu. Uczciwy wniosek brzmi: „kierunek zgodny z hipotezą, wynik nierozstrzygający przy tej liczebności”. Taki wynik dobrze opisać w dyskusji razem z liczbą osób, której potrzebowałoby kolejne badanie.

Chęć przeczytania całego tekstu: różnica dwóch odsetków

Na pytanie „czy chcesz przeczytać cały artykuł?” odpowiedź „tak” wybrało 42.9% osób z nagłówkiem informacyjnym (42 z 98) i 60.2% z nagłówkiem clickbaitowym (59 z 98). Różnica wyniosła 17.3 punktu procentowego, 95% CI [3.4, 30.4] (przedział Newcombe’a), χ²(1) = 5.90, p = .015. Newcombe (1998) porównał jedenaście metod przedziału ufności dla różnicy dwóch proporcji i wskazał, że prosty przedział Walda ma słabe pokrycie, a metoda łącząca przedziały Wilsona obu proporcji działa dobrze. W przykładzie widać więc ciekawy kompromis: clickbait zwiększa deklarowaną chęć czytania, a jednocześnie może nieco obniżać wiarygodność tekstu. Odsetki w dwóch grupach porównasz bez kodu w kalkulatorze tabeli 2×2, a wybór między testem chi-kwadrat, testem dla dwóch proporcji i przedziałem dla różnicy wyjaśniamy w poradniku jak porównać odsetki w dwóch grupach.

Pamiętaj, że w ankiecie mierzysz deklarowaną chęć, a nie rzeczywiste kliknięcia. Scacco i Muddiman (2020) w badaniu terenowym na stronach dziewięciu lokalnych gazet analizowali faktyczne wybory czytelników i okazało się, że internauci częściej wybierali tradycyjne nagłówki streszczające treść. Deklaracja z ankiety i zachowanie w sieci mogą więc prowadzić do innych wniosków, a w ograniczeniach pracy warto o tym napisać.

Uczestników (N = 196) losowo przydzielono do wersji artykułu z nagłówkiem informacyjnym (n = 98) albo clickbaitowym (n = 98). Manipulacja była skuteczna: nagłówek clickbaitowy oceniano jako bardziej sensacyjny (M = 5.03, SD = 1.28) niż informacyjny (M = 3.13, SD = 1.27), t(193.99) = 10.41, p < .001. Wiarygodność artykułu (4 pozycje, 1–7; α = .81) była nieznacznie wyższa w wersji informacyjnej (M = 4.72, SD = 0.99) niż clickbaitowej (M = 4.46, SD = 0.93), ale różnica nie była istotna, t(193.03) = 1.90, p = .059, g Hedgesa = 0.27, 95% CI [−0.01, 0.55]. Chęć przeczytania całego artykułu zadeklarowało 60.2% osób w wersji clickbaitowej i 42.9% w wersji informacyjnej; różnica 17.3 punktu procentowego, 95% CI [3.4, 30.4], χ²(1) = 5.90, p = .015.

Projekt 4. Media społecznościowe: liczba komentarzy pod postami

Prace o komunikacji w mediach społecznościowych często analizują zaangażowanie: liczbę reakcji, komentarzy albo udostępnień. To są zliczenia: liczby całkowite, nieujemne, zwykle silnie prawoskośne, z kilkoma postami, które „wybuchły”. Przykład: 360 postów jednego profilu redakcji z jednego roku. Dla każdego postu zapisano format (link, zdjęcie, wideo), to, czy opublikowano go w weekend, oraz liczbę komentarzy.

Panel A: liczba komentarzy pod 360 postami według formatu; średnio 8.3 przy linku, 11.8 przy zdjęciu i 18.5 przy wideo, z pojedynczymi postami powyżej 60 komentarzy. Panel B: IRR z 95% CI w modelu Poissona i ujemnym dwumianowym; dla wideo 2.21 [2.05, 2.39] i 2.25 [1.77, 2.85], dla weekendu 0.88 [0.82, 0.94] w modelu Poissona i 0.83 [0.69, 1.01] w modelu ujemnym dwumianowym
Rysunek 2. Liczba komentarzy pod postami według formatu (A) i ilorazy częstości (IRR) z 95% CI w modelu Poissona i ujemnym dwumianowym (B). Obliczenia: R (dane symulowane).

Dlaczego nie test t i nie zwykła regresja

Średnia liczba komentarzy wynosiła 8.3 przy linkach, 11.8 przy zdjęciach i 18.5 przy wideo, ale wariancje były wielokrotnie większe od średnich (np. 234.5 przy wideo). Coxe i in. (2009) wyjaśniają, że przy zliczeniach o niskiej średniej zwykła regresja liniowa może dawać obciążone wyniki, a naturalnym punktem wyjścia jest regresja Poissona. Model Poissona zakłada jednak, że wariancja równa się średniej. Tutaj współczynnik rozproszenia wyniósł 7.86, czyli dane są silnie nadmiernie rozproszone. Wtedy model Poissona daje za małe błędy standardowe i za wąskie przedziały ufności (rysunek 2B). Rozwiązaniem jest regresja ujemna dwumianowa albo model quasi-Poissona. Coxe i in. (2009) opisują oba warianty jako rozwiązanie na wypadek naruszenia kluczowego założenia modelu Poissona. W przykładzie model ujemny dwumianowy dopasował się znacznie lepiej (AIC 2446.4 wobec 4005.0).

Interpretacja: iloraz częstości (IRR)

Współczynniki modelu dla zliczeń po potęgowaniu (exp) dają iloraz częstości (ang. incidence rate ratio, IRR). Posty z wideo miały średnio 2.25 razy więcej komentarzy niż posty z linkiem, 95% CI [1.77, 2.85], p < .001, a posty ze zdjęciem 1.41 razy więcej, 95% CI [1.16, 1.72], p < .001. Format jako całość: test ilorazu wiarygodności χ²(2) = 45.26, p < .001. Najciekawszy jest jednak weekend. W modelu Poissona posty weekendowe miały istotnie mniej komentarzy (IRR = 0.88, 95% CI [0.82, 0.94], p < .001), a w modelu ujemnym dwumianowym ten sam efekt jest niepewny (IRR = 0.83, 95% CI [0.69, 1.01], p = .060). Zignorowanie nadmiernego rozproszenia dałoby więc „odkrycie”, którego dane nie uzasadniają. Pełną procedurę z diagnostyką omawiamy w poradniku regresja dla zliczeń krok po kroku.

Dwie uwagi praktyczne. Po pierwsze, gdy porównujesz profile o różnej liczbie obserwujących albo posty o różnym zasięgu, uwzględnij to w modelu (offset w regresji Poissona), bo inaczej porównujesz wielkość profili, a nie skuteczność postów. Po drugie, posty z tego samego profilu i tego samego tygodnia nie są w pełni niezależne: reagują na te same wydarzenia i ten sam algorytm platformy. Przy kilku profilach rozważ model wielopoziomowy albo błędy standardowe odporne na skupienia, a w ograniczeniach pracy napisz, że dane pochodzą z jednego profilu i jednego okresu.

Liczbę komentarzy pod 360 postami analizowano regresją ujemną dwumianową, ponieważ dane były nadmiernie rozproszone (współczynnik rozproszenia w modelu Poissona = 7.86; AIC 2446.4 wobec 4005.0). Format postu wiązał się z liczbą komentarzy, χ²(2) = 45.26, p < .001. W porównaniu z postami z linkiem posty z wideo miały średnio 2.25 razy więcej komentarzy, IRR = 2.25, 95% CI [1.77, 2.85], p < .001, a posty ze zdjęciem 1.41 razy więcej, IRR = 1.41, 95% CI [1.16, 1.72], p < .001. Publikacja w weekend nie wiązała się istotnie z liczbą komentarzy, IRR = 0.83, 95% CI [0.69, 1.01], p = .060.

Projekt 5. Rozpoznawanie fałszywych nagłówków

Kompetencje medialne to częsty temat prac licencjackich. Przykład: 250 osób oceniło 12 nagłówków (połowa prawdziwych, połowa fałszywych), a wynikiem jest liczba trafnych ocen (0–12). Pytanie brzmi, czy wynik zależy od czasu spędzanego w mediach społecznościowych, gdy uwzględni się codzienne czytanie serwisu informacyjnego i wiek. Średni wynik wynosił 6.89 (SD = 1.97), a respondenci spędzali w mediach społecznościowych średnio 2.63 godziny dziennie (SD = 1.82).

W regresji wielorakiej model wyjaśnił 14% wariancji wyniku, F(3, 246) = 12.93, p < .001, R² = .14 (skorygowany R² = .13). Każda dodatkowa godzina w mediach społecznościowych wiązała się z wynikiem niższym średnio o 0.26 punktu, b = −0.26, 95% CI [−0.39, −0.14], β = −.24, p < .001. Osoby codziennie czytające serwis informacyjny miały wynik wyższy o 1.00 punkt, b = 1.00, 95% CI [0.53, 1.47], p < .001. Wiek nie miał istotnego związku z wynikiem, b = 0.01, 95% CI [−0.002, 0.03], p = .094. Przy zmiennej zero-jedynkowej (czytanie serwisu) interpretuj przede wszystkim b, czyli różnicę w punktach, a nie standaryzowane β.

Dwie ostrożności. Wynik testu jest ograniczony do przedziału 0–12, więc gdy wiele osób uzyskuje wynik maksymalny, regresja liniowa przestaje dobrze pasować i lepszy bywa model dla liczby sukcesów na 12 prób (regresja logistyczna dwumianowa). Poza tym to znowu badanie przekrojowe: czas spędzany w mediach społecznościowych może być skutkiem, a nie przyczyną słabszych kompetencji.

Wynik testu rozpoznawania fałszywych nagłówków (0–12; M = 6.89, SD = 1.97) przewidywano na podstawie czasu spędzanego dziennie w mediach społecznościowych, codziennego czytania serwisu informacyjnego i wieku. Model był istotny, F(3, 246) = 12.93, p < .001, R² = .14. Dłuższy czas w mediach społecznościowych wiązał się z niższym wynikiem, b = −0.26, 95% CI [−0.39, −0.14], β = −.24, p < .001, a codzienne czytanie serwisu informacyjnego z wynikiem wyższym o 1.00 punkt, 95% CI [0.53, 1.47], p < .001. Wiek nie wiązał się istotnie z wynikiem, b = 0.01, 95% CI [−0.002, 0.03], p = .094.

Jak opisać analizę statystyczną w pracy

W pracy z analizą zawartości rozdział metodologiczny musi pozwolić innej osobie powtórzyć kodowanie. Opisz więc: jakie media i jaki okres objęto badaniem, jak wybrano teksty, co było jednostką analizy, jakie zmienne kodowano (pełna instrukcja kodowania w aneksie), kto kodował, jak duża była próba rzetelności i jak ją wybrano, jakie miary zgodności policzono i co zrobiono z rozbieżnościami. W pracy z ankietą albo eksperymentem dodaj sposób rekrutacji, losowanie wersji i liczbę osób wykluczonych. Poniżej wzór akapitu o analizie statystycznej dla projektów 1 i 3. Gotowe zdania z wynikami innych testów wygenerujesz w generatorze opisu wyników APA.

Analizy wykonano w programie R. Zgodność kodowania oceniono na losowej próbie 60 artykułów (25% materiału), zakodowanej niezależnie przez dwie osoby; dla każdej zmiennej podano odsetek zgodności, kappę Cohena oraz alfę Krippendorffa z 95% przedziałem ufności wyznaczonym metodą bootstrap (2000 prób), dla tonu artykułu na poziomie porządkowym. Związek dominującej ramy z portalem oceniono testem chi-kwadrat niezależności z resztami standaryzowanymi skorygowanymi, a siłę związku – współczynnikiem V Craméra. W eksperymencie wersje nagłówka porównano testem t Welcha z g Hedgesa jako miarą wielkości efektu, a odsetki osób deklarujących chęć przeczytania artykułu – różnicą proporcji z 95% przedziałem ufności Newcombe’a i testem chi-kwadrat. Przyjęto poziom istotności α = .05.

Jeśli potrzebujesz pomocy w doborze analiz do swojego projektu albo w odpowiedzi na uwagi promotora, możesz skonsultować je ze statystykiem w ramach oferty analizy statystyczne dla studentów. Wyniki musisz jednak rozumieć i umieć obronić samodzielnie.

Przykład reprodukowalny

Analizy z pięciu projektów w R

Kod odtwarza wszystkie liczby z tego wpisu, a ostatni przepis – rysunki i plik XLSX do pobrania. Każdy z przepisów 1–3 tworzy własne dane symulowane, więc możesz go uruchomić osobno. Najważniejszy jest przepis 1 z pełną analizą zawartości: od zgodności kodujących do porównania portali. Alfę Krippendorffa i kappę liczy pakiet DescTools, wielkości efektu – pakiet effectsize, a model ujemny dwumianowy – pakiet MASS.

1. Projekt 1: analiza zawartości – zgodność kodujących (kappa, alfa Krippendorffa z bootstrapem) i chi-kwadrat z resztami

Dane wejściowe: 240 artykułów z dwóch portali i próba rzetelności 60 artykułów zakodowana przez dwie osoby (dane symulowane, set.seed(22201), bootstrap set.seed(22211)); pakiety DescTools i effectsize.

Co odczytać: dla każdej zmiennej odsetek zgodności, kappę Cohena z 95% CI i alfę Krippendorffa z 95% CI bootstrapowym; liczbę zaznaczeń rzadkiej kategorii; tabelę ram według portalu z odsetkami w wierszach, test chi-kwadrat, najmniejszą liczebność oczekiwaną, reszty skorygowane i V Craméra.

R
# Projekt 1: analiza zawartości mediów – zgodność kodujących i porównanie portali (dane symulowane).
# 240 artykułów z dwóch portali (120 + 120). Dwie osoby kodują niezależnie próbę rzetelności
# (60 artykułów, 25%); resztę koduje jedna osoba według tej samej instrukcji kodowania.
# Zmienne: dominująca rama (5 kategorii), ton (negatywny < neutralny < pozytywny),
# cytowany ekspert (tak/nie), wezwanie do działania (tak/nie – kategoria rzadka).
suppressPackageStartupMessages({ library(DescTools); library(effectsize) })
set.seed(22201)
ramy <- c("odpowiedzialność", "konflikt", "ludzki wymiar", "ekonomiczna", "moralność")
N <- 240
portal <- factor(rep(c("portal A", "portal B"), each = N / 2))
pr_A <- c(.32, .28, .14, .18, .08); pr_B <- c(.18, .24, .36, .10, .12)
rama <- ifelse(portal == "portal A", sample(ramy, N, TRUE, pr_A), sample(ramy, N, TRUE, pr_B))
rama <- factor(rama, levels = ramy)
ton <- sample(1:3, N, TRUE, prob = c(.45, .40, .15))           # 1 = negatywny, 2 = neutralny, 3 = pozytywny
ekspert <- rbinom(N, 1, ifelse(portal == "portal A", .55, .35))
apel <- rbinom(N, 1, .05)
art <- data.frame(id = 1:N, portal, rama, ton, ekspert, apel)

# --- Próba rzetelności: 60 losowo wybranych artykułów kodowanych przez dwie osoby
proba <- sort(sample(N, 60))
pomyl <- function(x, p, wartosci) ifelse(runif(length(x)) < p, sapply(x, function(v) sample(setdiff(wartosci, v), 1)), x)
k1 <- data.frame(rama = as.character(art$rama[proba]), ton = art$ton[proba], ekspert = art$ekspert[proba], apel = art$apel[proba])
k2 <- k1
k1$rama <- pomyl(k1$rama, .08, ramy); k2$rama <- pomyl(k2$rama, .12, ramy)
k1$ton <- pmin(3, pmax(1, k1$ton + sample(c(-1, 0, 1), 60, TRUE, c(.08, .84, .08))))
k2$ton <- pmin(3, pmax(1, k2$ton + sample(c(-1, 0, 1), 60, TRUE, c(.10, .80, .10))))
k1$ekspert <- pomyl(k1$ekspert, .04, 0:1); k2$ekspert <- pomyl(k2$ekspert, .06, 0:1)
k1$apel <- pomyl(k1$apel, .03, 0:1); k2$apel <- pomyl(k2$apel, .04, 0:1)

# Zgodność dla każdej zmiennej: odsetek zgodności, kappa Cohena, alfa Krippendorffa z 95% CI (bootstrap jednostek)
zgodnosc <- function(a, b, poziom) {
  num <- function(v) as.numeric(factor(v, levels = sort(unique(c(a, b)))))
  m <- rbind(num(a), num(b))
  alfa <- KrippAlpha(m, method = poziom)$value
  boot <- replicate(2000, { i <- sample(ncol(m), replace = TRUE); KrippAlpha(m[, i], method = poziom)$value })
  kap <- CohenKappa(factor(a, levels = sort(unique(c(a, b)))), factor(b, levels = sort(unique(c(a, b)))), conf.level = .95)
  c(zgodnosc_proc = 100 * mean(a == b), kappa = unname(kap[1]), kappa_lo = unname(kap[2]), kappa_hi = unname(kap[3]),
    alfa = alfa, alfa_lo = unname(quantile(boot, .025, na.rm = TRUE)), alfa_hi = unname(quantile(boot, .975, na.rm = TRUE)))
}
set.seed(22211)
rzet <- rbind(rama = zgodnosc(k1$rama, k2$rama, "nominal"), ton = zgodnosc(k1$ton, k2$ton, "ordinal"),
              ekspert = zgodnosc(k1$ekspert, k2$ekspert, "nominal"), apel = zgodnosc(k1$apel, k2$apel, "nominal"))
round(rzet, 3)
# Jak rzadka jest kategoria „wezwanie do działania” w próbie rzetelności?
c(kodujacy1 = sum(k1$apel), kodujacy2 = sum(k2$apel), oba_tak = sum(k1$apel == 1 & k2$apel == 1))

# --- Analiza główna: dominująca rama a portal (240 artykułów)
tab <- table(art$portal, art$rama); tab
round(100 * prop.table(tab, 1), 1)
ch <- chisq.test(tab); ch
round(min(ch$expected), 1)
round(ch$stdres, 2)
cramers_v(tab, adjust = FALSE)
Wynik w R
        zgodnosc_proc kappa kappa_lo kappa_hi  alfa alfa_lo alfa_hi
rama           91.667 0.894    0.806    0.983 0.895   0.799   0.979
ton            85.000 0.750    0.600    0.900 0.837   0.708   0.936
ekspert        93.333 0.853    0.715    0.992 0.855   0.703   0.965
apel           93.333 0.564    0.181    0.946 0.567  -0.026   0.901
kodujacy1 kodujacy2   oba_tak 
        5         5         3 
          
           odpowiedzialność konflikt ludzki wymiar ekonomiczna moralność
  portal A               41       33            18          18        10
  portal B               25       26            39          14        16
          
           odpowiedzialność konflikt ludzki wymiar ekonomiczna moralność
  portal A             34.2     27.5          15.0        15.0       8.3
  portal B             20.8     21.7          32.5        11.7      13.3

	Pearson's Chi-squared test

data:  tab
X-squared = 14.331, df = 4, p-value = 0.006311

[1] 13
          
           odpowiedzialność konflikt ludzki wymiar ekonomiczna moralność
  portal A             2.31     1.05         -3.19        0.76     -1.25
  portal B            -2.31    -1.05          3.19       -0.76      1.25
Cramer's V |       95% CI
-------------------------
0.24       | [0.10, 1.00]

- One-sided CIs: upper bound fixed at [1.00].

2. Projekty 2 i 3: ANOVA Welcha z testem Gamesa–Howella oraz eksperyment z nagłówkiem

Dane wejściowe: 300 respondentów ankiety o zaufaniu do mediów (set.seed(22202)) i 196 uczestników eksperymentu z dwiema wersjami nagłówka (set.seed(22203)); pakiety effectsize, psych i rstatix.

Co odczytać: alfę skal, średnie w grupach, wynik ANOVA Welcha, ω², porównania Gamesa–Howella; w eksperymencie sprawdzenie manipulacji, test t Welcha, g Hedgesa, odsetki „tak”, różnicę z 95% CI Newcombe’a i test chi-kwadrat.

R
# Projekt 2: ankieta odbiorców – zaufanie do mediów informacyjnych a główne źródło informacji;
# projekt 3: eksperyment z nagłówkiem (informacyjny a clickbaitowy) – dane symulowane.
suppressPackageStartupMessages({ library(effectsize); library(psych); library(rstatix) })

# --- Projekt 2: 300 respondentów, skala zaufania (5 pozycji 1–5), główne źródło informacji
set.seed(22202)
n <- 300
zrodlo <- factor(sample(c("telewizja", "portale internetowe", "media społecznościowe"), n, TRUE, prob = c(.30, .40, .30)),
                 levels = c("telewizja", "portale internetowe", "media społecznościowe"))
lat <- rnorm(n, c(0.25, 0.10, -0.35)[as.integer(zrodlo)], c(0.8, 0.9, 1.15)[as.integer(zrodlo)])
poz <- sapply(1:5, function(j) as.integer(cut(0.8 * lat + rnorm(n, 0, 0.6), c(-Inf, -1.6, -0.5, 0.5, 1.5, Inf))))
colnames(poz) <- paste0("zauf", 1:5)
p2 <- data.frame(id = 1:n, zrodlo, poz)
p2$zaufanie <- rowMeans(poz)
round(psych::alpha(poz, warnings = FALSE)$total[c("raw_alpha", "std.alpha")], 2)
aggregate(zaufanie ~ zrodlo, p2, function(x) round(c(n = length(x), M = mean(x), SD = sd(x)), 2))
oneway.test(zaufanie ~ zrodlo, data = p2, var.equal = FALSE)          # ANOVA Welcha
omega_squared(aov(zaufanie ~ zrodlo, data = p2), partial = FALSE)
games_howell_test(p2, zaufanie ~ zrodlo)[, c("group1", "group2", "estimate", "conf.low", "conf.high", "p.adj")]

# --- Projekt 3: eksperyment z nagłówkiem, losowy przydział do wersji (ankieta online)
set.seed(22203)
n3 <- 196
wersja <- factor(sample(rep(c("informacyjny", "clickbaitowy"), n3 / 2)), levels = c("informacyjny", "clickbaitowy"))
# sprawdzenie manipulacji: „nagłówek jest sensacyjny” (1–7)
sens <- pmin(7, pmax(1, round(rnorm(n3, ifelse(wersja == "clickbaitowy", 5.1, 3.2), 1.3))))
# wiarygodność artykułu: średnia 4 pozycji 1–7
osoba <- rnorm(n3, ifelse(wersja == "clickbaitowy", -0.35, 0), 1)   # ogólna ocena wiarygodności u danej osoby
wiar <- sapply(1:4, function(j) pmin(7, pmax(1, round(4.7 + 0.9 * osoba + rnorm(n3, 0, 0.8)))))
klik <- rbinom(n3, 1, ifelse(wersja == "clickbaitowy", .58, .44))   # „chcę przeczytać cały artykuł” (tak = 1)
p3 <- data.frame(id = 1:n3, wersja, sens, wiar1 = wiar[, 1], wiar2 = wiar[, 2], wiar3 = wiar[, 3], wiar4 = wiar[, 4], klik)
p3$wiarygodnosc <- rowMeans(wiar)
table(p3$wersja)
round(psych::alpha(wiar, warnings = FALSE)$total["raw_alpha"], 2)
aggregate(cbind(sens, wiarygodnosc) ~ wersja, p3, function(x) round(c(M = mean(x), SD = sd(x)), 2))
t.test(sens ~ wersja, data = p3)                                    # sprawdzenie manipulacji
t.test(wiarygodnosc ~ wersja, data = p3)                            # test Welcha
hedges_g(wiarygodnosc ~ wersja, data = p3, pooled_sd = FALSE)
# Chęć przeczytania całego artykułu: odsetki, różnica z 95% CI Newcombe'a (metoda hybrydowa Wilsona)
k <- tapply(p3$klik, p3$wersja, sum); m <- tapply(p3$klik, p3$wersja, length)
wilson <- function(k, n) { z <- qnorm(.975); p <- k / n
  (p + z^2 / (2 * n) + c(-1, 1) * z * sqrt(p * (1 - p) / n + z^2 / (4 * n^2))) / (1 + z^2 / n) }
p_kl <- k["clickbaitowy"] / m["clickbaitowy"]; p_in <- k["informacyjny"] / m["informacyjny"]
w_kl <- wilson(k["clickbaitowy"], m["clickbaitowy"]); w_in <- wilson(k["informacyjny"], m["informacyjny"])
roz <- p_kl - p_in
ci_newcombe <- c(roz - sqrt((p_kl - w_kl[1])^2 + (w_in[2] - p_in)^2), roz + sqrt((w_kl[2] - p_kl)^2 + (p_in - w_in[1])^2))
round(100 * c(informacyjny = unname(p_in), clickbaitowy = unname(p_kl), roznica = unname(roz), lo = unname(ci_newcombe[1]), hi = unname(ci_newcombe[2])), 1)
chisq.test(table(p3$wersja, p3$klik), correct = FALSE)
Wynik w R
 raw_alpha std.alpha
      0.87      0.87
                 zrodlo zaufanie.n zaufanie.M zaufanie.SD
1             telewizja      91.00       3.27        0.70
2   portale internetowe     114.00       3.18        0.77
3 media społecznościowe      95.00       2.75        0.88

	One-way analysis of means (not assuming equal variances)

data:  zaufanie and zrodlo
F = 10.935, num df = 2.00, denom df = 192.87, p-value = 3.172e-05

# Effect Size for ANOVA (Type I)

Parameter | Omega2 |       95% CI
---------------------------------
zrodlo    |   0.07 | [0.03, 1.00]

- One-sided CIs: upper bound fixed at [1.00].# A tibble: 3 × 6
  group1              group2                estimate conf.low conf.high     p.adj
  <chr>               <chr>                    <dbl>    <dbl>     <dbl>     <dbl>
1 telewizja           portale internetowe    -0.0905   -0.333     0.152 0.654    
2 telewizja           media społecznościowe  -0.523    -0.798    -0.248 0.0000365
3 portale internetowe media społecznościowe  -0.433    -0.704    -0.161 0.000658 

informacyjny clickbaitowy 
          98           98 
 raw_alpha
      0.81
        wersja sens.M sens.SD wiarygodnosc.M wiarygodnosc.SD
1 informacyjny   3.13    1.27           4.72            0.99
2 clickbaitowy   5.03    1.28           4.46            0.93

	Welch Two Sample t-test

data:  sens by wersja
t = -10.407, df = 193.99, p-value < 2.2e-16
alternative hypothesis: true difference in means between group informacyjny and group clickbaitowy is not equal to 0
95 percent confidence interval:
 -2.257656 -1.538262
sample estimates:
mean in group informacyjny mean in group clickbaitowy 
                  3.132653                   5.030612 


	Welch Two Sample t-test

data:  wiarygodnosc by wersja
t = 1.8965, df = 193.03, p-value = 0.05938
alternative hypothesis: true difference in means between group informacyjny and group clickbaitowy is not equal to 0
95 percent confidence interval:
 -0.01039714  0.53080531
sample estimates:
mean in group informacyjny mean in group clickbaitowy 
                  4.724490                   4.464286 

Hedges' g |        95% CI
-------------------------
0.27      | [-0.01, 0.55]

- Estimated using un-pooled SD.informacyjny clickbaitowy      roznica           lo           hi 
        42.9         60.2         17.3          3.4         30.4 

	Pearson's Chi-squared test

data:  table(p3$wersja, p3$klik)
X-squared = 5.9035, df = 1, p-value = 0.01511

3. Projekty 4 i 5: regresja dla zliczeń komentarzy i regresja wieloraka

Dane wejściowe: 360 postów jednego profilu redakcji (set.seed(22204)) i 250 respondentów testu rozpoznawania fałszywych nagłówków (set.seed(22205)); pakiety MASS i effectsize.

Co odczytać: średnie i wariancje komentarzy według formatu, współczynnik rozproszenia, θ i AIC obu modeli, IRR z 95% CI w modelu Poissona i ujemnym dwumianowym, test ilorazu wiarygodności dla formatu; w projekcie 5 współczynniki b z 95% CI, R² i standaryzowane β.

R
# Projekt 4: liczba komentarzy pod postami redakcji w mediach społecznościowych (zliczenia);
# projekt 5: rozpoznawanie fałszywych nagłówków a korzystanie z mediów (regresja) – dane symulowane.
suppressPackageStartupMessages({ library(MASS); library(effectsize) })

# --- Projekt 4: 360 postów jednego profilu redakcji z jednego roku
set.seed(22204)
n <- 360
format <- factor(sample(c("link", "zdjęcie", "wideo"), n, TRUE, prob = c(.50, .30, .20)), levels = c("link", "zdjęcie", "wideo"))
weekend <- rbinom(n, 1, 2 / 7)
mu <- exp(log(9) + c(0, 0.35, 0.70)[as.integer(format)] - 0.20 * weekend)
komentarze <- rnbinom(n, mu = mu, size = 1.3)
p4 <- data.frame(id = 1:n, format, weekend, komentarze)
aggregate(komentarze ~ format, p4, function(x) round(c(n = length(x), M = mean(x), Var = var(x), Me = median(x), zero = mean(x == 0) * 100), 1))
m_pois <- glm(komentarze ~ format + weekend, family = poisson, data = p4)
round(sum(residuals(m_pois, type = "pearson")^2) / df.residual(m_pois), 2)   # współczynnik rozproszenia
m_nb <- glm.nb(komentarze ~ format + weekend, data = p4)
round(c(theta = m_nb$theta, AIC_Poisson = AIC(m_pois), AIC_NB = AIC(m_nb)), 2)
irr <- function(m) { b <- coef(m)[-1]; se <- sqrt(diag(vcov(m)))[-1]
  round(cbind(IRR = exp(b), lo = exp(b - 1.96 * se), hi = exp(b + 1.96 * se), p = 2 * pnorm(-abs(b / se))), 4) }
irr(m_pois)
irr(m_nb)
# Test ilorazu wiarygodności dla formatu w modelu ujemnym dwumianowym
anova(glm.nb(komentarze ~ weekend, data = p4), m_nb)

# --- Projekt 5: test rozpoznawania 12 nagłówków (prawdziwe/fałszywe), 250 respondentów
set.seed(22205)
n5 <- 250
wiek <- round(runif(n5, 18, 70))
godz_sm <- round(pmax(0, rgamma(n5, shape = 2.2, rate = 0.9)), 1)        # godziny dziennie w mediach społecznościowych
prasa <- rbinom(n5, 1, plogis(-1.2 + 0.03 * (wiek - 18)))               # czyta serwis informacyjny codziennie (1 = tak)
wynik <- pmin(12, pmax(0, round(7.4 - 0.30 * godz_sm + 0.9 * prasa + 0.01 * (wiek - 40) + rnorm(n5, 0, 1.8))))
p5 <- data.frame(id = 1:n5, wiek, godz_sm, prasa, wynik)
round(sapply(p5[, -1], function(x) c(M = mean(x), SD = sd(x))), 2)
m5 <- lm(wynik ~ godz_sm + prasa + wiek, data = p5)
summary(m5)
round(confint(m5), 3)
standardize_parameters(m5)
Wynik w R
   format komentarze.n komentarze.M komentarze.Var komentarze.Me komentarze.zero
1    link        177.0          8.3           48.4           6.0             5.1
2 zdjęcie        118.0         11.8           97.8           9.0             3.4
3   wideo         65.0         18.5          234.5          16.0             1.5
[1] 7.86
      theta AIC_Poisson      AIC_NB 
       1.58     4005.02     2446.37 
                 IRR     lo     hi     p
formatzdjęcie 1.4039 1.3046 1.5107 0e+00
formatwideo   2.2112 2.0490 2.3862 0e+00
weekend       0.8766 0.8185 0.9387 2e-04
                 IRR     lo     hi      p
formatzdjęcie 1.4108 1.1554 1.7226 0.0007
formatwideo   2.2454 1.7690 2.8501 0.0000
weekend       0.8320 0.6867 1.0080 0.0603
Likelihood ratio tests of Negative Binomial Models

Response: komentarze
             Model    theta Resid. df    2 x log-lik.   Test    df LR stat.     Pr(Chi)
1          weekend 1.373861       358       -2481.625                                  
2 format + weekend 1.583077       356       -2436.365 1 vs 2     2  45.2599 1.48572e-10
    wiek godz_sm prasa wynik
M  42.70    2.63  0.41  6.89
SD 15.23    1.82  0.49  1.97

Call:
lm(formula = wynik ~ godz_sm + prasa + wiek, data = p5)

Residuals:
    Min      1Q  Median      3Q     Max 
-5.2370 -1.0870  0.1642  1.1977  5.6413 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept)  6.610486   0.383306  17.246  < 2e-16 ***
godz_sm     -0.261532   0.064370  -4.063 6.52e-05 ***
prasa        0.996591   0.238607   4.177 4.11e-05 ***
wiek         0.012995   0.007738   1.679   0.0943 .  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.843 on 246 degrees of freedom
Multiple R-squared:  0.1362,	Adjusted R-squared:  0.1256 
F-statistic: 12.93 on 3 and 246 DF,  p-value: 7.193e-08

             2.5 % 97.5 %
(Intercept)  5.856  7.365
godz_sm     -0.388 -0.135
prasa        0.527  1.467
wiek        -0.002  0.028
# Standardization method: refit

Parameter   | Std. Coef. |         95% CI
-----------------------------------------
(Intercept) |   3.90e-16 | [-0.12,  0.12]
godz sm     |      -0.24 | [-0.36, -0.12]
prasa       |       0.25 | [ 0.13,  0.37]
wiek        |       0.10 | [-0.02,  0.22]

4. Rysunki i plik XLSX

Dane wejściowe: wyniki przepisów 1–3 (wczytywane przez source() z tego samego folderu); pakiety ggplot2, svglite, patchwork i openxlsx.

Co odczytać: wartości użyte na rysunkach i liczbę wierszy w arkuszach zapisanego pliku.

R
# Rysunki i plik XLSX do wpisu (uruchom z folderu kod/): LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 Rscript b222-rysunki.R > b222-rysunki-wynik.txt
suppressPackageStartupMessages({ library(ggplot2); library(svglite); library(patchwork); library(openxlsx) })
KOLORY <- c(akcent = "#e50101", drugi = "#1f78b4", dane = "grey55", neutralny = "#8C8C8C", granat = "#0f1d3a")
theme_metodolog <- function(base_size = 13) {
  theme_minimal(base_size = base_size) +
    theme(plot.title = element_text(face = "bold", colour = KOLORY[["granat"]], size = rel(1.05)),
          plot.subtitle = element_text(colour = "grey30"), panel.grid.minor = element_blank(),
          strip.text = element_text(face = "bold", colour = KOLORY[["granat"]]), legend.position = "bottom",
          plot.background = element_rect(fill = "white", colour = NA), plot.margin = margin(10, 14, 10, 10))
}
zapisz_svg <- function(wykres, plik, szer = 10, wys = 5.6) {
  svglite(plik, width = szer, height = wys, bg = "white"); print(wykres); invisible(dev.off())
  cat(sprintf("Zapisano %s: w HTML width=\"%d\" height=\"%d\" (%d KB)\n", plik, round(szer * 100), round(wys * 100), round(file.info(plik)$size / 1024)))
}
minus <- function(x) gsub("-", "−", x)
pdf(NULL)
invisible(capture.output({ for (f in c("b222-1-analiza-zawartosci.R", "b222-2-ankieta-eksperyment.R", "b222-3-media-spolecznosciowe.R")) source(f) }))

# Rysunek 1: zgodność kodujących – odsetek zgodności a alfa Krippendorffa z 95% CI
nazwy <- c(rama = "Dominująca rama\n(5 kategorii)", ton = "Ton artykułu\n(porządkowa, 3 kat.)",
           ekspert = "Cytowany ekspert\n(tak/nie)", apel = "Wezwanie do działania\n(tak/nie, rzadkie)")
d1 <- data.frame(zmienna = factor(nazwy[rownames(rzet)], levels = rev(nazwy)), rzet[, c("zgodnosc_proc", "alfa", "alfa_lo", "alfa_hi")])
print(d1, digits = 3, row.names = FALSE)
r1 <- ggplot(d1, aes(y = zmienna)) +
  geom_errorbar(aes(xmin = alfa_lo, xmax = alfa_hi), width = .18, orientation = "y", colour = KOLORY[["drugi"]], linewidth = 1) +
  geom_point(aes(x = alfa, shape = "alfa Krippendorffa z 95% CI"), colour = KOLORY[["akcent"]], size = 3.6) +
  geom_point(aes(x = zgodnosc_proc / 100, shape = "odsetek zgodności (÷ 100)"), colour = KOLORY[["granat"]], size = 3.2) +
  geom_text(aes(x = alfa, label = minus(sprintf("α = %s", sub("^(-?)0\\.", "\\1.", sprintf("%.2f", alfa))))), nudge_y = .33, size = 3.7) +
  geom_text(aes(x = zgodnosc_proc / 100, label = sprintf("%.1f%%", zgodnosc_proc)), nudge_y = -.33, size = 3.5, colour = KOLORY[["granat"]]) +
  scale_shape_manual(values = c(16, 17), name = NULL) +
  scale_x_continuous(limits = c(-.1, 1.02), breaks = seq(0, 1, .2), labels = function(x) ifelse(x == 0, "0", sub("^0\\.", ".", sprintf("%.1f", x)))) +
  labs(title = "Zgodność dwóch kodujących w próbie rzetelności (60 artykułów)",
       subtitle = "Przy rzadkiej kategorii wysoki odsetek zgodności nie oznacza wysokiej alfy", x = NULL, y = NULL) +
  theme_metodolog(13)
zapisz_svg(r1, "../statystyka-dziennikarstwo-zgodnosc-kodujacych.svg", szer = 10, wys = 5)

# Rysunek 2: komentarze pod postami – rozkład i IRR z modelu Poissona i ujemnego dwumianowego
rA <- ggplot(p4, aes(format, komentarze)) +
  geom_jitter(width = .18, height = 0, alpha = .35, colour = KOLORY[["dane"]], size = 1.4) +
  geom_boxplot(width = .45, outlier.shape = NA, fill = NA, colour = KOLORY[["granat"]]) +
  stat_summary(fun = mean, geom = "point", colour = KOLORY[["akcent"]], size = 3.4) +
  labs(title = "A. Liczba komentarzy pod postem", subtitle = "Czerwony punkt = średnia; 360 postów", x = NULL, y = "Komentarze") +
  theme_metodolog(12)
ir <- rbind(data.frame(model = "Poisson", efekt = rownames(irr(m_pois)), irr(m_pois)),
            data.frame(model = "ujemny dwumianowy", efekt = rownames(irr(m_nb)), irr(m_nb)))
ir$efekt <- factor(c(formatzdjęcie = "zdjęcie vs link", formatwideo = "wideo vs link", weekend = "weekend vs dzień roboczy")[ir$efekt],
                   levels = rev(c("zdjęcie vs link", "wideo vs link", "weekend vs dzień roboczy")))
print(ir, row.names = FALSE)
rB <- ggplot(ir, aes(IRR, efekt, colour = model)) + geom_vline(xintercept = 1, linetype = 2, colour = "grey50") +
  geom_errorbar(aes(xmin = lo, xmax = hi), width = .25, orientation = "y", linewidth = 1, position = position_dodge(width = .55)) +
  geom_point(size = 3, position = position_dodge(width = .55)) +
  scale_colour_manual(values = c(Poisson = KOLORY[["neutralny"]], `ujemny dwumianowy` = KOLORY[["akcent"]]), name = NULL) +
  scale_x_log10(breaks = c(.7, 1, 1.5, 2, 3)) +
  labs(title = "B. IRR z 95% CI w dwóch modelach", subtitle = "Model Poissona daje zbyt wąskie przedziały", x = "IRR (skala logarytmiczna)", y = NULL) +
  theme_metodolog(12)
zapisz_svg(rA + rB + plot_layout(widths = c(1, 1.25)), "../statystyka-dziennikarstwo-komentarze-zliczenia.svg", szer = 10, wys = 5.2)

# Plik XLSX z danymi do pobrania
wb <- createWorkbook(creator = "Metodolog.pl", title = "Statystyka w pracy z dziennikarstwa – dane przykładowe")
setLastModifiedBy(wb, "Metodolog.pl")
p1_rzet <- data.frame(id = proba, setNames(k1, paste0(names(k1), "_k1")), setNames(k2, paste0(names(k2), "_k2")))
opis <- data.frame(arkusz = c("P1_artykuly", "P1_proba_rzetelnosci", "P2_ankieta_zaufanie", "P3_eksperyment_naglowek", "P4_posty", "P5_falszywe_naglowki"),
  zawartosc = c("240 artykułów z dwóch portali: dominująca rama, ton (1 = negatywny, 2 = neutralny, 3 = pozytywny), ekspert, wezwanie do działania (1 = tak)",
                "60 artykułów zakodowanych niezależnie przez dwie osoby (_k1, _k2)",
                "300 respondentów: główne źródło informacji, 5 pozycji zaufania 1–5 i wynik (średnia)",
                "196 uczestników: wersja nagłówka, sprawdzenie manipulacji (1–7), 4 pozycje wiarygodności 1–7, chęć przeczytania (1 = tak)",
                "360 postów: format, weekend (1 = tak), liczba komentarzy",
                "250 respondentów: wiek, godziny dziennie w mediach społecznościowych, codzienne czytanie serwisu informacyjnego, wynik testu 0–12"),
  uwaga = "Dane symulowane do nauki analizy; nie pochodzą z prawdziwego badania.")
for (ark in list(list("Opis", opis), list("P1_artykuly", art), list("P1_proba_rzetelnosci", p1_rzet), list("P2_ankieta_zaufanie", p2),
                 list("P3_eksperyment_naglowek", p3), list("P4_posty", p4), list("P5_falszywe_naglowki", p5))) {
  addWorksheet(wb, ark[[1]]); writeData(wb, ark[[1]], ark[[2]]); setColWidths(wb, ark[[1]], 1:ncol(ark[[2]]), "auto") }
plik <- "../statystyka-dziennikarstwo-dane-przyklad.xlsx"
saveWorkbook(wb, plik, overwrite = TRUE)
sapply(getSheetNames(plik), function(s) nrow(read.xlsx(plik, s)))
cat("rozmiar KB:", round(file.info(plik)$size / 1024), "\n")
Wynik w R
                                   zmienna zgodnosc_proc  alfa alfa_lo alfa_hi
            Dominująca rama\n(5 kategorii)          91.7 0.895  0.7992   0.979
        Ton artykułu\n(porządkowa, 3 kat.)          85.0 0.837  0.7085   0.936
               Cytowany ekspert\n(tak/nie)          93.3 0.855  0.7025   0.965
 Wezwanie do działania\n(tak/nie, rzadkie)          93.3 0.567 -0.0259   0.901
Zapisano ../statystyka-dziennikarstwo-zgodnosc-kodujacych.svg: w HTML width="1000" height="500" (10 KB)
             model                    efekt    IRR     lo     hi      p
           Poisson          zdjęcie vs link 1.4039 1.3046 1.5107 0.0000
           Poisson            wideo vs link 2.2112 2.0490 2.3862 0.0000
           Poisson weekend vs dzień roboczy 0.8766 0.8185 0.9387 0.0002
 ujemny dwumianowy          zdjęcie vs link 1.4108 1.1554 1.7226 0.0007
 ujemny dwumianowy            wideo vs link 2.2454 1.7690 2.8501 0.0000
 ujemny dwumianowy weekend vs dzień roboczy 0.8320 0.6867 1.0080 0.0603
Zapisano ../statystyka-dziennikarstwo-komentarze-zliczenia.svg: w HTML width="1000" height="520" (65 KB)
                   Opis             P1_artykuly    P1_proba_rzetelnosci     P2_ankieta_zaufanie 
                      6                     240                      60                     300 
P3_eksperyment_naglowek                P4_posty    P5_falszywe_naglowki 
                    196                     360                     250 
rozmiar KB: 52 

Bibliografia oprogramowania

Wyniki na tej stronie pochodzą z uruchomienia pokazanego kodu w R 4.5.3 (funkcje chisq.test(), oneway.test(), t.test(), glm() i lm() z pakietu stats); rysunki przygotowano w pakietach ggplot2, patchwork i svglite. W pracy podaj wersje faktycznie użytych pakietów (sessionInfo()).

  1. R: R Core Team. (2026). R: A language and environment for statistical computing (Version 4.5.3) [Computer software]. R Foundation for Statistical Computing. https://www.R-project.org/
  2. DescTools (wersja 0.99.60): Signorell, A. (2025). DescTools: Tools for descriptive statistics (R package version 0.99.60) [Computer software]. https://doi.org/10.32614/CRAN.package.DescTools
  3. effectsize (wersja 1.0.2): Ben-Shachar, M. S., Lüdecke, D., & Makowski, D. (2020). effectsize: Estimation of effect size indices and standardized parameters. Journal of Open Source Software, 5(56), 2815. https://doi.org/10.21105/joss.02815
  4. psych (wersja 2.6.5): Revelle, W. (2026). psych: Procedures for psychological, psychometric, and personality research (R package version 2.6.5) [Computer software]. Northwestern University. https://CRAN.R-project.org/package=psych
  5. rstatix (wersja 0.7.3): Kassambara, A. (2025). rstatix: Pipe-friendly framework for basic statistical tests (R package version 0.7.3) [Computer software]. https://doi.org/10.32614/CRAN.package.rstatix
  6. MASS (wersja 7.3.65): Venables, W. N., & Ripley, B. D. (2002). Modern applied statistics with S (4th ed.). Springer. https://doi.org/10.1007/978-0-387-21706-2
  7. openxlsx (wersja 4.2.8.1): Schauberger, P., & Walker, A. (2025). openxlsx: Read, write and edit xlsx files (R package version 4.2.8.1) [Computer software]. https://doi.org/10.32614/CRAN.package.openxlsx
  8. ggplot2 (wersja 4.0.2): Wickham, H. (2016). ggplot2: Elegant graphics for data analysis. Springer. https://ggplot2.tidyverse.org
  9. patchwork (wersja 1.3.2): Pedersen, T. L. (2025). patchwork: The composer of plots (R package version 1.3.2) [Computer software]. https://doi.org/10.32614/CRAN.package.patchwork
  10. svglite (wersja 2.2.2): Wickham, H., Henry, L., Pedersen, T. L., Luciani, T. J., Decorde, M., & Lise, V. (2025). svglite: An ‘SVG’ graphics device [R package]. https://doi.org/10.32614/CRAN.package.svglite

Najczęstsze błędy w analizach prac z dziennikarstwa i komunikacji społecznej

  • Brak próby rzetelności albo sam odsetek zgodności. Bez drugiej osoby kodującej nie wiadomo, czy kategorie mierzą to samo u różnych ludzi. Podawaj kappę albo alfę dla każdej zmiennej, a nie jedną średnią dla całej instrukcji kodowania.
  • Kodowanie próby rzetelności po rozmowie z drugą osobą. Kodujący muszą pracować niezależnie; rozbieżności omawiasz dopiero po policzeniu zgodności.
  • Uogólnianie z wybranego zbioru tekstów na „media” lub z ankiety w mediach społecznościowych na „odbiorców”. Wnioski dotyczą badanego materiału i badanej próby.
  • Mieszanie jednostek analizy. Odsetki liczone raz od artykułów, a raz od wypowiedzi, oraz test chi-kwadrat na wypowiedziach pochodzących z tych samych tekstów.
  • „Wpływ” w badaniu przekrojowym. Związek źródła informacji z zaufaniem albo czasu w mediach z kompetencjami nie mówi, co jest przyczyną.
  • Eksperyment bez sprawdzenia manipulacji i wniosek „nagłówek nie ma znaczenia” z nieistotnego wyniku przy szerokim przedziale ufności.
  • Test t albo model Poissona dla zliczeń reakcji i komentarzy bez sprawdzenia nadmiernego rozproszenia. W przykładzie zmieniło to wniosek o weekendzie z p < .001 na p = .060.
  • Porównywanie surowych liczb reakcji między profilami o różnej liczbie obserwujących bez offsetu albo przeliczenia na zasięg.
  • Cytowanie dosłowne wpisów osób prywatnych z imieniem i nazwiskiem albo w sposób pozwalający je odnaleźć.

Najczęstsze pytania

Ile tekstów powinna zakodować druga osoba w analizie zawartości do pracy magisterskiej?

Nie ma jednej obowiązującej liczby. W praktyce druga osoba koduje niezależnie losową część materiału, często kilkadziesiąt tekstów albo kilkanaście–kilkadziesiąt procent całości, tak aby w próbie znalazły się wszystkie kategorie, także rzadkie. Przy rzadkiej kategorii mała próba daje bardzo szeroki przedział ufności dla alfy lub kappy. Liczbę tekstów i sposób ich wyboru ustal przed kodowaniem i opisz w rozdziale metodologicznym.

Alfa Krippendorffa czy kappa Cohena w analizie zawartości mediów?

Przy dwóch kodujących i zmiennej nominalnej bez braków obie miary dają zwykle zbliżone wartości. Alfa Krippendorffa jest wygodniejsza, gdy kodujących jest więcej niż dwóch, gdy część tekstów ma braki kodów albo gdy zmienna jest porządkowa (np. ton artykułu), bo uwzględnia poziom pomiaru. Niezależnie od wyboru podaj wynik osobno dla każdej zmiennej z 95% przedziałem ufności, a obok odsetek zgodności.

Jak przeanalizować liczbę polubień i komentarzy pod postami w pracy licencjackiej?

Liczby reakcji i komentarzy to zliczenia, zwykle silnie prawoskośne i z wariancją wielokrotnie większą od średniej. Zamiast testu t albo zwykłej regresji użyj regresji ujemnej dwumianowej i podaj ilorazy częstości (IRR) z 95% CI. Gdy porównujesz profile o różnej liczbie obserwujących, uwzględnij to przez offset albo przelicz reakcje na zasięg postu.

Jak zrobić eksperyment z nagłówkiem w ankiecie online do pracy dyplomowej?

Przygotuj dwie wersje tego samego materiału różniące się tylko nagłówkiem i ustaw w programie ankietowym losowy przydział uczestników do wersji. Dodaj pytanie sprawdzające manipulację (np. jak sensacyjny był nagłówek) i mierz wynik skalą wielopozycyjną. Średnie porównaj testem t Welcha z g Hedgesa, a odsetki odpowiedzi tak/nie – różnicą proporcji z 95% CI.

Czy wyniki ankiety rozesłanej w mediach społecznościowych dotyczą wszystkich odbiorców mediów?

Nie. Taka ankieta daje próbę dobraną wygodnie: odpowiadają osoby aktywne w danym miejscu sieci i zainteresowane tematem. Opisuj odsetki i średnie jako cechy badanej próby, porównania między grupami traktuj jako związki, a nie efekty przyczynowe, i omów ograniczenia doboru w dyskusji.

Powiązane hasła

Przeczytaj też

Piszesz pracę z dziennikarstwa i nie wiesz, jak policzyć wyniki kodowania albo ankiety?

Pomożemy przygotować próbę rzetelności, policzyć zgodność kodujących, dobrać testy do ankiety, eksperymentu lub danych z mediów społecznościowych i wyjaśnić wyniki tak, abyś umiał(a) samodzielnie je opisać i obronić.

Oferta dla studentówWyceń analizę

Bibliografia i dalsza literatura naukowa (APA 7)

  1. Coxe, S., West, S. G., & Aiken, L. S. (2009). The analysis of count data: A gentle introduction to Poisson regression and its alternatives. Journal of Personality Assessment, 91(2), 121–136. https://doi.org/10.1080/00223890802634175
  2. Delacre, M., Leys, C., Mora, Y. L., & Lakens, D. (2019). Taking parametric assumptions seriously: Arguments for the use of Welch's F-test instead of the classical F-test in one-way ANOVA. International Review of Social Psychology, 32(1), Article 13. https://doi.org/10.5334/irsp.198 ● Otwarty dostęp
  3. Hayes, A. F., & Krippendorff, K. (2007). Answering the call for a standard reliability measure for coding data. Communication Methods and Measures, 1(1), 77–89. https://doi.org/10.1080/19312450709336664
  4. Krippendorff, K. (2004). Reliability in content analysis: Some common misconceptions and recommendations. Human Communication Research, 30(3), 411–433. https://doi.org/10.1111/j.1468-2958.2004.tb00738.x
  5. Lombard, M., Snyder-Duch, J., & Bracken, C. C. (2002). Content analysis in mass communication: Assessment and reporting of intercoder reliability. Human Communication Research, 28(4), 587–604. https://doi.org/10.1111/j.1468-2958.2002.tb00826.x
  6. Molyneux, L., & Coddington, M. (2020). Aggregation, clickbait and their effect on perceptions of journalistic credibility and quality. Journalism Practice, 14(4), 429–446. https://doi.org/10.1080/17512786.2019.1628658
  7. Newcombe, R. G. (1998). Interval estimation for the difference between independent proportions: Comparison of eleven methods. Statistics in Medicine, 17(8), 873–890. https://doi.org/10.1002/(sici)1097-0258(19980430)17:8<873::aid-sim779>3.0.co;2-i
  8. Scacco, J. M., & Muddiman, A. (2020). The curiosity effect: Information seeking in the contemporary news environment. New Media & Society, 22(3), 429–448. https://doi.org/10.1177/1461444819863408
  9. Semetko, H. A., & Valkenburg, P. M. (2000). Framing European politics: A content analysis of press and television news. Journal of Communication, 50(2), 93–109. https://doi.org/10.1111/j.1460-2466.2000.tb02843.x
  10. Williams, M. L., Burnap, P., & Sloan, L. (2017). Towards an ethical framework for publishing Twitter data in social research: Taking into account users’ views, online context and algorithmic estimation. Sociology, 51(6), 1149–1168. https://doi.org/10.1177/0038038517708140 ● Otwarty dostęp

Cytowania BibTeX

@article{coxe2009analysis, author={Coxe, Stefany and West, Stephen G. and Aiken, Leona S.}, title={{The analysis of count data: A gentle introduction to Poisson regression and its alternatives}}, journal={Journal of Personality Assessment}, year={2009}, volume={91}, number={2}, pages={121--136}, doi={10.1080/00223890802634175}}
@article{delacre2019taking, author={Delacre, Marie and Leys, Christophe and Mora, Youri L. and Lakens, Daniël}, title={{Taking parametric assumptions seriously: Arguments for the use of Welch's F-test instead of the classical F-test in one-way ANOVA}}, journal={International Review of Social Psychology}, year={2019}, volume={32}, number={1}, eid={13}, doi={10.5334/irsp.198}}
@article{hayes2007answering, author={Hayes, Andrew F. and Krippendorff, Klaus}, title={{Answering the call for a standard reliability measure for coding data}}, journal={Communication Methods and Measures}, year={2007}, volume={1}, number={1}, pages={77--89}, doi={10.1080/19312450709336664}}
@article{krippendorff2004reliability, author={Krippendorff, Klaus}, title={{Reliability in content analysis: Some common misconceptions and recommendations}}, journal={Human Communication Research}, year={2004}, volume={30}, number={3}, pages={411--433}, doi={10.1111/j.1468-2958.2004.tb00738.x}}
@article{lombard2002content, author={Lombard, Matthew and Snyder-Duch, Jennifer and Bracken, Cheryl Campanella}, title={{Content analysis in mass communication: Assessment and reporting of intercoder reliability}}, journal={Human Communication Research}, year={2002}, volume={28}, number={4}, pages={587--604}, doi={10.1111/j.1468-2958.2002.tb00826.x}}
@article{molyneux2020aggregation, author={Molyneux, Logan and Coddington, Mark}, title={{Aggregation, clickbait and their effect on perceptions of journalistic credibility and quality}}, journal={Journalism Practice}, year={2020}, volume={14}, number={4}, pages={429--446}, doi={10.1080/17512786.2019.1628658}}
@article{newcombe1998interval, author={Newcombe, Robert G.}, title={{Interval estimation for the difference between independent proportions: Comparison of eleven methods}}, journal={Statistics in Medicine}, year={1998}, volume={17}, number={8}, pages={873--890}, doi={10.1002/(sici)1097-0258(19980430)17:8<873::aid-sim779>3.0.co;2-i}}
@article{scacco2020curiosity, author={Scacco, Joshua M. and Muddiman, Ashley}, title={{The curiosity effect: Information seeking in the contemporary news environment}}, journal={New Media \& Society}, year={2020}, volume={22}, number={3}, pages={429--448}, doi={10.1177/1461444819863408}}
@article{semetko2000framing, author={Semetko, Holli A. and Valkenburg, Patti M.}, title={{Framing European politics: A content analysis of press and television news}}, journal={Journal of Communication}, year={2000}, volume={50}, number={2}, pages={93--109}, doi={10.1111/j.1460-2466.2000.tb02843.x}}
@article{williams2017towards, author={Williams, Matthew L. and Burnap, Pete and Sloan, Luke}, title={{Towards an ethical framework for publishing Twitter data in social research: Taking into account users’ views, online context and algorithmic estimation}}, journal={Sociology}, year={2017}, volume={51}, number={6}, pages={1149--1168}, doi={10.1177/0038038517708140}}
R