Libraries needed:
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.3 ✔ readr 2.1.4
## ✔ forcats 1.0.0 ✔ stringr 1.5.0
## ✔ ggplot2 3.4.3 ✔ tibble 3.2.1
## ✔ lubridate 1.9.3 ✔ tidyr 1.3.0
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(dplyr)
library(fragility)
## Warning: package 'fragility' was built under R version 4.3.2
library(expss)
## Warning: package 'expss' was built under R version 4.3.2
## Loading required package: maditr
## Warning: package 'maditr' was built under R version 4.3.2
##
## To drop variable use NULL: let(mtcars, am = NULL) %>% head()
##
##
## Attaching package: 'maditr'
##
## The following objects are masked from 'package:dplyr':
##
## between, coalesce, first, last
##
## The following object is masked from 'package:purrr':
##
## transpose
##
## The following object is masked from 'package:readr':
##
## cols
##
##
## Attaching package: 'expss'
##
## The following objects are masked from 'package:stringr':
##
## fixed, regex
##
## The following objects are masked from 'package:dplyr':
##
## compute, contains, na_if, recode, vars, where
##
## The following objects are masked from 'package:purrr':
##
## keep, modify, modify_if, when
##
## The following objects are masked from 'package:tidyr':
##
## contains, nest
##
## The following object is masked from 'package:ggplot2':
##
## vars
library(ggplot2)
library(gridExtra)
##
## Attaching package: 'gridExtra'
##
## The following object is masked from 'package:dplyr':
##
## combine
library(grid)
library(table1)
##
## Attaching package: 'table1'
##
## The following objects are masked from 'package:base':
##
## units, units<-
library(compareGroups)
Set-up data:
fi = read.csv("C:\\Thach\\Research projects\\Nick's projects\\FI for fracture efficacy\\Analysis\\fi_analysis_updated.csv")
head(fi)
## id study_ext study author year st_names journal
## 1 a_1 6b NA Leder_ACTIVExtend 2020 Leder (2020)_exta1 JCEM
## 2 a_2 1b NA Body_VERO 2020 Body (2020)_a1 OI
## 3 a_3 1b NA Body_VERO 2020 Body (2020)_a2 OI
## 4 a_4 1b NA Body_VERO 2020 Body (2020)_a3 OI
## 5 a_5 1 1 Kendler_VERO 2018 Kendler (2018)_a1 Lancet
## 6 a_6 1 NA Kendler_VERO 2018 Kendler (2018)_a2 Lancet
## country blinding intervention control women_per timing fi
## 1 International Double Abaloparatide Alendronate 1 4 4
## 2 International Double Teriparatide_20 Risedronate 1 2 NA
## 3 International Double Teriparatide_20 Risedronate 1 4 NA
## 4 International Double Teriparatide_20 Risedronate 1 2 NA
## 5 International Double Teriparatide Risedronate 1 4 15
## 6 International Double Teriparatide Risedronate 1 4 17
## fq pval fx_site outcome HR lower upper
## 1 0.0035971 0.0092162 Vert_24m 1 0.29 0.10 0.87
## 2 NA NA MOF_12m 2 0.38 0.20 0.72
## 3 NA NA MOF_24m 2 0.20 0.05 0.86
## 4 NA NA ClinFx_12m 2 0.49 0.31 0.78
## 5 0.0142993 0.0002691 Vert_24m 1 0.44 0.29 0.68
## 6 0.0162059 0.0002114 NworsenVert_24m 1 0.46 0.31 0.68
## Notes e_con n_rand_con e_intv
## 1 16 581 3
## 2 24 680 10
## 3 40 680 16
## 4 Did not report clinical fractures @ 24 months 34 680 18
## 5 64 680 28
## 6 69 680 31
## n_rand_intv x95_ci p_value pri_endpoint sen_analysis extended
## 1 558 0.10, 0.87 0.0270 0 1 1
## 2 680 0.20, 0.72 0.0030 0 0 0
## 3 680 0.05, 0.86 0.0310 0 0 0
## 4 690 0.31, 0.78 0.0030 0 0 0
## 5 680 [0.29,0.68] 0.0001 1 0 0
## 6 680 [0.31,0.68] 0.0001 0 0 0
## notes
## 1 post-hoc analysis/extended
## 2 VERO (2nd paper)
## 3 VERO (2nd paper)
## 4 VERO (2nd paper)
## 5 6 pt excluded from the analyses
## 6
## st_cohort rep_loss rep_withdr
## 1 postm osteoporotic women aged 49+ 9 62
## 2 Survival analysis: no loss to FU NA NA
## 3 Survival analysis: no loss to FU NA NA
## 4 Survival analysis: no loss to FU NA NA
## 5 postm women aged 45+: <=-1.5, 2+ mod/1+ sev vert fx 12 185
## 6 postm women aged 45+: <=-1.5, 2+ mod/1+ sev vert fx 12 185
## rep_death rep_compt n_control n_interven X
## 1 68 1861 568 544 NA
## 2 NA NA 680 680 NA
## 3 NA NA 680 680 NA
## 4 NA NA 680 680 NA
## 5 20 1013 533 516 NA
## 6 20 1013 533 516 NA
fi$no_rand = fi$n_rand_con + fi$n_rand_intv
fi$active_sample = fi$n_control + fi$n_interven
fi$n_event = fi$e_con + fi$e_intv
fi$loghr = log(fi$HR)
Data management:
table(fi$fx_site)
##
## ClinFx_12m ClinFx_18m
## 3 1
## ClinFx_24m ClinFx_36m
## 5 2
## ClinFx_72m ClinFx_72w
## 1 2
## ClinVert_12m ClinVert_24m
## 1 3
## ClinVert_36m ClinVert_48m
## 6 1
## ClinVert_72m ClinVert_72w
## 1 2
## Forearm_60m ForearmWrist_72m
## 1 1
## Fx_36m Fx_70m
## 2 1
## Hip_18m Hip_24m
## 3 2
## Hip_36m Hip_60m
## 5 1
## Hip_Wrist_Forearm_70m Hip_Wrist_Forearm_Vertebrae_70m
## 1 1
## MajorNonVert_12m MajorNonVert_24m
## 1 2
## MajorNonVert_36m MajorNonVert_60m
## 1 1
## MajVert_24m MNworsenVert_12m
## 2 1
## MNworsenVert_24m MOF_12m
## 1 2
## MOF_18m MOF_24m
## 1 3
## MultiFx_36m MultiVert_24m
## 1 2
## MultiVert_36m MVert_24m
## 1 1
## MVert_36m NmodVert_12m
## 2 1
## NmodVert_24m NonVert_12m
## 1 1
## Nonvert_18m NonVert_18m
## 3 1
## NonVert_24m NonVert_36m
## 5 6
## NonVert_60m NonVert_72m
## 1 1
## NonVertOFx_24m NworsenVert_12m
## 2 2
## NworsenVert_18m NworsenVert_24m
## 1 4
## OFx_12m OFx_24m
## 1 1
## Ofx_48m OFx_72m
## 1 1
## OtherClinFx_48m Vert_12m
## 1 12
## Vert_18m Vert_24m
## 3 15
## Vert_36m Vert_48m
## 11 3
## Vert_48w Vert_60m
## 1 2
## Vert_6m Vert_72m
## 1 1
## Vert_72w Wrist_24m
## 2 1
fi_final = fi %>%
mutate(fx_code1 = case_when(fx_site == "Fx_36m" | fx_site == "Fx_70m" | fx_site == "Fx_72m" | fx_site == "MultiFx_36m" ~ 1,
fx_site == "ClinFx_12m" | fx_site == "ClinFx_18m" | fx_site == "ClinFx_24m" |
fx_site == "ClinFx_36m" | fx_site == "ClinFx_72m" | fx_site == "ClinFx_72w" |
fx_site == "OtherClinFx_48m" ~ 2,
fx_site == "OFx_12m" | fx_site == "OFx_24m" | fx_site == "Ofx_48m" | fx_site == "OFx_72m" ~ 3,
fx_site == "MOF_12m" | fx_site == "MOF_18m" | fx_site == "MOF_24m" ~ 4,
fx_site == "Hip_Wrist_Forearm_70m" | fx_site == "Hip_Wrist_Forearm_Vertebrae_70m" ~ 5,
fx_site == "MajorNonVert_12m" | fx_site == "MajorNonVert_24m" | fx_site == "MajorNonVert_36m" |
fx_site == "MajorNonVert_60m" | fx_site == "NonVert_12m" | fx_site == "Nonvert_18m" | fx_site == "NonVert_18m" |
fx_site == "NonVert_24m" | fx_site == "NonVert_36m" | fx_site == "NonVert_60m" |
fx_site == "NonVert_72m" | fx_site == "NonVertOFx_24m" ~ 6,
fx_site == "MajVert_24m" | fx_site == "MNworsenVert_12m" | fx_site == "MNworsenVert_24m" |
fx_site == "MultiVert_24m" | fx_site == "MultiVert_36m" | fx_site == "MVert_24m" |
fx_site == "MVert_36m" | fx_site == "NmodVert_12m" | fx_site == "NmodVert_24m" |
fx_site == "NworsenVert_12m" | fx_site == "NworsenVert_24m" | fx_site == "Vert_12m" | fx_site == "NworsenVert_18m" |
fx_site == "Vert_18m" | fx_site == "Vert_24m" | fx_site == "Vert_36m" |
fx_site == "Vert_48m" | fx_site == "Vert_48w" | fx_site == "Vert_60m" | fx_site == "Vert_6m" |
fx_site == "Vert_72m" | fx_site == "Vert_72w" ~ 7,
fx_site == "ClinVert_12m" | fx_site == "ClinVert_24m" | fx_site == "ClinVert_36m" |
fx_site == "ClinVert_48m" | fx_site == "ClinVert_72m" | fx_site == "ClinVert_72w" ~ 8,
fx_site == "Hip_18m" | fx_site == "Hip_24m" | fx_site == "Hip_36m" | fx_site == "Hip_60m" ~ 9,
fx_site == "Forearm_60m" | fx_site == "ForearmWrist_72m" | fx_site == "Wrist_24m" ~ 10))
var_lab(fi_final$fx_code1) = "Fracture sites"
val_lab(fi_final$fx_code1) = num_lab("
1 Any_fx
2 Clin_fx
3 OFx
4 MOF
5 Dif_comb
6 NonVert_fx
7 Vert_fx
8 ClinVert_fx
9 Hip
10 Forearm")
table(fi_final$fx_code1)
##
## Any_fx Clin_fx OFx MOF Dif_comb NonVert_fx
## 4 15 4 6 2 25
## Vert_fx ClinVert_fx Hip Forearm
## 70 14 11 3
fi_final = fi_final %>%
mutate(fx_code2 = case_when(fx_code1 == "1" | fx_code1 == "2" ~ 1,
fx_code1 == "3" | fx_code1 == "4" | fx_code1 == "5" ~ 2,
fx_code1 == "6" ~ 3,
fx_code1 == "7" ~ 4,
fx_code1 == "8" ~ 5,
fx_code1 == "9" ~ 6,
fx_code1 == "10" ~ 7))
var_lab(fi_final$fx_code2) = "Fracture sites"
val_lab(fi_final$fx_code2) = num_lab("
1 Any
2 Osteoporotic
3 Non-Vertebrae
4 Vertebrae
5 Clinical Vertebrae
6 Hip
7 Forearm")
table(fi_final$fx_code2)
##
## Any Osteoporotic Non-Vertebrae Vertebrae
## 19 12 25 70
## Clinical Vertebrae Hip Forearm
## 14 11 3
table(fi$intervention)
##
## Abaloparatide Alendronate Calcium
## 5 8 3
## Calcium + vit D Denosumab Ibandronate daily
## 11 9 3
## Ibandronate intermittent Minodronate PTH
## 3 4 1
## Risedronate_25 Risedronate_50 Risendronate
## 1 2 5
## Romosozumab Strontium Ranelate Teriparatide
## 28 17 13
## Teriparatide_20 Teriparatide_40 Vit D
## 8 5 3
## Zoledronate
## 25
fi_final = fi_final %>%
mutate(interv_code1 = case_when(intervention == "Alendronate" ~ 1.1,
intervention == "Ibandronate daily" | intervention == "Ibandronate intermittent" ~ 1.2,
intervention == "Risendronate" | intervention == "Risedronate_25" | intervention == "Risedronate_50" ~ 1.3,
intervention == "Minodronate" ~ 1.4,
intervention == "Zoledronate" ~ 1.5,
intervention == "Teriparatide" | intervention == "Teriparatide_20" |
intervention == "Teriparatide_40" | intervention == "PTH" ~ 2.1,
intervention == "Abaloparatide" ~ 2.2,
intervention == "Romosozumab" ~ 3,
intervention == "Denosumab" ~ 4,
intervention == "Strontium Ranelate" ~ 5,
intervention == "Calcium" | intervention == "Calcium + vit D" | intervention == "Vit D" ~ 6))
var_lab(fi_final$interv_code1) = "Interventions"
val_lab(fi_final$interv_code1) = num_lab("
1.1 Alendronate
1.2 Ibandronate
1.3 Risedronate
1.4 Minodronate
1.5 Zoledronate
2.1 Teriparatide
2.2 Abaloparatide
3 Romosozumab
4 Denosumab
5 Strontium_ranelate
6 Calcium_VitD")
table(fi_final$interv_code1)
##
## Alendronate Ibandronate Risedronate Minodronate
## 8 6 8 4
## Zoledronate Teriparatide Abaloparatide Romosozumab
## 25 27 5 28
## Denosumab Strontium_ranelate Calcium_VitD
## 9 17 17
fi_final = fi_final %>%
mutate(interv_code2 = case_when(intervention == "Alendronate" | intervention == "Ibandronate daily" |
intervention == "Ibandronate intermittent" | intervention == "Risendronate" | intervention == "Risedronate_25" | intervention == "Risedronate_50" |
intervention == "Minodronate" | intervention == "Zoledronate" ~ 1,
intervention == "Teriparatide" | intervention == "Teriparatide_20" |
intervention == "Teriparatide_40" | intervention == "Abaloparatide" | intervention == "PTH" ~ 2,
intervention == "Romosozumab" ~ 3,
intervention == "Denosumab" ~ 4,
intervention == "Strontium Ranelate" ~ 5,
intervention == "Calcium" | intervention == "Calcium + vit D" | intervention == "Vit D" ~ 6))
var_lab(fi_final$interv_code2) = "Interventions"
val_lab(fi_final$interv_code2) = num_lab("
1 Bisphosphonates
2 PTH analog
3 Romosozumab
4 Denosumab
5 Strontium_ranelate
6 Calcium_VitD")
table(fi_final$interv_code2)
##
## Bisphosphonates PTH analog Romosozumab Denosumab
## 51 32 28 9
## Strontium_ranelate Calcium_VitD
## 17 17
table(fi$journal)
##
## Am J Clin Nutr Ann Intern Med Arth Rheu BMJ JAMA
## 1 1 4 7 11
## JBMR JCEM JECM Lancet NEJM
## 6 8 5 10 81
## OI
## 20
fi_final = fi_final %>%
mutate(journal_code1 = case_when(journal == "NEJM" ~ 1,
journal == "Lancet" ~ 2,
journal == "BMJ" ~ 3,
journal == "JAMA" ~ 4,
journal == "Ann Intern Med" ~ 5,
journal == "JBMR" ~ 6,
journal == "JCEM" | journal == "JECM" ~ 7,
journal == "OI" ~ 8,
journal == "Am J Clin Nutr" | journal == "Arth Rheu" ~ 9))
var_lab(fi_final$journal_code1) = "Journal"
val_lab(fi_final$journal_code1) = num_lab("
1 NEJM
2 Lancet
3 BMJ
4 JAMA
5 Ann Intern Med
6 JBMR
7 JCEM
8 OI
9 Other")
table(fi_final$journal_code1)
##
## NEJM Lancet BMJ JAMA Ann Intern Med
## 81 10 7 11 1
## JBMR JCEM OI Other
## 6 13 20 5
fi_final = fi_final %>%
mutate(journal_code2 = case_when(journal == "NEJM" ~ 1,
journal == "Lancet" ~ 2,
journal == "BMJ" ~ 3,
journal == "JAMA" ~ 4,
journal == "Ann Intern Med" ~ 5,
journal == "JBMR" ~ 6,
journal == "JCEM" | journal == "JECM" ~ 7,
journal == "OI" | journal == "Am J Clin Nutr" | journal == "Arth Rheu" ~ 8))
var_lab(fi_final$journal_code2) = "Journal"
val_lab(fi_final$journal_code2) = num_lab("
1 NEJM
2 Lancet
3 BMJ
4 JAMA
5 Ann Intern Med
6 JBMR
7 JCEM
8 Other")
table(fi_final$journal_code2)
##
## NEJM Lancet BMJ JAMA Ann Intern Med
## 81 10 7 11 1
## JBMR JCEM Other
## 6 13 25
var_lab(fi_final$outcome) = "Types of fracture outcome"
val_lab(fi_final$outcome) = num_lab("
1 Binary
2 Time-to-event")
var_lab(fi_final$timing) = "Timing of outcome assessed"
val_lab(fi_final$outcome) = num_lab("
1 0-6m
2 >6-12m
3 >12-18m
4 >18-24m
5 >24-36m
6 >36-48m
7 >48-60m
8 >60-72m
9 >72m")
fi_final = fi_final %>%
mutate(sex = case_when(women_per == 0 ~ "Men",
women_per == 1 ~ "Women",
women_per > 0 & women_per < 1 ~ "Both"))
var_lab(fi_final$sex) = "Sex"
table(fi_final$sex)
##
## Both Men Women
## 19 10 125
fi_final = fi_final %>%
mutate(placebo = case_when(control == "Placebo" ~ "Placebo",
control == "Alendronate" | control == "Risedronate" ~ "Active"))
var_lab(fi_final$placebo) = "Placebo"
table(fi_final$placebo)
##
## Active Placebo
## 30 124
All documented analyses (some with significant results from Cox PH might turn out to be statistically non-significant using logistic regression) n= 9 analyses with P>0.05 from logistic regression will be excluded (NO studies are excluded)
fi_screen = frag.studies(e_con, n_control, e_intv, n_interven, data = fi_final, methods = "RR")
fi_screen
## The input dataset contains 154 studies
## Significance level = 0.05
## Null hypothesis: RR = 1
## p-value (two-sided) is based on:
## relative risk
##
## Fragility index (FI) and fragility quotient (FQ):
## Based on relative risk,
## 145 studies yield significance with
## median FI = 9, range 1-171, IQR 4-19 and
## median FQ = 0.5%, range 0.0%-9.7%, IQR 0.2%-1.0%;
## 9 studies yield non-significance with
## median FI = 1, range 1-16, IQR 1-4 and
## median FQ = 0.1%, range 0.0%-1.4%, IQR 0.0%-0.9%;
## overall, among all studies,
## median FI = 8, range 1-171, IQR 3-18 and
## median FQ = 0.5%, range 0.0%-9.7%, IQR 0.2%-1.0%
fi_final$Pval_screen = fi_screen$pval
Only analyses with statistically significant results from logistic regression/Fisher exact test (binary outcome) are included
fi_sig = subset(fi_final, Pval_screen<= 0.05)
fi_only_sig = frag.studies(e_con, n_control, e_intv, n_interven, data = fi_sig, methods = "RR")
fi_only_sig
## The input dataset contains 145 studies
## Significance level = 0.05
## Null hypothesis: RR = 1
## p-value (two-sided) is based on:
## relative risk
##
## Fragility index (FI) and fragility quotient (FQ):
## Based on relative risk,
## 145 studies yield significance with
## median FI = 9, range 1-171, IQR 4-19 and
## median FQ = 0.5%, range 0.0%-9.7%, IQR 0.2%-1.0%;
## 0 study yields non-significance
## overall, among all studies,
## median FI = 9, range 1-171, IQR 4-19 and
## median FQ = 0.5%, range 0.0%-9.7%, IQR 0.2%-1.0%
plot(fi_only_sig, bar = FALSE, freq = FALSE)
fi_sig$FI_final = fi_only_sig$FI
fi_sig$FQ_final = fi_only_sig$FQ
fi_sig$Pval_final = fi_only_sig$pval
write.csv(fi_final, "C:\\Thach\\Research projects\\Nick's projects\\FI for fracture efficacy\\Analysis\\fi_final.csv", row.names = FALSE)
n= 145 analyses from all 26 studies (+ 6 extended studies)
Characteristics by analyses
fi_sig$missing_fi[fi_sig$rep_loss > fi_sig$FI_final] = 1
fi_sig$missing_fi[fi_sig$rep_loss <= fi_sig$FI_final] = 0
is.na(fi_sig$rep_loss)
## [1] FALSE TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [13] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [25] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [37] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [49] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE
## [61] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE
## [73] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [85] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE
## [97] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
## [109] TRUE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE
## [121] FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE FALSE
## [133] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE
## [145] TRUE
fi_sig$missing_fi[fi_sig$rep_loss == NA] = NA
fi_sig$fi4[fi_sig$FI_final>4] = "FI > 4"
fi_sig$fi4[fi_sig$FI_final<=4] = "FI <= 4"
table1(~ as.factor(fx_code2) + as.factor(interv_code2) + as.factor(journal_code1) + as.factor(placebo) + sex + HR + loghr + no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) + as.factor(fi4), data = fi_sig, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]" ))
Overall (N=145) |
|
---|---|
as.factor(fx_code2) | |
Any | 18 (12.4%) |
Osteoporotic | 11 (7.6%) |
Non-Vertebrae | 21 (14.5%) |
Vertebrae | 69 (47.6%) |
Clinical Vertebrae | 14 (9.7%) |
Hip | 9 (6.2%) |
Forearm | 3 (2.1%) |
as.factor(interv_code2) | |
Bisphosphonates | 48 (33.1%) |
PTH analog | 30 (20.7%) |
Romosozumab | 28 (19.3%) |
Denosumab | 9 (6.2%) |
Strontium_ranelate | 15 (10.3%) |
Calcium_VitD | 15 (10.3%) |
as.factor(journal_code1) | |
NEJM | 79 (54.5%) |
Lancet | 9 (6.2%) |
BMJ | 5 (3.4%) |
JAMA | 10 (6.9%) |
Ann Intern Med | 1 (0.7%) |
JBMR | 6 (4.1%) |
JCEM | 12 (8.3%) |
OI | 19 (13.1%) |
Other | 4 (2.8%) |
as.factor(placebo) | |
Active | 29 (20.0%) |
Placebo | 116 (80.0%) |
Sex | |
Both | 16 (11.0%) |
Men | 10 (6.9%) |
Women | 119 (82.1%) |
HR | |
Mean (SD) | 0.494 (0.188) |
Median [Q1, Q3] | 0.520 [0.350, 0.640] |
Median [min, max] | 0.520 [0.0600, 0.850] |
loghr | |
Mean (SD) | -0.806 (0.498) |
Median [Q1, Q3] | -0.654 [-1.05, -0.446] |
Median [min, max] | -0.654 [-2.81, -0.163] |
no_rand | |
Mean (SD) | 2900 (2300) |
Median [Q1, Q3] | 1960 [1220, 4090] |
Median [min, max] | 1960 [450, 7870] |
active_sample | |
Mean (SD) | 2540 (2080) |
Median [Q1, Q3] | 1770 [1060, 3650] |
Median [min, max] | 1770 [339, 7810] |
n_event | |
Mean (SD) | 164 (170) |
Median [Q1, Q3] | 91.0 [52.0, 223] |
Median [min, max] | 91.0 [10.0, 764] |
FI_final | |
Mean (SD) | 16.6 (23.8) |
Median [Q1, Q3] | 9.00 [4.00, 19.0] |
Median [min, max] | 9.00 [1.00, 171] |
FQ_final | |
Mean (SD) | 0.00815 (0.0106) |
Median [Q1, Q3] | 0.00505 [0.00230, 0.00955] |
Median [min, max] | 0.00505 [0.000151, 0.0966] |
as.factor(missing_fi) | |
0 | 10 (6.9%) |
1 | 86 (59.3%) |
Missing | 49 (33.8%) |
as.factor(fi4) | |
FI <= 4 | 47 (32.4%) |
FI > 4 | 98 (67.6%) |
Characteristics by studies
fi_sig_st = subset(fi_sig, study >= 1)
table1(~ as.factor(interv_code2) + as.factor(journal_code1) + as.factor(placebo) + sex + no_rand, data = fi_sig_st, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]" ))
Overall (N=28) |
|
---|---|
as.factor(interv_code2) | |
Bisphosphonates | 12 (42.9%) |
PTH analog | 5 (17.9%) |
Romosozumab | 2 (7.1%) |
Denosumab | 2 (7.1%) |
Strontium_ranelate | 2 (7.1%) |
Calcium_VitD | 5 (17.9%) |
as.factor(journal_code1) | |
NEJM | 12 (42.9%) |
Lancet | 2 (7.1%) |
BMJ | 1 (3.6%) |
JAMA | 3 (10.7%) |
Ann Intern Med | 1 (3.6%) |
JBMR | 1 (3.6%) |
JCEM | 2 (7.1%) |
OI | 5 (17.9%) |
Other | 1 (3.6%) |
as.factor(placebo) | |
Active | 3 (10.7%) |
Placebo | 25 (89.3%) |
Sex | |
Both | 6 (21.4%) |
Men | 2 (7.1%) |
Women | 20 (71.4%) |
no_rand | |
Mean (SD) | 2520 (2130) |
Median [Q1, Q3] | 1780 [1170, 2830] |
Median [min, max] | 1780 [450, 7870] |
table1(~ as.factor(interv_code2) + as.factor(journal_code1) + as.factor(placebo) + sex + no_rand, data = fi_sig, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]" ))
Overall (N=145) |
|
---|---|
as.factor(interv_code2) | |
Bisphosphonates | 48 (33.1%) |
PTH analog | 30 (20.7%) |
Romosozumab | 28 (19.3%) |
Denosumab | 9 (6.2%) |
Strontium_ranelate | 15 (10.3%) |
Calcium_VitD | 15 (10.3%) |
as.factor(journal_code1) | |
NEJM | 79 (54.5%) |
Lancet | 9 (6.2%) |
BMJ | 5 (3.4%) |
JAMA | 10 (6.9%) |
Ann Intern Med | 1 (0.7%) |
JBMR | 6 (4.1%) |
JCEM | 12 (8.3%) |
OI | 19 (13.1%) |
Other | 4 (2.8%) |
as.factor(placebo) | |
Active | 29 (20.0%) |
Placebo | 116 (80.0%) |
Sex | |
Both | 16 (11.0%) |
Men | 10 (6.9%) |
Women | 119 (82.1%) |
no_rand | |
Mean (SD) | 2900 (2300) |
Median [Q1, Q3] | 1960 [1220, 4090] |
Median [min, max] | 1960 [450, 7870] |
Distribution of effect sizes (HR/RR and logHR)
p = ggplot(data = fi_sig, aes(x = HR))
p1 = p + geom_histogram(color = "white", fill = "blue") + labs(x = "Effect sizes of the intervention benefit", y = "Number") + theme_bw()
p = ggplot(data = fi_sig, aes(x = loghr))
p2 = p + geom_histogram(color = "white", fill = "blue") + labs(x = "Log(Effect sizes)", y = "Number") + theme_bw()
grid.arrange(p1, p2, nrow = 1, top = textGrob("Distribution of effect sizes", gp = gpar(fontsize = 20, font = 1)))
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Relationship between sample size and effect sizes
p = ggplot(data = fi_sig, aes(x = no_rand, y = HR))
p.1 = p + geom_point() + geom_smooth(method = "lm", formula = y ~ x + I(x^2)) + labs(title = "A. Effect size of the intervention benefit", x = "Number of participants at randomisation", y = "Effect sizes of the intervention benefit") + theme_bw()
p = ggplot(data = fi_sig, aes(x = no_rand, y = loghr))
p.2 = p + geom_point() + geom_smooth(method = "lm", formula = y ~ x + I(x^2)) + labs(title = "B. Logarithm of effect size", x = "Number of participants at randomisation", y = "Log(Effect sizes)") + theme_bw()
grid.arrange(p.1, p.2, nrow = 1, top = textGrob("Correlation between effect size and sample size", gp = gpar(fontsize = 20, font = 1)))
Relationship between sample size/active sample/no. events and FI
p = ggplot(data = fi_sig, aes(x = no_rand, y = FI_final))
p1 = p + geom_point() + geom_smooth() + labs(title = "A. Number of participants at randomisation", x = "Number of participants at randomisation", y = "Fragility index") + theme_bw()
p0 = ggplot(data = fi_sig, aes(x = active_sample, y = FI_final))
p2 = p0 + geom_point() + geom_smooth() + labs(x = "Number of participants included in the analyses", y = "Fragility index") + theme_bw()
p.0 = ggplot(data = fi_sig, aes(x = n_event, y = FI_final))
p3 = p.0 + geom_point() + geom_smooth() + labs(title = "B. Number of participants with fractures", x = "Number of participants with fractures", y = "Fragility index") + theme_bw()
#grid.arrange(p1, p2, p3, nrow = 1)
grid.arrange(p1, p3, nrow = 1, top = textGrob("Relationships between Fragility index and sample size", gp = gpar(fontsize = 20, font = 3)))
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | as.factor(fx_code1), data = fi_sig, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]"))
Any_fx (N=3) |
Clin_fx (N=15) |
OFx (N=4) |
MOF (N=6) |
Dif_comb (N=1) |
NonVert_fx (N=21) |
Vert_fx (N=69) |
ClinVert_fx (N=14) |
Hip (N=9) |
Forearm (N=3) |
Overall (N=145) |
|
---|---|---|---|---|---|---|---|---|---|---|---|
no_rand | |||||||||||
Mean (SD) | 1850 (423) | 3140 (2520) | 2780 (1580) | 3800 (2810) | NA | 3680 (2400) | 2560 (2260) | 2610 (2370) | 3950 (2300) | 1830 (314) | 2900 (2300) |
Median [Q1, Q3] | 1770 [1620, 2030] | 2030 [1370, 4260] | 3050 [1730, 4090] | 2870 [1430, 6410] | 2690 [2690, 2690] | 3270 [1630, 5090] | 1630 [1140, 4090] | 1960 [1650, 2100] | 3270 [2300, 4090] | 2000 [1740, 2010] | 1960 [1220, 4090] |
Median [min, max] | 1770 [1470, 2300] | 2030 [549, 7740] | 3050 [930, 4090] | 2870 [1360, 7180] | 2690 [2690, 2690] | 3270 [450, 7870] | 1630 [549, 7870] | 1960 [549, 7870] | 3270 [1770, 7870] | 2000 [1470, 2030] | 1960 [450, 7870] |
active_sample | |||||||||||
Mean (SD) | 1830 (439) | 2750 (2330) | 2670 (1490) | 3330 (2410) | NA | 3240 (2190) | 2250 (2050) | 2220 (2240) | 3260 (1920) | 1450 (760) | 2540 (2080) |
Median [Q1, Q3] | 1770 [1600, 2030] | 2010 [881, 4070] | 2890 [1690, 3870] | 2450 [1360, 5460] | 2690 [2690, 2690] | 2790 [1630, 4940] | 1350 [892, 3400] | 1650 [783, 2010] | 2380 [1980, 3320] | 1740 [1160, 1880] | 1770 [1060, 3650] |
Median [min, max] | 1770 [1430, 2300] | 2010 [426, 6690] | 2890 [930, 3980] | 2450 [1270, 6380] | 2690 [2690, 2690] | 2790 [389, 6670] | 1350 [426, 7390] | 1650 [339, 7810] | 2380 [1770, 6600] | 1740 [590, 2030] | 1770 [339, 7810] |
n_event | |||||||||||
Mean (SD) | 354 (290) | 234 (205) | 334 (251) | 128 (123) | NA | 272 (213) | 122 (140) | 80.9 (60.0) | 158 (86.9) | 94.7 (29.7) | 164 (170) |
Median [Q1, Q3] | 475 [249, 519] | 189 [76.0, 350] | 318 [245, 407] | 78.5 [47.0, 159] | 147 [147, 147] | 225 [85.0, 395] | 72.0 [39.0, 128] | 63.0 [51.0, 95.5] | 140 [106, 190] | 99.0 [81.0, 111] | 91.0 [52.0, 223] |
Median [min, max] | 475 [23.0, 563] | 189 [31.0, 764] | 318 [44.0, 658] | 78.5 [34.0, 355] | 147 [147, 147] | 225 [37.0, 680] | 72.0 [10.0, 696] | 63.0 [19.0, 207] | 140 [58.0, 315] | 99.0 [63.0, 122] | 91.0 [10.0, 764] |
FI_final | |||||||||||
Mean (SD) | 16.7 (11.9) | 16.2 (22.1) | 32.3 (26.2) | 11.2 (8.35) | NA | 10.2 (11.2) | 21.1 (30.1) | 11.5 (13.2) | 6.67 (5.34) | 5.00 (3.61) | 16.6 (23.8) |
Median [Q1, Q3] | 22.0 [12.5, 23.5] | 8.00 [5.00, 14.5] | 31.5 [22.8, 41.0] | 9.00 [6.00, 13.5] | 4.00 [4.00, 4.00] | 5.00 [2.00, 17.0] | 11.0 [4.00, 23.0] | 6.50 [3.25, 11.8] | 5.00 [2.00, 11.0] | 4.00 [3.00, 6.50] | 9.00 [4.00, 19.0] |
Median [min, max] | 22.0 [3.00, 25.0] | 8.00 [2.00, 89.0] | 31.5 [1.00, 65.0] | 9.00 [3.00, 26.0] | 4.00 [4.00, 4.00] | 5.00 [1.00, 43.0] | 11.0 [1.00, 171] | 6.50 [1.00, 42.0] | 5.00 [1.00, 16.0] | 4.00 [2.00, 9.00] | 9.00 [1.00, 171] |
FQ_final | |||||||||||
Mean (SD) | 0.00847 (0.00558) | 0.00735 (0.00511) | 0.0106 (0.00776) | 0.00442 (0.00292) | NA | 0.00337 (0.00288) | 0.0116 (0.0140) | 0.00514 (0.00300) | 0.00254 (0.00247) | 0.00352 (0.00161) | 0.00815 (0.0106) |
Median [Q1, Q3] | 0.0109 [0.00647, 0.0117] | 0.00714 [0.00236, 0.0104] | 0.0122 [0.00592, 0.0169] | 0.00454 [0.00227, 0.00699] | 0.00149 [0.00149, 0.00149] | 0.00255 [0.00114, 0.00454] | 0.00673 [0.00314, 0.0162] | 0.00462 [0.00312, 0.00533] | 0.00150 [0.00101, 0.00337] | 0.00339 [0.00268, 0.00429] | 0.00505 [0.00230, 0.00955] |
Median [min, max] | 0.0109 [0.00209, 0.0125] | 0.00714 [0.00124, 0.0166] | 0.0122 [0.00108, 0.0169] | 0.00454 [0.000783, 0.00736] | 0.00149 [0.00149, 0.00149] | 0.00255 [0.000203, 0.0105] | 0.00673 [0.000151, 0.0966] | 0.00462 [0.00205, 0.0125] | 0.00150 [0.000303, 0.00695] | 0.00339 [0.00197, 0.00519] | 0.00505 [0.000151, 0.0966] |
as.factor(missing_fi) | |||||||||||
0 | 0 (0%) | 1 (6.7%) | 2 (50.0%) | 0 (0%) | 0 (0%) | 1 (4.8%) | 5 (7.2%) | 0 (0%) | 0 (0%) | 1 (33.3%) | 10 (6.9%) |
1 | 1 (33.3%) | 10 (66.7%) | 2 (50.0%) | 4 (66.7%) | 1 (100%) | 13 (61.9%) | 41 (59.4%) | 6 (42.9%) | 6 (66.7%) | 2 (66.7%) | 86 (59.3%) |
Missing | 2 (66.7%) | 4 (26.7%) | 0 (0%) | 2 (33.3%) | 0 (0%) | 7 (33.3%) | 23 (33.3%) | 8 (57.1%) | 3 (33.3%) | 0 (0%) | 49 (33.8%) |
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | as.factor(fx_code2), data = fi_sig, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]"))
Any (N=18) |
Osteoporotic (N=11) |
Non-Vertebrae (N=21) |
Vertebrae (N=69) |
Clinical Vertebrae (N=14) |
Hip (N=9) |
Forearm (N=3) |
Overall (N=145) |
|
---|---|---|---|---|---|---|---|---|
no_rand | ||||||||
Mean (SD) | 2920 (2340) | 3330 (2230) | 3680 (2400) | 2560 (2260) | 2610 (2370) | 3950 (2300) | 1830 (314) | 2900 (2300) |
Median [Q1, Q3] | 2010 [1390, 4090] | 2690 [1500, 4090] | 3270 [1630, 5090] | 1630 [1140, 4090] | 1960 [1650, 2100] | 3270 [2300, 4090] | 2000 [1740, 2010] | 1960 [1220, 4090] |
Median [min, max] | 2010 [549, 7740] | 2690 [930, 7180] | 3270 [450, 7870] | 1630 [549, 7870] | 1960 [549, 7870] | 3270 [1770, 7870] | 2000 [1470, 2030] | 1960 [450, 7870] |
active_sample | ||||||||
Mean (SD) | 2600 (2150) | 3030 (1920) | 3240 (2190) | 2250 (2050) | 2220 (2240) | 3260 (1920) | 1450 (760) | 2540 (2080) |
Median [Q1, Q3] | 1890 [1140, 3690] | 2690 [1360, 3910] | 2790 [1630, 4940] | 1350 [892, 3400] | 1650 [783, 2010] | 2380 [1980, 3320] | 1740 [1160, 1880] | 1770 [1060, 3650] |
Median [min, max] | 1890 [426, 6690] | 2690 [930, 6380] | 2790 [389, 6670] | 1350 [426, 7390] | 1650 [339, 7810] | 2380 [1770, 6600] | 1740 [590, 2030] | 1770 [339, 7810] |
n_event | ||||||||
Mean (SD) | 254 (216) | 205 (193) | 272 (213) | 122 (140) | 80.9 (60.0) | 158 (86.9) | 94.7 (29.7) | 164 (170) |
Median [Q1, Q3] | 210 [76.0, 401] | 147 [50.0, 318] | 225 [85.0, 395] | 72.0 [39.0, 128] | 63.0 [51.0, 95.5] | 140 [106, 190] | 99.0 [81.0, 111] | 91.0 [52.0, 223] |
Median [min, max] | 210 [23.0, 764] | 147 [34.0, 658] | 225 [37.0, 680] | 72.0 [10.0, 696] | 63.0 [19.0, 207] | 140 [58.0, 315] | 99.0 [63.0, 122] | 91.0 [10.0, 764] |
FI_final | ||||||||
Mean (SD) | 16.3 (20.5) | 18.2 (19.2) | 10.2 (11.2) | 21.1 (30.1) | 11.5 (13.2) | 6.67 (5.34) | 5.00 (3.61) | 16.6 (23.8) |
Median [Q1, Q3] | 9.00 [5.00, 20.3] | 9.00 [4.50, 28.0] | 5.00 [2.00, 17.0] | 11.0 [4.00, 23.0] | 6.50 [3.25, 11.8] | 5.00 [2.00, 11.0] | 4.00 [3.00, 6.50] | 9.00 [4.00, 19.0] |
Median [min, max] | 9.00 [2.00, 89.0] | 9.00 [1.00, 65.0] | 5.00 [1.00, 43.0] | 11.0 [1.00, 171] | 6.50 [1.00, 42.0] | 5.00 [1.00, 16.0] | 4.00 [2.00, 9.00] | 9.00 [1.00, 171] |
FQ_final | ||||||||
Mean (SD) | 0.00753 (0.00504) | 0.00641 (0.00585) | 0.00337 (0.00288) | 0.0116 (0.0140) | 0.00514 (0.00300) | 0.00254 (0.00247) | 0.00352 (0.00161) | 0.00815 (0.0106) |
Median [Q1, Q3] | 0.00731 [0.00235, 0.0115] | 0.00662 [0.00185, 0.00745] | 0.00255 [0.00114, 0.00454] | 0.00673 [0.00314, 0.0162] | 0.00462 [0.00312, 0.00533] | 0.00150 [0.00101, 0.00337] | 0.00339 [0.00268, 0.00429] | 0.00505 [0.00230, 0.00955] |
Median [min, max] | 0.00731 [0.00124, 0.0166] | 0.00662 [0.000783, 0.0169] | 0.00255 [0.000203, 0.0105] | 0.00673 [0.000151, 0.0966] | 0.00462 [0.00205, 0.0125] | 0.00150 [0.000303, 0.00695] | 0.00339 [0.00197, 0.00519] | 0.00505 [0.000151, 0.0966] |
as.factor(missing_fi) | ||||||||
0 | 1 (5.6%) | 2 (18.2%) | 1 (4.8%) | 5 (7.2%) | 0 (0%) | 0 (0%) | 1 (33.3%) | 10 (6.9%) |
1 | 11 (61.1%) | 7 (63.6%) | 13 (61.9%) | 41 (59.4%) | 6 (42.9%) | 6 (66.7%) | 2 (66.7%) | 86 (59.3%) |
Missing | 6 (33.3%) | 2 (18.2%) | 7 (33.3%) | 23 (33.3%) | 8 (57.1%) | 3 (33.3%) | 0 (0%) | 49 (33.8%) |
kruskal.test(FI_final ~ fx_code2, data = fi_sig)
##
## Kruskal-Wallis rank sum test
##
## data: FI_final by fx_code2
## Kruskal-Wallis chi-squared = 10.221, df = 6, p-value = 0.1156
kruskal.test(FQ_final ~ fx_code2, data = fi_sig)
##
## Kruskal-Wallis rank sum test
##
## data: FQ_final by fx_code2
## Kruskal-Wallis chi-squared = 24.542, df = 6, p-value = 0.0004149
Box plots
p1 = ggplot(data = fi_sig, aes(y = FI_final, x = as.factor(fx_code2), fill = as.factor(fx_code2))) + geom_boxplot() +
geom_jitter(alpha=0.2) + theme_bw() + theme(legend.position="none") +
labs(title = "Fragility index", x = "Fracture sites", y = "Fragility index") + theme(axis.text.x = element_text(angle = 45, hjust = 1))
p2 = ggplot(data = fi_sig, aes(y = FQ_final, x = as.factor(fx_code2), fill = as.factor(fx_code2))) + geom_boxplot() +
geom_jitter(alpha=0.2) + theme_bw() + theme(legend.position="none") +
labs(title = "Fragility quotient", x = "Fracture sites", y = "Fragility quotient") + theme(axis.text.x = element_text(angle = 45, hjust = 1))
grid.arrange(p1, p2, nrow = 1, top = textGrob("Fragility of evidence for anti-fracture efficacy by fracture sites", gp = gpar(fontsize = 20, font = 1)))
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | as.factor(interv_code1), data = fi_sig, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]"))
Alendronate (N=7) |
Ibandronate (N=6) |
Risedronate (N=8) |
Minodronate (N=3) |
Zoledronate (N=24) |
Teriparatide (N=26) |
Abaloparatide (N=4) |
Romosozumab (N=28) |
Denosumab (N=9) |
Strontium_ranelate (N=15) |
Calcium_VitD (N=15) |
Overall (N=145) |
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
no_rand | ||||||||||||
Mean (SD) | 2700 (1190) | 1960 (0) | 1240 (420) | 704 (0) | 3020 (2820) | 1110 (442) | 1520 (253) | 5420 (1560) | 5020 (3370) | 2610 (1570) | 2320 (965) | 2900 (2300) |
Median [Q1, Q3] | 2030 [2030, 3230] | 1960 [1960, 1960] | 1280 [815, 1630] | 704 [704, 704] | 2000 [1200, 3530] | 1100 [705, 1360] | 1650 [1520, 1650] | 4090 [4090, 7180] | 7870 [1470, 7870] | 1650 [1650, 3750] | 2300 [1620, 3270] | 1960 [1220, 4090] |
Median [min, max] | 2030 [1910, 4430] | 1960 [1960, 1960] | 1280 [814, 1630] | 704 [704, 704] | 2000 [665, 7740] | 1100 [549, 2530] | 1650 [1140, 1650] | 4090 [4090, 7180] | 7870 [1470, 7870] | 1650 [1220, 5090] | 2300 [450, 3270] | 1960 [450, 7870] |
active_sample | ||||||||||||
Mean (SD) | 2640 (1120) | 1950 (0) | 1050 (393) | 575 (27.7) | 2450 (2280) | 908 (357) | 1260 (118) | 4910 (1500) | 4600 (3080) | 2330 (1490) | 1810 (830) | 2540 (2080) |
Median [Q1, Q3] | 2030 [1990, 3080] | 1950 [1950, 1950] | 1020 [684, 1340] | 582 [563, 590] | 1430 [958, 2920] | 887 [567, 1090] | 1270 [1230, 1310] | 4040 [3640, 6640] | 6600 [1350, 7390] | 1440 [1390, 3030] | 1770 [1350, 2380] | 1770 [1060, 3650] |
Median [min, max] | 2030 [1910, 4430] | 1950 [1950, 1950] | 1020 [663, 1630] | 582 [544, 598] | 1430 [339, 6550] | 887 [426, 1700] | 1270 [1110, 1400] | 4040 [3240, 6910] | 6600 [1350, 7810] | 1440 [1150, 4940] | 1770 [389, 2790] | 1770 [339, 7810] |
n_event | ||||||||||||
Mean (SD) | 181 (141) | 81.5 (23.1) | 88.1 (37.9) | 79.3 (20.5) | 165 (206) | 50.3 (24.8) | 43.3 (24.1) | 209 (146) | 140 (180) | 347 (221) | 223 (163) | 164 (170) |
Median [Q1, Q3] | 121 [68.0, 273] | 70.5 [64.5, 101] | 68.5 [64.8, 99.3] | 79.0 [69.0, 89.5] | 72.5 [38.5, 236] | 45.0 [34.0, 59.0] | 39.0 [30.3, 52.0] | 173 [106, 272] | 69.0 [29.0, 121] | 330 [166, 504] | 176 [96.0, 335] | 91.0 [52.0, 223] |
Median [min, max] | 121 [56.0, 409] | 70.5 [63.0, 112] | 68.5 [58.0, 154] | 79.0 [59.0, 100] | 72.5 [13.0, 764] | 45.0 [14.0, 100] | 39.0 [19.0, 76.0] | 173 [10.0, 658] | 69.0 [15.0, 531] | 330 [66.0, 696] | 176 [37.0, 563] | 91.0 [10.0, 764] |
FI_final | ||||||||||||
Mean (SD) | 13.1 (12.6) | 8.50 (4.68) | 7.25 (4.83) | 10.0 (9.17) | 22.2 (37.7) | 8.69 (7.26) | 7.50 (4.36) | 22.7 (19.2) | 25.1 (43.7) | 25.1 (29.2) | 9.67 (9.01) | 16.6 (23.8) |
Median [Q1, Q3] | 11.0 [5.50, 13.5] | 7.50 [4.50, 12.0] | 7.50 [3.50, 11.0] | 8.00 [5.00, 14.0] | 8.00 [3.00, 21.8] | 6.50 [2.25, 12.5] | 6.50 [4.00, 10.0] | 19.5 [7.00, 31.5] | 4.00 [3.00, 17.0] | 18.0 [4.50, 37.0] | 6.00 [2.00, 16.5] | 9.00 [4.00, 19.0] |
Median [min, max] | 11.0 [3.00, 40.0] | 7.50 [4.00, 15.0] | 7.50 [1.00, 14.0] | 8.00 [2.00, 20.0] | 8.00 [1.00, 171] | 6.50 [1.00, 25.0] | 6.50 [4.00, 13.0] | 19.5 [1.00, 77.0] | 4.00 [2.00, 137] | 18.0 [1.00, 111] | 6.00 [1.00, 25.0] | 9.00 [1.00, 171] |
FQ_final | ||||||||||||
Mean (SD) | 0.00588 (0.00679) | 0.00435 (0.00240) | 0.00832 (0.00658) | 0.0180 (0.0171) | 0.00752 (0.00682) | 0.0107 (0.00919) | 0.00578 (0.00293) | 0.00501 (0.00481) | 0.00432 (0.00546) | 0.0171 (0.0246) | 0.00508 (0.00378) | 0.00815 (0.0106) |
Median [Q1, Q3] | 0.00314 [0.00178, 0.00617] | 0.00384 [0.00231, 0.00615] | 0.00777 [0.00434, 0.00996] | 0.0137 [0.00855, 0.0253] | 0.00535 [0.00316, 0.00983] | 0.00805 [0.00297, 0.0157] | 0.00535 [0.00348, 0.00765] | 0.00354 [0.00147, 0.00629] | 0.00255 [0.00222, 0.00296] | 0.0104 [0.00189, 0.0187] | 0.00353 [0.00243, 0.00659] | 0.00505 [0.00230, 0.00955] |
Median [min, max] | 0.00314 [0.00157, 0.0206] | 0.00384 [0.00205, 0.00768] | 0.00777 [0.000615, 0.0203] | 0.0137 [0.00334, 0.0368] | 0.00535 [0.000887, 0.0301] | 0.00805 [0.00114, 0.0288] | 0.00535 [0.00314, 0.00928] | 0.00354 [0.000151, 0.0188] | 0.00255 [0.000303, 0.0185] | 0.0104 [0.000203, 0.0966] | 0.00353 [0.000567, 0.0125] | 0.00505 [0.000151, 0.0966] |
as.factor(missing_fi) | ||||||||||||
0 | 0 (0%) | 0 (0%) | 0 (0%) | 0 (0%) | 5 (20.8%) | 2 (7.7%) | 0 (0%) | 2 (7.1%) | 0 (0%) | 1 (6.7%) | 0 (0%) | 10 (6.9%) |
1 | 5 (71.4%) | 0 (0%) | 7 (87.5%) | 3 (100%) | 19 (79.2%) | 5 (19.2%) | 4 (100%) | 26 (92.9%) | 4 (44.4%) | 3 (20.0%) | 10 (66.7%) | 86 (59.3%) |
Missing | 2 (28.6%) | 6 (100%) | 1 (12.5%) | 0 (0%) | 0 (0%) | 19 (73.1%) | 0 (0%) | 0 (0%) | 5 (55.6%) | 11 (73.3%) | 5 (33.3%) | 49 (33.8%) |
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | as.factor(interv_code2), data = fi_sig, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]"))
Bisphosphonates (N=48) |
PTH analog (N=30) |
Romosozumab (N=28) |
Denosumab (N=9) |
Strontium_ranelate (N=15) |
Calcium_VitD (N=15) |
Overall (N=145) |
|
---|---|---|---|---|---|---|---|
no_rand | |||||||
Mean (SD) | 2400 (2180) | 1160 (442) | 5420 (1560) | 5020 (3370) | 2610 (1570) | 2320 (965) | 2900 (2300) |
Median [Q1, Q3] | 1960 [1200, 2030] | 1100 [1090, 1360] | 4090 [4090, 7180] | 7870 [1470, 7870] | 1650 [1650, 3750] | 2300 [1620, 3270] | 1960 [1220, 4090] |
Median [min, max] | 1960 [665, 7740] | 1100 [549, 2530] | 4090 [4090, 7180] | 7870 [1470, 7870] | 1650 [1220, 5090] | 2300 [450, 3270] | 1960 [450, 7870] |
active_sample | |||||||
Mean (SD) | 2060 (1780) | 955 (356) | 4910 (1500) | 4600 (3080) | 2330 (1490) | 1810 (830) | 2540 (2080) |
Median [Q1, Q3] | 1800 [742, 1970] | 892 [841, 1240] | 4040 [3640, 6640] | 6600 [1350, 7390] | 1440 [1390, 3030] | 1770 [1350, 2380] | 1770 [1060, 3650] |
Median [min, max] | 1800 [339, 6550] | 892 [426, 1700] | 4040 [3240, 6910] | 6600 [1350, 7810] | 1440 [1150, 4940] | 1770 [389, 2790] | 1770 [339, 7810] |
n_event | |||||||
Mean (SD) | 139 (159) | 49.4 (24.5) | 209 (146) | 140 (180) | 347 (221) | 223 (163) | 164 (170) |
Median [Q1, Q3] | 72.5 [58.8, 141] | 44.0 [34.0, 59.0] | 173 [106, 272] | 69.0 [29.0, 121] | 330 [166, 504] | 176 [96.0, 335] | 91.0 [52.0, 223] |
Median [min, max] | 72.5 [13.0, 764] | 44.0 [14.0, 100] | 173 [10.0, 658] | 69.0 [15.0, 531] | 330 [66.0, 696] | 176 [37.0, 563] | 91.0 [10.0, 764] |
FI_final | |||||||
Mean (SD) | 15.9 (27.7) | 8.53 (6.90) | 22.7 (19.2) | 25.1 (43.7) | 25.1 (29.2) | 9.67 (9.01) | 16.6 (23.8) |
Median [Q1, Q3] | 8.50 [4.00, 14.0] | 6.50 [3.00, 12.5] | 19.5 [7.00, 31.5] | 4.00 [3.00, 17.0] | 18.0 [4.50, 37.0] | 6.00 [2.00, 16.5] | 9.00 [4.00, 19.0] |
Median [min, max] | 8.50 [1.00, 171] | 6.50 [1.00, 25.0] | 19.5 [1.00, 77.0] | 4.00 [2.00, 137] | 18.0 [1.00, 111] | 6.00 [1.00, 25.0] | 9.00 [1.00, 171] |
FQ_final | |||||||
Mean (SD) | 0.00767 (0.00754) | 0.0101 (0.00876) | 0.00501 (0.00481) | 0.00432 (0.00546) | 0.0171 (0.0246) | 0.00508 (0.00378) | 0.00815 (0.0106) |
Median [Q1, Q3] | 0.00535 [0.00272, 0.00859] | 0.00741 [0.00325, 0.0137] | 0.00354 [0.00147, 0.00629] | 0.00255 [0.00222, 0.00296] | 0.0104 [0.00189, 0.0187] | 0.00353 [0.00243, 0.00659] | 0.00505 [0.00230, 0.00955] |
Median [min, max] | 0.00535 [0.000615, 0.0368] | 0.00741 [0.00114, 0.0288] | 0.00354 [0.000151, 0.0188] | 0.00255 [0.000303, 0.0185] | 0.0104 [0.000203, 0.0966] | 0.00353 [0.000567, 0.0125] | 0.00505 [0.000151, 0.0966] |
as.factor(missing_fi) | |||||||
0 | 5 (10.4%) | 2 (6.7%) | 2 (7.1%) | 0 (0%) | 1 (6.7%) | 0 (0%) | 10 (6.9%) |
1 | 34 (70.8%) | 9 (30.0%) | 26 (92.9%) | 4 (44.4%) | 3 (20.0%) | 10 (66.7%) | 86 (59.3%) |
Missing | 9 (18.8%) | 19 (63.3%) | 0 (0%) | 5 (55.6%) | 11 (73.3%) | 5 (33.3%) | 49 (33.8%) |
kruskal.test(FI_final ~ interv_code2, data = fi_sig)
##
## Kruskal-Wallis rank sum test
##
## data: FI_final by interv_code2
## Kruskal-Wallis chi-squared = 13.943, df = 5, p-value = 0.01597
kruskal.test(FQ_final ~ interv_code2, data = fi_sig)
##
## Kruskal-Wallis rank sum test
##
## data: FQ_final by interv_code2
## Kruskal-Wallis chi-squared = 11.645, df = 5, p-value = 0.03999
Box plots
p1 = ggplot(data = fi_sig, aes(y = FI_final, x = as.factor(interv_code2), fill = as.factor(interv_code2))) + geom_boxplot() +
geom_jitter(alpha=0.2) + theme_bw() + theme(legend.position="none") +
labs(title = "Fragility index", x = "Pharmacological interventions", y = "Fragility index") + theme(axis.text.x = element_text(angle = 45, hjust = 1))
p2 = ggplot(data = fi_sig, aes(y = FQ_final, x = as.factor(interv_code2), fill = as.factor(interv_code2))) + geom_boxplot() +
geom_jitter(alpha=0.2) + theme_bw() + theme(legend.position="none") +
labs(title = "Fragility quotient", x = "Pharmacological interventions", y = "Fragility quotine") + theme(axis.text.x = element_text(angle = 45, hjust = 1))
grid.arrange(p1, p2, nrow = 1, top = textGrob("Fragility of evidence for anti-fracture efficacy by interventions", gp = gpar(fontsize = 20, font = 1)))
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | as.factor(timing), data = fi_sig, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]" ))
2 (N=26) |
3 (N=18) |
4 (N=48) |
5 (N=35) |
6 (N=6) |
7 (N=5) |
8 (N=7) |
Overall (N=145) |
|
---|---|---|---|---|---|---|---|---|
no_rand | ||||||||
Mean (SD) | 3070 (2370) | 1820 (1190) | 2720 (2210) | 3740 (2870) | 2340 (1650) | 3640 (1980) | 2100 (259) | 2900 (2300) |
Median [Q1, Q3] | 1650 [1360, 4090] | 1650 [578, 3270] | 1410 [1100, 4090] | 1980 [1650, 7740] | 1650 [1120, 3740] | 5090 [1470, 5090] | 2000 [2000, 2000] | 1960 [1220, 4090] |
Median [min, max] | 1650 [578, 7180] | 1650 [549, 3270] | 1410 [665, 7180] | 1980 [450, 7870] | 1650 [930, 4430] | 5090 [1470, 5090] | 2000 [2000, 2690] | 1960 [450, 7870] |
active_sample | ||||||||
Mean (SD) | 2790 (2200) | 1340 (851) | 2450 (2030) | 3230 (2490) | 2090 (1710) | 2930 (2210) | 2000 (315) | 2540 (2080) |
Median [Q1, Q3] | 1390 [1190, 3910] | 1340 [451, 1770] | 1360 [892, 3620] | 1950 [1440, 6050] | 1150 [985, 3390] | 3650 [590, 4940] | 1890 [1860, 1980] | 1770 [1060, 3650] |
Median [min, max] | 1390 [476, 6910] | 1340 [426, 2790] | 1360 [544, 6690] | 1950 [339, 7810] | 1150 [759, 4430] | 3650 [567, 4940] | 1890 [1740, 2690] | 1770 [339, 7810] |
n_event | ||||||||
Mean (SD) | 91.3 (72.9) | 102 (109) | 134 (139) | 236 (196) | 257 (252) | 418 (301) | 186 (127) | 164 (170) |
Median [Q1, Q3] | 65.5 [52.3, 137] | 53.0 [34.5, 142] | 79.5 [42.8, 189] | 142 [83.5, 341] | 163 [81.3, 358] | 537 [122, 671] | 147 [85.5, 281] | 91.0 [52.0, 223] |
Median [min, max] | 65.5 [10.0, 323] | 53.0 [19.0, 375] | 79.5 [14.0, 658] | 142 [23.0, 764] | 163 [44.0, 696] | 537 [70.0, 691] | 147 [48.0, 377] | 91.0 [10.0, 764] |
FI_final | ||||||||
Mean (SD) | 8.31 (8.32) | 8.28 (6.09) | 16.7 (17.0) | 27.1 (37.3) | 24.7 (42.5) | 8.20 (11.7) | 13.6 (9.85) | 16.6 (23.8) |
Median [Q1, Q3] | 5.00 [3.00, 9.75] | 7.50 [4.00, 11.0] | 10.5 [4.00, 23.0] | 15.0 [4.00, 38.5] | 9.50 [4.75, 12.8] | 3.00 [2.00, 5.00] | 10.0 [7.50, 16.5] | 9.00 [4.00, 19.0] |
Median [min, max] | 5.00 [1.00, 30.0] | 7.50 [1.00, 25.0] | 10.5 [1.00, 77.0] | 15.0 [1.00, 171] | 9.50 [1.00, 111] | 3.00 [2.00, 29.0] | 10.0 [4.00, 33.0] | 9.00 [1.00, 171] |
FQ_final | ||||||||
Mean (SD) | 0.00403 (0.00387) | 0.00858 (0.00772) | 0.00859 (0.00830) | 0.00934 (0.00924) | 0.0197 (0.0378) | 0.00330 (0.00292) | 0.00703 (0.00510) | 0.00815 (0.0106) |
Median [Q1, Q3] | 0.00240 [0.00149, 0.00489] | 0.00660 [0.00358, 0.0102] | 0.00540 [0.00304, 0.0119] | 0.00659 [0.00242, 0.0130] | 0.00421 [0.00197, 0.00915] | 0.00339 [0.00101, 0.00353] | 0.00537 [0.00421, 0.00851] | 0.00505 [0.00230, 0.00955] |
Median [min, max] | 0.00240 [0.000151, 0.0150] | 0.00660 [0.000567, 0.0288] | 0.00540 [0.000554, 0.0368] | 0.00659 [0.000203, 0.0361] | 0.00421 [0.00108, 0.0966] | 0.00339 [0.000608, 0.00795] | 0.00537 [0.00149, 0.0169] | 0.00505 [0.000151, 0.0966] |
as.factor(missing_fi) | ||||||||
0 | 1 (3.8%) | 0 (0%) | 3 (6.3%) | 1 (2.9%) | 0 (0%) | 0 (0%) | 5 (71.4%) | 10 (6.9%) |
1 | 20 (76.9%) | 12 (66.7%) | 33 (68.8%) | 16 (45.7%) | 1 (16.7%) | 2 (40.0%) | 2 (28.6%) | 86 (59.3%) |
Missing | 5 (19.2%) | 6 (33.3%) | 12 (25.0%) | 18 (51.4%) | 5 (83.3%) | 3 (60.0%) | 0 (0%) | 49 (33.8%) |
kruskal.test(FI_final ~ timing, data = fi_sig)
##
## Kruskal-Wallis rank sum test
##
## data: FI_final by timing
## Kruskal-Wallis chi-squared = 11.795, df = 6, p-value = 0.06671
kruskal.test(FQ_final ~ timing, data = fi_sig)
##
## Kruskal-Wallis rank sum test
##
## data: FQ_final by timing
## Kruskal-Wallis chi-squared = 11.956, df = 6, p-value = 0.06296
Box plots
p1 = ggplot(data = fi_sig, aes(y = FI_final, x = as.factor(timing), fill = as.factor(timing))) + geom_boxplot() +
geom_jitter(alpha=0.2) + theme_bw() + theme(legend.position="none") +
labs(title = "Fragility index by timing of fracture assessment", x = "Timing of fracture assessment", y = "Fragility index")
p1
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | as.factor(journal_code2), data = fi_sig, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]" ))
NEJM (N=79) |
Lancet (N=9) |
BMJ (N=5) |
JAMA (N=10) |
Ann Intern Med (N=1) |
JBMR (N=6) |
JCEM (N=12) |
Other (N=23) |
Overall (N=145) |
|
---|---|---|---|---|---|---|---|---|---|
no_rand | |||||||||
Mean (SD) | 3880 (2550) | 1660 (352) | 2160 (397) | 2190 (1180) | NA | 1960 (0) | 1320 (1340) | 1590 (1440) | 2900 (2300) |
Median [Q1, Q3] | 3270 [1560, 7180] | 1360 [1360, 2030] | 2300 [1770, 2300] | 1640 [1630, 1650] | 2530 [2530, 2530] | 1960 [1960, 1960] | 578 [571, 1410] | 939 [704, 1560] | 1960 [1220, 4090] |
Median [min, max] | 3270 [450, 7870] | 1360 [1360, 2030] | 2300 [1770, 2690] | 1640 [1630, 4430] | 2530 [2530, 2530] | 1960 [1960, 1960] | 578 [549, 5090] | 939 [665, 5090] | 1960 [450, 7870] |
active_sample | |||||||||
Mean (SD) | 3360 (2330) | 1490 (490) | 2160 (397) | 1950 (1230) | NA | 1950 (0) | 1230 (1350) | 1350 (1320) | 2540 (2080) |
Median [Q1, Q3] | 2790 [1350, 6240] | 1160 [1050, 2030] | 2300 [1770, 2300] | 1390 [1290, 1580] | 1700 [1700, 1700] | 1950 [1950, 1950] | 464 [445, 1410] | 690 [659, 1360] | 1770 [1060, 3650] |
Median [min, max] | 2790 [339, 7810] | 1160 [1050, 2030] | 2300 [1770, 2690] | 1390 [1270, 4430] | 1700 [1700, 1700] | 1950 [1950, 1950] | 464 [426, 4930] | 690 [544, 4940] | 1770 [339, 7810] |
n_event | |||||||||
Mean (SD) | 177 (165) | 115 (96.4) | 352 (167) | 108 (112) | NA | 81.5 (23.1) | 118 (151) | 174 (228) | 164 (170) |
Median [Q1, Q3] | 117 [54.5, 248] | 91.0 [63.0, 100] | 315 [262, 475] | 70.5 [47.5, 112] | 60.0 [60.0, 60.0] | 70.5 [64.5, 101] | 38.0 [28.5, 145] | 69.0 [56.0, 132] | 91.0 [52.0, 223] |
Median [min, max] | 117 [10.0, 764] | 91.0 [14.0, 322] | 315 [147, 563] | 70.5 [34.0, 409] | 60.0 [60.0, 60.0] | 70.5 [63.0, 112] | 38.0 [19.0, 471] | 69.0 [22.0, 696] | 91.0 [10.0, 764] |
FI_final | |||||||||
Mean (SD) | 21.3 (28.3) | 12.9 (11.5) | 15.6 (8.44) | 8.20 (4.47) | NA | 8.50 (4.68) | 9.67 (12.8) | 11.7 (22.7) | 16.6 (23.8) |
Median [Q1, Q3] | 12.0 [4.50, 26.0] | 11.0 [4.00, 15.0] | 16.0 [11.0, 22.0] | 10.0 [4.75, 11.0] | 7.00 [7.00, 7.00] | 7.50 [4.50, 12.0] | 4.00 [2.00, 11.5] | 5.00 [3.00, 10.5] | 9.00 [4.00, 19.0] |
Median [min, max] | 12.0 [1.00, 171] | 11.0 [2.00, 40.0] | 16.0 [4.00, 25.0] | 10.0 [1.00, 13.0] | 7.00 [7.00, 7.00] | 7.50 [4.00, 15.0] | 4.00 [1.00, 45.0] | 5.00 [1.00, 111] | 9.00 [1.00, 171] |
FQ_final | |||||||||
Mean (SD) | 0.00727 (0.00800) | 0.00877 (0.00681) | 0.00760 (0.00430) | 0.00504 (0.00332) | NA | 0.00435 (0.00240) | 0.0113 (0.00964) | 0.0119 (0.0202) | 0.00815 (0.0106) |
Median [Q1, Q3] | 0.00393 [0.00226, 0.00831] | 0.00691 [0.00259, 0.0143] | 0.00695 [0.00623, 0.0109] | 0.00513 [0.00197, 0.00793] | 0.00412 [0.00412, 0.00412] | 0.00384 [0.00231, 0.00615] | 0.00864 [0.00423, 0.0187] | 0.00527 [0.00278, 0.0122] | 0.00505 [0.00230, 0.00955] |
Median [min, max] | 0.00393 [0.000151, 0.0361] | 0.00691 [0.00191, 0.0206] | 0.00695 [0.00149, 0.0125] | 0.00513 [0.000615, 0.00928] | 0.00412 [0.00412, 0.00412] | 0.00384 [0.00205, 0.00768] | 0.00864 [0.000203, 0.0288] | 0.00527 [0.000608, 0.0966] | 0.00505 [0.000151, 0.0966] |
as.factor(missing_fi) | |||||||||
0 | 7 (8.9%) | 2 (22.2%) | 0 (0%) | 0 (0%) | 0 (0%) | 0 (0%) | 1 (8.3%) | 0 (0%) | 10 (6.9%) |
1 | 51 (64.6%) | 7 (77.8%) | 1 (20.0%) | 8 (80.0%) | 1 (100%) | 0 (0%) | 4 (33.3%) | 14 (60.9%) | 86 (59.3%) |
Missing | 21 (26.6%) | 0 (0%) | 4 (80.0%) | 2 (20.0%) | 0 (0%) | 6 (100%) | 7 (58.3%) | 9 (39.1%) | 49 (33.8%) |
kruskal.test(FI_final ~ journal_code2, data = fi_sig)
##
## Kruskal-Wallis rank sum test
##
## data: FI_final by journal_code2
## Kruskal-Wallis chi-squared = 10.571, df = 7, p-value = 0.1584
kruskal.test(FQ_final ~ journal_code2, data = fi_sig)
##
## Kruskal-Wallis rank sum test
##
## data: FQ_final by journal_code2
## Kruskal-Wallis chi-squared = 4.9468, df = 7, p-value = 0.6665
Box plots
p1 = ggplot(data = fi_sig, aes(y = FI_final, x = as.factor(timing), fill = as.factor(timing))) + geom_boxplot() +
geom_jitter(alpha=0.2) + theme_bw() + theme(legend.position="none") +
labs(title = "Fragility index by timing of fracture assessment", x = "Timing of fracture assessment", y = "Fragility index")
p1
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | sex, data = fi_sig, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]" ))
Both (N=16) |
Men (N=10) |
Women (N=119) |
Overall (N=145) |
|
---|---|---|---|---|
no_rand | ||||
Mean (SD) | 934 (702) | 1310 (139) | 3300 (2340) | 2900 (2300) |
Median [Q1, Q3] | 622 [571, 731] | 1200 [1200, 1470] | 2000 [1630, 4090] | 1960 [1220, 4090] |
Median [min, max] | 622 [450, 2690] | 1200 [1200, 1470] | 2000 [704, 7870] | 1960 [450, 7870] |
active_sample | ||||
Mean (SD) | 661 (561) | 1220 (137) | 2910 (2110) | 2540 (2080) |
Median [Q1, Q3] | 464 [426, 661] | 1130 [1130, 1350] | 1950 [1300, 4040] | 1770 [1060, 3650] |
Median [min, max] | 464 [339, 2690] | 1130 [1060, 1430] | 1950 [544, 7810] | 1770 [339, 7810] |
n_event | ||||
Mean (SD) | 58.9 (55.1) | 26.5 (9.06) | 190 (176) | 164 (170) |
Median [Q1, Q3] | 40.0 [33.3, 57.8] | 26.0 [21.5, 34.3] | 110 [67.0, 262] | 91.0 [52.0, 223] |
Median [min, max] | 40.0 [19.0, 231] | 26.0 [13.0, 39.0] | 110 [10.0, 764] | 91.0 [10.0, 764] |
FI_final | ||||
Mean (SD) | 5.00 (3.78) | 2.90 (1.66) | 19.3 (25.4) | 16.6 (23.8) |
Median [Q1, Q3] | 4.00 [2.00, 7.00] | 3.00 [1.25, 4.00] | 11.0 [5.00, 23.0] | 9.00 [4.00, 19.0] |
Median [min, max] | 4.00 [1.00, 13.0] | 3.00 [1.00, 6.00] | 11.0 [1.00, 171] | 9.00 [1.00, 171] |
FQ_final | ||||
Mean (SD) | 0.00965 (0.00824) | 0.00236 (0.00140) | 0.00844 (0.0112) | 0.00815 (0.0106) |
Median [Q1, Q3] | 0.00677 [0.00451, 0.0125] | 0.00216 [0.00115, 0.00296] | 0.00537 [0.00237, 0.0100] | 0.00505 [0.00230, 0.00955] |
Median [min, max] | 0.00677 [0.00108, 0.0288] | 0.00216 [0.000887, 0.00532] | 0.00537 [0.000151, 0.0966] | 0.00505 [0.000151, 0.0966] |
as.factor(missing_fi) | ||||
0 | 0 (0%) | 0 (0%) | 10 (8.4%) | 10 (6.9%) |
1 | 8 (50.0%) | 10 (100%) | 68 (57.1%) | 86 (59.3%) |
Missing | 8 (50.0%) | 0 (0%) | 41 (34.5%) | 49 (33.8%) |
kruskal.test(FI_final ~ sex, data = fi_sig)
##
## Kruskal-Wallis rank sum test
##
## data: FI_final by sex
## Kruskal-Wallis chi-squared = 24.445, df = 2, p-value = 4.919e-06
kruskal.test(FQ_final ~ sex, data = fi_sig)
##
## Kruskal-Wallis rank sum test
##
## data: FQ_final by sex
## Kruskal-Wallis chi-squared = 9.8062, df = 2, p-value = 0.007423
Box plots
p1 = ggplot(data = fi_sig, aes(y = FI_final, x = as.factor(sex), fill = as.factor(sex))) + geom_boxplot() +
geom_jitter(alpha=0.2) + theme_bw() + theme(legend.position="none") +
labs(title = "Fragility index by sex", x = "Sex", y = "Fragility index")
p1
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | placebo, data = fi_sig, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]"))
Active (N=29) |
Placebo (N=116) |
Overall (N=145) |
|
---|---|---|---|
no_rand | |||
Mean (SD) | 2900 (1350) | 2900 (2480) | 2900 (2300) |
Median [Q1, Q3] | 4090 [1360, 4090] | 1960 [1170, 3560] | 1960 [1220, 4090] |
Median [min, max] | 4090 [1140, 4090] | 1960 [450, 7870] | 1960 [450, 7870] |
active_sample | |||
Mean (SD) | 2560 (1240) | 2540 (2240) | 2540 (2080) |
Median [Q1, Q3] | 3320 [1280, 3660] | 1750 [890, 3000] | 1770 [1060, 3650] |
Median [min, max] | 3320 [1050, 4090] | 1750 [339, 7810] | 1770 [339, 7810] |
n_event | |||
Mean (SD) | 176 (160) | 161 (172) | 164 (170) |
Median [Q1, Q3] | 107 [53.0, 255] | 84.0 [50.3, 211] | 91.0 [52.0, 223] |
Median [min, max] | 107 [14.0, 658] | 84.0 [10.0, 764] | 91.0 [10.0, 764] |
FI_final | |||
Mean (SD) | 16.9 (19.0) | 16.5 (24.9) | 16.6 (23.8) |
Median [Q1, Q3] | 10.0 [5.00, 18.0] | 8.00 [3.75, 19.3] | 9.00 [4.00, 19.0] |
Median [min, max] | 10.0 [2.00, 77.0] | 8.00 [1.00, 171] | 9.00 [1.00, 171] |
FQ_final | |||
Mean (SD) | 0.00650 (0.00525) | 0.00856 (0.0116) | 0.00815 (0.0106) |
Median [Q1, Q3] | 0.00440 [0.00221, 0.00908] | 0.00510 [0.00234, 0.0105] | 0.00505 [0.00230, 0.00955] |
Median [min, max] | 0.00440 [0.000554, 0.0188] | 0.00510 [0.000151, 0.0966] | 0.00505 [0.000151, 0.0966] |
as.factor(missing_fi) | |||
0 | 4 (13.8%) | 6 (5.2%) | 10 (6.9%) |
1 | 22 (75.9%) | 64 (55.2%) | 86 (59.3%) |
Missing | 3 (10.3%) | 46 (39.7%) | 49 (33.8%) |
kruskal.test(FI_final ~ placebo, data = fi_sig)
##
## Kruskal-Wallis rank sum test
##
## data: FI_final by placebo
## Kruskal-Wallis chi-squared = 0.66311, df = 1, p-value = 0.4155
kruskal.test(FQ_final ~ placebo, data = fi_sig)
##
## Kruskal-Wallis rank sum test
##
## data: FQ_final by placebo
## Kruskal-Wallis chi-squared = 0.036216, df = 1, p-value = 0.8491
Box plots
p1 = ggplot(data = fi_sig, aes(y = FI_final, x = as.factor(control), fill = as.factor(control))) + geom_boxplot() +
geom_jitter(alpha=0.2) + theme_bw() + theme(legend.position="none") +
labs(title = "Fragility index by types of control", x = "Types of control", y = "Fragility index")
p1
fx_prim = subset(fi_sig, pri_endpoint == 1)
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi), data = fx_prim, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]" ))
Overall (N=34) |
|
---|---|
no_rand | |
Mean (SD) | 2920 (2280) |
Median [Q1, Q3] | 1980 [1240, 4090] |
Median [min, max] | 1980 [549, 7870] |
active_sample | |
Mean (SD) | 2500 (2060) |
Median [Q1, Q3] | 1730 [1050, 3660] |
Median [min, max] | 1730 [426, 7390] |
n_event | |
Mean (SD) | 177 (152) |
Median [Q1, Q3] | 117 [63.8, 229] |
Median [min, max] | 117 [29.0, 671] |
FI_final | |
Mean (SD) | 27.6 (36.4) |
Median [Q1, Q3] | 13.5 [8.75, 31.3] |
Median [min, max] | 13.5 [1.00, 171] |
FQ_final | |
Mean (SD) | 0.0137 (0.0111) |
Median [Q1, Q3] | 0.00997 [0.00442, 0.0205] |
Median [min, max] | 0.00997 [0.000567, 0.0368] |
as.factor(missing_fi) | |
0 | 3 (8.8%) |
1 | 20 (58.8%) |
Missing | 11 (32.4%) |
# By fracture as the predefined primary endpoint
fi_sig$fx_primary[fi_sig$pri_endpoint == 1] = "Primary endpoint"
fi_sig$fx_primary[fi_sig$pri_endpoint == 0] = "Secondary endpoint"
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | fx_primary , data = fi_sig, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]" ))
Primary endpoint (N=34) |
Secondary endpoint (N=111) |
Overall (N=145) |
|
---|---|---|---|
no_rand | |||
Mean (SD) | 2920 (2280) | 2900 (2310) | 2900 (2300) |
Median [Q1, Q3] | 1980 [1240, 4090] | 1960 [1290, 4090] | 1960 [1220, 4090] |
Median [min, max] | 1980 [549, 7870] | 1960 [450, 7870] | 1960 [450, 7870] |
active_sample | |||
Mean (SD) | 2500 (2060) | 2550 (2090) | 2540 (2080) |
Median [Q1, Q3] | 1730 [1050, 3660] | 1770 [1110, 3630] | 1770 [1060, 3650] |
Median [min, max] | 1730 [426, 7390] | 1770 [339, 7810] | 1770 [339, 7810] |
n_event | |||
Mean (SD) | 177 (152) | 160 (175) | 164 (170) |
Median [Q1, Q3] | 117 [63.8, 229] | 76.0 [49.5, 209] | 91.0 [52.0, 223] |
Median [min, max] | 117 [29.0, 671] | 76.0 [10.0, 764] | 91.0 [10.0, 764] |
FI_final | |||
Mean (SD) | 27.6 (36.4) | 13.2 (17.1) | 16.6 (23.8) |
Median [Q1, Q3] | 13.5 [8.75, 31.3] | 7.00 [3.00, 17.0] | 9.00 [4.00, 19.0] |
Median [min, max] | 13.5 [1.00, 171] | 7.00 [1.00, 111] | 9.00 [1.00, 171] |
FQ_final | |||
Mean (SD) | 0.0137 (0.0111) | 0.00645 (0.00993) | 0.00815 (0.0106) |
Median [Q1, Q3] | 0.00997 [0.00442, 0.0205] | 0.00393 [0.00208, 0.00751] | 0.00505 [0.00230, 0.00955] |
Median [min, max] | 0.00997 [0.000567, 0.0368] | 0.00393 [0.000151, 0.0966] | 0.00505 [0.000151, 0.0966] |
as.factor(missing_fi) | |||
0 | 3 (8.8%) | 7 (6.3%) | 10 (6.9%) |
1 | 20 (58.8%) | 66 (59.5%) | 86 (59.3%) |
Missing | 11 (32.4%) | 38 (34.2%) | 49 (33.8%) |
fi_sig$missing_fi = factor(fi_sig$missing_fi)
createTable(compareGroups(fx_primary ~ no_rand + active_sample + n_event + FI_final + FQ_final + missing_fi, data = fi_sig, method = c(no_rand = 2, active_sample = 2, n_event = 2, FI_final = 2, FQ_final = 2)))
## Warning in chisq.test(xx, correct = FALSE): Chi-squared approximation may be
## incorrect
##
## --------Summary descriptives table by 'fx_primary'---------
##
## ___________________________________________________________
## Primary endpoint Secondary endpoint p.overall
## N=34 N=111
## ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
## no_rand 1982 [1239;4093] 1964 [1292;4093] 0.828
## active_sample 1733 [1051;3655] 1765 [1106;3629] 0.953
## n_event 116 [63.8;229] 76.0 [49.5;208] 0.149
## FI_final 13.5 [8.75;31.2] 7.00 [3.00;17.0] 0.001
## FQ_final 0.01 [0.00;0.02] 0.00 [0.00;0.01] <0.001
## missing_fi: 0.699
## 0 3 (13.0%) 7 (9.59%)
## 1 20 (87.0%) 66 (90.4%)
## ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Relationship between sample size/active sample/no. events and FI
p = ggplot(data = fx_prim, aes(x = no_rand, y = FI_final))
p1 = p + geom_point() + geom_smooth() + labs(x = "Number of participants at randomisation", y = "Fragility index") + theme_bw()
p0 = ggplot(data = fx_prim, aes(x = active_sample, y = FI_final))
p2 = p0 + geom_point() + geom_smooth() + labs(x = "Number of participants included in the analyses", y = "Fragility index") + theme_bw()
p.0 = ggplot(data = fx_prim, aes(x = n_event, y = FI_final))
p3 = p.0 + geom_point() + geom_smooth() + labs(x = "Number of participants with fracture events", y = "Fragility index") + theme_bw()
#grid.arrange(p1, p2, p3, nrow = 1)
grid.arrange(p1, p3, nrow = 1, top = textGrob("Relationship between Number of participants and Fragility index", gp = gpar(fontsize = 20, font = 3)))
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | as.factor(fx_code1), data = fx_prim, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]"))
Clin_fx (N=2) |
OFx (N=1) |
NonVert_fx (N=1) |
Vert_fx (N=26) |
Hip (N=4) |
Overall (N=34) |
|
---|---|---|---|---|---|---|
no_rand | ||||||
Mean (SD) | 3110 (1390) | NA | NA | 2640 (2350) | 4390 (2230) | 2920 (2280) |
Median [Q1, Q3] | 3110 [2620, 3600] | 2000 [2000, 2000] | 5090 [5090, 5090] | 1650 [1120, 3700] | 3270 [3270, 4390] | 1980 [1240, 4090] |
Median [min, max] | 3110 [2130, 4090] | 2000 [2000, 2000] | 5090 [5090, 5090] | 1650 [549, 7870] | 3270 [3270, 7740] | 1980 [549, 7870] |
active_sample | ||||||
Mean (SD) | 2060 (2240) | NA | NA | 2330 (2120) | 3340 (2110) | 2500 (2060) |
Median [Q1, Q3] | 2060 [1270, 2850] | 1950 [1950, 1950] | 4940 [4940, 4940] | 1440 [931, 3230] | 2580 [2220, 3700] | 1730 [1050, 3660] |
Median [min, max] | 2060 [479, 3640] | 1950 [1950, 1950] | 4940 [4940, 4940] | 1440 [426, 7390] | 2580 [1770, 6450] | 1730 [426, 7390] |
n_event | ||||||
Mean (SD) | 348 (165) | NA | NA | 146 (122) | 141 (59.2) | 177 (152) |
Median [Q1, Q3] | 348 [289, 406] | 312 [312, 312] | 671 [671, 671] | 103 [51.0, 204] | 158 [120, 180] | 117 [63.8, 229] |
Median [min, max] | 348 [231, 464] | 312 [312, 312] | 671 [671, 671] | 103 [29.0, 402] | 158 [58.0, 190] | 117 [29.0, 671] |
FI_final | ||||||
Mean (SD) | 16.5 (13.4) | NA | NA | 32.5 (40.0) | 6.00 (4.97) | 27.6 (36.4) |
Median [Q1, Q3] | 16.5 [11.8, 21.3] | 33.0 [33.0, 33.0] | 3.00 [3.00, 3.00] | 15.0 [11.5, 40.0] | 5.50 [2.50, 9.00] | 13.5 [8.75, 31.3] |
Median [min, max] | 16.5 [7.00, 26.0] | 33.0 [33.0, 33.0] | 3.00 [3.00, 3.00] | 15.0 [1.00, 171] | 5.50 [1.00, 12.0] | 13.5 [1.00, 171] |
FQ_final | ||||||
Mean (SD) | 0.0109 (0.00529) | NA | NA | 0.0162 (0.0112) | 0.00172 (0.00122) | 0.0137 (0.0111) |
Median [Q1, Q3] | 0.0109 [0.00901, 0.0127] | 0.0169 [0.0169, 0.0169] | 0.000608 [0.000608, 0.000608] | 0.0129 [0.00692, 0.0258] | 0.00147 [0.000948, 0.00224] | 0.00997 [0.00442, 0.0205] |
Median [min, max] | 0.0109 [0.00714, 0.0146] | 0.0169 [0.0169, 0.0169] | 0.000608 [0.000608, 0.000608] | 0.0129 [0.000946, 0.0368] | 0.00147 [0.000567, 0.00337] | 0.00997 [0.000567, 0.0368] |
as.factor(missing_fi) | ||||||
0 | 0 (0%) | 1 (100%) | 0 (0%) | 2 (7.7%) | 0 (0%) | 3 (8.8%) |
1 | 2 (100%) | 0 (0%) | 0 (0%) | 14 (53.8%) | 4 (100%) | 20 (58.8%) |
Missing | 0 (0%) | 0 (0%) | 1 (100%) | 10 (38.5%) | 0 (0%) | 11 (32.4%) |
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | as.factor(fx_code2), data = fx_prim, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]"))
Any (N=2) |
Osteoporotic (N=1) |
Non-Vertebrae (N=1) |
Vertebrae (N=26) |
Hip (N=4) |
Overall (N=34) |
|
---|---|---|---|---|---|---|
no_rand | ||||||
Mean (SD) | 3110 (1390) | NA | NA | 2640 (2350) | 4390 (2230) | 2920 (2280) |
Median [Q1, Q3] | 3110 [2620, 3600] | 2000 [2000, 2000] | 5090 [5090, 5090] | 1650 [1120, 3700] | 3270 [3270, 4390] | 1980 [1240, 4090] |
Median [min, max] | 3110 [2130, 4090] | 2000 [2000, 2000] | 5090 [5090, 5090] | 1650 [549, 7870] | 3270 [3270, 7740] | 1980 [549, 7870] |
active_sample | ||||||
Mean (SD) | 2060 (2240) | NA | NA | 2330 (2120) | 3340 (2110) | 2500 (2060) |
Median [Q1, Q3] | 2060 [1270, 2850] | 1950 [1950, 1950] | 4940 [4940, 4940] | 1440 [931, 3230] | 2580 [2220, 3700] | 1730 [1050, 3660] |
Median [min, max] | 2060 [479, 3640] | 1950 [1950, 1950] | 4940 [4940, 4940] | 1440 [426, 7390] | 2580 [1770, 6450] | 1730 [426, 7390] |
n_event | ||||||
Mean (SD) | 348 (165) | NA | NA | 146 (122) | 141 (59.2) | 177 (152) |
Median [Q1, Q3] | 348 [289, 406] | 312 [312, 312] | 671 [671, 671] | 103 [51.0, 204] | 158 [120, 180] | 117 [63.8, 229] |
Median [min, max] | 348 [231, 464] | 312 [312, 312] | 671 [671, 671] | 103 [29.0, 402] | 158 [58.0, 190] | 117 [29.0, 671] |
FI_final | ||||||
Mean (SD) | 16.5 (13.4) | NA | NA | 32.5 (40.0) | 6.00 (4.97) | 27.6 (36.4) |
Median [Q1, Q3] | 16.5 [11.8, 21.3] | 33.0 [33.0, 33.0] | 3.00 [3.00, 3.00] | 15.0 [11.5, 40.0] | 5.50 [2.50, 9.00] | 13.5 [8.75, 31.3] |
Median [min, max] | 16.5 [7.00, 26.0] | 33.0 [33.0, 33.0] | 3.00 [3.00, 3.00] | 15.0 [1.00, 171] | 5.50 [1.00, 12.0] | 13.5 [1.00, 171] |
FQ_final | ||||||
Mean (SD) | 0.0109 (0.00529) | NA | NA | 0.0162 (0.0112) | 0.00172 (0.00122) | 0.0137 (0.0111) |
Median [Q1, Q3] | 0.0109 [0.00901, 0.0127] | 0.0169 [0.0169, 0.0169] | 0.000608 [0.000608, 0.000608] | 0.0129 [0.00692, 0.0258] | 0.00147 [0.000948, 0.00224] | 0.00997 [0.00442, 0.0205] |
Median [min, max] | 0.0109 [0.00714, 0.0146] | 0.0169 [0.0169, 0.0169] | 0.000608 [0.000608, 0.000608] | 0.0129 [0.000946, 0.0368] | 0.00147 [0.000567, 0.00337] | 0.00997 [0.000567, 0.0368] |
as.factor(missing_fi) | ||||||
0 | 0 (0%) | 1 (100%) | 0 (0%) | 2 (7.7%) | 0 (0%) | 3 (8.8%) |
1 | 2 (100%) | 0 (0%) | 0 (0%) | 14 (53.8%) | 4 (100%) | 20 (58.8%) |
Missing | 0 (0%) | 0 (0%) | 1 (100%) | 10 (38.5%) | 0 (0%) | 11 (32.4%) |
kruskal.test(FI_final ~ fx_code2, data = fx_prim)
##
## Kruskal-Wallis rank sum test
##
## data: FI_final by fx_code2
## Kruskal-Wallis chi-squared = 8.4689, df = 4, p-value = 0.07584
kruskal.test(FQ_final ~ fx_code2, data = fx_prim)
##
## Kruskal-Wallis rank sum test
##
## data: FQ_final by fx_code2
## Kruskal-Wallis chi-squared = 11.352, df = 4, p-value = 0.02288
Box plots
p1 = ggplot(data = fx_prim, aes(y = FI_final, x = as.factor(fx_code2), fill = as.factor(fx_code2))) + geom_boxplot() +
geom_jitter(alpha=0.2) + theme_bw() + theme(legend.position="none") +
labs(title = "Fragility index", x = "Fracture sites", y = "Fragility index") + theme(axis.text.x = element_text(angle = 45, hjust = 1))
p2 = ggplot(data = fx_prim, aes(y = FQ_final, x = as.factor(fx_code2), fill = as.factor(fx_code2))) + geom_boxplot() +
geom_jitter(alpha=0.2) + theme_bw() + theme(legend.position="none") +
labs(title = "Fragility quotient", x = "Fracture sites", y = "Fragility quotient") + theme(axis.text.x = element_text(angle = 45, hjust = 1))
grid.arrange(p1, p2, nrow = 1, top = textGrob("Fragility of evidence for anti-fracture efficacy by fracture sites", gp = gpar(fontsize = 20, font = 1)))
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | as.factor(interv_code1), data = fx_prim, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]"))
Alendronate (N=2) |
Ibandronate (N=2) |
Risedronate (N=2) |
Minodronate (N=1) |
Zoledronate (N=7) |
Teriparatide (N=7) |
Abaloparatide (N=1) |
Romosozumab (N=5) |
Denosumab (N=1) |
Strontium_ranelate (N=3) |
Calcium_VitD (N=3) |
Overall (N=34) |
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
no_rand | ||||||||||||
Mean (SD) | 3230 (1700) | 1960 (0) | 1220 (576) | NA | 3240 (3110) | 1260 (683) | NA | 5330 (1690) | NA | 2800 (1990) | 3270 (0) | 2920 (2280) |
Median [Q1, Q3] | 3230 [2630, 3830] | 1960 [1960, 1960] | 1220 [1020, 1420] | 704 [704, 704] | 2000 [1200, 4930] | 1100 [832, 1500] | 1650 [1650, 1650] | 4090 [4090, 7180] | 7870 [7870, 7870] | 1650 [1650, 3370] | 3270 [3270, 3270] | 1980 [1240, 4090] |
Median [min, max] | 3230 [2030, 4430] | 1960 [1960, 1960] | 1220 [814, 1630] | 704 [704, 704] | 2000 [665, 7740] | 1100 [549, 2530] | 1650 [1650, 1650] | 4090 [4090, 7180] | 7870 [7870, 7870] | 1650 [1650, 5090] | 3270 [3270, 3270] | 1980 [549, 7870] |
active_sample | ||||||||||||
Mean (SD) | 3040 (1550) | 1950 (0) | 1030 (484) | NA | 2480 (2500) | 976 (471) | NA | 4940 (1570) | NA | 2610 (2020) | 2310 (516) | 2500 (2060) |
Median [Q1, Q3] | 3040 [2490, 3590] | 1950 [1950, 1950] | 1030 [861, 1200] | 544 [544, 544] | 1130 [857, 3810] | 892 [667, 1240] | 1400 [1400, 1400] | 4090 [3660, 6640] | 7390 [7390, 7390] | 1440 [1440, 3190] | 2380 [2070, 2580] | 1730 [1050, 3660] |
Median [min, max] | 3040 [1950, 4130] | 1950 [1950, 1950] | 1030 [690, 1370] | 544 [544, 544] | 1130 [479, 6450] | 892 [426, 1700] | 1400 [1400, 1400] | 4090 [3640, 6650] | 7390 [7390, 7390] | 1440 [1440, 4940] | 2380 [1770, 2790] | 1730 [426, 7390] |
n_event | ||||||||||||
Mean (SD) | 172 (72.1) | 111 (1.41) | 148 (8.49) | NA | 170 (149) | 63.7 (23.1) | NA | 247 (168) | NA | 463 (182) | 141 (72.5) | 177 (152) |
Median [Q1, Q3] | 172 [147, 198] | 111 [111, 112] | 148 [145, 151] | 100 [100, 100] | 140 [38.0, 272] | 60.0 [44.5, 84.5] | 34.0 [34.0, 34.0] | 221 [105, 370] | 350 [350, 350] | 387 [360, 529] | 176 [117, 183] | 117 [63.8, 229] |
Median [min, max] | 172 [121, 223] | 111 [110, 112] | 148 [142, 154] | 100 [100, 100] | 140 [29.0, 402] | 60.0 [36.0, 92.0] | 34.0 [34.0, 34.0] | 221 [75.0, 464] | 350 [350, 350] | 387 [332, 671] | 176 [58.0, 190] | 117 [29.0, 671] |
FI_final | ||||||||||||
Mean (SD) | 26.5 (19.1) | 14.0 (1.41) | 12.5 (2.12) | NA | 33.9 (61.4) | 15.0 (6.63) | NA | 41.8 (21.3) | NA | 33.3 (26.5) | 4.00 (3.61) | 27.6 (36.4) |
Median [Q1, Q3] | 26.5 [19.8, 33.3] | 14.0 [13.5, 14.5] | 12.5 [11.8, 13.3] | 20.0 [20.0, 20.0] | 7.00 [6.50, 22.5] | 13.0 [11.0, 19.0] | 13.0 [13.0, 13.0] | 40.0 [26.0, 42.0] | 137 [137, 137] | 45.0 [24.0, 48.5] | 3.00 [2.00, 5.50] | 13.5 [8.75, 31.3] |
Median [min, max] | 26.5 [13.0, 40.0] | 14.0 [13.0, 15.0] | 12.5 [11.0, 14.0] | 20.0 [20.0, 20.0] | 7.00 [1.00, 171] | 13.0 [7.00, 25.0] | 13.0 [13.0, 13.0] | 40.0 [24.0, 77.0] | 137 [137, 137] | 45.0 [3.00, 52.0] | 3.00 [1.00, 8.00] | 13.5 [1.00, 171] |
FQ_final | ||||||||||||
Mean (SD) | 0.0118 (0.0123) | 0.00717 (0.000724) | 0.0141 (0.00869) | NA | 0.0115 (0.0102) | 0.0193 (0.0104) | NA | 0.00941 (0.00598) | NA | 0.0226 (0.0192) | 0.00167 (0.00149) | 0.0137 (0.0111) |
Median [Q1, Q3] | 0.0118 [0.00750, 0.0162] | 0.00717 [0.00692, 0.00743] | 0.0141 [0.0111, 0.0172] | 0.0368 [0.0368, 0.0368] | 0.0107 [0.00359, 0.0158] | 0.0258 [0.0110, 0.0271] | 0.00928 [0.00928, 0.00928] | 0.00714 [0.00601, 0.0115] | 0.0185 [0.0185, 0.0185] | 0.0312 [0.0159, 0.0336] | 0.00108 [0.000821, 0.00222] | 0.00997 [0.00442, 0.0205] |
Median [min, max] | 0.0118 [0.00314, 0.0206] | 0.00717 [0.00666, 0.00768] | 0.0141 [0.00801, 0.0203] | 0.0368 [0.0368, 0.0368] | 0.0107 [0.000946, 0.0301] | 0.0258 [0.00412, 0.0288] | 0.00928 [0.00928, 0.00928] | 0.00714 [0.00361, 0.0188] | 0.0185 [0.0185, 0.0185] | 0.0312 [0.000608, 0.0361] | 0.00108 [0.000567, 0.00337] | 0.00997 [0.000567, 0.0368] |
as.factor(missing_fi) | ||||||||||||
0 | 0 (0%) | 0 (0%) | 0 (0%) | 0 (0%) | 1 (14.3%) | 1 (14.3%) | 0 (0%) | 1 (20.0%) | 0 (0%) | 0 (0%) | 0 (0%) | 3 (8.8%) |
1 | 1 (50.0%) | 0 (0%) | 2 (100%) | 1 (100%) | 6 (85.7%) | 2 (28.6%) | 1 (100%) | 4 (80.0%) | 0 (0%) | 0 (0%) | 3 (100%) | 20 (58.8%) |
Missing | 1 (50.0%) | 2 (100%) | 0 (0%) | 0 (0%) | 0 (0%) | 4 (57.1%) | 0 (0%) | 0 (0%) | 1 (100%) | 3 (100%) | 0 (0%) | 11 (32.4%) |
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | as.factor(interv_code2), data = fx_prim, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]"))
Bisphosphonates (N=14) |
PTH analog (N=8) |
Romosozumab (N=5) |
Denosumab (N=1) |
Strontium_ranelate (N=3) |
Calcium_VitD (N=3) |
Overall (N=34) |
|
---|---|---|---|---|---|---|---|
no_rand | |||||||
Mean (SD) | 2590 (2370) | 1310 (647) | 5330 (1690) | NA | 2800 (1990) | 3270 (0) | 2920 (2280) |
Median [Q1, Q3] | 1960 [1200, 2100] | 1230 [958, 1640] | 4090 [4090, 7180] | 7870 [7870, 7870] | 1650 [1650, 3370] | 3270 [3270, 3270] | 1980 [1240, 4090] |
Median [min, max] | 1960 [665, 7740] | 1230 [549, 2530] | 4090 [4090, 7180] | 7870 [7870, 7870] | 1650 [1650, 5090] | 3270 [3270, 3270] | 1980 [549, 7870] |
active_sample | |||||||
Mean (SD) | 2140 (1910) | 1030 (461) | 4940 (1570) | NA | 2610 (2020) | 2310 (516) | 2500 (2060) |
Median [Q1, Q3] | 1660 [782, 1950] | 971 [774, 1410] | 4090 [3660, 6640] | 7390 [7390, 7390] | 1440 [1440, 3190] | 2380 [2070, 2580] | 1730 [1050, 3660] |
Median [min, max] | 1660 [479, 6450] | 971 [426, 1700] | 4090 [3640, 6650] | 7390 [7390, 7390] | 1440 [1440, 4940] | 2380 [1770, 2790] | 1730 [426, 7390] |
n_event | |||||||
Mean (SD) | 154 (107) | 60.0 (23.9) | 247 (168) | NA | 463 (182) | 141 (72.5) | 177 (152) |
Median [Q1, Q3] | 131 [103, 206] | 54.0 [39.8, 83.8] | 221 [105, 370] | 350 [350, 350] | 387 [360, 529] | 176 [117, 183] | 117 [63.8, 229] |
Median [min, max] | 131 [29.0, 402] | 54.0 [34.0, 92.0] | 221 [75.0, 464] | 350 [350, 350] | 387 [332, 671] | 176 [58.0, 190] | 117 [29.0, 671] |
FI_final | |||||||
Mean (SD) | 25.9 (43.0) | 14.8 (6.18) | 41.8 (21.3) | NA | 33.3 (26.5) | 4.00 (3.61) | 27.6 (36.4) |
Median [Q1, Q3] | 13.0 [8.00, 18.8] | 13.0 [11.0, 17.0] | 40.0 [26.0, 42.0] | 137 [137, 137] | 45.0 [24.0, 48.5] | 3.00 [2.00, 5.50] | 13.5 [8.75, 31.3] |
Median [min, max] | 13.0 [1.00, 171] | 13.0 [7.00, 25.0] | 40.0 [24.0, 77.0] | 137 [137, 137] | 45.0 [3.00, 52.0] | 3.00 [1.00, 8.00] | 13.5 [1.00, 171] |
FQ_final | |||||||
Mean (SD) | 0.0131 (0.0108) | 0.0180 (0.0102) | 0.00941 (0.00598) | NA | 0.0226 (0.0192) | 0.00167 (0.00149) | 0.0137 (0.0111) |
Median [Q1, Q3] | 0.00933 [0.00566, 0.0195] | 0.0200 [0.00889, 0.0265] | 0.00714 [0.00601, 0.0115] | 0.0185 [0.0185, 0.0185] | 0.0312 [0.0159, 0.0336] | 0.00108 [0.000821, 0.00222] | 0.00997 [0.00442, 0.0205] |
Median [min, max] | 0.00933 [0.000946, 0.0368] | 0.0200 [0.00412, 0.0288] | 0.00714 [0.00361, 0.0188] | 0.0185 [0.0185, 0.0185] | 0.0312 [0.000608, 0.0361] | 0.00108 [0.000567, 0.00337] | 0.00997 [0.000567, 0.0368] |
as.factor(missing_fi) | |||||||
0 | 1 (7.1%) | 1 (12.5%) | 1 (20.0%) | 0 (0%) | 0 (0%) | 0 (0%) | 3 (8.8%) |
1 | 10 (71.4%) | 3 (37.5%) | 4 (80.0%) | 0 (0%) | 0 (0%) | 3 (100%) | 20 (58.8%) |
Missing | 3 (21.4%) | 4 (50.0%) | 0 (0%) | 1 (100%) | 3 (100%) | 0 (0%) | 11 (32.4%) |
kruskal.test(FI_final ~ interv_code2, data = fx_prim)
##
## Kruskal-Wallis rank sum test
##
## data: FI_final by interv_code2
## Kruskal-Wallis chi-squared = 13.439, df = 5, p-value = 0.01959
kruskal.test(FQ_final ~ interv_code2, data = fx_prim)
##
## Kruskal-Wallis rank sum test
##
## data: FQ_final by interv_code2
## Kruskal-Wallis chi-squared = 8.3873, df = 5, p-value = 0.1361
Box plots
p1 = ggplot(data = fx_prim, aes(y = FI_final, x = as.factor(interv_code2), fill = as.factor(interv_code2))) + geom_boxplot() +
geom_jitter(alpha=0.2) + theme_bw() + theme(legend.position="none") +
labs(title = "Fragility index", x = "Pharmacological interventions", y = "Fragility index") + theme(axis.text.x = element_text(angle = 45, hjust = 1))
p2 = ggplot(data = fx_prim, aes(y = FQ_final, x = as.factor(interv_code2), fill = as.factor(interv_code2))) + geom_boxplot() +
geom_jitter(alpha=0.2) + theme_bw() + theme(legend.position="none") +
labs(title = "Fragility quotient", x = "Pharmacological interventions", y = "Fragility quotine") + theme(axis.text.x = element_text(angle = 45, hjust = 1))
grid.arrange(p1, p2, nrow = 1, top = textGrob("Fragility of evidence for anti-fracture efficacy by intervention sites", gp = gpar(fontsize = 20, font = 1)))
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | as.factor(timing), data = fx_prim, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]"))
2 (N=1) |
3 (N=8) |
4 (N=12) |
5 (N=10) |
6 (N=1) |
7 (N=1) |
8 (N=1) |
Overall (N=34) |
|
---|---|---|---|---|---|---|---|---|
no_rand | ||||||||
Mean (SD) | NA | 2090 (1160) | 2400 (2020) | 3510 (2970) | NA | NA | NA | 2920 (2280) |
Median [Q1, Q3] | 7180 [7180, 7180] | 2090 [1370, 3270] | 1280 [1090, 4090] | 1960 [1650, 6330] | 4430 [4430, 4430] | 5090 [5090, 5090] | 2000 [2000, 2000] | 1980 [1240, 4090] |
Median [min, max] | 7180 [7180, 7180] | 2090 [549, 3270] | 1280 [665, 7180] | 1960 [814, 7870] | 4430 [4430, 4430] | 5090 [5090, 5090] | 2000 [2000, 2000] | 1980 [549, 7870] |
active_sample | ||||||||
Mean (SD) | NA | 1540 (828) | 2180 (1910) | 2880 (2570) | NA | NA | NA | 2500 (2060) |
Median [Q1, Q3] | 6640 [6640, 6640] | 1560 [1160, 1920] | 1090 [890, 3650] | 1700 [1390, 4740] | 4130 [4130, 4130] | 4940 [4940, 4940] | 1950 [1950, 1950] | 1730 [1050, 3660] |
Median [min, max] | 6640 [6640, 6640] | 1560 [426, 2790] | 1090 [544, 6650] | 1700 [479, 7390] | 4130 [4130, 4130] | 4940 [4940, 4940] | 1950 [1950, 1950] | 1730 [426, 7390] |
n_event | ||||||||
Mean (SD) | NA | 80.4 (64.1) | 154 (139) | 236 (120) | NA | NA | NA | 177 (152) |
Median [Q1, Q3] | 75.0 [75.0, 75.0] | 53.0 [39.8, 89.0] | 96.0 [72.0, 222] | 193 [141, 346] | 121 [121, 121] | 671 [671, 671] | 312 [312, 312] | 117 [63.8, 229] |
Median [min, max] | 75.0 [75.0, 75.0] | 53.0 [34.0, 190] | 96.0 [29.0, 464] | 193 [110, 402] | 121 [121, 121] | 671 [671, 671] | 312 [312, 312] | 117 [29.0, 671] |
FI_final | ||||||||
Mean (SD) | NA | 8.38 (4.50) | 26.8 (20.9) | 47.7 (58.6) | NA | NA | NA | 27.6 (36.4) |
Median [Q1, Q3] | 24.0 [24.0, 24.0] | 9.50 [6.00, 11.5] | 24.0 [13.0, 40.0] | 14.5 [12.3, 50.3] | 13.0 [13.0, 13.0] | 3.00 [3.00, 3.00] | 33.0 [33.0, 33.0] | 13.5 [8.75, 31.3] |
Median [min, max] | 24.0 [24.0, 24.0] | 9.50 [1.00, 13.0] | 24.0 [1.00, 77.0] | 14.5 [7.00, 171] | 13.0 [13.0, 13.0] | 3.00 [3.00, 3.00] | 33.0 [33.0, 33.0] | 13.5 [1.00, 171] |
FQ_final | ||||||||
Mean (SD) | NA | 0.0101 (0.0111) | 0.0155 (0.0108) | 0.0175 (0.0118) | NA | NA | NA | 0.0137 (0.0111) |
Median [Q1, Q3] | 0.00361 [0.00361, 0.00361] | 0.00591 [0.00279, 0.0134] | 0.0129 [0.00686, 0.0219] | 0.0166 [0.00776, 0.0277] | 0.00314 [0.00314, 0.00314] | 0.000608 [0.000608, 0.000608] | 0.0169 [0.0169, 0.0169] | 0.00997 [0.00442, 0.0205] |
Median [min, max] | 0.00361 [0.00361, 0.00361] | 0.00591 [0.000567, 0.0288] | 0.0129 [0.000946, 0.0368] | 0.0166 [0.00186, 0.0361] | 0.00314 [0.00314, 0.00314] | 0.000608 [0.000608, 0.000608] | 0.0169 [0.0169, 0.0169] | 0.00997 [0.000567, 0.0368] |
as.factor(missing_fi) | ||||||||
0 | 0 (0%) | 0 (0%) | 2 (16.7%) | 0 (0%) | 0 (0%) | 0 (0%) | 1 (100%) | 3 (8.8%) |
1 | 1 (100%) | 6 (75.0%) | 8 (66.7%) | 5 (50.0%) | 0 (0%) | 0 (0%) | 0 (0%) | 20 (58.8%) |
Missing | 0 (0%) | 2 (25.0%) | 2 (16.7%) | 5 (50.0%) | 1 (100%) | 1 (100%) | 0 (0%) | 11 (32.4%) |
kruskal.test(FI_final ~ timing, data = fx_prim)
##
## Kruskal-Wallis rank sum test
##
## data: FI_final by timing
## Kruskal-Wallis chi-squared = 10.765, df = 6, p-value = 0.0959
kruskal.test(FQ_final ~ timing, data = fx_prim)
##
## Kruskal-Wallis rank sum test
##
## data: FQ_final by timing
## Kruskal-Wallis chi-squared = 7.7952, df = 6, p-value = 0.2535
Box plots
p1 = ggplot(data = fx_prim, aes(y = FI_final, x = as.factor(timing), fill = as.factor(timing))) + geom_boxplot() +
geom_jitter(alpha=0.2) + theme_bw() + theme(legend.position="none") +
labs(title = "Fragility index by timing of fracture assessment", x = "Timing of fracture assessment", y = "Fragility index")
p1
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | as.factor(journal_code2), data = fx_prim, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]"))
NEJM (N=19) |
Lancet (N=2) |
JAMA (N=4) |
Ann Intern Med (N=1) |
JBMR (N=2) |
JCEM (N=2) |
Other (N=4) |
Overall (N=34) |
|
---|---|---|---|---|---|---|---|---|
no_rand | ||||||||
Mean (SD) | 3780 (2530) | 1690 (472) | 2340 (1400) | NA | 1960 (0) | 564 (20.5) | 1820 (2180) | 2920 (2280) |
Median [Q1, Q3] | 3270 [1650, 5640] | 1690 [1530, 1860] | 1640 [1640, 2340] | 2530 [2530, 2530] | 1960 [1960, 1960] | 564 [556, 571] | 759 [694, 1880] | 1980 [1240, 4090] |
Median [min, max] | 3270 [1090, 7870] | 1690 [1360, 2030] | 1640 [1630, 4430] | 2530 [2530, 2530] | 1960 [1960, 1960] | 564 [549, 578] | 759 [665, 5090] | 1980 [549, 7870] |
active_sample | ||||||||
Mean (SD) | 3180 (2320) | 1500 (634) | 2080 (1370) | NA | 1950 (0) | 439 (17.7) | 1710 (2150) | 2500 (2060) |
Median [Q1, Q3] | 2380 [1280, 4880] | 1500 [1270, 1720] | 1410 [1390, 2100] | 1700 [1700, 1700] | 1950 [1950, 1950] | 439 [432, 445] | 674 [629, 1750] | 1730 [1050, 3660] |
Median [min, max] | 2380 [479, 7390] | 1500 [1050, 1950] | 1410 [1370, 4130] | 1700 [1700, 1700] | 1950 [1950, 1950] | 439 [426, 451] | 674 [544, 4940] | 1730 [426, 7390] |
n_event | ||||||||
Mean (SD) | 213 (141) | 158 (92.6) | 86.3 (60.7) | NA | 111 (1.41) | 44.5 (4.95) | 238 (292) | 177 (152) |
Median [Q1, Q3] | 190 [84.5, 341] | 158 [125, 190] | 78.5 [35.5, 129] | 60.0 [60.0, 60.0] | 111 [111, 112] | 44.5 [42.8, 46.3] | 121 [84.8, 274] | 117 [63.8, 229] |
Median [min, max] | 190 [29.0, 464] | 158 [92.0, 223] | 78.5 [34.0, 154] | 60.0 [60.0, 60.0] | 111 [110, 112] | 44.5 [41.0, 48.0] | 121 [39.0, 671] | 117 [29.0, 671] |
FI_final | ||||||||
Mean (SD) | 38.6 (45.7) | 27.5 (17.7) | 12.0 (1.15) | NA | 14.0 (1.41) | 12.0 (1.41) | 11.0 (7.53) | 27.6 (36.4) |
Median [Q1, Q3] | 25.0 [7.50, 43.5] | 27.5 [21.3, 33.8] | 12.0 [11.0, 13.0] | 7.00 [7.00, 7.00] | 14.0 [13.5, 14.5] | 12.0 [11.5, 12.5] | 10.5 [6.00, 15.5] | 13.5 [8.75, 31.3] |
Median [min, max] | 25.0 [1.00, 171] | 27.5 [15.0, 40.0] | 12.0 [11.0, 13.0] | 7.00 [7.00, 7.00] | 14.0 [13.0, 15.0] | 12.0 [11.0, 13.0] | 10.5 [3.00, 20.0] | 13.5 [1.00, 171] |
FQ_final | ||||||||
Mean (SD) | 0.0138 (0.0118) | 0.0174 (0.00442) | 0.00703 (0.00268) | NA | 0.00717 (0.000724) | 0.0273 (0.00212) | 0.0171 (0.0154) | 0.0137 (0.0111) |
Median [Q1, Q3] | 0.0115 [0.00349, 0.0223] | 0.0174 [0.0159, 0.0190] | 0.00785 [0.00656, 0.00832] | 0.00412 [0.00412, 0.00412] | 0.00717 [0.00692, 0.00743] | 0.0273 [0.0266, 0.0281] | 0.0155 [0.00814, 0.0244] | 0.00997 [0.00442, 0.0205] |
Median [min, max] | 0.0115 [0.000567, 0.0361] | 0.0174 [0.0143, 0.0206] | 0.00785 [0.00314, 0.00928] | 0.00412 [0.00412, 0.00412] | 0.00717 [0.00666, 0.00768] | 0.0273 [0.0258, 0.0288] | 0.0155 [0.000608, 0.0368] | 0.00997 [0.000567, 0.0368] |
as.factor(missing_fi) | ||||||||
0 | 2 (10.5%) | 1 (50.0%) | 0 (0%) | 0 (0%) | 0 (0%) | 0 (0%) | 0 (0%) | 3 (8.8%) |
1 | 12 (63.2%) | 1 (50.0%) | 3 (75.0%) | 1 (100%) | 0 (0%) | 0 (0%) | 3 (75.0%) | 20 (58.8%) |
Missing | 5 (26.3%) | 0 (0%) | 1 (25.0%) | 0 (0%) | 2 (100%) | 2 (100%) | 1 (25.0%) | 11 (32.4%) |
kruskal.test(FI_final ~ journal_code2, data = fx_prim)
##
## Kruskal-Wallis rank sum test
##
## data: FI_final by journal_code2
## Kruskal-Wallis chi-squared = 5.0581, df = 6, p-value = 0.5364
kruskal.test(FQ_final ~ journal_code2, data = fx_prim)
##
## Kruskal-Wallis rank sum test
##
## data: FQ_final by journal_code2
## Kruskal-Wallis chi-squared = 5.3118, df = 6, p-value = 0.5045
Box plots
p1 = ggplot(data = fx_prim, aes(y = FI_final, x = as.factor(timing), fill = as.factor(timing))) + geom_boxplot() +
geom_jitter(alpha=0.2) + theme_bw() + theme(legend.position="none") +
labs(title = "Fragility index by timing of fracture assessment", x = "Timing of fracture assessment", y = "Fragility index")
p1
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | sex, data = fx_prim, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]"))
Both (N=4) |
Men (N=2) |
Women (N=28) |
Overall (N=34) |
|
---|---|---|---|---|
no_rand | ||||
Mean (SD) | 980 (766) | 1200 (0) | 3320 (2310) | 2920 (2280) |
Median [Q1, Q3] | 622 [571, 1030] | 1200 [1200, 1200] | 2280 [1640, 4180] | 1980 [1240, 4090] |
Median [min, max] | 622 [549, 2130] | 1200 [1200, 1200] | 2280 [704, 7870] | 1980 [549, 7870] |
active_sample | ||||
Mean (SD) | 503 (105) | 1090 (49.5) | 2890 (2080) | 2500 (2060) |
Median [Q1, Q3] | 465 [445, 524] | 1090 [1070, 1110] | 1950 [1420, 4100] | 1730 [1050, 3660] |
Median [min, max] | 465 [426, 657] | 1090 [1060, 1130] | 1950 [544, 7390] | 1730 [426, 7390] |
n_event | ||||
Mean (SD) | 89.8 (94.2) | 33.0 (5.66) | 200 (155) | 177 (152) |
Median [Q1, Q3] | 44.5 [40.5, 93.8] | 33.0 [31.0, 35.0] | 141 [90.5, 317] | 117 [63.8, 229] |
Median [min, max] | 44.5 [39.0, 231] | 33.0 [29.0, 37.0] | 141 [34.0, 671] | 117 [29.0, 671] |
FI_final | ||||
Mean (SD) | 9.50 (3.00) | 3.50 (3.54) | 31.9 (38.8) | 27.6 (36.4) |
Median [Q1, Q3] | 9.00 [7.00, 11.5] | 3.50 [2.25, 4.75] | 17.5 [11.8, 40.0] | 13.5 [8.75, 31.3] |
Median [min, max] | 9.00 [7.00, 13.0] | 3.50 [1.00, 6.00] | 17.5 [1.00, 171] | 13.5 [1.00, 171] |
FQ_final | ||||
Mean (SD) | 0.0200 (0.00872) | 0.00313 (0.00310) | 0.0136 (0.0113) | 0.0137 (0.0111) |
Median [Q1, Q3] | 0.0202 [0.0136, 0.0266] | 0.00313 [0.00204, 0.00423] | 0.00864 [0.00399, 0.0204] | 0.00997 [0.00442, 0.0205] |
Median [min, max] | 0.0202 [0.0107, 0.0288] | 0.00313 [0.000946, 0.00532] | 0.00864 [0.000567, 0.0368] | 0.00997 [0.000567, 0.0368] |
as.factor(missing_fi) | ||||
0 | 0 (0%) | 0 (0%) | 3 (10.7%) | 3 (8.8%) |
1 | 2 (50.0%) | 2 (100%) | 16 (57.1%) | 20 (58.8%) |
Missing | 2 (50.0%) | 0 (0%) | 9 (32.1%) | 11 (32.4%) |
kruskal.test(FI_final ~ sex, data = fx_prim)
##
## Kruskal-Wallis rank sum test
##
## data: FI_final by sex
## Kruskal-Wallis chi-squared = 7.5261, df = 2, p-value = 0.02321
kruskal.test(FQ_final ~ sex, data = fx_prim)
##
## Kruskal-Wallis rank sum test
##
## data: FQ_final by sex
## Kruskal-Wallis chi-squared = 4.2872, df = 2, p-value = 0.1172
Box plots
p1 = ggplot(data = fx_prim, aes(y = FI_final, x = as.factor(sex), fill = as.factor(sex))) + geom_boxplot() +
geom_jitter(alpha=0.2) + theme_bw() + theme(legend.position="none") +
labs(title = "Fragility index by sex", x = "Sex", y = "Fragility index")
p1
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | placebo, data = fx_prim, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]"))
Active (N=6) |
Placebo (N=28) |
Overall (N=34) |
|
---|---|---|---|
no_rand | |||
Mean (SD) | 2820 (1400) | 2950 (2450) | 2920 (2280) |
Median [Q1, Q3] | 2870 [1640, 4090] | 1980 [1170, 3560] | 1980 [1240, 4090] |
Median [min, max] | 2870 [1360, 4090] | 1980 [549, 7870] | 1980 [549, 7870] |
active_sample | |||
Mean (SD) | 2550 (1390) | 2490 (2200) | 2500 (2060) |
Median [Q1, Q3] | 2540 [1410, 3660] | 1730 [890, 3130] | 1730 [1050, 3660] |
Median [min, max] | 2540 [1050, 4090] | 1730 [426, 7390] | 1730 [426, 7390] |
n_event | |||
Mean (SD) | 203 (182) | 172 (148) | 177 (152) |
Median [Q1, Q3] | 157 [50.0, 333] | 117 [71.3, 225] | 117 [63.8, 229] |
Median [min, max] | 157 [34.0, 464] | 117 [29.0, 671] | 117 [29.0, 671] |
FI_final | |||
Mean (SD) | 30.7 (25.5) | 27.0 (38.7) | 27.6 (36.4) |
Median [Q1, Q3] | 20.5 [13.5, 38.0] | 13.0 [7.00, 27.0] | 13.5 [8.75, 31.3] |
Median [min, max] | 20.5 [11.0, 77.0] | 13.0 [1.00, 171] | 13.5 [1.00, 171] |
FQ_final | |||
Mean (SD) | 0.0115 (0.00447) | 0.0142 (0.0121) | 0.0137 (0.0111) |
Median [Q1, Q3] | 0.0104 [0.00810, 0.0136] | 0.00933 [0.00355, 0.0258] | 0.00997 [0.00442, 0.0205] |
Median [min, max] | 0.0104 [0.00714, 0.0188] | 0.00933 [0.000567, 0.0368] | 0.00997 [0.000567, 0.0368] |
as.factor(missing_fi) | |||
0 | 2 (33.3%) | 1 (3.6%) | 3 (8.8%) |
1 | 4 (66.7%) | 16 (57.1%) | 20 (58.8%) |
Missing | 0 (0%) | 11 (39.3%) | 11 (32.4%) |
kruskal.test(FI_final ~ placebo, data = fx_prim)
##
## Kruskal-Wallis rank sum test
##
## data: FI_final by placebo
## Kruskal-Wallis chi-squared = 1.4928, df = 1, p-value = 0.2218
kruskal.test(FQ_final ~ placebo, data = fx_prim)
##
## Kruskal-Wallis rank sum test
##
## data: FQ_final by placebo
## Kruskal-Wallis chi-squared = 0.018367, df = 1, p-value = 0.8922
Box plots
p1 = ggplot(data = fx_prim, aes(y = FI_final, x = as.factor(control), fill = as.factor(control))) + geom_boxplot() +
geom_jitter(alpha=0.2) + theme_bw() + theme(legend.position="none") +
labs(title = "Fragility index by types of control", x = "Types of control", y = "Fragility index")
p1
Data set:
p_sig = subset(fi_sig, Pval_screen<=0.001)
# Comparison of different P values:
fi_sig$p_sig1[fi_sig$p_value<=0.001] = "Highly significant"
fi_sig$p_sig1[fi_sig$p_value>0.001] = "Significant"
fi_sig$p_sig2[fi_sig$Pval_screen<=0.001] = "Highly significant"
fi_sig$p_sig2[fi_sig$Pval_screen>0.001] = "Significant"
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | p_sig2 , data = fi_sig, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]" ))
Highly significant (N=45) |
Significant (N=100) |
Overall (N=145) |
|
---|---|---|---|
no_rand | |||
Mean (SD) | 3860 (2780) | 2470 (1910) | 2900 (2300) |
Median [Q1, Q3] | 2420 [1640, 7180] | 1840 [1200, 3270] | 1960 [1220, 4090] |
Median [min, max] | 2420 [549, 7870] | 1840 [450, 7870] | 1960 [450, 7870] |
active_sample | |||
Mean (SD) | 3430 (2520) | 2140 (1710) | 2540 (2080) |
Median [Q1, Q3] | 2380 [1270, 6530] | 1660 [921, 2790] | 1770 [1060, 3650] |
Median [min, max] | 2380 [426, 7810] | 1660 [339, 6670] | 1770 [339, 7810] |
n_event | |||
Mean (SD) | 220 (190) | 139 (154) | 164 (170) |
Median [Q1, Q3] | 128 [82.0, 330] | 71.0 [42.8, 164] | 91.0 [52.0, 223] |
Median [min, max] | 128 [34.0, 764] | 71.0 [10.0, 691] | 91.0 [10.0, 764] |
FI_final | |||
Mean (SD) | 37.9 (33.0) | 6.95 (5.91) | 16.6 (23.8) |
Median [Q1, Q3] | 26.0 [18.0, 42.0] | 5.00 [2.75, 10.0] | 9.00 [4.00, 19.0] |
Median [min, max] | 26.0 [9.00, 171] | 5.00 [1.00, 29.0] | 9.00 [1.00, 171] |
FQ_final | |||
Mean (SD) | 0.0163 (0.0154) | 0.00450 (0.00395) | 0.00815 (0.0106) |
Median [Q1, Q3] | 0.0131 [0.00670, 0.0193] | 0.00318 [0.00158, 0.00633] | 0.00505 [0.00230, 0.00955] |
Median [min, max] | 0.0131 [0.00230, 0.0966] | 0.00318 [0.000151, 0.0203] | 0.00505 [0.000151, 0.0966] |
as.factor(missing_fi) | |||
0 | 6 (13.3%) | 4 (4.0%) | 10 (6.9%) |
1 | 24 (53.3%) | 62 (62.0%) | 86 (59.3%) |
Missing | 15 (33.3%) | 34 (34.0%) | 49 (33.8%) |
createTable(compareGroups(p_sig2 ~ no_rand + active_sample + n_event + FI_final + FQ_final + missing_fi, data = fi_sig, method = c(no_rand = 2, active_sample = 2, n_event = 2, FI_final = 2, FQ_final = 2)))
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning in chisq.test(xx, correct = FALSE): Chi-squared approximation may be
## incorrect
##
## --------Summary descriptives table by 'p_sig2'---------
##
## ___________________________________________________________
## Highly significant Significant p.overall
## N=45 N=100
## ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
## no_rand 2416 [1639;7180] 1836 [1199;3270] 0.011
## active_sample 2376 [1266;6528] 1664 [920;2790] 0.006
## n_event 128 [82.0;330] 71.0 [42.8;164] 0.001
## FI_final 26.0 [18.0;42.0] 5.00 [2.75;10.0] <0.001
## FQ_final 0.01 [0.01;0.02] 0.00 [0.00;0.01] <0.001
## missing_fi: 0.066
## 0 6 (20.0%) 4 (6.06%)
## 1 24 (80.0%) 62 (93.9%)
## ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
# Subset of analyses whose P-value<= 0.001
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi), data = p_sig, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]" ))
Overall (N=45) |
|
---|---|
no_rand | |
Mean (SD) | 3860 (2780) |
Median [Q1, Q3] | 2420 [1640, 7180] |
Median [min, max] | 2420 [549, 7870] |
active_sample | |
Mean (SD) | 3430 (2520) |
Median [Q1, Q3] | 2380 [1270, 6530] |
Median [min, max] | 2380 [426, 7810] |
n_event | |
Mean (SD) | 220 (190) |
Median [Q1, Q3] | 128 [82.0, 330] |
Median [min, max] | 128 [34.0, 764] |
FI_final | |
Mean (SD) | 37.9 (33.0) |
Median [Q1, Q3] | 26.0 [18.0, 42.0] |
Median [min, max] | 26.0 [9.00, 171] |
FQ_final | |
Mean (SD) | 0.0163 (0.0154) |
Median [Q1, Q3] | 0.0131 [0.00670, 0.0193] |
Median [min, max] | 0.0131 [0.00230, 0.0966] |
as.factor(missing_fi) | |
0 | 6 (13.3%) |
1 | 24 (53.3%) |
Missing | 15 (33.3%) |
Relationship between sample size/active sample/no. events and FI
p = ggplot(data = p_sig, aes(x = no_rand, y = FI_final))
p1 = p + geom_point() + geom_smooth() + labs(x = "Number of participants at randomisation", y = "Fragility index") + theme_bw()
p0 = ggplot(data = p_sig, aes(x = active_sample, y = FI_final))
p2 = p0 + geom_point() + geom_smooth() + labs(x = "Number of participants included in the analyses", y = "Fragility index") + theme_bw()
p.0 = ggplot(data = p_sig, aes(x = n_event, y = FI_final))
p3 = p.0 + geom_point() + geom_smooth() + labs(x = "Number of participants with fracture events", y = "Fragility index") + theme_bw()
#grid.arrange(p1, p2, p3, nrow = 1)
grid.arrange(p1, p3, nrow = 1, top = textGrob("Relationship between Number of participants and Fragility index", gp = gpar(fontsize = 20, font = 3)))
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | as.factor(fx_code1), data = p_sig, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]"))
Clin_fx (N=2) |
OFx (N=3) |
MOF (N=2) |
NonVert_fx (N=4) |
Vert_fx (N=31) |
ClinVert_fx (N=3) |
Overall (N=45) |
|
---|---|---|---|---|---|---|---|
no_rand | |||||||
Mean (SD) | 7460 (393) | 3400 (1210) | 2870 (1730) | 6340 (2060) | 3230 (2710) | 5750 (3550) | 3860 (2780) |
Median [Q1, Q3] | 7460 [7320, 7600] | 4090 [3050, 4090] | 2870 [2260, 3480] | 7180 [6200, 7320] | 1650 [1290, 5640] | 7740 [4690, 7800] | 2420 [1640, 7180] |
Median [min, max] | 7460 [7180, 7740] | 4090 [2000, 4090] | 2870 [1650, 4090] | 7180 [3270, 7740] | 1650 [549, 7870] | 7740 [1650, 7870] | 2420 [549, 7870] |
active_sample | |||||||
Mean (SD) | 6620 (100) | 3250 (1130) | 2400 (1600) | 5560 (2120) | 2860 (2440) | 5230 (3350) | 3430 (2520) |
Median [Q1, Q3] | 6620 [6580, 6660] | 3840 [2890, 3910] | 2400 [1830, 2970] | 6590 [5490, 6650] | 1440 [1050, 4880] | 6430 [3940, 7120] | 2380 [1270, 6530] |
Median [min, max] | 6620 [6550, 6690] | 3840 [1950, 3980] | 2400 [1270, 3530] | 6590 [2380, 6670] | 1440 [426, 7390] | 6430 [1440, 7810] | 2380 [426, 7810] |
n_event | |||||||
Mean (SD) | 505 (366) | 431 (197) | 200 (220) | 357 (229) | 173 (154) | 144 (55.6) | 220 (190) |
Median [Q1, Q3] | 505 [376, 635] | 323 [318, 491] | 200 [122, 277] | 290 [211, 436] | 100 [74.0, 258] | 121 [112, 164] | 128 [82.0, 330] |
Median [min, max] | 505 [246, 764] | 323 [312, 658] | 200 [44.0, 355] | 290 [168, 680] | 100 [34.0, 696] | 121 [103, 207] | 128 [34.0, 764] |
FI_final | |||||||
Mean (SD) | 62.5 (37.5) | 42.7 (19.4) | 17.5 (12.0) | 28.0 (10.1) | 39.0 (37.6) | 33.0 (13.1) | 37.9 (33.0) |
Median [Q1, Q3] | 62.5 [49.3, 75.8] | 33.0 [31.5, 49.0] | 17.5 [13.3, 21.8] | 24.0 [22.5, 29.5] | 24.0 [17.0, 43.5] | 39.0 [28.5, 40.5] | 26.0 [18.0, 42.0] |
Median [min, max] | 62.5 [36.0, 89.0] | 33.0 [30.0, 65.0] | 17.5 [9.00, 26.0] | 24.0 [21.0, 43.0] | 24.0 [11.0, 171] | 39.0 [18.0, 42.0] | 26.0 [9.00, 171] |
FQ_final | |||||||
Mean (SD) | 0.00949 (0.00580) | 0.0138 (0.00543) | 0.00723 (0.000175) | 0.00593 (0.00343) | 0.0196 (0.0174) | 0.00800 (0.00395) | 0.0163 (0.0154) |
Median [Q1, Q3] | 0.00949 [0.00743, 0.0115] | 0.0169 [0.0122, 0.0169] | 0.00723 [0.00717, 0.00730] | 0.00502 [0.00338, 0.00757] | 0.0185 [0.00799, 0.0258] | 0.00653 [0.00576, 0.00951] | 0.0131 [0.00670, 0.0193] |
Median [min, max] | 0.00949 [0.00538, 0.0136] | 0.0169 [0.00754, 0.0169] | 0.00723 [0.00711, 0.00736] | 0.00502 [0.00315, 0.0105] | 0.0185 [0.00230, 0.0966] | 0.00653 [0.00499, 0.0125] | 0.0131 [0.00230, 0.0966] |
as.factor(missing_fi) | |||||||
0 | 0 (0%) | 2 (66.7%) | 0 (0%) | 0 (0%) | 4 (12.9%) | 0 (0%) | 6 (13.3%) |
1 | 2 (100%) | 1 (33.3%) | 2 (100%) | 4 (100%) | 14 (45.2%) | 1 (33.3%) | 24 (53.3%) |
Missing | 0 (0%) | 0 (0%) | 0 (0%) | 0 (0%) | 13 (41.9%) | 2 (66.7%) | 15 (33.3%) |
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | as.factor(fx_code2), data = p_sig, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]"))
Any (N=2) |
Osteoporotic (N=5) |
Non-Vertebrae (N=4) |
Vertebrae (N=31) |
Clinical Vertebrae (N=3) |
Overall (N=45) |
|
---|---|---|---|---|---|---|
no_rand | ||||||
Mean (SD) | 7460 (393) | 3180 (1250) | 6340 (2060) | 3230 (2710) | 5750 (3550) | 3860 (2780) |
Median [Q1, Q3] | 7460 [7320, 7600] | 4090 [2000, 4090] | 7180 [6200, 7320] | 1650 [1290, 5640] | 7740 [4690, 7800] | 2420 [1640, 7180] |
Median [min, max] | 7460 [7180, 7740] | 4090 [1650, 4090] | 7180 [3270, 7740] | 1650 [549, 7870] | 7740 [1650, 7870] | 2420 [549, 7870] |
active_sample | ||||||
Mean (SD) | 6620 (100) | 2910 (1230) | 5560 (2120) | 2860 (2440) | 5230 (3350) | 3430 (2520) |
Median [Q1, Q3] | 6620 [6580, 6660] | 3530 [1950, 3840] | 6590 [5490, 6650] | 1440 [1050, 4880] | 6430 [3940, 7120] | 2380 [1270, 6530] |
Median [min, max] | 6620 [6550, 6690] | 3530 [1270, 3980] | 6590 [2380, 6670] | 1440 [426, 7390] | 6430 [1440, 7810] | 2380 [426, 7810] |
n_event | ||||||
Mean (SD) | 505 (366) | 338 (218) | 357 (229) | 173 (154) | 144 (55.6) | 220 (190) |
Median [Q1, Q3] | 505 [376, 635] | 323 [312, 355] | 290 [211, 436] | 100 [74.0, 258] | 121 [112, 164] | 128 [82.0, 330] |
Median [min, max] | 505 [246, 764] | 323 [44.0, 658] | 290 [168, 680] | 100 [34.0, 696] | 121 [103, 207] | 128 [34.0, 764] |
FI_final | ||||||
Mean (SD) | 62.5 (37.5) | 32.6 (20.4) | 28.0 (10.1) | 39.0 (37.6) | 33.0 (13.1) | 37.9 (33.0) |
Median [Q1, Q3] | 62.5 [49.3, 75.8] | 30.0 [26.0, 33.0] | 24.0 [22.5, 29.5] | 24.0 [17.0, 43.5] | 39.0 [28.5, 40.5] | 26.0 [18.0, 42.0] |
Median [min, max] | 62.5 [36.0, 89.0] | 30.0 [9.00, 65.0] | 24.0 [21.0, 43.0] | 24.0 [11.0, 171] | 39.0 [18.0, 42.0] | 26.0 [9.00, 171] |
FQ_final | ||||||
Mean (SD) | 0.00949 (0.00580) | 0.0112 (0.00526) | 0.00593 (0.00343) | 0.0196 (0.0174) | 0.00800 (0.00395) | 0.0163 (0.0154) |
Median [Q1, Q3] | 0.00949 [0.00743, 0.0115] | 0.00754 [0.00736, 0.0169] | 0.00502 [0.00338, 0.00757] | 0.0185 [0.00799, 0.0258] | 0.00653 [0.00576, 0.00951] | 0.0131 [0.00670, 0.0193] |
Median [min, max] | 0.00949 [0.00538, 0.0136] | 0.00754 [0.00711, 0.0169] | 0.00502 [0.00315, 0.0105] | 0.0185 [0.00230, 0.0966] | 0.00653 [0.00499, 0.0125] | 0.0131 [0.00230, 0.0966] |
as.factor(missing_fi) | ||||||
0 | 0 (0%) | 2 (40.0%) | 0 (0%) | 4 (12.9%) | 0 (0%) | 6 (13.3%) |
1 | 2 (100%) | 3 (60.0%) | 4 (100%) | 14 (45.2%) | 1 (33.3%) | 24 (53.3%) |
Missing | 0 (0%) | 0 (0%) | 0 (0%) | 13 (41.9%) | 2 (66.7%) | 15 (33.3%) |
kruskal.test(FI_final ~ fx_code2, data = p_sig)
##
## Kruskal-Wallis rank sum test
##
## data: FI_final by fx_code2
## Kruskal-Wallis chi-squared = 1.7455, df = 4, p-value = 0.7824
kruskal.test(FQ_final ~ fx_code2, data = p_sig)
##
## Kruskal-Wallis rank sum test
##
## data: FQ_final by fx_code2
## Kruskal-Wallis chi-squared = 9.9548, df = 4, p-value = 0.0412
Box plots
p1 = ggplot(data = p_sig, aes(y = FI_final, x = as.factor(fx_code2), fill = as.factor(fx_code2))) + geom_boxplot() +
geom_jitter(alpha=0.2) + theme_bw() + theme(legend.position="none") +
labs(title = "Fragility index", x = "Fracture sites", y = "Fragility index") + theme(axis.text.x = element_text(angle = 45, hjust = 1))
p2 = ggplot(data = p_sig, aes(y = FQ_final, x = as.factor(fx_code2), fill = as.factor(fx_code2))) + geom_boxplot() +
geom_jitter(alpha=0.2) + theme_bw() + theme(legend.position="none") +
labs(title = "Fragility quotient", x = "Fracture sites", y = "Fragility quotient") + theme(axis.text.x = element_text(angle = 45, hjust = 1))
grid.arrange(p1, p2, nrow = 1, top = textGrob("Fragility of evidence for anti-fracture efficacy by fracture sites", gp = gpar(fontsize = 20, font = 1)))
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | as.factor(interv_code1), data = p_sig, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]"))
Alendronate (N=1) |
Ibandronate (N=1) |
Risedronate (N=1) |
Minodronate (N=1) |
Zoledronate (N=6) |
Teriparatide (N=9) |
Abaloparatide (N=2) |
Romosozumab (N=13) |
Denosumab (N=3) |
Strontium_ranelate (N=7) |
Calcium_VitD (N=1) |
Overall (N=45) |
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
no_rand | ||||||||||||
Mean (SD) | NA | NA | NA | NA | 6780 (2340) | 1090 (354) | 1650 (0) | 5760 (1600) | 7870 (0) | 1700 (354) | NA | 3860 (2780) |
Median [Q1, Q3] | 2030 [2030, 2030] | 1960 [1960, 1960] | 1630 [1630, 1630] | 704 [704, 704] | 7740 [7740, 7740] | 1100 [1090, 1360] | 1650 [1650, 1650] | 7180 [4090, 7180] | 7870 [7870, 7870] | 1650 [1650, 1650] | 3270 [3270, 3270] | 2420 [1640, 7180] |
Median [min, max] | 2030 [2030, 2030] | 1960 [1960, 1960] | 1630 [1630, 1630] | 704 [704, 704] | 7740 [2000, 7740] | 1100 [549, 1640] | 1650 [1650, 1650] | 7180 [4090, 7180] | 7870 [7870, 7870] | 1650 [1220, 2420] | 3270 [3270, 3270] | 2420 [549, 7870] |
active_sample | ||||||||||||
Mean (SD) | NA | NA | NA | NA | 5470 (1770) | 883 (306) | 1330 (95.5) | 5360 (1510) | 7530 (240) | 1500 (421) | NA | 3430 (2520) |
Median [Q1, Q3] | 1950 [1950, 1950] | 1950 [1950, 1950] | 1330 [1330, 1330] | 544 [544, 544] | 6050 [5680, 6500] | 892 [882, 1050] | 1330 [1300, 1370] | 6640 [3840, 6650] | 7390 [7390, 7600] | 1440 [1300, 1440] | 2380 [2380, 2380] | 2380 [1270, 6530] |
Median [min, max] | 1950 [1950, 1950] | 1950 [1950, 1950] | 1330 [1330, 1330] | 544 [544, 544] | 6050 [1950, 6550] | 892 [426, 1430] | 1330 [1270, 1400] | 6640 [3530, 6910] | 7390 [7390, 7810] | 1440 [1150, 2420] | 2380 [2380, 2380] | 2380 [426, 7810] |
n_event | ||||||||||||
Mean (SD) | NA | NA | NA | NA | 389 (287) | 64.8 (25.0) | 39.0 (7.07) | 245 (160) | 184 (145) | 334 (182) | NA | 220 (190) |
Median [Q1, Q3] | 223 [223, 223] | 110 [110, 110] | 58.0 [58.0, 58.0] | 100 [100, 100] | 357 [155, 611] | 51.0 [46.0, 86.0] | 39.0 [36.5, 41.5] | 225 [106, 323] | 121 [102, 236] | 330 [234, 360] | 355 [355, 355] | 128 [82.0, 330] |
Median [min, max] | 223 [223, 223] | 110 [110, 110] | 58.0 [58.0, 58.0] | 100 [100, 100] | 357 [73.0, 764] | 51.0 [36.0, 100] | 39.0 [34.0, 44.0] | 225 [75.0, 658] | 121 [82.0, 350] | 330 [128, 696] | 355 [355, 355] | 128 [34.0, 764] |
FI_final | ||||||||||||
Mean (SD) | NA | NA | NA | NA | 69.3 (53.8) | 17.1 (5.21) | 11.0 (2.83) | 38.3 (16.9) | 64.3 (63.9) | 44.7 (32.4) | NA | 37.9 (33.0) |
Median [Q1, Q3] | 40.0 [40.0, 40.0] | 15.0 [15.0, 15.0] | 11.0 [11.0, 11.0] | 20.0 [20.0, 20.0] | 42.5 [39.0, 77.5] | 17.0 [13.0, 22.0] | 11.0 [10.0, 12.0] | 36.0 [26.0, 42.0] | 39.0 [28.0, 88.0] | 45.0 [21.0, 48.5] | 25.0 [25.0, 25.0] | 26.0 [18.0, 42.0] |
Median [min, max] | 40.0 [40.0, 40.0] | 15.0 [15.0, 15.0] | 11.0 [11.0, 11.0] | 20.0 [20.0, 20.0] | 42.5 [33.0, 171] | 17.0 [11.0, 25.0] | 11.0 [9.00, 13.0] | 36.0 [21.0, 77.0] | 39.0 [17.0, 137] | 45.0 [18.0, 111] | 25.0 [25.0, 25.0] | 26.0 [9.00, 171] |
FQ_final | ||||||||||||
Mean (SD) | NA | NA | NA | NA | 0.0134 (0.00928) | 0.0212 (0.00726) | 0.00819 (0.00153) | 0.00820 (0.00525) | 0.00861 (0.00870) | 0.0325 (0.0296) | NA | 0.0163 (0.0154) |
Median [Q1, Q3] | 0.0206 [0.0206, 0.0206] | 0.00768 [0.00768, 0.00768] | 0.00828 [0.00828, 0.00828] | 0.0368 [0.0368, 0.0368] | 0.0101 [0.00661, 0.0161] | 0.0247 [0.0162, 0.0258] | 0.00819 [0.00765, 0.00874] | 0.00601 [0.00391, 0.0115] | 0.00499 [0.00365, 0.0118] | 0.0188 [0.0162, 0.0336] | 0.0105 [0.0105, 0.0105] | 0.0131 [0.00670, 0.0193] |
Median [min, max] | 0.0206 [0.0206, 0.0206] | 0.00768 [0.00768, 0.00768] | 0.00828 [0.00828, 0.00828] | 0.0368 [0.0368, 0.0368] | 0.0101 [0.00653, 0.0301] | 0.0247 [0.00770, 0.0288] | 0.00819 [0.00711, 0.00928] | 0.00601 [0.00315, 0.0188] | 0.00499 [0.00230, 0.0185] | 0.0188 [0.0125, 0.0966] | 0.0105 [0.0105, 0.0105] | 0.0131 [0.00230, 0.0966] |
as.factor(missing_fi) | ||||||||||||
0 | 0 (0%) | 0 (0%) | 0 (0%) | 0 (0%) | 1 (16.7%) | 2 (22.2%) | 0 (0%) | 2 (15.4%) | 0 (0%) | 1 (14.3%) | 0 (0%) | 6 (13.3%) |
1 | 1 (100%) | 0 (0%) | 1 (100%) | 1 (100%) | 5 (83.3%) | 1 (11.1%) | 2 (100%) | 11 (84.6%) | 0 (0%) | 1 (14.3%) | 1 (100%) | 24 (53.3%) |
Missing | 0 (0%) | 1 (100%) | 0 (0%) | 0 (0%) | 0 (0%) | 6 (66.7%) | 0 (0%) | 0 (0%) | 3 (100%) | 5 (71.4%) | 0 (0%) | 15 (33.3%) |
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | as.factor(interv_code2), data = p_sig, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]"))
Bisphosphonates (N=10) |
PTH analog (N=11) |
Romosozumab (N=13) |
Denosumab (N=3) |
Strontium_ranelate (N=7) |
Calcium_VitD (N=1) |
Overall (N=45) |
|
---|---|---|---|---|---|---|---|
no_rand | |||||||
Mean (SD) | 4700 (3220) | 1190 (387) | 5760 (1600) | 7870 (0) | 1700 (354) | NA | 3860 (2780) |
Median [Q1, Q3] | 4880 [1970, 7740] | 1100 [1090, 1500] | 7180 [4090, 7180] | 7870 [7870, 7870] | 1650 [1650, 1650] | 3270 [3270, 3270] | 2420 [1640, 7180] |
Median [min, max] | 4880 [704, 7740] | 1100 [549, 1650] | 7180 [4090, 7180] | 7870 [7870, 7870] | 1650 [1220, 2420] | 3270 [3270, 3270] | 2420 [549, 7870] |
active_sample | |||||||
Mean (SD) | 3860 (2490) | 965 (330) | 5360 (1510) | 7530 (240) | 1500 (421) | NA | 3430 (2520) |
Median [Q1, Q3] | 3810 [1950, 6240] | 892 [882, 1160] | 6640 [3840, 6650] | 7390 [7390, 7600] | 1440 [1300, 1440] | 2380 [2380, 2380] | 2380 [1270, 6530] |
Median [min, max] | 3810 [544, 6550] | 892 [426, 1430] | 6640 [3530, 6910] | 7390 [7390, 7810] | 1440 [1150, 2420] | 2380 [2380, 2380] | 2380 [426, 7810] |
n_event | |||||||
Mean (SD) | 283 (258) | 60.1 (24.7) | 245 (160) | 184 (145) | 334 (182) | NA | 220 (190) |
Median [Q1, Q3] | 167 [101, 380] | 48.0 [42.5, 84.5] | 225 [106, 323] | 121 [102, 236] | 330 [234, 360] | 355 [355, 355] | 128 [82.0, 330] |
Median [min, max] | 167 [58.0, 764] | 48.0 [34.0, 100] | 225 [75.0, 658] | 121 [82.0, 350] | 330 [128, 696] | 355 [355, 355] | 128 [34.0, 764] |
FI_final | |||||||
Mean (SD) | 50.2 (47.7) | 16.0 (5.35) | 38.3 (16.9) | 64.3 (63.9) | 44.7 (32.4) | NA | 37.9 (33.0) |
Median [Q1, Q3] | 39.0 [23.3, 42.8] | 15.0 [12.0, 19.5] | 36.0 [26.0, 42.0] | 39.0 [28.0, 88.0] | 45.0 [21.0, 48.5] | 25.0 [25.0, 25.0] | 26.0 [18.0, 42.0] |
Median [min, max] | 39.0 [11.0, 171] | 15.0 [9.00, 25.0] | 36.0 [21.0, 77.0] | 39.0 [17.0, 137] | 45.0 [18.0, 111] | 25.0 [25.0, 25.0] | 26.0 [9.00, 171] |
FQ_final | |||||||
Mean (SD) | 0.0154 (0.0108) | 0.0188 (0.00838) | 0.00820 (0.00525) | 0.00861 (0.00870) | 0.0325 (0.0296) | NA | 0.0163 (0.0154) |
Median [Q1, Q3] | 0.0109 [0.00694, 0.0197] | 0.0193 [0.0118, 0.0258] | 0.00601 [0.00391, 0.0115] | 0.00499 [0.00365, 0.0118] | 0.0188 [0.0162, 0.0336] | 0.0105 [0.0105, 0.0105] | 0.0131 [0.00670, 0.0193] |
Median [min, max] | 0.0109 [0.00653, 0.0368] | 0.0193 [0.00711, 0.0288] | 0.00601 [0.00315, 0.0188] | 0.00499 [0.00230, 0.0185] | 0.0188 [0.0125, 0.0966] | 0.0105 [0.0105, 0.0105] | 0.0131 [0.00230, 0.0966] |
as.factor(missing_fi) | |||||||
0 | 1 (10.0%) | 2 (18.2%) | 2 (15.4%) | 0 (0%) | 1 (14.3%) | 0 (0%) | 6 (13.3%) |
1 | 8 (80.0%) | 3 (27.3%) | 11 (84.6%) | 0 (0%) | 1 (14.3%) | 1 (100%) | 24 (53.3%) |
Missing | 1 (10.0%) | 6 (54.5%) | 0 (0%) | 3 (100%) | 5 (71.4%) | 0 (0%) | 15 (33.3%) |
kruskal.test(FI_final ~ interv_code2, data = p_sig)
##
## Kruskal-Wallis rank sum test
##
## data: FI_final by interv_code2
## Kruskal-Wallis chi-squared = 16.452, df = 5, p-value = 0.005665
kruskal.test(FQ_final ~ interv_code2, data = p_sig)
##
## Kruskal-Wallis rank sum test
##
## data: FQ_final by interv_code2
## Kruskal-Wallis chi-squared = 17.258, df = 5, p-value = 0.004035
Box plots
p1 = ggplot(data = p_sig, aes(y = FI_final, x = as.factor(interv_code2), fill = as.factor(interv_code2))) + geom_boxplot() +
geom_jitter(alpha=0.2) + theme_bw() + theme(legend.position="none") +
labs(title = "Fragility index", x = "Pharmacological interventions", y = "Fragility index") + theme(axis.text.x = element_text(angle = 45, hjust = 1))
p2 = ggplot(data = p_sig, aes(y = FQ_final, x = as.factor(interv_code2), fill = as.factor(interv_code2))) + geom_boxplot() +
geom_jitter(alpha=0.2) + theme_bw() + theme(legend.position="none") +
labs(title = "Fragility quotient", x = "Pharmacological interventions", y = "Fragility quotine") + theme(axis.text.x = element_text(angle = 45, hjust = 1))
grid.arrange(p1, p2, nrow = 1, top = textGrob("Fragility of evidence for anti-fracture efficacy by intervention sites", gp = gpar(fontsize = 20, font = 1)))
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | as.factor(timing), data = p_sig, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]"))
2 (N=5) |
3 (N=6) |
4 (N=18) |
5 (N=14) |
6 (N=1) |
8 (N=1) |
Overall (N=45) |
|
---|---|---|---|---|---|---|---|
no_rand | |||||||
Mean (SD) | 4350 (2770) | 1550 (993) | 3680 (2560) | 5200 (3110) | NA | NA | 3860 (2780) |
Median [Q1, Q3] | 4090 [1650, 7180] | 1640 [843, 1650] | 4090 [1160, 6410] | 7740 [1730, 7740] | 1650 [1650, 1650] | 2000 [2000, 2000] | 2420 [1640, 7180] |
Median [min, max] | 4090 [1630, 7180] | 1640 [549, 3270] | 4090 [704, 7180] | 7740 [1220, 7870] | 1650 [1650, 1650] | 2000 [2000, 2000] | 2420 [549, 7870] |
active_sample | |||||||
Mean (SD) | 4050 (2710) | 1220 (726) | 3350 (2430) | 4530 (2660) | NA | NA | 3430 (2520) |
Median [Q1, Q3] | 3980 [1390, 6640] | 1330 [655, 1420] | 3600 [931, 6010] | 5680 [1570, 6540] | 1150 [1150, 1150] | 1950 [1950, 1950] | 2380 [1270, 6530] |
Median [min, max] | 3980 [1330, 6910] | 1330 [426, 2380] | 3600 [544, 6690] | 5680 [1220, 7810] | 1150 [1150, 1150] | 1950 [1950, 1950] | 2380 [426, 7810] |
n_event | |||||||
Mean (SD) | 132 (110) | 93.0 (128) | 194 (152) | 300 (215) | NA | NA | 220 (190) |
Median [Q1, Q3] | 76.0 [75.0, 128] | 42.5 [37.3, 47.0] | 137 [94.0, 241] | 296 [113, 378] | 696 [696, 696] | 312 [312, 312] | 128 [82.0, 330] |
Median [min, max] | 76.0 [58.0, 323] | 42.5 [34.0, 355] | 137 [46.0, 658] | 296 [73.0, 764] | 696 [696, 696] | 312 [312, 312] | 128 [34.0, 764] |
FI_final | |||||||
Mean (SD) | 22.2 (7.46) | 13.7 (5.75) | 33.1 (17.1) | 55.3 (46.3) | NA | NA | 37.9 (33.0) |
Median [Q1, Q3] | 24.0 [19.0, 27.0] | 12.0 [11.0, 13.0] | 25.5 [21.3, 40.0] | 42.5 [26.8, 50.3] | 111 [111, 111] | 33.0 [33.0, 33.0] | 26.0 [18.0, 42.0] |
Median [min, max] | 24.0 [11.0, 30.0] | 12.0 [9.00, 25.0] | 25.5 [15.0, 77.0] | 42.5 [15.0, 171] | 111 [111, 111] | 33.0 [33.0, 33.0] | 26.0 [9.00, 171] |
FQ_final | |||||||
Mean (SD) | 0.00741 (0.00410) | 0.0149 (0.00976) | 0.0154 (0.00949) | 0.0153 (0.0108) | NA | NA | 0.0163 (0.0154) |
Median [Q1, Q3] | 0.00754 [0.00391, 0.00828] | 0.00990 [0.00810, 0.0220] | 0.0153 [0.00635, 0.0202] | 0.0130 [0.00661, 0.0187] | 0.0966 [0.0966, 0.0966] | 0.0169 [0.0169, 0.0169] | 0.0131 [0.00670, 0.0193] |
Median [min, max] | 0.00754 [0.00361, 0.0137] | 0.00990 [0.00711, 0.0288] | 0.0153 [0.00315, 0.0368] | 0.0130 [0.00230, 0.0361] | 0.0966 [0.0966, 0.0966] | 0.0169 [0.0169, 0.0169] | 0.0131 [0.00230, 0.0966] |
as.factor(missing_fi) | |||||||
0 | 1 (20.0%) | 0 (0%) | 3 (16.7%) | 1 (7.1%) | 0 (0%) | 1 (100%) | 6 (13.3%) |
1 | 3 (60.0%) | 4 (66.7%) | 11 (61.1%) | 6 (42.9%) | 0 (0%) | 0 (0%) | 24 (53.3%) |
Missing | 1 (20.0%) | 2 (33.3%) | 4 (22.2%) | 7 (50.0%) | 1 (100%) | 0 (0%) | 15 (33.3%) |
kruskal.test(FI_final ~ timing, data = p_sig)
##
## Kruskal-Wallis rank sum test
##
## data: FI_final by timing
## Kruskal-Wallis chi-squared = 16.546, df = 5, p-value = 0.005446
kruskal.test(FQ_final ~ timing, data = p_sig)
##
## Kruskal-Wallis rank sum test
##
## data: FQ_final by timing
## Kruskal-Wallis chi-squared = 5.8108, df = 5, p-value = 0.3251
Box plots
p1 = ggplot(data = p_sig, aes(y = FI_final, x = as.factor(timing), fill = as.factor(timing))) + geom_boxplot() +
geom_jitter(alpha=0.2) + theme_bw() + theme(legend.position="none") +
labs(title = "Fragility index by timing of fracture assessment", x = "Timing of fracture assessment", y = "Fragility index")
p1
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | as.factor(journal_code2), data = p_sig, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]"))
NEJM (N=31) |
Lancet (N=3) |
JAMA (N=4) |
JBMR (N=1) |
JCEM (N=4) |
Other (N=2) |
Overall (N=45) |
|
---|---|---|---|---|---|---|---|
no_rand | |||||||
Mean (SD) | 4950 (2700) | 1580 (385) | 1640 (8.02) | NA | 1190 (874) | 1180 (668) | 3860 (2780) |
Median [Q1, Q3] | 4090 [1820, 7460] | 1360 [1360, 1690] | 1640 [1640, 1650] | 1960 [1960, 1960] | 901 [571, 1520] | 1180 [940, 1410] | 2420 [1640, 7180] |
Median [min, max] | 4090 [1090, 7870] | 1360 [1360, 2030] | 1640 [1630, 1650] | 1960 [1960, 1960] | 901 [549, 2420] | 1180 [704, 1650] | 2420 [549, 7870] |
active_sample | |||||||
Mean (SD) | 4410 (2450) | 1350 (518) | 1360 (73.1) | NA | 1130 (934) | 847 (428) | 3430 (2520) |
Median [Q1, Q3] | 4090 [1700, 6650] | 1050 [1050, 1500] | 1370 [1310, 1410] | 1950 [1950, 1950] | 838 [445, 1520] | 847 [695, 998] | 2380 [1270, 6530] |
Median [min, max] | 4090 [882, 7810] | 1050 [1050, 1950] | 1370 [1270, 1430] | 1950 [1950, 1950] | 838 [426, 2420] | 847 [544, 1150] | 2380 [426, 7810] |
n_event | |||||||
Mean (SD) | 250 (190) | 138 (73.4) | 43.0 (10.9) | NA | 170 (148) | 398 (421) | 220 (190) |
Median [Q1, Q3] | 221 [94.5, 353] | 100 [96.0, 162] | 40.0 [35.5, 47.5] | 110 [110, 110] | 155 [46.3, 278] | 398 [249, 547] | 128 [82.0, 330] |
Median [min, max] | 221 [46.0, 764] | 100 [92.0, 223] | 40.0 [34.0, 58.0] | 110 [110, 110] | 155 [41.0, 330] | 398 [100, 696] | 128 [34.0, 764] |
FI_final | |||||||
Mean (SD) | 43.6 (34.3) | 24.0 (13.9) | 11.0 (1.63) | NA | 23.0 (15.6) | 65.5 (64.3) | 37.9 (33.0) |
Median [Q1, Q3] | 36.0 [23.5, 44.0] | 17.0 [16.0, 28.5] | 11.0 [10.5, 11.5] | 15.0 [15.0, 15.0] | 18.0 [12.5, 28.5] | 65.5 [42.8, 88.3] | 26.0 [18.0, 42.0] |
Median [min, max] | 36.0 [17.0, 171] | 17.0 [15.0, 40.0] | 11.0 [9.00, 13.0] | 15.0 [15.0, 15.0] | 18.0 [11.0, 45.0] | 65.5 [20.0, 111] | 26.0 [9.00, 171] |
FQ_final | |||||||
Mean (SD) | 0.0134 (0.00951) | 0.0170 (0.00321) | 0.00809 (0.000924) | NA | 0.0230 (0.00512) | 0.0667 (0.0423) | 0.0163 (0.0154) |
Median [Q1, Q3] | 0.0115 [0.00594, 0.0187] | 0.0162 [0.0153, 0.0184] | 0.00799 [0.00755, 0.00853] | 0.00768 [0.00768, 0.00768] | 0.0223 [0.0187, 0.0266] | 0.0667 [0.0517, 0.0816] | 0.0131 [0.00670, 0.0193] |
Median [min, max] | 0.0115 [0.00230, 0.0361] | 0.0162 [0.0143, 0.0206] | 0.00799 [0.00711, 0.00928] | 0.00768 [0.00768, 0.00768] | 0.0223 [0.0186, 0.0288] | 0.0667 [0.0368, 0.0966] | 0.0131 [0.00230, 0.0966] |
as.factor(missing_fi) | |||||||
0 | 3 (9.7%) | 2 (66.7%) | 0 (0%) | 0 (0%) | 1 (25.0%) | 0 (0%) | 6 (13.3%) |
1 | 17 (54.8%) | 1 (33.3%) | 4 (100%) | 0 (0%) | 1 (25.0%) | 1 (50.0%) | 24 (53.3%) |
Missing | 11 (35.5%) | 0 (0%) | 0 (0%) | 1 (100%) | 2 (50.0%) | 1 (50.0%) | 15 (33.3%) |
kruskal.test(FI_final ~ journal_code2, data = p_sig)
##
## Kruskal-Wallis rank sum test
##
## data: FI_final by journal_code2
## Kruskal-Wallis chi-squared = 16.223, df = 5, p-value = 0.006235
kruskal.test(FQ_final ~ journal_code2, data = p_sig)
##
## Kruskal-Wallis rank sum test
##
## data: FQ_final by journal_code2
## Kruskal-Wallis chi-squared = 11.894, df = 5, p-value = 0.03627
Box plots
p1 = ggplot(data = p_sig, aes(y = FI_final, x = as.factor(timing), fill = as.factor(timing))) + geom_boxplot() +
geom_jitter(alpha=0.2) + theme_bw() + theme(legend.position="none") +
labs(title = "Fragility index by timing of fracture assessment", x = "Timing of fracture assessment", y = "Fragility index")
p1
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | sex, data = p_sig, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]"))
Both (N=2) |
Women (N=43) |
Overall (N=45) |
|
---|---|---|---|
no_rand | |||
Mean (SD) | 564 (20.5) | 4010 (2750) | 3860 (2780) |
Median [Q1, Q3] | 564 [556, 571] | 3270 [1650, 7180] | 2420 [1640, 7180] |
Median [min, max] | 564 [549, 578] | 3270 [704, 7870] | 2420 [549, 7870] |
active_sample | |||
Mean (SD) | 439 (17.7) | 3570 (2500) | 3430 (2520) |
Median [Q1, Q3] | 439 [432, 445] | 2420 [1360, 6540] | 2380 [1270, 6530] |
Median [min, max] | 439 [426, 451] | 2420 [544, 7810] | 2380 [426, 7810] |
n_event | |||
Mean (SD) | 44.5 (4.95) | 229 (191) | 220 (190) |
Median [Q1, Q3] | 44.5 [42.8, 46.3] | 168 [84.5, 331] | 128 [82.0, 330] |
Median [min, max] | 44.5 [41.0, 48.0] | 168 [34.0, 764] | 128 [34.0, 764] |
FI_final | |||
Mean (SD) | 12.0 (1.41) | 39.1 (33.3) | 37.9 (33.0) |
Median [Q1, Q3] | 12.0 [11.5, 12.5] | 27.0 [19.5, 42.5] | 26.0 [18.0, 42.0] |
Median [min, max] | 12.0 [11.0, 13.0] | 27.0 [9.00, 171] | 26.0 [9.00, 171] |
FQ_final | |||
Mean (SD) | 0.0273 (0.00212) | 0.0157 (0.0156) | 0.0163 (0.0154) |
Median [Q1, Q3] | 0.0273 [0.0266, 0.0281] | 0.0125 [0.00664, 0.0188] | 0.0131 [0.00670, 0.0193] |
Median [min, max] | 0.0273 [0.0258, 0.0288] | 0.0125 [0.00230, 0.0966] | 0.0131 [0.00230, 0.0966] |
as.factor(missing_fi) | |||
0 | 0 (0%) | 6 (14.0%) | 6 (13.3%) |
1 | 0 (0%) | 24 (55.8%) | 24 (53.3%) |
Missing | 2 (100%) | 13 (30.2%) | 15 (33.3%) |
kruskal.test(FI_final ~ sex, data = p_sig)
##
## Kruskal-Wallis rank sum test
##
## data: FI_final by sex
## Kruskal-Wallis chi-squared = 4.271, df = 1, p-value = 0.03877
kruskal.test(FQ_final ~ sex, data = p_sig)
##
## Kruskal-Wallis rank sum test
##
## data: FQ_final by sex
## Kruskal-Wallis chi-squared = 3.1062, df = 1, p-value = 0.078
Box plots
p1 = ggplot(data = p_sig, aes(y = FI_final, x = as.factor(sex), fill = as.factor(sex))) + geom_boxplot() +
geom_jitter(alpha=0.2) + theme_bw() + theme(legend.position="none") +
labs(title = "Fragility index by sex", x = "Sex", y = "Fragility index")
p1
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | placebo, data = p_sig, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]"))
Active (N=11) |
Placebo (N=34) |
Overall (N=45) |
|
---|---|---|---|
no_rand | |||
Mean (SD) | 2930 (1340) | 4160 (3060) | 3860 (2780) |
Median [Q1, Q3] | 4090 [1640, 4090] | 2220 [1630, 7180] | 2420 [1640, 7180] |
Median [min, max] | 4090 [1360, 4090] | 2220 [549, 7870] | 2420 [549, 7870] |
active_sample | |||
Mean (SD) | 2630 (1350) | 3690 (2770) | 3430 (2520) |
Median [Q1, Q3] | 3530 [1330, 3750] | 2160 [1250, 6640] | 2380 [1270, 6530] |
Median [min, max] | 3530 [1050, 4090] | 2160 [426, 7810] | 2380 [426, 7810] |
n_event | |||
Mean (SD) | 226 (193) | 219 (192) | 220 (190) |
Median [Q1, Q3] | 221 [68.0, 339] | 125 [82.3, 326] | 128 [82.0, 330] |
Median [min, max] | 221 [34.0, 658] | 125 [41.0, 764] | 128 [34.0, 764] |
FI_final | |||
Mean (SD) | 32.1 (23.1) | 39.8 (35.7) | 37.9 (33.0) |
Median [Q1, Q3] | 26.0 [14.0, 45.0] | 26.0 [20.3, 41.5] | 26.0 [18.0, 42.0] |
Median [min, max] | 26.0 [9.00, 77.0] | 26.0 [11.0, 171] | 26.0 [9.00, 171] |
FQ_final | |||
Mean (SD) | 0.0118 (0.00431) | 0.0177 (0.0174) | 0.0163 (0.0154) |
Median [Q1, Q3] | 0.0115 [0.00762, 0.0153] | 0.0137 [0.00614, 0.0255] | 0.0131 [0.00670, 0.0193] |
Median [min, max] | 0.0115 [0.00711, 0.0188] | 0.0137 [0.00230, 0.0966] | 0.0131 [0.00230, 0.0966] |
as.factor(missing_fi) | |||
0 | 4 (36.4%) | 2 (5.9%) | 6 (13.3%) |
1 | 7 (63.6%) | 17 (50.0%) | 24 (53.3%) |
Missing | 0 (0%) | 15 (44.1%) | 15 (33.3%) |
kruskal.test(FI_final ~ placebo, data = p_sig)
##
## Kruskal-Wallis rank sum test
##
## data: FI_final by placebo
## Kruskal-Wallis chi-squared = 0.45413, df = 1, p-value = 0.5004
kruskal.test(FQ_final ~ placebo, data = p_sig)
##
## Kruskal-Wallis rank sum test
##
## data: FQ_final by placebo
## Kruskal-Wallis chi-squared = 0.20158, df = 1, p-value = 0.6534
Box plots
p1 = ggplot(data = p_sig, aes(y = FI_final, x = as.factor(control), fill = as.factor(control))) + geom_boxplot() +
geom_jitter(alpha=0.2) + theme_bw() + theme(legend.position="none") +
labs(title = "Fragility index by types of control", x = "Types of control", y = "Fragility index")
p1
Set-up data
ori_st = subset(fi_sig, sen_analysis == 0)
ori_st_st = subset(ori_st, study == 1)
# Comparison
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | as.factor(sen_analysis), data = fi_sig, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]"))
0 (N=128) |
1 (N=17) |
Overall (N=145) |
|
---|---|---|---|
no_rand | |||
Mean (SD) | 3010 (2390) | 2110 (1220) | 2900 (2300) |
Median [Q1, Q3] | 1960 [1360, 4090] | 1650 [1200, 3270] | 1960 [1220, 4090] |
Median [min, max] | 1960 [450, 7870] | 1650 [549, 4090] | 1960 [450, 7870] |
active_sample | |||
Mean (SD) | 2630 (2160) | 1880 (1140) | 2540 (2080) |
Median [Q1, Q3] | 1770 [1050, 3660] | 1440 [1110, 2420] | 1770 [1060, 3650] |
Median [min, max] | 1770 [339, 7810] | 1440 [426, 4090] | 1770 [339, 7810] |
n_event | |||
Mean (SD) | 161 (174) | 186 (133) | 164 (170) |
Median [Q1, Q3] | 84.0 [52.8, 208] | 190 [41.0, 330] | 91.0 [52.0, 223] |
Median [min, max] | 84.0 [10.0, 764] | 190 [19.0, 375] | 91.0 [10.0, 764] |
FI_final | |||
Mean (SD) | 16.4 (24.2) | 18.1 (20.5) | 16.6 (23.8) |
Median [Q1, Q3] | 9.00 [4.00, 18.3] | 11.0 [4.00, 23.0] | 9.00 [4.00, 19.0] |
Median [min, max] | 9.00 [1.00, 171] | 11.0 [1.00, 77.0] | 9.00 [1.00, 171] |
FQ_final | |||
Mean (SD) | 0.00786 (0.0108) | 0.0104 (0.00932) | 0.00815 (0.0106) |
Median [Q1, Q3] | 0.00502 [0.00222, 0.00892] | 0.00609 [0.00337, 0.0186] | 0.00505 [0.00230, 0.00955] |
Median [min, max] | 0.00502 [0.000151, 0.0966] | 0.00609 [0.000946, 0.0312] | 0.00505 [0.000151, 0.0966] |
as.factor(missing_fi) | |||
0 | 8 (6.3%) | 2 (11.8%) | 10 (6.9%) |
1 | 77 (60.2%) | 9 (52.9%) | 86 (59.3%) |
Missing | 43 (33.6%) | 6 (35.3%) | 49 (33.8%) |
fi_sig$sensitive[fi_sig$sen_analysis == 1] = "Sensitivity/Posthoc"
fi_sig$sensitive[fi_sig$sen_analysis == 0] = "Original"
createTable(compareGroups(sensitive ~ no_rand + active_sample + n_event + FI_final + FQ_final + missing_fi, data = fi_sig, method = c(no_rand = 2, active_sample = 2, n_event = 2, FI_final = 2, FQ_final = 2)))
## Warning in chisq.test(xx, correct = FALSE): Chi-squared approximation may be
## incorrect
##
## --------Summary descriptives table by 'sensitive'---------
##
## ____________________________________________________________
## Original Sensitivity/Posthoc p.overall
## N=128 N=17
## ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
## no_rand 1964 [1360;4093] 1649 [1199;3270] 0.310
## active_sample 1765 [1049;3664] 1442 [1112;2416] 0.549
## n_event 84.0 [52.8;208] 190 [41.0;330] 0.336
## FI_final 9.00 [4.00;18.2] 11.0 [4.00;23.0] 0.622
## FQ_final 0.01 [0.00;0.01] 0.01 [0.00;0.02] 0.234
## missing_fi: 0.321
## 0 8 (9.41%) 2 (18.2%)
## 1 77 (90.6%) 9 (81.8%)
## ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
# Description
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi), data = ori_st, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]"))
Overall (N=128) |
|
---|---|
no_rand | |
Mean (SD) | 3010 (2390) |
Median [Q1, Q3] | 1960 [1360, 4090] |
Median [min, max] | 1960 [450, 7870] |
active_sample | |
Mean (SD) | 2630 (2160) |
Median [Q1, Q3] | 1770 [1050, 3660] |
Median [min, max] | 1770 [339, 7810] |
n_event | |
Mean (SD) | 161 (174) |
Median [Q1, Q3] | 84.0 [52.8, 208] |
Median [min, max] | 84.0 [10.0, 764] |
FI_final | |
Mean (SD) | 16.4 (24.2) |
Median [Q1, Q3] | 9.00 [4.00, 18.3] |
Median [min, max] | 9.00 [1.00, 171] |
FQ_final | |
Mean (SD) | 0.00786 (0.0108) |
Median [Q1, Q3] | 0.00502 [0.00222, 0.00892] |
Median [min, max] | 0.00502 [0.000151, 0.0966] |
as.factor(missing_fi) | |
0 | 8 (6.3%) |
1 | 77 (60.2%) |
Missing | 43 (33.6%) |
Characteristics by studies
table1(~ as.factor(interv_code2) + as.factor(journal_code1) + as.factor(placebo) + sex + no_rand, data = ori_st_st, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]" ))
Overall (N=27) |
|
---|---|
as.factor(interv_code2) | |
Bisphosphonates | 12 (44.4%) |
PTH analog | 5 (18.5%) |
Romosozumab | 2 (7.4%) |
Denosumab | 2 (7.4%) |
Strontium_ranelate | 2 (7.4%) |
Calcium_VitD | 4 (14.8%) |
as.factor(journal_code1) | |
NEJM | 12 (44.4%) |
Lancet | 2 (7.4%) |
BMJ | 1 (3.7%) |
JAMA | 3 (11.1%) |
Ann Intern Med | 1 (3.7%) |
JBMR | 1 (3.7%) |
JCEM | 2 (7.4%) |
OI | 4 (14.8%) |
Other | 1 (3.7%) |
as.factor(placebo) | |
Active | 3 (11.1%) |
Placebo | 24 (88.9%) |
Sex | |
Both | 6 (22.2%) |
Men | 2 (7.4%) |
Women | 19 (70.4%) |
no_rand | |
Mean (SD) | 2560 (2160) |
Median [Q1, Q3] | 1910 [1140, 2980] |
Median [min, max] | 1910 [450, 7870] |
Relationship between sample size/active sample/no. events and FI
p = ggplot(data = ori_st, aes(x = no_rand, y = FI_final))
p1 = p + geom_point() + geom_smooth() + labs(x = "Number of participants at randomisation", y = "Fragility index") + theme_bw()
p0 = ggplot(data = ori_st, aes(x = active_sample, y = FI_final))
p2 = p0 + geom_point() + geom_smooth() + labs(x = "Number of participants included in the analyses", y = "Fragility index") + theme_bw()
p.0 = ggplot(data = ori_st, aes(x = n_event, y = FI_final))
p3 = p.0 + geom_point() + geom_smooth() + labs(x = "Number of participants with fracture events", y = "Fragility index") + theme_bw()
#grid.arrange(p1, p2, p3, nrow = 1)
grid.arrange(p1, p3, nrow = 1, top = textGrob("Relationship between Number of participants and Fragility index", gp = gpar(fontsize = 20, font = 3)))
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | as.factor(fx_code1), data = ori_st, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]"))
Any_fx (N=3) |
Clin_fx (N=14) |
OFx (N=4) |
MOF (N=6) |
Dif_comb (N=1) |
NonVert_fx (N=19) |
Vert_fx (N=60) |
ClinVert_fx (N=12) |
Hip (N=6) |
Forearm (N=3) |
Overall (N=128) |
|
---|---|---|---|---|---|---|---|---|---|---|---|
no_rand | |||||||||||
Mean (SD) | 1850 (423) | 3320 (2510) | 2780 (1580) | 3800 (2810) | NA | 3720 (2530) | 2650 (2370) | 2860 (2470) | 4510 (2680) | 1830 (314) | 3010 (2390) |
Median [Q1, Q3] | 1770 [1620, 2030] | 2080 [1440, 4350] | 3050 [1730, 4090] | 2870 [1430, 6410] | 2690 [2690, 2690] | 4090 [1360, 5090] | 1630 [1100, 4090] | 1980 [1650, 2620] | 3680 [2540, 6830] | 2000 [1740, 2010] | 1960 [1360, 4090] |
Median [min, max] | 1770 [1470, 2300] | 2080 [578, 7740] | 3050 [930, 4090] | 2870 [1360, 7180] | 2690 [2690, 2690] | 4090 [450, 7870] | 1630 [578, 7870] | 1980 [578, 7870] | 3680 [1770, 7870] | 2000 [1470, 2030] | 1960 [450, 7870] |
active_sample | |||||||||||
Mean (SD) | 1830 (439) | 2910 (2330) | 2670 (1490) | 3330 (2410) | NA | 3310 (2300) | 2300 (2140) | 2440 (2350) | 3700 (2260) | 1450 (760) | 2630 (2160) |
Median [Q1, Q3] | 1770 [1600, 2030] | 2020 [1140, 4250] | 2890 [1690, 3870] | 2450 [1360, 5460] | 2690 [2690, 2690] | 3560 [1250, 4940] | 1350 [892, 3400] | 1910 [1030, 2330] | 2810 [1900, 5660] | 1740 [1160, 1880] | 1770 [1050, 3660] |
Median [min, max] | 1770 [1430, 2300] | 2020 [451, 6690] | 2890 [930, 3980] | 2450 [1270, 6380] | 2690 [2690, 2690] | 3560 [389, 6670] | 1350 [451, 7390] | 1910 [339, 7810] | 2810 [1770, 6600] | 1740 [590, 2030] | 1770 [339, 7810] |
n_event | |||||||||||
Mean (SD) | 354 (290) | 249 (204) | 334 (251) | 128 (123) | NA | 262 (222) | 112 (138) | 75.5 (49.3) | 159 (106) | 94.7 (29.7) | 161 (174) |
Median [Q1, Q3] | 475 [249, 519] | 210 [79.8, 363] | 318 [245, 407] | 78.5 [47.0, 159] | 147 [147, 147] | 168 [71.0, 433] | 71.0 [38.5, 111] | 63.0 [57.0, 80.5] | 124 [78.5, 232] | 99.0 [81.0, 111] | 84.0 [52.8, 208] |
Median [min, max] | 475 [23.0, 563] | 210 [34.0, 764] | 318 [44.0, 658] | 78.5 [34.0, 355] | 147 [147, 147] | 168 [37.0, 680] | 71.0 [10.0, 696] | 63.0 [21.0, 204] | 124 [58.0, 315] | 99.0 [63.0, 122] | 84.0 [10.0, 764] |
FI_final | |||||||||||
Mean (SD) | 16.7 (11.9) | 17.0 (22.7) | 32.3 (26.2) | 11.2 (8.35) | NA | 9.05 (11.1) | 20.5 (30.8) | 11.8 (13.9) | 7.83 (6.05) | 5.00 (3.61) | 16.4 (24.2) |
Median [Q1, Q3] | 22.0 [12.5, 23.5] | 9.00 [5.50, 14.8] | 31.5 [22.8, 41.0] | 9.00 [6.00, 13.5] | 4.00 [4.00, 4.00] | 3.00 [2.00, 15.5] | 11.0 [4.75, 22.3] | 6.50 [3.75, 11.3] | 8.00 [2.75, 11.8] | 4.00 [3.00, 6.50] | 9.00 [4.00, 18.3] |
Median [min, max] | 22.0 [3.00, 25.0] | 9.00 [2.00, 89.0] | 31.5 [1.00, 65.0] | 9.00 [3.00, 26.0] | 4.00 [4.00, 4.00] | 3.00 [1.00, 43.0] | 11.0 [1.00, 171] | 6.50 [1.00, 42.0] | 8.00 [1.00, 16.0] | 4.00 [2.00, 9.00] | 9.00 [1.00, 171] |
FQ_final | |||||||||||
Mean (SD) | 0.00847 (0.00558) | 0.00703 (0.00515) | 0.0106 (0.00776) | 0.00442 (0.00292) | NA | 0.00285 (0.00238) | 0.0112 (0.0145) | 0.00457 (0.00231) | 0.00290 (0.00292) | 0.00352 (0.00161) | 0.00786 (0.0108) |
Median [Q1, Q3] | 0.0109 [0.00647, 0.0117] | 0.00702 [0.00197, 0.00903] | 0.0122 [0.00592, 0.0169] | 0.00454 [0.00227, 0.00699] | 0.00149 [0.00149, 0.00149] | 0.00239 [0.00108, 0.00370] | 0.00671 [0.00313, 0.0139] | 0.00449 [0.00305, 0.00515] | 0.00168 [0.000801, 0.00514] | 0.00339 [0.00268, 0.00429] | 0.00502 [0.00222, 0.00892] |
Median [min, max] | 0.0109 [0.00209, 0.0125] | 0.00702 [0.00124, 0.0166] | 0.0122 [0.00108, 0.0169] | 0.00454 [0.000783, 0.00736] | 0.00149 [0.00149, 0.00149] | 0.00239 [0.000203, 0.00955] | 0.00671 [0.000151, 0.0966] | 0.00449 [0.00205, 0.0104] | 0.00168 [0.000303, 0.00695] | 0.00339 [0.00197, 0.00519] | 0.00502 [0.000151, 0.0966] |
as.factor(missing_fi) | |||||||||||
0 | 0 (0%) | 1 (7.1%) | 2 (50.0%) | 0 (0%) | 0 (0%) | 1 (5.3%) | 3 (5.0%) | 0 (0%) | 0 (0%) | 1 (33.3%) | 8 (6.3%) |
1 | 1 (33.3%) | 10 (71.4%) | 2 (50.0%) | 4 (66.7%) | 1 (100%) | 11 (57.9%) | 37 (61.7%) | 6 (50.0%) | 3 (50.0%) | 2 (66.7%) | 77 (60.2%) |
Missing | 2 (66.7%) | 3 (21.4%) | 0 (0%) | 2 (33.3%) | 0 (0%) | 7 (36.8%) | 20 (33.3%) | 6 (50.0%) | 3 (50.0%) | 0 (0%) | 43 (33.6%) |
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | as.factor(fx_code2), data = ori_st, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]"))
Any (N=17) |
Osteoporotic (N=11) |
Non-Vertebrae (N=19) |
Vertebrae (N=60) |
Clinical Vertebrae (N=12) |
Hip (N=6) |
Forearm (N=3) |
Overall (N=128) |
|
---|---|---|---|---|---|---|---|---|
no_rand | ||||||||
Mean (SD) | 3060 (2340) | 3330 (2230) | 3720 (2530) | 2650 (2370) | 2860 (2470) | 4510 (2680) | 1830 (314) | 3010 (2390) |
Median [Q1, Q3] | 2030 [1470, 4090] | 2690 [1500, 4090] | 4090 [1360, 5090] | 1630 [1100, 4090] | 1980 [1650, 2620] | 3680 [2540, 6830] | 2000 [1740, 2010] | 1960 [1360, 4090] |
Median [min, max] | 2030 [578, 7740] | 2690 [930, 7180] | 4090 [450, 7870] | 1630 [578, 7870] | 1980 [578, 7870] | 3680 [1770, 7870] | 2000 [1470, 2030] | 1960 [450, 7870] |
active_sample | ||||||||
Mean (SD) | 2720 (2150) | 3030 (1920) | 3310 (2300) | 2300 (2140) | 2440 (2350) | 3700 (2260) | 1450 (760) | 2630 (2160) |
Median [Q1, Q3] | 2010 [1280, 3700] | 2690 [1360, 3910] | 3560 [1250, 4940] | 1350 [892, 3400] | 1910 [1030, 2330] | 2810 [1900, 5660] | 1740 [1160, 1880] | 1770 [1050, 3660] |
Median [min, max] | 2010 [451, 6690] | 2690 [930, 6380] | 3560 [389, 6670] | 1350 [451, 7390] | 1910 [339, 7810] | 2810 [1770, 6600] | 1740 [590, 2030] | 1770 [339, 7810] |
n_event | ||||||||
Mean (SD) | 267 (215) | 205 (193) | 262 (222) | 112 (138) | 75.5 (49.3) | 159 (106) | 94.7 (29.7) | 161 (174) |
Median [Q1, Q3] | 231 [76.0, 409] | 147 [50.0, 318] | 168 [71.0, 433] | 71.0 [38.5, 111] | 63.0 [57.0, 80.5] | 124 [78.5, 232] | 99.0 [81.0, 111] | 84.0 [52.8, 208] |
Median [min, max] | 231 [23.0, 764] | 147 [34.0, 658] | 168 [37.0, 680] | 71.0 [10.0, 696] | 63.0 [21.0, 204] | 124 [58.0, 315] | 99.0 [63.0, 122] | 84.0 [10.0, 764] |
FI_final | ||||||||
Mean (SD) | 16.9 (20.9) | 18.2 (19.2) | 9.05 (11.1) | 20.5 (30.8) | 11.8 (13.9) | 7.83 (6.05) | 5.00 (3.61) | 16.4 (24.2) |
Median [Q1, Q3] | 10.0 [5.00, 22.0] | 9.00 [4.50, 28.0] | 3.00 [2.00, 15.5] | 11.0 [4.75, 22.3] | 6.50 [3.75, 11.3] | 8.00 [2.75, 11.8] | 4.00 [3.00, 6.50] | 9.00 [4.00, 18.3] |
Median [min, max] | 10.0 [2.00, 89.0] | 9.00 [1.00, 65.0] | 3.00 [1.00, 43.0] | 11.0 [1.00, 171] | 6.50 [1.00, 42.0] | 8.00 [1.00, 16.0] | 4.00 [2.00, 9.00] | 9.00 [1.00, 171] |
FQ_final | ||||||||
Mean (SD) | 0.00729 (0.00508) | 0.00641 (0.00585) | 0.00285 (0.00238) | 0.0112 (0.0145) | 0.00457 (0.00231) | 0.00290 (0.00292) | 0.00352 (0.00161) | 0.00786 (0.0108) |
Median [Q1, Q3] | 0.00714 [0.00209, 0.0109] | 0.00662 [0.00185, 0.00745] | 0.00239 [0.00108, 0.00370] | 0.00671 [0.00313, 0.0139] | 0.00449 [0.00305, 0.00515] | 0.00168 [0.000801, 0.00514] | 0.00339 [0.00268, 0.00429] | 0.00502 [0.00222, 0.00892] |
Median [min, max] | 0.00714 [0.00124, 0.0166] | 0.00662 [0.000783, 0.0169] | 0.00239 [0.000203, 0.00955] | 0.00671 [0.000151, 0.0966] | 0.00449 [0.00205, 0.0104] | 0.00168 [0.000303, 0.00695] | 0.00339 [0.00197, 0.00519] | 0.00502 [0.000151, 0.0966] |
as.factor(missing_fi) | ||||||||
0 | 1 (5.9%) | 2 (18.2%) | 1 (5.3%) | 3 (5.0%) | 0 (0%) | 0 (0%) | 1 (33.3%) | 8 (6.3%) |
1 | 11 (64.7%) | 7 (63.6%) | 11 (57.9%) | 37 (61.7%) | 6 (50.0%) | 3 (50.0%) | 2 (66.7%) | 77 (60.2%) |
Missing | 5 (29.4%) | 2 (18.2%) | 7 (36.8%) | 20 (33.3%) | 6 (50.0%) | 3 (50.0%) | 0 (0%) | 43 (33.6%) |
kruskal.test(FI_final ~ fx_code2, data = ori_st)
##
## Kruskal-Wallis rank sum test
##
## data: FI_final by fx_code2
## Kruskal-Wallis chi-squared = 9.608, df = 6, p-value = 0.1422
kruskal.test(FQ_final ~ fx_code2, data = ori_st)
##
## Kruskal-Wallis rank sum test
##
## data: FQ_final by fx_code2
## Kruskal-Wallis chi-squared = 22.351, df = 6, p-value = 0.001046
Box plots
p1 = ggplot(data = ori_st, aes(y = FI_final, x = as.factor(fx_code2), fill = as.factor(fx_code2))) + geom_boxplot() +
geom_jitter(alpha=0.2) + theme_bw() + theme(legend.position="none") +
labs(title = "Fragility index", x = "Fracture sites", y = "Fragility index") + theme(axis.text.x = element_text(angle = 45, hjust = 1))
p2 = ggplot(data = ori_st, aes(y = FQ_final, x = as.factor(fx_code2), fill = as.factor(fx_code2))) + geom_boxplot() +
geom_jitter(alpha=0.2) + theme_bw() + theme(legend.position="none") +
labs(title = "Fragility quotient", x = "Fracture sites", y = "Fragility quotient") + theme(axis.text.x = element_text(angle = 45, hjust = 1))
grid.arrange(p1, p2, nrow = 1, top = textGrob("Fragility of evidence for anti-fracture efficacy by fracture sites", gp = gpar(fontsize = 20, font = 1)))
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | as.factor(interv_code1), data = ori_st, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]"))
Alendronate (N=7) |
Ibandronate (N=6) |
Risedronate (N=8) |
Minodronate (N=3) |
Zoledronate (N=23) |
Teriparatide (N=23) |
Abaloparatide (N=3) |
Romosozumab (N=26) |
Denosumab (N=9) |
Strontium_ranelate (N=9) |
Calcium_VitD (N=11) |
Overall (N=128) |
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
no_rand | ||||||||||||
Mean (SD) | 2700 (1190) | 1960 (0) | 1240 (420) | 704 (0) | 3100 (2860) | 1180 (417) | 1650 (0) | 5520 (1570) | 5020 (3370) | 3180 (1810) | 1970 (899) | 3010 (2390) |
Median [Q1, Q3] | 2030 [2030, 3230] | 1960 [1960, 1960] | 1280 [815, 1630] | 704 [704, 704] | 2000 [1200, 4930] | 1100 [1090, 1360] | 1650 [1650, 1650] | 4090 [4090, 7180] | 7870 [1470, 7870] | 1650 [1650, 5090] | 1770 [1470, 2490] | 1960 [1360, 4090] |
Median [min, max] | 2030 [1910, 4430] | 1960 [1960, 1960] | 1280 [814, 1630] | 704 [704, 704] | 2000 [665, 7740] | 1100 [578, 2530] | 1650 [1650, 1650] | 4090 [4090, 7180] | 7870 [1470, 7870] | 1650 [1650, 5090] | 1770 [450, 3270] | 1960 [450, 7870] |
active_sample | ||||||||||||
Mean (SD) | 2640 (1120) | 1950 (0) | 1050 (393) | 575 (27.7) | 2510 (2310) | 971 (331) | 1310 (75.5) | 4970 (1540) | 4600 (3080) | 2770 (1790) | 1530 (789) | 2630 (2160) |
Median [Q1, Q3] | 2030 [1990, 3080] | 1950 [1950, 1950] | 1020 [684, 1340] | 582 [563, 590] | 1740 [894, 3840] | 892 [864, 1130] | 1280 [1270, 1340] | 3910 [3620, 6640] | 6600 [1350, 7390] | 1440 [1390, 4930] | 1770 [760, 2030] | 1770 [1050, 3660] |
Median [min, max] | 2030 [1910, 4430] | 1950 [1950, 1950] | 1020 [663, 1630] | 582 [544, 598] | 1740 [339, 6550] | 892 [451, 1700] | 1280 [1270, 1400] | 3910 [3240, 6910] | 6600 [1350, 7810] | 1440 [1150, 4940] | 1770 [389, 2690] | 1770 [339, 7810] |
n_event | ||||||||||||
Mean (SD) | 181 (141) | 81.5 (23.1) | 88.1 (37.9) | 79.3 (20.5) | 171 (209) | 52.9 (25.1) | 51.3 (21.9) | 203 (148) | 140 (180) | 428 (247) | 205 (180) | 161 (174) |
Median [Q1, Q3] | 121 [68.0, 273] | 70.5 [64.5, 101] | 68.5 [64.8, 99.3] | 79.0 [69.0, 89.5] | 73.0 [39.0, 240] | 48.0 [34.5, 71.5] | 44.0 [39.0, 60.0] | 168 [105, 253] | 69.0 [29.0, 121] | 471 [204, 671] | 147 [64.0, 289] | 84.0 [52.8, 208] |
Median [min, max] | 121 [56.0, 409] | 70.5 [63.0, 112] | 68.5 [58.0, 154] | 79.0 [59.0, 100] | 73.0 [13.0, 764] | 48.0 [14.0, 100] | 44.0 [34.0, 76.0] | 168 [10.0, 658] | 69.0 [15.0, 531] | 471 [66.0, 696] | 147 [37.0, 563] | 84.0 [10.0, 764] |
FI_final | ||||||||||||
Mean (SD) | 13.1 (12.6) | 8.50 (4.68) | 7.25 (4.83) | 10.0 (9.17) | 23.1 (38.3) | 9.04 (7.54) | 8.67 (4.51) | 20.8 (16.6) | 25.1 (43.7) | 26.6 (35.5) | 8.36 (8.85) | 16.4 (24.2) |
Median [Q1, Q3] | 11.0 [5.50, 13.5] | 7.50 [4.50, 12.0] | 7.50 [3.50, 11.0] | 8.00 [5.00, 14.0] | 9.00 [3.50, 25.5] | 7.00 [2.50, 14.0] | 9.00 [6.50, 11.0] | 18.0 [7.00, 29.3] | 4.00 [3.00, 17.0] | 12.0 [5.00, 29.0] | 4.00 [2.00, 13.5] | 9.00 [4.00, 18.3] |
Median [min, max] | 11.0 [3.00, 40.0] | 7.50 [4.00, 15.0] | 7.50 [1.00, 14.0] | 8.00 [2.00, 20.0] | 9.00 [1.00, 171] | 7.00 [1.00, 25.0] | 9.00 [4.00, 13.0] | 18.0 [1.00, 65.0] | 4.00 [2.00, 137] | 12.0 [1.00, 111] | 4.00 [1.00, 25.0] | 9.00 [1.00, 171] |
FQ_final | ||||||||||||
Mean (SD) | 0.00588 (0.00679) | 0.00435 (0.00240) | 0.00832 (0.00658) | 0.0180 (0.0171) | 0.00780 (0.00683) | 0.0103 (0.00915) | 0.00651 (0.00311) | 0.00451 (0.00413) | 0.00432 (0.00546) | 0.0191 (0.0311) | 0.00501 (0.00387) | 0.00786 (0.0108) |
Median [Q1, Q3] | 0.00314 [0.00178, 0.00617] | 0.00384 [0.00231, 0.00615] | 0.00777 [0.00434, 0.00996] | 0.0137 [0.00855, 0.0253] | 0.00537 [0.00339, 0.0101] | 0.00770 [0.00249, 0.0153] | 0.00711 [0.00512, 0.00819] | 0.00330 [0.00140, 0.00598] | 0.00255 [0.00222, 0.00296] | 0.00795 [0.00101, 0.0137] | 0.00353 [0.00244, 0.00659] | 0.00502 [0.00222, 0.00892] |
Median [min, max] | 0.00314 [0.00157, 0.0206] | 0.00384 [0.00205, 0.00768] | 0.00777 [0.000615, 0.0203] | 0.0137 [0.00334, 0.0368] | 0.00537 [0.000887, 0.0301] | 0.00770 [0.00114, 0.0288] | 0.00711 [0.00314, 0.00928] | 0.00330 [0.000151, 0.0169] | 0.00255 [0.000303, 0.0185] | 0.00795 [0.000203, 0.0966] | 0.00353 [0.000567, 0.0125] | 0.00502 [0.000151, 0.0966] |
as.factor(missing_fi) | ||||||||||||
0 | 0 (0%) | 0 (0%) | 0 (0%) | 0 (0%) | 5 (21.7%) | 2 (8.7%) | 0 (0%) | 1 (3.8%) | 0 (0%) | 0 (0%) | 0 (0%) | 8 (6.3%) |
1 | 5 (71.4%) | 0 (0%) | 7 (87.5%) | 3 (100%) | 18 (78.3%) | 5 (21.7%) | 3 (100%) | 25 (96.2%) | 4 (44.4%) | 1 (11.1%) | 6 (54.5%) | 77 (60.2%) |
Missing | 2 (28.6%) | 6 (100%) | 1 (12.5%) | 0 (0%) | 0 (0%) | 16 (69.6%) | 0 (0%) | 0 (0%) | 5 (55.6%) | 8 (88.9%) | 5 (45.5%) | 43 (33.6%) |
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | as.factor(interv_code2), data = ori_st, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]"))
Bisphosphonates (N=47) |
PTH analog (N=26) |
Romosozumab (N=26) |
Denosumab (N=9) |
Strontium_ranelate (N=9) |
Calcium_VitD (N=11) |
Overall (N=128) |
|
---|---|---|---|---|---|---|---|
no_rand | |||||||
Mean (SD) | 2430 (2200) | 1240 (419) | 5520 (1570) | 5020 (3370) | 3180 (1810) | 1970 (899) | 3010 (2390) |
Median [Q1, Q3] | 1960 [1200, 2030] | 1230 [1090, 1360] | 4090 [4090, 7180] | 7870 [1470, 7870] | 1650 [1650, 5090] | 1770 [1470, 2490] | 1960 [1360, 4090] |
Median [min, max] | 1960 [665, 7740] | 1230 [578, 2530] | 4090 [4090, 7180] | 7870 [1470, 7870] | 1650 [1650, 5090] | 1770 [450, 3270] | 1960 [450, 7870] |
active_sample | |||||||
Mean (SD) | 2090 (1800) | 1010 (330) | 4970 (1540) | 4600 (3080) | 2770 (1790) | 1530 (789) | 2630 (2160) |
Median [Q1, Q3] | 1860 [725, 1980] | 971 [880, 1270] | 3910 [3620, 6640] | 6600 [1350, 7390] | 1440 [1390, 4930] | 1770 [760, 2030] | 1770 [1050, 3660] |
Median [min, max] | 1860 [339, 6550] | 971 [451, 1700] | 3910 [3240, 6910] | 6600 [1350, 7810] | 1440 [1150, 4940] | 1770 [389, 2690] | 1770 [339, 7810] |
n_event | |||||||
Mean (SD) | 141 (160) | 52.7 (24.3) | 203 (148) | 140 (180) | 428 (247) | 205 (180) | 161 (174) |
Median [Q1, Q3] | 73.0 [59.5, 141] | 47.0 [34.3, 72.0] | 168 [105, 253] | 69.0 [29.0, 121] | 471 [204, 671] | 147 [64.0, 289] | 84.0 [52.8, 208] |
Median [min, max] | 73.0 [13.0, 764] | 47.0 [14.0, 100] | 168 [10.0, 658] | 69.0 [15.0, 531] | 471 [66.0, 696] | 147 [37.0, 563] | 84.0 [10.0, 764] |
FI_final | |||||||
Mean (SD) | 16.2 (27.9) | 9.00 (7.19) | 20.8 (16.6) | 25.1 (43.7) | 26.6 (35.5) | 8.36 (8.85) | 16.4 (24.2) |
Median [Q1, Q3] | 9.00 [4.00, 14.0] | 7.50 [3.00, 13.0] | 18.0 [7.00, 29.3] | 4.00 [3.00, 17.0] | 12.0 [5.00, 29.0] | 4.00 [2.00, 13.5] | 9.00 [4.00, 18.3] |
Median [min, max] | 9.00 [1.00, 171] | 7.50 [1.00, 25.0] | 18.0 [1.00, 65.0] | 4.00 [2.00, 137] | 12.0 [1.00, 111] | 4.00 [1.00, 25.0] | 9.00 [1.00, 171] |
FQ_final | |||||||
Mean (SD) | 0.00781 (0.00756) | 0.00985 (0.00872) | 0.00451 (0.00413) | 0.00432 (0.00546) | 0.0191 (0.0311) | 0.00501 (0.00387) | 0.00786 (0.0108) |
Median [Q1, Q3] | 0.00537 [0.00301, 0.00891] | 0.00741 [0.00273, 0.0130] | 0.00330 [0.00140, 0.00598] | 0.00255 [0.00222, 0.00296] | 0.00795 [0.00101, 0.0137] | 0.00353 [0.00244, 0.00659] | 0.00502 [0.00222, 0.00892] |
Median [min, max] | 0.00537 [0.000615, 0.0368] | 0.00741 [0.00114, 0.0288] | 0.00330 [0.000151, 0.0169] | 0.00255 [0.000303, 0.0185] | 0.00795 [0.000203, 0.0966] | 0.00353 [0.000567, 0.0125] | 0.00502 [0.000151, 0.0966] |
as.factor(missing_fi) | |||||||
0 | 5 (10.6%) | 2 (7.7%) | 1 (3.8%) | 0 (0%) | 0 (0%) | 0 (0%) | 8 (6.3%) |
1 | 33 (70.2%) | 8 (30.8%) | 25 (96.2%) | 4 (44.4%) | 1 (11.1%) | 6 (54.5%) | 77 (60.2%) |
Missing | 9 (19.1%) | 16 (61.5%) | 0 (0%) | 5 (55.6%) | 8 (88.9%) | 5 (45.5%) | 43 (33.6%) |
kruskal.test(FI_final ~ interv_code2, data = ori_st)
##
## Kruskal-Wallis rank sum test
##
## data: FI_final by interv_code2
## Kruskal-Wallis chi-squared = 10.697, df = 5, p-value = 0.05774
kruskal.test(FQ_final ~ interv_code2, data = ori_st)
##
## Kruskal-Wallis rank sum test
##
## data: FQ_final by interv_code2
## Kruskal-Wallis chi-squared = 10.738, df = 5, p-value = 0.05682
Box plots
p1 = ggplot(data = ori_st, aes(y = FI_final, x = as.factor(interv_code2), fill = as.factor(interv_code2))) + geom_boxplot() +
geom_jitter(alpha=0.2) + theme_bw() + theme(legend.position="none") +
labs(title = "Fragility index", x = "Pharmacological interventions", y = "Fragility index") + theme(axis.text.x = element_text(angle = 45, hjust = 1))
p2 = ggplot(data = ori_st, aes(y = FQ_final, x = as.factor(interv_code2), fill = as.factor(interv_code2))) + geom_boxplot() +
geom_jitter(alpha=0.2) + theme_bw() + theme(legend.position="none") +
labs(title = "Fragility quotient", x = "Pharmacological interventions", y = "Fragility quotine") + theme(axis.text.x = element_text(angle = 45, hjust = 1))
grid.arrange(p1, p2, nrow = 1, top = textGrob("Fragility of evidence for anti-fracture efficacy by medications", gp = gpar(fontsize = 20, font = 1)))
#### (2.1.4) Timing of fracture assessment
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | as.factor(timing), data = ori_st, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]" ))
2 (N=25) |
3 (N=11) |
4 (N=45) |
5 (N=29) |
6 (N=6) |
7 (N=5) |
8 (N=7) |
Overall (N=128) |
|
---|---|---|---|---|---|---|---|---|
no_rand | ||||||||
Mean (SD) | 3030 (2410) | 1640 (1020) | 2760 (2250) | 4140 (2990) | 2340 (1650) | 3640 (1980) | 2100 (259) | 3010 (2390) |
Median [Q1, Q3] | 1650 [1360, 4090] | 1650 [641, 2090] | 1470 [1100, 4090] | 2130 [1770, 7740] | 1650 [1120, 3740] | 5090 [1470, 5090] | 2000 [2000, 2000] | 1960 [1360, 4090] |
Median [min, max] | 1650 [578, 7180] | 1650 [578, 3270] | 1470 [665, 7180] | 2130 [450, 7870] | 1650 [930, 4430] | 5090 [1470, 5090] | 2000 [2000, 2690] | 1960 [450, 7870] |
active_sample | ||||||||
Mean (SD) | 2730 (2230) | 1140 (549) | 2480 (2060) | 3560 (2620) | 2090 (1710) | 2930 (2210) | 2000 (315) | 2630 (2160) |
Median [Q1, Q3] | 1390 [1160, 3700] | 1280 [517, 1560] | 1360 [892, 3610] | 1950 [1440, 6450] | 1150 [985, 3390] | 3650 [590, 4940] | 1890 [1860, 1980] | 1770 [1050, 3660] |
Median [min, max] | 1390 [476, 6910] | 1280 [451, 1770] | 1360 [544, 6690] | 1950 [339, 7810] | 1150 [759, 4430] | 3650 [567, 4940] | 1890 [1740, 2690] | 1770 [339, 7810] |
n_event | ||||||||
Mean (SD) | 86.6 (70.2) | 59.4 (38.8) | 133 (137) | 238 (212) | 257 (252) | 418 (301) | 186 (127) | 161 (174) |
Median [Q1, Q3] | 65.0 [52.0, 128] | 48.0 [35.0, 68.0] | 83.0 [44.0, 178] | 140 [73.0, 387] | 163 [81.3, 358] | 537 [122, 671] | 147 [85.5, 281] | 84.0 [52.8, 208] |
Median [min, max] | 65.0 [10.0, 323] | 48.0 [21.0, 163] | 83.0 [14.0, 658] | 140 [23.0, 764] | 163 [44.0, 696] | 537 [70.0, 691] | 147 [48.0, 377] | 84.0 [10.0, 764] |
FI_final | ||||||||
Mean (SD) | 7.92 (8.25) | 7.09 (4.16) | 16.0 (14.7) | 28.0 (40.3) | 24.7 (42.5) | 8.20 (11.7) | 13.6 (9.85) | 16.4 (24.2) |
Median [Q1, Q3] | 5.00 [3.00, 9.00] | 7.00 [4.00, 10.0] | 11.0 [5.00, 23.0] | 14.0 [4.00, 38.0] | 9.50 [4.75, 12.8] | 3.00 [2.00, 5.00] | 10.0 [7.50, 16.5] | 9.00 [4.00, 18.3] |
Median [min, max] | 5.00 [1.00, 30.0] | 7.00 [1.00, 13.0] | 11.0 [1.00, 65.0] | 14.0 [1.00, 171] | 9.50 [1.00, 111] | 3.00 [2.00, 29.0] | 10.0 [4.00, 33.0] | 9.00 [1.00, 171] |
FQ_final | ||||||||
Mean (SD) | 0.00401 (0.00394) | 0.00829 (0.00773) | 0.00864 (0.00832) | 0.00834 (0.00866) | 0.0197 (0.0378) | 0.00330 (0.00292) | 0.00703 (0.00510) | 0.00786 (0.0108) |
Median [Q1, Q3] | 0.00222 [0.00147, 0.00505] | 0.00711 [0.00376, 0.00907] | 0.00543 [0.00307, 0.0115] | 0.00653 [0.00230, 0.0109] | 0.00421 [0.00197, 0.00915] | 0.00339 [0.00101, 0.00353] | 0.00537 [0.00421, 0.00851] | 0.00502 [0.00222, 0.00892] |
Median [min, max] | 0.00222 [0.000151, 0.0150] | 0.00711 [0.000567, 0.0288] | 0.00543 [0.000554, 0.0368] | 0.00653 [0.000203, 0.0361] | 0.00421 [0.00108, 0.0966] | 0.00339 [0.000608, 0.00795] | 0.00537 [0.00149, 0.0169] | 0.00502 [0.000151, 0.0966] |
as.factor(missing_fi) | ||||||||
0 | 1 (4.0%) | 0 (0%) | 2 (4.4%) | 0 (0%) | 0 (0%) | 0 (0%) | 5 (71.4%) | 8 (6.3%) |
1 | 19 (76.0%) | 8 (72.7%) | 31 (68.9%) | 14 (48.3%) | 1 (16.7%) | 2 (40.0%) | 2 (28.6%) | 77 (60.2%) |
Missing | 5 (20.0%) | 3 (27.3%) | 12 (26.7%) | 15 (51.7%) | 5 (83.3%) | 3 (60.0%) | 0 (0%) | 43 (33.6%) |
kruskal.test(FI_final ~ timing, data = ori_st)
##
## Kruskal-Wallis rank sum test
##
## data: FI_final by timing
## Kruskal-Wallis chi-squared = 12.519, df = 6, p-value = 0.05134
kruskal.test(FQ_final ~ timing, data = ori_st)
##
## Kruskal-Wallis rank sum test
##
## data: FQ_final by timing
## Kruskal-Wallis chi-squared = 11.272, df = 6, p-value = 0.08032
Box plots
p1 = ggplot(data = ori_st, aes(y = FI_final, x = as.factor(timing), fill = as.factor(timing))) + geom_boxplot() +
geom_jitter(alpha=0.2) + theme_bw() + theme(legend.position="none") +
labs(title = "Fragility index by timing of fracture assessment", x = "Timing of fracture assessment", y = "Fragility index")
p1
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | as.factor(journal_code2), data = ori_st, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]" ))
NEJM (N=69) |
Lancet (N=9) |
BMJ (N=5) |
JAMA (N=10) |
Ann Intern Med (N=1) |
JBMR (N=6) |
JCEM (N=5) |
Other (N=23) |
Overall (N=128) |
|
---|---|---|---|---|---|---|---|---|---|
no_rand | |||||||||
Mean (SD) | 4040 (2660) | 1660 (352) | 2160 (397) | 2190 (1180) | NA | 1960 (0) | 1480 (2020) | 1590 (1440) | 3010 (2390) |
Median [Q1, Q3] | 4090 [1470, 7180] | 1360 [1360, 2030] | 2300 [1770, 2300] | 1640 [1630, 1650] | 2530 [2530, 2530] | 1960 [1960, 1960] | 578 [578, 578] | 939 [704, 1560] | 1960 [1360, 4090] |
Median [min, max] | 4090 [450, 7870] | 1360 [1360, 2030] | 2300 [1770, 2690] | 1640 [1630, 4430] | 2530 [2530, 2530] | 1960 [1960, 1960] | 578 [578, 5090] | 939 [665, 5090] | 1960 [450, 7870] |
active_sample | |||||||||
Mean (SD) | 3500 (2430) | 1490 (490) | 2160 (397) | 1950 (1230) | NA | 1950 (0) | 1350 (2000) | 1350 (1320) | 2630 (2160) |
Median [Q1, Q3] | 3400 [1350, 6430] | 1160 [1050, 2030] | 2300 [1770, 2300] | 1390 [1290, 1580] | 1700 [1700, 1700] | 1950 [1950, 1950] | 451 [451, 476] | 690 [659, 1360] | 1770 [1050, 3660] |
Median [min, max] | 3400 [339, 7810] | 1160 [1050, 2030] | 2300 [1770, 2690] | 1390 [1270, 4430] | 1700 [1700, 1700] | 1950 [1950, 1950] | 451 [451, 4930] | 690 [544, 4940] | 1770 [339, 7810] |
n_event | |||||||||
Mean (SD) | 168 (170) | 115 (96.4) | 352 (167) | 108 (112) | NA | 81.5 (23.1) | 122 (195) | 174 (228) | 161 (174) |
Median [Q1, Q3] | 103 [48.0, 231] | 91.0 [63.0, 100] | 315 [262, 475] | 70.5 [47.5, 112] | 60.0 [60.0, 60.0] | 70.5 [64.5, 101] | 35.0 [34.0, 48.0] | 69.0 [56.0, 132] | 84.0 [52.8, 208] |
Median [min, max] | 103 [10.0, 764] | 91.0 [14.0, 322] | 315 [147, 563] | 70.5 [34.0, 409] | 60.0 [60.0, 60.0] | 70.5 [63.0, 112] | 35.0 [21.0, 471] | 69.0 [22.0, 696] | 84.0 [10.0, 764] |
FI_final | |||||||||
Mean (SD) | 21.3 (29.0) | 12.9 (11.5) | 15.6 (8.44) | 8.20 (4.47) | NA | 8.50 (4.68) | 4.80 (4.76) | 11.7 (22.7) | 16.4 (24.2) |
Median [Q1, Q3] | 10.0 [5.00, 26.0] | 11.0 [4.00, 15.0] | 16.0 [11.0, 22.0] | 10.0 [4.75, 11.0] | 7.00 [7.00, 7.00] | 7.50 [4.50, 12.0] | 4.00 [2.00, 4.00] | 5.00 [3.00, 10.5] | 9.00 [4.00, 18.3] |
Median [min, max] | 10.0 [1.00, 171] | 11.0 [2.00, 40.0] | 16.0 [4.00, 25.0] | 10.0 [1.00, 13.0] | 7.00 [7.00, 7.00] | 7.50 [4.00, 15.0] | 4.00 [1.00, 13.0] | 5.00 [1.00, 111] | 9.00 [1.00, 171] |
FQ_final | |||||||||
Mean (SD) | 0.00700 (0.00778) | 0.00877 (0.00681) | 0.00760 (0.00430) | 0.00504 (0.00332) | NA | 0.00435 (0.00240) | 0.0101 (0.0110) | 0.0119 (0.0202) | 0.00786 (0.0108) |
Median [Q1, Q3] | 0.00391 [0.00222, 0.00748] | 0.00691 [0.00259, 0.0143] | 0.00695 [0.00623, 0.0109] | 0.00513 [0.00197, 0.00793] | 0.00412 [0.00412, 0.00412] | 0.00384 [0.00231, 0.00615] | 0.00840 [0.00443, 0.00887] | 0.00527 [0.00278, 0.0122] | 0.00502 [0.00222, 0.00892] |
Median [min, max] | 0.00391 [0.000151, 0.0361] | 0.00691 [0.00191, 0.0206] | 0.00695 [0.00149, 0.0125] | 0.00513 [0.000615, 0.00928] | 0.00412 [0.00412, 0.00412] | 0.00384 [0.00205, 0.00768] | 0.00840 [0.000203, 0.0288] | 0.00527 [0.000608, 0.0966] | 0.00502 [0.000151, 0.0966] |
as.factor(missing_fi) | |||||||||
0 | 6 (8.7%) | 2 (22.2%) | 0 (0%) | 0 (0%) | 0 (0%) | 0 (0%) | 0 (0%) | 0 (0%) | 8 (6.3%) |
1 | 45 (65.2%) | 7 (77.8%) | 1 (20.0%) | 8 (80.0%) | 1 (100%) | 0 (0%) | 1 (20.0%) | 14 (60.9%) | 77 (60.2%) |
Missing | 18 (26.1%) | 0 (0%) | 4 (80.0%) | 2 (20.0%) | 0 (0%) | 6 (100%) | 4 (80.0%) | 9 (39.1%) | 43 (33.6%) |
kruskal.test(FI_final ~ journal_code2, data = ori_st)
##
## Kruskal-Wallis rank sum test
##
## data: FI_final by journal_code2
## Kruskal-Wallis chi-squared = 10.988, df = 7, p-value = 0.1392
kruskal.test(FQ_final ~ journal_code2, data = ori_st)
##
## Kruskal-Wallis rank sum test
##
## data: FQ_final by journal_code2
## Kruskal-Wallis chi-squared = 3.6893, df = 7, p-value = 0.8148
Box plots
p1 = ggplot(data = ori_st, aes(y = FI_final, x = as.factor(timing), fill = as.factor(timing))) + geom_boxplot() +
geom_jitter(alpha=0.2) + theme_bw() + theme(legend.position="none") +
labs(title = "Fragility index by timing of fracture assessment", x = "Timing of fracture assessment", y = "Fragility index")
p1
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | sex, data = ori_st, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]"))
Both (N=13) |
Men (N=9) |
Women (N=106) |
Overall (N=128) |
|
---|---|---|---|---|
no_rand | ||||
Mean (SD) | 1020 (755) | 1320 (142) | 3400 (2440) | 3010 (2390) |
Median [Q1, Q3] | 665 [578, 930] | 1200 [1200, 1470] | 2000 [1630, 4930] | 1960 [1360, 4090] |
Median [min, max] | 665 [450, 2690] | 1200 [1200, 1470] | 2000 [704, 7870] | 1960 [450, 7870] |
active_sample | ||||
Mean (SD) | 715 (613) | 1240 (132) | 2980 (2200) | 2630 (2160) |
Median [Q1, Q3] | 479 [451, 661] | 1130 [1130, 1350] | 1950 [1280, 4360] | 1770 [1050, 3660] |
Median [min, max] | 479 [339, 2690] | 1130 [1130, 1430] | 1950 [544, 7810] | 1770 [339, 7810] |
n_event | ||||
Mean (SD) | 65.5 (59.4) | 26.2 (9.56) | 185 (182) | 161 (174) |
Median [Q1, Q3] | 44.0 [35.0, 60.0] | 23.0 [21.0, 36.0] | 102 [64.3, 248] | 84.0 [52.8, 208] |
Median [min, max] | 44.0 [21.0, 231] | 23.0 [13.0, 39.0] | 102 [10.0, 764] | 84.0 [10.0, 764] |
FI_final | ||||
Mean (SD) | 4.77 (3.75) | 3.11 (1.62) | 18.9 (25.9) | 16.4 (24.2) |
Median [Q1, Q3] | 4.00 [2.00, 7.00] | 3.00 [2.00, 4.00] | 11.0 [5.00, 22.8] | 9.00 [4.00, 18.3] |
Median [min, max] | 4.00 [1.00, 13.0] | 3.00 [1.00, 6.00] | 11.0 [1.00, 171] | 9.00 [1.00, 171] |
FQ_final | ||||
Mean (SD) | 0.00863 (0.00772) | 0.00252 (0.00139) | 0.00822 (0.0115) | 0.00786 (0.0108) |
Median [Q1, Q3] | 0.00514 [0.00443, 0.0107] | 0.00222 [0.00177, 0.00296] | 0.00532 [0.00231, 0.00908] | 0.00502 [0.00222, 0.00892] |
Median [min, max] | 0.00514 [0.00108, 0.0288] | 0.00222 [0.000887, 0.00532] | 0.00532 [0.000151, 0.0966] | 0.00502 [0.000151, 0.0966] |
as.factor(missing_fi) | ||||
0 | 0 (0%) | 0 (0%) | 8 (7.5%) | 8 (6.3%) |
1 | 8 (61.5%) | 9 (100%) | 60 (56.6%) | 77 (60.2%) |
Missing | 5 (38.5%) | 0 (0%) | 38 (35.8%) | 43 (33.6%) |
kruskal.test(FI_final ~ sex, data = ori_st)
##
## Kruskal-Wallis rank sum test
##
## data: FI_final by sex
## Kruskal-Wallis chi-squared = 20.603, df = 2, p-value = 3.358e-05
kruskal.test(FQ_final ~ sex, data = ori_st)
##
## Kruskal-Wallis rank sum test
##
## data: FQ_final by sex
## Kruskal-Wallis chi-squared = 6.6623, df = 2, p-value = 0.03575
Box plots
p1 = ggplot(data = ori_st, aes(y = FI_final, x = as.factor(sex), fill = as.factor(sex))) + geom_boxplot() +
geom_jitter(alpha=0.2) + theme_bw() + theme(legend.position="none") +
labs(title = "Fragility index by sex", x = "Sex", y = "Fragility index")
p1
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | placebo, data = ori_st, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]" ))
Active (N=26) |
Placebo (N=102) |
Overall (N=128) |
|
---|---|---|---|
no_rand | |||
Mean (SD) | 2880 (1340) | 3040 (2590) | 3010 (2390) |
Median [Q1, Q3] | 4090 [1360, 4090] | 1960 [1120, 5090] | 1960 [1360, 4090] |
Median [min, max] | 4090 [1360, 4090] | 1960 [450, 7870] | 1960 [450, 7870] |
active_sample | |||
Mean (SD) | 2500 (1210) | 2660 (2340) | 2630 (2160) |
Median [Q1, Q3] | 3280 [1300, 3640] | 1770 [885, 4810] | 1770 [1050, 3660] |
Median [min, max] | 3280 [1050, 3980] | 1770 [339, 7810] | 1770 [339, 7810] |
n_event | |||
Mean (SD) | 173 (161) | 158 (178) | 161 (174) |
Median [Q1, Q3] | 104 [53.8, 247] | 77.5 [52.3, 176] | 84.0 [52.8, 208] |
Median [min, max] | 104 [14.0, 658] | 77.5 [10.0, 764] | 84.0 [10.0, 764] |
FI_final | |||
Mean (SD) | 15.1 (15.8) | 16.7 (26.0) | 16.4 (24.2) |
Median [Q1, Q3] | 9.50 [5.00, 16.5] | 8.00 [4.00, 18.8] | 9.00 [4.00, 18.3] |
Median [min, max] | 9.50 [2.00, 65.0] | 8.00 [1.00, 171] | 9.00 [1.00, 171] |
FQ_final | |||
Mean (SD) | 0.00622 (0.00493) | 0.00828 (0.0118) | 0.00786 (0.0108) |
Median [Q1, Q3] | 0.00528 [0.00210, 0.00874] | 0.00502 [0.00231, 0.00875] | 0.00502 [0.00222, 0.00892] |
Median [min, max] | 0.00528 [0.000554, 0.0169] | 0.00502 [0.000151, 0.0966] | 0.00502 [0.000151, 0.0966] |
as.factor(missing_fi) | |||
0 | 3 (11.5%) | 5 (4.9%) | 8 (6.3%) |
1 | 20 (76.9%) | 57 (55.9%) | 77 (60.2%) |
Missing | 3 (11.5%) | 40 (39.2%) | 43 (33.6%) |
kruskal.test(FI_final ~ placebo, data = ori_st)
##
## Kruskal-Wallis rank sum test
##
## data: FI_final by placebo
## Kruskal-Wallis chi-squared = 0.33785, df = 1, p-value = 0.5611
kruskal.test(FQ_final ~ placebo, data = ori_st)
##
## Kruskal-Wallis rank sum test
##
## data: FQ_final by placebo
## Kruskal-Wallis chi-squared = 0.028491, df = 1, p-value = 0.866
Box plots
p1 = ggplot(data = ori_st, aes(y = FI_final, x = as.factor(control), fill = as.factor(control))) + geom_boxplot() +
geom_jitter(alpha=0.2) + theme_bw() + theme(legend.position="none") +
labs(title = "Fragility index by types of control", x = "Types of control", y = "Fragility index")
p1
# Comparison:
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | fx_primary , data = ori_st, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]" ))
Primary endpoint (N=28) |
Secondary endpoint (N=100) |
Overall (N=128) |
|
---|---|---|---|
no_rand | |||
Mean (SD) | 3050 (2430) | 3000 (2390) | 3010 (2390) |
Median [Q1, Q3] | 1980 [1320, 4180] | 1960 [1360, 4090] | 1960 [1360, 4090] |
Median [min, max] | 1980 [578, 7870] | 1960 [450, 7870] | 1960 [450, 7870] |
active_sample | |||
Mean (SD) | 2600 (2190) | 2640 (2160) | 2630 (2160) |
Median [Q1, Q3] | 1730 [1010, 3780] | 1770 [1090, 3660] | 1770 [1050, 3660] |
Median [min, max] | 1730 [451, 7390] | 1770 [339, 7810] | 1770 [339, 7810] |
n_event | |||
Mean (SD) | 175 (156) | 158 (179) | 161 (174) |
Median [Q1, Q3] | 111 [71.3, 225] | 74.5 [50.3, 181] | 84.0 [52.8, 208] |
Median [min, max] | 111 [34.0, 671] | 74.5 [10.0, 764] | 84.0 [10.0, 764] |
FI_final | |||
Mean (SD) | 28.4 (38.0) | 13.0 (17.5) | 16.4 (24.2) |
Median [Q1, Q3] | 14.5 [11.0, 27.8] | 7.00 [3.00, 16.3] | 9.00 [4.00, 18.3] |
Median [min, max] | 14.5 [1.00, 171] | 7.00 [1.00, 111] | 9.00 [1.00, 171] |
FQ_final | |||
Mean (SD) | 0.0137 (0.0108) | 0.00621 (0.0103) | 0.00786 (0.0108) |
Median [Q1, Q3] | 0.00997 [0.00584, 0.0204] | 0.00354 [0.00205, 0.00717] | 0.00502 [0.00222, 0.00892] |
Median [min, max] | 0.00997 [0.000567, 0.0368] | 0.00354 [0.000151, 0.0966] | 0.00502 [0.000151, 0.0966] |
as.factor(missing_fi) | |||
0 | 2 (7.1%) | 6 (6.0%) | 8 (6.3%) |
1 | 17 (60.7%) | 60 (60.0%) | 77 (60.2%) |
Missing | 9 (32.1%) | 34 (34.0%) | 43 (33.6%) |
createTable(compareGroups(fx_primary ~ no_rand + active_sample + n_event + FI_final + FQ_final + missing_fi, data = ori_st, method = c(no_rand = 2, active_sample = 2, n_event = 2, FI_final = 2, FQ_final = 2)))
## Warning in chisq.test(xx, correct = FALSE): Chi-squared approximation may be
## incorrect
##
## --------Summary descriptives table by 'fx_primary'---------
##
## ___________________________________________________________
## Primary endpoint Secondary endpoint p.overall
## N=28 N=100
## ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
## no_rand 1982 [1320;4178] 1964 [1360;4093] 0.808
## active_sample 1733 [1010;3778] 1765 [1088;3664] 0.940
## n_event 111 [71.2;225] 74.5 [50.2;181] 0.135
## FI_final 14.5 [11.0;27.8] 7.00 [3.00;16.2] <0.001
## FQ_final 0.01 [0.01;0.02] 0.00 [0.00;0.01] <0.001
## missing_fi: 1.000
## 0 2 (10.5%) 6 (9.09%)
## 1 17 (89.5%) 60 (90.9%)
## ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
# Description:
fx_prim2 = subset(ori_st, pri_endpoint == 1)
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi), data = fx_prim2, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]"))
Overall (N=28) |
|
---|---|
no_rand | |
Mean (SD) | 3050 (2430) |
Median [Q1, Q3] | 1980 [1320, 4180] |
Median [min, max] | 1980 [578, 7870] |
active_sample | |
Mean (SD) | 2600 (2190) |
Median [Q1, Q3] | 1730 [1010, 3780] |
Median [min, max] | 1730 [451, 7390] |
n_event | |
Mean (SD) | 175 (156) |
Median [Q1, Q3] | 111 [71.3, 225] |
Median [min, max] | 111 [34.0, 671] |
FI_final | |
Mean (SD) | 28.4 (38.0) |
Median [Q1, Q3] | 14.5 [11.0, 27.8] |
Median [min, max] | 14.5 [1.00, 171] |
FQ_final | |
Mean (SD) | 0.0137 (0.0108) |
Median [Q1, Q3] | 0.00997 [0.00584, 0.0204] |
Median [min, max] | 0.00997 [0.000567, 0.0368] |
as.factor(missing_fi) | |
0 | 2 (7.1%) |
1 | 17 (60.7%) |
Missing | 9 (32.1%) |
Relationship between sample size/active sample/no. events and FI
p = ggplot(data = fx_prim2, aes(x = no_rand, y = FI_final))
p1 = p + geom_point() + geom_smooth() + labs(x = "Number of participants at randomisation", y = "Fragility index") + theme_bw()
p0 = ggplot(data = fx_prim2, aes(x = active_sample, y = FI_final))
p2 = p0 + geom_point() + geom_smooth() + labs(x = "Number of participants included in the analyses", y = "Fragility index") + theme_bw()
p.0 = ggplot(data = fx_prim2, aes(x = n_event, y = FI_final))
p3 = p.0 + geom_point() + geom_smooth() + labs(x = "Number of participants with fracture events", y = "Fragility index") + theme_bw()
#grid.arrange(p1, p2, p3, nrow = 1)
grid.arrange(p1, p3, nrow = 1, top = textGrob("Relationship between Number of participants and Fragility index", gp = gpar(fontsize = 20, font = 3)))
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | as.factor(fx_code1), data = fx_prim2, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]"))
Clin_fx (N=2) |
OFx (N=1) |
NonVert_fx (N=1) |
Vert_fx (N=22) |
Hip (N=2) |
Overall (N=28) |
|
---|---|---|---|---|---|---|
no_rand | ||||||
Mean (SD) | 3110 (1390) | NA | NA | 2770 (2470) | 5500 (3160) | 3050 (2430) |
Median [Q1, Q3] | 3110 [2620, 3600] | 2000 [2000, 2000] | 5090 [5090, 5090] | 1650 [1120, 3700] | 5500 [4390, 6620] | 1980 [1320, 4180] |
Median [min, max] | 3110 [2130, 4090] | 2000 [2000, 2000] | 5090 [5090, 5090] | 1650 [578, 7870] | 5500 [3270, 7740] | 1980 [578, 7870] |
active_sample | ||||||
Mean (SD) | 2060 (2240) | NA | NA | 2440 (2210) | 4110 (3310) | 2600 (2190) |
Median [Q1, Q3] | 2060 [1270, 2850] | 1950 [1950, 1950] | 4940 [4940, 4940] | 1440 [931, 3230] | 4110 [2940, 5280] | 1730 [1010, 3780] |
Median [min, max] | 2060 [479, 3640] | 1950 [1950, 1950] | 4940 [4940, 4940] | 1440 [451, 7390] | 4110 [1770, 6450] | 1730 [451, 7390] |
n_event | ||||||
Mean (SD) | 348 (165) | NA | NA | 137 (112) | 99.0 (58.0) | 175 (156) |
Median [Q1, Q3] | 348 [289, 406] | 312 [312, 312] | 671 [671, 671] | 103 [63.8, 151] | 99.0 [78.5, 120] | 111 [71.3, 225] |
Median [min, max] | 348 [231, 464] | 312 [312, 312] | 671 [671, 671] | 103 [34.0, 402] | 99.0 [58.0, 140] | 111 [34.0, 671] |
FI_final | ||||||
Mean (SD) | 16.5 (13.4) | NA | NA | 32.4 (41.7) | 6.50 (7.78) | 28.4 (38.0) |
Median [Q1, Q3] | 16.5 [11.8, 21.3] | 33.0 [33.0, 33.0] | 3.00 [3.00, 3.00] | 15.0 [13.0, 36.3] | 6.50 [3.75, 9.25] | 14.5 [11.0, 27.8] |
Median [min, max] | 16.5 [7.00, 26.0] | 33.0 [33.0, 33.0] | 3.00 [3.00, 3.00] | 15.0 [6.00, 171] | 6.50 [1.00, 12.0] | 14.5 [1.00, 171] |
FQ_final | ||||||
Mean (SD) | 0.0109 (0.00529) | NA | NA | 0.0156 (0.0110) | 0.00121 (0.000916) | 0.0137 (0.0108) |
Median [Q1, Q3] | 0.0109 [0.00901, 0.0127] | 0.0169 [0.0169, 0.0169] | 0.000608 [0.000608, 0.000608] | 0.0111 [0.00692, 0.0245] | 0.00121 [0.000890, 0.00154] | 0.00997 [0.00584, 0.0204] |
Median [min, max] | 0.0109 [0.00714, 0.0146] | 0.0169 [0.0169, 0.0169] | 0.000608 [0.000608, 0.000608] | 0.0111 [0.00314, 0.0368] | 0.00121 [0.000567, 0.00186] | 0.00997 [0.000567, 0.0368] |
as.factor(missing_fi) | ||||||
0 | 0 (0%) | 1 (100%) | 0 (0%) | 1 (4.5%) | 0 (0%) | 2 (7.1%) |
1 | 2 (100%) | 0 (0%) | 0 (0%) | 13 (59.1%) | 2 (100%) | 17 (60.7%) |
Missing | 0 (0%) | 0 (0%) | 1 (100%) | 8 (36.4%) | 0 (0%) | 9 (32.1%) |
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | as.factor(fx_code2), data = fx_prim2, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]"))
Any (N=2) |
Osteoporotic (N=1) |
Non-Vertebrae (N=1) |
Vertebrae (N=22) |
Hip (N=2) |
Overall (N=28) |
|
---|---|---|---|---|---|---|
no_rand | ||||||
Mean (SD) | 3110 (1390) | NA | NA | 2770 (2470) | 5500 (3160) | 3050 (2430) |
Median [Q1, Q3] | 3110 [2620, 3600] | 2000 [2000, 2000] | 5090 [5090, 5090] | 1650 [1120, 3700] | 5500 [4390, 6620] | 1980 [1320, 4180] |
Median [min, max] | 3110 [2130, 4090] | 2000 [2000, 2000] | 5090 [5090, 5090] | 1650 [578, 7870] | 5500 [3270, 7740] | 1980 [578, 7870] |
active_sample | ||||||
Mean (SD) | 2060 (2240) | NA | NA | 2440 (2210) | 4110 (3310) | 2600 (2190) |
Median [Q1, Q3] | 2060 [1270, 2850] | 1950 [1950, 1950] | 4940 [4940, 4940] | 1440 [931, 3230] | 4110 [2940, 5280] | 1730 [1010, 3780] |
Median [min, max] | 2060 [479, 3640] | 1950 [1950, 1950] | 4940 [4940, 4940] | 1440 [451, 7390] | 4110 [1770, 6450] | 1730 [451, 7390] |
n_event | ||||||
Mean (SD) | 348 (165) | NA | NA | 137 (112) | 99.0 (58.0) | 175 (156) |
Median [Q1, Q3] | 348 [289, 406] | 312 [312, 312] | 671 [671, 671] | 103 [63.8, 151] | 99.0 [78.5, 120] | 111 [71.3, 225] |
Median [min, max] | 348 [231, 464] | 312 [312, 312] | 671 [671, 671] | 103 [34.0, 402] | 99.0 [58.0, 140] | 111 [34.0, 671] |
FI_final | ||||||
Mean (SD) | 16.5 (13.4) | NA | NA | 32.4 (41.7) | 6.50 (7.78) | 28.4 (38.0) |
Median [Q1, Q3] | 16.5 [11.8, 21.3] | 33.0 [33.0, 33.0] | 3.00 [3.00, 3.00] | 15.0 [13.0, 36.3] | 6.50 [3.75, 9.25] | 14.5 [11.0, 27.8] |
Median [min, max] | 16.5 [7.00, 26.0] | 33.0 [33.0, 33.0] | 3.00 [3.00, 3.00] | 15.0 [6.00, 171] | 6.50 [1.00, 12.0] | 14.5 [1.00, 171] |
FQ_final | ||||||
Mean (SD) | 0.0109 (0.00529) | NA | NA | 0.0156 (0.0110) | 0.00121 (0.000916) | 0.0137 (0.0108) |
Median [Q1, Q3] | 0.0109 [0.00901, 0.0127] | 0.0169 [0.0169, 0.0169] | 0.000608 [0.000608, 0.000608] | 0.0111 [0.00692, 0.0245] | 0.00121 [0.000890, 0.00154] | 0.00997 [0.00584, 0.0204] |
Median [min, max] | 0.0109 [0.00714, 0.0146] | 0.0169 [0.0169, 0.0169] | 0.000608 [0.000608, 0.000608] | 0.0111 [0.00314, 0.0368] | 0.00121 [0.000567, 0.00186] | 0.00997 [0.000567, 0.0368] |
as.factor(missing_fi) | ||||||
0 | 0 (0%) | 1 (100%) | 0 (0%) | 1 (4.5%) | 0 (0%) | 2 (7.1%) |
1 | 2 (100%) | 0 (0%) | 0 (0%) | 13 (59.1%) | 2 (100%) | 17 (60.7%) |
Missing | 0 (0%) | 0 (0%) | 1 (100%) | 8 (36.4%) | 0 (0%) | 9 (32.1%) |
kruskal.test(FI_final ~ fx_code2, data = fx_prim2)
##
## Kruskal-Wallis rank sum test
##
## data: FI_final by fx_code2
## Kruskal-Wallis chi-squared = 6.3938, df = 4, p-value = 0.1716
kruskal.test(FQ_final ~ fx_code2, data = fx_prim2)
##
## Kruskal-Wallis rank sum test
##
## data: FQ_final by fx_code2
## Kruskal-Wallis chi-squared = 8.0105, df = 4, p-value = 0.09119
Box plots
p1 = ggplot(data = fx_prim2, aes(y = FI_final, x = as.factor(fx_code2), fill = as.factor(fx_code2))) + geom_boxplot() +
geom_jitter(alpha=0.2) + theme_bw() + theme(legend.position="none") +
labs(title = "Fragility index", x = "Fracture sites", y = "Fragility index") + theme(axis.text.x = element_text(angle = 45, hjust = 1))
p2 = ggplot(data = fx_prim2, aes(y = FQ_final, x = as.factor(fx_code2), fill = as.factor(fx_code2))) + geom_boxplot() +
geom_jitter(alpha=0.2) + theme_bw() + theme(legend.position="none") +
labs(title = "Fragility quotient", x = "Fracture sites", y = "Fragility quotient") + theme(axis.text.x = element_text(angle = 45, hjust = 1))
grid.arrange(p1, p2, nrow = 1, top = textGrob("Fragility of evidence for anti-fracture efficacy by fracture sites", gp = gpar(fontsize = 20, font = 1)))
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | as.factor(interv_code1), data = fx_prim2, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]"))
Alendronate (N=2) |
Ibandronate (N=2) |
Risedronate (N=2) |
Minodronate (N=1) |
Zoledronate (N=6) |
Teriparatide (N=6) |
Abaloparatide (N=1) |
Romosozumab (N=4) |
Denosumab (N=1) |
Strontium_ranelate (N=2) |
Calcium_VitD (N=1) |
Overall (N=28) |
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
no_rand | ||||||||||||
Mean (SD) | 3230 (1700) | 1960 (0) | 1220 (576) | NA | 3580 (3270) | 1380 (664) | NA | 5640 (1780) | NA | 3370 (2430) | NA | 3050 (2430) |
Median [Q1, Q3] | 3230 [2630, 3830] | 1960 [1960, 1960] | 1220 [1020, 1420] | 704 [704, 704] | 2060 [1400, 6330] | 1230 [1090, 1570] | 1650 [1650, 1650] | 5640 [4090, 7180] | 7870 [7870, 7870] | 3370 [2510, 4230] | 3270 [3270, 3270] | 1980 [1320, 4180] |
Median [min, max] | 3230 [2030, 4430] | 1960 [1960, 1960] | 1220 [814, 1630] | 704 [704, 704] | 2060 [665, 7740] | 1230 [578, 2530] | 1650 [1650, 1650] | 5640 [4090, 7180] | 7870 [7870, 7870] | 3370 [1650, 5090] | 3270 [3270, 3270] | 1980 [578, 7870] |
active_sample | ||||||||||||
Mean (SD) | 3040 (1550) | 1950 (0) | 1030 (484) | NA | 2720 (2650) | 1070 (442) | NA | 5150 (1730) | NA | 3190 (2470) | NA | 2600 (2190) |
Median [Q1, Q3] | 3040 [2490, 3590] | 1950 [1950, 1950] | 1030 [861, 1200] | 544 [544, 544] | 1540 [775, 4740] | 971 [885, 1330] | 1400 [1400, 1400] | 5150 [3660, 6650] | 7390 [7390, 7390] | 3190 [2320, 4060] | 1770 [1770, 1770] | 1730 [1010, 3780] |
Median [min, max] | 3040 [1950, 4130] | 1950 [1950, 1950] | 1030 [690, 1370] | 544 [544, 544] | 1540 [479, 6450] | 971 [451, 1700] | 1400 [1400, 1400] | 5150 [3640, 6650] | 7390 [7390, 7390] | 3190 [1440, 4940] | 1770 [1770, 1770] | 1730 [451, 7390] |
n_event | ||||||||||||
Mean (SD) | 172 (72.1) | 111 (1.41) | 148 (8.49) | NA | 194 (148) | 67.5 (22.9) | NA | 216 (177) | NA | 529 (201) | NA | 175 (156) |
Median [Q1, Q3] | 172 [147, 198] | 111 [111, 112] | 148 [145, 151] | 100 [100, 100] | 186 [64.3, 292] | 71.5 [51.0, 85.3] | 34.0 [34.0, 34.0] | 163 [97.5, 282] | 350 [350, 350] | 529 [458, 600] | 58.0 [58.0, 58.0] | 111 [71.3, 225] |
Median [min, max] | 172 [121, 223] | 111 [110, 112] | 148 [142, 154] | 100 [100, 100] | 186 [37.0, 402] | 71.5 [36.0, 92.0] | 34.0 [34.0, 34.0] | 163 [75.0, 464] | 350 [350, 350] | 529 [387, 671] | 58.0 [58.0, 58.0] | 111 [34.0, 671] |
FI_final | ||||||||||||
Mean (SD) | 26.5 (19.1) | 14.0 (1.41) | 12.5 (2.12) | NA | 39.3 (65.3) | 15.7 (7.00) | NA | 33.0 (9.31) | NA | 27.5 (34.6) | NA | 28.4 (38.0) |
Median [Q1, Q3] | 26.5 [19.8, 33.3] | 14.0 [13.5, 14.5] | 12.5 [11.8, 13.3] | 20.0 [20.0, 20.0] | 9.50 [7.00, 27.8] | 14.0 [11.5, 21.0] | 13.0 [13.0, 13.0] | 33.0 [25.5, 40.5] | 137 [137, 137] | 27.5 [15.3, 39.8] | 1.00 [1.00, 1.00] | 14.5 [11.0, 27.8] |
Median [min, max] | 26.5 [13.0, 40.0] | 14.0 [13.0, 15.0] | 12.5 [11.0, 14.0] | 20.0 [20.0, 20.0] | 9.50 [6.00, 171] | 14.0 [7.00, 25.0] | 13.0 [13.0, 13.0] | 33.0 [24.0, 42.0] | 137 [137, 137] | 27.5 [3.00, 52.0] | 1.00 [1.00, 1.00] | 14.5 [1.00, 171] |
FQ_final | ||||||||||||
Mean (SD) | 0.0118 (0.0123) | 0.00717 (0.000724) | 0.0141 (0.00869) | NA | 0.0133 (0.0100) | 0.0182 (0.0109) | NA | 0.00706 (0.00329) | NA | 0.0183 (0.0251) | NA | 0.0137 (0.0108) |
Median [Q1, Q3] | 0.0118 [0.00750, 0.0162] | 0.00717 [0.00692, 0.00743] | 0.0141 [0.0111, 0.0172] | 0.0368 [0.0368, 0.0368] | 0.0126 [0.00666, 0.0164] | 0.0200 [0.00935, 0.0277] | 0.00928 [0.00928, 0.00928] | 0.00658 [0.00541, 0.00822] | 0.0185 [0.0185, 0.0185] | 0.0183 [0.00947, 0.0272] | 0.000567 [0.000567, 0.000567] | 0.00997 [0.00584, 0.0204] |
Median [min, max] | 0.0118 [0.00314, 0.0206] | 0.00717 [0.00666, 0.00768] | 0.0141 [0.00801, 0.0203] | 0.0368 [0.0368, 0.0368] | 0.0126 [0.00186, 0.0301] | 0.0200 [0.00412, 0.0288] | 0.00928 [0.00928, 0.00928] | 0.00658 [0.00361, 0.0115] | 0.0185 [0.0185, 0.0185] | 0.0183 [0.000608, 0.0361] | 0.000567 [0.000567, 0.000567] | 0.00997 [0.000567, 0.0368] |
as.factor(missing_fi) | ||||||||||||
0 | 0 (0%) | 0 (0%) | 0 (0%) | 0 (0%) | 1 (16.7%) | 1 (16.7%) | 0 (0%) | 0 (0%) | 0 (0%) | 0 (0%) | 0 (0%) | 2 (7.1%) |
1 | 1 (50.0%) | 0 (0%) | 2 (100%) | 1 (100%) | 5 (83.3%) | 2 (33.3%) | 1 (100%) | 4 (100%) | 0 (0%) | 0 (0%) | 1 (100%) | 17 (60.7%) |
Missing | 1 (50.0%) | 2 (100%) | 0 (0%) | 0 (0%) | 0 (0%) | 3 (50.0%) | 0 (0%) | 0 (0%) | 1 (100%) | 2 (100%) | 0 (0%) | 9 (32.1%) |
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | as.factor(interv_code2), data = fx_prim2, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]"))
Bisphosphonates (N=13) |
PTH analog (N=7) |
Romosozumab (N=4) |
Denosumab (N=1) |
Strontium_ranelate (N=2) |
Calcium_VitD (N=1) |
Overall (N=28) |
|
---|---|---|---|---|---|---|---|
no_rand | |||||||
Mean (SD) | 2690 (2440) | 1420 (614) | 5640 (1780) | NA | 3370 (2430) | NA | 3050 (2430) |
Median [Q1, Q3] | 1960 [1200, 2130] | 1360 [1090, 1640] | 5640 [4090, 7180] | 7870 [7870, 7870] | 3370 [2510, 4230] | 3270 [3270, 3270] | 1980 [1320, 4180] |
Median [min, max] | 1960 [665, 7740] | 1360 [578, 2530] | 5640 [4090, 7180] | 7870 [7870, 7870] | 3370 [1650, 5090] | 3270 [3270, 3270] | 1980 [578, 7870] |
active_sample | |||||||
Mean (SD) | 2220 (1960) | 1110 (423) | 5150 (1730) | NA | 3190 (2470) | NA | 2600 (2190) |
Median [Q1, Q3] | 1950 [690, 1950] | 1050 [887, 1410] | 5150 [3660, 6650] | 7390 [7390, 7390] | 3190 [2320, 4060] | 1770 [1770, 1770] | 1730 [1010, 3780] |
Median [min, max] | 1950 [479, 6450] | 1050 [451, 1700] | 5150 [3640, 6650] | 7390 [7390, 7390] | 3190 [1440, 4940] | 1770 [1770, 1770] | 1730 [451, 7390] |
n_event | |||||||
Mean (SD) | 163 (104) | 62.7 (24.4) | 216 (177) | NA | 529 (201) | NA | 175 (156) |
Median [Q1, Q3] | 140 [110, 223] | 60.0 [42.0, 84.5] | 163 [97.5, 282] | 350 [350, 350] | 529 [458, 600] | 58.0 [58.0, 58.0] | 111 [71.3, 225] |
Median [min, max] | 140 [37.0, 402] | 60.0 [34.0, 92.0] | 163 [75.0, 464] | 350 [350, 350] | 529 [387, 671] | 58.0 [58.0, 58.0] | 111 [34.0, 671] |
FI_final | |||||||
Mean (SD) | 27.8 (44.2) | 15.3 (6.47) | 33.0 (9.31) | NA | 27.5 (34.6) | NA | 28.4 (38.0) |
Median [Q1, Q3] | 13.0 [11.0, 20.0] | 13.0 [12.0, 19.0] | 33.0 [25.5, 40.5] | 137 [137, 137] | 27.5 [15.3, 39.8] | 1.00 [1.00, 1.00] | 14.5 [11.0, 27.8] |
Median [min, max] | 13.0 [6.00, 171] | 13.0 [7.00, 25.0] | 33.0 [24.0, 42.0] | 137 [137, 137] | 27.5 [3.00, 52.0] | 1.00 [1.00, 1.00] | 14.5 [1.00, 171] |
FQ_final | |||||||
Mean (SD) | 0.0140 (0.0106) | 0.0169 (0.0105) | 0.00706 (0.00329) | NA | 0.0183 (0.0251) | NA | 0.0137 (0.0108) |
Median [Q1, Q3] | 0.0107 [0.00666, 0.0203] | 0.0143 [0.00849, 0.0271] | 0.00658 [0.00541, 0.00822] | 0.0185 [0.0185, 0.0185] | 0.0183 [0.00947, 0.0272] | 0.000567 [0.000567, 0.000567] | 0.00997 [0.00584, 0.0204] |
Median [min, max] | 0.0107 [0.00186, 0.0368] | 0.0143 [0.00412, 0.0288] | 0.00658 [0.00361, 0.0115] | 0.0185 [0.0185, 0.0185] | 0.0183 [0.000608, 0.0361] | 0.000567 [0.000567, 0.000567] | 0.00997 [0.000567, 0.0368] |
as.factor(missing_fi) | |||||||
0 | 1 (7.7%) | 1 (14.3%) | 0 (0%) | 0 (0%) | 0 (0%) | 0 (0%) | 2 (7.1%) |
1 | 9 (69.2%) | 3 (42.9%) | 4 (100%) | 0 (0%) | 0 (0%) | 1 (100%) | 17 (60.7%) |
Missing | 3 (23.1%) | 3 (42.9%) | 0 (0%) | 1 (100%) | 2 (100%) | 0 (0%) | 9 (32.1%) |
kruskal.test(FI_final ~ interv_code2, data = fx_prim2)
##
## Kruskal-Wallis rank sum test
##
## data: FI_final by interv_code2
## Kruskal-Wallis chi-squared = 9.11, df = 5, p-value = 0.1048
kruskal.test(FQ_final ~ interv_code2, data = fx_prim2)
##
## Kruskal-Wallis rank sum test
##
## data: FQ_final by interv_code2
## Kruskal-Wallis chi-squared = 5.3409, df = 5, p-value = 0.3757
Box plots
p1 = ggplot(data = fx_prim2, aes(y = FI_final, x = as.factor(interv_code2), fill = as.factor(interv_code2))) + geom_boxplot() +
geom_jitter(alpha=0.2) + theme_bw() + theme(legend.position="none") +
labs(title = "Fragility index", x = "Pharmacological interventions", y = "Fragility index") + theme(axis.text.x = element_text(angle = 45, hjust = 1))
p2 = ggplot(data = fx_prim2, aes(y = FQ_final, x = as.factor(interv_code2), fill = as.factor(interv_code2))) + geom_boxplot() +
geom_jitter(alpha=0.2) + theme_bw() + theme(legend.position="none") +
labs(title = "Fragility quotient", x = "Pharmacological interventions", y = "Fragility quotine") + theme(axis.text.x = element_text(angle = 45, hjust = 1))
grid.arrange(p1, p2, nrow = 1, top = textGrob("Fragility of evidence for anti-fracture efficacy by intervention sites", gp = gpar(fontsize = 20, font = 1)))
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | as.factor(timing), data = fx_prim2, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]" ))
2 (N=1) |
3 (N=5) |
4 (N=10) |
5 (N=9) |
6 (N=1) |
7 (N=1) |
8 (N=1) |
Overall (N=28) |
|
---|---|---|---|---|---|---|---|---|
no_rand | ||||||||
Mean (SD) | NA | 1930 (1020) | 2350 (2120) | 3720 (3070) | NA | NA | NA | 3050 (2430) |
Median [Q1, Q3] | 7180 [7180, 7180] | 1650 [1640, 2530] | 1280 [1090, 3580] | 1960 [1650, 7740] | 4430 [4430, 4430] | 5090 [5090, 5090] | 2000 [2000, 2000] | 1980 [1320, 4180] |
Median [min, max] | 7180 [7180, 7180] | 1650 [578, 3270] | 1280 [665, 7180] | 1960 [814, 7870] | 4430 [4430, 4430] | 5090 [5090, 5090] | 2000 [2000, 2000] | 1980 [578, 7870] |
active_sample | ||||||||
Mean (SD) | NA | 1350 (527) | 2110 (1970) | 3040 (2680) | NA | NA | NA | 2600 (2190) |
Median [Q1, Q3] | 6640 [6640, 6640] | 1430 [1400, 1700] | 1090 [885, 3220] | 1950 [1370, 5680] | 4130 [4130, 4130] | 4940 [4940, 4940] | 1950 [1950, 1950] | 1730 [1010, 3780] |
Median [min, max] | 6640 [6640, 6640] | 1430 [451, 1770] | 1090 [544, 6650] | 1950 [479, 7390] | 4130 [4130, 4130] | 4940 [4940, 4940] | 1950 [1950, 1950] | 1730 [451, 7390] |
n_event | ||||||||
Mean (SD) | NA | 47.2 (12.0) | 145 (129) | 225 (122) | NA | NA | NA | 175 (156) |
Median [Q1, Q3] | 75.0 [75.0, 75.0] | 48.0 [36.0, 58.0] | 96.0 [83.8, 192] | 154 [140, 350] | 121 [121, 121] | 671 [671, 671] | 312 [312, 312] | 111 [71.3, 225] |
Median [min, max] | 75.0 [75.0, 75.0] | 48.0 [34.0, 60.0] | 96.0 [37.0, 464] | 154 [110, 402] | 121 [121, 121] | 671 [671, 671] | 312 [312, 312] | 111 [34.0, 671] |
FI_final | ||||||||
Mean (SD) | NA | 9.00 (5.10) | 24.4 (13.1) | 48.0 (62.1) | NA | NA | NA | 28.4 (38.0) |
Median [Q1, Q3] | 24.0 [24.0, 24.0] | 11.0 [7.00, 13.0] | 24.0 [16.3, 36.5] | 14.0 [12.0, 52.0] | 13.0 [13.0, 13.0] | 3.00 [3.00, 3.00] | 33.0 [33.0, 33.0] | 14.5 [11.0, 27.8] |
Median [min, max] | 24.0 [24.0, 24.0] | 11.0 [1.00, 13.0] | 24.0 [6.00, 42.0] | 14.0 [7.00, 171] | 13.0 [13.0, 13.0] | 3.00 [3.00, 3.00] | 33.0 [33.0, 33.0] | 14.5 [1.00, 171] |
FQ_final | ||||||||
Mean (SD) | NA | 0.0101 (0.0110) | 0.0166 (0.0108) | 0.0160 (0.0115) | NA | NA | NA | 0.0137 (0.0108) |
Median [Q1, Q3] | 0.00361 [0.00361, 0.00361] | 0.00770 [0.00412, 0.00928] | 0.0129 [0.00802, 0.0245] | 0.0146 [0.00768, 0.0203] | 0.00314 [0.00314, 0.00314] | 0.000608 [0.000608, 0.000608] | 0.0169 [0.0169, 0.0169] | 0.00997 [0.00584, 0.0204] |
Median [min, max] | 0.00361 [0.00361, 0.00361] | 0.00770 [0.000567, 0.0288] | 0.0129 [0.00532, 0.0368] | 0.0146 [0.00186, 0.0361] | 0.00314 [0.00314, 0.00314] | 0.000608 [0.000608, 0.000608] | 0.0169 [0.0169, 0.0169] | 0.00997 [0.000567, 0.0368] |
as.factor(missing_fi) | ||||||||
0 | 0 (0%) | 0 (0%) | 1 (10.0%) | 0 (0%) | 0 (0%) | 0 (0%) | 1 (100%) | 2 (7.1%) |
1 | 1 (100%) | 4 (80.0%) | 7 (70.0%) | 5 (55.6%) | 0 (0%) | 0 (0%) | 0 (0%) | 17 (60.7%) |
Missing | 0 (0%) | 1 (20.0%) | 2 (20.0%) | 4 (44.4%) | 1 (100%) | 1 (100%) | 0 (0%) | 9 (32.1%) |
kruskal.test(FI_final ~ timing, data = fx_prim2)
##
## Kruskal-Wallis rank sum test
##
## data: FI_final by timing
## Kruskal-Wallis chi-squared = 8.7593, df = 6, p-value = 0.1876
kruskal.test(FQ_final ~ timing, data = fx_prim2)
##
## Kruskal-Wallis rank sum test
##
## data: FQ_final by timing
## Kruskal-Wallis chi-squared = 7.6194, df = 6, p-value = 0.2673
Box plots
p1 = ggplot(data = fx_prim2, aes(y = FI_final, x = as.factor(timing), fill = as.factor(timing))) + geom_boxplot() +
geom_jitter(alpha=0.2) + theme_bw() + theme(legend.position="none") +
labs(title = "Fragility index by timing of fracture assessment", x = "Timing of fracture assessment", y = "Fragility index")
p1
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | as.factor(journal_code2), data = fx_prim2, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]" ))
NEJM (N=14) |
Lancet (N=2) |
JAMA (N=4) |
Ann Intern Med (N=1) |
JBMR (N=2) |
JCEM (N=1) |
Other (N=4) |
Overall (N=28) |
|
---|---|---|---|---|---|---|---|---|
no_rand | ||||||||
Mean (SD) | 4170 (2790) | 1690 (472) | 2340 (1400) | NA | 1960 (0) | NA | 1820 (2180) | 3050 (2430) |
Median [Q1, Q3] | 3680 [1740, 7180] | 1690 [1530, 1860] | 1640 [1640, 2340] | 2530 [2530, 2530] | 1960 [1960, 1960] | 578 [578, 578] | 759 [694, 1880] | 1980 [1320, 4180] |
Median [min, max] | 3680 [1090, 7870] | 1690 [1360, 2030] | 1640 [1630, 4430] | 2530 [2530, 2530] | 1960 [1960, 1960] | 578 [578, 578] | 759 [665, 5090] | 1980 [578, 7870] |
active_sample | ||||||||
Mean (SD) | 3470 (2580) | 1500 (634) | 2080 (1370) | NA | 1950 (0) | NA | 1710 (2150) | 2600 (2190) |
Median [Q1, Q3] | 2800 [1210, 6250] | 1500 [1270, 1720] | 1410 [1390, 2100] | 1700 [1700, 1700] | 1950 [1950, 1950] | 451 [451, 451] | 674 [629, 1750] | 1730 [1010, 3780] |
Median [min, max] | 2800 [479, 7390] | 1500 [1050, 1950] | 1410 [1370, 4130] | 1700 [1700, 1700] | 1950 [1950, 1950] | 451 [451, 451] | 674 [544, 4940] | 1730 [451, 7390] |
n_event | ||||||||
Mean (SD) | 211 (147) | 158 (92.6) | 86.3 (60.7) | NA | 111 (1.41) | NA | 238 (292) | 175 (156) |
Median [Q1, Q3] | 181 [83.8, 341] | 158 [125, 190] | 78.5 [35.5, 129] | 60.0 [60.0, 60.0] | 111 [111, 112] | 48.0 [48.0, 48.0] | 121 [84.8, 274] | 111 [71.3, 225] |
Median [min, max] | 181 [37.0, 464] | 158 [92.0, 223] | 78.5 [34.0, 154] | 60.0 [60.0, 60.0] | 111 [110, 112] | 48.0 [48.0, 48.0] | 121 [39.0, 671] | 111 [34.0, 671] |
FI_final | ||||||||
Mean (SD) | 42.8 (49.7) | 27.5 (17.7) | 12.0 (1.15) | NA | 14.0 (1.41) | NA | 11.0 (7.53) | 28.4 (38.0) |
Median [Q1, Q3] | 25.5 [14.8, 41.5] | 27.5 [21.3, 33.8] | 12.0 [11.0, 13.0] | 7.00 [7.00, 7.00] | 14.0 [13.5, 14.5] | 13.0 [13.0, 13.0] | 10.5 [6.00, 15.5] | 14.5 [11.0, 27.8] |
Median [min, max] | 25.5 [1.00, 171] | 27.5 [15.0, 40.0] | 12.0 [11.0, 13.0] | 7.00 [7.00, 7.00] | 14.0 [13.0, 15.0] | 13.0 [13.0, 13.0] | 10.5 [3.00, 20.0] | 14.5 [1.00, 171] |
FQ_final | ||||||||
Mean (SD) | 0.0147 (0.0116) | 0.0174 (0.00442) | 0.00703 (0.00268) | NA | 0.00717 (0.000724) | NA | 0.0171 (0.0154) | 0.0137 (0.0108) |
Median [Q1, Q3] | 0.0130 [0.00550, 0.0240] | 0.0174 [0.0159, 0.0190] | 0.00785 [0.00656, 0.00832] | 0.00412 [0.00412, 0.00412] | 0.00717 [0.00692, 0.00743] | 0.0288 [0.0288, 0.0288] | 0.0155 [0.00814, 0.0244] | 0.00997 [0.00584, 0.0204] |
Median [min, max] | 0.0130 [0.000567, 0.0361] | 0.0174 [0.0143, 0.0206] | 0.00785 [0.00314, 0.00928] | 0.00412 [0.00412, 0.00412] | 0.00717 [0.00666, 0.00768] | 0.0288 [0.0288, 0.0288] | 0.0155 [0.000608, 0.0368] | 0.00997 [0.000567, 0.0368] |
as.factor(missing_fi) | ||||||||
0 | 1 (7.1%) | 1 (50.0%) | 0 (0%) | 0 (0%) | 0 (0%) | 0 (0%) | 0 (0%) | 2 (7.1%) |
1 | 9 (64.3%) | 1 (50.0%) | 3 (75.0%) | 1 (100%) | 0 (0%) | 0 (0%) | 3 (75.0%) | 17 (60.7%) |
Missing | 4 (28.6%) | 0 (0%) | 1 (25.0%) | 0 (0%) | 2 (100%) | 1 (100%) | 1 (25.0%) | 9 (32.1%) |
kruskal.test(FI_final ~ journal_code2, data = fx_prim2)
##
## Kruskal-Wallis rank sum test
##
## data: FI_final by journal_code2
## Kruskal-Wallis chi-squared = 7.3153, df = 6, p-value = 0.2927
kruskal.test(FQ_final ~ journal_code2, data = fx_prim2)
##
## Kruskal-Wallis rank sum test
##
## data: FQ_final by journal_code2
## Kruskal-Wallis chi-squared = 5.1191, df = 6, p-value = 0.5286
Box plots
p1 = ggplot(data = fx_prim2, aes(y = FI_final, x = as.factor(timing), fill = as.factor(timing))) + geom_boxplot() +
geom_jitter(alpha=0.2) + theme_bw() + theme(legend.position="none") +
labs(title = "Fragility index by timing of fracture assessment", x = "Timing of fracture assessment", y = "Fragility index")
p1
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | sex, data = fx_prim2, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]" ))
Both (N=3) |
Men (N=1) |
Women (N=24) |
Overall (N=28) |
|
---|---|---|---|---|
no_rand | ||||
Mean (SD) | 1120 (870) | NA | 3370 (2480) | 3050 (2430) |
Median [Q1, Q3] | 665 [622, 1400] | 1200 [1200, 1200] | 2010 [1640, 4600] | 1980 [1320, 4180] |
Median [min, max] | 665 [578, 2130] | 1200 [1200, 1200] | 2010 [704, 7870] | 1980 [578, 7870] |
active_sample | ||||
Mean (SD) | 529 (112) | NA | 2920 (2210) | 2600 (2190) |
Median [Q1, Q3] | 479 [465, 568] | 1130 [1130, 1130] | 1950 [1390, 4330] | 1730 [1010, 3780] |
Median [min, max] | 479 [451, 657] | 1130 [1130, 1130] | 1950 [544, 7390] | 1730 [451, 7390] |
n_event | ||||
Mean (SD) | 106 (108) | NA | 189 (161) | 175 (156) |
Median [Q1, Q3] | 48.0 [43.5, 140] | 37.0 [37.0, 37.0] | 117 [85.3, 245] | 111 [71.3, 225] |
Median [min, max] | 48.0 [39.0, 231] | 37.0 [37.0, 37.0] | 117 [34.0, 671] | 111 [34.0, 671] |
FI_final | ||||
Mean (SD) | 9.00 (3.46) | NA | 31.7 (40.1) | 28.4 (38.0) |
Median [Q1, Q3] | 7.00 [7.00, 10.0] | 6.00 [6.00, 6.00] | 17.5 [12.8, 34.8] | 14.5 [11.0, 27.8] |
Median [min, max] | 7.00 [7.00, 13.0] | 6.00 [6.00, 6.00] | 17.5 [1.00, 171] | 14.5 [1.00, 171] |
FQ_final | ||||
Mean (SD) | 0.0180 (0.00956) | NA | 0.0136 (0.0111) | 0.0137 (0.0108) |
Median [Q1, Q3] | 0.0146 [0.0126, 0.0217] | 0.00532 [0.00532, 0.00532] | 0.00864 [0.00554, 0.0204] | 0.00997 [0.00584, 0.0204] |
Median [min, max] | 0.0146 [0.0107, 0.0288] | 0.00532 [0.00532, 0.00532] | 0.00864 [0.000567, 0.0368] | 0.00997 [0.000567, 0.0368] |
as.factor(missing_fi) | ||||
0 | 0 (0%) | 0 (0%) | 2 (8.3%) | 2 (7.1%) |
1 | 2 (66.7%) | 1 (100%) | 14 (58.3%) | 17 (60.7%) |
Missing | 1 (33.3%) | 0 (0%) | 8 (33.3%) | 9 (32.1%) |
kruskal.test(FI_final ~ sex, data = fx_prim2)
##
## Kruskal-Wallis rank sum test
##
## data: FI_final by sex
## Kruskal-Wallis chi-squared = 5.0532, df = 2, p-value = 0.07993
kruskal.test(FQ_final ~ sex, data = fx_prim2)
##
## Kruskal-Wallis rank sum test
##
## data: FQ_final by sex
## Kruskal-Wallis chi-squared = 1.8972, df = 2, p-value = 0.3873
Box plots
p1 = ggplot(data = fx_prim2, aes(y = FI_final, x = as.factor(sex), fill = as.factor(sex))) + geom_boxplot() +
geom_jitter(alpha=0.2) + theme_bw() + theme(legend.position="none") +
labs(title = "Fragility index by sex", x = "Sex", y = "Fragility index")
p1
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | placebo, data = fx_prim2, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]"))
Active (N=5) |
Placebo (N=23) |
Overall (N=28) |
|
---|---|---|---|
no_rand | |||
Mean (SD) | 2570 (1400) | 3150 (2610) | 3050 (2430) |
Median [Q1, Q3] | 1650 [1640, 4090] | 2000 [1150, 4760] | 1980 [1320, 4180] |
Median [min, max] | 1650 [1360, 4090] | 2000 [578, 7870] | 1980 [578, 7870] |
active_sample | |||
Mean (SD) | 2240 (1300) | 2680 (2360) | 2600 (2190) |
Median [Q1, Q3] | 1430 [1400, 3640] | 1770 [887, 4530] | 1730 [1010, 3780] |
Median [min, max] | 1430 [1050, 3660] | 1770 [451, 7390] | 1730 [451, 7390] |
n_event | |||
Mean (SD) | 169 (181) | 176 (155) | 175 (156) |
Median [Q1, Q3] | 92.0 [36.0, 221] | 112 [79.0, 227] | 111 [71.3, 225] |
Median [min, max] | 92.0 [34.0, 464] | 112 [37.0, 671] | 111 [34.0, 671] |
FI_final | |||
Mean (SD) | 21.4 (12.9) | 29.9 (41.6) | 28.4 (38.0) |
Median [Q1, Q3] | 15.0 [13.0, 26.0] | 14.0 [9.00, 29.0] | 14.5 [11.0, 27.8] |
Median [min, max] | 15.0 [11.0, 42.0] | 14.0 [1.00, 171] | 14.5 [1.00, 171] |
FQ_final | |||
Mean (SD) | 0.00998 (0.00294) | 0.0146 (0.0118) | 0.0137 (0.0108) |
Median [Q1, Q3] | 0.00928 [0.00770, 0.0115] | 0.0107 [0.00472, 0.0232] | 0.00997 [0.00584, 0.0204] |
Median [min, max] | 0.00928 [0.00714, 0.0143] | 0.0107 [0.000567, 0.0368] | 0.00997 [0.000567, 0.0368] |
as.factor(missing_fi) | |||
0 | 1 (20.0%) | 1 (4.3%) | 2 (7.1%) |
1 | 4 (80.0%) | 13 (56.5%) | 17 (60.7%) |
Missing | 0 (0%) | 9 (39.1%) | 9 (32.1%) |
kruskal.test(FI_final ~ placebo, data = fx_prim2)
##
## Kruskal-Wallis rank sum test
##
## data: FI_final by placebo
## Kruskal-Wallis chi-squared = 0.23136, df = 1, p-value = 0.6305
kruskal.test(FQ_final ~ placebo, data = fx_prim2)
##
## Kruskal-Wallis rank sum test
##
## data: FQ_final by placebo
## Kruskal-Wallis chi-squared = 0.044078, df = 1, p-value = 0.8337
Box plots
p1 = ggplot(data = fx_prim2, aes(y = FI_final, x = as.factor(control), fill = as.factor(control))) + geom_boxplot() +
geom_jitter(alpha=0.2) + theme_bw() + theme(legend.position="none") +
labs(title = "Fragility index by types of control", x = "Types of control", y = "Fragility index")
p1
# Comparison of different P values:
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | p_sig2 , data = ori_st, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]" ))
Highly significant (N=38) |
Significant (N=90) |
Overall (N=128) |
|
---|---|---|---|
no_rand | |||
Mean (SD) | 4180 (2870) | 2510 (1970) | 3010 (2390) |
Median [Q1, Q3] | 4090 [1640, 7180] | 1840 [1200, 3890] | 1960 [1360, 4090] |
Median [min, max] | 4090 [578, 7870] | 1840 [450, 7870] | 1960 [450, 7870] |
active_sample | |||
Mean (SD) | 3710 (2610) | 2180 (1760) | 2630 (2160) |
Median [Q1, Q3] | 3600 [1280, 6620] | 1660 [902, 3100] | 1770 [1050, 3660] |
Median [min, max] | 3600 [451, 7810] | 1660 [339, 6670] | 1770 [339, 7810] |
n_event | |||
Mean (SD) | 211 (201) | 140 (158) | 161 (174) |
Median [Q1, Q3] | 108 [77.5, 298] | 69.5 [44.0, 153] | 84.0 [52.8, 208] |
Median [min, max] | 108 [34.0, 764] | 69.5 [10.0, 691] | 84.0 [10.0, 764] |
FI_final | |||
Mean (SD) | 38.5 (34.8) | 7.01 (5.92) | 16.4 (24.2) |
Median [Q1, Q3] | 26.5 [17.5, 41.5] | 5.00 [3.00, 10.0] | 9.00 [4.00, 18.3] |
Median [min, max] | 26.5 [9.00, 171] | 5.00 [1.00, 29.0] | 9.00 [1.00, 171] |
FQ_final | |||
Mean (SD) | 0.0157 (0.0165) | 0.00456 (0.00404) | 0.00786 (0.0108) |
Median [Q1, Q3] | 0.0104 [0.00655, 0.0191] | 0.00314 [0.00163, 0.00665] | 0.00502 [0.00222, 0.00892] |
Median [min, max] | 0.0104 [0.00230, 0.0966] | 0.00314 [0.000151, 0.0203] | 0.00502 [0.000151, 0.0966] |
as.factor(missing_fi) | |||
0 | 4 (10.5%) | 4 (4.4%) | 8 (6.3%) |
1 | 22 (57.9%) | 55 (61.1%) | 77 (60.2%) |
Missing | 12 (31.6%) | 31 (34.4%) | 43 (33.6%) |
createTable(compareGroups(p_sig2 ~ no_rand + active_sample + n_event + FI_final + FQ_final + missing_fi, data = ori_st, method = c(no_rand = 2, active_sample = 2, n_event = 2, FI_final = 2, FQ_final = 2)))
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning in chisq.test(xx, correct = FALSE): Chi-squared approximation may be
## incorrect
##
## --------Summary descriptives table by 'p_sig2'---------
##
## ___________________________________________________________
## Highly significant Significant p.overall
## N=38 N=90
## ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
## no_rand 4093 [1640;7180] 1836 [1199;3887] 0.006
## active_sample 3596 [1282;6620] 1664 [902;3102] 0.003
## n_event 108 [77.5;298] 69.5 [44.0;152] 0.005
## FI_final 26.5 [17.5;41.5] 5.00 [3.00;10.0] <0.001
## FQ_final 0.01 [0.01;0.02] 0.00 [0.00;0.01] <0.001
## missing_fi: 0.241
## 0 4 (15.4%) 4 (6.78%)
## 1 22 (84.6%) 55 (93.2%)
## ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
# Subset of analyses whose P-value<= 0.001
p_sig2 = subset(ori_st, Pval_screen<=0.001)
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi), data = p_sig2, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]"))
Overall (N=38) |
|
---|---|
no_rand | |
Mean (SD) | 4180 (2870) |
Median [Q1, Q3] | 4090 [1640, 7180] |
Median [min, max] | 4090 [578, 7870] |
active_sample | |
Mean (SD) | 3710 (2610) |
Median [Q1, Q3] | 3600 [1280, 6620] |
Median [min, max] | 3600 [451, 7810] |
n_event | |
Mean (SD) | 211 (201) |
Median [Q1, Q3] | 108 [77.5, 298] |
Median [min, max] | 108 [34.0, 764] |
FI_final | |
Mean (SD) | 38.5 (34.8) |
Median [Q1, Q3] | 26.5 [17.5, 41.5] |
Median [min, max] | 26.5 [9.00, 171] |
FQ_final | |
Mean (SD) | 0.0157 (0.0165) |
Median [Q1, Q3] | 0.0104 [0.00655, 0.0191] |
Median [min, max] | 0.0104 [0.00230, 0.0966] |
as.factor(missing_fi) | |
0 | 4 (10.5%) |
1 | 22 (57.9%) |
Missing | 12 (31.6%) |
Relationship between sample size/active sample/no. events and FI
p = ggplot(data = p_sig2, aes(x = no_rand, y = FI_final))
p1 = p + geom_point() + geom_smooth() + labs(x = "Number of participants at randomisation", y = "Fragility index") + theme_bw()
p0 = ggplot(data = p_sig2, aes(x = active_sample, y = FI_final))
p2 = p0 + geom_point() + geom_smooth() + labs(x = "Number of participants included in the analyses", y = "Fragility index") + theme_bw()
p.0 = ggplot(data = p_sig2, aes(x = n_event, y = FI_final))
p3 = p.0 + geom_point() + geom_smooth() + labs(x = "Number of participants with fracture events", y = "Fragility index") + theme_bw()
#grid.arrange(p1, p2, p3, nrow = 1)
grid.arrange(p1, p3, nrow = 1, top = textGrob("Relationship between Number of participants and Fragility index", gp = gpar(fontsize = 20, font = 3)))
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | as.factor(fx_code1), data = p_sig2, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]"))
Clin_fx (N=2) |
OFx (N=3) |
MOF (N=2) |
NonVert_fx (N=3) |
Vert_fx (N=26) |
ClinVert_fx (N=2) |
Overall (N=38) |
|
---|---|---|---|---|---|---|---|
no_rand | |||||||
Mean (SD) | 7460 (393) | 3400 (1210) | 2870 (1730) | 7370 (321) | 3470 (2850) | 7800 (93.3) | 4180 (2870) |
Median [Q1, Q3] | 7460 [7320, 7600] | 4090 [3050, 4090] | 2870 [2260, 3480] | 7180 [7180, 7460] | 1650 [1360, 7180] | 7800 [7770, 7840] | 4090 [1640, 7180] |
Median [min, max] | 7460 [7180, 7740] | 4090 [2000, 4090] | 2870 [1650, 4090] | 7180 [7180, 7740] | 1650 [578, 7870] | 7800 [7740, 7870] | 4090 [578, 7870] |
active_sample | |||||||
Mean (SD) | 6620 (100) | 3250 (1130) | 2400 (1600) | 6620 (76.9) | 3040 (2570) | 7120 (975) | 3710 (2610) |
Median [Q1, Q3] | 6620 [6580, 6660] | 3840 [2890, 3910] | 2400 [1830, 2970] | 6650 [6590, 6660] | 1440 [1050, 5680] | 7120 [6770, 7460] | 3600 [1280, 6620] |
Median [min, max] | 6620 [6550, 6690] | 3840 [1950, 3980] | 2400 [1270, 3530] | 6650 [6530, 6670] | 1440 [451, 7390] | 7120 [6430, 7810] | 3600 [451, 7810] |
n_event | |||||||
Mean (SD) | 505 (366) | 431 (197) | 200 (220) | 358 (281) | 155 (154) | 112 (12.7) | 211 (201) |
Median [Q1, Q3] | 505 [376, 635] | 323 [318, 491] | 200 [122, 277] | 225 [197, 453] | 96.0 [73.5, 198] | 112 [108, 117] | 108 [77.5, 298] |
Median [min, max] | 505 [246, 764] | 323 [312, 658] | 200 [44.0, 355] | 225 [168, 680] | 96.0 [34.0, 696] | 112 [103, 121] | 108 [34.0, 764] |
FI_final | |||||||
Mean (SD) | 62.5 (37.5) | 42.7 (19.4) | 17.5 (12.0) | 29.0 (12.2) | 38.7 (39.9) | 40.5 (2.12) | 38.5 (34.8) |
Median [Q1, Q3] | 62.5 [49.3, 75.8] | 33.0 [31.5, 49.0] | 17.5 [13.3, 21.8] | 23.0 [22.0, 33.0] | 23.5 [17.0, 40.0] | 40.5 [39.8, 41.3] | 26.5 [17.5, 41.5] |
Median [min, max] | 62.5 [36.0, 89.0] | 33.0 [30.0, 65.0] | 17.5 [9.00, 26.0] | 23.0 [21.0, 43.0] | 23.5 [11.0, 171] | 40.5 [39.0, 42.0] | 26.5 [9.00, 171] |
FQ_final | |||||||
Mean (SD) | 0.00949 (0.00580) | 0.0138 (0.00543) | 0.00723 (0.000175) | 0.00440 (0.00190) | 0.0191 (0.0188) | 0.00576 (0.00109) | 0.0157 (0.0165) |
Median [Q1, Q3] | 0.00949 [0.00743, 0.0115] | 0.0169 [0.0122, 0.0169] | 0.00723 [0.00717, 0.00730] | 0.00346 [0.00330, 0.00502] | 0.0140 [0.00769, 0.0255] | 0.00576 [0.00538, 0.00615] | 0.0104 [0.00655, 0.0191] |
Median [min, max] | 0.00949 [0.00538, 0.0136] | 0.0169 [0.00754, 0.0169] | 0.00723 [0.00711, 0.00736] | 0.00346 [0.00315, 0.00659] | 0.0140 [0.00230, 0.0966] | 0.00576 [0.00499, 0.00653] | 0.0104 [0.00230, 0.0966] |
as.factor(missing_fi) | |||||||
0 | 0 (0%) | 2 (66.7%) | 0 (0%) | 0 (0%) | 2 (7.7%) | 0 (0%) | 4 (10.5%) |
1 | 2 (100%) | 1 (33.3%) | 2 (100%) | 3 (100%) | 13 (50.0%) | 1 (50.0%) | 22 (57.9%) |
Missing | 0 (0%) | 0 (0%) | 0 (0%) | 0 (0%) | 11 (42.3%) | 1 (50.0%) | 12 (31.6%) |
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | as.factor(fx_code2), data = p_sig2, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]"))
Any (N=2) |
Osteoporotic (N=5) |
Non-Vertebrae (N=3) |
Vertebrae (N=26) |
Clinical Vertebrae (N=2) |
Overall (N=38) |
|
---|---|---|---|---|---|---|
no_rand | ||||||
Mean (SD) | 7460 (393) | 3180 (1250) | 7370 (321) | 3470 (2850) | 7800 (93.3) | 4180 (2870) |
Median [Q1, Q3] | 7460 [7320, 7600] | 4090 [2000, 4090] | 7180 [7180, 7460] | 1650 [1360, 7180] | 7800 [7770, 7840] | 4090 [1640, 7180] |
Median [min, max] | 7460 [7180, 7740] | 4090 [1650, 4090] | 7180 [7180, 7740] | 1650 [578, 7870] | 7800 [7740, 7870] | 4090 [578, 7870] |
active_sample | ||||||
Mean (SD) | 6620 (100) | 2910 (1230) | 6620 (76.9) | 3040 (2570) | 7120 (975) | 3710 (2610) |
Median [Q1, Q3] | 6620 [6580, 6660] | 3530 [1950, 3840] | 6650 [6590, 6660] | 1440 [1050, 5680] | 7120 [6770, 7460] | 3600 [1280, 6620] |
Median [min, max] | 6620 [6550, 6690] | 3530 [1270, 3980] | 6650 [6530, 6670] | 1440 [451, 7390] | 7120 [6430, 7810] | 3600 [451, 7810] |
n_event | ||||||
Mean (SD) | 505 (366) | 338 (218) | 358 (281) | 155 (154) | 112 (12.7) | 211 (201) |
Median [Q1, Q3] | 505 [376, 635] | 323 [312, 355] | 225 [197, 453] | 96.0 [73.5, 198] | 112 [108, 117] | 108 [77.5, 298] |
Median [min, max] | 505 [246, 764] | 323 [44.0, 658] | 225 [168, 680] | 96.0 [34.0, 696] | 112 [103, 121] | 108 [34.0, 764] |
FI_final | ||||||
Mean (SD) | 62.5 (37.5) | 32.6 (20.4) | 29.0 (12.2) | 38.7 (39.9) | 40.5 (2.12) | 38.5 (34.8) |
Median [Q1, Q3] | 62.5 [49.3, 75.8] | 30.0 [26.0, 33.0] | 23.0 [22.0, 33.0] | 23.5 [17.0, 40.0] | 40.5 [39.8, 41.3] | 26.5 [17.5, 41.5] |
Median [min, max] | 62.5 [36.0, 89.0] | 30.0 [9.00, 65.0] | 23.0 [21.0, 43.0] | 23.5 [11.0, 171] | 40.5 [39.0, 42.0] | 26.5 [9.00, 171] |
FQ_final | ||||||
Mean (SD) | 0.00949 (0.00580) | 0.0112 (0.00526) | 0.00440 (0.00190) | 0.0191 (0.0188) | 0.00576 (0.00109) | 0.0157 (0.0165) |
Median [Q1, Q3] | 0.00949 [0.00743, 0.0115] | 0.00754 [0.00736, 0.0169] | 0.00346 [0.00330, 0.00502] | 0.0140 [0.00769, 0.0255] | 0.00576 [0.00538, 0.00615] | 0.0104 [0.00655, 0.0191] |
Median [min, max] | 0.00949 [0.00538, 0.0136] | 0.00754 [0.00711, 0.0169] | 0.00346 [0.00315, 0.00659] | 0.0140 [0.00230, 0.0966] | 0.00576 [0.00499, 0.00653] | 0.0104 [0.00230, 0.0966] |
as.factor(missing_fi) | ||||||
0 | 0 (0%) | 2 (40.0%) | 0 (0%) | 2 (7.7%) | 0 (0%) | 4 (10.5%) |
1 | 2 (100%) | 3 (60.0%) | 3 (100%) | 13 (50.0%) | 1 (50.0%) | 22 (57.9%) |
Missing | 0 (0%) | 0 (0%) | 0 (0%) | 11 (42.3%) | 1 (50.0%) | 12 (31.6%) |
kruskal.test(FI_final ~ fx_code2, data = p_sig2)
##
## Kruskal-Wallis rank sum test
##
## data: FI_final by fx_code2
## Kruskal-Wallis chi-squared = 2.897, df = 4, p-value = 0.5752
kruskal.test(FQ_final ~ fx_code2, data = p_sig2)
##
## Kruskal-Wallis rank sum test
##
## data: FQ_final by fx_code2
## Kruskal-Wallis chi-squared = 9.3266, df = 4, p-value = 0.05344
Box plots
p1 = ggplot(data = p_sig2, aes(y = FI_final, x = as.factor(fx_code2), fill = as.factor(fx_code2))) + geom_boxplot() +
geom_jitter(alpha=0.2) + theme_bw() + theme(legend.position="none") +
labs(title = "Fragility index", x = "Fracture sites", y = "Fragility index") + theme(axis.text.x = element_text(angle = 45, hjust = 1))
p2 = ggplot(data = p_sig2, aes(y = FQ_final, x = as.factor(fx_code2), fill = as.factor(fx_code2))) + geom_boxplot() +
geom_jitter(alpha=0.2) + theme_bw() + theme(legend.position="none") +
labs(title = "Fragility quotient", x = "Fracture sites", y = "Fragility quotient") + theme(axis.text.x = element_text(angle = 45, hjust = 1))
grid.arrange(p1, p2, nrow = 1, top = textGrob("Fragility of evidence for anti-fracture efficacy by fracture sites", gp = gpar(fontsize = 20, font = 1)))
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | as.factor(interv_code1), data = p_sig2, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]"))
Alendronate (N=1) |
Ibandronate (N=1) |
Risedronate (N=1) |
Minodronate (N=1) |
Zoledronate (N=6) |
Teriparatide (N=8) |
Abaloparatide (N=2) |
Romosozumab (N=12) |
Denosumab (N=3) |
Strontium_ranelate (N=3) |
Overall (N=38) |
|
---|---|---|---|---|---|---|---|---|---|---|---|
no_rand | |||||||||||
Mean (SD) | NA | NA | NA | NA | 6780 (2340) | 1160 (309) | 1650 (0) | 5890 (1590) | 7870 (0) | 1650 (0) | 4180 (2870) |
Median [Q1, Q3] | 2030 [2030, 2030] | 1960 [1960, 1960] | 1630 [1630, 1630] | 704 [704, 704] | 7740 [7740, 7740] | 1100 [1090, 1360] | 1650 [1650, 1650] | 7180 [4090, 7180] | 7870 [7870, 7870] | 1650 [1650, 1650] | 4090 [1640, 7180] |
Median [min, max] | 2030 [2030, 2030] | 1960 [1960, 1960] | 1630 [1630, 1630] | 704 [704, 704] | 7740 [2000, 7740] | 1100 [578, 1640] | 1650 [1650, 1650] | 7180 [4090, 7180] | 7870 [7870, 7870] | 1650 [1650, 1650] | 4090 [578, 7870] |
active_sample | |||||||||||
Mean (SD) | NA | NA | NA | NA | 5470 (1770) | 941 (271) | 1330 (95.5) | 5460 (1530) | 7530 (240) | 1330 (155) | 3710 (2610) |
Median [Q1, Q3] | 1950 [1950, 1950] | 1950 [1950, 1950] | 1330 [1330, 1330] | 544 [544, 544] | 6050 [5680, 6500] | 892 [882, 1050] | 1330 [1300, 1370] | 6640 [3790, 6660] | 7390 [7390, 7600] | 1390 [1270, 1410] | 3600 [1280, 6620] |
Median [min, max] | 1950 [1950, 1950] | 1950 [1950, 1950] | 1330 [1330, 1330] | 544 [544, 544] | 6050 [1950, 6550] | 892 [451, 1430] | 1330 [1270, 1400] | 6640 [3530, 6910] | 7390 [7390, 7810] | 1390 [1150, 1440] | 3600 [451, 7810] |
n_event | |||||||||||
Mean (SD) | NA | NA | NA | NA | 389 (287) | 67.8 (24.9) | 39.0 (7.07) | 234 (163) | 184 (145) | 404 (284) | 211 (201) |
Median [Q1, Q3] | 223 [223, 223] | 110 [110, 110] | 58.0 [58.0, 58.0] | 100 [100, 100] | 357 [155, 611] | 67.0 [47.5, 87.5] | 39.0 [36.5, 41.5] | 223 [106, 272] | 121 [102, 236] | 387 [258, 542] | 108 [77.5, 298] |
Median [min, max] | 223 [223, 223] | 110 [110, 110] | 58.0 [58.0, 58.0] | 100 [100, 100] | 357 [73.0, 764] | 67.0 [36.0, 100] | 39.0 [34.0, 44.0] | 223 [75.0, 658] | 121 [82.0, 350] | 387 [128, 696] | 108 [34.0, 764] |
FI_final | |||||||||||
Mean (SD) | NA | NA | NA | NA | 69.3 (53.8) | 17.9 (5.00) | 11.0 (2.83) | 35.1 (12.8) | 64.3 (63.9) | 60.7 (46.6) | 38.5 (34.8) |
Median [Q1, Q3] | 40.0 [40.0, 40.0] | 15.0 [15.0, 15.0] | 11.0 [11.0, 11.0] | 20.0 [20.0, 20.0] | 42.5 [39.0, 77.5] | 17.0 [14.5, 22.3] | 11.0 [10.0, 12.0] | 33.0 [25.5, 40.5] | 39.0 [28.0, 88.0] | 52.0 [35.5, 81.5] | 26.5 [17.5, 41.5] |
Median [min, max] | 40.0 [40.0, 40.0] | 15.0 [15.0, 15.0] | 11.0 [11.0, 11.0] | 20.0 [20.0, 20.0] | 42.5 [33.0, 171] | 17.0 [11.0, 25.0] | 11.0 [9.00, 13.0] | 33.0 [21.0, 65.0] | 39.0 [17.0, 137] | 52.0 [19.0, 111] | 26.5 [9.00, 171] |
FQ_final | |||||||||||
Mean (SD) | NA | NA | NA | NA | 0.0134 (0.00928) | 0.0206 (0.00754) | 0.00819 (0.00153) | 0.00732 (0.00436) | 0.00861 (0.00870) | 0.0488 (0.0429) | 0.0157 (0.0165) |
Median [Q1, Q3] | 0.0206 [0.0206, 0.0206] | 0.00768 [0.00768, 0.00768] | 0.00828 [0.00828, 0.00828] | 0.0368 [0.0368, 0.0368] | 0.0101 [0.00661, 0.0161] | 0.0220 [0.0157, 0.0264] | 0.00819 [0.00765, 0.00874] | 0.00594 [0.00383, 0.00853] | 0.00499 [0.00365, 0.0118] | 0.0361 [0.0249, 0.0663] | 0.0104 [0.00655, 0.0191] |
Median [min, max] | 0.0206 [0.0206, 0.0206] | 0.00768 [0.00768, 0.00768] | 0.00828 [0.00828, 0.00828] | 0.0368 [0.0368, 0.0368] | 0.0101 [0.00653, 0.0301] | 0.0220 [0.00770, 0.0288] | 0.00819 [0.00711, 0.00928] | 0.00594 [0.00315, 0.0169] | 0.00499 [0.00230, 0.0185] | 0.0361 [0.0137, 0.0966] | 0.0104 [0.00230, 0.0966] |
as.factor(missing_fi) | |||||||||||
0 | 0 (0%) | 0 (0%) | 0 (0%) | 0 (0%) | 1 (16.7%) | 2 (25.0%) | 0 (0%) | 1 (8.3%) | 0 (0%) | 0 (0%) | 4 (10.5%) |
1 | 1 (100%) | 0 (0%) | 1 (100%) | 1 (100%) | 5 (83.3%) | 1 (12.5%) | 2 (100%) | 11 (91.7%) | 0 (0%) | 0 (0%) | 22 (57.9%) |
Missing | 0 (0%) | 1 (100%) | 0 (0%) | 0 (0%) | 0 (0%) | 5 (62.5%) | 0 (0%) | 0 (0%) | 3 (100%) | 3 (100%) | 12 (31.6%) |
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | as.factor(interv_code2), data = p_sig2, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]"))
Bisphosphonates (N=10) |
PTH analog (N=10) |
Romosozumab (N=12) |
Denosumab (N=3) |
Strontium_ranelate (N=3) |
Overall (N=38) |
|
---|---|---|---|---|---|---|
no_rand | ||||||
Mean (SD) | 4700 (3220) | 1260 (340) | 5890 (1590) | 7870 (0) | 1650 (0) | 4180 (2870) |
Median [Q1, Q3] | 4880 [1970, 7740] | 1230 [1090, 1570] | 7180 [4090, 7180] | 7870 [7870, 7870] | 1650 [1650, 1650] | 4090 [1640, 7180] |
Median [min, max] | 4880 [704, 7740] | 1230 [578, 1650] | 7180 [4090, 7180] | 7870 [7870, 7870] | 1650 [1650, 1650] | 4090 [578, 7870] |
active_sample | ||||||
Mean (SD) | 3860 (2490) | 1020 (292) | 5460 (1530) | 7530 (240) | 1330 (155) | 3710 (2610) |
Median [Q1, Q3] | 3810 [1950, 6240] | 971 [885, 1210] | 6640 [3790, 6660] | 7390 [7390, 7600] | 1390 [1270, 1410] | 3600 [1280, 6620] |
Median [min, max] | 3810 [544, 6550] | 971 [451, 1430] | 6640 [3530, 6910] | 7390 [7390, 7810] | 1390 [1150, 1440] | 3600 [451, 7810] |
n_event | ||||||
Mean (SD) | 283 (258) | 62.0 (25.2) | 234 (163) | 184 (145) | 404 (284) | 211 (201) |
Median [Q1, Q3] | 167 [101, 380] | 49.5 [44.5, 85.3] | 223 [106, 272] | 121 [102, 236] | 387 [258, 542] | 108 [77.5, 298] |
Median [min, max] | 167 [58.0, 764] | 49.5 [34.0, 100] | 223 [75.0, 658] | 121 [82.0, 350] | 387 [128, 696] | 108 [34.0, 764] |
FI_final | ||||||
Mean (SD) | 50.2 (47.7) | 16.5 (5.36) | 35.1 (12.8) | 64.3 (63.9) | 60.7 (46.6) | 38.5 (34.8) |
Median [Q1, Q3] | 39.0 [23.3, 42.8] | 16.0 [13.0, 20.8] | 33.0 [25.5, 40.5] | 39.0 [28.0, 88.0] | 52.0 [35.5, 81.5] | 26.5 [17.5, 41.5] |
Median [min, max] | 39.0 [11.0, 171] | 16.0 [9.00, 25.0] | 33.0 [21.0, 65.0] | 39.0 [17.0, 137] | 52.0 [19.0, 111] | 26.5 [9.00, 171] |
FQ_final | ||||||
Mean (SD) | 0.0154 (0.0108) | 0.0181 (0.00849) | 0.00732 (0.00436) | 0.00861 (0.00870) | 0.0488 (0.0429) | 0.0157 (0.0165) |
Median [Q1, Q3] | 0.0109 [0.00694, 0.0197] | 0.0177 [0.0105, 0.0255] | 0.00594 [0.00383, 0.00853] | 0.00499 [0.00365, 0.0118] | 0.0361 [0.0249, 0.0663] | 0.0104 [0.00655, 0.0191] |
Median [min, max] | 0.0109 [0.00653, 0.0368] | 0.0177 [0.00711, 0.0288] | 0.00594 [0.00315, 0.0169] | 0.00499 [0.00230, 0.0185] | 0.0361 [0.0137, 0.0966] | 0.0104 [0.00230, 0.0966] |
as.factor(missing_fi) | ||||||
0 | 1 (10.0%) | 2 (20.0%) | 1 (8.3%) | 0 (0%) | 0 (0%) | 4 (10.5%) |
1 | 8 (80.0%) | 3 (30.0%) | 11 (91.7%) | 0 (0%) | 0 (0%) | 22 (57.9%) |
Missing | 1 (10.0%) | 5 (50.0%) | 0 (0%) | 3 (100%) | 3 (100%) | 12 (31.6%) |
kruskal.test(FI_final ~ interv_code2, data = p_sig2)
##
## Kruskal-Wallis rank sum test
##
## data: FI_final by interv_code2
## Kruskal-Wallis chi-squared = 13.737, df = 4, p-value = 0.008185
kruskal.test(FQ_final ~ interv_code2, data = p_sig2)
##
## Kruskal-Wallis rank sum test
##
## data: FQ_final by interv_code2
## Kruskal-Wallis chi-squared = 15.78, df = 4, p-value = 0.003329
Box plots
p1 = ggplot(data = p_sig2, aes(y = FI_final, x = as.factor(interv_code2), fill = as.factor(interv_code2))) + geom_boxplot() +
geom_jitter(alpha=0.2) + theme_bw() + theme(legend.position="none") +
labs(title = "Fragility index", x = "Pharmacological interventions", y = "Fragility index") + theme(axis.text.x = element_text(angle = 45, hjust = 1))
p2 = ggplot(data = p_sig2, aes(y = FQ_final, x = as.factor(interv_code2), fill = as.factor(interv_code2))) + geom_boxplot() +
geom_jitter(alpha=0.2) + theme_bw() + theme(legend.position="none") +
labs(title = "Fragility quotient", x = "Pharmacological interventions", y = "Fragility quotine") + theme(axis.text.x = element_text(angle = 45, hjust = 1))
grid.arrange(p1, p2, nrow = 1, top = textGrob("Fragility of evidence for anti-fracture efficacy by intervention sites", gp = gpar(fontsize = 20, font = 1)))
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | as.factor(timing), data = p_sig2, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]" ))
2 (N=5) |
3 (N=4) |
4 (N=17) |
5 (N=10) |
6 (N=1) |
8 (N=1) |
Overall (N=38) |
|
---|---|---|---|---|---|---|---|
no_rand | |||||||
Mean (SD) | 4350 (2770) | 1380 (533) | 3650 (2640) | 6590 (2520) | NA | NA | 4180 (2870) |
Median [Q1, Q3] | 4090 [1650, 7180] | 1640 [1370, 1650] | 4090 [1100, 7180] | 7740 [7740, 7840] | 1650 [1650, 1650] | 2000 [2000, 2000] | 4090 [1640, 7180] |
Median [min, max] | 4090 [1630, 7180] | 1640 [578, 1650] | 4090 [704, 7180] | 7740 [1650, 7870] | 1650 [1650, 1650] | 2000 [2000, 2000] | 4090 [578, 7870] |
active_sample | |||||||
Mean (SD) | 4050 (2710) | 1140 (462) | 3300 (2500) | 5680 (2220) | NA | NA | 3710 (2610) |
Median [Q1, Q3] | 3980 [1390, 6640] | 1330 [1060, 1410] | 3530 [892, 6650] | 6480 [5680, 7180] | 1150 [1150, 1150] | 1950 [1950, 1950] | 3600 [1280, 6620] |
Median [min, max] | 3980 [1330, 6910] | 1330 [451, 1430] | 3530 [544, 6690] | 6480 [1440, 7810] | 1150 [1150, 1150] | 1950 [1950, 1950] | 3600 [451, 7810] |
n_event | |||||||
Mean (SD) | 132 (110) | 40.5 (6.61) | 184 (150) | 307 (255) | NA | NA | 211 (201) |
Median [Q1, Q3] | 76.0 [75.0, 128] | 40.0 [35.5, 45.0] | 106 [92.0, 225] | 236 [105, 398] | 696 [696, 696] | 312 [312, 312] | 108 [77.5, 298] |
Median [min, max] | 76.0 [58.0, 323] | 40.0 [34.0, 48.0] | 106 [46.0, 658] | 236 [73.0, 764] | 696 [696, 696] | 312 [312, 312] | 108 [34.0, 764] |
FI_final | |||||||
Mean (SD) | 22.2 (7.46) | 11.5 (1.91) | 30.5 (13.6) | 64.3 (52.0) | NA | NA | 38.5 (34.8) |
Median [Q1, Q3] | 24.0 [19.0, 27.0] | 12.0 [10.5, 13.0] | 25.0 [21.0, 40.0] | 42.5 [38.3, 79.8] | 111 [111, 111] | 33.0 [33.0, 33.0] | 26.5 [17.5, 41.5] |
Median [min, max] | 24.0 [11.0, 30.0] | 12.0 [9.00, 13.0] | 25.0 [15.0, 65.0] | 42.5 [15.0, 171] | 111 [111, 111] | 33.0 [33.0, 33.0] | 26.5 [9.00, 171] |
FQ_final | |||||||
Mean (SD) | 0.00741 (0.00410) | 0.0132 (0.0104) | 0.0152 (0.00975) | 0.0133 (0.0115) | NA | NA | 0.0157 (0.0165) |
Median [Q1, Q3] | 0.00754 [0.00391, 0.00828] | 0.00849 [0.00755, 0.0142] | 0.0143 [0.00601, 0.0206] | 0.00719 [0.00655, 0.0173] | 0.0966 [0.0966, 0.0966] | 0.0169 [0.0169, 0.0169] | 0.0104 [0.00655, 0.0191] |
Median [min, max] | 0.00754 [0.00361, 0.0137] | 0.00849 [0.00711, 0.0288] | 0.0143 [0.00315, 0.0368] | 0.00719 [0.00230, 0.0361] | 0.0966 [0.0966, 0.0966] | 0.0169 [0.0169, 0.0169] | 0.0104 [0.00230, 0.0966] |
as.factor(missing_fi) | |||||||
0 | 1 (20.0%) | 0 (0%) | 2 (11.8%) | 0 (0%) | 0 (0%) | 1 (100%) | 4 (10.5%) |
1 | 3 (60.0%) | 3 (75.0%) | 11 (64.7%) | 5 (50.0%) | 0 (0%) | 0 (0%) | 22 (57.9%) |
Missing | 1 (20.0%) | 1 (25.0%) | 4 (23.5%) | 5 (50.0%) | 1 (100%) | 0 (0%) | 12 (31.6%) |
kruskal.test(FI_final ~ timing, data = p_sig2)
##
## Kruskal-Wallis rank sum test
##
## data: FI_final by timing
## Kruskal-Wallis chi-squared = 16.429, df = 5, p-value = 0.00572
kruskal.test(FQ_final ~ timing, data = p_sig2)
##
## Kruskal-Wallis rank sum test
##
## data: FQ_final by timing
## Kruskal-Wallis chi-squared = 5.4313, df = 5, p-value = 0.3655
Box plots
p1 = ggplot(data = p_sig2, aes(y = FI_final, x = as.factor(timing), fill = as.factor(timing))) + geom_boxplot() +
geom_jitter(alpha=0.2) + theme_bw() + theme(legend.position="none") +
labs(title = "Fragility index by timing of fracture assessment", x = "Timing of fracture assessment", y = "Fragility index")
p1
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | as.factor(journal_code2), data = p_sig2, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]" ))
NEJM (N=27) |
Lancet (N=3) |
JAMA (N=4) |
JBMR (N=1) |
JCEM (N=1) |
Other (N=2) |
Overall (N=38) |
|
---|---|---|---|---|---|---|---|
no_rand | |||||||
Mean (SD) | 5280 (2700) | 1580 (385) | 1640 (8.02) | NA | NA | 1180 (668) | 4180 (2870) |
Median [Q1, Q3] | 7180 [3050, 7740] | 1360 [1360, 1690] | 1640 [1640, 1650] | 1960 [1960, 1960] | 578 [578, 578] | 1180 [940, 1410] | 4090 [1640, 7180] |
Median [min, max] | 7180 [1090, 7870] | 1360 [1360, 2030] | 1640 [1630, 1650] | 1960 [1960, 1960] | 578 [578, 578] | 1180 [704, 1650] | 4090 [578, 7870] |
active_sample | |||||||
Mean (SD) | 4720 (2450) | 1350 (518) | 1360 (73.1) | NA | NA | 847 (428) | 3710 (2610) |
Median [Q1, Q3] | 5680 [2740, 6650] | 1050 [1050, 1500] | 1370 [1310, 1410] | 1950 [1950, 1950] | 451 [451, 451] | 847 [695, 998] | 3600 [1280, 6620] |
Median [min, max] | 5680 [882, 7810] | 1050 [1050, 1950] | 1370 [1270, 1430] | 1950 [1950, 1950] | 451 [451, 451] | 847 [544, 1150] | 3600 [451, 7810] |
n_event | |||||||
Mean (SD) | 240 (200) | 138 (73.4) | 43.0 (10.9) | NA | NA | 398 (421) | 211 (201) |
Median [Q1, Q3] | 168 [84.5, 337] | 100 [96.0, 162] | 40.0 [35.5, 47.5] | 110 [110, 110] | 48.0 [48.0, 48.0] | 398 [249, 547] | 108 [77.5, 298] |
Median [min, max] | 168 [46.0, 764] | 100 [92.0, 223] | 40.0 [34.0, 58.0] | 110 [110, 110] | 48.0 [48.0, 48.0] | 398 [100, 696] | 108 [34.0, 764] |
FI_final | |||||||
Mean (SD) | 44.0 (35.7) | 24.0 (13.9) | 11.0 (1.63) | NA | NA | 65.5 (64.3) | 38.5 (34.8) |
Median [Q1, Q3] | 36.0 [23.5, 42.5] | 17.0 [16.0, 28.5] | 11.0 [10.5, 11.5] | 15.0 [15.0, 15.0] | 13.0 [13.0, 13.0] | 65.5 [42.8, 88.3] | 26.5 [17.5, 41.5] |
Median [min, max] | 36.0 [17.0, 171] | 17.0 [15.0, 40.0] | 11.0 [9.00, 13.0] | 15.0 [15.0, 15.0] | 13.0 [13.0, 13.0] | 65.5 [20.0, 111] | 26.5 [9.00, 171] |
FQ_final | |||||||
Mean (SD) | 0.0127 (0.00949) | 0.0170 (0.00321) | 0.00809 (0.000924) | NA | NA | 0.0667 (0.0423) | 0.0157 (0.0165) |
Median [Q1, Q3] | 0.00754 [0.00562, 0.0177] | 0.0162 [0.0153, 0.0184] | 0.00799 [0.00755, 0.00853] | 0.00768 [0.00768, 0.00768] | 0.0288 [0.0288, 0.0288] | 0.0667 [0.0517, 0.0816] | 0.0104 [0.00655, 0.0191] |
Median [min, max] | 0.00754 [0.00230, 0.0361] | 0.0162 [0.0143, 0.0206] | 0.00799 [0.00711, 0.00928] | 0.00768 [0.00768, 0.00768] | 0.0288 [0.0288, 0.0288] | 0.0667 [0.0368, 0.0966] | 0.0104 [0.00230, 0.0966] |
as.factor(missing_fi) | |||||||
0 | 2 (7.4%) | 2 (66.7%) | 0 (0%) | 0 (0%) | 0 (0%) | 0 (0%) | 4 (10.5%) |
1 | 16 (59.3%) | 1 (33.3%) | 4 (100%) | 0 (0%) | 0 (0%) | 1 (50.0%) | 22 (57.9%) |
Missing | 9 (33.3%) | 0 (0%) | 0 (0%) | 1 (100%) | 1 (100%) | 1 (50.0%) | 12 (31.6%) |
kruskal.test(FI_final ~ journal, data = p_sig2)
##
## Kruskal-Wallis rank sum test
##
## data: FI_final by journal
## Kruskal-Wallis chi-squared = 16.53, df = 5, p-value = 0.005483
kruskal.test(FQ_final ~ journal, data = p_sig2)
##
## Kruskal-Wallis rank sum test
##
## data: FQ_final by journal
## Kruskal-Wallis chi-squared = 9.3851, df = 5, p-value = 0.09465
Box plots
p1 = ggplot(data = p_sig2, aes(y = FI_final, x = as.factor(timing), fill = as.factor(journal_code2))) + geom_boxplot() +
geom_jitter(alpha=0.2) + theme_bw() + theme(legend.position="none") +
labs(title = "Fragility index by timing of fracture assessment", x = "Timing of fracture assessment", y = "Fragility index")
p1
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | sex, data = p_sig2, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]" ))
Both (N=1) |
Women (N=37) |
Overall (N=38) |
|
---|---|---|---|
no_rand | |||
Mean (SD) | NA | 4280 (2850) | 4180 (2870) |
Median [Q1, Q3] | 578 [578, 578] | 4090 [1650, 7180] | 4090 [1640, 7180] |
Median [min, max] | 578 [578, 578] | 4090 [704, 7870] | 4090 [578, 7870] |
active_sample | |||
Mean (SD) | NA | 3800 (2590) | 3710 (2610) |
Median [Q1, Q3] | 451 [451, 451] | 3660 [1330, 6640] | 3600 [1280, 6620] |
Median [min, max] | 451 [451, 451] | 3660 [544, 7810] | 3600 [451, 7810] |
n_event | |||
Mean (SD) | NA | 216 (202) | 211 (201) |
Median [Q1, Q3] | 48.0 [48.0, 48.0] | 110 [82.0, 312] | 108 [77.5, 298] |
Median [min, max] | 48.0 [48.0, 48.0] | 110 [34.0, 764] | 108 [34.0, 764] |
FI_final | |||
Mean (SD) | NA | 39.2 (35.0) | 38.5 (34.8) |
Median [Q1, Q3] | 13.0 [13.0, 13.0] | 27.0 [19.0, 42.0] | 26.5 [17.5, 41.5] |
Median [min, max] | 13.0 [13.0, 13.0] | 27.0 [9.00, 171] | 26.5 [9.00, 171] |
FQ_final | |||
Mean (SD) | NA | 0.0153 (0.0166) | 0.0157 (0.0165) |
Median [Q1, Q3] | 0.0288 [0.0288, 0.0288] | 0.00928 [0.00653, 0.0185] | 0.0104 [0.00655, 0.0191] |
Median [min, max] | 0.0288 [0.0288, 0.0288] | 0.00928 [0.00230, 0.0966] | 0.0104 [0.00230, 0.0966] |
as.factor(missing_fi) | |||
0 | 0 (0%) | 4 (10.8%) | 4 (10.5%) |
1 | 0 (0%) | 22 (59.5%) | 22 (57.9%) |
Missing | 1 (100%) | 11 (29.7%) | 12 (31.6%) |
kruskal.test(FI_final ~ sex, data = p_sig2)
##
## Kruskal-Wallis rank sum test
##
## data: FI_final by sex
## Kruskal-Wallis chi-squared = 1.8734, df = 1, p-value = 0.1711
kruskal.test(FQ_final ~ sex, data = p_sig2)
##
## Kruskal-Wallis rank sum test
##
## data: FQ_final by sex
## Kruskal-Wallis chi-squared = 1.7484, df = 1, p-value = 0.1861
Box plots
p1 = ggplot(data = p_sig2, aes(y = FI_final, x = as.factor(sex), fill = as.factor(sex))) + geom_boxplot() +
geom_jitter(alpha=0.2) + theme_bw() + theme(legend.position="none") +
labs(title = "Fragility index by sex", x = "Sex", y = "Fragility index")
p1
table1(~ no_rand + active_sample + n_event + FI_final + FQ_final + as.factor(missing_fi) | placebo, data = p_sig2, render.continuous = c(. = "Mean (SD)", . = "Median [Q1, Q3]", . = "Median [min, max]" ))
Active (N=10) |
Placebo (N=28) |
Overall (N=38) |
|
---|---|---|---|
no_rand | |||
Mean (SD) | 2810 (1350) | 4670 (3120) | 4180 (2870) |
Median [Q1, Q3] | 2870 [1640, 4090] | 7180 [1640, 7740] | 4090 [1640, 7180] |
Median [min, max] | 2870 [1360, 4090] | 7180 [578, 7870] | 4090 [578, 7870] |
active_sample | |||
Mean (SD) | 2490 (1330) | 4140 (2830) | 3710 (2610) |
Median [Q1, Q3] | 2480 [1300, 3660] | 5680 [1280, 6650] | 3600 [1280, 6620] |
Median [min, max] | 2480 [1050, 3980] | 5680 [451, 7810] | 3600 [451, 7810] |
n_event | |||
Mean (SD) | 212 (198) | 211 (205) | 211 (201) |
Median [Q1, Q3] | 161 [56.0, 306] | 108 [80.5, 263] | 108 [77.5, 298] |
Median [min, max] | 161 [34.0, 658] | 108 [46.0, 764] | 108 [34.0, 764] |
FI_final | |||
Mean (SD) | 27.6 (18.7) | 42.4 (38.5) | 38.5 (34.8) |
Median [Q1, Q3] | 21.5 [13.5, 39.0] | 30.0 [20.8, 40.5] | 26.5 [17.5, 41.5] |
Median [min, max] | 21.5 [9.00, 65.0] | 30.0 [11.0, 171] | 26.5 [9.00, 171] |
FQ_final | |||
Mean (SD) | 0.0111 (0.00383) | 0.0173 (0.0189) | 0.0157 (0.0165) |
Median [Q1, Q3] | 0.0104 [0.00758, 0.0140] | 0.0109 [0.00574, 0.0249] | 0.0104 [0.00655, 0.0191] |
Median [min, max] | 0.0104 [0.00711, 0.0169] | 0.0109 [0.00230, 0.0966] | 0.0104 [0.00230, 0.0966] |
as.factor(missing_fi) | |||
0 | 3 (30.0%) | 1 (3.6%) | 4 (10.5%) |
1 | 7 (70.0%) | 15 (53.6%) | 22 (57.9%) |
Missing | 0 (0%) | 12 (42.9%) | 12 (31.6%) |
kruskal.test(FI_final ~ placebo, data = p_sig2)
##
## Kruskal-Wallis rank sum test
##
## data: FI_final by placebo
## Kruskal-Wallis chi-squared = 1.4259, df = 1, p-value = 0.2324
kruskal.test(FQ_final ~ placebo, data = p_sig2)
##
## Kruskal-Wallis rank sum test
##
## data: FQ_final by placebo
## Kruskal-Wallis chi-squared = 0.0010989, df = 1, p-value = 0.9736
Box plots
p1 = ggplot(data = p_sig2, aes(y = FI_final, x = as.factor(control), fill = as.factor(control))) + geom_boxplot() +
geom_jitter(alpha=0.2) + theme_bw() + theme(legend.position="none") +
labs(title = "Fragility index by types of control", x = "Types of control", y = "Fragility index")
p1