Informação no Sonido. Duas Técnicas para Visualização…

Informação no Ruído. Duas Técnicas para Visualização...

Duas técnicas para visualizar muitas séries temporais de uma só vez

Rumo à Ciência de Dados

Imagine isso: você tem um monte de gráficos de risca e está esperançoso de que há pelo menos uma tendência escondida em qualquer lugar em todos esses dados. Quer você esteja rastreando vendas em milhares de produtos da sua empresa ou mergulhando em dados do mercado de ações, seu objetivo é deslindar essas subtendências e fazê-las se destacarem na sua visualização. Vamos explorar algumas técnicas para ajudar você a fazer exatamente isso.

Sua visita nos ajuda a continuar oferecendo o melhor para você! (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px"/>
Centenas de linhas plotadas, mas não está evidente quais são as subtendências. Esses dados sintéticos podem mostrar o mercê dessas estratégias. (Imagem do responsável)

Os gráficos de linhas de densidade são uma técnica de plotagem inteligente introduzida por Dominik Moritz e Danyel Fisher em seu cláusula, Visualizando uma série temporal de um milhão com o gráfico de risca de densidade. Nascente método transforma vários gráficos de linhas em mapas de calor, revelando áreas onde as linhas se sobrepõem mais.

Quando aplicamos gráficos de linhas de densidade aos dados sintéticos que mostramos anteriormente, os resultados ficam assim:

O PyDLC nos permite ver “pontos quentes” onde um cimo proporção de sobreposição de linhas.Imagem do responsável)

Essa implementação nos permite ver onde nossas tendências estão aparecendo e identificar as subtendências que tornam esses dados interessantes.

Para leste exemplo usamos a livraria Python PyDLC por Charles L. Berube. A implementação é bastante simples, graças ao design amigável da livraria.

plt.figure(figsize=(14, 14))
im = dense_lines(synth_df.to_numpy().T,
x=synth_df.índice.astype('int64'),
cmap='viridis',
ny=100,
y_pad=0.01
)

plt.ylim(-25, 25)

plt.axhline(y=0, color='white', linestyle=':')

plt.show()

Ao usar gráficos de linhas de densidade, tenha em mente que parâmetros uma vez que ny e y_pad pode exigir alguns ajustes para obter os melhores resultados.

Essa técnica não é tão amplamente discutida e não tem um nome universalmente reconhecido. No entanto, é essencialmente uma variação de “gráficos de densidade de risca” ou “visualizações de densidade de risca”, onde usamos linhas mais grossas com baixa opacidade para revelar áreas de sobreposição e densidade.

Essa técnica mostra subtendências muito muito e reduz a fardo cognitiva de muitas linhas.Imagem do responsável)

Podemos identificar claramente o que parecem ser duas tendências distintas e observar o cimo proporção de sobreposição durante os movimentos descendentes das ondas senoidais. No entanto, é um pouco mais complicado indicar onde o efeito é mais potente.

O código para essa abordagem também é bastante simples:

plt.figure(figsize=(14, 14))

for column in synth_df.columns:
plt.plot(synth_df.índice,
synth_df[column],
alpha=0.1,
linewidth=2,
label=ticker,
color='black'
)

Cá, os dois parâmetros que podem exigir qualquer ajuste são alpha e linewidth.

Imagine que estamos buscando subtendências nos retornos diários de 50 ações. O primeiro passo é extrair os dados e calcular os retornos diários.

import yfinance as yf
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

stock_tickers = [
'AAPL', 'MSFT', 'GOOGL', 'AMZN', 'TSLA', 'META', 'NVDA', 'BRK-B', 'UNH', 'V',
'HD', 'MA', 'KO', 'DIS', 'PFE', 'NKE', 'ADBE', 'CMCSA', 'NFLX', 'CSCO',
'INTC', 'AMGN', 'COST', 'PEP', 'TMO', 'AVGO', 'QCOM', 'TXN', 'ABT', 'ORCL',
'MCD', 'MDT', 'CRM', 'UPS', 'WMT', 'BMY', 'GILD', 'BA', 'SBUX', 'IBM',
'MRK', 'WBA', 'CAT', 'CVX', 'T', 'MS', 'LMT', 'GS', 'WFC', 'HON'
]

start_date = '2024-03-01'
end_date = '2024-09-01'

percent_returns_df = pd.DataFrame()

for ticker in stock_tickers:
stock_data = yf.download(ticker, start=start_date, end=end_date)

stock_data = stock_data.fillna(method='ffill').fillna(method='bfill')

if len(stock_data) >= 2:
stock_data['Percent Daily Return'] = stock_data['Close'].pct_change() * 100

stock_data['Ticker'] = ticker
percent_returns_df = pd.concat([percent_returns_df, stock_data[['Ticker', 'Percent Daily Return']]], axis=0)

percent_returns_df.reset_index(inplace=True)

display(percent_returns_df)

Podemos logo plotar os dados.

pivot_df = percent_returns_df.pivot(índice='Date', columns='Ticker', values='Percent Daily Return')

pivot_df = pivot_df.fillna(method='ffill').fillna(method='bfill')

plt.figure(figsize=(14, 14))
sns.lineplot(data=pivot_df, dashes=False)
plt.title('Percent Daily Returns of Top 50 Stocks')
plt.xlabel('Date')
plt.ylabel('Percent Daily Return')
plt.legend(title='Stock Ticker', bbox_to_anchor=(1.05, 1), loc='upper left')
plt.grid(True)
plt.tight_layout()

Um gráfico muito confuso, com muitas linhas e poucas informações discerníveis.Imagem do responsável)

Sua visita nos ajuda a continuar oferecendo o melhor para você! nv nw nx ny nz oa ob oc od gn bk">O Gráfico de Risco de Densidade enfrenta alguns desafios com esses dados devido à sua natureza esporádica. No entanto, ele ainda fornece insights valiosos sobre tendências gerais do mercado. Por exemplo, você pode identificar períodos em que as áreas mais densas correspondem a quedas significativas, destacando dias difíceis no mercado.

(Imagem do responsável)
plt.figure(figsize=(14, 14))
im = dense_lines(pivot_df[stock_tickers].to_numpy().T,
x=pivot_df.índice.astype('int64'),
cmap='viridis',
ny=200,
y_pad=0.1
)

plt.axhline(y=0, color='white', linestyle=':')
plt.ylim(-10, 10)

plt.show()

No entanto, descobrimos que a técnica de transparência tem um desempenho significativamente melhor para esse problema em pessoal. As Sua visita nos ajuda a continuar oferecendo o melhor para você! de mercado que mencionamos anteriormente se tornam muito mais claras e discerníveis.

(Imagem do responsável)
plt.figure(figsize=(14, 14))

for ticker in pivot_df.columns:
plt.plot(pivot_df.índice,
pivot_df[ticker],
alpha=0.1,
linewidth=4,
label=ticker,
color='black'
)

Ambas as estratégias têm seus próprios méritos e pontos fortes, e a melhor abordagem para seu trabalho pode não ser óbvia até que você tenha tentado ambas. Espero que uma dessas técnicas seja útil para seus projetos futuros. Se você tiver outras técnicas ou casos de uso para mourejar com gráficos de linhas massivas, adoraria saber mais sobre elas!

Obrigado pela leitura e tome desvelo.

Tags:

Crédito: Manancial Original

Adriano Pina

Adriano Pina

Análise de Sistemas | SEO e Google Ads | Fundador da Loja Script PHP Aqui & Marca Shoslh de tecnologia

Especialista em transformar ideias em soluções digitais e acelerar o crescimento online.

Deixe um comentário

Tem perguntas? Nos envia sua mensagem 24/7!

(17) 99100-0874

Endereço & Contato

Centro, Interior de São Paulo
E-mail: [email protected]

Links Úteis
BAIXAR APP | SCRIPT PHP AQUI
Certificados
0
    0
    Seu carrinho
    Seu carrinho está vazio

    Usamos cookies para garantir que oferecemos a melhor experiência em nosso site. 

       

    X

    Clique em um de nossos representantes abaixo para conversar no WhatsApp ou envie um email para: 📧 [email protected]

    Precisa de ajuda fale conosco?