Como plotar tendências corretamente

45

Estou criando um gráfico para mostrar tendências nas taxas de mortalidade (por 1000 ppl.) Em diferentes países, e a história que deve vir da trama é que a Alemanha (linha azul clara) é a única cuja tendência está aumentando após 1932. Isso é minha primeira tentativa (básica)

insira a descrição da imagem aqui

Na minha opinião, este gráfico já está mostrando o que queremos dizer, mas não é super intuitivo. Você tem alguma sugestão para deixar mais clara essa distinção entre tendências? Eu estava pensando em traçar taxas de crescimento, mas tentei e não é tão melhor assim.

Os dados são os seguintes

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
Doutoramento
fonte
2
Dados da Itália e Espanha seriam interessantes em comparação. Eles também tinham governos fascistas nessa época.
Asmaier 06/0618
1
além das boas idéias dadas nas respostas, inicie seu gráfico em 0 (eixo y) para que as magnitudes das mudanças relativas sejam mais visíveis.
woj
2
@WoJ Entendo o seu ponto de vista, mas, na prática, o intervalo é de 9 a 18 por 1000, portanto, metade do espaço do gráfico seria gasto mostrando que a taxa de mortalidade não é zero. Eu acho que é por isso que a maioria das pessoas (inclusive eu) não queria fazer isso em suas respostas até agora. Considere onde seu critério para; por exemplo, você insiste em que todas as variações históricas na altura adulta começam no zero? Mais discussão na ex stats.stackexchange.com/questions/184525/...
Nick Cox
1
Em vez de pensar no gráfico, gostaria de saber primeiro o que está subjacente aos dados e à análise. Quais fatores estão envolvidos com a taxa de mortalidade? A taxa de mortalidade diminui mais rapidamente se já estiver alta (por exemplo, Polônia)? As taxas de mortalidade atingem algum nível? Esse efeito de platô (que é mais forte para a Alemanha) talvez faça do aumento para a Áustria (nos últimos anos) um efeito mais forte? O gráfico é uma espécie de dados brutos (ainda precisa ser analisado) e, ao mesmo tempo, são derivados (os números não são medições simples, mas derivados), o que dificulta o destaque de 1 efeito.
Sextus Empiricus
1
Além disso, é melhor mostrar um período maior do que apenas 10 anos. O foco nesses dez anos só é justo quando você mostra o ambiente. É tão comum ver close-ups que fazem muito menos sentido em uma perspectiva mais ampla. Quando essas curvas sobem e descem como ondas em uma tempestade, é preciso mostrar o mar inteiro e não apenas uma única onda que se correlaciona com uma bela história. (Tenho certeza de que há um exemplo de Tufte que mostra esse princípio) #
Sextus

Respostas:

53

As vezes menos é mais. Com menos detalhes sobre as variações ano a ano e as distinções de países, você pode fornecer mais informações sobre as tendências. Como os outros países estão se movendo principalmente juntos, você pode passar sem cores separadas.

Ao usar uma suavidade, você está exigindo que o leitor confie que você não suavizou nenhuma variação interessante.

insira a descrição da imagem aqui

Atualize após receber algumas solicitações de código :

Eu fiz isso no Graph Builder interativo do JMP . O 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)

));

xan
fonte
4
Na minha experiência, a série de suavização é uma prática muito rara nas ciências sociais.
Luchonacho
6
Talvez seja por isso que lhes mostre algo novo e útil?
precisa saber é o seguinte
9
Independentemente das normas nas ciências sociais, acho que a suavização oculta a queda que ocorre em 1930 e o aumento que ocorre em 1935. O pico em vários países ocorridos em 1929 também é obscurecido. Caso contrário, eu gosto muito dessa abordagem simplista.
Minador
7
+1 por usar apenas duas cores (talvez tornar o cinza ainda mais claro?) E evitar a legenda colocando os nomes de países à direita. -1 para suavização, que descarta informações sem uma boa razão. Portanto, eu não preciso votar ;-) #
530 S. Kolassa - Reinstala Monica
10
@StephanKolassa Acho ponto de Xan está lá é uma boa razão para informações de descarte: se concentrar em tendências globais, em vez de variabilidade de ano para ano "ruído". Até certo ponto, você já está "descartando informações" - está vendo números anuais. Duvido que o gráfico seja melhorado com a plotagem de taxas diárias, que é onde "não descartar informações" leva você, ad absurdum . - É verdade que algumas tendências são obscurecidas pela suavização, mas outras (como variação sazonal) são obscurecidas pela escolha das taxas anuais. Há alguma confiança envolvida de que a variação relevante ainda esteja sendo exibida.
RM
39

Há boas respostas aqui. Permitam-me que considere que deseja mostrar que a tendência para a Alemanha difere das demais. Níveis versus mudanças é uma distinção comum em economia. Seus dados estão em níveis , mas sua pergunta é declarada como buscando alterações . A maneira de fazer isso é definir o nível de referência (aqui 1932) como . A partir daí, cada ano sucessivo é uma fração do anterior. (É comum usar logs para tornar as alterações mais estáveis ​​e simétricas. Isso muda um pouco o significado dos números exatos, se você realmente deseja que alguém obtenha isso da trama, mas geralmente para esse tipo de coisa, as pessoas querem ser Você pode obter uma soma contínua para cada série e multiplicá-la por100 1001100por convenção. É isso que você planeja. Seu caso é um pouco menos comum, pois seu ponto de referência está no meio da sua série, então eu executei isso nas duas direções desde 1932. Abaixo está um exemplo simples, codificado em R (haverá várias maneiras de criar o código e melhor, mas isso deve mostrar a ideia diretamente). Tornei a linha para a Alemanha mais espessa para distingui-la na legenda e adicionei uma linha de referência em . É fácil ver que a Alemanha se destaca do resto. Você também pode ver que todos os outros países terminam com taxas mais baixas em 1937 do que em 1932, e que suas mudanças ano a ano flutuam muito menos nos anos seguintes a 1932 do que nos anos anteriores. 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)

insira a descrição da imagem aqui

Por outro lado, abaixo está um gráfico correspondente dos dados em níveis. No entanto, tentei tornar possível ver que a Alemanha sozinha subiu depois de 1932 de duas maneiras: coloquei um ponto de destaque em cada série em 1932 e desenhei uma linha cinza fraca ao longo da trama em segundo plano nesses níveis.

insira a descrição da imagem aqui

- Reinstate Monica
fonte
+1 solução realmente ótima
Repmat
2
Há espaço suficiente para perder a legenda (matar a tecla) e rotular cada curva diretamente dentro do corpo do gráfico.
Nick Cox
3
Existem várias maneiras de tornar o código e a plotagem mais agradáveis. Meu ponto principal aqui foi distinguir b / t das idéias de níveis e mudanças e fornecer uma demonstração básica de como as mudanças podem ser visualizadas.
gung - Restabelece Monica
17

Há muitas boas idéias aqui em outras respostas, mas elas não esgotam as boas soluções possíveis. O primeiro gráfico nesta resposta considera que diferentes níveis de taxa de mortalidade podem ser discutidos e explicados separadamente. Ao permitir que cada série preencha grande parte do espaço disponível, concentra a atenção dos leitores nos padrões de mudança relativa.

A ordem alfabética por país geralmente é um padrão bobo e não é insistida aqui. Felizmente, e felizmente, a Alemanha como de está no centro desta tela 3 x 3. Uma narrativa simples - Olha! O padrão da Alemanha é excepcional, com uma recuperação de 1932 - é possível e plausível.

insira a descrição da imagem aqui

Felizmente, mas felizmente, 9 países são suficientes para justificar a tentativa de painéis separados, mas não muitos para tornar esse design impraticável (por exemplo, 30 e certamente 300 painéis, poderia (haveria) muitos painéis para digitalizar, cada um pequeno demais para escrutinar).

Evidentemente, há muito espaço aqui para nomes de países mais completos. (Em algumas outras respostas, as lendas ocupam uma grande fração do espaço disponível, permanecendo um pouco enigmáticas. Na prática, as pessoas interessadas nesses dados acham as abreviaturas do país fáceis de decodificar, mas até que ponto a lenda é necessária geralmente é um problema. vexatória no design gráfico.)

Código Stata para o registro:

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)

EDITAR:

Um aprimoramento simples deste gráfico sugerido por Tim Morris é destacar o ano em que o máximo ocorreu:

insira a descrição da imagem aqui

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 (revisado para mostrar um código mais simples):

Como alternativa, esse próximo design mostra cada série separadamente, mas sempre com as outras séries como pano de fundo. A ideia geral é discutida neste segmento relacionado .

insira a descrição da imagem aqui

Há perdas e ganhos aqui. Embora cada série possa ser vista com mais facilidade no contexto de outras, o espaço é perdido pela repetição.

Código Stata para o registro:

(Código para input, reshape, renamecomo acima nesta resposta)

* 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é para ser entendido como front ou foreground and backdrop ou btrama ackground, não como um eco de 1960 gíria para "fabuloso".

Nick Cox
fonte
3
+1, devo dizer, o código é bastante conciso para produzir um bom enredo como esse.
gung - Restabelece Monica
@gung Obrigado. Qualquer aclamação aqui é merecida pelo StataCorp, pois esses são comandos embutidos. Esteticamente, estou zapeando algum texto padrão, por exemplo, yearcomo título do eixo x (quem precisa disso?). Vou acrescentar que para um usuário Stata a estrutura de dados natural seria um que não obriga um renamee reshape. mas possui painéis distintos (aqui países) como blocos distintos de observações.
Nick Cox
+1 No entanto, uma característica problemática dessa solução é que ela perde o contexto: não podemos ver facilmente que, embora a taxa de mortalidade da Alemanha tenha aumentado, ela começou em um nível baixo e ainda não era (relativamente) muito alta no final.
whuber
1
O design alternativo no EDIT 2 é uma maneira de abordar o ponto principal do @whuber sobre o contexto.
Nick Cox
15

Seu gráfico é razoável, mas exigiria algum refinamento, incluindo um título, rótulos de eixo e rótulos completos de país. Se seu objetivo é enfatizar o fato de que a Alemanha foi o único país com um aumento na taxa de mortalidade ao longo do período de observação, uma maneira simples de fazer isso seria destacar essa linha na trama, usando uma linha mais grossa, uma outra transparência de tipo de linha ou alfa. Você também pode aumentar seu gráfico de séries temporais com um gráfico de barras mostrando a alteração na taxa de mortalidade ao longo do tempo, para que a complexidade das linhas de séries temporais seja reduzida a uma única medida de alteração.

Aqui está como você poderia produzir essas parcelas usando ggplotem 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)");

Isso leva aos seguintes gráficos:

insira a descrição da imagem aqui insira a descrição da imagem aqui

Nota: Estou ciente de que o OP pretendia destacar a mudança na taxa de mortalidade desde 1932, quando a tendência na Alemanha começou a subir. Isso me parece um pouco como escolher cerejas, e acho duvidoso quando intervalos de tempo são escolhidos para obter uma tendência específica. Por esse motivo, observei o intervalo em todo o intervalo de dados, que é uma comparação diferente do OP.

Restabelecer Monica
fonte
Obrigado por suas sugestões. O formato é um trabalho em andamento, este foi apenas um exemplo aproximada do que eu queria chegar;)
PhDing
1
@ Graipher: Bem visto (+1) - vou editar quando tiver um pouco mais de tempo.
Reintegrar Monica
1
Eu gosto do gráfico de barras, mas em vez do eixo x alfabético, eu classificaria pela alteração.
Gregor
14

Embora o objetivo declarado seja exibir alterações, aparentemente você deseja mostrar as séries temporais anuais por país também. Isso sugere não refazer completamente o gráfico, mas apenas modificá-lo.

Como uma mudança diz respeito ao que acontece de um ano para o outro, considere representar as alterações por símbolos gráficos que se estendem por anos sucessivos: ou seja, os segmentos de linha que conectam os pontos de dados no gráfico.

Como a cor é tão útil para distinguir países e, caso contrário, não é tão boa para indicar variáveis ​​quantitativas, isso nos deixa essencialmente com apenas duas outras características que podem ser variadas para indicar mudanças: o estilo e a espessura dos segmentos. Como sua tese diz respeito a mudanças positivas, convém destacar os segmentos de linha para aumentos: seus estilos devem ser mais contínuos e mais espessos.

Finalmente, sua tese diz respeito a dados após 1932. Queremos enfatizar esses elementos do gráfico em relação aos outros. Isso pode ser feito saturando a cor.

Enredo

Esta solução fornece imediatamente informações que não eram aparentes no original:

  • Nenhum país experimentou aumentos anuais nas taxas de mortalidade em todos os anos após 1932. Qualquer país desse tipo apareceria como uma linha contínua e sólida, mas não existe essa linha.

  • Grande parte da mudança deve ser atribuída a fatores comuns a todos os países. Isso é aparente nas semelhanças do estilo e espessura da linha nas colunas verticais. Por exemplo, durante o período de 1934-35, as taxas de mortalidade aumentaram em quase todos os países, onde, em 1933-34, diminuíram em quase todos os países.

  • A Alemanha foi incomum ao experimentar um grande aumento nas taxas de mortalidade em 1932-33 e também um ligeiro aumento em 1935-36.

Eles sugerem a realização de uma exploração bidirecional robusta da mudança na taxa de mortalidade versus país, talvez por polonês mediano, a fim de penetrar mais profundamente no desempenho relativo dos países europeus durante esse período.

Se você deseja enfatizar apenas a diferença entre 1937 e 1932, uma técnica semelhante pode ser usada para simbolizar as partes dos caminhos entre essas datas. A Alemanha se destacaria:

Gráfico 2

whuber
fonte
10

Slopegraphs

Uma maneira de apresentar seus dados é usar um slopegraph, especialmente bom para comparar alterações ou gradientes (alguns links: 1 2 )

Abaixo está

  • À esquerda, um exemplo de slopegraph que mostra como isso se parece com o seu caso.

  • No centro, um slopegraph mais complexo, que também mostra o ano de 1932

  • À direita, uma variação do slopegraph, mais uma espécie de sparklines, em que todos os dados são mostrados (o que significa que não há linhas retas).

Não tenho certeza de qual é o melhor. A terceira opção / direita fornece uma idéia mais forte sobre as variações de ano para ano (e, por exemplo, torna-se mais visível que Danmark vs Alemanha não parecem tão diferentes e está subindo e descendo muito de ano para ano), mas pode também pode ser uma distração (especialmente o pico de 1929). Então, qual é o melhor depende do que você deseja transmitir com o gráfico e quantos detalhes sua história exige (por exemplo, a virada de 1932 com o governo diferente, que é mais claro na segunda opção / meio).

A variação do slopegraph à direita se parece muito com o gráfico de Xan. No entanto, além das diferenças estilísticas, há mais uma diferença importante. A largura e a altura da figura são escolhidas de modo que o ângulo das curvas esteja próximo de 45 graus. Dessa maneira, as diferenças são mais salientes (acredito que o melhor exemplo é o exemplo das manchas solares de Edward Tufte )

gráfico de inclinação e uma variação

Mais contexto

Se você deseja adicionar mais complexidade do que o slopegraph simples, acredito que é realmente melhor mostrar mais dados fora do intervalo 1927-1937 do que dentro do intervalo. (novamente um exemplo de Tufte das páginas 74-75 em A exibição visual de informações quantitativas, você pode acessá-las através desta página no quadro de avisos em seu site)

O exemplo abaixo mostra os dados dos anos 1900-2000 (excluindo a Polônia cujos dados são um pouco difíceis) extraídos da wikipedia (por exemplo, esta página para a República Tcheca ) e para a Suíça e os Países Baixos seus departamentos nacionais de estatística ( bfs e Statline ).

(Os dados são um pouco diferentes dos seus, mas o mesmo que, por exemplo, o artigo "Autarquia, desintegração do mercado e saúde: a crise nutricional e de mortalidade na Alemanha nazista, 1933-1937" por Jörg Baten e Andrea Wagner. Este artigo é interessante ler, pois fornecem muito mais dados do que apenas as taxas brutas de mortalidade, embora também se limitem a um pequeno período.especialmente interessante é que o aumento da taxa de mortalidade, de 1932 a 1937, existia principalmente entre as cidades em uma faixa de Frankfurt a Bremen Hamburgo)

mais contexto

Acredito que este gráfico é importante porque mostra que a Alemanha teve uma queda muito forte antes do aumento após 1932. Mais forte que em outros países. Então você pode ter interpretações negativas e positivas. A taxa de mortalidade da Alemanha estava subindo mais do que outros países entre 1932-1937, mas isso foi (1) um aumento de um pico baixo ou (2) um aumento de um pico alto? Um aspecto interessante a esse respeito é que o nível de 10,8 de 1932 é um nível muito baixo para a Alemanha (neste momento, apenas os Países Baixos tinham uma taxa de mortalidade mais baixa). Este não é apenas o nível mais baixo para os anos até 1937, mas também leva até 1995 para que este nível de 10,8 seja atingido novamente.

Outro ponto, relacionado à saúde (se esse for o seu contexto), pode ser melhor comparar a expectativa de vida, a composição demográfica da população influencia a taxa de mortalidade, independentemente de mudanças na situação de saúde

Contexto um pouco menos adicional

O gráfico acima mostra a totalidade, mas pode ser um exagero para a maioria dos propósitos (exceto neste post, onde eu queria mostrar toda a história e é mais para fins exploratórios). O gráfico abaixo é uma alternativa que, acredito, ainda é decente.

gráfico contextual menor

Sextus Empiricus
fonte
Obrigado por todas as suas sugestões. Eu acho que os slopegraphs que você forneceu são muito intuitivos. Estou certo de que incluir um período maior seria útil, mas queremos enfatizar esse período específico e deixar claro. Eu acho que o enredo de 1900-2000 seria um pouco confuso. Em relação ao seu último ponto, ajustamos a taxa bruta por idade para continuar usando as taxas de mortalidade.
Doutorando
1
@Alessandro eu adicionei uma alternativa que é mais prática. Novamente, os números são diferentes, porque usei fontes diferentes (não ajustadas pela idade), mas acho que o forte declínio da Alemanha seguido de forte aumento poderia ser o mesmo.
Sextus Empiricus
4

Depende da audiência, mas eu simplificaria as coisas:

insira a descrição da imagem aqui

Em seguida, soletre-o na legenda, por exemplo

De 1932 a 1937, a taxa de mortalidade anual aumentou na Alemanha, enquanto caiu na Europa Central (França, Bélgica, Holanda, Dinamarca, Áustria, República Tcheca, Polônia).

(BTW, o que é ch vs. cz, ou seja, que país estou faltando acima?)

Para ser completo, é claro que você precisará ponderar a death rateestimativa de população ao "agrupar" isso para os "Outros", mas tenho certeza de que essa informação está prontamente disponível para você.

Atualização 6/9/18: É claro que este é um esboço de 'brinquedo' e não foi derivado dos dados; a idéia é fornecer um rascunho da forma que um gráfico deve ter.

Para abordar o comentário do whuber: os valores para 'Outros' podem ser gerados como média, ponderada pela população , por exemplo, com indicando valor para por ano e como países em 'Outros':OyOi=1...88×

Oyi=i=8i=1ADRyi.populationitotalPopulation

ou melhor, se você tiver informações sobre a população. para cada ano:

Oyi=i=8i=1ADRyi.populationyitotalPopulationy

Dependendo dos leitores (por exemplo, epidemiologistas versus historiadores), um desvio padrão ou erro padrão pode ser adicionado a este último, embora eu ache que isso prefira estragar a aparência simples da trama.

dardisco
fonte
5
ché a Suíça. (E, BTW, ainda não era a República Tcheca nos anos 30.) - O que eu não gosto na sua abordagem é que não está claro se a tendência de queda é consistente nos outros países. Pode parecer que há apenas flutuações aleatórias que acontecem em média com algo negativo nos outros países, mas saem positivas na Alemanha.
leftaroundabout
Gosto dessa resposta, mas posso adicionar um visual do intervalo ou desvio padrão em torno da linha dos 'outros', caso contrário, os meios podem enganar.
Tasos Papastylianou
2
Eu gosto muito dessa idéia - mas você poderia explicar como determinou as taxas de mortalidade de "outros"? Os meios aritméticos de suas taxas não seriam apropriados devido às populações amplamente variadas que eles representam.
whuber
3

Se você deseja destacar as alterações, talvez calcule isso e exiba isso. O uso de um mapa de calor para exibir as alterações pode ser útil, pois permite fazer comparações sem sobrecarregar os problemas e evitar problemas de interpolação que podem vir dos gráficos de linha.

Usando seus dados como dem 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")

mapa de calor de taxas de morte

Observe que agora os dados são alterados em relação ao ano anterior. Você pode ver que a Alemanha tem um conjunto de blues (aumentos nas taxas de mortalidade) após 1932 que outros países não têm. Você também pode ver que entre 1934 e 1935 todos os países, exceto a Polônia, tiveram aumentos nas taxas de mortalidade, mas a tendência da Alemanha parece ser 1932-1933 e 1935-1936 (assim como 1927-1928).

Uma característica interessante é o fato de as cores serem mais intensas à esquerda em comparação à direita. Isso significa que a magnitude das mudanças foi maior no início do período e mais silenciosa no final.

Eu recomendaria emparelhar isso com um gráfico de linhas mostrando os níveis também.

James
fonte
2

Aqui, mostro a diferença do logaritmo da proporção de óbitos por mil habitantes em relação ao ano anterior (portanto, 1927 não é mostrado). A Alemanha é mostrada em vermelho, enquanto a média de outros países é mostrada na linha preta grossa.

insira a descrição da imagem aqui

A Alemanha teve aumentos na proporção em 5 de 10 anos. Depois de 1932, ficou acima da média de outros países (e principalmente positivo), até 1937.

Embora por que o logaritmo? O motivo é simples: a mudança de 2 para 1 é mais drástica do que a mudança de 1000 para 999 :)


Código:

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
fonte
2
O OP fala sobre taxa de mortalidade e não taxa de homicídios
kjetil b halvorsen
@kjetilbhalvorsen Opa, é o que acontece quando você tenta a visualização de dados às 21h em um dia em que trabalha desde as 8h da manhã, haha. Vai corrigir o mais rápido possível, obrigado pela atenção :)
Firebug
1

Mais uma versão: proporções (taxa média de mortalidade entre 1927 e o ano atual) / (taxa de mortalidade 1927)

insira a descrição da imagem aqui

Feito com o código do 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} 
]

(Os picos em 1929 parecem estar relacionados a uma pandemia de gripe que ocorreu nessa época)

მამუკა ჯიბლაძე
fonte