---
title: 
date: 
output: 
  html_document:
    toc: true
    toc_float: true
    theme: lumen
    highlight: tango
    code_folding: show
    code_download: true
    toc_depth: 3
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE, message = FALSE, warning = FALSE)
# Carregar todos os pacotes necessários
library(dplyr)
library(lubridate)
library(purrr)
library(rbcb)
library(highcharter)
library(xts)
library(zoo)
```

```{r}
# Carregar bibliotecas
library(readxl)
library(dplyr)
library(lubridate)
library(highcharter)

# --- 1. IMPORTAR DADOS DO EXCEL ---

# Carregar dados da taxa de desocupação sazonalizada (coluna F1:F200)
dados_pnad_sa <- read_excel("Dados_Nairu_Completo.xlsx", range = "F1:F200", col_names = FALSE)

# Processar dados da PNAD sazonalizada
pnad_sa_valores <- dados_pnad_sa[-1, , drop = FALSE]
names(pnad_sa_valores) <- "pnad_sa"
pnad_sa_valores$pnad_sa <- as.numeric(pnad_sa_valores$pnad_sa)
pnad_sa_valores <- na.omit(pnad_sa_valores)

# Carregar dados do NAIRU (coluna H1:H200)
dados_nairu <- read_excel("Dados_Nairu_Completo.xlsx", range = "H1:H200", col_names = FALSE)

# Processar dados do NAIRU
nairu_valores <- dados_nairu[-1, , drop = FALSE]
names(nairu_valores) <- "nairu"
nairu_valores$nairu <- as.numeric(nairu_valores$nairu)
nairu_valores <- na.omit(nairu_valores)

# --- 2. AJUSTAR NÚMERO DE OBSERVAÇÕES ---

num_observacoes <- min(nrow(pnad_sa_valores), nrow(nairu_valores))
pnad_sa_valores <- pnad_sa_valores[1:num_observacoes, , drop = FALSE]
nairu_valores <- nairu_valores[1:num_observacoes, , drop = FALSE]

# --- 3. CRIAR DATAS ---

data_inicio <- as.Date("2012-03-01")
data_final <- as.Date("2025-09-01")
meses_totais <- (year(data_final) - year(data_inicio)) * 12 + 
  (month(data_final) - month(data_inicio)) + 1

datas <- seq(from = data_inicio, by = "month", length.out = meses_totais)

# --- 4. CRIAR DATAFRAME COMBINADO ---

dados_ajustados <- data.frame(
  data = datas,
  pnad_sa = pnad_sa_valores$pnad_sa[1:meses_totais],
  nairu = nairu_valores$nairu[1:meses_totais]
)

# --- 5. CRIAR SÉRIES TEMPORAIS PARA HIGHCHARTS ---

series_desocupacao_ajustada <- list(
  name = "Taxa de Desocupação Sazonalizada",
  data = lapply(1:nrow(dados_ajustados), function(i) {
    list(
      datetime_to_timestamp(dados_ajustados$data[i]),
      dados_ajustados$pnad_sa[i]
    )
  }),
  color = "#02023c",
  type = "line"
)

series_nairu <- list(
  name = "NAIRU",
  data = lapply(1:nrow(dados_ajustados), function(i) {
    list(
      datetime_to_timestamp(dados_ajustados$data[i]),
      dados_ajustados$nairu[i]
    )
  }),
  color = "#Feb712",
  type = "line"
)

# --- 6. CRIAR GRÁFICO HIGHCHARTS STOCK ---

highchart(type = "stock") %>%
  hc_chart(style = list(fontFamily = "Arial")) %>%
  hc_title(text = "Taxa de Desocupação Sazonalizada e Estimativa NAIRU") %>%
  hc_subtitle(text = "Fonte: PNAD (Pesquisa Nacional por Amostra de Domicílios)") %>%
  hc_xAxis(type = "datetime", 
           dateTimeLabelFormats = list(month = "%b/%Y"),
           title = list(text = "")) %>%
  hc_yAxis(
    title = list(text = "Percentual (%)"),
    labels = list(format = "{value}%"),
    min = 4,
    max = 16,
    tickInterval = 2,
    opposite = FALSE,
    startOnTick = TRUE,
    endOnTick = TRUE,
    showFirstLabel = TRUE,
    showLastLabel = TRUE,
    ceiling = 16,
    floor = 4
  ) %>%
  hc_series(series_desocupacao_ajustada, series_nairu) %>%
  hc_legend(align = "center", 
            verticalAlign = "top",
            layout = "horizontal") %>%
  hc_tooltip(shared = TRUE,
             crosshairs = TRUE,
             valueDecimals = 2,
             pointFormat = "<span style='color:{point.color}'>\u25CF</span> {series.name}: <b>{point.y}%</b><br/>") %>%
  hc_credits(enabled = TRUE,
             text = "Gráfico de confecção própria: IbMacro BH") %>%
  hc_exporting(enabled = TRUE) %>%
  hc_rangeSelector(
    enabled = TRUE,
    inputEnabled = FALSE,
    buttons = list(
      list(type = 'month', count = 6, text = '6m'),
      list(type = 'year', count = 1, text = '1Y'),
      list(type = 'year', count = 2, text = '2Y'),
      list(type = 'year', count = 5, text = '5Y'),
      list(type = 'all', text = 'All')
    ),
    selected = 4
  ) %>%
  hc_navigator(enabled = TRUE) %>%
  hc_scrollbar(enabled = TRUE)
```

