diff --git a/docs/index.Rmd b/docs/index.Rmd index 3cef3b0..769142b 100644 --- a/docs/index.Rmd +++ b/docs/index.Rmd @@ -1,458 +1,610 @@ ---- -title: "Análise de sobrevivência" -author: "Ornella Scardua Ferreira" -output: - xaringan::moon_reader: - lib_dir: libs - seal: false - css: [xaringan-themer.css, "custom_css.css"] - nature: - ratio: '16:9' - highlightStyle: github - highlightLines: true - countIncrementalSlides: false ---- -class: middle, center, inverse - -# Análise de sobrevivência - -.large[### Curso de Bioestatística utilizando o R] - -***** - -####


Ornella Scardua Ferreira -#### `r fontawesome::fa("square-envelope", fill = "#ffffff")` [ornscar@gmail.com](ornscar@gmail.com) `r fontawesome::fa("github", fill = "#ffffff")` [@ornscar](https://github.com/ornscar) `r fontawesome::fa("twitter", fill = "#ffffff")` [@ornscar](https://twitter.com/ornscar) - -```{r setup, include=FALSE} -options(htmltools.dir.version = FALSE) - -knitr::opts_chunk$set(warning = FALSE, message = FALSE) -``` - -```{r xaringan-themer, include=FALSE, warning=FALSE} -library(xaringanthemer) - -red <- "#C0392B" -light_red <- "#FFF5F4" -gray <- "#333333" -dark_yellow <- "#EFBE43" - -style_duo( - # colors - primary_color = light_red, - secondary_color = red, - header_color = gray, - text_color = gray, - code_inline_color = colorspace::lighten(gray), - text_bold_color = colorspace::lighten(gray), - link_color = dark_yellow, - title_slide_text_color = dark_yellow, - # fonts - header_font_google = google_font("Martel", "300", "400"), - text_font_google = google_font("Lato"), - code_font_google = google_font("Fira Mono") -) -``` - ---- -class: middle, center, partial-bg - -.pull-left[ -### Sobre mim - -```{r echo=FALSE, fig.align ='center', out.width="75%"} -knitr::include_graphics("img/perfil.png") -``` -] - -.pull-right[ -






-Amo gráficos como amo cavalos. Gosto de música ruim e de cinema (bom). Sou apaixonada pelo Botafogo e pelo Bayern de Munique. Prefiro Vila Velha a qualquer lugar no mundo. Não tenho sonhos, mas um dia espero ver a Palestina livre. -] - ---- - -### Cronograma - -- Aplicação no `r fontawesome::fa("r-project", fill = "#333333")`: - - - Kaplan-Meier (K-M); - - - Teste de Log-Rank; - - - Modelo de Cox: ajuste, taxas de falha e resíduos de Shoenfeld. - -
- -- Pacotes `r fontawesome::fa("r-project", fill = "#333333")`: - -> `survival`: ajustar modelo de sobrevivência não paramétrico e modelo de Cox; - -> `survminer`: construir curvas de K-M, aplicar Teste de Log-Rank e construir gráficos de resíduos de Shoenfeld. - ---- - -### Os dados - -- Registros de **câncer de intestino** oriundos do banco do Registro Hospitalar de Câncer (RHC) do Estado de São Paulo, datados entre os anos de 2000 a 2020. - -- **764 pacientes** diagnosticados com câncer de intestino e **7 variáveis**, a saber: - -> `escolaridade`: analfabeto, fund. incompleto, fund. completo, ens. médio, superior; - -> `faixa_etaria`: <=50, >50; - -> `sexo`: feminino, masculino; - -> `atendimento_diagnostico`: convênio, particular, sus; - -> `estadiamento_clinico`: I, II, III, IV; - -> `status`: 0 (censura), 1 (falha); - -> `tempo_meses`: tempo, em meses, até o óbito pelo câncer de intestino. - -- **Objetivo**: investigar se características de sexo, faixa etária, escolaridade, categoria de atendimento e o estadiamento clínico da doença do paciente afetam o tempo de sobreviência até o óbito pelo câncer de intestino. - ---- - -- No `r fontawesome::fa("r-project", fill = "#333333")`: - -```{r} -# carregando os dados - -d_cint <- readr::read_csv("dados/intestino.csv", show_col_types = FALSE) - -# panorama da base de dados - -dplyr::glimpse(d_cint) #<< -``` - ---- -class: middle, center, inverse - -## Kaplan-Meier e Log-Rank - ---- - -#### Verificando censuras: - -```{r} -library(survival) - -# checando as 10 primeiras observações - -head(Surv(time = d_cint$tempo_meses, event = d_cint$status), n = 100) #<< -``` - -
-.left[ -Observação: nessa base, em particular, são 474 censuras e 290 falhas. -] - ---- - -#### Construindo curvas de sobrevivências baseada no estimador de K-M: - -.pull-left[ -```{r g1, paged.print=FALSE, eval=FALSE} -# ajustar modelo não paramétrico baseado no estimador k-m -# k-m geral - -km_geral <- survfit( - Surv(time = tempo_meses, event = status) ~ 1, - data = d_cint -) - -# curva de k-m geral - -library(survminer) - -ggsurvplot(km_geral, data = d_cint) #<< -``` -] - -.pull-right[ -```{r g1-out, ref.label="g1", echo=FALSE, message=FALSE} -``` -] - ---- - -.pull-left[ -```{r g2, paged.print=FALSE, eval=FALSE} -ggsurvplot( - km_geral, data = d_cint, - conf.int.style = "step" #<< -) -``` -] - -.pull-right[ -```{r g2-out, ref.label="g2", echo=FALSE, message=FALSE} -``` -] - ---- - -.pull-left[ -```{r g3, paged.print=FALSE, eval=FALSE} -ggsurvplot( - km_geral, data = d_cint, - conf.int.style = "step", - legend = "none" #<< -) -``` -] - -.pull-right[ -```{r g3-out, ref.label="g3", echo=FALSE, message=FALSE} -``` -] - ---- - -.pull-left[ -```{r g4, paged.print=FALSE, eval=FALSE} -ggsurvplot( - km_geral, data = d_cint, - conf.int.style = "step", - legend = "none", - surv.median.line = "hv" #<< -) -``` -] - -.pull-right[ -```{r g4-out, ref.label="g4", echo=FALSE, message=FALSE} -``` -] - ---- - -.pull-left[ -```{r g5, paged.print=FALSE, eval=FALSE} -ggsurvplot( - km_geral, data = d_cint, - conf.int.style = "step", - legend = "none", - surv.median.line = "hv", - fun = "pct" #<< -) -``` -] - -.pull-right[ -```{r g5-out, ref.label="g5", echo=FALSE, message=FALSE} -``` -] - ---- - -.pull-left[ -```{r g6, paged.print=FALSE, eval=FALSE} -ggsurvplot( - km_geral, data = d_cint, - conf.int.style = "step", - legend = "none", - surv.median.line = "hv", - fun = "pct", - ylab = "Probabilidade de sobrevida (%)", #<< - xlab = "Tempo (em meses)" #<< -) -``` - -
-.left[ -Conclusão: indivíduos que sobreviveram ao câncer de intestino até aproximadamente o nono ano têm probabilidade de continuar vivo estabilizada em torno de 47%. -] -] - -.pull-right[ -```{r g6-out, ref.label="g6", echo=FALSE, message=FALSE} -``` -] - ---- - -#### Mas talvez o interesse esteja em comparar as curvas de sobrevida entre grupos... - -.pull-left[ -```{r g7, paged.print=FALSE, eval=FALSE} -# ajustar modelo não paramétrico baseado no estimador k-m -# k-m categoria de atendimento - -km_atend <- survfit( - Surv(time = tempo_meses, event = status) ~ atendimento_diagnostico, - data = d_cint -) - -# curva de k-m, por categoria de atendimento - -ggsurvplot( #<< - km_atend, data = d_cint, #<< - fun = "pct", #<< - ylab = "Probabilidade de sobrevida (%)", #<< - xlab = "Tempo (em meses)", #<< -) #<< -``` -] - -.pull-right[ -```{r g7-out, ref.label="g7", echo=FALSE, message=FALSE} -``` -] - ---- - -.pull-left[ -```{r g8, paged.print=FALSE, eval=FALSE} -ggsurvplot( - km_atend, data = d_cint, - fun = "pct", - ylab = "Probabilidade de sobrevida (%)", - xlab = "Tempo (em meses)", - legend.title = "Categoria de atendimento", #<< - legend.labs = c("Convenio", "Particular", "SUS") #<< -) -``` -] - -.pull-right[ -```{r g8-out, ref.label="g8", echo=FALSE, message=FALSE} -``` -] - ---- - -.pull-left[ -```{r g9, paged.print=FALSE, eval=FALSE} -ggsurvplot( - km_atend, data = d_cint, - fun = "pct", - ylab = "Probabilidade de sobrevida (%)", - xlab = "Tempo (em meses)", - legend.title = "Categoria de atendimento", - legend.labs = c("Convenio", "Particular", "SUS"), - pval = TRUE, pval.size = 3 #<< -) -``` -] - -.pull-right[ -```{r g9-out, ref.label="g9", echo=FALSE, message=FALSE} -``` -] - ---- - -.pull-left[ -```{r g10, paged.print=FALSE, eval=FALSE} -ggsurvplot( - km_atend, data = d_cint, - fun = "pct", - ylab = "Probabilidade de sobrevida (%)", - xlab = "Tempo (em meses)", - legend.title = "Categoria de atendimento", - legend.labs = c("Convenio", "Particular", "SUS"), - pval = TRUE, pval.size = 3, - risk.table = TRUE #<< -) -``` - -
-.left[ -Conclusão: a categoria de atendimento do paciente parecem afetar o tempo de sobrevida até o óbito pelo câncer de intestino, uma vez que p=0,00036. Pelo gráfico, podemos observar que indivíduos que foram atendidos pelo Sistema Único de Saúde (SUS) têm probabilidade expressivamente menor de sobreviver se comparados àqueles que foram atendidos por convênio ou de forma particular. -] -
-.left[ -SUGESTÃO! Reproduza as curvas de K-M para as outras variáveis da base de dados. -] -] - -.pull-right[ -```{r g10-out, ref.label="g10", echo=FALSE, message=FALSE} -``` -] - ---- -class: middle, center, inverse - -## Modelo de Cox - ---- - -#### Supondo taxas de falhas proporcionais, ajustamos o modelo semi-paramétrico de Cox: - -```{r} -# ajuste - -mod_cox <- coxph( - Surv(time = tempo_meses, event = status) ~ escolaridade + faixa_etaria + sexo + - atendimento_diagnostico + estadiamento_clinico, - data = d_cint -) -``` - ---- - -#### Mas antes de verificar as estimativas, vamos averiguar se, de fato, há riscos proporcionais... - -.pull-left[ -```{r g11, paged.print=FALSE, eval=FALSE} -# teste de riscos proporcionais - -teste_rp <- cox.zph(mod_cox) - -# graficos de residuos de shoenfeld - -ggcoxzph( #<< - teste_rp, #<< - point.alpha = 0.6, #<< - point.col = "#000000" #<< -) #<< -``` - -
-.left[ -Conclusão: ao observar os gráficos dos resíduos padronizados de Shoenfeld, atestamos a premissa de proporcionalidade pois não existem tendências claras ao longo do tempo. Além disso, podemos verificar que os testes global e para cada uma das covariáveis em análise apresentaram evidências que não permitem a rejeição da hipótese nula de riscos proporcionais, dado que todos os valores-p foram superiores a 0,05. -] -] - -.pull-right[ -```{r g11-out, ref.label="g11", echo=FALSE, message=FALSE} -``` -] - ---- - -#### Agora sim, podemos confiar nas estimativas do nosso modelo: - -```{r} -# resumo do modelo - -summary(mod_cox) #<< -``` - ---- - -#### Conclusões ao nível de significância de 5%: - -- Ser analfabeto, ser atendido pelo SUS e ter o tumor classificado nos estadios III ou IV aumentam o risco de morte entre pessoas diagnosticadas com câncer de intestino. Ao contrário do que acontece se o paciente tem ensino superior, quando o risco de vir a óbito diminui. - -- Ao considerar as demais covariáveis constantes, também concluímos que o risco de morte por câncer de intestino entre os pacientes com estadiamento IV é cerca de 5 vezes o risco de morte entre os pacientes em que o tumor foi classificado com estadio I. Sem contar se o paciente foi atendido pelo SUS, cuja categoria é capaz de aumentar em duas vezes o risco de óbito em comparação a se o atendimento tivesse sido feito por meio de convênio. - ---- -class: middle, center, inverse - -# Meu obrigada! - - -slides criados via pacote R: - -[**xaringan**](https://github.com/yihui/xaringan)
-[gadenbuie/xaringanthemer](https://github.com/gadenbuie/xaringanthemer) - -o chakra vem de [remark.js](https://remarkjs.com), [**knitr**](http://yihui.name/knitr) e [R Markdown](https://rmarkdown.rstudio.com). - - +--- +title: "Análise de sobrevivência" +author: "Ornella Scardua Ferreira" +output: + xaringan::moon_reader: + lib_dir: libs + seal: false + css: [xaringan-themer.css, "custom_css.css"] + nature: + ratio: '16:9' + highlightStyle: github + highlightLines: true + countIncrementalSlides: false +--- +class: middle, center, inverse + +# Análise de sobrevivência + +.large[### Curso de Bioestatística utilizando o R] + +***** + +####


Ornella Scardua Ferreira +#### `r fontawesome::fa("square-envelope", fill = "#ffffff")` [ornscar@gmail.com](ornscar@gmail.com) `r fontawesome::fa("github", fill = "#ffffff")` [@ornscar](https://github.com/ornscar) `r fontawesome::fa("twitter", fill = "#ffffff")` [@ornscar](https://twitter.com/ornscar) + +```{r setup, include=FALSE} +options(htmltools.dir.version = FALSE) + +knitr::opts_chunk$set(warning = FALSE, message = FALSE) +``` + +```{r xaringan-themer, include=FALSE, warning=FALSE} +library(xaringanthemer) + +red <- "#C0392B" +light_red <- "#FFF5F4" +gray <- "#333333" +dark_yellow <- "#EFBE43" + +style_duo( + # colors + primary_color = light_red, + secondary_color = red, + header_color = gray, + text_color = gray, + code_inline_color = colorspace::lighten(gray), + text_bold_color = colorspace::lighten(gray), + link_color = dark_yellow, + title_slide_text_color = dark_yellow, + # fonts + header_font_google = google_font("Martel", "300", "400"), + text_font_google = google_font("Lato"), + code_font_google = google_font("Fira Mono") +) +``` + +--- +class: middle, center, partial-bg + +.pull-left[ +### Sobre mim + +```{r echo=FALSE, fig.align ='center', out.width="75%"} +knitr::include_graphics("img/perfil.png") +``` +] + +.pull-right[ +






+Amo gráficos como amo cavalos. Gosto de música ruim e de cinema (bom). Sou apaixonada pelo Botafogo e pelo Bayern de Munique. Prefiro Vila Velha a qualquer lugar no mundo. Não tenho sonhos, mas um dia espero ver a Palestina livre. +] + +--- + +### Cronograma + +- Aplicação no `r fontawesome::fa("r-project", fill = "#333333")`: + + - Kaplan-Meier (K-M); + + - Teste de Log-Rank; + + - Modelo de Cox: ajuste, taxas de falha e resíduos de Schoenfeld. + +
+ +- Pacotes `r fontawesome::fa("r-project", fill = "#333333")`: + +> `survival`: ajustar modelo de sobrevivência não paramétrico e modelo de Cox; + +> `survminer`: construir curvas de K-M, aplicar Teste de Log-Rank e construir gráficos de resíduos de Shoenfeld. + +--- + +### Os dados + +- Registros de **câncer de intestino** oriundos do banco do Registro Hospitalar de Câncer (RHC) do Estado de São Paulo, datados entre os anos de 2000 a 2020. + +- **764 pacientes** diagnosticados com câncer de intestino e **7 variáveis**, a saber: + +> `escolaridade`: analfabeto, fund. incompleto, fund. completo, ens. médio, superior; + +> `faixa_etaria`: <=50, >50; + +> `sexo`: feminino, masculino; + +> `atendimento_diagnostico`: convênio, particular, sus; + +> `estadiamento_clinico`: I, II, III, IV; + +> `status`: 0 (censura), 1 (falha); + +> `tempo_meses`: tempo, em meses, até o óbito pelo câncer de intestino. + +- **Objetivo**: investigar se características de sexo, faixa etária, escolaridade, categoria de atendimento e o estadiamento clínico da doença do paciente afetam o tempo de sobreviência até o óbito pelo câncer de intestino. + +--- + +- No `r fontawesome::fa("r-project", fill = "#333333")`: + +```{r} +# carregando os dados + +d_cint <- readr::read_csv("dados/intestino.csv", show_col_types = FALSE) + +# panorama da base de dados + +dplyr::glimpse(d_cint) #<< +``` + +--- +class: middle, center, inverse + +## Kaplan-Meier e Log-Rank + +--- + +#### Verificando censuras: + +```{r} +library(survival) + +# checando as 100 primeiras observações + +head(Surv(time = d_cint$tempo_meses, event = d_cint$status), n = 100) #<< +``` + +
+.left[ +Observação: nessa base, em particular, são 474 censuras e 290 falhas. +] + +--- + +#### Construindo curvas de sobrevivência baseadas no estimador de K-M: + +.pull-left[ +```{r g1, paged.print=FALSE, eval=FALSE} +# ajustar modelo não parametrico baseado +# no estimador k-m + +km_geral <- survfit( + Surv(time = tempo_meses, event = status) ~ 1, + data = d_cint +) + +# curva de k-m geral + +library(survminer) + +ggsurvplot(km_geral, data = d_cint) #<< +``` +] + +.pull-right[ +```{r g1-out, ref.label="g1", echo=FALSE, message=FALSE} +``` +] + +--- + +.pull-left[ +```{r g2, paged.print=FALSE, eval=FALSE} +ggsurvplot( + km_geral, data = d_cint, + conf.int.style = "step" #<< +) +``` +] + +.pull-right[ +```{r g2-out, ref.label="g2", echo=FALSE, message=FALSE} +``` +] + +--- + +.pull-left[ +```{r g3, paged.print=FALSE, eval=FALSE} +ggsurvplot( + km_geral, data = d_cint, + conf.int.style = "step", + legend = "none" #<< +) +``` +] + +.pull-right[ +```{r g3-out, ref.label="g3", echo=FALSE, message=FALSE} +``` +] + +--- + +.pull-left[ +```{r g4, paged.print=FALSE, eval=FALSE} +ggsurvplot( + km_geral, data = d_cint, + conf.int.style = "step", + legend = "none", + surv.median.line = "hv" #<< +) +``` +] + +.pull-right[ +```{r g4-out, ref.label="g4", echo=FALSE, message=FALSE} +``` +] + +--- + +.pull-left[ +```{r g5, paged.print=FALSE, eval=FALSE} +ggsurvplot( + km_geral, data = d_cint, + conf.int.style = "step", + legend = "none", + surv.median.line = "hv", + fun = "pct" #<< +) +``` +] + +.pull-right[ +```{r g5-out, ref.label="g5", echo=FALSE, message=FALSE} +``` +] + +--- + +.pull-left[ +```{r g6, paged.print=FALSE, eval=FALSE} +ggsurvplot( + km_geral, data = d_cint, + conf.int.style = "step", + legend = "none", + surv.median.line = "hv", + fun = "pct", + ylab = "Probabilidade de sobrevida (%)", #<< + xlab = "Tempo (em meses)" #<< +) +``` + +
+.left[ +Conclusão: cerca de 50% dos indivíduos ainda estarão vivos após, aproximadamente, 97 meses. +] +] + +.pull-right[ +```{r g6-out, ref.label="g6", echo=FALSE, message=FALSE} +``` +] + +--- + +#### Mas talvez o interesse esteja em comparar as curvas de sobrevida entre grupos... + +- Categoria de atendimento; + +.pull-left[ +```{r g7, paged.print=FALSE, eval=FALSE} +# ajustar modelo não parametrico baseado +# no estimador k-m + +km_atend <- survfit( + Surv(time = tempo_meses, event = status) ~ atendimento_diagnostico, + data = d_cint +) + +# curvas de k-m, por categoria de atendimento + +ggsurvplot( #<< + km_atend, data = d_cint, #<< + fun = "pct", #<< + ylab = "Probabilidade de sobrevida (%)", #<< + xlab = "Tempo (em meses)", #<< +) #<< +``` +] + +.pull-right[ +```{r g7-out, ref.label="g7", echo=FALSE, message=FALSE} +``` +] + +--- + +.pull-left[ +```{r g8, paged.print=FALSE, eval=FALSE} +ggsurvplot( + km_atend, data = d_cint, + fun = "pct", + ylab = "Probabilidade de sobrevida (%)", + xlab = "Tempo (em meses)", + legend.title = "Categoria de atendimento:", #<< + legend.labs = c("Convênio", "Particular", "SUS") #<< +) +``` +] + +.pull-right[ +```{r g8-out, ref.label="g8", echo=FALSE, message=FALSE} +``` +] + +--- + +.pull-left[ +```{r g14, paged.print=FALSE, eval=FALSE} +ggsurvplot( + km_atend, data = d_cint, + fun = "pct", + ylab = "Probabilidade de sobrevida (%)", + xlab = "Tempo (em meses)", + legend.title = "Categoria de atendimento:", + legend.labs = c("Convênio", "Particular", "SUS"), + palette = "jco" #<< +) +``` +] + +.pull-right[ +```{r g14-out, ref.label="g14", echo=FALSE, message=FALSE} +``` +] + +--- + +.pull-left[ +```{r g9, paged.print=FALSE, eval=FALSE} +ggsurvplot( + km_atend, data = d_cint, + fun = "pct", + ylab = "Probabilidade de sobrevida (%)", + xlab = "Tempo (em meses)", + legend.title = "Categoria de atendimento:", + legend.labs = c("Convênio", "Particular", "SUS"), + palette = "jco", + pval = TRUE, pval.size = 5 #<< +) +``` +] + +.pull-right[ +```{r g9-out, ref.label="g9", echo=FALSE, message=FALSE} +``` +] + +--- + +.pull-left[ +```{r g10, paged.print=FALSE, eval=FALSE} +ggsurvplot( + km_atend, data = d_cint, + fun = "pct", + ylab = "Probabilidade de sobrevida (%)", + xlab = "Tempo (em meses)", + legend.title = "Categoria de atendimento:", + legend.labs = c("Convênio", "Particular", "SUS"), + palette = "jco", + pval = TRUE, pval.size = 5, + risk.table = TRUE #<< +) +``` +] + +.pull-right[ +```{r g10-out, ref.label="g10", echo=FALSE, message=FALSE} +``` +] + +--- + +.pull-left[ +```{r g13, paged.print=FALSE, eval=FALSE} +ggsurvplot( + km_atend, data = d_cint, + fun = "pct", + ylab = "Probabilidade de sobrevida (%)", + xlab = "Tempo (em meses)", + legend.title = "Categoria de atendimento:", + legend.labs = c("Convênio", "Particular", "SUS"), + palette = "jco", + pval = TRUE, pval.size = 5, + risk.table = TRUE, + ncensor.plot = TRUE #<< +) +``` + +
+.left[ +Conclusão: a categoria de atendimento do paciente parece afetar o tempo de sobrevida até o óbito pelo câncer de intestino, uma vez que houve evidências para rejeitar a hipótese que afima que as curvas de sobrevivência são iguais (p=0,00036). Pelo gráfico, podemos observar que indivíduos que foram atendidos pelo Sistema Único de Saúde (SUS) têm probabilidade expressivamente menor de sobreviver se comparados àqueles que foram atendidos por convênio ou de forma particular. +] +] + +.pull-right[ +```{r g13-out, ref.label="g13", echo=FALSE, message=FALSE} +``` +] + +--- + +- Sexo; + +.pull-left[ +```{r g12, paged.print=FALSE, eval=FALSE} +# ajustar modelo não parametrico baseado +# no estimador k-m + +km_sexo <- survfit( + Surv(time = tempo_meses, event = status) ~ sexo, + data = d_cint +) + +# curvas de k-m, por sexo + +ggsurvplot( #<< + km_sexo, data = d_cint, #<< + fun = "pct", #<< + ylab = "Probabilidade de sobrevida (%)", #<< + xlab = "Tempo (em meses)", #<< + legend.title = "Sexo:", #<< + legend.labs = c("Feminino", "Masculino"), #<< + palette = "jco", #<< + pval = TRUE, pval.size = 5, #<< +) #<< +``` + +.left[ +O valor-p igual a 0,25 mostrado no gráfico indica que existem evidências suficientes para não rejeitar a hipótese que afirma sobre a igualdade das funções de sobrevivência. Em outras palavras, isso significa que ser do sexo feminino ou masculino não influencia no óbito por CCR, o que está em consonância com o que diz o Programa Nacional de Prevenção do Câncer, do Ministério da Saúde. +] +] + +.pull-right[ +```{r g12-out, ref.label="g12", echo=FALSE, message=FALSE} +``` +] + +--- +class: middle, center, inverse + +## Modelo de Cox + +--- + +#### Supondo taxas de falhas proporcionais, ajustamos o modelo semi-paramétrico de Cox: + +- Categoria de atendimento e sexo; + +```{r} +# ajuste + +cox1 <- coxph( #<< + Surv(time = tempo_meses, event = status) ~ sexo + atendimento_diagnostico, #<< + data = d_cint #<< +) #<< +``` + +--- + +#### Mas antes de verificar as estimativas, vamos averiguar se, de fato, há riscos proporcionais... + +.pull-left[ +```{r g15, paged.print=FALSE, eval=FALSE} +# teste de riscos proporcionais + +rp1 <- cox.zph(cox1) + +# graficos de residuos de schoenfeld + +ggcoxzph( #<< + rp1, #<< + point.alpha = 0.6, #<< + point.col = "#000000" #<< +) #<< +``` + +
+.left[ +Conclusão: ao observar os gráficos dos resíduos padronizados de Schoenfeld, atestamos a premissa de proporcionalidade das taxas de falhas pois não existem tendências claras ao longo do tempo. Além disso, podemos verificar que os testes global e para cada uma das covariáveis em análise apresentaram evidências que não permitem a rejeição da hipótese nula de riscos proporcionais, dado que todos os valores-p foram superiores a 0,05. +] +] + +.pull-right[ +```{r g15-out, ref.label="g15", echo=FALSE, message=FALSE} +``` +] + +--- + +#### Agora, sim, podemos confiar nas estimativas do nosso modelo: + +```{r} +# resumo do modelo + +summary(cox1) #<< +``` + +--- + +#### Ao nível de significância de 5%, podemos concluir que: + +- Ser do sexo feminino ou masculino não influencia na ocorrência do óbito pelo câncer de intestino, conclusão essa já apontada pelas curvas de sobrevivência via estimador de Kaplan-Meier feitas anteriormente. + +- Ser atendido pelo SUS aumenta o risco de morte em pessoas acometidas pelo câncer de intestino, dado seu parâmetro estimado positivo (1,077). + +- Ao considerar as demais covariáveis constantes, podemos dizer que o paciente que foi atendido pelo SUS é capaz de aumentar em quase três vezes o risco de óbito pelo câncer de intestino em comparação a se o atendimento tivesse sido feito por meio de convênio. + +--- + +#### Mas qual será o resultado do modelo ao incluir todas as variáveis? + +- Todas as covariáveis; + +```{r} +# ajuste + +cox2 <- coxph( #<< + Surv(time = tempo_meses, event = status) ~ escolaridade + faixa_etaria + sexo + #<< + atendimento_diagnostico + estadiamento_clinico, #<< + data = d_cint #<< +) #<< +``` + +--- + +#### O pressuposto de taxas de falhas proporcionais é atendido? + +.pull-left[ +```{r g16, paged.print=FALSE, eval=FALSE} +# teste de riscos proporcionais + +rp2 <- cox.zph(cox2) + +# graficos de residuos de schoenfeld + +ggcoxzph( #<< + rp2, #<< + point.alpha = 0.6, #<< + point.col = "#000000" #<< +) #<< +``` + +
+.left[ +Conclusão: ao observar os gráficos dos resíduos de Schoenfeld, verificamos que o pressuposto de taxas de falhas proporcionais não está sendo violado, pois os valores-p foram superiores a 0,05 (e, portanto, a hipótese nula de riscos proporcionais não foi rejeitada) e os gráficos não evidenciam tendência ao longo do tempo. +] +] + +.pull-right[ +```{r g16-out, ref.label="g16", echo=FALSE, message=FALSE} +``` +] + +--- + +#### As estimativas do modelo: + +```{r} +# resumo do modelo + +summary(cox2) #<< +``` + +--- + +#### E então, considerando um nível de significância de 5%, concluímos que: + +- Ser analfabeto, ser atendido pelo SUS e ter o tumor classificado nos estadios III ou IV aumentam o risco de morte entre pessoas diagnosticadas com câncer de intestino. Ao contrário do que acontece se o paciente tem ensino superior, quando o risco de vir a óbito diminui. + +- Ao considerar as demais covariáveis constantes, também podemos inferir que o risco de morte por câncer de intestino entre os pacientes com estadiamento IV é cerca de 5 vezes o risco de morte entre os pacientes em que o tumor foi classificado com estadio I. Sem contar se o paciente foi atendido pelo SUS, cuja categoria é capaz de aumentar em duas vezes o risco de óbito em comparação a se o atendimento tivesse sido feito por meio de convênio. + +- O maior risco de óbito por câncer de intestino em indivíduos atendidos pelo SUS, geralmente, se deve aos pacientes chegarem aos hospitais em estados mais avançados da doença. + +--- +class: middle, center, inverse + +# Meu obrigada! + + +slides criados via pacote R: + +[**xaringan**](https://github.com/yihui/xaringan)
+[gadenbuie/xaringanthemer](https://github.com/gadenbuie/xaringanthemer) + +o chakra vem de [remark.js](https://remarkjs.com), [**knitr**](http://yihui.name/knitr) e [R Markdown](https://rmarkdown.rstudio.com). + + diff --git a/docs/index.html b/docs/index.html index f38142e..30b8fd9 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,645 +1,824 @@ - - - - Análise de sobrevivência - - - - - - - - - - - - - - - - - + + + + Análise de sobrevivência + + + + + + + + + + + + + + + + + diff --git a/docs/index_files/figure-html/g1-out-1.png b/docs/index_files/figure-html/g1-out-1.png index 4aa60bd..1df51f2 100644 Binary files a/docs/index_files/figure-html/g1-out-1.png and b/docs/index_files/figure-html/g1-out-1.png differ diff --git a/docs/index_files/figure-html/g10-out-1.png b/docs/index_files/figure-html/g10-out-1.png index 6f35ea1..41e996e 100644 Binary files a/docs/index_files/figure-html/g10-out-1.png and b/docs/index_files/figure-html/g10-out-1.png differ diff --git a/docs/index_files/figure-html/g11-out-1.png b/docs/index_files/figure-html/g11-out-1.png index 04b8b65..55f4e54 100644 Binary files a/docs/index_files/figure-html/g11-out-1.png and b/docs/index_files/figure-html/g11-out-1.png differ diff --git a/docs/index_files/figure-html/g12-out-1.png b/docs/index_files/figure-html/g12-out-1.png new file mode 100644 index 0000000..bc9eb71 Binary files /dev/null and b/docs/index_files/figure-html/g12-out-1.png differ diff --git a/docs/index_files/figure-html/g13-out-1.png b/docs/index_files/figure-html/g13-out-1.png new file mode 100644 index 0000000..9a0d84c Binary files /dev/null and b/docs/index_files/figure-html/g13-out-1.png differ diff --git a/docs/index_files/figure-html/g14-out-1.png b/docs/index_files/figure-html/g14-out-1.png new file mode 100644 index 0000000..a7e23bc Binary files /dev/null and b/docs/index_files/figure-html/g14-out-1.png differ diff --git a/docs/index_files/figure-html/g15-out-1.png b/docs/index_files/figure-html/g15-out-1.png new file mode 100644 index 0000000..55f4e54 Binary files /dev/null and b/docs/index_files/figure-html/g15-out-1.png differ diff --git a/docs/index_files/figure-html/g16-out-1.png b/docs/index_files/figure-html/g16-out-1.png new file mode 100644 index 0000000..3ff4e2f Binary files /dev/null and b/docs/index_files/figure-html/g16-out-1.png differ diff --git a/docs/index_files/figure-html/g2-out-1.png b/docs/index_files/figure-html/g2-out-1.png index bcc65ed..0052f61 100644 Binary files a/docs/index_files/figure-html/g2-out-1.png and b/docs/index_files/figure-html/g2-out-1.png differ diff --git a/docs/index_files/figure-html/g3-out-1.png b/docs/index_files/figure-html/g3-out-1.png index bdbfc0a..1dfc6dc 100644 Binary files a/docs/index_files/figure-html/g3-out-1.png and b/docs/index_files/figure-html/g3-out-1.png differ diff --git a/docs/index_files/figure-html/g4-out-1.png b/docs/index_files/figure-html/g4-out-1.png index 1600af3..2eb8034 100644 Binary files a/docs/index_files/figure-html/g4-out-1.png and b/docs/index_files/figure-html/g4-out-1.png differ diff --git a/docs/index_files/figure-html/g5-out-1.png b/docs/index_files/figure-html/g5-out-1.png index 1c8ac35..b061f76 100644 Binary files a/docs/index_files/figure-html/g5-out-1.png and b/docs/index_files/figure-html/g5-out-1.png differ diff --git a/docs/index_files/figure-html/g6-out-1.png b/docs/index_files/figure-html/g6-out-1.png index 1cd2790..2fa3ae9 100644 Binary files a/docs/index_files/figure-html/g6-out-1.png and b/docs/index_files/figure-html/g6-out-1.png differ diff --git a/docs/index_files/figure-html/g7-out-1.png b/docs/index_files/figure-html/g7-out-1.png index 3f14bc8..ce8e6ed 100644 Binary files a/docs/index_files/figure-html/g7-out-1.png and b/docs/index_files/figure-html/g7-out-1.png differ diff --git a/docs/index_files/figure-html/g8-out-1.png b/docs/index_files/figure-html/g8-out-1.png index d7a1751..28d8633 100644 Binary files a/docs/index_files/figure-html/g8-out-1.png and b/docs/index_files/figure-html/g8-out-1.png differ diff --git a/docs/index_files/figure-html/g9-out-1.png b/docs/index_files/figure-html/g9-out-1.png index b555ef3..60611d7 100644 Binary files a/docs/index_files/figure-html/g9-out-1.png and b/docs/index_files/figure-html/g9-out-1.png differ diff --git a/docs/xaringan-themer.css b/docs/xaringan-themer.css index e2e114d..f04f7ea 100644 --- a/docs/xaringan-themer.css +++ b/docs/xaringan-themer.css @@ -1,287 +1,287 @@ -/* ------------------------------------------------------- - * - * !! This file was generated by xaringanthemer !! - * - * Changes made to this file directly will be overwritten - * if you used xaringanthemer in your xaringan slides Rmd - * - * Issues or likes? - * - https://github.com/gadenbuie/xaringanthemer - * - https://www.garrickadenbuie.com - * - * Need help? Try: - * - vignette(package = "xaringanthemer") - * - ?xaringanthemer::style_xaringan - * - xaringan wiki: https://github.com/yihui/xaringan/wiki - * - remarkjs wiki: https://github.com/gnab/remark/wiki - * - * Version: 0.4.2 - * - * ------------------------------------------------------- */ -@import url(https://fonts.googleapis.com/css?family=Lato&display=swap); -@import url(https://fonts.googleapis.com/css?family=Martel:300,400&display=swap); -@import url(https://fonts.googleapis.com/css?family=Fira+Mono&display=swap); - - -:root { - /* Fonts */ - --text-font-family: Lato; - --text-font-is-google: 1; - --text-font-family-fallback: -apple-system, BlinkMacSystemFont, avenir next, avenir, helvetica neue, helvetica, Ubuntu, roboto, noto, segoe ui, arial; - --text-font-base: sans-serif; - --header-font-family: Martel; - --header-font-is-google: 1; - --header-font-family-fallback: Georgia, serif; - --code-font-family: 'Fira Mono'; - --code-font-is-google: 1; - --base-font-size: 20px; - --text-font-size: 1rem; - --code-font-size: 0.9rem; - --code-inline-font-size: 1em; - --header-h1-font-size: 2.75rem; - --header-h2-font-size: 2.25rem; - --header-h3-font-size: 1.75rem; - - /* Colors */ - --text-color: #333333; - --header-color: #333333; - --background-color: #FFF5F4; - --link-color: #EFBE43; - --text-bold-color: #454545; - --code-highlight-color: rgba(255,255,0,0.5); - --inverse-text-color: #FFF5F4; - --inverse-background-color: #C0392B; - --inverse-header-color: #FFF5F4; - --inverse-link-color: #EFBE43; - --title-slide-background-color: #FFF5F4; - --title-slide-text-color: #EFBE43; - --header-background-color: #333333; - --header-background-text-color: #FFF5F4; - --primary: #FFF5F4; - --secondary: #C0392B; -} - -html { - font-size: var(--base-font-size); -} - -body { - font-family: var(--text-font-family), var(--text-font-family-fallback), var(--text-font-base); - font-weight: normal; - color: var(--text-color); -} -h1, h2, h3 { - font-family: var(--header-font-family), var(--header-font-family-fallback); - font-weight: 600; - color: var(--header-color); -} -.remark-slide-content { - background-color: var(--background-color); - font-size: 1rem; - padding: 16px 64px 16px 64px; - width: 100%; - height: 100%; -} -.remark-slide-content h1 { - font-size: var(--header-h1-font-size); -} -.remark-slide-content h2 { - font-size: var(--header-h2-font-size); -} -.remark-slide-content h3 { - font-size: var(--header-h3-font-size); -} -.remark-code, .remark-inline-code { - font-family: var(--code-font-family), Menlo, Consolas, Monaco, Liberation Mono, Lucida Console, monospace; -} -.remark-code { - font-size: var(--code-font-size); -} -.remark-inline-code { - font-size: var(--code-inline-font-size); - color: #454545; -} -.remark-slide-number { - color: #333333; - opacity: 1; - font-size: 0.9rem; -} -strong { - font-weight: bold; - color: var(--text-bold-color); -} -a, a > code { - color: var(--link-color); - text-decoration: none; -} -.footnote { - position: absolute; - bottom: 60px; - padding-right: 4em; - font-size: 0.9em; -} -.remark-code-line-highlighted { - background-color: var(--code-highlight-color); -} -.inverse { - background-color: var(--inverse-background-color); - color: var(--inverse-text-color); - -} -.inverse h1, .inverse h2, .inverse h3 { - color: var(--inverse-header-color); -} -.inverse a, .inverse a > code { - color: var(--inverse-link-color); -} -.title-slide, .title-slide h1, .title-slide h2, .title-slide h3 { - color: var(--title-slide-text-color); -} -.title-slide { - background-color: var(--title-slide-background-color); -} -.title-slide .remark-slide-number { - display: none; -} -/* Two-column layout */ -.left-column { - width: 20%; - height: 92%; - float: left; -} -.left-column h2, .left-column h3 { - color: #C0392B99; -} -.left-column h2:last-of-type, .left-column h3:last-child { - color: #C0392B; -} -.right-column { - width: 75%; - float: right; - padding-top: 1em; -} -.pull-left { - float: left; - width: 47%; -} -.pull-right { - float: right; - width: 47%; -} -.pull-right + * { - clear: both; -} -img, video, iframe { - max-width: 100%; -} -blockquote { - border-left: solid 5px #C0392B80; - padding-left: 1em; -} -.remark-slide table { - margin: auto; - border-top: 1px solid #666; - border-bottom: 1px solid #666; -} -.remark-slide table thead th { - border-bottom: 1px solid #ddd; -} -th, td { - padding: 5px; -} -.remark-slide table:not(.table-unshaded) thead, -.remark-slide table:not(.table-unshaded) tfoot, -.remark-slide table:not(.table-unshaded) tr:nth-child(even) { - background: #FFFEFD; -} -table.dataTable tbody { - background-color: var(--background-color); - color: var(--text-color); -} -table.dataTable.display tbody tr.odd { - background-color: var(--background-color); -} -table.dataTable.display tbody tr.even { - background-color: #FFFEFD; -} -table.dataTable.hover tbody tr:hover, table.dataTable.display tbody tr:hover { - background-color: rgba(255, 255, 255, 0.5); -} -.dataTables_wrapper .dataTables_length, .dataTables_wrapper .dataTables_filter, .dataTables_wrapper .dataTables_info, .dataTables_wrapper .dataTables_processing, .dataTables_wrapper .dataTables_paginate { - color: var(--text-color); -} -.dataTables_wrapper .dataTables_paginate .paginate_button { - color: var(--text-color) !important; -} - -/* Horizontal alignment of code blocks */ -.remark-slide-content.left pre, -.remark-slide-content.center pre, -.remark-slide-content.right pre { - text-align: start; - width: max-content; - max-width: 100%; -} -.remark-slide-content.left pre, -.remark-slide-content.right pre { - min-width: 50%; - min-width: min(40ch, 100%); -} -.remark-slide-content.center pre { - min-width: 66%; - min-width: min(50ch, 100%); -} -.remark-slide-content.left pre { - margin-left: unset; - margin-right: auto; -} -.remark-slide-content.center pre { - margin-left: auto; - margin-right: auto; -} -.remark-slide-content.right pre { - margin-left: auto; - margin-right: unset; -} - -/* Slide Header Background for h1 elements */ -.remark-slide-content.header_background > h1 { - display: block; - position: absolute; - top: 0; - left: 0; - width: 100%; - background: var(--header-background-color); - color: var(--header-background-text-color); - padding: 2rem 64px 1.5rem 64px; - margin-top: 0; - box-sizing: border-box; -} -.remark-slide-content.header_background { - padding-top: 7rem; -} - -@page { margin: 0; } -@media print { - .remark-slide-scaler { - width: 100% !important; - height: 100% !important; - transform: scale(1) !important; - top: 0 !important; - left: 0 !important; - } -} - -.primary { - color: var(--primary); -} -.bg-primary { - background-color: var(--primary); -} -.secondary { - color: var(--secondary); -} -.bg-secondary { - background-color: var(--secondary); -} - +/* ------------------------------------------------------- + * + * !! This file was generated by xaringanthemer !! + * + * Changes made to this file directly will be overwritten + * if you used xaringanthemer in your xaringan slides Rmd + * + * Issues or likes? + * - https://github.com/gadenbuie/xaringanthemer + * - https://www.garrickadenbuie.com + * + * Need help? Try: + * - vignette(package = "xaringanthemer") + * - ?xaringanthemer::style_xaringan + * - xaringan wiki: https://github.com/yihui/xaringan/wiki + * - remarkjs wiki: https://github.com/gnab/remark/wiki + * + * Version: 0.4.2 + * + * ------------------------------------------------------- */ +@import url(https://fonts.googleapis.com/css?family=Lato&display=swap); +@import url(https://fonts.googleapis.com/css?family=Martel:300,400&display=swap); +@import url(https://fonts.googleapis.com/css?family=Fira+Mono&display=swap); + + +:root { + /* Fonts */ + --text-font-family: Lato; + --text-font-is-google: 1; + --text-font-family-fallback: -apple-system, BlinkMacSystemFont, avenir next, avenir, helvetica neue, helvetica, Ubuntu, roboto, noto, segoe ui, arial; + --text-font-base: sans-serif; + --header-font-family: Martel; + --header-font-is-google: 1; + --header-font-family-fallback: Georgia, serif; + --code-font-family: 'Fira Mono'; + --code-font-is-google: 1; + --base-font-size: 20px; + --text-font-size: 1rem; + --code-font-size: 0.9rem; + --code-inline-font-size: 1em; + --header-h1-font-size: 2.75rem; + --header-h2-font-size: 2.25rem; + --header-h3-font-size: 1.75rem; + + /* Colors */ + --text-color: #333333; + --header-color: #333333; + --background-color: #FFF5F4; + --link-color: #EFBE43; + --text-bold-color: #454545; + --code-highlight-color: rgba(255,255,0,0.5); + --inverse-text-color: #FFF5F4; + --inverse-background-color: #C0392B; + --inverse-header-color: #FFF5F4; + --inverse-link-color: #EFBE43; + --title-slide-background-color: #FFF5F4; + --title-slide-text-color: #EFBE43; + --header-background-color: #333333; + --header-background-text-color: #FFF5F4; + --primary: #FFF5F4; + --secondary: #C0392B; +} + +html { + font-size: var(--base-font-size); +} + +body { + font-family: var(--text-font-family), var(--text-font-family-fallback), var(--text-font-base); + font-weight: normal; + color: var(--text-color); +} +h1, h2, h3 { + font-family: var(--header-font-family), var(--header-font-family-fallback); + font-weight: 600; + color: var(--header-color); +} +.remark-slide-content { + background-color: var(--background-color); + font-size: 1rem; + padding: 16px 64px 16px 64px; + width: 100%; + height: 100%; +} +.remark-slide-content h1 { + font-size: var(--header-h1-font-size); +} +.remark-slide-content h2 { + font-size: var(--header-h2-font-size); +} +.remark-slide-content h3 { + font-size: var(--header-h3-font-size); +} +.remark-code, .remark-inline-code { + font-family: var(--code-font-family), Menlo, Consolas, Monaco, Liberation Mono, Lucida Console, monospace; +} +.remark-code { + font-size: var(--code-font-size); +} +.remark-inline-code { + font-size: var(--code-inline-font-size); + color: #454545; +} +.remark-slide-number { + color: #333333; + opacity: 1; + font-size: 0.9rem; +} +strong { + font-weight: bold; + color: var(--text-bold-color); +} +a, a > code { + color: var(--link-color); + text-decoration: none; +} +.footnote { + position: absolute; + bottom: 60px; + padding-right: 4em; + font-size: 0.9em; +} +.remark-code-line-highlighted { + background-color: var(--code-highlight-color); +} +.inverse { + background-color: var(--inverse-background-color); + color: var(--inverse-text-color); + +} +.inverse h1, .inverse h2, .inverse h3 { + color: var(--inverse-header-color); +} +.inverse a, .inverse a > code { + color: var(--inverse-link-color); +} +.title-slide, .title-slide h1, .title-slide h2, .title-slide h3 { + color: var(--title-slide-text-color); +} +.title-slide { + background-color: var(--title-slide-background-color); +} +.title-slide .remark-slide-number { + display: none; +} +/* Two-column layout */ +.left-column { + width: 20%; + height: 92%; + float: left; +} +.left-column h2, .left-column h3 { + color: #C0392B99; +} +.left-column h2:last-of-type, .left-column h3:last-child { + color: #C0392B; +} +.right-column { + width: 75%; + float: right; + padding-top: 1em; +} +.pull-left { + float: left; + width: 47%; +} +.pull-right { + float: right; + width: 47%; +} +.pull-right + * { + clear: both; +} +img, video, iframe { + max-width: 100%; +} +blockquote { + border-left: solid 5px #C0392B80; + padding-left: 1em; +} +.remark-slide table { + margin: auto; + border-top: 1px solid #666; + border-bottom: 1px solid #666; +} +.remark-slide table thead th { + border-bottom: 1px solid #ddd; +} +th, td { + padding: 5px; +} +.remark-slide table:not(.table-unshaded) thead, +.remark-slide table:not(.table-unshaded) tfoot, +.remark-slide table:not(.table-unshaded) tr:nth-child(even) { + background: #FFFEFD; +} +table.dataTable tbody { + background-color: var(--background-color); + color: var(--text-color); +} +table.dataTable.display tbody tr.odd { + background-color: var(--background-color); +} +table.dataTable.display tbody tr.even { + background-color: #FFFEFD; +} +table.dataTable.hover tbody tr:hover, table.dataTable.display tbody tr:hover { + background-color: rgba(255, 255, 255, 0.5); +} +.dataTables_wrapper .dataTables_length, .dataTables_wrapper .dataTables_filter, .dataTables_wrapper .dataTables_info, .dataTables_wrapper .dataTables_processing, .dataTables_wrapper .dataTables_paginate { + color: var(--text-color); +} +.dataTables_wrapper .dataTables_paginate .paginate_button { + color: var(--text-color) !important; +} + +/* Horizontal alignment of code blocks */ +.remark-slide-content.left pre, +.remark-slide-content.center pre, +.remark-slide-content.right pre { + text-align: start; + width: max-content; + max-width: 100%; +} +.remark-slide-content.left pre, +.remark-slide-content.right pre { + min-width: 50%; + min-width: min(40ch, 100%); +} +.remark-slide-content.center pre { + min-width: 66%; + min-width: min(50ch, 100%); +} +.remark-slide-content.left pre { + margin-left: unset; + margin-right: auto; +} +.remark-slide-content.center pre { + margin-left: auto; + margin-right: auto; +} +.remark-slide-content.right pre { + margin-left: auto; + margin-right: unset; +} + +/* Slide Header Background for h1 elements */ +.remark-slide-content.header_background > h1 { + display: block; + position: absolute; + top: 0; + left: 0; + width: 100%; + background: var(--header-background-color); + color: var(--header-background-text-color); + padding: 2rem 64px 1.5rem 64px; + margin-top: 0; + box-sizing: border-box; +} +.remark-slide-content.header_background { + padding-top: 7rem; +} + +@page { margin: 0; } +@media print { + .remark-slide-scaler { + width: 100% !important; + height: 100% !important; + transform: scale(1) !important; + top: 0 !important; + left: 0 !important; + } +} + +.primary { + color: var(--primary); +} +.bg-primary { + background-color: var(--primary); +} +.secondary { + color: var(--secondary); +} +.bg-secondary { + background-color: var(--secondary); +} +