Come tracciare correttamente le tendenze


45

Sto creando un grafico per mostrare le tendenze nei tassi di mortalità (per 1000 ppl.) In diversi paesi e la storia che dovrebbe venire dalla trama è che la Germania (linea blu chiaro) è l'unica la cui tendenza è in aumento dopo il 1932. Questo è il mio primo tentativo (di base)

inserisci qui la descrizione dell'immagine

Secondo me, questo grafico sta già mostrando ciò che vogliamo che sia detto, ma non è super intuitivo. Hai qualche suggerimento per chiarire questa distinzione tra le tendenze? Stavo pensando di tracciare i tassi di crescita, ma ci ho provato e non è meglio.

I dati sono i seguenti

year     de     fr      be       nl     den      ch     aut     cz       pl
1927    10.9    16.5    13      10.2    11.6    12.4    15      16      17.3
1928    11.2    16.4    12.8    9.6     11      12      14.5    15.1    16.4
1929    11.4    17.9    14.4    10.7    11.2    12.5    14.6    15.5    16.7
1930    10.4    15.6    12.8    9.1     10.8    11.6    13.5    14.2    15.6
1931    10.4    16.2    12.7    9.6     11.4    12.1    14      14.4    15.5
1932    10.2    15.8    12.7    9       11      12.2    13.9    14.1    15
1933    10.8    15.8    12.7    8.8     10.6    11.4    13.2    13.7    14.2
1934    10.6    15.1    11.7    8.4     10.4    11.3    12.7    13.2    14.4
1935    11.4    15.7    12.3    8.7     11.1    12.1    13.7    13.5    14
1936    11.7    15.3    12.2    8.7     11      11.4    13.2    13.3    14.2
1937    11.5    15      12.5    8.8     10.8    11.3    13.3    13.3    14

2
I dati provenienti da Italia e Spagna sarebbero interessanti in confronto. Avevano anche governi facisti in quel periodo.
asmaier,

1
accanto alle buone idee fornite nelle risposte, assicurati di iniziare il tuo diagramma a 0 (asse y) in modo che le magnitudo dei cambiamenti relativi siano più visibili.
WoJ,

2
@WoJ Vedo il tuo punto, ma in pratica l'intervallo va da circa 9 a circa 18 per 1000, quindi metà dello spazio del grafico sarebbe speso dimostrando che il tasso di mortalità non è zero. Penso che sia per questo che la maggior parte delle persone (me compreso) non ha voluto farlo finora nelle loro risposte. Considera dove si ferma il tuo criterio, ad es. Insisti sul fatto che le trame delle variazioni storiche dell'altezza degli adulti iniziano tutte da zero? Altre discussioni su es. Stats.stackexchange.com/questions/184525/…
Nick Cox,

1
Anziché pensare al grafico, mi chiedo innanzitutto cosa sta alla base dei dati e dell'analisi. Quali sono i fattori coinvolti nel tasso di mortalità? Il tasso di mortalità diminuisce più rapidamente se è già elevato (ad esempio la Polonia)? I tassi di mortalità si alzano ad un certo livello? Questo effetto plateau (che è più forte per la Germania) può forse aumentare l'effetto per l'Austria (negli ultimi anni)? Il grafico è una sorta di dati grezzi (deve ancora essere analizzato) e allo stesso tempo è derivato (i numeri non sono semplici misurazioni ma derivate) questo rende difficile evidenziare 1 effetto.
Sesto Empirico

1
Inoltre, è meglio mostrare un periodo più lungo rispetto a soli 10 anni. L'attenzione su questi dieci anni è giusta solo quando mostri l'ambiente circostante. È così comune vedere primi piani che hanno molto meno senso in una prospettiva più ampia. Quando queste curve salgono e scendono come onde in una tempesta, allora devi mostrare l'intero mare e non solo una singola onda che sembra correlarsi con una bella storia. (Sono sicuro che c'è un esempio di Tufte che mostra questo principio)
Sisto Empirico

Risposte:


53

A volte meno è di più. Con meno dettagli sulle variazioni da un anno all'altro e le distinzioni del paese è possibile fornire ulteriori informazioni sulle tendenze. Dato che gli altri paesi si muovono principalmente insieme, puoi cavartela senza colori separati.

Nell'usare un dispositivo più fluido, è necessario che il lettore si fidi di non aver appianato alcuna variazione interessante.

inserisci qui la descrizione dell'immagine

Aggiorna dopo aver ricevuto un paio di richieste per il codice :

L'ho realizzato nel Graph Builder interattivo di JMP . Lo script JMP è:

Graph Builder(
Size( 528, 456 ), Show Control Panel( 0 ), Show Legend( 0 ),
// variable role assignments:
Variables( X( :year ), Y( :Deaths ), Overlay( :Country ) ),
// spline smoother:
Elements( Smoother( X, Y, Legend( 3 ) ) ),
// customizations:
SendToReport(
    // x scale, leaving room for annotations
    Dispatch( {},"year",ScaleBox,
        {Min( 1926.5 ), Max( 1937.9 ), Inc( 2 ), Minor Ticks( 1 )}
    ),
    // customize colors and DE line width
    Dispatch( {}, "400", ScaleBox, {Legend Model( 3,
        Properties( 0, {Line Color( "gray" )}, Item ID( "aut", 1 ) ),
        Properties( 1, {Line Color( "gray" )}, Item ID( "be", 1 ) ),
        Properties( 2, {Line Color( "gray" )}, Item ID( "ch", 1 ) ),
        Properties( 3, {Line Color( "gray" )}, Item ID( "cz", 1 ) ),
        Properties( 4, {Line Color( "gray" )}, Item ID( "den", 1 ) ),
        Properties( 5, {Line Color( "gray" )}, Item ID( "fr", 1 ) ),
        Properties( 6, {Line Color( "gray" )}, Item ID( "nl", 1 ) ),
        Properties( 7, {Line Color( "gray" )}, Item ID( "pl", 1 ) ),
        Properties( 8, {Line Color("dark red"), Line Width( 3 )}, Item ID( "de", 1 ))
    )}),
    // add line annotations (omitted)

));


4
Nella mia esperienza, il livellamento delle serie è una pratica molto rara nelle scienze sociali.
luchonacho,

6
Forse è un motivo per mostrare loro qualcosa di nuovo e utile?
kjetil b halvorsen,

9
A prescindere dalle norme nelle scienze sociali, trovo che il livellamento nasconda il calo che si verifica nel 1930 e il rialzo che si verifica nel 1935. Anche il picco in più paesi che si verifica nel 1929 è oscurato. Altrimenti, mi piace molto questo approccio semplicistico.
Underminer

7
+1 per usare solo due colori (forse rendere il grigio ancora più chiaro?) Ed evitare la legenda posizionando i nomi dei paesi sulla destra. -1 per il livellamento, che elimina le informazioni senza una buona ragione. Quindi non ho davvero bisogno di votare ;-)
S. Kolassa - Ripristina Monica il

10
@StephanKolassa Penso che il punto di xan sia che ci sia una buona ragione per scartare le informazioni: concentrarsi sulle tendenze generali, piuttosto che sulla "rumorosità" da un anno all'altro. In una certa misura, stai già "scartando informazioni" - stai guardando i numeri annuali. Dubito che il grafico sarebbe migliorato tracciando le tariffe giornaliere, che è dove "non scartare le informazioni" ti porta, ad assurdo . - È vero che alcune tendenze sono oscurate dal livellamento, ma altre (come le variazioni stagionali) sono oscurate dalla scelta dei tassi annuali. C'è un po 'di fiducia nel fatto che la variazione rilevante sia ancora visualizzata.
RM

39

Ci sono buone risposte qui. Lascia che ti dica che vuoi dimostrare che la tendenza per la Germania differisce dal resto. Livelli vs cambiamenti è una distinzione comune in economia. I tuoi dati sono a livelli , ma la tua domanda è dichiarata come alla ricerca di modifiche . Il modo per farlo è impostare il livello di riferimento (qui 1932) come . Da lì, ogni anno successivo è una frazione del precedente. (È comune prendere i registri per rendere i cambiamenti più stabili e simmetrici. Questo cambia un po 'il significato dei numeri esatti, se davvero vuoi che qualcuno lo ottenga dalla trama, ma di solito per questo tipo di cose, le persone vogliono essere in grado di vedere il modello.) Quindi ottieni una somma corrente per ogni serie e moltiplicala per100 1001100per convenzione. Questo è ciò che trama. Il tuo caso è leggermente meno comune in quanto il tuo punto di riferimento è nel mezzo della tua serie, quindi l'ho eseguito in entrambe le direzioni dal 1932. Di seguito è riportato un semplice esempio, codificato in R (ci saranno molti modi per creare il codice e trama più bella, ma questo dovrebbe mostrare l'idea in modo diretto). Ho reso la linea per la Germania più spessa per distinguerla nella leggenda e ho aggiunto una linea di riferimento a . È facile vedere che la Germania si distingue dal resto. Puoi anche vedere che tutti gli altri paesi finiscono con tassi più bassi a 1937 rispetto al 1932 e che i loro cambiamenti di anno in anno fluttuano molto meno negli anni successivi al 1932 rispetto agli anni che lo precedono. 100

d = read.table(text="
year     de     fr      be       nl     den      ch     aut     cz       pl
1927    10.9    16.5    13      10.2    11.6    12.4    15      16      17.3
...
1937    11.5    15      12.5    8.8     10.8    11.3    13.3    13.3    14",
header=T)

d2          = d  # we'll end up needing both
d2[6,2:10]  = 1  # set 1932 as 1
for(j in 2:10){   
  for(i in 7:11){
      # changes moving forward from 1932:
    d2[i,j] = log( d[i,j]/d[i-1,j] )
      # running sum moving forward from 1932:
    d2[i,j] = d2[i,j]+d2[i-1,j]
  }
  for(i in 5:1){
      # changes moving backward from 1932:
    d2[i,j] = log( d[i,j]/d[i+1,j] )
      # running sum moving forward from 1932:
    d2[i,j] = d2[i+1,j]+d2[i,j]
  }
}
d2[,2:10]   = d2[,2:10]*100  # multiply all values by 100

windows()  # plot of changes
  plot(1,1, xlim=c(1927,1937), ylim=c(82,118), xlab="Year", 
       ylab="Change from 1932", main="European death rates")
  abline(h=100, col="lightgray")
  for(j in 2:10){
    lines(1927:1937, d2[,j], col=rainbow(9)[j-1], lwd=ifelse(j==2,2,1))
  }
  legend("bottomleft", legend=colnames(d2)[2:10], lwd=c(2,rep(1,8)), lty=1, 
         col=rainbow(9), ncol=2)

windows()  # plot of levels
  plot(1,1, xlim=c(1927,1937), ylim=c(8,18.4), xlab="Year", 
       ylab="Deaths per thousand", main="European death rates")
  abline(h=d[6,2:10], col="gray90")
  points(rep(1932,9), d[6,2:10], col=rainbow(9), pch=16)
  for(j in 2:10){
    lines(1927:1937, d[,j], col=rainbow(9)[j-1], lwd=ifelse(j==2,2,1))
  }
  legend("topright", legend=colnames(d)[2:10], lwd=c(2,rep(1,8)), lty=1, 
         col=rainbow(9), ncol=2)

inserisci qui la descrizione dell'immagine

Al contrario, di seguito è riportato un grafico corrispondente dei dati in livelli. Ciononostante, ho cercato di rendere possibile che la Germania, dopo il 1932, salisse da sola in due modi: ho messo un punto di rilievo su ogni serie nel 1932 e ho tracciato una debole linea grigia attraverso la trama sullo sfondo a quei livelli.

inserisci qui la descrizione dell'immagine


+1 soluzione davvero eccezionale
Repmat

2
C'è abbastanza spazio per perdere la legenda (uccidere la chiave) ed etichettare ogni curva direttamente all'interno del corpo del grafico.
Nick Cox,

3
Esistono molti modi per rendere più piacevole il codice e la trama. Il mio punto principale qui era di distinguere le idee di livelli e cambiamenti e fornire una dimostrazione di base di come i cambiamenti possono essere visualizzati.
gung - Ripristina Monica

17

Ci sono molte buone idee qui in altre risposte, ma non esauriscono le buone soluzioni possibili. Il primo grafico in questa risposta afferma che diversi livelli di mortalità possono essere discussi e spiegati separatamente. Nel consentire a ciascuna serie di riempire gran parte dello spazio disponibile, focalizza l'attenzione dei lettori su schemi di cambiamento relativo.

L'ordine alfabetico per paese è di solito un default dopey e non è insistito qui. Fortunatamente, e fortunatamente, la Germania come de è al centro di questo display 3 x 3. Una semplice narrativa - Guarda! Il modello tedesco è eccezionale con una ripresa dal 1932 - è reso possibile e plausibile.

inserisci qui la descrizione dell'immagine

Fortunatamente, ma fortunatamente, 9 paesi sono sufficienti per giustificare la sperimentazione di pannelli separati, ma non troppi per rendere impraticabile quel progetto (diciamo 30 e sicuramente 300 pannelli, ci potrebbero essere (sarebbero) troppi pannelli da scansionare, ognuno troppo piccolo per scrutare).

Evidentemente, qui c'è molto spazio per nomi di paesi più completi. (In alcune altre risposte, le leggende occupano una grande parte dello spazio disponibile, pur rimanendo un po 'enigmatiche. In pratica, le persone interessate a tali dati troverebbero le abbreviazioni dei paesi facili da decodificare, ma fino a che punto è necessaria la legenda è spesso un fastidioso problema nella progettazione grafica.)

Codice di stato per il record:

clear
input int year double(de fr be nl den ch aut cz pl)
1927 10.9 16.5   13 10.2 11.6 12.4   15   16 17.3
1928 11.2 16.4 12.8  9.6   11   12 14.5 15.1 16.4
1929 11.4 17.9 14.4 10.7 11.2 12.5 14.6 15.5 16.7
1930 10.4 15.6 12.8  9.1 10.8 11.6 13.5 14.2 15.6
1931 10.4 16.2 12.7  9.6 11.4 12.1   14 14.4 15.5
1932 10.2 15.8 12.7    9   11 12.2 13.9 14.1   15
1933 10.8 15.8 12.7  8.8 10.6 11.4 13.2 13.7 14.2
1934 10.6 15.1 11.7  8.4 10.4 11.3 12.7 13.2 14.4
1935 11.4 15.7 12.3  8.7 11.1 12.1 13.7 13.5   14
1936 11.7 15.3 12.2  8.7   11 11.4 13.2 13.3 14.2
1937 11.5   15 12.5  8.8 10.8 11.3 13.3 13.3   14
end

rename (de-pl) (death=)
reshape long death, i(year) j(country) string
set scheme s1color 
line death year, by(country, yrescale note("")) xtitle("") xla(1927(5)1937)

MODIFICARE:

Un semplice miglioramento di questo grafico suggerito da Tim Morris è quello di evidenziare l'anno in cui si è verificato il massimo:

inserisci qui la descrizione dell'immagine

egen max = max(death) , by(country)
replace max = max == death
twoway line death year || scatter death year if max, ms(O)  ///
by(country, yrescale note("") legend(off)) xtitle("") xla(1927(5)1937)  

EDIT 2 (rivisto per mostrare il codice più semplice):

In alternativa, questo progetto successivo mostra ogni serie separatamente, ma ogni volta con le altre serie come sfondo. L'idea generale è discussa all'interno di questo thread correlato .

inserisci qui la descrizione dell'immagine

C'è perdita e guadagno qui. Mentre ogni serie può essere vista più facilmente nel contesto di altre, lo spazio si perde per ripetizione.

Codice di stato per il record:

(Codice per input, reshape, renamecome sopra in questa risposta)

* type "ssc inst fabplot" to install
fabplot line death year, by(country, compact note("countries highlighted in turn")) ///
ytitle("death rate, yearly deaths per 1000") yla(8(2)18, ang(h)) ///
xla(1927(5)1937, format(%tyY)) xtitle("") front(connected) 

fabplotè da intendersi come front o foreground and backdrop o btrama ackground, non come un eco di 1960 gergale per "fabulous".


3
+1, devo dire, il codice è piuttosto conciso per produrre una bella trama come quella.
gung - Ripristina Monica

@gung Grazie. Qualsiasi acclamazione qui è meritata da StataCorp in quanto si tratta di comandi integrati. Esteticamente sto zappando del testo predefinito, ad esempio yearcome titolo dell'asse x (chi ne ha bisogno?). Aggiungerò che per un utente Stata la struttura di dati naturali sarebbe quella che non obbligava a renamee reshape. ma ha pannelli distinti (qui paesi) come blocchi distinti di osservazioni.
Nick Cox,

+1 Tuttavia, una caratteristica problematica di questa soluzione è che perde il contesto: non possiamo facilmente vedere che sebbene il tasso di mortalità della Germania sia aumentato, è iniziato a un livello basso e alla fine non era (relativamente) molto alto.
whuber

1
Il design alternativo in EDIT 2 è un modo per affrontare il punto chiave sollevato da @whuber sul contesto.
Nick Cox,

15

Il grafico è ragionevole, ma richiederebbe un certo perfezionamento, tra cui un titolo, etichette degli assi e etichette complete del paese. Se il tuo obiettivo è quello di sottolineare il fatto che la Germania è stato l'unico paese con un aumento del tasso di mortalità durante il periodo di osservazione, un modo semplice per farlo sarebbe quello di evidenziare questa linea nella trama, utilizzando una linea più spessa, una diversa tipo di linea o trasparenza alfa. Potresti anche aumentare la trama della serie temporale con una trama a barre che mostra la variazione del tasso di mortalità nel tempo, in modo che la complessità delle linee della serie temporale sia ridotta a una singola misura di cambiamento.

Ecco come è possibile produrre questi grafici usando ggplotin R:

library(tidyr);
library(dplyr);
library(ggplot2);

#Create data frame in wide format
DATA_WIDE <- data.frame(Year = 1927L:1937L,
                        DE   = c(10.9, 11.2, 11.4, 10.4, 10.4, 10.2, 10.8, 10.6, 11.4, 11.7, 11.5),
                        FR   = c(16.5, 16.4, 17.9, 15.6, 16.2, 15.8, 15.8, 15.1, 15.7, 15.3, 15.0),
                        BE   = c(13.0, 12.8, 14.4, 12.8, 12.7, 12.7, 12.7, 11.7, 12.3, 12.2, 12.5),
                        NL   = c(10.2,  9.6, 10.7,  9.1,  9.6,  9.0,  8.8,  8.4,  8.7,  8.7,  8.8),
                        DEN  = c(11.6, 11.0, 11.2, 10.8, 11.4, 11.0, 10.6, 10.4, 11.1, 11.0, 10.8),
                        CH   = c(12.4, 12.0, 12.5, 11.6, 12.1, 12.2, 11.4, 11.3, 12.1, 11.4, 11.3),
                        AUT  = c(15.0, 14.5, 14.6, 13.5, 14.0, 13.9, 13.2, 12.7, 13.7, 13.2, 13.3),
                        CZ   = c(16.0, 15.1, 15.5, 14.2, 14.4, 14.1, 13.7, 13.3, 13.5, 13.3, 13.3),
                        PL   = c(17.3, 16.4, 16.7, 15.6, 15.5, 15.0, 14.2, 14.4, 14.0, 14.2, 14.0));

#Convert data to long format
DATA_LONG <- DATA_WIDE %>% gather(Country, Measurement, DE:PL);

#Set line-types and sizes for plot
#Germany (DE) is the fifth country in the plot
LINETYPE <- c("dashed", "dashed", "dashed", "dashed", "solid", "dashed", "dashed", "dashed", "dashed");
SIZE     <- c(1, 1, 1, 1, 2, 1, 1, 1, 1);

#Create time-series plot
theme_set(theme_bw());
PLOT1 <- ggplot(DATA_LONG, aes(x = Year, y = Measurement, colour = Country)) + 
         geom_line(aes(size = Country, linetype = Country)) +
         scale_size_manual(values = SIZE) +
         scale_linetype_manual(values = LINETYPE) +
         scale_x_continuous(breaks = 1927:1937) +
         scale_y_continuous(limits = c(0, 20)) +
         labs(title = "Annual Time Series Plot: Death Rates over Time", 
              subtitle = "Only Germany (DE) trends upward from 1927-37") +
         xlab("Year") + ylab("Crude Death Rate\n(per 1,000 population)");


#Create new data frame for differences
DATA_DIFF <- data.frame(Country = c("DE", "FR", "BE", "NL", "DEN", "CH", "AUT", "CZ", "PL"),
                        Change  = as.numeric(DATA_WIDE[11, 2:10] - DATA_WIDE[1, 2:10]));

#Create bar plot
PLOT2 <- ggplot(DATA_DIFF, aes(x = reorder(Country, - Change), y = Change, colour = Country, fill = Country)) + 
         geom_bar(stat = "identity") +
         labs(title = "Bar  Plot: Change in Death Rates from 1927-37", 
              subtitle = "Only Germany (DE) shows an increase in death rate") +
         xlab(NULL) + ylab("Change in crude Death Rate\n(per 1,000 population)");

Questo porta ai seguenti grafici:

inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine

Nota: sono consapevole che l'OP intendeva evidenziare la variazione del tasso di mortalità dal 1932, quando la tendenza in Germania iniziò a salire. Questo mi sembra un po 'come la raccolta delle ciliegie, e lo trovo dubbio quando si scelgono gli intervalli di tempo per ottenere una tendenza particolare. Per questo motivo ho esaminato l'intervallo sull'intero intervallo di dati, che è un confronto diverso dall'OP.


Grazie per i vostri suggerimenti. Il formato è in fase di
elaborazione

1
@Graipher: Ben individuato (+1) - Modificherò quando avrò un po 'più di tempo.
Ripristina Monica il

1
Mi piace la trama della barra, ma piuttosto che l'asse x alfabetico, vorrei ordinare in base al cambiamento.
Gregor,

14

Sebbene l'obiettivo dichiarato sia quello di visualizzare i cambiamenti, apparentemente si desidera mostrare anche le serie storiche annuali per paese. Ciò suggerisce di non ripetere completamente l'immagine, ma di modificarla.

Poiché una modifica riguarda ciò che accade da un anno all'altro, potresti considerare di rappresentare le modifiche con simboli grafici che si estendono negli anni successivi: ovvero, i segmenti di linea che collegano i punti dati nel grafico .

Poiché il colore è così utile per distinguere i paesi, e altrimenti non è così bravo a indicare variabili quantitative, ciò ci lascia essenzialmente con solo altre due caratteristiche che possono essere variate per indicare il cambiamento: lo stile e lo spessore dei segmenti. Poiché la tua tesi riguarda un cambiamento positivo, vorrai rendere più evidenti i segmenti di linea per gli aumenti: i loro stili dovrebbero essere più continui e dovrebbero essere più spessi.

Infine, la tua tesi riguarda i dati dopo il 1932. Vogliamo enfatizzare quegli elementi del grafico rispetto agli altri. Questo può essere fatto saturando il colore.

Tracciare

Questa soluzione fornisce immediatamente informazioni che non erano evidenti nell'originale:

  • Nessun paese ha registrato aumenti annuali dei tassi di mortalità per tutti gli anni successivi al 1932. Qualsiasi paese simile apparirebbe come una linea continua continua, ma non è presente tale linea.

  • Gran parte del cambiamento dovrebbe essere attribuito a fattori comuni a tutti i paesi. Ciò è evidente nelle somiglianze di stile e spessore della linea all'interno delle colonne verticali. Ad esempio, nel periodo 1934-35 i tassi di mortalità aumentarono in quasi tutti i paesi, dove nel 1933-34 diminuirono in quasi tutti i paesi.

  • La Germania fu insolita nel sperimentare un grande aumento dei tassi di mortalità nel 1932-33 e anche un leggero aumento nel 1935-36.

Questi suggeriscono di eseguire una solida esplorazione a due vie del cambiamento nel tasso di mortalità rispetto al paese, forse per via della mediana, al fine di penetrare più profondamente nella performance relativa dei paesi europei durante questo periodo.

Se si desidera enfatizzare solo la differenza tra il 1937 e il 1932, è possibile utilizzare una tecnica simile per simboleggiare le parti dei percorsi tra quelle date. La Germania si distinguerebbe:

Trama 2


10

Slopegraphs

Un modo per presentare i tuoi dati è usare uno slopegraph particolarmente utile per confrontare cambiamenti o gradienti (alcuni link: 1 2 )

Sotto è

  • A sinistra un esempio di slopegraph che mostra come questo cerca il tuo caso.

  • Al centro uno slopegraph più complesso che mostra anche l'anno 1932

  • A destra una variazione dello slopegraph, più una sorta di sparkline, in cui vengono mostrati tutti i dati (cioè senza linee rette).

Non sono sicuro di quale sia il migliore. La terza opzione / destra fornisce un'idea più forte delle variazioni di anno in anno (e ad esempio diventa più evidente che Danmark vs Germania non sembrano così diversi e va su e giù molto da un anno all'altro) ma può anche essere fonte di distrazione (in particolare il picco del 1929). Quindi quale è meglio dipende da cosa vuoi comunicare con il grafico e da quanti dettagli richiede la tua storia (ad esempio il giro del 1932 con il diverso governo che è più chiaro nella seconda / seconda opzione).

La variazione dello slopegraph sulla destra assomiglia molto al grafico di Xan. Tuttavia, oltre alle differenze stilistiche c'è un'altra differenza importante. La larghezza e l'altezza della figura sono scelte in modo tale che l'angolo delle curve sia vicino a 45 gradi. In questo modo le differenze sono più salienti (credo che il miglior esempio sia l'esempio delle macchie solari di Edward Tufte )

grafico della pendenza e una variazione

Più contesto

Se vuoi aggiungere più complessità del semplice slopegraph, credo che in realtà sia meglio mostrare più dati al di fuori dell'intervallo 1927-1937 che all'interno dell'intervallo. (di nuovo un esempio di Tufte dalle pagine 74-75 in Visualizzazione visiva di informazioni quantitative è possibile accedervi tramite questa pagina nella bacheca sul suo sito Web)

L'esempio seguente mostra i dati relativi agli anni 1900-2000 (esclusa la Polonia i cui dati sono un po 'difficili) estratti da Wikipedia (ad esempio questa pagina per la Repubblica Ceca ) e per la Svizzera e i Paesi Bassi i loro uffici nazionali di statistica ( bfs e Statline ).

(I dati sono leggermente diversi dai tuoi ma uguali a quelli dell'articolo "Autarchia, disintegrazione del mercato e salute: la mortalità e la crisi nutrizionale nella Germania nazista, 1933-1937" di Jörg Baten e Andrea Wagner. Questo articolo è interessante da leggere poiché forniscono molti più dati oltre ai semplici tassi di mortalità, anche se si limitano a un piccolo periodo. Particolarmente interessante è che l'aumento del tasso di mortalità, dal 1932 al 1937, esisteva principalmente tra le città in una striscia da Francoforte a Brema e Amburgo)

più contesto

Ritengo che questo grafico sia importante perché dimostra che la Germania ha registrato un forte calo prima della crescita dopo il 1932. Più forte di altri paesi. Quindi puoi avere interpretazioni negative e positive. Tra il 1932 e il 1937 il tasso di mortalità della Germania stava aumentando più di altri paesi, ma questo (1) era un rialzo da un picco basso o (2) un aumento verso un picco alto? Un aspetto interessante a questo proposito è che il livello di 10,8 del 1932 è un livello molto basso per la Germania (a questo punto solo i Paesi Bassi avevano un tasso di mortalità inferiore). Questo non è solo il livello più basso per gli anni fino al 1937, ma ci vuole anche fino al 1995 prima di raggiungere nuovamente questo livello di 10,8.

Un altro punto, relativo alla salute (se questo è il tuo contesto) potrebbe essere meglio confrontare l'aspettativa di vita, la composizione demografica della popolazione ha un'influenza sul tasso di mortalità, indipendente dai cambiamenti nella situazione sanitaria

Contesto un po 'meno aggiuntivo

Il grafico sopra mostra la totalità ma potrebbe essere un eccesso per la maggior parte degli scopi (tranne in questo post in cui volevo mostrare l'intera storia ed è più per uno scopo esplorativo). Il grafico sotto è un'alternativa che, credo, è ancora decente.

grafico contestuale più piccolo


Grazie per tutti i tuoi suggerimenti. Penso che gli slopeg che hai fornito siano molto intuitivi. Sono sicuro che sarebbe utile includere un arco di tempo più lungo, ma vogliamo sottolineare un punto su questo periodo specifico e chiarirlo. Penso che la trama del 1900-2000 sarebbe un po 'troppo confusa. Per quanto riguarda il tuo ultimo punto, abbiamo adeguato i tassi di greggio in modo da continuare a utilizzare i tassi di mortalità.
PhDing

1
@Alessandro ho aggiunto un'alternativa più pratica. Ancora una volta i numeri sono diversi perché ho usato fonti diverse (non aggiustate per età) ma immagino che il forte declino della Germania seguito da un forte aumento potrebbe essere lo stesso.
Sesto Empirico

4

Dipende dal pubblico, ma semplificherei le cose:

inserisci qui la descrizione dell'immagine

Quindi compitelo nella didascalia es

Dal 1932 al 1937, il tasso di mortalità annuale è aumentato in Germania, mentre è diminuito complessivamente in tutta l'Europa centrale (Francia, Belgio, Paesi Bassi, Danimarca, Austria, Repubblica Ceca, Polonia).

(A proposito, cos'è ch vs. cz, cioè quale paese mi manca sopra?)

Per essere precisi, sarà ovviamente necessario ponderare la death ratestima della popolazione quando si "raggruppa" questo per gli "Altri", ma sono sicuro che queste informazioni sono prontamente disponibili.

Aggiornamento del 09/06/18: questo è ovviamente uno schizzo "giocattolo" e non è stato derivato dai dati; l'idea è di fornire una bozza approssimativa della forma che un grafico dovrebbe assumere.

Per rispondere al commento di Whuber: i valori per gli "Altri" potrebbero essere generati come media, ponderati per popolazione, ad esempio con indica il valore di all'anno e come paesi in "Altri":OyOi=1...88×

Oyi=i=8i=1ADRyi.populationitotalPopulation

o meglio, se hai informazioni sulla popolazione. per ogni anno:

Oyi=i=8i=1ADRyi.populationyitotalPopulationy

A seconda dei lettori (ad esempio epidemiologi contro storici) si potrebbe aggiungere una deviazione standard o un errore standard a quest'ultimo, anche se penso che ciò rovinerebbe piuttosto l'aspetto semplice della trama.


5
chè la Svizzera. (E a proposito, non era ancora la Repubblica Ceca negli anni '30.) - Quello che non mi piace del tuo approccio è che non è chiaro che la tendenza al ribasso sia coerente attraverso gli altri paesi. Potrebbe sembrare che ci siano solo fluttuazioni casuali che si verificano in media a qualcosa di negativo negli altri paesi, ma che risultano positive in Germania.
lasciato circa il

Mi piace questa risposta, ma potrei aggiungere una visione dell'intervallo o della deviazione standard attorno alla linea "altri", altrimenti i mezzi possono essere ingannevoli.
Tasos Papastylianou,

2
Questa idea mi piace moltissimo, ma potresti spiegare come hai determinato i tassi di mortalità di "altri"? I mezzi aritmetici dei loro tassi non sarebbero appropriati a causa delle popolazioni molto diverse che rappresentano.
whuber

3

Se vuoi evidenziare il cambiamento, forse calcola questo e visualizzalo. L'utilizzo di una mappa di calore per visualizzare le modifiche può essere utile in quanto consente di effettuare confronti senza sovrastampare i problemi ed evitare problemi di interpolazione che possono derivare dai grafici a linee.

Utilizzando i tuoi dati come din R:

library(tidyverse)
d2 <- data.frame(apply(d[-1],2,diff))
d2$year <- d$year[-1]
d2 %>% gather(key="country",value=deathrate,-year) %>% 
   ggplot(aes(x=factor(year),y=country,fill=deathrate)) + 
   geom_tile() + 
   scale_fill_gradient2("\u0394 deathrate")

Heatmap dei Heatmap

Si noti che i dati ora cambiano rispetto all'anno precedente. Puoi vedere che dopo il 1932 la Germania ha un gruppo di blues (aumenti dei tassi di mortalità) che altri paesi non hanno. Puoi anche vedere che tra il 1934 e il 1935 tutti i paesi, ad eccezione della Polonia, hanno visto un aumento dei tassi di mortalità, ma il trend in controtendenza della Germania sembra essere 1932-1933 e 1935-1936 (così come 1927-1928).

Una caratteristica interessante è il fatto che i colori sono più intensi a sinistra rispetto a destra. Ciò significa che l'entità delle modifiche era più elevata all'inizio del periodo e più silenziosa verso la fine.

Consiglierei di associarlo a un grafico a linee che mostra anche i livelli.


2

Qui ti mostro la differenza del logaritmo del rapporto di morte per 1000 abitanti, rispetto all'anno precedente (quindi il 1927 non è mostrato). La Germania è mostrata in rosso mentre la media degli altri paesi è mostrata nella spessa linea nera.

inserisci qui la descrizione dell'immagine

La Germania ha registrato un aumento del rapporto in 5 anni su 10. Dopo il 1932 ha detto sopra la media di altri paesi (e per lo più positivo), fino al 1937.

Ma perché il logaritmo? Il motivo è semplice: il passaggio da 2 a 1 è più drastico rispetto al passaggio da 1000 a 999 :)


Codice:

x = read.table("clipboard", header = TRUE, dec = ".")
xl = log(x[-1])
xd = apply(xl, 2L, diff)

png("CVquestion.png")
plot(0,0, xlim = range(x[-1,1]), ylim = range(xd), type = "n", ylab = "", main = "Difference of the log(death rate per 1000 inhab.)", xlab = "year")
grid()
for (i in rev(seq(ncol(xl)))) lines(x[-1,1], xd[,i], type = "o", col = adjustcolor(ifelse(i == 1, 2, 1), 0.7), lwd = ifelse(i == 1, 2, 1), lty = ifelse(i == 1, 1, 2), pch = ifelse(i == 1,16,NA))
lines(x[-1,1], rowMeans(xd[,-1]), type = "o", col = adjustcolor(1, 0.7), lwd = 2, lty = 1, pch = 16)

text(x = 1937, y = rev(xd[10,]), label = rev(colnames(xd)), col = rev(c(2, rep(1,8))))
dev.off()

2
L'OP parla del tasso di mortalità e non del tasso di omicidio
kjetil b halvorsen,

@kjetilbhalvorsen Ooops, ecco cosa succede quando provi la visualizzazione dei dati dopo le 21:00 in un giorno in cui lavori dalle 8 del mattino haha. Risolverà al più presto, grazie per l'heads up :)
Firebug

1

Un'altra versione: rapporti (tasso di mortalità medio dal 1927 all'anno in corso) / (tasso di mortalità 1927)

inserisci qui la descrizione dell'immagine

Fatto con il codice Mathematica

data = {
 {year,   de,   fr,   be,   nl,  den,   ch,  aut,   cz,   pl},
 {1927, 10.9, 16.5, 13.0, 10.2, 11.6, 12.4, 15.0, 16.0, 17.3},
 {1928, 11.2, 16.4, 12.8,  9.6, 11.0, 12.0, 14.5, 15.1, 16.4},
 {1929, 11.4, 17.9, 14.4, 10.7, 11.2, 12.5, 14.6, 15.5, 16.7},
 {1930, 10.4, 15.6, 12.8,  9.1, 10.8, 11.6, 13.5, 14.2, 15.6},
 {1931, 10.4, 16.2, 12.7,  9.6, 11.4, 12.1, 14.0, 14.4, 15.5},
 {1932, 10.2, 15.8, 12.7,  9.0, 11.0, 12.2, 13.9, 14.1, 15.0},
 {1933, 10.8, 15.8, 12.7,  8.8, 10.6, 11.4, 13.2, 13.7, 14.2},
 {1934, 10.6, 15.1, 11.7,  8.4, 10.4, 11.3, 12.7, 13.2, 14.4},
 {1935, 11.4, 15.7, 12.3,  8.7, 11.1, 12.1, 13.7, 13.5, 14.0},
 {1936, 11.7, 15.3, 12.2,  8.7, 11.0, 11.4, 13.2, 13.3, 14.2},
 {1937, 11.5, 15.0, 12.5,  8.8, 10.8, 11.3, 13.3, 13.3, 14.0}
}

ListPlot[
 Map[
  Table[{First[data[[k + 1]]], Mean[Take[#, k]]/First[#]}, {k, Length[#]}] &,
  Map[Rest, Rest[Transpose[data]]]
 ],
 Joined -> True,
 PlotRange -> All,
 Frame -> True,
 FrameTicks -> {Map[First, Rest[data]], Automatic},
 PlotLabels -> Rest[First[data]],
 AxesOrigin -> {First[First[Rest[data]]], 1} 
]

(I picchi del 1929 sembrano essere collegati a una pandemia influenzale verificatasi in quel periodo)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.