Reddit AmItheAsshole on mukavampi naisille kuin miehille – SQL-todiste?

touko 7, 2021
admin

Kun redditorit kysyvät ”olenko minä kusipää” puhuessaan naisista, heillä on suurempi muutos tulla tuomituksi kusipääksi. Katsotaanpa näitä mittareita – BigQueryllä, dbt:llä ja Data Studiolla

Varmista, ettet pidä mitään, mitä kirjoitin tänne, absoluuttisena totuutena. Useat ihmiset Twitterissä huomasivat ongelmia ja lisäsivät korjauksia tarjoamaani analyysiin. Tämän viestin lukeminen alkuperäisessä muodossaan – ja reaktiot – voi olla hyvä tapa oppia yhtä paljon kuin minä vastauksia lukiessani. Löydät monia heidän suodattamattomia ajatuksiaan seuraamalla tätä Twitter-ketjua.

Konteksti

/r/amItheAsshole on kasvanut neljänneksi aktiivisimmaksi subredditiksi – kommenttien määrän perusteella. Ihmiset tulevat tähän subredditiin kertomaan tarinoitaan, ja he kysyvät muilta redditoijilta ”olenko minä se kusipää täällä?”. Kävi ilmi, että useimmat ihmiset arvioidaan ”ei kusipääksi”, kuten tästä kaaviosta näkyy:

Molemmat ihmiset arvioidaan ”ei kusipääksi”

Twiittini, jossa oli nämä tulokset, sai paljon huomiota:

Seuraava kysymys – onko reddit mukavampi naisille vai miehille?

Sukupuolen päättäminen

Katsomalla postauksen otsikkoa tai sisältöä voi olla vaikea päättää, onko ”minä” mies vai nainen – mutta on melko helppoa laskea jutussa esiintyvien ”hän/tyttöystävä/poikaystävä” -ilmaisujen määrä.

Katsotaanpa joitakin satunnaisia viestejä ja kunkin pronominin ja sukupuolittuneen sanan lukumäärää:

Joitakin satunnaisia viestejä ja kunkin pronominin ja sukupuolittuneen sanan lukumäärää.

Voidaan huomata, että sukupuolittuneiden pronominien ja sanojen määrä esimerkissä vastaa sitä, kenestä jutussa on kyse. Nämä tarinat kertovat miespuolisesta asiakkaasta, naispuolisesta tyttöystävästä, miespuolisesta naapurista, miespuolisesta pojasta ja naispuolisesta teini-ikäisestä tyttärestä.

Näillä luvuilla voimme nyt asettaa mielivaltaisen säännön: Jos miespuolisia pronomineja on yli kaksi kertaa enemmän kuin naispuolisia, kyseinen viesti kertoo miehestä. Voimme käyttää päinvastaista sääntöä sanoaksemme, että viesti kertoo naisesta. Jos luvut ovat liian lähellä toisiaan tai nolla, sanomme viestiä ”neutraaliksi”.

Toinen sääntö, jonka voimme asettaa analyysin yksinkertaistamiseksi:

  • Jos tuomio on ”ei a-ukko” tai ”täällä ei ole a-ukkoja”, niin voimme sanoa ”viestin kirjoittaja ei ole kusipää”.
  • Jos tuomio on ’kusipää’ tai ’kaikki ovat kusipäitä’ niin voimme sanoa ’postaaja on kusipää’.

Jos yhdistämme kaikki nämä viestit, saamme luvut:

Vähemmistö ihmisistä ei ole kusipää. Mutta jos puhutaan naisista, on suurempi todennäköisyys olla sellainen.

Kun esittelin nämä tulokset ensimmäisen kerran, minulle sanottiin, että ”nämä luvut ovat liian lähellä toisiaan, ne voivat olla tilastovirhe”.

Tilastollinen merkitsevyys?

Miten voimme sanoa, etteivät luvut ole vain tilastovirhe? Katsotaan trendi kuukausi kuukaudelta – onko se vakaa?

Kuukausittaiset arvioinnit – kun juontaja puhuu naisista, juontajalla on aina suurempi todennäköisyys olla kusipää.

Joo! Trendi vaihtelee kuukausittain, mutta naisista puhuttaessa on selvästi suurempi mahdollisuus olla kusipää kuin miehistä puhuttaessa. Jos pieni ero olisi vain tilastollinen sattuma, odottaisimme trendin sen sijaan hyppäävän hurjasti.

Ja huomaa, että nämä tulokset ovat hyvin spesifisiä, kuten tässä twiitissä todetaan:

Johon vastasin

How-to

Tällä kerralla käytän dbt ensimmäistä kertaa ja jätin kaiken koodini GitHubiin. Kiitos Claire Carrollille avusta tämän mahtavan työkalun käyttöönotossa!

Purkaaksesi kaikki /r/AmItheAsshole-postaukset BigQueryssä uuteen taulukkoon, voit tehdä näin:

CREATE TABLE temp.data ASSELECT * 
FROM `fh-bigquery.reddit_posts.20*'
WHERE subreddit = 'AmItheAsshole'
AND _table_suffix > '19_'

Sitten jokaisen postauksen sukupuoli ja tuomio voidaan määrittää seuraavanlaisella kyselyllä:

WITH data AS (
SELECT *
, ARRAY_LENGTH(REGEXP_EXTRACT_ALL(CONCAT(selftext, title), r'(?i)\bhe\b')) hes
, ARRAY_LENGTH(REGEXP_EXTRACT_ALL(CONCAT(selftext, title), r'(?i)\bshe\b')) shes
, ARRAY_LENGTH(REGEXP_EXTRACT_ALL(CONCAT(selftext, title), r'(?i)\bher\b')) hers
, ARRAY_LENGTH(REGEXP_EXTRACT_ALL(CONCAT(selftext, title), r'(?i)\bhis\b')) hiss
, ARRAY_LENGTH(REGEXP_EXTRACT_ALL(CONCAT(selftext, title), r'(?i)\bthey\b')) theys
, ARRAY_LENGTH(REGEXP_EXTRACT_ALL(CONCAT(selftext, title), r'(?i)\bgirlfriend\b')) gfs
, ARRAY_LENGTH(REGEXP_EXTRACT_ALL(CONCAT(selftext, title), r'(?i)\bboyfriend\b')) bfs
FROM {{ref('aita_posts')}}
WHERE link_flair_text IS NOT NULL
)
, gendered_data AS (
SELECT *
, CASE
WHEN males > 2+females*2 THEN 'to_male'
WHEN females > 2+males*2 THEN 'to_female'
ELSE 'neutral'
END to_gender
FROM (
SELECT *, hes+shes+hers+hiss+theys+gfs+bfs totalgender, hes+hiss+bfs males, shes+hers+gfs females
FROM data
)
)
SELECT CASE link_flair_text
WHEN 'not the a-hole' THEN 'no asshole'
WHEN 'no a-holes here' THEN 'no asshole'
WHEN 'everyone sucks' THEN 'asshole'
WHEN 'asshole' THEN 'asshole'
END judgement
, *
FROM gendered_data
WHERE link_flair_text IS NOT NULL

Ja lopuksi tässä esitetyt tilastot:

SELECT *, c/total_gender AS perc
FROM (
SELECT *, SUM(c) OVER(PARTITION BY to_gender, MONTH ) total_gender, SUM(c) OVER(PARTITION BY judgement, MONTH) total_judgement
FROM (
SELECT to_gender, judgement, CONCAT(to_gender, ': ', judgement) to_gender_judgement, month, COUNT(*) c, ARRAY_AGG(STRUCT(title, selftext) ORDER BY RAND() LIMIT 1) sample_title
FROM {{ref('aita_posts_gendered')}}
WHERE judgement IS NOT null
AND to_gender != 'neutral'
GROUP BY 1,2,3,4
)
)
WHERE c/total_gender > 0.01
AND total_judgement > 10
ORDER BY to_gender, perc DESC

Keskustelu

Tämän viestin Twitter-ketjusta löydät runsaasti oivaltavia ja viihdyttäviä vastauksia:

Keskusteluun voi vapaasti osallistua (ja kertoa, jos olen väärässä?). Muistakaa olla mukavia toisillenne – suurin osa ihmisistä ei kuitenkaan ole kusipäitä.

Tahdotko lisää?

Peitin vain elokuuhun 2019 asti, koska silloin nykyinen täysi reddit-arkisto BigQueryssä loppuu – kunnes tulevat odotetut päivitykset tulevat. Katso edellisestä viestistäni lisätietoja live-datan keräämisestä pushshift.iosta. Kiitos Jason Baumgartnerille jatkuvasta tarjonnasta!

Olen Felipe Hoffa, Google Cloudin Developer Advocate. Seuraa minua osoitteessa @felipehoffa, löydä aiemmat postaukseni osoitteesta medium.com/@hoffa ja kaiken BigQuerystä reddit.com/r/bigquery.

Vastaa

Sähköpostiosoitettasi ei julkaista.