Burden of Percieved Stress Among Stroke Survivors

Author

Jude

Published

October 2, 2024

Please Note!
  • Perceived stress was derived first by adding up all 8 items. Those who were less than or equal to the median were considered to have “Low”, and those above were considered to have “High”. This is still not clear so the authors should please call for further discussion.

  • Categories under primary occupation are too many. You may need to recategorize it to make it more compact. I have seen the categorization done but I am not sure that will suffice.

  • I think if the team wants to categorize the perceived stress as such ( 2 groups) then a logistic regression would be in order and not an ordinal logistic regression. The regression should then only be on the significantly associated variables. Please let me know what the authors think.

Table 1

Show the code
df_paper_04 %>%
    filter(!is.na(perceived_stress_cat)) %>% 
    gtsummary::tbl_summary(
        include = c(
            a_agebase, a_gender, a_domicile, income, maristat, 
            a_livingsit, educ, a_religion, perceived_stress_cat, 
            a_poccup3),
        by = perceived_stress_cat,
        digits = gtsummary::all_categorical()~ c(0,1),
        statistic = gtsummary::all_categorical() ~ "{n} ({p})",
        missing_text = "Missing") %>% 
    gtsummary::bold_labels() %>% 
    gtsummary::modify_caption(
        "**Table 1**: Sociodemographic characteristics among survivors by level of 
        perceived stress") %>% 
    gtsummary::modify_spanning_header(
    gtsummary::all_stat_cols() ~ "**Perceived Stress**") %>% 
    gtsummary::add_overall(col_label = "**Total**", last = TRUE) %>% 
    gtsummary::add_p(
        pvalue_fun = ~gtsummary::style_pvalue(.x, digits = 3)) %>% 
    gtsummary::bold_p() %>% 
    gtsummary::modify_caption(
        "**Table 1**: Sociodemographic characteristics among survivors by 
        level of perceived stress")
Table 1: Sociodemographic characteristics among survivors by level of perceived stress

Characteristic

Perceived Stress

Total

1

p-value

2

Low
N = 282

1

High
N = 204

1
Age in years 58 (50, 66) 58 (52, 68) 58 (51, 67) 0.398
Gender


0.440
    Male 162 (57.4) 110 (53.9) 272 (56.0)
    Female 120 (42.6) 94 (46.1) 214 (44.0)
Domicile


0.980
    Rural 18 (6.4) 13 (6.4) 31 (6.4)
    Semi-Urban 95 (33.7) 67 (32.8) 162 (33.3)
    Urban 169 (59.9) 124 (60.8) 293 (60.3)
Income in GHC


<0.001
    0-100 66 (23.7) 104 (51.0) 170 (35.3)
    101-250 90 (32.4) 54 (26.5) 144 (29.9)
    251-500 82 (29.5) 25 (12.3) 107 (22.2)
    >500 40 (14.4) 21 (10.3) 61 (12.7)
    Missing 4 0 4
Marital Status


0.608
    Currently Married 194 (68.8) 133 (65.2) 327 (67.3)
    Previously Married 77 (27.3) 60 (29.4) 137 (28.2)
    Never Married 11 (3.9) 11 (5.4) 22 (4.5)
Living Status


0.516
    Lives Alone 17 (6.0) 11 (5.4) 28 (5.8)
    Lives With Spouse and Children 165 (58.5) 105 (51.5) 270 (55.6)
    Lives in a Nursing Home 0 (0.0) 0 (0.0) 0 (0.0)
    Lives With Spouse 14 (5.0) 14 (6.9) 28 (5.8)
    Lives With Extended Family 36 (12.8) 33 (16.2) 69 (14.2)
    Lives With Children 50 (17.7) 41 (20.1) 91 (18.7)
Educational Status


0.074
    None 27 (9.6) 20 (9.8) 47 (9.7)
    Primary 106 (37.6) 93 (45.6) 199 (40.9)
    Secondary 92 (32.6) 67 (32.8) 159 (32.7)
    Tertiary 57 (20.2) 24 (11.8) 81 (16.7)
Religion


>0.999
    Christianity 252 (89.4) 183 (89.7) 435 (89.5)
    Islam 28 (9.9) 20 (9.8) 48 (9.9)
    Other 2 (0.7) 1 (0.5) 3 (0.6)
Primary Occupation


0.001
    Skilled 154 (54.6) 79 (38.7) 233 (47.9)
    Manual 53 (18.8) 52 (25.5) 105 (21.6)
    Others 9 (3.2) 10 (4.9) 19 (3.9)
    Retired 35 (12.4) 20 (9.8) 55 (11.3)
    Unemployed 31 (11.0) 43 (21.1) 74 (15.2)
1

Median (Q1, Q3); n (%)

2

Wilcoxon rank sum test; Pearson’s Chi-squared test; Fisher’s exact test

Table 1: Linear regression

Show the code
df_paper_04 %>%
    filter(!is.na(perceived_stress)) %>% 
    gtsummary::tbl_uvregression(
        method = glm,
        include = c(
            a_agebase, a_gender, a_domicile, income, maristat, 
            a_livingsit, educ, a_religion, perceived_stress, 
            a_poccup3),
        y = perceived_stress) %>% 
    gtsummary::add_global_p() %>% 
    gtsummary::bold_p()

Characteristic

N

Beta

95% CI

1

p-value

Age in years 486 0.01 -0.03, 0.04 0.7
Gender 486

0.2
    Male

    Female
0.55 -0.27, 1.4
Domicile 486

0.4
    Rural

    Semi-Urban
0.90 -0.86, 2.7
    Urban
0.33 -1.4, 2.0
Income in GHC 482

<0.001
    0-100

    101-250
-0.93 -1.9, 0.07
    251-500
-1.9 -3.0, -0.80
    >500
-2.4 -3.7, -1.1
Marital Status 486

0.8
    Currently Married

    Previously Married
-0.18 -1.1, 0.74
    Never Married
0.57 -1.4, 2.6
Living Status 486

0.8
    Lives Alone

    Lives With Spouse and Children
0.45 -1.3, 2.2
    Lives With Spouse
0.29 -2.1, 2.7
    Lives With Extended Family
0.97 -1.0, 3.0
    Lives With Children
0.05 -1.9, 2.0
Educational Status 486

0.007
    None

    Primary
-0.04 -1.5, 1.4
    Secondary
-0.76 -2.2, 0.72
    Tertiary
-2.0 -3.7, -0.40
Religion 486

0.5
    Christianity

    Islam
0.77 -0.60, 2.1
    Other
-1.2 -6.4, 4.0
Primary Occupation 486

0.12
    Skilled

    Manual
0.81 -0.24, 1.9
    Others
0.82 -1.3, 3.0
    Retired
0.52 -0.83, 1.9
    Unemployed
1.6 0.36, 2.7
1

CI = Confidence Interval

Table 2

Show the code
df_paper_04 %>%
    filter(!is.na(perceived_stress_cat)) %>% 
    gtsummary::tbl_summary(
        include = c(
             d_st_type_2, ranking, nihss_scale, hamd_cat, dm,
             hyperlipidemia, perceived_stress_cat),
        by = perceived_stress_cat,
        type = list(ranking ~ "continuous2"),
        digits = gtsummary::all_categorical()~ c(0,1),
        statistic = gtsummary::all_categorical() ~ "{n} ({p})",
        missing_text = "Missing") %>% 
    gtsummary::bold_labels() %>% 
    gtsummary::modify_caption(
        "**Table 2**: Clinical Characteristics of stroke survivors 
        stratified by perceived stress level ") %>% 
    gtsummary::modify_spanning_header(
    gtsummary::all_stat_cols() ~ "**Perceived Stress**") %>% 
    gtsummary::add_p(
        pvalue_fun = ~gtsummary::style_pvalue(.x, digits = 3)) %>% 
    gtsummary::bold_p()
Table 2: Clinical Characteristics of stroke survivors stratified by perceived stress level

Characteristic

Perceived Stress

p-value

2

Low
N = 282

1

High
N = 204

1
Stroke Type (Choose One)

0.060
    Ischemic Stroke 177 (71.1) 130 (77.8)
    Intracerebral Hemorrhagic Stroke 68 (27.3) 31 (18.6)
    Ischemic With Hemorrhagic Transformation 4 (1.6) 6 (3.6)
    Missing 33 37
Modified Ranking Score

<0.001
    Median (Q1, Q3) 2.00 (1.00, 3.00) 3.00 (2.00, 4.00)
NIH Stroke Scale 1.0 (0.0, 5.0) 6.0 (2.0, 11.0) <0.001
    Missing 6 3
Depression (HAMD)

<0.001
    Normal 244 (87.5) 110 (54.2)
    Mild Depression 28 (10.0) 59 (29.1)
    Moderate Depression 7 (2.5) 22 (10.8)
    Severe Depression 0 (0.0) 7 (3.4)
    Very Severe Depression 0 (0.0) 5 (2.5)
    Missing 3 1
Diabetes Mellitus 90 (31.9) 70 (34.3) 0.579
Hyperlipidemia 95 (33.7) 61 (29.9) 0.378
1

n (%); Median (Q1, Q3)

2

Fisher’s exact test; Wilcoxon rank sum test; Pearson’s Chi-squared test

Table 2 regression

Show the code
df_paper_04 %>%
    filter(!is.na(perceived_stress)) %>%
    gtsummary::tbl_uvregression(
        method = glm,
        include = c(
            d_st_type_2, ranking, nihss_scale, hamd_cat, dm,
             hyperlipidemia, perceived_stress),
        y = perceived_stress) %>% 
    gtsummary::add_global_p() %>% 
    gtsummary::bold_p() %>% 
    gtsummary::bold_labels()

Characteristic

N

Beta

95% CI

1

p-value

Stroke Type (Choose One) 416

0.6
    Ischemic Stroke

    Intracerebral Hemorrhagic Stroke
-0.51 -1.6, 0.55
    Ischemic With Hemorrhagic Transformation
0.58 -2.4, 3.5
Modified Ranking Score 486 1.0 0.68, 1.3 <0.001
NIH Stroke Scale 477 0.28 0.21, 0.36 <0.001
Depression (HAMD) 482

<0.001
    hamd_cat.L
6.4 3.8, 9.0
    hamd_cat.Q
-0.27 -2.6, 2.1
    hamd_cat.C
0.16 -2.2, 2.6
    hamd_cat^4
-0.79 -2.8, 1.2
Diabetes Mellitus 486

0.8
    No

    Yes
-0.12 -0.99, 0.75
Hyperlipidemia 486

0.5
    No

    Yes
-0.31 -1.2, 0.56
1

CI = Confidence Interval

Table 3

Show the code
tbl_3a <- 
    df_paper_04 %>%
    drop_na(perceived_stress_cat) %>% 
    select(
        d_st_type_2, perceived_stress_cat, nihss_scale, hamd_cat_2, educ, 
        a_livingsit2, a_poccup3
        ) %>% 
    tbl_uvregression(
        method = glm,
        y = perceived_stress_cat,
        method.args = family(binomial),
        exponentiate = TRUE,
        pvalue_fun = function(x) style_pvalue(x, digits = 3)
    ) %>% 
    modify_header(estimate = "**OR**", label =  "**Variable**")%>% 
    gtsummary::bold_labels() %>% 
    gtsummary::add_global_p() %>% 
    gtsummary::bold_p(t = 0.1)
Show the code
tbl_3b <- 
    df_paper_04 %>%
    drop_na(perceived_stress_cat) %>% 
    select(d_st_type_2, perceived_stress_cat, nihss_scale, hamd_cat_2, educ, a_poccup3) %>% 
    glm(
        perceived_stress_cat ~ ., data = ., family = binomial) %>% 
    tbl_regression(
        exponentiate = T, 
        pvalue_fun = function(x) style_pvalue(x, digits = 3)) %>% 
     modify_header(
        update = list(estimate ~ "**OR**", label ~ "**Variable**")
        ) %>%
    gtsummary::bold_labels() %>% 
    gtsummary::bold_p()
Warning: The `update` argument of `modify_header()` is deprecated as of gtsummary 2.0.0.
ℹ Use `modify_header(...)` input instead. Dynamic dots allow for syntax like
  `modify_header(!!!list(...))`.
ℹ The deprecated feature was likely used in the gtsummary package.
  Please report the issue at <https://github.com/ddsjoberg/gtsummary/issues>.
Show the code
gtsummary::tbl_merge(
    tbls = list(tbl_3a, tbl_3b),
    tab_spanner = c("**Crude**", "**Adjusted**")) %>% 
    gtsummary::bold_labels() %>% 
    gtsummary::modify_caption(
        "Table 3: Association between Baseline Characteristics and Percieved Stress")
Table 3: Association between Baseline Characteristics and Percieved Stress

Variable

Crude

Adjusted

N

OR

1

95% CI

1

p-value

OR

1

95% CI

1

p-value

Stroke Type (Choose One) 416

0.063


    Ischemic Stroke


    Intracerebral Hemorrhagic Stroke
0.62 0.38, 1.00
0.99 0.56, 1.72 0.967
    Ischemic With Hemorrhagic Transformation
2.04 0.57, 8.12
1.16 0.26, 5.51 0.848
NIH Stroke Scale 477 1.18 1.13, 1.24 <0.001 1.14 1.08, 1.20 <0.001
Depression (HAMD) 482

<0.001


    Normal


    Mild Depression
4.67 2.85, 7.82
3.36 1.88, 6.08 <0.001
    Moderate_Severe
10.8 4.90, 27.2
4.75 1.90, 13.1 0.001
Educational Status 486

0.068


    None


    Primary
1.18 0.63, 2.27
1.57 0.67, 3.87 0.315
    Secondary
0.98 0.51, 1.92
1.92 0.79, 4.88 0.158
    Tertiary
0.57 0.27, 1.20
1.31 0.49, 3.63 0.599
Living Status 458

0.807


    Lives with family




    Lives without family
0.91 0.40, 1.96



Primary Occupation 486

0.001


    Skilled


    Manual
1.91 1.20, 3.06
1.34 0.72, 2.49 0.349
    Others
2.17 0.84, 5.66
1.30 0.37, 4.23 0.664
    Retired
1.11 0.60, 2.04
0.92 0.43, 1.90 0.827
    Unemployed
2.70 1.59, 4.65
1.34 0.64, 2.78 0.438
1

OR = Odds Ratio, CI = Confidence Interval

Table 3b Regression

Show the code
df_paper_04 %>%
    drop_na(perceived_stress) %>% 
    select(perceived_stress, income, educ, ranking, nihss_scale, hamd_cat_2) %>% 
    glm(
        perceived_stress ~ ., data = .) %>% 
    tbl_regression(
        pvalue_fun = function(x) style_pvalue(x, digits = 3)) %>% 
     modify_header(
        update = list(estimate ~ "**Beta**", label ~ "**Variable**")
        ) %>%
    gtsummary::bold_labels() %>% 
    gtsummary::bold_p()

Variable

Beta

95% CI

1

p-value

Income in GHC


    0-100
    101-250 0.37 -0.64, 1.4 0.475
    251-500 -0.20 -1.4, 0.96 0.730
    >500 -0.31 -1.7, 1.0 0.648
Educational Status


    None
    Primary 0.07 -1.3, 1.4 0.915
    Secondary -0.41 -1.8, 0.98 0.564
    Tertiary -1.3 -2.8, 0.33 0.122
Modified Ranking Score 0.28 -0.11, 0.67 0.166
NIH Stroke Scale 0.13 0.03, 0.23 0.011
Depression (HAMD)


    Normal
    Mild Depression 1.9 0.86, 3.0 <0.001
    Moderate_Severe 3.5 1.9, 5.0 <0.001
1

CI = Confidence Interval