Hypertension/Stroke Knowledge Questionnaire (HKQ)

Author

Prof Stephen Sarfo

Published

April 27, 2026

Summary table: All data

Show the code
gtsummary::theme_gtsummary_compact()
df_paper_03 %>% 
    gtsummary::tbl_summary(
        include = c(
            a_agebase, a_gender, maristat, educ, a_livingsit, a_religion, 
            a_domicile, income, d_st_type, d_stroke_ct, bmi, barthels_index, 
            aa_bp_115_75:aa_strokeris, aa_hkq, aa_hkq_cat, hosp_cat),
        digits = gtsummary::all_categorical()~ c(0,1),
        statistic = gtsummary::all_categorical() ~ "{n} ({p})",
        missing_text = "Missing"
    ) %>% 
    gtsummary::bold_labels() %>% 
    gtsummary::modify_caption("General overview of data") 
Table 1: General overview of data
Characteristic N = 5001
Age in years
    Median (Q1, Q3) 58 (51, 67)
    Mean (SD) 58 (11)
    Min, Max 29, 88
Gender
    Male 281 (56.2)
    Female 219 (43.8)
Marital Status
    Currently Married 333 (66.6)
    Previously Married 144 (28.8)
    Never Married 23 (4.6)
Educational Status
    None 49 (9.8)
    Primary 203 (40.6)
    Secondary 165 (33.0)
    Tertiary 83 (16.6)
Living Status
    Lives Alone 29 (5.8)
    Lives With Spouse and Children 273 (54.6)
    Lives in a Nursing Home 0 (0.0)
    Lives With Spouse 30 (6.0)
    Lives With Extended Family 72 (14.4)
    Lives With Children 96 (19.2)
Religion
    Christianity 448 (89.6)
    Islam 49 (9.8)
    Other 3 (0.6)
Domicile
    Rural 33 (6.6)
    Semi-Urban 166 (33.2)
    Urban 301 (60.2)
Income in GHC
    0-100 174 (35.0)
    101-250 150 (30.2)
    251-500 109 (21.9)
    >500 64 (12.9)
    Missing 3
Stroke Type
    Intracerebral Hemorrhagic Stroke 103 (20.6)
    Ischemic Stroke 342 (68.4)
    Untyped Stroke (no CT scan available) 55 (11.0)
Stroke Subtype ( with results of Brain CT scan)
    Ischaemic 313 (73.6)
    Haemorrhage infarct 16 (3.8)
    Haemorrhagic 84 (19.8)
    Ischaemic and Haemorrhagic 12 (2.8)
    Missing 75
Body Mass Index
    Median (Q1, Q3) 26.2 (22.7, 30.0)
    Mean (SD) 26.6 (5.5)
    Min, Max 11.4, 47.9
    Missing 21
Barthels Index
    Median (Q1, Q3) 80 (40, 90)
    Mean (SD) 66 (27)
    Min, Max 0, 90
    Missing 16
(1) If someones blood pressure is 115/75. it is ......
    High 52 (10.5)
    Low 158 (31.8)
    Normal 119 (23.9)
    Dont Know 168 (33.8)
    Missing 3
(2) If someones blood pressure is 160/100. It is....
    High 330 (66.7)
    Low 10 (2.0)
    Normal 9 (1.8)
    Dont Know 146 (29.5)
    Missing 5
(3) Once someone has high blood pressure, it usually lasts for
    A few years 76 (15.4)
    5-10 Years 25 (5.1)
    The Rest of their Life 178 (36.0)
    Dont Know 216 (43.6)
    Missing 5
(4) People with high blood pressure should take their medicine
    Everyday 466 (95.3)
    At Least a few Times a week 11 (2.2)
    Only When They feel sick 12 (2.5)
    Missing 11
(5) Losing weight usually makes blood pressure
    Go up 39 (8.1)
    Go Down 322 (66.5)
    Stay the same 123 (25.4)
    Missing 16
(6) Eating less salt usually makes blood pressure
    Go Up 50 (10.2)
    Go Down 369 (75.2)
    Stay the Same 72 (14.7)
    Missing 9
(7) High blood pressure can cause heart attacks
    Yes 347 (70.0)
    No 10 (2.0)
    Dont Know 139 (28.0)
    Missing 4
(8) High blood pressure can cause cancer
    Yes 147 (29.6)
    No 60 (12.1)
    Dont Know 290 (58.4)
    Missing 3
(9) High blood pressure can cause can kidney problems
    Yes 239 (48.1)
    No 23 (4.6)
    Dont Know 235 (47.3)
    Missing 3
(10) High blood pressure can cause strokes
    Yes 394 (79.4)
    No 8 (1.6)
    Dont Know 94 (19.0)
    Missing 4
(11) Someone who has had a stroke is at higher risk of having another
    Yes 258 (52.0)
    No 29 (5.8)
    Dont Know 209 (42.1)
    Missing 4
(12) If someone is not having headaches they can stop taking medications
    Yes 92 (18.5)
    No 278 (56.0)
    Dont Know 126 (25.4)
    Missing 4
(13) If someone is feeling good it is ok to miss doses of medication
    Never 357 (71.8)
    Once a Month 11 (2.2)
    Once a week 7 (1.4)
    Dont know 122 (24.5)
    Missing 3
(14) Once someone has had a stroke, they will be at risk for stroke for ....
    A Few Years 140 (28.3)
    5-10 Years 21 (4.3)
    The Rest of Their Life 62 (12.6)
    Dont Know 271 (54.9)
    Missing 6
Total HKQ Score
    Median (Q1, Q3) 8 (6, 10)
    Mean (SD) 8 (3)
    Min, Max 0, 13
    Missing 30
Categorised Total HKQ Score
    Median & below 238 (50.6)
    Above Median 232 (49.4)
    Missing 30
Health institution category
    Primary 148 (29.6)
    Secondary 119 (23.8)
    Tertiary 233 (46.6)
1 n (%)

Tables

Table 1

Show the code
gtsummary::reset_gtsummary_theme()
gtsummary::theme_gtsummary_compact()

table_1 <-
    df_paper_03 %>% 
    select(matches("(aa)*(correct)")) %>% 
    gtsummary::tbl_summary(
        missing = "no"
    ) %>% 
    bold_labels() %>% 
    add_n() %>% 
    gtsummary::modify_caption("Item response rate to the HKQ")

table_1
file.remove("paper_3_table_1.docx")
[1] TRUE
Show the code
table_1 %>% 
    gtsummary::as_gt() %>% 
    gt::gtsave(filename = "paper_3_table_1.docx")
Table 2: Item response rate to the HKQ
Characteristic N N = 5001
If someones blood pressure is 160/100. It is 495 330 (67%)
Once someone has high blood pressure, it usually lasts for 495 178 (36%)
People with high blood pressure should take their medicine 489 466 (95%)
Losing weight usually makes blood pressure 484 322 (67%)
Eating less salt usually makes blood pressure 491 369 (75%)
High blood pressure can cause heart attacks 496 347 (70%)
High blood pressure can cause cancer 497 60 (12%)
High blood pressure can cause strokes 496 394 (79%)
High blood pressure can cause can kidney problems 497 239 (48%)
Someone who has had a stroke is at higher risk of having another 496 258 (52%)
If someone is not having headaches they can stop taking medications 496 278 (56%)
If someone is feeling good it is ok to miss doses of medication 497 357 (72%)
Once someone has had a stroke, they will be at risk for stroke for 494 62 (13%)
1 n (%)

Table 2

Show the code
gtsummary::theme_gtsummary_compact()
table_2 <- 
    df_paper_03 %>% 
    filter(!is.na(aa_hkq_cat)) %>% 
    gtsummary::tbl_summary(
        type = list(ranking ~ "continuous2"),
        include = c(
            a_agebase, male, educ, a_religion,  a_domicile, income, d_st_type, 
            ranking, nihss_scale, ee_sbp_0, ee_dbp_0, bmi, aa_hkq_cat, hosp_cat),
        digits = gtsummary::all_categorical()~ c(0,1),
        statistic = gtsummary::all_categorical() ~ "{n} ({p})",
        missing = "no",
        by = aa_hkq_cat
    ) %>% 
    gtsummary::bold_labels() %>% 
    gtsummary::modify_caption(
        "Baseline Demographic & Clinical Characteristics According 
        to Scores Obtained on the HKQ") %>% 
    gtsummary::modify_spanning_header(
    gtsummary::all_stat_cols() ~ "**Categorised Total HKQ Score**") %>% 
    gtsummary::add_overall(last = T) %>% 
    gtsummary::add_p(pvalue_fun = ~ gtsummary::style_pvalue(.x, digits = 3))

table_2
file.remove("paper_3_table_2.docx")
[1] TRUE
Show the code
table_2 %>% 
    gtsummary::as_gt() %>% 
    gt::gtsave(filename = "paper_3_table_2.docx")
Table 3: Baseline Demographic & Clinical Characteristics According to Scores Obtained on the HKQ
Characteristic
Categorised Total HKQ Score
Overall
N = 4701
p-value2
Median & below
N = 2381
Above Median
N = 2321
Age in years 58 (50, 68) 58 (52, 65) 58 (51, 67) 0.708
Male sex 115 (48.3) 145 (62.5) 260 (55.3) 0.002
Educational Status


<0.001
    None 32 (13.4) 12 (5.2) 44 (9.4)
    Primary 115 (48.3) 77 (33.2) 192 (40.9)
    Secondary 72 (30.3) 85 (36.6) 157 (33.4)
    Tertiary 19 (8.0) 58 (25.0) 77 (16.4)
Religion


0.082
    Christianity 207 (87.0) 213 (91.8) 420 (89.4)
    Islam 28 (11.8) 19 (8.2) 47 (10.0)
    Other 3 (1.3) 0 (0.0) 3 (0.6)
Domicile


0.316
    Rural 13 (5.5) 19 (8.2) 32 (6.8)
    Semi-Urban 86 (36.1) 72 (31.0) 158 (33.6)
    Urban 139 (58.4) 141 (60.8) 280 (59.6)
Income in GHC


<0.001
    0-100 108 (45.6) 58 (25.2) 166 (35.5)
    101-250 63 (26.6) 79 (34.3) 142 (30.4)
    251-500 42 (17.7) 61 (26.5) 103 (22.1)
    >500 24 (10.1) 32 (13.9) 56 (12.0)
Stroke Type


0.055
    Intracerebral Hemorrhagic Stroke 50 (21.0) 45 (19.4) 95 (20.2)
    Ischemic Stroke 154 (64.7) 169 (72.8) 323 (68.7)
    Untyped Stroke (no CT scan available) 34 (14.3) 18 (7.8) 52 (11.1)
Modified Ranking Score


0.016
    Median (Q1, Q3) 2.00 (1.00, 3.00) 2.00 (1.00, 3.00) 2.00 (1.00, 3.00)
NIH Stroke Scale 4.0 (0.0, 9.0) 2.0 (0.0, 6.0) 3.0 (0.0, 8.0) <0.001
Systolic blood pressure (mm Hg)-Baseline 155 (147, 172) 154 (146, 169) 155 (146, 170) 0.297
Diastolic Blood Pressure 96 (89, 106) 94 (87, 103) 95 (88, 105) 0.093
Body Mass Index 25.8 (22.2, 28.7) 26.5 (23.0, 30.9) 26.2 (22.7, 30.1) 0.040
Health institution category


0.552
    Primary 75 (31.5) 67 (28.9) 142 (30.2)
    Secondary 59 (24.8) 52 (22.4) 111 (23.6)
    Tertiary 104 (43.7) 113 (48.7) 217 (46.2)
1 Median (Q1, Q3); n (%)
2 Wilcoxon rank sum test; Pearson’s Chi-squared test; Fisher’s exact test

Linear regression of Total HKQ and covariates

Show the code
tbl1 <- 
    df_paper_03 %>% 
    select(
        a_agebase, male, educ, a_religion,  a_domicile, income, d_st_type, 
        ranking, nihss_scale, ee_sbp_0, ee_dbp_0, bmi, aa_hkq, hosp_cat) %>% 
    tbl_uvregression(
        y = aa_hkq, 
        method = lm,
        pvalue_fun = function(x) style_pvalue(x, digits = 3)) %>% 
    modify_header(
        update = list(estimate ~ "**Estimate**", label ~ "**Variable**")) %>% 
    bold_labels() %>% 
    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
tbl2 <- 
    df_paper_03 %>% 
    select(
        male, educ, a_religion,  ranking, nihss_scale, bmi, aa_hkq, hosp_cat) %>% 
    lm(aa_hkq ~ ., data = .) %>% 
    tbl_regression(pvalue_fun = function(x) style_pvalue(x, digits = 3)) %>% 
    modify_header(
        update = list(estimate ~ "**Estimate**", label ~ "**Variable**")) %>% 
    bold_labels() %>% 
    bold_p()

 
table_3 <- 
    tbl_merge(
    list(tbl1, tbl2),
    tab_spanner = c("**Univariate**", "**Multivariate**")) %>%    
    modify_caption(
        caption = "Univartiate and multivariate linear regression predicting HKQ") 
The number rows in the tables to be merged do not match, which may result in
rows appearing out of order.
ℹ See `tbl_merge()` (`?gtsummary::tbl_merge()`) help file for details. Use
  `quiet=TRUE` to silence message.
Show the code
table_3
file.remove("paper_3_table_3.docx")
[1] TRUE
Show the code
table_3 %>% 
    gtsummary::as_gt() %>% 
    gt::gtsave(filename = "paper_3_table_3.docx")
Table 4: Univartiate and multivariate linear regression predicting HKQ
Variable
Univariate
Multivariate
N Estimate 95% CI p-value Estimate 95% CI p-value
Age in years 470 -0.02 -0.04, 0.01 0.149


Male sex 470





    No


    Yes
0.69 0.12, 1.3 0.017 0.45 -0.15, 1.1 0.144
Educational Status 470





    None


    Primary
1.5 0.55, 2.5 0.002 1.1 0.10, 2.1 0.031
    Secondary
2.2 1.2, 3.2 <0.001 1.6 0.56, 2.7 0.003
    Tertiary
3.3 2.2, 4.4 <0.001 2.5 1.3, 3.7 <0.001
Religion 470





    Christianity


    Islam
-1.5 -2.5, -0.61 0.001 -1.3 -2.3, -0.37 0.006
    Other
-3.6 -7.1, -0.09 0.044 -3.5 -7.5, 0.57 0.093
Domicile 470





    Rural




    Semi-Urban
-1.1 -2.3, 0.07 0.066


    Urban
-1.1 -2.2, 0.03 0.056


Income in GHC 467





    0-100




    101-250
0.75 0.05, 1.4 0.035


    251-500
0.89 0.13, 1.7 0.022


    >500
1.2 0.24, 2.1 0.014


Stroke Type 470





    Intracerebral Hemorrhagic Stroke




    Ischemic Stroke
0.29 -0.41, 0.99 0.419


    Untyped Stroke (no CT scan available)
-1.6 -2.6, -0.57 0.002


Modified Ranking Score 470 -0.39 -0.62, -0.17 <0.001 0.10 -0.19, 0.40 0.497
NIH Stroke Scale 461 -0.14 -0.20, -0.09 <0.001 -0.17 -0.24, -0.09 <0.001
Systolic blood pressure (mm Hg)-Baseline 469 -0.01 -0.03, 0.00 0.117


Diastolic Blood Pressure 469 -0.01 -0.03, 0.01 0.285


Body Mass Index 454 0.10 0.05, 0.15 <0.001 0.08 0.03, 0.13 0.001
Health institution category 470





    Primary


    Secondary
0.81 0.04, 1.6 0.040 0.51 -0.25, 1.3 0.187
    Tertiary
0.58 -0.08, 1.2 0.085 -0.41 -1.1, 0.31 0.262
Abbreviation: CI = Confidence Interval

Logistit regression - Item 11

Item # 11: If someone has had a stroke is at a higher risk of having another stroke

Show the code
tbl3 <- 
    df_paper_03 %>% 
    mutate(aa_highrisk_correct = factor(aa_highrisk_correct)) %>% 
    select(
        a_agebase, male, educ, a_religion,  a_domicile, income, d_st_type, 
        ranking, nihss_scale, ee_sbp_0, ee_dbp_0, bmi, aa_highrisk_correct, hosp_cat) %>% 
    tbl_uvregression(
        y = aa_highrisk_correct, 
        method = glm,
        method.args = family(binomial),
        exponentiate = TRUE,
        pvalue_fun = function(x) style_pvalue(x, digits = 3)) %>% 
    modify_header(
        update = list(estimate ~ "**cOR**", label ~ "**Variable**")) %>% 
    bold_labels() %>% 
    bold_p()


tbl4 <- 
    df_paper_03 %>% 
    mutate(aa_highrisk_correct = factor(aa_highrisk_correct)) %>% 
    select(
        a_agebase, male, educ, a_religion, income, nihss_scale, bmi, hosp_cat, 
        aa_highrisk_correct) %>% 
    glm(aa_highrisk_correct ~ ., data = ., family=binomial) %>%
    tbl_regression(
        exponentiate = T, 
        pvalue_fun = function(x) style_pvalue(x, digits = 3)) %>% 
    modify_header(
        update = list(estimate ~ "**aOR**", label ~ "**Variable**")) %>% 
    bold_labels() %>% 
    bold_p()

table_4 <-
    tbl_merge(
    list(tbl3, tbl4),
    tab_spanner = c("**Univariate**", "**Multivariate**")) %>%    
    modify_caption(
        caption = "Univartiate and multivariate logistic regression of Item 11 of HKQ") 
The number rows in the tables to be merged do not match, which may result in
rows appearing out of order.
ℹ See `tbl_merge()` (`?gtsummary::tbl_merge()`) help file for details. Use
  `quiet=TRUE` to silence message.
Show the code
table_4
file.remove("paper_3_table_4.docx")
[1] TRUE
Show the code
table_4 %>% 
    gtsummary::as_gt() %>% 
    gt::gtsave(filename = "paper_3_table_4.docx")
Table 5: Univartiate and multivariate logistic regression of Item 11 of HKQ
Variable
Univariate
Multivariate
N cOR 95% CI p-value aOR 95% CI p-value
Age in years 496 0.98 0.97, 1.00 0.044 1.00 0.98, 1.02 0.817
Male sex 496





    No


    Yes
1.87 1.30, 2.68 <0.001 1.68 1.08, 2.61 0.022
Educational Status 496





    None


    Primary
2.97 1.45, 6.61 0.004 2.37 1.09, 5.53 0.035
    Secondary
5.78 2.78, 13.0 <0.001 4.07 1.81, 9.80 0.001
    Tertiary
8.58 3.82, 20.8 <0.001 5.37 2.13, 14.4 <0.001
Religion 496





    Christianity


    Islam
0.50 0.27, 0.91 0.025 0.76 0.37, 1.52 0.435
    Other
0.43 0.02, 4.51 0.491 1.15 0.04, 30.4 0.922
Domicile 496





    Rural




    Semi-Urban
1.38 0.64, 2.97 0.411


    Urban
1.18 0.57, 2.48 0.657


Income in GHC 493





    0-100


    101-250
1.37 0.89, 2.13 0.155 0.91 0.54, 1.51 0.706
    251-500
1.68 1.04, 2.75 0.035 0.76 0.41, 1.40 0.382
    >500
1.51 0.84, 2.74 0.166 0.86 0.42, 1.76 0.672
Stroke Type 496





    Intracerebral Hemorrhagic Stroke




    Ischemic Stroke
1.04 0.66, 1.62 0.866


    Untyped Stroke (no CT scan available)
0.38 0.19, 0.75 0.006


Modified Ranking Score 496 0.94 0.82, 1.08 0.389


NIH Stroke Scale 486 0.96 0.93, 0.99 0.015 0.98 0.94, 1.02 0.283
Systolic blood pressure (mm Hg)-Baseline 495 1.00 0.99, 1.01 0.874


Diastolic Blood Pressure 495 1.00 0.99, 1.01 0.881


Body Mass Index 478 1.05 1.02, 1.09 0.002 1.06 1.02, 1.10 0.004
Health institution category 496





    Primary


    Secondary
1.57 0.96, 2.57 0.071 1.38 0.80, 2.38 0.250
    Tertiary
2.15 1.42, 3.29 <0.001 1.83 1.08, 3.13 0.025
Abbreviations: CI = Confidence Interval, OR = Odds Ratio

Logistit regression - Item 14

Item # 14: If someone has had a stroke is at a higher risk of having another stroke

Show the code
tbl5 <- 
    df_paper_03 %>% 
    mutate(aa_strokeris_correct = factor(aa_strokeris_correct)) %>% 
    select(
        a_agebase, male, educ, a_religion,  a_domicile, income, d_st_type, 
        ranking, nihss_scale, ee_sbp_0, ee_dbp_0, bmi, aa_strokeris_correct, hosp_cat) %>% 
    tbl_uvregression(
        y = aa_strokeris_correct, 
        method = glm,
        method.args = family(binomial),
        exponentiate = TRUE,
        pvalue_fun = function(x) style_pvalue(x, digits = 3)) %>% 
    modify_header(
        update = list(estimate ~ "**cOR**", label ~ "**Variable**")) %>% 
    bold_labels() %>% 
    bold_p()


tbl6 <- 
    df_paper_03 %>% 
    mutate(aa_strokeris_correct = factor(aa_strokeris_correct)) %>% 
    select(a_domicile, income, ranking, hosp_cat, aa_strokeris_correct) %>% 
    glm(aa_strokeris_correct ~ ., data = ., family=binomial) %>%
    tbl_regression(
        exponentiate = T, 
        pvalue_fun = function(x) style_pvalue(x, digits = 3)) %>% 
    modify_header(
        update = list(estimate ~ "**aOR**", label ~ "**Variable**")) %>% 
    bold_labels() %>% 
    bold_p()

table_5 <-
    tbl_merge(
    list(tbl5, tbl6),
    tab_spanner = c("**Univariate**", "**Multivariate**")) %>%    
    modify_caption(
        caption = "Univartiate and multivariate logistic regression of Item 14 of HKQ") 

table_5
file.remove("paper_3_table_5.docx")
[1] TRUE
Show the code
table_5 %>% 
    gtsummary::as_gt() %>% 
    gt::gtsave(filename = "paper_3_table_5.docx")
Table 6: Univartiate and multivariate logistic regression of Item 14 of HKQ
Variable
Univariate
Multivariate
N cOR 95% CI p-value aOR 95% CI p-value
Age in years 494 1.00 0.97, 1.02 0.799


Male sex 494





    No




    Yes
1.73 0.99, 3.10 0.058


Educational Status 494





    None




    Primary
0.47 0.18, 1.41 0.152


    Secondary
1.59 0.66, 4.47 0.333


    Tertiary
1.17 0.42, 3.58 0.768


Religion 494





    Christianity




    Islam
0.96 0.35, 2.21 0.932


    Other
0.00
0.987


Domicile 494





    Rural


    Semi-Urban
0.34 0.14, 0.88 0.021 0.43 0.17, 1.17 0.089
    Urban
0.35 0.15, 0.84 0.014 0.46 0.19, 1.20 0.099
Income in GHC 491





    0-100


    101-250
1.52 0.76, 3.09 0.238 2.30 1.08, 4.99 0.032
    251-500
1.01 0.43, 2.29 0.978 1.54 0.61, 3.71 0.346
    >500
3.41 1.58, 7.40 0.002 2.75 1.22, 6.19 0.014
Stroke Type 494





    Intracerebral Hemorrhagic Stroke




    Ischemic Stroke
1.07 0.57, 2.14 0.849


    Untyped Stroke (no CT scan available)
0.39 0.09, 1.28 0.157


Modified Ranking Score 494 0.77 0.61, 0.95 0.017 0.81 0.65, 1.01 0.066
NIH Stroke Scale 484 1.00 0.95, 1.05 0.975


Systolic blood pressure (mm Hg)-Baseline 493 1.00 0.99, 1.01 0.813


Diastolic Blood Pressure 493 1.00 0.99, 1.02 0.685


Body Mass Index 476 1.02 0.97, 1.07 0.405


Health institution category 494





    Primary


    Secondary
1.83 0.98, 3.48 0.060 1.71 0.87, 3.37 0.119
    Tertiary
0.39 0.19, 0.79 0.010 0.36 0.16, 0.77 0.009
Abbreviations: CI = Confidence Interval, OR = Odds Ratio