So zeichnen Sie Trends richtig

45

Ich erstelle eine Grafik, um die Trends der Sterblichkeitsraten (pro 1000 Einwohner) in verschiedenen Ländern darzustellen, und die Geschichte, die sich aus der Handlung ergeben sollte, ist, dass Deutschland (hellblaue Linie) der einzige ist, dessen Trend nach 1932 zunimmt. Dies ist Mein erster (einfacher) Versuch

Bildbeschreibung hier eingeben

Meiner Meinung nach zeigt dieses Diagramm bereits, was wir damit sagen wollen, aber es ist nicht sehr intuitiv. Haben Sie einen Vorschlag, um diese Unterscheidung zwischen Trends deutlicher zu machen? Ich habe überlegt, Wachstumsraten zu zeichnen, aber ich habe es versucht, und es ist nicht so besser.

Die Daten sind die folgenden

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
PhDing
quelle
2
Daten aus Italien und Spanien wären im Vergleich interessant. Sie hatten zu dieser Zeit auch faschistische Regierungen.
Asmaier
1
Beginnen Sie Ihren Plot neben den guten Ideen in den Antworten bei 0 (y-Achse), damit die relativen Änderungsbeträge besser sichtbar sind.
WoJ
2
@WoJ Ich verstehe Ihren Standpunkt, aber in der Praxis reicht der Bereich von ungefähr 9 bis ungefähr 18 pro 1000, sodass die Hälfte des Grafikraums aufgewendet werden würde, um zu zeigen, dass die Sterblichkeitsrate nicht Null ist. Ich denke, das ist der Grund, warum die meisten Leute (ich selbst eingeschlossen) dies in ihren bisherigen Antworten nicht wollten. Überlegen Sie, wo Ihr Kriterium aufhört. Bestehen Sie z. B. darauf, dass Diagramme historischer Variationen der Erwachsenengröße alle bei Null beginnen? Weitere Diskussionen unter stats.stackexchange.com/questions/184525/…
Nick Cox
1
Anstatt über das Diagramm nachzudenken, würde ich mich zuerst fragen, was den Daten und der Analyse zugrunde liegt. Welche Faktoren sind mit der Sterblichkeitsrate verbunden? Sinkt die Sterblichkeitsrate schneller, wenn sie bereits hoch ist (z. B. Polen)? Stehen die Sterbeziffern auf einem bestimmten Niveau? Hat dieser Plateaueffekt (der für Deutschland stärker ist) möglicherweise eine stärkere Auswirkung auf den Anstieg für Österreich (in den letzten Jahren)? Das Diagramm ist eine Art Rohdaten (es muss noch analysiert werden) und wird gleichzeitig abgeleitet (die Zahlen sind keine einfachen Messungen, sondern abgeleitet). Dies erschwert das Hervorheben von 1 Effekt.
Sextus Empiricus
1
Außerdem ist es besser, wenn Sie einen längeren Zeitraum als nur 10 Jahre anzeigen. Der Fokus auf diese zehn Jahre ist nur fair, wenn Sie die Umgebung zeigen. Es ist so üblich, Nahaufnahmen zu sehen, die in einer weiteren Perspektive weniger sinnvoll sind. Wenn diese Kurven wie Wellen in einem Sturm auf und ab gehen, muss man das gesamte Meer zeigen und nicht nur eine einzige Welle, die zufällig mit einer schönen Geschichte korreliert. (Ich bin sicher, es gibt ein Beispiel von Tufte, das dieses Prinzip zeigt)
Sextus Empiricus

Antworten:

53

Manchmal ist weniger mehr. Mit weniger Details zu den jährlichen Schwankungen und den Länderunterschieden können Sie mehr Informationen zu den Trends bereitstellen . Da die anderen Länder größtenteils zusammenziehen, kommt man ohne separate Farben aus.

Wenn Sie einen Smoother verwenden, muss der Leser darauf vertrauen, dass Sie keine interessanten Variationen geglättet haben.

Bildbeschreibung hier eingeben

Update nach einigen Code-Anfragen :

Ich habe dies in JMPs interaktivem Graph Builder gemacht. Das JMP-Skript lautet:

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)

));

xan
quelle
4
Nach meiner Erfahrung ist das Glätten von Reihen in den Sozialwissenschaften eine sehr seltene Praxis.
Luchonacho
6
Vielleicht ist das ein Grund, ihnen etwas Neues und Nützliches zu zeigen?
kjetil b halvorsen
9
Ungeachtet der sozialwissenschaftlichen Normen finde ich, dass die Glättung den Rückgang von 1930 und den Anstieg von 1935 überdeckt. Der Anstieg in mehreren Ländern von 1929 ist ebenfalls verdeckt. Ansonsten mag ich diesen simplen Ansatz sehr.
Underminer
7
+1 für die Verwendung von nur zwei Farben (vielleicht das Grau noch heller machen?) Und die Vermeidung der Legende durch Platzieren von Ländernamen rechts. -1 für die Glättung, bei der Informationen ohne triftigen Grund verworfen werden. Also muss ich eigentlich nicht abstimmen ;-)
S. Kolassa - Wiedereinsetzung von Monica
10
@StephanKolassa Ich denke, Xans Argument ist, dass es einen guten Grund gibt, Informationen zu verwerfen: sich auf allgemeine Trends zu konzentrieren und nicht auf das "Rauschen" der Variabilität von Jahr zu Jahr. Bis zu einem gewissen Grad "verwerfen" Sie bereits Informationen - Sie suchen nach jährlichen Zahlen. Ich bezweifle, dass die Grafik durch das Zeichnen von Tagesraten verbessert werden würde. Hier bringt Sie "Informationen nicht verwerfen" ad absurdum . - Es ist richtig, dass einige Trends durch eine Glättung verdeckt werden, während andere (wie saisonale Schwankungen) durch die Wahl der Jahresraten verdeckt werden. Es besteht ein gewisses Vertrauen, dass relevante Variationen weiterhin angezeigt werden.
RM
39

Hier gibt es gute Antworten. Lassen Sie sich beim Wort nehmen, dass Sie zeigen wollen, dass sich der Trend für Deutschland vom Rest unterscheidet. Niveaus gegen Änderungen ist eine allgemeine Unterscheidung in der Wirtschaft. Ihre Daten befinden sich in Ebenen , Ihre Frage wird jedoch als Änderungssuche angegeben . Die Möglichkeit dazu besteht darin, den Referenzpegel (hier 1932) auf . Von da an ist jedes aufeinanderfolgende Jahr ein Bruchteil des vorherigen. (Es ist üblich, Protokolle zu führen, um Änderungen stabiler und symmetrischer zu machen. Dies ändert die Bedeutung der exakten Zahlen ein wenig. Wenn Sie wirklich möchten, dass jemand diese aus dem Plot entnimmt, möchten die Leute dies normalerweise tun In der Lage, das Muster zu sehen.) Sie erhalten dann eine laufende Summe für jede Serie und multiplizieren es mit100 1001100vereinbarungs. Das ist, was Sie planen. Ihr Fall ist insofern etwas seltener, als sich Ihr Bezugspunkt in der Mitte Ihrer Serie befindet. Daher habe ich ihn ab 1932 in beide Richtungen durchlaufen lassen. Nachfolgend finden Sie ein einfaches Beispiel, das in R codiert ist (es gibt viele Möglichkeiten, den Code und zu erstellen) Plot schöner, aber dies sollte die Idee direkt zeigen). Ich habe die Linie für Deutschland dicker gemacht, um sie in der Legende zu unterscheiden, und ich habe eine Referenzlinie bei hinzugefügt . Es ist leicht zu erkennen, dass sich Deutschland vom Rest abhebt. Sie können auch sehen, dass alle anderen Länder 1937 niedrigere Raten aufweisen als 1932, und dass ihre jährlichen Veränderungen in den Jahren nach 1932 viel weniger schwanken als in den Jahren davor. 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)

Bildbeschreibung hier eingeben

Im Gegensatz dazu ist unten eine entsprechende Darstellung der Daten in Ebenen. Trotzdem habe ich versucht, auf zwei Arten zu erkennen, dass Deutschland nach 1932 allein in die Höhe geht: Ich habe 1932 auf jeder Serie einen markanten Punkt gesetzt und auf diesen Ebenen im Hintergrund eine schwache graue Linie über die Handlung gezogen.

Bildbeschreibung hier eingeben

gung - Wiedereinsetzung von Monica
quelle
+1 wirklich gute Lösung
Repmat
2
Es ist genügend Platz vorhanden, um die Legende zu verlieren (die Taste abzutöten) und jede Kurve direkt im Körper des Diagramms zu beschriften.
Nick Cox
3
Es gibt viele Möglichkeiten, den Code und den Plot zu optimieren. Mein Hauptziel dabei war es, die Ideen von Ebenen und Änderungen zu unterscheiden und eine grundlegende Demonstration zu liefern, wie Änderungen visualisiert werden können.
gung - Wiedereinsetzung von Monica
17

Hier gibt es viele gute Ideen in anderen Antworten, aber sie erschöpfen nicht die guten Lösungen, die möglich sind. Das erste Diagramm in dieser Antwort geht davon aus, dass unterschiedliche Sterblichkeitsraten separat diskutiert und erklärt werden können. Indem jede Serie einen Großteil des verfügbaren Raums ausfüllt, lenkt sie die Aufmerksamkeit der Leser auf Muster relativer Veränderungen.

Die alphabetische Reihenfolge nach Ländern ist normalerweise eine blöde Voreinstellung und wird hier nicht betont. Zum Glück steht Germany as de im Mittelpunkt dieses 3 x 3 Displays. Eine einfache Erzählung - Schau! Deutschlands Muster ist mit einem Aufschwung von 1932 außergewöhnlich - möglich und plausibel.

Bildbeschreibung hier eingeben

Glücklicherweise, aber glücklicherweise, reichen 9 Länder aus, um zu rechtfertigen, separate Panels zu versuchen, aber nicht zu viele, um dieses Design nicht praktikabel zu machen (mit etwa 30 und mit Sicherheit 300 Panels könnten (würden) zu viele Panels gescannt werden, von denen jedes zu klein ist prüfen).

Offensichtlich gibt es hier viel Platz für umfassendere Ländernamen. (In einigen anderen Antworten beanspruchen Legenden einen großen Teil des verfügbaren Speicherplatzes, bleiben jedoch ein wenig kryptisch. In der Praxis ist es für die an solchen Daten Interessierten einfach, die Länderabkürzungen zu dekodieren, aber inwieweit die Legende benötigt wird, ist häufig eine störendes Problem bei der grafischen Gestaltung.)

Statuscode für den Datensatz:

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)

BEARBEITEN:

Eine einfache Verbesserung dieses von Tim Morris vorgeschlagenen Diagramms besteht darin, das Jahr hervorzuheben, in dem das Maximum aufgetreten ist:

Bildbeschreibung hier eingeben

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 (überarbeitet, um einfacheren Code anzuzeigen):

Alternativ zeigt dieses nächste Design jede Serie einzeln, aber jedes Mal mit der anderen Serie als Hintergrund. Die allgemeine Idee wird in diesem verwandten Thread erörtert .

Bildbeschreibung hier eingeben

Hier gibt es sowohl Verluste als auch Gewinne. Während jede Serie leichter im Kontext der anderen zu sehen ist, geht durch Wiederholung Platz verloren.

Statuscode für den Datensatz:

(Code input, reshape, renamewie oben in dieser Antwort)

* 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) 

fabplotist zu verstehen als fVordergrund oder fVordergrund aund bHintergrund oder bHintergrund, nicht als ein Echo des Slangs der 1960er Jahre für "fabelhaft".

Nick Cox
quelle
3
+1, ich muss sagen, der Code ist ziemlich kurz, um so eine schöne Handlung zu produzieren.
gung - Wiedereinsetzung von Monica
@gung Danke. Jegliche Anerkennung hier verdient StataCorp, da dies eingebaute Befehle sind. Kosmetisch zappe ich einen Standardtext, zB yearals x- Achsen-Titel (wer braucht das?). Ich werde das zu einem Stata-Benutzer hinzufügen, die natürliche Datenstruktur wäre eine, die ein renameund nicht verpflichtet reshape. hat aber unterschiedliche Tafeln (hier Länder) als unterschiedliche Beobachtungsblöcke.
Nick Cox
+1 Ein problematisches Merkmal dieser Lösung ist jedoch, dass sie den Zusammenhang verliert: Wir können nicht ohne weiteres feststellen, dass die Sterblichkeitsrate in Deutschland zwar gestiegen ist, aber auf einem niedrigen Niveau begann und am Ende immer noch nicht (relativ) sehr hoch war.
Whuber
1
Das alternative Design in EDIT 2 ist eine Möglichkeit, den von @whuber angesprochenen Schlüsselpunkt zum Kontext anzusprechen.
Nick Cox
15

Ihr Diagramm ist vernünftig, erfordert jedoch eine gewisse Verfeinerung, einschließlich eines Titels, Achsenbeschriftungen und vollständiger Länderbeschriftungen. Wenn Sie betonen möchten, dass Deutschland das einzige Land ist, in dem die Sterblichkeitsrate im Beobachtungszeitraum gestiegen ist, können Sie dies auf einfache Weise erreichen, indem Sie diese Linie in der Handlung entweder durch eine dickere Linie oder durch eine andere hervorheben Linientyp oder Alpha-Transparenz. Sie können Ihr Zeitreihendiagramm auch mit einem Balkendiagramm ergänzen, das die Änderung der Sterblichkeitsrate im Zeitverlauf anzeigt, sodass die Komplexität der Zeitreihenlinien auf ein einziges Maß für die Änderung reduziert wird.

So können Sie diese Diagramme mit ggplotin erstellen 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)");

Dies führt zu folgenden Darstellungen:

Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben

Anmerkung: Mir ist bekannt, dass das OP beabsichtigte, die Veränderung der Sterblichkeitsrate seit 1932 herauszustellen, als sich der Trend in Deutschland zu verstärken begann. Dies scheint mir ein bisschen wie ein Kirschpflücken zu sein, und ich finde es zweifelhaft, wenn Zeitintervalle ausgewählt werden, um einen bestimmten Trend zu erhalten. Aus diesem Grund habe ich das Intervall über den gesamten Datenbereich betrachtet, was ein anderer Vergleich zum OP ist.

Setzen Sie Monica wieder ein
quelle
Vielen Dank für Ihre Anregungen. Das Format ist noch in Arbeit, dies war nur ein grobes Beispiel dafür, was ich bekommen wollte;)
PhDing
1
@Graipher: Gut gesehen (+1) - Ich bearbeite, wenn ich etwas mehr Zeit habe.
Setzen Sie Monica am
1
Ich mag das Balkendiagramm, aber anstatt der alphabetischen X-Achse würde ich nach der Änderung sortieren.
Gregor
14

Obwohl das erklärte Ziel darin besteht, Änderungen anzuzeigen , möchten Sie anscheinend auch die jährlichen Zeitreihen nach Ländern anzeigen . Das bedeutet, die Grafik nicht komplett zu wiederholen, sondern nur zu modifizieren.

Da sich eine Änderung darauf bezieht, was von einem Jahr zum nächsten geschieht, können Sie die Änderungen durch grafische Symbole darstellen, die sich über mehrere Jahre erstrecken, dh die Liniensegmente, die die Datenpunkte im Diagramm verbinden.

Da Farbe für die Unterscheidung von Ländern so nützlich ist und ansonsten quantitative Variablen nicht so gut anzeigt, bleiben uns im Wesentlichen nur zwei andere Merkmale, die variiert werden können, um eine Veränderung anzuzeigen: der Stil und die Dicke der Segmente. Da es sich bei Ihrer Arbeit um eine positive Änderung handelt, sollten Sie Liniensegmente für Erhöhungen hervorheben: Ihre Stile sollten kontinuierlicher und dicker sein.

Schließlich befasst sich Ihre These mit Daten nach 1932. Wir wollen diese Elemente der Grafik im Verhältnis zu den anderen hervorheben. Dies kann durch Sättigung der Farbe erfolgen.

Handlung

Diese Lösung liefert sofort Erkenntnisse, die im Original nicht erkennbar waren:

  • Kein Land verzeichnete für alle Jahre nach 1932 einen jährlichen Anstieg der Sterbeziffern. Ein solches Land würde als durchgehende durchgezogene Linie erscheinen, es ist jedoch keine solche Linie vorhanden.

  • Ein Großteil der Veränderung sollte auf Faktoren zurückgeführt werden, die allen Ländern gemeinsam sind. Dies zeigt sich in den Ähnlichkeiten von Linienstil und Linienstärke in vertikalen Spalten. Während des Zeitraums von 1934 bis 1935 beispielsweise stiegen die Sterberaten in fast allen Ländern, während sie in den Jahren 1933 bis 1934 in fast allen Ländern zurückgingen.

  • In Deutschland war ein starker Anstieg der Sterblichkeitsraten in den Jahren 1932-33 und ein leichter Anstieg in den Jahren 1935-36 ungewöhnlich .

Dies deutet darauf hin, dass eine robuste Zwei-Wege-Untersuchung der Veränderung der Sterblichkeitsrate gegenüber dem Land durchgeführt wird, möglicherweise nach dem Mittelwert, um die relative Leistung der europäischen Länder in diesem Zeitraum besser zu erfassen .

Wenn Sie nur den Unterschied zwischen 1937 und 1932 hervorheben möchten, können Sie mit einer ähnlichen Technik die Abschnitte der Pfade zwischen diesen Daten symbolisieren. Deutschland würde auffallen:

Grundstück 2

whuber
quelle
10

Slopegraphs

Eine Möglichkeit, Ihre Daten darzustellen, ist die Verwendung eines Slopegraphen, der sich besonders gut zum Vergleichen von Änderungen oder Verläufen eignet (einige Links: 1 2 ).

Drunter ist

  • Links ein Beispiel für einen Slopegraph, der zeigt, wie dies für Ihren Fall aussieht.

  • In der Mitte ein komplexerer Slopegraph, der auch das Jahr 1932 zeigt

  • Rechts eine Variation des Slopegraphen, eher eine Art Sparklines, in denen alle Daten angezeigt werden (dh keine geraden Linien).

Ich bin mir nicht sicher, welches das Beste ist. Die dritte / rechte Option gibt einen genaueren Überblick über die Schwankungen von Jahr zu Jahr (und zum Beispiel wird deutlicher, dass Dänemark und Deutschland nicht so unterschiedlich aussehen und von Jahr zu Jahr stark auf und ab gehen), kann es aber auch ablenken (vor allem der 1929er Höhepunkt). Welche besser ist, hängt also davon ab, was Sie mit der Grafik vermitteln möchten und wie detailliert Ihre Geschichte sein muss (z. B. die Wende um 1932 mit der anderen Regierung, was in der zweiten / mittleren Option klarer wird).

Die Variation des Slopegraphen auf der rechten Seite ähnelt der Grafik von Xan. Neben den stilistischen Unterschieden gibt es jedoch einen weiteren wichtigen Unterschied. Die Breite und Höhe der Figur sind so gewählt, dass der Winkel der Kurven nahe bei 45 Grad liegt. Auf diese Weise sind die Unterschiede ausgeprägter (ich glaube, dass das beste Beispiel das Sonnenfleck-Beispiel von Edward Tufte ist )

Steigungsgraph und eine Variation

Mehr Kontext

Wenn Sie mehr Komplexität als den einfachen Slopegraph hinzufügen möchten, ist es meiner Meinung nach tatsächlich besser, mehr Daten außerhalb des Bereichs von 1927 bis 1937 als innerhalb des Bereichs anzuzeigen . (Wieder ein Beispiel von Tufte von den Seiten 74-75 unter Die visuelle Anzeige quantitativer Informationen, das Sie über diese Seite im Schwarzen Brett auf seiner Website aufrufen können.)

Das folgende Beispiel zeigt Daten für die Jahre 1900-2000 (mit Ausnahme von Polen, dessen Daten etwas schwierig sind), die aus Wikipedia extrahiert wurden (z. B. diese Seite für die Tschechische Republik ) und für die Schweiz und die Niederlande ihre nationalen Statistikämter ( bfs und Statline ).

(Die Daten sind ein bisschen anders als Ihre, aber die gleichen wie zum Beispiel der Artikel "Autarkie, Marktzerfall und Gesundheit: Die Sterblichkeits- und Ernährungskrise in Nazideutschland, 1933-1937" von Jörg Baten und Andrea Wagner. Dieser Artikel ist interessant zu lesen, da sie viel mehr Daten liefern als nur rohe Sterblichkeitsraten, sich aber auch auf einen kleinen Zeitraum beschränken: Besonders interessant ist, dass der Anstieg der Sterblichkeitsrate von 1932 bis 1937 hauptsächlich in Städten in einem Streifen von Frankfurt nach Bremen zu verzeichnen war und Hamburg)

mehr Kontext

Ich halte diese Grafik für wichtig, da sie zeigt, dass Deutschland vor dem Aufstieg nach 1932 einen sehr starken Rückgang verzeichnete. Stärker als andere Länder. Sie können also negative und positive Interpretationen haben. Die Sterblichkeitsrate in Deutschland stieg zwischen 1932 und 1937 stärker als in anderen Ländern. War dies (1) ein Anstieg von einem niedrigen Gipfel weg oder (2) ein Anstieg in Richtung eines hohen Gipfels? Ein interessanter Aspekt in dieser Hinsicht ist, dass das Niveau von 1932 von 10,8 für Deutschland ein sehr niedriges Niveau ist (zu diesem Zeitpunkt hatten nur die Niederlande eine niedrigere Sterblichkeitsrate). Dies ist nicht nur der niedrigste Stand seit 1937, sondern es dauert auch bis 1995, bis dieser Wert von 10,8 wieder erreicht ist.

Ein weiterer Punkt im Zusammenhang mit der Gesundheit (wenn dies Ihr Kontext ist): Es ist möglicherweise besser, die Lebenserwartung zu vergleichen. Die demografische Zusammensetzung der Bevölkerung hat einen Einfluss auf die Sterblichkeitsrate, unabhängig von Änderungen der Gesundheitssituation

Ein bisschen weniger zusätzlicher Kontext

Die obige Grafik zeigt die Gesamtheit, kann aber für die meisten Zwecke ein Overkill sein (außer in diesem Beitrag, in dem ich die gesamte Geschichte zeigen wollte und es eher zu Erkundungszwecken ist). Die Grafik unten ist eine Alternative, die meines Erachtens immer noch in Ordnung ist.

kleinerer kontextueller Graph

Sextus Empiricus
quelle
Vielen Dank für alle Ihre Vorschläge. Ich denke, die Slopegraphen, die Sie zur Verfügung gestellt haben, sind sehr intuitiv. Ich bin mir sicher, dass eine längere Zeitspanne sinnvoll wäre, aber wir möchten uns auf diesen speziellen Zeitraum konzentrieren und ihn klarstellen. Ich denke, dass die Handlung zwischen 1900 und 2000 etwas zu chaotisch wäre. In Bezug auf Ihren letzten Punkt haben wir die Rohölraten altersbereinigt, um weiterhin die Sterblichkeitsraten zu verwenden.
PhDing
1
@Alessandro Ich habe eine Alternative hinzugefügt, die praktischer ist. Auch hier sind die Zahlen unterschiedlich, weil ich verschiedene Quellen verwendet habe (nicht altersbereinigt), aber ich denke, dass der starke Rückgang in Deutschland, gefolgt von einem starken Anstieg, der gleiche sein könnte.
Sextus Empiricus
4

Kommt auf das Publikum an, aber ich würde die Dinge vereinfachen:

Bildbeschreibung hier eingeben

Dann buchstabieren Sie es in der Überschrift zB

Von 1932 bis 1937 stieg die jährliche Sterblichkeitsrate in Deutschland an, während sie in ganz Mitteleuropa (Frankreich, Belgien, Niederlande, Dänemark, Österreich, Tschechische Republik, Polen) zurückging.

(Übrigens, was ist ch vs. cz, dh in welchem ​​Land fehle ich oben?)

Um gründlich zu sein, müssen Sie das natürlich nach death rateeiner Schätzung der Bevölkerung gewichten, wenn Sie dies für die "Anderen" "zusammenfassen", aber ich bin sicher, dass Ihnen diese Informationen jederzeit zur Verfügung stehen.

Update 09.06.18: Dies ist natürlich eine "Spielzeug" -Skizze und wurde nicht aus den Daten abgeleitet; Die Idee ist, einen groben Entwurf der Form zu liefern, die ein Diagramm annehmen sollte.

OyOi=1...88×

Oyi=i=8i=1ADRyi.populationitotalPopulation

oder besser, wenn Sie Bevölkerungsinformationen haben. für jedes Jahr:

Oyi=i=8i=1ADRyi.populationyitotalPopulationy

Abhängig von der Leserschaft (z. B. Epidemiologen vs. Historiker) könnte eine Standardabweichung oder ein Standardfehler zu letzterer hinzugefügt werden, obwohl ich denke, dass dies das einfache Erscheinungsbild der Handlung eher beeinträchtigen würde.

Dardisco
quelle
5
chist die Schweiz. (Übrigens war es in den 30er Jahren noch nicht die Tschechische Republik .) - Was mir an Ihrem Ansatz nicht gefällt, ist, dass es nicht klar ist, dass der Abwärtstrend in den anderen Ländern konsistent ist. Es könnte den Anschein haben, als gäbe es nur zufällige Schwankungen, die in den anderen Ländern durchschnittlich negativ sind, in Deutschland jedoch positiv ausfallen.
Linksabfahrt am
Diese Antwort gefällt mir, aber ich möchte vielleicht eine visuelle Darstellung des Bereichs oder der Standardabweichung um die Linie "Andere" hinzufügen, ansonsten kann das Mittel täuschen.
Tasos Papastylianou
2
Diese Idee gefällt mir sehr gut - aber können Sie bitte erklären, wie Sie die Sterblichkeitsraten von "anderen" ermittelt haben? Die arithmetischen Mittel ihrer Sätze wären aufgrund der stark unterschiedlichen Bevölkerungsgruppen, die sie repräsentieren, nicht angemessen.
Whuber
3

Wenn Sie die Änderung hervorheben möchten, berechnen Sie diese und zeigen Sie sie an. Die Verwendung einer Heatmap zur Anzeige der Änderungen kann nützlich sein, da Vergleiche ohne Überzeichnung von Problemen möglich sind und Interpolationsprobleme vermieden werden, die durch Liniendiagramme verursacht werden können.

Verwenden Sie Ihre Daten wie 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")

stirbt Heatmap

Beachten Sie, dass sich die Daten jetzt gegenüber dem Vorjahr geändert haben. Sie können sehen, dass Deutschland nach 1932 eine Reihe von Blues (Anstieg der Sterblichkeitsraten) hat, die andere Länder nicht haben. Sie können auch sehen, dass zwischen 1934 und 1935 in allen Ländern außer Polen die Sterblichkeitsraten gestiegen sind, aber die Tendenz in Deutschland scheint zwischen 1932 und 1933 und zwischen 1935 und 1936 (sowie zwischen 1927 und 1928) zu schwanken.

Interessant ist, dass die Farben links intensiver sind als rechts. Dies bedeutet, dass das Ausmaß der Änderungen zu Beginn des Berichtszeitraums höher und gegen Ende gedämpfter war.

Ich würde empfehlen, dies mit einem Liniendiagramm zu kombinieren, das auch die Pegel zeigt.

James
quelle
2

Hier zeige ich Ihnen die Differenz des Logarithmus des Todesquotienten pro 1000 Einwohner gegenüber dem Vorjahr (daher wird 1927 nicht gezeigt). Deutschland ist rot dargestellt, während der Durchschnitt anderer Länder in der dicken schwarzen Linie dargestellt ist.

Bildbeschreibung hier eingeben

Deutschland verzeichnete in 5 von 10 Jahren einen Anstieg der Quote. Nach 1932 hieß es bis 1937 über dem Durchschnitt anderer Länder (und größtenteils positiv).

Warum aber der Logarithmus? Der Grund ist einfach: Der Wechsel von 2 zu 1 ist drastischer als der Wechsel von 1000 zu 999 :)


Code:

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()
Firebug
quelle
2
Das OP spricht über Todesrate und nicht über Mordrate
kjetil b halvorsen
@kjetilbhalvorsen Hoppla, genau das passiert, wenn Sie die Datenvisualisierung nach 21:00 Uhr an einem Tag versuchen, an dem Sie seit 8:00 Uhr arbeiten, haha. Wird so schnell wie möglich zu beheben, danke für die Köpfe nach oben :)
Firebug
1

Eine weitere Version: Verhältnisse (mittlere Sterbeziffer von 1927 bis zum laufenden Jahr) / (Sterbeziffer 1927)

Bildbeschreibung hier eingeben

Fertig mit Mathematica-Code

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} 
]

(Peaks im Jahr 1929 scheinen mit einer Grippepandemie in Verbindung zu stehen, die zu dieser Zeit auftrat.)

მამუკა მამუკა
quelle