Analysis Sarcopenia and PC Needs

Author

JA Calvache

Test upload

Análisis de datos de sarcopenia y necesidades de cuidados paliativos (SPARC)

Análisis exploratorio de datos

Objetivo. Estimar la asociación entre sarcopenia medida mediante el instrumento SARCF y las necesidades holísticas no satisfechas de cuidados paliativos determinadas mediante SPARC, en pacientes con enfermedades crónicas no transmisibles oncológicas y no oncológicas del Hospital universitario San José entre el 2021 y 2022. Este objetivo es de naturaleza exploratoria y no causal.

Objetivos Específicos

  • Describir las características sociodemográficas de los pacientes con enfermedades no transmisibles crónicas oncológicas y no oncológicas.
  • Describir la prevalencia de sarcopenia, definida por un puntaje en la escala SARC-F >4 puntos en pacientes con enfermedades crónicas no transmisibles.
  • Determinar la prevalencia de necesidades holísticas no satisfechas existentes en la población de pacientes con enfermedades crónicas no transmisibles y estratificar la estimación por cada uno de los 8 dominios de la herramienta SPARC-Sp.
  • Diseñar una estrategia de visualización apropiada para el reporte de las necesidades holísticas no satisfechas valoradas mediante la herramienta SPARC-Sp.

Pregunta de Investigación (PECO): ¿En los pacientes con enfermedades no transmisibles, existe asociación entre la presencia de sarcopenia medida a través del instrumento SARC-F y las necesidades no satisfechas o no resueltas, determinadas con el instrumento SPARC?

Preparacion de los datos - Librerias

library(readxl) 
library(dplyr) 

Attaching package: 'dplyr'
The following objects are masked from 'package:stats':

    filter, lag
The following objects are masked from 'package:base':

    intersect, setdiff, setequal, union
library(ggplot2) 
library(tidyr)

#install.packages("summarytools")
library(summarytools)
Warning in fun(libname, pkgname): couldn't connect to display
"/private/tmp/com.apple.launchd.CTefnj5j6o/org.xquartz:0"
system might not have X11 capabilities; in case of errors when using dfSummary(), set st_options(use.x11 = FALSE)
#install.packages("gtsummary")
library(gtsummary)

#install.packages("performance")
library(performance)
#install.packages("see", dependencies = TRUE)
library(see)

#install.packages("fmsb")
library(fmsb)

#install.packages("broom.helpers")
library(broom.helpers)

Attaching package: 'broom.helpers'
The following objects are masked from 'package:gtsummary':

    all_categorical, all_continuous, all_contrasts, all_dichotomous,
    all_interaction, all_intercepts
library(forcats)

Importando datos y summary inicial

data <- read_excel("~/Rdocs/sarcopenia/SPARC_data_labels.xlsx")
New names:
• `` -> `...2`
• `` -> `...19`
• `` -> `...20`
• `` -> `...21`
• `` -> `...47`
• `` -> `...48`
• `` -> `...49`
• `` -> `...50`
• `` -> `...51`
• `` -> `...52`
• `` -> `...53`
• `` -> `...95`
• `` -> `...96`
• `` -> `...97`
• `` -> `...98`
• `` -> `...99`
• `` -> `...100`
• `` -> `...101`
• `` -> `...102`
• `` -> `...103`
• `` -> `...104`
• `` -> `...105`
• `` -> `...106`
• `` -> `...107`
• `` -> `...108`
data_orig <- data
dfSummary(data)
Data Frame Summary  
data  
Dimensions: 546 x 108  
Duplicates: 0  

--------------------------------------------------------------------------------------------------------------------------
No    Variable      Stats / Values                      Freqs (% of Valid)    Graph                  Valid      Missing   
----- ------------- ----------------------------------- --------------------- ---------------------- ---------- ----------
1     id            Mean (sd) : 273.5 (157.8)           546 distinct values   : : : : : : : : : :    546        0         
      [numeric]     min < med < max:                                          : : : : : : : : : :    (100.0%)   (0.0%)    
                    1 < 273.5 < 546                                           : : : : : : : : : :                         
                    IQR (CV) : 272.5 (0.6)                                    : : : : : : : : : :                         
                                                                              : : : : : : : : : :                         

2     ...2          Mean (sd) : 270.7 (157.5)           537 distinct values   : : . . : . . . . :    546        0         
      [numeric]     min < med < max:                                          : : : : : : : : : :    (100.0%)   (0.0%)    
                    1 < 271 < 543                                             : : : : : : : : : :                         
                    IQR (CV) : 272.5 (0.6)                                    : : : : : : : : : :                         
                                                                              : : : : : : : : : :                         

3     docum         Mean (sd) : 103627098 (502017358)   522 distinct values   :                      546        0         
      [numeric]     min < med < max:                                          :                      (100.0%)   (0.0%)    
                    287468 < 25495570 < 10074221744                           :                                           
                    IQR (CV) : 24011516 (4.8)                                 :                                           
                                                                              :                                           

4     fecha         min : 2021-11-09                    109 distinct values                     :    546        0         
      [POSIXct,     med : 2022-06-09                                                            :    (100.0%)   (0.0%)    
      POSIXt]       max : 2022-07-13                                                          : :                         
                    range : 8m 4d                                                 .         . : :                         
                                                                              . . : . . . : : : :                         

5     sitio         1. Hospital San José Popayán        545 (99.8%)           IIIIIIIIIIIIIIIIIII    546        0         
      [character]   2. Otro hospital                      1 ( 0.2%)                                  (100.0%)   (0.0%)    

6     invest        1. Camilo Cortes                     79 (14.5%)           II                     546        0         
      [character]   2. Cindy Mendieta                   239 (43.8%)           IIIIIIII               (100.0%)   (0.0%)    
                    3. Isabela Bolaños                   57 (10.4%)           II                                          
                    4. Javier Orozco                     97 (17.8%)           III                                         
                    5. Karen Rivera                      74 (13.6%)           II                                          

7     sitio_hos     1. Atención ambulatoria de O         63 (11.5%)           II                     546        0         
      [character]   2. Atención ambulatoria del           4 ( 0.7%)                                  (100.0%)   (0.0%)    
                    3. Otra área hospitalaria            69 (12.6%)           II                                          
                    4. Salas de hospitalización         410 (75.1%)           IIIIIIIIIIIIIII                             

8     etnia         1. Afrocolombiano                    28 ( 5.1%)           I                      546        0         
      [character]   2. Blanco                            71 (13.0%)           II                     (100.0%)   (0.0%)    
                    3. Indígena                          36 ( 6.6%)           I                                           
                    4. Mestizo                          411 (75.3%)           IIIIIIIIIIIIIII                             

9     genero        1. Femenino                         329 (60.3%)           IIIIIIIIIIII           546        0         
      [character]   2. Masculino                        217 (39.7%)           IIIIIII                (100.0%)   (0.0%)    

10    edad          Mean (sd) : 65 (14.8)               72 distinct values              .   :        546        0         
      [numeric]     min < med < max:                                                    : : : .      (100.0%)   (0.0%)    
                    18 < 66 < 95                                                      : : : : :                           
                    IQR (CV) : 20 (0.2)                                             . : : : : :                           
                                                                              . . : : : : : : : :                         

11    civil         1. Casado                           198 (36.3%)           IIIIIII                546        0         
      [character]   2. Separado                          24 ( 4.4%)                                  (100.0%)   (0.0%)    
                    3. Soltero                          105 (19.2%)           III                                         
                    4. Unión libre                      136 (24.9%)           IIII                                        
                    5. Viudo                             83 (15.2%)           III                                         

12    religion      1. Agnóstico                          4 ( 0.7%)                                  546        0         
      [character]   2. Ateo                               3 ( 0.5%)                                  (100.0%)   (0.0%)    
                    3. Católico                         450 (82.4%)           IIIIIIIIIIIIIIII                            
                    4. Cristiano                         63 (11.5%)           II                                          
                    5. Otro                              26 ( 4.8%)                                                       

13    g_religion    Mean (sd) : 3.7 (1.1)               0 :   9 ( 1.6%)                              546        0         
      [numeric]     min < med < max:                    1 :   8 ( 1.5%)                              (100.0%)   (0.0%)    
                    0 < 4 < 5                           2 :  53 ( 9.7%)       I                                           
                    IQR (CV) : 2 (0.3)                  3 : 171 (31.3%)       IIIIII                                      
                                                        4 : 147 (26.9%)       IIIII                                       
                                                        5 : 158 (28.9%)       IIIII                                       

14    educa         1. Bachillerato                     166 (30.4%)           IIIIII                 546        0         
      [character]   2. Ninguno                           88 (16.1%)           III                    (100.0%)   (0.0%)    
                    3. Primaria                         230 (42.1%)           IIIIIIII                                    
                    4. Técnico                           31 ( 5.7%)           I                                           
                    5. Universitario                     31 ( 5.7%)           I                                           

15    ocupa         1. AMA DE CASA                      221 (40.5%)           IIIIIIII               546        0         
      [character]   2. CESANTE                           80 (14.7%)           II                     (100.0%)   (0.0%)    
                    3. AGRICULTOR                        36 ( 6.6%)           I                                           
                    4. PENSIONADO                        35 ( 6.4%)           I                                           
                    5. COMERCIANTE                       21 ( 3.8%)                                                       
                    6. AGRICULTURA                       20 ( 3.7%)                                                       
                    7. INDEPENDIENTE                     13 ( 2.4%)                                                       
                    8. DESEMPLEADO                        9 ( 1.6%)                                                       
                    9. OFICIOS VARIOS                     8 ( 1.5%)                                                       
                    10. PENSIONADA                        8 ( 1.5%)                                                       
                    [ 70 others ]                        95 (17.4%)           III                                         

16    procede       1. Rural                            202 (37.0%)           IIIIIII                546        0         
      [character]   2. Urbana                           344 (63.0%)           IIIIIIIIIIII           (100.0%)   (0.0%)    

17    convivi       Mean (sd) : 3.5 (1.6)               11 distinct values    : : :                  546        0         
      [numeric]     min < med < max:                                          : : :                  (100.0%)   (0.0%)    
                    1 < 3 < 13                                                : : :                                       
                    IQR (CV) : 2 (0.5)                                        : : : :                                     
                                                                              : : : : :                                   

18    transpor      1. 0.5                              115 (21.1%)           IIII                   546        0         
      [character]   2. 1                                 88 (16.1%)           III                    (100.0%)   (0.0%)    
                    3. 0.25                              59 (10.8%)           II                                          
                    4. 0.17                              46 ( 8.4%)           I                                           
                    5. 0.08                              32 ( 5.9%)           I                                           
                    6. 0.3                               27 ( 4.9%)                                                       
                    7. 2                                 23 ( 4.2%)                                                       
                    8. 1.5                               21 ( 3.8%)                                                       
                    9. 0.2                               17 ( 3.1%)                                                       
                    10. 0.33                             16 ( 2.9%)                                                       
                    [ 31 others ]                       102 (18.7%)           III                                         

19    ...19         1. Algunas veces                    135 (24.7%)           IIII                   546        0         
      [character]   2. Nunca                             42 ( 7.7%)           I                      (100.0%)   (0.0%)    
                    3. Siempre                          369 (67.6%)           IIIIIIIIIIIII                               

20    ...20         1. Algunas veces                    152 (27.8%)           IIIII                  546        0         
      [character]   2. Nunca                             31 ( 5.7%)           I                      (100.0%)   (0.0%)    
                    3. Siempre                          363 (66.5%)           IIIIIIIIIIIII                               

21    ...21         1. Algunas veces                    212 (38.8%)           IIIIIII                546        0         
      [character]   2. Nunca                             58 (10.6%)           II                     (100.0%)   (0.0%)    
                    3. Siempre                          276 (50.5%)           IIIIIIIIII                                  

22    dx1           1. HIPERTENSION ARTERIAL            195 (35.7%)           IIIIIII                546        0         
      [character]   2. DIABETES MELLITUS                 42 ( 7.7%)           I                      (100.0%)   (0.0%)    
                    3. DIABETES MELLITUS TIPO II         34 ( 6.2%)           I                                           
                    4. OSTEOPOROSIS                      16 ( 2.9%)                                                       
                    5. HIPERTENSIÓN ARTERIAL             15 ( 2.7%)                                                       
                    6. ENFERMEDAD PULMONAR OBSTR         11 ( 2.0%)                                                       
                    7. CANCER DE PROSTATA                10 ( 1.8%)                                                       
                    8. ENFERMEDAD RENAL CRONICA           8 ( 1.5%)                                                       
                    9. CANCER DE MAMA                     5 ( 0.9%)                                                       
                    10. DIABETES MELLITUS TIPO II         5 ( 0.9%)                                                       
                    [ 156 others ]                      205 (37.5%)           IIIIIII                                     

23    dx2           1. HIPERTENSION ARTERIAL             54 (14.5%)           II                     372        174       
      [character]   2. ENFERMEDAD RENAL CRONICA          18 ( 4.8%)                                  (68.1%)    (31.9%)   
                    3. DIABETES MELLITUS                 16 ( 4.3%)                                                       
                    4. HIPOTIROIDISMO                    11 ( 3.0%)                                                       
                    5. DIABETES MELLITUS TIPO II          9 ( 2.4%)                                                       
                    6. ENFERMEDAD PULMONAR OBSTR          7 ( 1.9%)                                                       
                    7. OSTEOPOROSIS                       7 ( 1.9%)                                                       
                    8. ASMA                               4 ( 1.1%)                                                       
                    9. GASTRITIS                          4 ( 1.1%)                                                       
                    10. OBESIDAD                          4 ( 1.1%)                                                       
                    [ 216 others ]                      238 (64.0%)           IIIIIIIIIIII                                

24    dx_oms        1. Diabetes mellitus                102 (21.0%)           IIII                   485        61        
      [character]   2. Enfermedad cardiovascular        260 (53.6%)           IIIIIIIIII             (88.8%)    (11.2%)   
                    3. Enfermedad neoplásica            104 (21.4%)           IIII                                        
                    4. Enfermedad respiratoria c         19 ( 3.9%)                                                       

25    dx_oms_ca     1. Cancer                           104 (19.0%)           III                    546        0         
      [character]   2. No oncologica                    442 (81.0%)           IIIIIIIIIIIIIIII       (100.0%)   (0.0%)    

26    fecha_dx      Mean (sd) : 2011.5 (10.4)           42 distinct values                      :    546        0         
      [numeric]     min < med < max:                                                            :    (100.0%)   (0.0%)    
                    1960 < 2014 < 2022                                                        : :                         
                    IQR (CV) : 11 (0)                                                         : :                         
                                                                                    . . . : : : :                         

27    charlson      Mean (sd) : 1.2 (1.2)               0 : 169 (31.0%)       IIIIII                 546        0         
      [numeric]     min < med < max:                    1 : 173 (31.7%)       IIIIII                 (100.0%)   (0.0%)    
                    0 < 1 < 8                           2 : 148 (27.1%)       IIIII                                       
                    IQR (CV) : 2 (1)                    3 :  39 ( 7.1%)       I                                           
                                                        4 :   9 ( 1.6%)                                                   
                                                        6 :   6 ( 1.1%)                                                   
                                                        7 :   1 ( 0.2%)                                                   
                                                        8 :   1 ( 0.2%)                                                   

28    tratam        1. No                                36 ( 6.6%)           I                      546        0         
      [character]   2. Si tengo tratamiento             510 (93.4%)           IIIIIIIIIIIIIIIIII     (100.0%)   (0.0%)    

29    onco          1. No                               426 (78.0%)           IIIIIIIIIIIIIII        546        0         
      [character]   2. Si                               120 (22.0%)           IIII                   (100.0%)   (0.0%)    

30    onco_estad    1. Desconocido                      32 (26.7%)            IIIII                  120        426       
      [character]   2. I                                 7 ( 5.8%)            I                      (22.0%)    (78.0%)   
                    3. II                               18 (15.0%)            III                                         
                    4. III                              18 (15.0%)            III                                         
                    5. IV                               33 (27.5%)            IIIII                                       
                    6. No aplica                        12 (10.0%)            II                                          

31    onco_meta     1. Ausentes                         33 (27.5%)            IIIII                  120        426       
      [character]   2. Desconocido                      51 (42.5%)            IIIIIIII               (22.0%)    (78.0%)   
                    3. No aplica                         3 ( 2.5%)                                                        
                    4. Presentes                        33 (27.5%)            IIIII                                       

32    onco_qx       1. Checked                           53 ( 9.7%)           I                      546        0         
      [character]   2. Unchecked                        493 (90.3%)           IIIIIIIIIIIIIIIIII     (100.0%)   (0.0%)    

33    onco_radio    1. Checked                           20 ( 3.7%)                                  546        0         
      [character]   2. Unchecked                        526 (96.3%)           IIIIIIIIIIIIIIIIIII    (100.0%)   (0.0%)    

34    onco_cp       1. Checked                           26 ( 4.8%)                                  546        0         
      [character]   2. Unchecked                        520 (95.2%)           IIIIIIIIIIIIIIIIIII    (100.0%)   (0.0%)    

35    onco_cx       1. Checked                           44 ( 8.1%)           I                      546        0         
      [character]   2. Unchecked                        502 (91.9%)           IIIIIIIIIIIIIIIIII     (100.0%)   (0.0%)    

36    onco_inm      1. Checked                           10 ( 1.8%)                                  546        0         
      [character]   2. Unchecked                        536 (98.2%)           IIIIIIIIIIIIIIIIIII    (100.0%)   (0.0%)    

37    onco_alt      1. Checked                           19 ( 3.5%)                                  546        0         
      [character]   2. Unchecked                        527 (96.5%)           IIIIIIIIIIIIIIIIIII    (100.0%)   (0.0%)    

38    onco_no       1. Checked                           25 ( 4.6%)                                  546        0         
      [character]   2. Unchecked                        521 (95.4%)           IIIIIIIIIIIIIIIIIII    (100.0%)   (0.0%)    

39    ecog          1. 0                                11 ( 9.2%)            I                      120        426       
      [character]   2. 1                                32 (26.7%)            IIIII                  (22.0%)    (78.0%)   
                    3. 2                                30 (25.0%)            IIIII                                       
                    4. 3                                32 (26.7%)            IIIII                                       
                    5. 4                                13 (10.8%)            II                                          
                    6. Desconocido                       1 ( 0.8%)                                                        
                    7. No aplica                         1 ( 0.8%)                                                        

40    karno         Mean (sd) : 74.5 (18.6)             14 distinct values                . :        546        0         
      [numeric]     min < med < max:                                                      : :        (100.0%)   (0.0%)    
                    10 < 80 < 100                                                       : : :                             
                    IQR (CV) : 30 (0.2)                                             : : : : : :                           
                                                                              . . : : : : : : :                           

41    sarc1         1. Alguna                           190 (34.8%)           IIIIII                 546        0         
      [character]   2. Mucha o incapaz                  150 (27.5%)           IIIII                  (100.0%)   (0.0%)    
                    3. Ninguna                          206 (37.7%)           IIIIIII                                     

42    sarc2         1. Alguna                           168 (30.8%)           IIIIII                 546        0         
      [character]   2. Mucha, usando auxiliares         132 (24.2%)           IIII                   (100.0%)   (0.0%)    
                    3. Ninguna                          246 (45.1%)           IIIIIIIII                                   

43    sarc3         1. Alguna                           181 (33.2%)           IIIIII                 546        0         
      [character]   2. Mucha, o incapaz sin ayud        117 (21.4%)           IIII                   (100.0%)   (0.0%)    
                    3. Ninguna                          248 (45.4%)           IIIIIIIII                                   

44    sarc4         1. Alguna                           214 (39.2%)           IIIIIII                546        0         
      [character]   2. Mucha o incapaz                  177 (32.4%)           IIIIII                 (100.0%)   (0.0%)    
                    3. Ninguna                          155 (28.4%)           IIIII                                       

45    sarc5         1. 1 a 3 caídas                     199 (36.4%)           IIIIIII                546        0         
      [character]   2. 4 o más caídas                    22 ( 4.0%)                                  (100.0%)   (0.0%)    
                    3. Ninguna                          325 (59.5%)           IIIIIIIIIII                                 

46    sarcf         All NA's                                                                         0          546       
      [logical]                                                                                      (0.0%)     (100.0%)  

47    ...47         1. No                                70 (12.8%)           II                     546        0         
      [character]   2. Si                               476 (87.2%)           IIIIIIIIIIIIIIIII      (100.0%)   (0.0%)    

48    ...48         1. No                               314 (57.5%)           IIIIIIIIIII            546        0         
      [character]   2. Si                               232 (42.5%)           IIIIIIII               (100.0%)   (0.0%)    

49    ...49         1. No                               276 (50.5%)           IIIIIIIIII             546        0         
      [character]   2. Si                               270 (49.5%)           IIIIIIIII              (100.0%)   (0.0%)    

50    ...50         1. No                               399 (73.1%)           IIIIIIIIIIIIII         546        0         
      [character]   2. Si                               147 (26.9%)           IIIII                  (100.0%)   (0.0%)    

51    ...51         1. No                               462 (84.6%)           IIIIIIIIIIIIIIII       546        0         
      [character]   2. Si                                84 (15.4%)           III                    (100.0%)   (0.0%)    

52    ...52         1. No                                49 ( 9.0%)           I                      544        2         
      [character]   2. Si                               495 (91.0%)           IIIIIIIIIIIIIIIIII     (99.6%)    (0.4%)    

53    ...53         1. No                               167 (53.5%)           IIIIIIIIII             312        234       
      [character]   2. Si                               145 (46.5%)           IIIIIIIII              (57.1%)    (42.9%)   

54    s2            1. Bastante                         188 (34.4%)           IIIIII                 546        0         
      [character]   2. Mucho                            124 (22.7%)           IIII                   (100.0%)   (0.0%)    
                    3. Nada                             123 (22.5%)           IIII                                        
                    4. Un poco                          111 (20.3%)           IIII                                        

55    s3            1. Bastante                          53 ( 9.7%)           I                      546        0         
      [character]   2. Mucho                             10 ( 1.8%)                                  (100.0%)   (0.0%)    
                    3. Nada                             326 (59.7%)           IIIIIIIIIII                                 
                    4. Un poco                          157 (28.8%)           IIIII                                       

56    s4            1. Bastante                          64 (11.7%)           II                     546        0         
      [character]   2. Mucho                             27 ( 4.9%)                                  (100.0%)   (0.0%)    
                    3. Nada                             293 (53.7%)           IIIIIIIIII                                  
                    4. Un poco                          162 (29.7%)           IIIII                                       

57    s5            1. Bastante                          88 (16.2%)           III                    544        2         
      [character]   2. Mucho                             31 ( 5.7%)           I                      (99.6%)    (0.4%)    
                    3. Nada                             284 (52.2%)           IIIIIIIIII                                  
                    4. Un poco                          141 (25.9%)           IIIII                                       

58    s6            1. Bastante                          27 ( 4.9%)                                  546        0         
      [character]   2. Mucho                              4 ( 0.7%)                                  (100.0%)   (0.0%)    
                    3. Nada                             474 (86.8%)           IIIIIIIIIIIIIIIII                           
                    4. Un poco                           41 ( 7.5%)           I                                           

59    s7            1. Bastante                          80 (14.7%)           II                     546        0         
      [character]   2. Mucho                             16 ( 2.9%)                                  (100.0%)   (0.0%)    
                    3. Nada                             310 (56.8%)           IIIIIIIIIII                                 
                    4. Un poco                          140 (25.6%)           IIIII                                       

60    s8            1. Bastante                          75 (13.8%)           II                     545        1         
      [character]   2. Mucho                             13 ( 2.4%)                                  (99.8%)    (0.2%)    
                    3. Nada                             311 (57.1%)           IIIIIIIIIII                                 
                    4. Un poco                          146 (26.8%)           IIIII                                       

61    s9            1. Bastante                          78 (14.3%)           II                     546        0         
      [character]   2. Mucho                             21 ( 3.8%)                                  (100.0%)   (0.0%)    
                    3. Nada                             287 (52.6%)           IIIIIIIIII                                  
                    4. Un poco                          160 (29.3%)           IIIII                                       

62    s10           1. Bastante                          52 ( 9.5%)           I                      546        0         
      [character]   2. Mucho                             22 ( 4.0%)                                  (100.0%)   (0.0%)    
                    3. Nada                             353 (64.7%)           IIIIIIIIIIII                                
                    4. Un poco                          119 (21.8%)           IIII                                        

63    s11           1. Bastante                          99 (18.1%)           III                    546        0         
      [character]   2. Mucho                             36 ( 6.6%)           I                      (100.0%)   (0.0%)    
                    3. Nada                             232 (42.5%)           IIIIIIII                                    
                    4. Un poco                          179 (32.8%)           IIIIII                                      

64    s12           1. Bastante                          45 ( 8.2%)           I                      546        0         
      [character]   2. Mucho                             20 ( 3.7%)                                  (100.0%)   (0.0%)    
                    3. Nada                             380 (69.6%)           IIIIIIIIIIIII                               
                    4. Un poco                          101 (18.5%)           III                                         

65    s13           1. Bastante                         156 (28.6%)           IIIII                  545        1         
      [character]   2. Mucho                             48 ( 8.8%)           I                      (99.8%)    (0.2%)    
                    3. Nada                             167 (30.6%)           IIIIII                                      
                    4. Un poco                          174 (31.9%)           IIIIII                                      

66    s14           1. Bastante                         181 (33.2%)           IIIIII                 546        0         
      [character]   2. Mucho                             55 (10.1%)           II                     (100.0%)   (0.0%)    
                    3. Nada                             118 (21.6%)           IIII                                        
                    4. Un poco                          192 (35.2%)           IIIIIII                                     

67    s15           1. Bastante                         134 (24.5%)           IIII                   546        0         
      [character]   2. Mucho                             63 (11.5%)           II                     (100.0%)   (0.0%)    
                    3. Nada                             174 (31.9%)           IIIIII                                      
                    4. Un poco                          175 (32.1%)           IIIIII                                      

68    s16           1. Bastante                         101 (18.5%)           III                    546        0         
      [character]   2. Mucho                             24 ( 4.4%)                                  (100.0%)   (0.0%)    
                    3. Nada                             223 (40.8%)           IIIIIIII                                    
                    4. Un poco                          198 (36.3%)           IIIIIII                                     

69    s17           1. Bastante                         105 (19.3%)           III                    545        1         
      [character]   2. Mucho                             26 ( 4.8%)                                  (99.8%)    (0.2%)    
                    3. Nada                             263 (48.3%)           IIIIIIIII                                   
                    4. Un poco                          151 (27.7%)           IIIII                                       

70    s18           1. Bastante                         124 (22.7%)           IIII                   546        0         
      [character]   2. Mucho                             35 ( 6.4%)           I                      (100.0%)   (0.0%)    
                    3. Nada                             207 (37.9%)           IIIIIII                                     
                    4. Un poco                          180 (33.0%)           IIIIII                                      

71    s19           1. Bastante                          22 ( 4.0%)                                  546        0         
      [character]   2. Mucho                             11 ( 2.0%)                                  (100.0%)   (0.0%)    
                    3. Nada                             426 (78.0%)           IIIIIIIIIIIIIII                             
                    4. Un poco                           87 (15.9%)           III                                         

72    s20           1. Bastante                          91 (16.7%)           III                    546        0         
      [character]   2. Mucho                             32 ( 5.9%)           I                      (100.0%)   (0.0%)    
                    3. Nada                             297 (54.4%)           IIIIIIIIII                                  
                    4. Un poco                          126 (23.1%)           IIII                                        

73    s21           1. Bastante                         122 (22.3%)           IIII                   546        0         
      [character]   2. Mucho                             32 ( 5.9%)           I                      (100.0%)   (0.0%)    
                    3. Nada                             199 (36.4%)           IIIIIII                                     
                    4. Un poco                          193 (35.3%)           IIIIIII                                     

74    s22           1. Bastante                         149 (27.3%)           IIIII                  546        0         
      [character]   2. Mucho                             58 (10.6%)           II                     (100.0%)   (0.0%)    
                    3. Nada                             221 (40.5%)           IIIIIIII                                    
                    4. Un poco                          118 (21.6%)           IIII                                        

75    s23           1. Bastante                         157 (28.8%)           IIIII                  546        0         
      [character]   2. Mucho                             41 ( 7.5%)           I                      (100.0%)   (0.0%)    
                    3. Nada                             143 (26.2%)           IIIII                                       
                    4. Un poco                          205 (37.5%)           IIIIIII                                     

76    s24           1. Bastante                         135 (24.7%)           IIII                   546        0         
      [character]   2. Mucho                             61 (11.2%)           II                     (100.0%)   (0.0%)    
                    3. Nada                             152 (27.8%)           IIIII                                       
                    4. Un poco                          198 (36.3%)           IIIIIII                                     

77    s25           1. Bastante                          83 (15.2%)           III                    546        0         
      [character]   2. Mucho                             19 ( 3.5%)                                  (100.0%)   (0.0%)    
                    3. Nada                             304 (55.7%)           IIIIIIIIIII                                 
                    4. Un poco                          140 (25.6%)           IIIII                                       

78    s26           1. Bastante                          55 (10.1%)           II                     546        0         
      [character]   2. Mucho                             19 ( 3.5%)                                  (100.0%)   (0.0%)    
                    3. Nada                             354 (64.8%)           IIIIIIIIIIII                                
                    4. Un poco                          118 (21.6%)           IIII                                        

79    s27           1. Bastante                          65 (11.9%)           II                     545        1         
      [character]   2. Mucho                             29 ( 5.3%)           I                      (99.8%)    (0.2%)    
                    3. Nada                             343 (62.9%)           IIIIIIIIIIII                                
                    4. Un poco                          108 (19.8%)           III                                         

80    s28           1. Bastante                          91 (16.7%)           III                    546        0         
      [character]   2. Mucho                             32 ( 5.9%)           I                      (100.0%)   (0.0%)    
                    3. Nada                             266 (48.7%)           IIIIIIIII                                   
                    4. Un poco                          157 (28.8%)           IIIII                                       

81    s29           1. Bastante                          38 ( 7.0%)           I                      546        0         
      [character]   2. Mucho                             13 ( 2.4%)                                  (100.0%)   (0.0%)    
                    3. Nada                             436 (79.9%)           IIIIIIIIIIIIIII                             
                    4. Un poco                           59 (10.8%)           II                                          

82    s30           1. Bastante                          20 ( 3.7%)                                  544        2         
      [character]   2. Mucho                              3 ( 0.6%)                                  (99.6%)    (0.4%)    
                    3. Nada                             483 (88.8%)           IIIIIIIIIIIIIIIII                           
                    4. Un poco                           38 ( 7.0%)           I                                           

83    s31           1. Bastante                          41 ( 7.5%)           I                      545        1         
      [character]   2. Mucho                             46 ( 8.4%)           I                      (99.8%)    (0.2%)    
                    3. Nada                             394 (72.3%)           IIIIIIIIIIIIII                              
                    4. Un poco                           64 (11.7%)           II                                          

84    s32           1. Bastante                          84 (15.4%)           III                    546        0         
      [character]   2. Mucho                             22 ( 4.0%)                                  (100.0%)   (0.0%)    
                    3. Nada                             281 (51.5%)           IIIIIIIIII                                  
                    4. Un poco                          159 (29.1%)           IIIII                                       

85    s33           1. Bastante                          31 ( 5.7%)           I                      546        0         
      [character]   2. Mucho                              9 ( 1.6%)                                  (100.0%)   (0.0%)    
                    3. Nada                             372 (68.1%)           IIIIIIIIIIIII                               
                    4. Un poco                          134 (24.5%)           IIII                                        

86    s34           1. Bastante                         190 (34.8%)           IIIIII                 546        0         
      [character]   2. Mucho                             73 (13.4%)           II                     (100.0%)   (0.0%)    
                    3. Nada                             151 (27.7%)           IIIII                                       
                    4. Un poco                          132 (24.2%)           IIII                                        

87    s35           1. Bastante                         172 (31.5%)           IIIIII                 546        0         
      [character]   2. Mucho                             86 (15.8%)           III                    (100.0%)   (0.0%)    
                    3. Nada                             164 (30.0%)           IIIIII                                      
                    4. Un poco                          124 (22.7%)           IIII                                        

88    s36           1. Bastante                         145 (26.6%)           IIIII                  546        0         
      [character]   2. Mucho                             86 (15.8%)           III                    (100.0%)   (0.0%)    
                    3. Nada                             181 (33.2%)           IIIIII                                      
                    4. Un poco                          134 (24.5%)           IIII                                        

89    s37           1. Bastante                          84 (15.4%)           III                    546        0         
      [character]   2. Mucho                             29 ( 5.3%)           I                      (100.0%)   (0.0%)    
                    3. Nada                             232 (42.5%)           IIIIIIII                                    
                    4. Un poco                          201 (36.8%)           IIIIIII                                     

90    s38           1. Bastante                         165 (30.2%)           IIIIII                 546        0         
      [character]   2. Mucho                             92 (16.8%)           III                    (100.0%)   (0.0%)    
                    3. Nada                             146 (26.7%)           IIIII                                       
                    4. Un poco                          143 (26.2%)           IIIII                                       

91    s39           1. Bastante                          44 ( 8.1%)           I                      546        0         
      [character]   2. Mucho                             28 ( 5.1%)           I                      (100.0%)   (0.0%)    
                    3. Nada                             373 (68.3%)           IIIIIIIIIIIII                               
                    4. Un poco                          101 (18.5%)           III                                         

92    s40           1. Bastante                          55 (10.1%)           II                     546        0         
      [character]   2. Mucho                             33 ( 6.0%)           I                      (100.0%)   (0.0%)    
                    3. Nada                             314 (57.5%)           IIIIIIIIIII                                 
                    4. Un poco                          144 (26.4%)           IIIII                                       

93    s41           1. Bastante                         123 (22.5%)           IIII                   546        0         
      [character]   2. Mucho                             53 ( 9.7%)           I                      (100.0%)   (0.0%)    
                    3. Nada                             195 (35.7%)           IIIIIII                                     
                    4. Un poco                          175 (32.1%)           IIIIII                                      

94    s42           1. Bastante                         122 (22.3%)           IIII                   546        0         
      [character]   2. Mucho                             52 ( 9.5%)           I                      (100.0%)   (0.0%)    
                    3. Nada                             209 (38.3%)           IIIIIII                                     
                    4. Un poco                          163 (29.9%)           IIIII                                       

95    ...95         1. No                               281 (51.5%)           IIIIIIIIII             546        0         
      [character]   2. Si                               265 (48.5%)           IIIIIIIII              (100.0%)   (0.0%)    

96    ...96         1. No                               251 (46.1%)           IIIIIIIII              545        1         
      [character]   2. Si                               294 (53.9%)           IIIIIIIIII             (99.8%)    (0.2%)    

97    ...97         1. No                               123 (22.5%)           IIII                   546        0         
      [character]   2. Si                               423 (77.5%)           IIIIIIIIIIIIIII        (100.0%)   (0.0%)    

98    ...98         1. No                               135 (24.7%)           IIII                   546        0         
      [character]   2. Si                               411 (75.3%)           IIIIIIIIIIIIIII        (100.0%)   (0.0%)    

99    ...99         1. No                               116 (21.3%)           IIII                   545        1         
      [character]   2. Si                               429 (78.7%)           IIIIIIIIIIIIIII        (99.8%)    (0.2%)    

100   ...100        1. No                               246 (45.2%)           IIIIIIIII              544        2         
      [character]   2. Si                               298 (54.8%)           IIIIIIIIII             (99.6%)    (0.4%)    

101   ...101        1. No                               309 (56.8%)           IIIIIIIIIII            544        2         
      [character]   2. Si                               235 (43.2%)           IIIIIIII               (99.6%)    (0.4%)    

102   ...102        1. No                               198 (64.1%)           IIIIIIIIIIII           309        237       
      [character]   2. Si                               111 (35.9%)           IIIIIII                (56.6%)    (43.4%)   

103   ...103        1. NINGUNO                           87 (23.1%)           IIII                   377        169       
      [character]   2. NO                                58 (15.4%)           III                    (69.0%)    (31.0%)   
                    3. NINGUNA                           22 ( 5.8%)           I                                           
                    4. NO. A VECES ME PREOCUPA Q          2 ( 0.5%)                                                       
                    5. ¿CÓMO VA A TERMINAR ESTO?          1 ( 0.3%)                                                       
                    6. ¿CUAL ES MI PRONTOSTICO?           1 ( 0.3%)                                                       
                    7. ¿QUÉ IMPACTO HAN TENIDO E          1 ( 0.3%)                                                       
                    8. ¿QUÉ PASA CON LA ENFERMED          1 ( 0.3%)                                                       
                    9. ¿QUE VA A PASAR CONMIGO?           1 ( 0.3%)                                                       
                    10. A LOS PACIENTES LES VULNE         1 ( 0.3%)                                                       
                    [ 202 others ]                      202 (53.6%)           IIIIIIIIII                                  

104   ...104        1. NINGUNO                          133 (46.0%)           IIIIIIIII              289        257       
      [character]   2. NINGUNA                           45 (15.6%)           III                    (52.9%)    (47.1%)   
                    3. ME GUSTARÍA SABER MÁS SOB          2 ( 0.7%)                                                       
                    4. ¿ CUÁNDO VOLVERÉ A TRABAJ          1 ( 0.3%)                                                       
                    5. ¿A FUTURO QUÉ VA A PASAR?          1 ( 0.3%)                                                       
                    6. ¿CÓMO COSTEAR LOS GASTOS           1 ( 0.3%)                                                       
                    7. ¿CÓMO QUEDÓ FUNCIONANDO M          1 ( 0.3%)                                                       
                    8. ¿CÓMO SALIERON LOS EXAMEN          1 ( 0.3%)                                                       
                    9. ¿CÓMO SALIERON LOS EXAMEN          1 ( 0.3%)                                                       
                    10. ¿COMO SERÁ LA CIRUGÍA?            1 ( 0.3%)                                                       
                    [ 102 others ]                      102 (35.3%)           IIIIIII                                     

105   ...105        1. ¿CÓMO HAN SALIDO LOS EXAM         1 ( 4.2%)                                   24         522       
      [character]   2. ¿CÓMO PUEDO CAMBIAR DE PO         1 ( 4.2%)                                   (4.4%)     (95.6%)   
                    3. ¿CUÁL ES MI DIAGNÓSTICO?          1 ( 4.2%)                                                        
                    4. ¿CUÁL VA A SER EL TRATAMI         1 ( 4.2%)                                                        
                    5. ¿CUANDO LE DARÁN SALIDA?          1 ( 4.2%)                                                        
                    6. ¿LE VAN A RETIRAR ALGUNO          1 ( 4.2%)                                                        
                    7. ¿POR QUÉ PASÓ TANTO TIEMP         1 ( 4.2%)                                                        
                    8. ¿QUE PODRÍA HACER EN LA C         1 ( 4.2%)                                                        
                    9. ¿SI EL MEDICAMENTE NO SE          1 ( 4.2%)                                                        
                    10. A DONDE LLEVO EL TENSIOME        1 ( 4.2%)                                                        
                    [ 14 others ]                       14 (58.3%)            IIIIIIIIIII                                 

106   ...106        1. ¿CUÁL ES LA MÁS QUE LE AC        1 (16.7%)             III                    6          540       
      [character]   2. CUAL ES EL PROPOSITO DE L        1 (16.7%)             III                    (1.1%)     (98.9%)   
                    3. CUAL SERIA EL PROCESO A S        1 (16.7%)             III                                         
                    4. EL PIE ESTÁ VOLANDO, NO L        1 (16.7%)             III                                         
                    5. LA TERAPEUTA LE PREOCUPAB        1 (16.7%)             III                                         
                    6. QUE TODO SER HUMANO QUE E        1 (16.7%)             III                                         

107   ...107        Mean (sd) : 5.6 (2.9)               11 distinct values            :              545        1         
      [numeric]     min < med < max:                                          .       : .   :        (99.8%)    (0.2%)    
                    0 < 6 < 10                                                :       : : : :   .                         
                    IQR (CV) : 4 (0.5)                                        :   : . : : : : : :                         
                                                                              : : : : : : : : : :                         

108   ...108        1. Complete                         545 (100.0%)          IIIIIIIIIIIIIIIIIIII   545        1         
      [character]                                                                                    (99.8%)    (0.2%)    
--------------------------------------------------------------------------------------------------------------------------

Recodificando sarc y sparc

vars1 <- c("sarc1","sarc2","sarc3","sarc4","sarc5")

data[vars1] <- lapply(data[vars1], function(x) {
  x <- as.character(x)
    recode <- c(
    "Ninguna" = 0,
    "Alguna" = 1,
    "1 a 3 caídas" = 1
  )
  x_num <- recode[x]
  x_num[is.na(x_num) & !is.na(x)] <- 2
  as.numeric(x_num)
})

vars2 <- c("s2","s3","s4","s5","s6","s7","s8","s9","s10","s11",
           "s12","s13","s14","s15","s16","s17","s18","s19","s20",
           "s21","s22","s23","s24","s25","s26","s27","s28","s29",
           "s30","s31","s32","s33","s34","s35","s36","s37","s38",
           "s39","s40","s41","s42")

data[vars2] <- lapply(data[vars2], function(x) {
  x <- as.character(x)
  x[x == "Nada"]      <- 0
  x[x == "Un poco"]   <- 1
  x[x == "Bastante"]  <- 2
  x[x == "Mucho"]     <- 3
  as.numeric(x)
})

data$genero <- factor(data$genero)
data$procede <- factor(data$procede)
data$educa <- factor(data$educa)
data$dx_oms_ca <- factor(data$dx_oms_ca)


levels(data$dx_oms_ca)
[1] "Cancer"        "No oncologica"
data$dx_oms_ca <- relevel(data$dx_oms_ca, ref = "No oncologica")

data$educa <- relevel(data$educa, ref = "Ninguno")
data$genero <- relevel(data$genero, ref = "Masculino")
data$procede <- relevel(data$procede, ref = "Urbana")

Calculando nuevas variables (sarc_tot y sparc_dominios)

data <- data %>%
  rowwise() %>%
  mutate(sarc_tot = sum(c_across(all_of(vars1)), na.rm = TRUE
  ))

data <- data %>%
  rowwise() %>%
  mutate(sparc_fis = sum(c_across(s2:s22), na.rm = TRUE),
         sparc_psic = sum(c_across(s23:s31), na.rm = TRUE),
         sparc_rel = sum(c_across(s32:s33), na.rm = TRUE),
         sparc_inde = sum(c_across(s34:s36), na.rm = TRUE),
         sparc_fami = sum(c_across(s37:s40), na.rm = TRUE),
         sparc_tra = sum(c_across(s41:s42), na.rm = TRUE)
  )

vars3 <- c("sparc_fis", "sparc_psic", "sparc_rel", 
          "sparc_inde", "sparc_fami", "sparc_tra")

summary(data[, vars3])
   sparc_fis       sparc_psic       sparc_rel       sparc_inde   
 Min.   : 0.00   Min.   : 0.000   Min.   :0.000   Min.   :0.000  
 1st Qu.:10.00   1st Qu.: 2.250   1st Qu.:0.000   1st Qu.:1.000  
 Median :16.00   Median : 5.000   Median :1.000   Median :4.000  
 Mean   :16.93   Mean   : 5.945   Mean   :1.128   Mean   :3.918  
 3rd Qu.:22.00   3rd Qu.: 8.000   3rd Qu.:2.000   3rd Qu.:6.000  
 Max.   :50.00   Max.   :26.000   Max.   :6.000   Max.   :9.000  
   sparc_fami       sparc_tra    
 Min.   : 0.000   Min.   :0.000  
 1st Qu.: 1.000   1st Qu.:0.000  
 Median : 3.000   Median :2.000  
 Mean   : 3.353   Mean   :2.093  
 3rd Qu.: 5.000   3rd Qu.:4.000  
 Max.   :12.000   Max.   :6.000  
colSums(data[, vars3], na.rm = TRUE)
 sparc_fis sparc_psic  sparc_rel sparc_inde sparc_fami  sparc_tra 
      9243       3246        616       2139       1831       1143 

##Ponderacion de los dominios de SPARC a 1

data <- data %>%
  mutate(
    sparc_fis_p  = sparc_fis  / 63 * 100,
    sparc_psic_p = sparc_psic / 27 * 100,
    sparc_rel_p  = sparc_rel  / 6 * 100,
    sparc_inde_p = sparc_inde / 9 * 100,
    sparc_fami_p = sparc_fami / 12 * 100,
    sparc_tra_p  = sparc_tra  / 6 * 100
  )

data <- data %>%
  mutate(
    across(
      ends_with("_p"),
      ~ round(.x, 1)
    )
  )

summary(data[, c("sparc_fis_p","sparc_psic_p","sparc_rel_p", "sparc_inde_p","sparc_fami_p","sparc_tra_p")])
  sparc_fis_p     sparc_psic_p     sparc_rel_p      sparc_inde_p   
 Min.   : 0.00   Min.   : 0.000   Min.   :  0.00   Min.   :  0.00  
 1st Qu.:15.90   1st Qu.: 8.325   1st Qu.:  0.00   1st Qu.: 11.10  
 Median :25.40   Median :18.500   Median : 16.70   Median : 44.40  
 Mean   :26.87   Mean   :22.005   Mean   : 18.81   Mean   : 43.53  
 3rd Qu.:34.90   3rd Qu.:29.600   3rd Qu.: 33.30   3rd Qu.: 66.70  
 Max.   :79.40   Max.   :96.300   Max.   :100.00   Max.   :100.00  
  sparc_fami_p     sparc_tra_p    
 Min.   :  0.00   Min.   :  0.00  
 1st Qu.:  8.30   1st Qu.:  0.00  
 Median : 25.00   Median : 33.30  
 Mean   : 27.95   Mean   : 34.89  
 3rd Qu.: 41.70   3rd Qu.: 66.70  
 Max.   :100.00   Max.   :100.00  
par(las = 2)
boxplot(
  data[, c("sparc_fis_p","sparc_psic_p","sparc_rel_p",
           "sparc_inde_p","sparc_fami_p","sparc_tra_p")],
  main = "Boxplot de dominios SPARC ponderados",
  ylab = "Puntaje ponderado",
  names = c("D Físico", "D Psicológico", "D Relacional",
            "D Independencia", "D Familiar", "D Tratamiento"),
  col = c("lightblue", "lightgreen", "lightpink", 
          "lightyellow", "lightgray", "lightcoral")
)

# Etiquetas más claras
data_long <- data %>%
  select(sparc_fis_p, sparc_psic_p, sparc_rel_p,
         sparc_inde_p, sparc_fami_p, sparc_tra_p) %>%
  pivot_longer(
    cols = everything(),
    names_to = "dominio",
    values_to = "puntaje"
  ) %>%
  mutate(
    dominio = factor(dominio,
      levels = c("sparc_fis_p","sparc_psic_p","sparc_rel_p",
                 "sparc_inde_p","sparc_fami_p","sparc_tra_p"),
      labels = c("Físico", "Psicológico", "Relacional",
                 "Independencia", "Familiar", "Tratamiento")
    )
  )

# Paleta tipo Lancet
lancet_cols <- c("#1F77B4","#D62728","#2CA02C",
                 "#9467BD","#FF7F0E","#8C564B")

# Violin plot
ggplot(data_long, aes(x = dominio, y = puntaje, fill = dominio)) +
  geom_violin(trim = FALSE, color = "black", size = 0.3) +
  geom_boxplot(width = 0.08, fill = "white", outlier.shape = NA, size = 0.3) +
  
  scale_fill_manual(values = lancet_cols) +
  
  labs(
    x = "",
    y = "Puntaje ponderado",
    title = NULL
  ) +
  
  theme_classic(base_size = 12) +
  theme(
    legend.position = "none",
    axis.text.x = element_text(angle = 45, hjust = 1),
    axis.line = element_line(color = "black")
  )
Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
ℹ Please use `linewidth` instead.

summary(data$charlson)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  0.000   0.000   1.000   1.233   2.000   8.000 
hist(data$charlson, main = "Histograma de Charlson", xlab = "Charlson", col = "lightblue", breaks = 10)

Objetivo 1. Describir las características sociodemográficas de los pacientes con enfermedades no transmisibles crónicas oncológicas y no oncológicas.

data <- data %>%
  mutate(transpor = as.numeric(as.character(transpor)))

data %>%
  tbl_summary(include = c(genero, etnia, edad, civil, religion, educa, procede, convivi, transpor),
              by=dx_oms_ca, missing = "no", sort = all_categorical() ~ "frequency") %>%
              add_n() %>%
              add_overall()
Characteristic N Overall
N = 5461
No oncologica
N = 4421
Cancer
N = 1041
genero 546


    Femenino
329 (60%) 274 (62%) 55 (53%)
    Masculino
217 (40%) 168 (38%) 49 (47%)
etnia 546


    Mestizo
411 (75%) 335 (76%) 76 (73%)
    Blanco
71 (13%) 56 (13%) 15 (14%)
    Indígena
36 (6.6%) 27 (6.1%) 9 (8.7%)
    Afrocolombiano
28 (5.1%) 24 (5.4%) 4 (3.8%)
edad 546 66 (56, 76) 67 (57, 76) 65 (49, 74)
civil 546


    Casado
198 (36%) 154 (35%) 44 (42%)
    Unión libre
136 (25%) 117 (26%) 19 (18%)
    Soltero
105 (19%) 80 (18%) 25 (24%)
    Viudo
83 (15%) 69 (16%) 14 (13%)
    Separado
24 (4.4%) 22 (5.0%) 2 (1.9%)
religion 546


    Católico
450 (82%) 370 (84%) 80 (77%)
    Cristiano
63 (12%) 43 (9.7%) 20 (19%)
    Otro
26 (4.8%) 24 (5.4%) 2 (1.9%)
    Agnóstico
4 (0.7%) 3 (0.7%) 1 (1.0%)
    Ateo
3 (0.5%) 2 (0.5%) 1 (1.0%)
educa 546


    Primaria
230 (42%) 192 (43%) 38 (37%)
    Bachillerato
166 (30%) 136 (31%) 30 (29%)
    Ninguno
88 (16%) 71 (16%) 17 (16%)
    Técnico
31 (5.7%) 21 (4.8%) 10 (9.6%)
    Universitario
31 (5.7%) 22 (5.0%) 9 (8.7%)
procede 546


    Urbana
344 (63%) 271 (61%) 73 (70%)
    Rural
202 (37%) 171 (39%) 31 (30%)
convivi 546 3.00 (2.00, 4.00) 3.00 (2.00, 4.00) 3.00 (2.00, 4.00)
transpor 546 0.50 (0.25, 1.00) 0.50 (0.25, 1.00) 0.32 (0.17, 1.00)
1 n (%); Median (Q1, Q3)

Objetivo 2. Describir la prevalencia de sarcopenia, definida por un puntaje en la escala SARC-F >4 puntos en pacientes con enfermedades crónicas no transmisibles.

##Visualizacion inicial Sarcopenia

data <- data %>%
  mutate(
    sarc_tot_cat = if_else(
      sarc_tot > 4,
      1L,  # Sarcopenia
      0L   # No sarcopenia
    )
  )

ggplot(data, aes(x = sarc_tot)) +
  geom_histogram(aes(y = ..density..), binwidth = 1, fill = "lightblue", color = "black") +
  geom_density(color = "red", size = 1) +
  labs(title = "Histograma de sarc_tot con línea de densidad",
       x = "sarc_tot",
       y = "Densidad") +
  theme_minimal()
Warning: The dot-dot notation (`..density..`) was deprecated in ggplot2 3.4.0.
ℹ Please use `after_stat(density)` instead.

#Prevalencia de Sarcopenia
data %>%
  tbl_summary(
    include = c(sarc_tot_cat),
    missing = "no",
    sort = all_categorical() ~ "frequency",
    statistic = all_categorical() ~ "{n} ({p}%)"
  ) %>%
  add_ci(
    method = list(all_categorical() ~ "wilson"),
    pattern = "{stat} (IC95%: {ci})"
  ) %>%
  add_n() %>%
  add_overall()
Cannot add an overall column with `add_overall()` when original table is not
statified with `tbl_summary(by)`.
ℹ Returning table unaltered.
Characteristic N N = 546 (IC95%: 95% CI)1
sarc_tot_cat 546 221 (40%) (IC95%: 36%, 45%)
1 n (%)
Abbreviation: CI = Confidence Interval
data %>%
  tbl_summary(include = c(sarc_tot, sarc_tot_cat),
              by=dx_oms_ca, missing = "no", sort = all_categorical() ~ "frequency") %>%
              add_n() %>%
              add_overall()
Characteristic N Overall
N = 5461
No oncologica
N = 4421
Cancer
N = 1041
sarc_tot 546 4.00 (1.00, 6.00) 3.50 (1.00, 6.00) 4.00 (2.00, 7.00)
sarc_tot_cat 546 221 (40%) 176 (40%) 45 (43%)
1 Median (Q1, Q3); n (%)
data %>%
  tbl_summary(
    include = c(sarc_tot_cat),
    by = dx_oms_ca,
    missing = "no",
    sort = all_categorical() ~ "frequency",
    statistic = all_categorical() ~ "{p}%"
  ) %>%
  add_ci() %>%
  add_n() %>%
  add_overall()
Characteristic N Overall
N = 5461
No oncologica
N = 4421
95% CI Cancer
N = 1041
95% CI
sarc_tot_cat 546 40% 40% 35%, 45% 43% 34%, 53%
1
Abbreviation: CI = Confidence Interval
ggplot(data, aes(x = sarc_tot, fill = as.factor(dx_oms_ca))) +
  geom_density(alpha = 0.5) +
  labs(title = "Distribución de sarc_tot por dx_oms_ca",
       x = "sarc_tot",
       y = "Densidad",
       fill = "dx_oms_ca") +
  theme_minimal()

Objetivo 3. Determinar la prevalencia de necesidades holísticas no satisfechas existentes en la población de pacientes con enfermedades crónicas no transmisibles y estratificar la estimación por cada uno de los 8 dominios de la herramienta SPARC-Sp.

tabla_likert <- data %>%
  select(s2:s42) %>%
  pivot_longer(
    cols = everything(),
    names_to = "item",
    values_to = "valor"
  ) %>%
  group_by(item, valor) %>%
  summarise(n = n(), .groups = "drop") %>%
  group_by(item) %>%
  mutate(
    porcentaje = round(100 * n / sum(n), 1)
  ) %>%
  arrange(item, valor)

tabla_likert_wide <- tabla_likert %>%
  mutate(valor = paste0("valor_", valor)) %>%
  pivot_wider(
    names_from = valor,
    values_from = c(n, porcentaje),
    values_fill = 0
  )

tabla_likert_wide
# A tibble: 41 × 11
# Groups:   item [41]
   item  n_valor_0 n_valor_1 n_valor_2 n_valor_3 n_valor_NA porcentaje_valor_0
   <chr>     <int>     <int>     <int>     <int>      <int>              <dbl>
 1 s10         353       119        52        22          0               64.7
 2 s11         232       179        99        36          0               42.5
 3 s12         380       101        45        20          0               69.6
 4 s13         167       174       156        48          1               30.6
 5 s14         118       192       181        55          0               21.6
 6 s15         174       175       134        63          0               31.9
 7 s16         223       198       101        24          0               40.8
 8 s17         263       151       105        26          1               48.2
 9 s18         207       180       124        35          0               37.9
10 s19         426        87        22        11          0               78  
# ℹ 31 more rows
# ℹ 4 more variables: porcentaje_valor_1 <dbl>, porcentaje_valor_2 <dbl>,
#   porcentaje_valor_3 <dbl>, porcentaje_valor_NA <dbl>
tabla_pretty <- data %>%
  select(s2:s42) %>%
  pivot_longer(everything(), names_to = "item", values_to = "valor") %>%
  
  # Convertir a factor con etiquetas
  mutate(valor = factor(valor,
                        levels = c(0,1,2,3),
                        labels = c("Nada", "Un poco", "Bastante", "Mucho"))) %>%
  
  group_by(item, valor) %>%
  summarise(n = n(), .groups = "drop") %>%
  
  group_by(item) %>%
  mutate(p = round(100 * n / sum(n), 1),
         stat = paste0(n, " (", p, "%)")) %>%
  
  select(-n, -p) %>%
  pivot_wider(
    names_from = valor,
    values_from = stat,
    values_fill = "0 (0%)"
  )

tabla_pretty
# A tibble: 41 × 6
# Groups:   item [41]
   item  Nada        `Un poco`   Bastante    Mucho      `NA`    
   <chr> <chr>       <chr>       <chr>       <chr>      <chr>   
 1 s10   353 (64.7%) 119 (21.8%) 52 (9.5%)   22 (4%)    0 (0%)  
 2 s11   232 (42.5%) 179 (32.8%) 99 (18.1%)  36 (6.6%)  0 (0%)  
 3 s12   380 (69.6%) 101 (18.5%) 45 (8.2%)   20 (3.7%)  0 (0%)  
 4 s13   167 (30.6%) 174 (31.9%) 156 (28.6%) 48 (8.8%)  1 (0.2%)
 5 s14   118 (21.6%) 192 (35.2%) 181 (33.2%) 55 (10.1%) 0 (0%)  
 6 s15   174 (31.9%) 175 (32.1%) 134 (24.5%) 63 (11.5%) 0 (0%)  
 7 s16   223 (40.8%) 198 (36.3%) 101 (18.5%) 24 (4.4%)  0 (0%)  
 8 s17   263 (48.2%) 151 (27.7%) 105 (19.2%) 26 (4.8%)  1 (0.2%)
 9 s18   207 (37.9%) 180 (33%)   124 (22.7%) 35 (6.4%)  0 (0%)  
10 s19   426 (78%)   87 (15.9%)  22 (4%)     11 (2%)    0 (0%)  
# ℹ 31 more rows
data_long2 <- data %>%
  select(s2:s42) %>%
  pivot_longer(
    cols = everything(),
    names_to = "item",
    values_to = "valor"
  ) %>%
  mutate(
    dominio = case_when(
      item %in% paste0("s", 2:22)  ~ "Físico",
      item %in% paste0("s", 23:31) ~ "Psicológico",
      item %in% paste0("s", 32:33) ~ "Relacional",
      item %in% paste0("s", 34:36) ~ "Independencia",
      item %in% paste0("s", 37:40) ~ "Familiar",
      item %in% paste0("s", 41:42) ~ "Tratamiento"
    ),
    valor = factor(valor,
                   levels = c(3, 2, 1, 0),
                    labels = c("Mucho", "Bastante", "Un poco", "Nada"))
  )

data_plot <- data_long2 %>%
  group_by(dominio, valor) %>%
  summarise(n = n(), .groups = "drop") %>%
  group_by(dominio) %>%
  mutate(prop = n / sum(n))

data_plot <- data_plot %>%
  group_by(dominio) %>%
  mutate(
    prop_nada = prop[valor == "Nada"][1]
  ) %>%
  ungroup() %>%
  mutate(
    dominio = fct_reorder(dominio, prop_nada, .desc = TRUE)
  )

# 3. Gráfico tipo Likert
ggplot(data_plot,
       aes(x = dominio, y = prop, fill = valor)) +
  geom_bar(stat = "identity", position = "fill", width = 0.7) +
  coord_flip() +
  scale_y_continuous(labels = scales::percent_format()) +
  
  scale_fill_manual(values = c(
  "#B2182B", "#F4A582", "#67A9CF", "#2166AC"
  )) +
  
  labs(
    x = "",
    y = "Porcentaje",
    fill = "Nivel",
    title = "Distribución tipo Likert por dominios SPARC"
  ) +
  
  theme_minimal(base_size = 12) +
  theme(
    axis.text.y = element_text(size = 11),
    legend.position = "bottom"
  )

data_plot %>%
  filter(valor %in% c("Nada", "Un poco", "Bastante", "Mucho")) %>%
  tidyr::uncount(weights = n) %>%
  tbl_summary(
    by = dominio,
    include = valor,
    statistic = all_categorical() ~ "{p}%",
    missing = "no"
  ) %>%
  modify_header(label = "**Nivel**") %>%
  bold_labels()
Nivel Relacional
N = 1,0921
Psicológico
N = 4,9101
Físico
N = 11,4611
Familiar
N = 2,1841
Tratamiento
N = 1,0921
Independencia
N = 1,6381
valor





    Mucho 2.8% 5.4% 6.2% 8.3% 9.6% 15%
    Bastante 11% 14% 18% 16% 22% 31%
    Un poco 27% 22% 27% 27% 31% 24%
    Nada 60% 59% 49% 49% 37% 30%
1
tabla_tbl <- data_plot %>%
  uncount(weights = n) %>%
  mutate(
    necesidad = ifelse(
      valor == "Nada",
      "Sin necesidades",
      "Presencia de necesidades"
    ),
    necesidad = factor(necesidad,
                       levels = c("Sin necesidades", "Presencia de necesidades"))
  ) %>%
    tbl_summary(
    by = dominio,
    include = necesidad,
    statistic = all_categorical() ~ "{n} ({p}%)",
    missing = "no"
  ) %>%
  modify_header(label = "**Estado**") %>%
  bold_labels()

tabla_tbl
Estado Relacional
N = 1,0921
Psicológico
N = 4,9141
Físico
N = 11,4661
Familiar
N = 2,1841
Tratamiento
N = 1,0921
Independencia
N = 1,6381
necesidad





    Sin necesidades 653 (60%) 2,875 (59%) 5,668 (49%) 1,065 (49%) 404 (37%) 496 (30%)
    Presencia de necesidades 439 (40%) 2,035 (41%) 5,793 (51%) 1,119 (51%) 688 (63%) 1,142 (70%)
1 n (%)
class(data$sparc_rel_p)
[1] "numeric"
summary(data$sparc_rel_p)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   0.00    0.00   16.70   18.81   33.30  100.00 
data %>%
  tbl_summary(
    include = c(
      sparc_fis_p, sparc_psic_p, sparc_rel_p,
      sparc_inde_p, sparc_fami_p, sparc_tra_p
    ),
    by = dx_oms_ca,
    missing = "no",
    statistic = all_continuous() ~ "{median} ({p25}, {p75})",
    type = c(
      sparc_rel_p ~ "continuous",
      sparc_tra_p ~ "continuous"
    )
  ) %>%
  add_n() %>%
  add_p() %>%
  add_overall()
Characteristic N Overall
N = 5461
No oncologica
N = 4421
Cancer
N = 1041
p-value2
sparc_fis_p 546 25 (16, 35) 24 (14, 33) 32 (24, 44) <0.001
sparc_psic_p 546 19 (7, 30) 15 (7, 30) 22 (15, 37) <0.001
sparc_rel_p 546 17 (0, 33) 17 (0, 33) 17 (0, 33) 0.002
sparc_inde_p 546 44 (11, 67) 44 (11, 67) 50 (22, 67) 0.2
sparc_fami_p 546 25 (8, 42) 25 (8, 42) 25 (8, 42) 0.8
sparc_tra_p 546 33 (0, 67) 33 (0, 50) 33 (17, 67) 0.004
1 Median (Q1, Q3)
2 Wilcoxon rank sum test
data <- data %>%
  mutate(
    sarc_tot_cat = factor(
      sarc_tot_cat,
      levels = c(0, 1),
      labels = c("Sin Sarcopenia", "Con Sarcopenia")
    )
  )


data %>%
  tbl_summary(
    include = c(
      sparc_fis_p, sparc_psic_p, sparc_rel_p,
      sparc_inde_p, sparc_fami_p, sparc_tra_p
    ),
    by = sarc_tot_cat,
    missing = "no",
    statistic = all_continuous() ~ "{median} ({p25}, {p75})",
    type = c(
      sparc_rel_p ~ "continuous",
      sparc_tra_p ~ "continuous"
    )
  ) %>%
  add_n() %>%
  add_p() %>%
  add_overall()
Characteristic N Overall
N = 5461
Sin Sarcopenia
N = 3251
Con Sarcopenia
N = 2211
p-value2
sparc_fis_p 546 25 (16, 35) 22 (13, 32) 30 (22, 41) <0.001
sparc_psic_p 546 19 (7, 30) 15 (7, 26) 22 (11, 37) <0.001
sparc_rel_p 546 17 (0, 33) 17 (0, 33) 17 (0, 33) 0.018
sparc_inde_p 546 44 (11, 67) 33 (11, 56) 56 (33, 67) <0.001
sparc_fami_p 546 25 (8, 42) 25 (8, 33) 25 (17, 42) <0.001
sparc_tra_p 546 33 (0, 67) 33 (0, 50) 33 (17, 67) <0.001
1 Median (Q1, Q3)
2 Wilcoxon rank sum test
ggplot(data, aes(x = as.factor(sarc_tot_cat), y = sparc_fis_p, fill = as.factor(sarc_tot_cat))) +
  geom_boxplot() +
  labs(title = "Boxplot de Dominio Físico de SPARC por Sarcopenia",
       x = "Sarcopenia (0=No, 1=Sí)",
       y = "Puntaje Dominio Físico (%)") +
  theme_minimal() +
  scale_fill_manual(values = c("lightblue", "lightcoral"), name = "Sarcopenia", labels = c("No", "Sí"))

Objetivo 3.1 Estimar la diferencia en necesidades de CP(dominios de SPARC) entre pacientes sarcopenicos y no sarcopenicos.

library(tidyverse)
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ lubridate 1.9.5     ✔ stringr   1.6.0
✔ purrr     1.2.1     ✔ tibble    3.3.1
✔ readr     2.2.0     
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
✖ tibble::view()  masks summarytools::view()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
data_long <- data %>%
  pivot_longer(
    cols = c(
      sparc_fis_p, sparc_psic_p, sparc_rel_p,
      sparc_inde_p, sparc_fami_p, sparc_tra_p
    ),
    names_to = "dominio",
    values_to = "puntaje"
  )

library(ggpubr)

ggplot(
  data_long,
  aes(
    x = as.factor(sarc_tot_cat),
    y = puntaje,
    fill = as.factor(sarc_tot_cat)
  )
) +
  geom_boxplot() +
  facet_wrap(~ dominio, scales = "free_y") +
  stat_compare_means(
    method = "wilcox.test",
    label = "p.format"
  ) +
  labs(
    title = "Distribución de los dominios SPARC según sarcopenia",
    x = "Sarcopenia (0 = No, 1 = Sí)",
    y = "Puntaje SPARC (%)"
  ) +
  theme_minimal() +
  scale_fill_manual(
    values = c("lightblue", "lightcoral"),
    name = "Sarcopenia",
    labels = c("No", "Sí")
  ) +
  theme(
    legend.position = "bottom",
    strip.text = element_text(face = "bold")
  )

par(mfrow = c(2, 3))  # Configura la disposición de los gráficos
hist(data$sparc_fis_p, main = "Histograma Sparc Físico", xlab = "Sparc Físico (%)", col = "lightblue")
hist(data$sparc_psic_p, main = "Histograma Sparc Psicológico
", xlab = "Sparc Psicológico (%)", col = "lightgreen")
hist(data$sparc_rel_p, main = "Histograma Sparc Relacional", xlab = "Sparc Relacional (%)", col = "lightpink")
hist(data$sparc_inde_p, main = "Histograma Sparc Independencia",
     xlab = "Sparc Independencia (%)", col = "lightyellow") 
hist(data$sparc_fami_p, main = "Histograma Sparc Familiar",
     xlab = "Sparc Familiar (%)", col = "lightgray")
hist(data$sparc_tra_p, main = "Histograma Sparc Tratamiento",
     xlab = "Sparc Tratamiento (%)", col = "lightcoral")

shapiro.test(data$sparc_fis_p)

    Shapiro-Wilk normality test

data:  data$sparc_fis_p
W = 0.9726, p-value = 1.415e-08
shapiro.test(data$sparc_psic_p)

    Shapiro-Wilk normality test

data:  data$sparc_psic_p
W = 0.90219, p-value < 2.2e-16
shapiro.test(data$sparc_rel_p)

    Shapiro-Wilk normality test

data:  data$sparc_rel_p
W = 0.82989, p-value < 2.2e-16
shapiro.test(data$sparc_inde_p)

    Shapiro-Wilk normality test

data:  data$sparc_inde_p
W = 0.92723, p-value = 1.299e-15
shapiro.test(data$sparc_fami_p)

    Shapiro-Wilk normality test

data:  data$sparc_fami_p
W = 0.91519, p-value < 2.2e-16
shapiro.test(data$sparc_tra_p)

    Shapiro-Wilk normality test

data:  data$sparc_tra_p
W = 0.88908, p-value < 2.2e-16
data <- data %>%
  mutate(sparc_total_p = sparc_fis_p + sparc_psic_p + sparc_rel_p + sparc_inde_p + sparc_fami_p + sparc_tra_p)

hist(data$sparc_total_p)

shapiro.test(data$sparc_total_p)

    Shapiro-Wilk normality test

data:  data$sparc_total_p
W = 0.97065, p-value = 5.413e-09
summary(data$sparc_total_p)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   0.00   99.22  162.85  174.04  235.03  499.40 
rng <- range(data$sparc_total_p, na.rm = TRUE)
data <- data %>%
  mutate(
    sparc_total_st = (sparc_total_p - rng[1]) / (rng[2] - rng[1]) * 100
  )

hist(data$sparc_total_st)

ggplot(data, aes(sample = sparc_total_p)) +
  stat_qq() +
  stat_qq_line(color = "red") +
  labs(
    title = "Q–Q plot de normalidad del puntaje total SPARC",
    x = "Cuantiles teóricos",
    y = "Cuantiles observados"
  ) +
  theme_minimal()

ggplot(data, aes(x = as.factor(sarc_tot_cat), y = sparc_total_st, fill = as.factor(sarc_tot_cat))) +
  geom_boxplot() +
  labs(title = "Boxplot de Puntaje Total SPARC por Sarcopenia",
       x = "Sarcopenia (0=No, 1=Sí)",
       y = "Puntaje Total SPARC (%)") +
  theme_minimal() +
  scale_fill_manual(values = c("lightblue", "lightcoral"), name = "Sarcopenia", labels = c("No", "Sí"))

ggplot(data, aes(x = sarc_tot, y = sparc_total_st)) +
  geom_point(alpha = 0.6, color = "blue") +
  geom_smooth(method = "lm", color = "red", se = FALSE) +
  labs(title = "Diagrama de dispersión de Puntaje Total SPARC vs Sarcopenia",
       x = "sarc_tot",
       y = "Puntaje Total SPARC (%)") +
  theme_minimal()
`geom_smooth()` using formula = 'y ~ x'

Modelo lineal univariado

data %>%
  tbl_summary(
    include = c(
      sparc_total_st
    ),
    by = sarc_tot_cat,
    missing = "no",
    statistic = all_continuous() ~ "{median} ({p25}, {p75})",
    type = c(
      sparc_total_st ~ "continuous"
    )
  ) %>%
  add_n() %>%
  add_p() %>%
  add_overall()
Characteristic N Overall
N = 5461
Sin Sarcopenia
N = 3251
Con Sarcopenia
N = 2211
p-value2
sparc_total_st 546 33 (20, 47) 28 (16, 41) 39 (28, 56) <0.001
1 Median (Q1, Q3)
2 Wilcoxon rank sum test
model1 <- lm(sparc_total_st ~ sarc_tot_cat, data = data)
summary(model1)

Call:
lm(formula = sparc_total_st ~ sarc_tot_cat, data = data)

Residuals:
    Min      1Q  Median      3Q     Max 
-40.834 -13.957  -2.249  12.303  57.905 

Coefficients:
                           Estimate Std. Error t value Pr(>|t|)    
(Intercept)                  29.924      1.029  29.068  < 2e-16 ***
sarc_tot_catCon Sarcopenia   12.171      1.618   7.522 2.24e-13 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 18.56 on 544 degrees of freedom
Multiple R-squared:  0.09421,   Adjusted R-squared:  0.09255 
F-statistic: 56.58 on 1 and 544 DF,  p-value: 2.242e-13
tbl_regression(model1)
Characteristic Beta 95% CI p-value
sarc_tot_cat


    Sin Sarcopenia
    Con Sarcopenia 12 9.0, 15 <0.001
Abbreviation: CI = Confidence Interval
check_model(model1)

model_performance(model1)
# Indices of model performance

AIC    |   AICc |    BIC |    R2 | R2 (adj.) |   RMSE |  Sigma
--------------------------------------------------------------
4743.1 | 4743.2 | 4756.0 | 0.094 |     0.093 | 18.524 | 18.558

Estimación de diferencias ajustadas en las necesidades holísticas no satisfechas, incorporando como covariables edad, sexo, diagnóstico, estado funcional y comorbilidades entre pacientes con y sin sarcopenia.

model2 <- lm(sparc_total_st ~ sarc_tot_cat + dx_oms_ca + edad + genero + karno + charlson, data = data)
summary(model2)

Call:
lm(formula = sparc_total_st ~ sarc_tot_cat + dx_oms_ca + edad + 
    genero + karno + charlson, data = data)

Residuals:
    Min      1Q  Median      3Q     Max 
-47.496 -12.168  -1.801  10.770  57.440 

Coefficients:
                           Estimate Std. Error t value Pr(>|t|)    
(Intercept)                54.46503    6.47814   8.408 3.76e-16 ***
sarc_tot_catCon Sarcopenia  9.62774    1.99916   4.816 1.91e-06 ***
dx_oms_caCancer             2.50229    2.21847   1.128  0.25985    
edad                       -0.23864    0.05406  -4.414 1.22e-05 ***
generoFemenino              3.01565    1.56544   1.926  0.05458 .  
karno                      -0.17144    0.05443  -3.150  0.00173 ** 
charlson                    2.01684    0.75073   2.687  0.00744 ** 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 17.74 on 539 degrees of freedom
Multiple R-squared:  0.1799,    Adjusted R-squared:  0.1708 
F-statistic: 19.71 on 6 and 539 DF,  p-value: < 2.2e-16
tbl_regression(model2)
Characteristic Beta 95% CI p-value
sarc_tot_cat


    Sin Sarcopenia
    Con Sarcopenia 9.6 5.7, 14 <0.001
dx_oms_ca


    No oncologica
    Cancer 2.5 -1.9, 6.9 0.3
edad -0.24 -0.34, -0.13 <0.001
genero


    Masculino
    Femenino 3.0 -0.06, 6.1 0.055
karno -0.17 -0.28, -0.06 0.002
charlson 2.0 0.54, 3.5 0.007
Abbreviation: CI = Confidence Interval
check_model(model2)

model_performance(model2)
# Indices of model performance

AIC    |   AICc |    BIC |    R2 | R2 (adj.) |   RMSE |  Sigma
--------------------------------------------------------------
4698.8 | 4699.1 | 4733.3 | 0.180 |     0.171 | 17.626 | 17.740

Modelos independientes para cada dominio (6). Modelos crudos.

model_fis_crudo <- lm(sparc_fis_p ~ sarc_tot_cat, data = data)
summary(model_fis_crudo)

Call:
lm(formula = sparc_fis_p ~ sarc_tot_cat, data = data)

Residuals:
    Min      1Q  Median      3Q     Max 
-29.667 -10.090  -1.167   8.910  46.533 

Coefficients:
                           Estimate Std. Error t value Pr(>|t|)    
(Intercept)                  22.790      0.750  30.388   <2e-16 ***
sarc_tot_catCon Sarcopenia   10.077      1.179   8.548   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 13.52 on 544 degrees of freedom
Multiple R-squared:  0.1184,    Adjusted R-squared:  0.1168 
F-statistic: 73.07 on 1 and 544 DF,  p-value: < 2.2e-16
model_psic_crudo <- lm(sparc_psic_p ~ sarc_tot_cat, data = data)
summary(model_psic_crudo)

Call:
lm(formula = sparc_psic_p ~ sarc_tot_cat, data = data)

Residuals:
   Min     1Q Median     3Q    Max 
-26.97 -12.17  -3.83   7.27  69.33 

Coefficients:
                           Estimate Std. Error t value Pr(>|t|)    
(Intercept)                  18.630      0.948  19.651  < 2e-16 ***
sarc_tot_catCon Sarcopenia    8.338      1.490   5.596 3.48e-08 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 17.09 on 544 degrees of freedom
Multiple R-squared:  0.05443,   Adjusted R-squared:  0.05269 
F-statistic: 31.31 on 1 and 544 DF,  p-value: 3.485e-08
model_rel_crudo <- lm(sparc_rel_p ~ sarc_tot_cat, data = data)
summary(model_rel_crudo)

Call:
lm(formula = sparc_rel_p ~ sarc_tot_cat, data = data)

Residuals:
    Min      1Q  Median      3Q     Max 
-21.195 -17.182  -4.495  16.118  82.818 

Coefficients:
                           Estimate Std. Error t value Pr(>|t|)    
(Intercept)                  17.182      1.132  15.183   <2e-16 ***
sarc_tot_catCon Sarcopenia    4.013      1.779   2.256   0.0245 *  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 20.4 on 544 degrees of freedom
Multiple R-squared:  0.009271,  Adjusted R-squared:  0.007449 
F-statistic:  5.09 on 1 and 544 DF,  p-value: 0.02445
model_inde_crudo <- lm(sparc_inde_p ~ sarc_tot_cat, data = data)
summary(model_inde_crudo)

Call:
lm(formula = sparc_inde_p ~ sarc_tot_cat, data = data)

Residuals:
    Min      1Q  Median      3Q     Max 
-54.001 -25.307  -3.107  19.193  63.593 

Coefficients:
                           Estimate Std. Error t value Pr(>|t|)    
(Intercept)                  36.407      1.678  21.691  < 2e-16 ***
sarc_tot_catCon Sarcopenia   17.594      2.638   6.669 6.34e-11 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 30.26 on 544 degrees of freedom
Multiple R-squared:  0.07558,   Adjusted R-squared:  0.07388 
F-statistic: 44.48 on 1 and 544 DF,  p-value: 6.34e-11
model_fami_crudo <- lm(sparc_fami_p ~ sarc_tot_cat, data = data)
summary(model_fami_crudo)

Call:
lm(formula = sparc_fami_p ~ sarc_tot_cat, data = data)

Residuals:
    Min      1Q  Median      3Q     Max 
-32.206 -16.748  -0.048   9.494  74.952 

Coefficients:
                           Estimate Std. Error t value Pr(>|t|)    
(Intercept)                  25.048      1.178  21.263  < 2e-16 ***
sarc_tot_catCon Sarcopenia    7.158      1.852   3.866 0.000124 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 21.24 on 544 degrees of freedom
Multiple R-squared:  0.02674,   Adjusted R-squared:  0.02495 
F-statistic: 14.95 on 1 and 544 DF,  p-value: 0.000124
model_tra_crudo <- lm(sparc_tra_p ~ sarc_tot_cat, data = data)
summary(model_tra_crudo)

Call:
lm(formula = sparc_tra_p ~ sarc_tot_cat, data = data)

Residuals:
    Min      1Q  Median      3Q     Max 
-42.986 -29.384   3.916  23.714  70.616 

Coefficients:
                           Estimate Std. Error t value Pr(>|t|)    
(Intercept)                  29.384      1.646  17.849  < 2e-16 ***
sarc_tot_catCon Sarcopenia   13.603      2.588   5.257 2.11e-07 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 29.68 on 544 degrees of freedom
Multiple R-squared:  0.04834,   Adjusted R-squared:  0.04659 
F-statistic: 27.64 on 1 and 544 DF,  p-value: 2.108e-07
tbl_regression(model_fis_crudo)
Characteristic Beta 95% CI p-value
sarc_tot_cat


    Sin Sarcopenia
    Con Sarcopenia 10 7.8, 12 <0.001
Abbreviation: CI = Confidence Interval
tbl_regression(model_psic_crudo)
Characteristic Beta 95% CI p-value
sarc_tot_cat


    Sin Sarcopenia
    Con Sarcopenia 8.3 5.4, 11 <0.001
Abbreviation: CI = Confidence Interval
tbl_regression(model_rel_crudo)
Characteristic Beta 95% CI p-value
sarc_tot_cat


    Sin Sarcopenia
    Con Sarcopenia 4.0 0.52, 7.5 0.024
Abbreviation: CI = Confidence Interval
tbl_regression(model_inde_crudo)
Characteristic Beta 95% CI p-value
sarc_tot_cat


    Sin Sarcopenia
    Con Sarcopenia 18 12, 23 <0.001
Abbreviation: CI = Confidence Interval
tbl_regression(model_fami_crudo)
Characteristic Beta 95% CI p-value
sarc_tot_cat


    Sin Sarcopenia
    Con Sarcopenia 7.2 3.5, 11 <0.001
Abbreviation: CI = Confidence Interval
tbl_regression(model_tra_crudo)
Characteristic Beta 95% CI p-value
sarc_tot_cat


    Sin Sarcopenia
    Con Sarcopenia 14 8.5, 19 <0.001
Abbreviation: CI = Confidence Interval

Modelos independientes para cada dominio (6). Modelos ajustados.

model_fis <- lm(sparc_fis_p ~ sarc_tot_cat + dx_oms_ca + edad + genero + karno + charlson, data = data)
summary(model_fis)

Call:
lm(formula = sparc_fis_p ~ sarc_tot_cat + dx_oms_ca + edad + 
    genero + karno + charlson, data = data)

Residuals:
    Min      1Q  Median      3Q     Max 
-35.989  -8.872  -0.463   8.148  40.578 

Coefficients:
                           Estimate Std. Error t value Pr(>|t|)    
(Intercept)                45.62245    4.51517  10.104  < 2e-16 ***
sarc_tot_catCon Sarcopenia  6.01071    1.39338   4.314 1.91e-05 ***
dx_oms_caCancer             4.51487    1.54624   2.920 0.003648 ** 
edad                       -0.14685    0.03768  -3.897 0.000109 ***
generoFemenino              1.14798    1.09109   1.052 0.293205    
karno                      -0.20826    0.03794  -5.489 6.22e-08 ***
charlson                    1.88619    0.52325   3.605 0.000341 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 12.36 on 539 degrees of freedom
Multiple R-squared:  0.2694,    Adjusted R-squared:  0.2613 
F-statistic: 33.13 on 6 and 539 DF,  p-value: < 2.2e-16
model_psic <- lm(sparc_psic_p ~ sarc_tot_cat + dx_oms_ca + edad + genero + karno + charlson, data = data)
summary(model_psic)

Call:
lm(formula = sparc_psic_p ~ sarc_tot_cat + dx_oms_ca + edad + 
    genero + karno + charlson, data = data)

Residuals:
    Min      1Q  Median      3Q     Max 
-34.158 -10.679  -3.664   7.670  70.521 

Coefficients:
                           Estimate Std. Error t value Pr(>|t|)    
(Intercept)                43.49486    5.90522   7.365 6.66e-13 ***
sarc_tot_catCon Sarcopenia  5.15923    1.82236   2.831 0.004812 ** 
dx_oms_caCancer             0.77536    2.02227   0.383 0.701569    
edad                       -0.21815    0.04928  -4.427 1.16e-05 ***
generoFemenino              2.97985    1.42700   2.088 0.037249 *  
karno                      -0.19318    0.04962  -3.893 0.000111 ***
charlson                    2.47988    0.68433   3.624 0.000318 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 16.17 on 539 degrees of freedom
Multiple R-squared:  0.1612,    Adjusted R-squared:  0.1519 
F-statistic: 17.27 on 6 and 539 DF,  p-value: < 2.2e-16
model_rel <- lm(sparc_rel_p ~ sarc_tot_cat + dx_oms_ca + edad + genero + karno + charlson, data = data)
summary(model_rel)

Call:
lm(formula = sparc_rel_p ~ sarc_tot_cat + dx_oms_ca + edad + 
    genero + karno + charlson, data = data)

Residuals:
    Min      1Q  Median      3Q     Max 
-33.665 -16.896  -3.063  13.868  81.885 

Coefficients:
                           Estimate Std. Error t value Pr(>|t|)  
(Intercept)                18.97581    7.37750   2.572   0.0104 *
sarc_tot_catCon Sarcopenia  5.17431    2.27670   2.273   0.0234 *
dx_oms_caCancer             4.26642    2.52646   1.689   0.0919 .
edad                       -0.10636    0.06157  -1.728   0.0846 .
generoFemenino              0.22434    1.78277   0.126   0.8999  
karno                       0.02543    0.06199   0.410   0.6818  
charlson                    1.46998    0.85495   1.719   0.0861 .
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 20.2 on 539 degrees of freedom
Multiple R-squared:  0.03741,   Adjusted R-squared:  0.02669 
F-statistic: 3.491 on 6 and 539 DF,  p-value: 0.002141
model_inde <- lm(sparc_inde_p ~ sarc_tot_cat + dx_oms_ca + edad + genero + karno + charlson, data = data)
summary(model_inde)

Call:
lm(formula = sparc_inde_p ~ sarc_tot_cat + dx_oms_ca + edad + 
    genero + karno + charlson, data = data)

Residuals:
    Min      1Q  Median      3Q     Max 
-74.473 -25.195   1.415  20.938  71.805 

Coefficients:
                           Estimate Std. Error t value Pr(>|t|)    
(Intercept)                61.17312   10.84289   5.642 2.72e-08 ***
sarc_tot_catCon Sarcopenia 15.22382    3.34612   4.550 6.64e-06 ***
dx_oms_caCancer            -2.03926    3.71320  -0.549  0.58310    
edad                       -0.27210    0.09049  -3.007  0.00276 ** 
generoFemenino              6.63580    2.62018   2.533  0.01161 *  
karno                      -0.17569    0.09111  -1.928  0.05433 .  
charlson                    2.73153    1.25654   2.174  0.03015 *  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 29.69 on 539 degrees of freedom
Multiple R-squared:  0.118, Adjusted R-squared:  0.1082 
F-statistic: 12.02 on 6 and 539 DF,  p-value: 1.089e-12
model_fami <- lm(sparc_fami_p ~ sarc_tot_cat + dx_oms_ca + edad + genero + karno + charlson, data = data)
summary(model_fami)

Call:
lm(formula = sparc_fami_p ~ sarc_tot_cat + dx_oms_ca + edad + 
    genero + karno + charlson, data = data)

Residuals:
    Min      1Q  Median      3Q     Max 
-37.917 -15.651  -2.926  10.174  78.053 

Coefficients:
                           Estimate Std. Error t value Pr(>|t|)    
(Intercept)                43.11235    7.71698   5.587 3.68e-08 ***
sarc_tot_catCon Sarcopenia  4.78605    2.38147   2.010   0.0450 *  
dx_oms_caCancer            -1.72434    2.64272  -0.652   0.5144    
edad                       -0.12535    0.06440  -1.946   0.0521 .  
generoFemenino              0.61548    1.86481   0.330   0.7415    
karno                      -0.13751    0.06484  -2.121   0.0344 *  
charlson                    1.01255    0.89429   1.132   0.2580    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 21.13 on 539 degrees of freedom
Multiple R-squared:  0.04512,   Adjusted R-squared:  0.03449 
F-statistic: 4.245 on 6 and 539 DF,  p-value: 0.000345
model_tra <- lm(sparc_tra_p ~ sarc_tot_cat + dx_oms_ca + edad + genero + karno + charlson, data = data)
summary(model_tra)

Call:
lm(formula = sparc_tra_p ~ sarc_tot_cat + dx_oms_ca + edad + 
    genero + karno + charlson, data = data)

Residuals:
    Min      1Q  Median      3Q     Max 
-60.174 -24.580  -2.213  21.044  78.057 

Coefficients:
                           Estimate Std. Error t value Pr(>|t|)    
(Intercept)                59.61977   10.62525   5.611 3.22e-08 ***
sarc_tot_catCon Sarcopenia 11.72680    3.27896   3.576 0.000380 ***
dx_oms_caCancer             6.70338    3.63867   1.842 0.065986 .  
edad                       -0.32296    0.08867  -3.642 0.000296 ***
generoFemenino              3.45670    2.56759   1.346 0.178778    
karno                      -0.16698    0.08928  -1.870 0.061972 .  
charlson                    0.49198    1.23132   0.400 0.689640    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 29.1 on 539 degrees of freedom
Multiple R-squared:  0.09366,   Adjusted R-squared:  0.08357 
F-statistic: 9.283 on 6 and 539 DF,  p-value: 1.069e-09
tbl_regression(model_fis)
Characteristic Beta 95% CI p-value
sarc_tot_cat


    Sin Sarcopenia
    Con Sarcopenia 6.0 3.3, 8.7 <0.001
dx_oms_ca


    No oncologica
    Cancer 4.5 1.5, 7.6 0.004
edad -0.15 -0.22, -0.07 <0.001
genero


    Masculino
    Femenino 1.1 -1.0, 3.3 0.3
karno -0.21 -0.28, -0.13 <0.001
charlson 1.9 0.86, 2.9 <0.001
Abbreviation: CI = Confidence Interval
tbl_regression(model_psic)
Characteristic Beta 95% CI p-value
sarc_tot_cat


    Sin Sarcopenia
    Con Sarcopenia 5.2 1.6, 8.7 0.005
dx_oms_ca


    No oncologica
    Cancer 0.78 -3.2, 4.7 0.7
edad -0.22 -0.31, -0.12 <0.001
genero


    Masculino
    Femenino 3.0 0.18, 5.8 0.037
karno -0.19 -0.29, -0.10 <0.001
charlson 2.5 1.1, 3.8 <0.001
Abbreviation: CI = Confidence Interval
tbl_regression(model_rel)
Characteristic Beta 95% CI p-value
sarc_tot_cat


    Sin Sarcopenia
    Con Sarcopenia 5.2 0.70, 9.6 0.023
dx_oms_ca


    No oncologica
    Cancer 4.3 -0.70, 9.2 0.092
edad -0.11 -0.23, 0.01 0.085
genero


    Masculino
    Femenino 0.22 -3.3, 3.7 0.9
karno 0.03 -0.10, 0.15 0.7
charlson 1.5 -0.21, 3.1 0.086
Abbreviation: CI = Confidence Interval
tbl_regression(model_inde)
Characteristic Beta 95% CI p-value
sarc_tot_cat


    Sin Sarcopenia
    Con Sarcopenia 15 8.7, 22 <0.001
dx_oms_ca


    No oncologica
    Cancer -2.0 -9.3, 5.3 0.6
edad -0.27 -0.45, -0.09 0.003
genero


    Masculino
    Femenino 6.6 1.5, 12 0.012
karno -0.18 -0.35, 0.00 0.054
charlson 2.7 0.26, 5.2 0.030
Abbreviation: CI = Confidence Interval
tbl_regression(model_fami)
Characteristic Beta 95% CI p-value
sarc_tot_cat


    Sin Sarcopenia
    Con Sarcopenia 4.8 0.11, 9.5 0.045
dx_oms_ca


    No oncologica
    Cancer -1.7 -6.9, 3.5 0.5
edad -0.13 -0.25, 0.00 0.052
genero


    Masculino
    Femenino 0.62 -3.0, 4.3 0.7
karno -0.14 -0.26, -0.01 0.034
charlson 1.0 -0.74, 2.8 0.3
Abbreviation: CI = Confidence Interval
tbl_regression(model_tra)
Characteristic Beta 95% CI p-value
sarc_tot_cat


    Sin Sarcopenia
    Con Sarcopenia 12 5.3, 18 <0.001
dx_oms_ca


    No oncologica
    Cancer 6.7 -0.44, 14 0.066
edad -0.32 -0.50, -0.15 <0.001
genero


    Masculino
    Femenino 3.5 -1.6, 8.5 0.2
karno -0.17 -0.34, 0.01 0.062
charlson 0.49 -1.9, 2.9 0.7
Abbreviation: CI = Confidence Interval

Objetivo 4. Diseñar una estrategia de visualización apropiada para el reporte de las necesidades holísticas no satisfechas valoradas mediante la herramienta SPARC-Sp.

radar_data <- data %>%
  summarise(
    Fisico        = median(sparc_fis_p, na.rm = TRUE),
    Psicologico   = median(sparc_psic_p, na.rm = TRUE),
    Relacional    = median(sparc_rel_p, na.rm = TRUE),
    Independencia = median(sparc_inde_p, na.rm = TRUE),
    Familiar      = median(sparc_fami_p, na.rm = TRUE),
    Tratamiento   = median(sparc_tra_p, na.rm = TRUE)
  )

radar_group <- data %>%
  group_by(sarc_tot_cat) %>%
  summarise(
    Fisico        = median(sparc_fis_p, na.rm = TRUE),
    Psicologico   = median(sparc_psic_p, na.rm = TRUE),
    Relacional    = median(sparc_rel_p, na.rm = TRUE),
    Independencia = median(sparc_inde_p, na.rm = TRUE),
    Familiar      = median(sparc_fami_p, na.rm = TRUE),
    Tratamiento   = median(sparc_tra_p, na.rm = TRUE)
  )

radar_df <- rbind(
  max = rep(65, 6),
  min = rep(0, 6),
  radar_group[-1]
)


radarchart(
  radar_df,
  pcol = c("firebrick", "steelblue"),
  pfcol = c(
    scales::alpha("firebrick", 0.25),
    scales::alpha("steelblue", 0.25)
  ),
  plwd = 1,
  caxislabels = seq(0, 50, 10),
  cglcol = "grey80",
  axislabcol = "grey40",
  vlcex = 1
)

legend(
  "topright",
  legend = radar_group$sarc_tot_cat,
  col = c("firebrick", "steelblue"),
  lwd = 3,
  bty = "n"
)