Histograma i diagrama de dispersió¶
Exercici histogram-and-scatter-annex.pdf · PDF
La majoria de jocs de Steam són barats o cars? Tens 26,685 preus a games_clean. Una barra per cada preu exacte et donaria centenars de barres: 0.99, 1.99, 2.49, 2.99... Ningú no ho podria llegir.
Els jocs competitius van resoldre aquest problema fa temps. Al mode competitiu (ranked), ningú no dibuixa una barra per jugador. El joc talla l'escala de puntuació en trams, els anomena Bronze, Plata, Or, Platí i Diamant, i compta quants jugadors hi ha a cadascun. D'una ullada saps on és la majoria de la gent, i com de rar és el cim.
Aquesta imatge és el primer gràfic d'aquesta lliçó. El segon respon un altre tipus de pregunta, també del mode competitiu: els jugadors amb més hores tenen un rang més alt? Un sol número no ho pot respondre. En necessites dos, sobre la mateixa imatge.
Què aprendràs
- Dir què mostra un histograma i en què es diferencia d'un gràfic de barres
- Triar un nombre sensat de intervals (bins) i veure què fan els valors atípics (outliers) en un histograma
- Llegir una distribució amb paraules: on són la majoria dels valors, com de llarga és la cua
- Construir un diagrama de dispersió de dues columnes numèriques i dir què representa un punt
- Descriure una relació (direcció i força) sense afirmar-ne una causa
- Desactivar la trampa: per què "el núvol puja" no vol dir "una cosa causa l'altra"
L'histograma: la distribució de rangs¶
Un histograma talla una columna numèrica en intervals iguals i dibuixa una barra per interval. L'alçada de cada barra és el nombre de files que hi cauen.
Cada interval és un bin. La forma que dibuixen les barres juntes és la distribució de la columna: on s'acumulen els valors i on són rars.
Al mode competitiu, la columna numèrica és la puntuació, els bins són els rangs, i l'alçada és el nombre de jugadors. Amb els preus dels jocs, la columna és price, cada bin és un tram de preu, i l'alçada és el nombre de jocs.
La paraula és més antiga que els videojocs: l'estadístic anglès Karl Pearson va introduir el terme histograma el 1891.
Sembla un gràfic de barres. No ho és¶
Tots dos tenen barres, i aquí s'acaba la semblança.
| Gràfic de barres | Histograma | |
|---|---|---|
| Eix X | Categories que ja existeixen (price_band) |
Una columna numèrica tallada en bins iguals |
| Alçada de la barra | Qualsevol mètrica per categoria | Sempre un recompte: les files dins del bin |
| Tries tu | La dimensió i la mètrica | La columna i el nombre de bins |
| Ordre de les barres | El decideixes tu (ordena per valor) | Fix: la recta numèrica, de petit a gran |
| Respon | Quina categoria és més gran? | Quina forma tenen els valors? On són la majoria? |
A Categorització vas construir price_band a mà, amb CASE WHEN. Aquelles franges tenien amplades desiguals que tu vas triar: Under 5, 5 to 15, 15 to 30. Un histograma és diferent: pren el mínim i el màxim de les dades i talla tot el que hi ha entremig en bins d'amplada igual.
Aquest últim detall està a punt de picar-te.
Una barra gegant: què fan els valors atípics¶
Demana un histograma de price amb 5 bins i obtens el gràfic de l'esquerra.
Una barra enorme i gairebé res més: 26,658 productes al primer bin, després 22, 2, 2 i 1. El gràfic és correcte. També és inútil.
Per què? Cinc bins iguals entre el producte més barat i el més car. I quin és el més car?
SELECT game, price FROM games_clean ORDER BY price DESC LIMIT 6;
game |
price |
|---|---|
| ADR-Labelling Game | 595.99 |
| GameMaker Studio 2 UWP | 399.99 |
| VEGAS Pro 16 Edit Steam Edition | 399.00 |
| Marvelous Designer 8 for Steam | 320.00 |
| Facerig Studio for Individual Creators | 299.99 |
| Silhouette | 199.99 |
Mira els noms. La majoria no són jocs: són programari de disseny i de vídeo venut a Steam. Un grapat de files estiren l'eix fins a 595.99, de manera que cadascun dels 5 bins fa 119.2 d'amplada, i gairebé tots els productes de la taula cauen al primer.
Un valor atípic (outlier) és un valor que queda molt lluny de gairebé tots els altres.
La solució té dues parts: mira només el rang on són els jocs, i fes servir més bins. Filtra els preus fins a 60, demana 12 bins, i obtens el gràfic de la dreta. El filtre només deixa fora 83 de les 26,685 files (0.3 %).
Compte: treure valors atípics d'una imatge no és esborrar dades
Aquestes 83 files són productes reals amb preus reals. Les has tret d'aquest gràfic perquè la pregunta va de jocs, i ho dius al títol: "preu fins a 60". Un valor atípic és un valor que cal investigar, no esborrar per reflex. Continuen a games_clean.
Llegir una distribució amb paraules¶
Un histograma està acabat quan el pots dir en una frase. Per al gràfic de la dreta:
La majoria de jocs són barats: 14,707 de 26,602 (55 %) costen menys de 5, i aquesta barra inclou els 3,094 jocs gratuïts.
Tres coses a buscar en qualsevol distribució:
| Busca | A l'histograma de preus |
|---|---|
| On és el pic? | El primer bin, de 0 a 5 |
| Hi ha cua? La part baixa que s'estén cap a un costat | Una cua llarga cap a la dreta: cada cop menys jocs a mesura que puja el preu |
| Hi ha res d'estrany? | Un zigzag a la cua |
El zigzag té una explicació avorrida. A les botigues els encanten els preus acabats en .99, i 24.99 i 29.99 cauen en bins diferents. Alguns bins contenen un preu popular i els veïns no.
Aquesta imatge també explica una cosa d'Estadística exploratòria. La mitjana del preu és 7.91 i la mediana és 4.99. Per què són tan diferents? La cua llarga de la dreta: uns quants productes cars estiren la mitjana cap amunt, mentre que la mediana es queda on és la majoria dels jocs. L'histograma és la imatge de per què difereixen.
Compte: més bins no sempre és millor
Massa pocs bins amaguen la forma: amb 5 bins vas veure una sola barra. Massa en converteixen la forma en soroll, amb centenars de barres primes i buits. Prova dos o tres valors i queda't amb el que explica la veritat de la manera més senzilla.
El diagrama de dispersió: un punt per jugador¶
Tornem al mode competitiu. Els jugadors amb més hores tenen un rang més alt? Un histograma no ho pot respondre: mira un sol número. Agafa cada jugador, posa les seves hores a l'eix horitzontal i el seu rang a l'eix vertical, i dibuixa un punt.
Un diagrama de dispersió (scatter plot) dibuixa un punt per fila, situat per dues columnes numèriques: una fixa la posició horitzontal i l'altra la vertical. Mostra la relació entre les dues.
Aquí en tens un de real, de la taula de classe pokemon. Cadascun dels 949 punts és un Pokémon, situat pel seu attack i el seu defense:
Un diagrama de dispersió no es llegeix punt per punt. Es llegeix la forma del núvol:
| Forma del núvol | Lectura | Compte |
|---|---|---|
| Puja cap a la dreta | Relació positiva: quan un és alt, l'altre tendeix a ser alt | No diu quin causa quin |
| Baixa cap a la dreta | Relació negativa: quan un és alt, l'altre tendeix a ser baix | Mateixa advertència |
| Taca rodona | Cap relació clara | Això també és una resposta |
Aquest núvol puja cap a la dreta, de manera difusa: els Pokémon amb més atac tendeixen a tenir més defensa. Tendeixen. El núvol és ample, i alguns punts ignoren la regla del tot. El punt solitari a l'extrem superior esquerre és Shuckle: attack 10, defense 230.
Com de ajustat és un núvol té un número.
La correlació mesura com de junts es mouen dos números, de -1 (una recta decreixent perfecta) passant per 0 (una taca) fins a 1 (una recta creixent perfecta).
A PostgreSQL la funció és CORR:
SELECT CORR(attack, defense) FROM pokemon;
Retorna 0.44: una relació positiva de força moderada. El diagrama de dispersió és la imatge, i la correlació n'és el resum en un sol número. Mira sempre també la imatge: a Les dades no parlen soles vas veure quatre conjunts de dades amb els mateixos números resum i quatre formes completament diferents.
Correlació no és causalitat¶
Un diagrama de dispersió mostra que dues coses van juntes. Mai no mostra que una causa l'altra.
La causalitat vol dir que canviar una cosa fa canviar l'altra. Un gràfic sol no ho pot demostrar.
Tornem al mode competitiu. Suposem que els jugadors amb més hores tenen realment un rang més alt. Jugar més et fa millor? Potser. O potser els bons jugadors gaudeixen més del joc i per això juguen més: la fletxa apunta cap a l'altre costat. O una tercera cosa mou totes dues.
Les dades de classe tenen un exemple net. Entre els jocs de Steam que tenen puntuació de crítica, els jocs més cars puntuen una mica més alt. Pujar el preu millora les crítiques? És clar que no. Els grans estudis cobren més i tenen pressupostos més grans. El pressupost és al darrere dels dos números.
flowchart TB
B["<b>Una tercera cosa</b><br>un estudi gran<br>amb un pressupost gran"]
B --> P["<b>Preu més alt</b>"]
B --> M["<b>Millors crítiques</b>"]
P -. "el gràfic mostra aquests dos junts.<br>No mostra cap fletxa" .- M
Compte: la frase honesta
Digues el que mostra el gràfic i res més. "Entre els jocs amb crítiques, els més cars puntuen una mica més alt de mitjana" és honest. "Puja el preu i les crítiques milloraran" és una afirmació que el gràfic no pot sostenir.
Només les files que tenen el valor¶
Hi ha una trampa més en aquest exemple de preu i crítiques, i va de quines files hi ha al gràfic.
La puntuació de crítica és la columna metascore. Només 2,849 dels 26,685 jocs en tenen: al voltant d'un 11 %. A Imputació vas decidir no inventar-te les puntuacions absents, i vas afegir la columna has_metascore per distingir els dos grups.
Així doncs, un gràfic de preu contra metascore descriu aquests 2,849 jocs, no Steam. I no són un 11 % aleatori: els crítics ressenyen els jocs que reben atenció. Digues-ho al títol.
Això és el que dibuixa Superset quan demanes un diagrama de dispersió de price i la mitjana de metascore:
Compte: aquí cada punt és un preu, no un joc
El Scatter Plot de Superset agrupa per l'eix X. Hi ha 58 punts, un per cada preu diferent, i l'alçada d'un punt és la metascore mitjana de tots els jocs ressenyats venuts a aquell preu. Compara-ho amb el gràfic dels Pokémon, on un punt era un Pokémon. Abans de llegir qualsevol gràfic, pregunta't: què representa una marca?
El núvol puja lleugerament. Però fixa't en quins punts et pots refiar:
| Preu | Metascore mitjana | Jocs darrere del punt |
|---|---|---|
| 0.00 | 71.9 | 159 |
| 4.99 | 67.8 | 202 |
| 9.99 | 71.6 | 661 |
| 19.99 | 74.1 | 504 |
| 29.99 | 74.1 | 165 |
| 39.99 | 74.8 | 75 |
| 59.99 | 77.8 | 39 |
| 0.54 (el punt més baix) | 49.0 | 1 |
| 54.99 | 88.0 | 1 |
El punt a 9.99 és la mitjana de 661 jocs. El punt a 54.99 és un sol joc que va puntuar 88. Superset dibuixa tots dos amb la mateixa mida. A la figura de dalt els punts d'un sol joc són buits perquè els puguis distingir: 26 dels 58 punts representen un sol joc.
Joc a joc, la relació és feble: CORR(price, metascore) sobre els 2,849 jocs ressenyats és 0.16.
Prova-ho: preus, i preu contra metascore¶
Els dos gràfics fan servir el dataset games_clean (mira Recursos per a les dades).
Gràfic 4 — Distribució de preus. On són la majoria de jocs, i com de llarga és la cua?
| Pas | Fes això a Superset | Hauries de veure |
|---|---|---|
| 1 | Gràfic nou sobre games_clean, tipus de gràfic Histogram. No és a la primera llista (Featured): fes clic a All charts, o escriu histogram al quadre de cerca |
Un editor de gràfics buit |
| 2 | Column: price. Row limit: canvia 10000 per 50000. Deixa Bins a 5. Create chart |
Una barra enorme. Passa-hi el cursor: 0 - 119.2 |
| 3 | Filters: price, operador Less or equal (<=), escriu 60 i tria'l a la llista, Save |
Un xip price <= 60 sota Filters |
| 4 | Bins: escriu 12 i prem Enter. Update chart |
Dotze barres, la primera la més alta, una cua cap a la dreta |
| 5 | Customize, Y Axis Format: ,d |
El quadre del cursor diu 14,707 en lloc de 14.7k |
| 6 | Save, nom UT3 · Price distribution |
El gràfic és a la llista de Charts |
No et saltis el límit de files del pas 2. Un histograma es calcula a partir de les files que rep, i amb el valor per defecte només llegiria 10,000 dels teus 26,685 jocs.
Les dotze barres han de coincidir amb aquests recomptes:
| El bin comença a | Jocs | El bin comença a | Jocs | El bin comença a | Jocs |
|---|---|---|---|---|---|
| 0 | 14,707 | 20 | 282 | 40 | 18 |
| 5 | 6,611 | 25 | 419 | 45 | 99 |
| 10 | 2,435 | 30 | 60 | 50 | 6 |
| 15 | 1,666 | 35 | 209 | 55 | 90 |
Gràfic 5 — Preu contra metascore. Els jocs més cars reben millors crítiques?
| Pas | Fes això a Superset | Hauries de veure |
|---|---|---|
| 1 | Gràfic nou sobre games_clean, tipus de gràfic Scatter Plot |
Un editor de gràfics buit |
| 2 | X-axis: price. Metrics: pestanya Simple, columna metascore, agregat AVG |
La mètrica AVG(metascore) |
| 3 | Filters: has_metascore, operador Is true, Save. Create chart |
Un núvol de 58 punts entre 0 i 60 a l'eix X |
| 4 | Passa el cursor pel punt a 9.99, el punt a 59.99 i el punt més baix | 71.6, 77.8 i 49 |
| 5 | Save, nom UT3 · Price vs metascore |
El gràfic és a la llista de Charts |
Els punts són les 58 files d'aquesta consulta:
SELECT price, ROUND(AVG(metascore)::numeric, 1) AS avg_metascore, COUNT(*) AS games
FROM games_clean WHERE has_metascore GROUP BY price ORDER BY price;
Si alguna cosa no quadra
- La primera barra acaba prop de 40 en lloc de 119, o les barres sumen 10,000. Row limit encara és a 10,000, així que el gràfic només ha llegit una part de la taula. Posa-hi 50,000.
- Encara una barra gegant després del filtre. El filtre no s'ha desat (el xip
price <= 60ha d'aparèixer sota Filters), o no s'ha premut Update chart. - "Must specify a value for filters with comparison operators". El xip diu
price <=sense cap número. Fes-hi clic, escriu60, tria'l a la llista, Save. - Un diagrama de dispersió amb un sol punt.
priceha anat a Metrics en lloc d'a X-axis. - Els punts estan repartits uniformement com en un gràfic de barres. Force categorical està marcat sota l'eix X. Desmarca'l.
Per anar més enllà: l'histograma acumulat
A l'histograma, marca Cumulative i actualitza el gràfic (no el desis). Ara cada barra suma totes les barres anteriors. La segona barra arriba a 21,318: els dos primers bins junts. Així doncs, el 80 % d'aquests 26,602 jocs costen menys de 10.
Idees clau¶
- Un histograma talla una columna numèrica en bins iguals i compta les files de cadascun. Mostra una distribució: on s'acumulen els valors i com de llarga és la cua.
- Un histograma no és un gràfic de barres: el seu eix X és una recta numèrica, la seva alçada és sempre un recompte, i tries tu el nombre de bins.
- Els valors atípics estiren l'eix i ho apreten tot en una sola barra. Filtra el gràfic a un rang sensat, digues-ho al títol, i no esborris les files.
- Un diagrama de dispersió situa punts per dues columnes numèriques i mostra la seva relació: creixent, decreixent o cap. La correlació hi posa un número.
- Correlació no és causalitat. Dues coses es poden moure juntes perquè una tercera cosa mou totes dues.
- Pregunta't sempre què representa una marca i quines files hi ha al gràfic. Preu contra metascore descriu l'11 % de jocs amb crítica, i cada punt és un preu, no un joc.
Comprovació ràpida¶
1. Què mostra sempre l'alçada d'una barra en un histograma?
- La mitjana de la columna dins d'aquell bin
- El nombre de files el valor de les quals cau dins d'aquell bin
- El valor més gran dins d'aquell bin
- Qualsevol mètrica que triïs, com en un gràfic de barres
Un histograma compta. Cada bin és un tram d'una columna numèrica, i l'alçada de la barra és quantes files hi cauen. Triar qualsevol mètrica per categoria és el que fa un gràfic de barres.
2. En què es diferencia un histograma de price del gràfic de barres de price_band?
- No hi ha cap diferència: tots dos tenen barres
- L'histograma fa servir colors i el gràfic de barres no
- L'histograma talla el número en bins d'amplada igual calculats a partir de les dades;
price_bandté franges desiguals triades a mà - El gràfic de barres només pot mostrar cinc barres
price_band es va construir amb CASE WHEN i les seves amplades van ser una elecció teva. Un histograma pren el mínim i el màxim de les dades i fa bins d'amplada igual, que és exactament per què els valors atípics el poden trencar.
3. El teu primer histograma de price mostra una barra gegant i quatre de gairebé buides. Quina és la causa?
- La columna
priceestà emmagatzemada com a text - La majoria de jocs són gratuïts
- Uns quants productes de fins a 595.99 estiren l'eix, així que cadascun dels 5 bins fa 119.2 d'amplada
- Superset només pot dibuixar una barra en un histograma
Els bins es tallen entre el mínim i el màxim. Un grapat de valors atípics (programari car, no jocs) empenyen el màxim fins a 595.99, i 26,658 productes cauen al primer bin.
4. Filtres l'histograma a price <= 60. Què ha passat amb els 83 productes per sobre de 60?
- Han estat esborrats de
games_clean - S'han mogut a l'últim bin
- Continuen a la taula; s'han deixat fora d'aquest gràfic, i el títol ho hauria de dir
- El seu preu s'ha canviat a 60
Un filtre de gràfic canvia la imatge, no les dades. Les files són reals i es queden a la taula. Un valor atípic és un valor que cal investigar, no esborrar per reflex.
5. Al diagrama de dispersió dels Pokémon, el núvol puja de manera difusa cap a la dreta i CORR(attack, defense) és 0.44. Què pots dir?
- Pujar l'atac d'un Pokémon fa pujar la seva defensa
- Els Pokémon amb més atac tendeixen a tenir més defensa, amb moltes excepcions
- Tot Pokémon amb atac alt té defensa alta
- L'atac i la defensa no estan relacionats
Un núvol creixent és una relació positiva, i 0.44 diu que és de força moderada: una tendència, no una regla. Shuckle té attack 10 i defense 230. I una relació mai no demostra una causa.
6. Al diagrama de dispersió de Superset del preu contra la metascore mitjana, què és un punt?
- Un joc
- Un editor
- Un preu: la metascore mitjana de tots els jocs ressenyats venuts a aquell preu
- Una crítica escrita per un crític
El Scatter Plot de Superset agrupa per l'eix X, així que hi ha 58 punts per a 2,849 jocs. El punt a 9.99 és la mitjana de 661 jocs; el punt a 54.99 és un sol joc. Pregunta't sempre què representa una marca.
7. Per què no pots dir \"a Steam, els jocs cars reben millors crítiques\" a partir d'aquest gràfic?
- Perquè la correlació és negativa
- Perquè el gràfic només inclou l'11 % aproximadament dels jocs que tenen metascore, i aquests no són una mostra aleatòria
- Perquè els diagrames de dispersió no poden fer servir preus
- Perquè el gràfic té massa pocs bins
Només 2,849 dels 26,685 jocs tenen metascore, i els crítics ressenyen els jocs que reben atenció. El gràfic descriu els jocs ressenyats. Un segon problema: fins i tot allà, una relació no és una causa.
8. Un amic et mostra un histograma dels sous d'una empresa: una barra enorme a l'esquerra i res més de visible. Després dibuixa el sou contra els anys a l'empresa i diu \"quedar-te més temps fa que guanyis més\". Tria les dues rèpliques correctes.
- Uns quants sous molt alts estiren l'eix: filtra a un màxim sensat, digues-ho, i fes servir més bins
- El diagrama de dispersió mostra que el sou i els anys van junts, no que un causi l'altre
- L'histograma és defectuós perquè els sous són categories
- El diagrama de dispersió demostra la causa, perquè el núvol puja
La barra gegant és l'efecte dels valors atípics que vas veure amb els preus, i la solució és la mateixa. La segona afirmació confon correlació amb causalitat: tots dos es mouen junts, i una altra cosa (el tipus de feina, per exemple) podria moure'ls tots dos.
Ara ja saps mostrar com es reparteix un número i com es relacionen dos números. Encara falten dos gràfics famosos, i un d'ells és molt fàcil de fer malament: Sectors, mapa de calor i altres.