OSCR

Strenuous physical activity is associated with a younger age of amyotrophic lateral sclerosis onset in two independent cohorts.

Code ↔ Paper

6 matches between paragraphs of the paper and lines of its authors' code, computed by the harvester (lexical-v1). Click a colored paragraph or line to see its counterpart.

The 6 matches
  1. [1] § Materials and methods › Logistic regression ↔ MND Register and Case Control Analysis Script.R, lines 246–333 · score 0.94 · binomial logistic regression, Hosmer Lemeshow, Box Tidwell, quasi complete separation, detect_separation, goodness
  2. [2] § Materials and methods › Statistical analysis ↔ Post-Mortem Cohort Analysis Script.R, lines 42–94 · score 0.73 · Kruskal Wallis, post hoc, disease duration, Tukey, Levene, Shapiro
  3. [3] § Materials and methods › Statistical analysis ↔ Post-Mortem Cohort Analysis Script.R, lines 42–94 · score 0.68 · eta squared, Kruskal Wallis, way ANOVA
  4. [4] § Materials and methods › Logistic regression ↔ MND Register and Case Control Analysis Script.R, lines 246–333 · score 0.67 · Binomial logistic regression, disease status, MND Register, yes, female, highly active
  5. [5] § Materials and methods › Statistical analysis ↔ MND Register and Case Control Analysis Script.R, lines 53–105 · score 0.66 · Kruskal Wallis, post hoc, Levene, Shapiro, Dunn, variance
  6. [6] § Results › Age at symptom onset is decreased in highly active individuals with ALS ↔ Post-Mortem Cohort Analysis Script.R, lines 1–40 · score 0.53 · post hoc, post mortem cohort, adj, Cramer, Fisher, Bonferroni

Paper

Loaded from Europe PMC by your browser, not stored by OSCR: doi.org · Europe PMC

The paper is loaded when this pane is shown.

The authors' code

R · 333 lines · 15 KB · CC-BY-4.0 · 3 matches

  1. install.packages("rstatix")
  2. install.packages("tidyverse")
  3. install.packages("dplyr")
  4. install.packages("ggplot2")
  5. install.packages("effectsize")
  6. install.packages("vcd")
  7. install.packages("rcompanion")
  8. install.packages("survival")
  9. install.packages("survminer")
  10. install.packages("car")
  11. install.packages("glmtoolbox")
  12. install.packages("pscl")
  13. install.packages("pROC")
  14. install.packages("broom")
  15. install.packages("detectseparation")
  16. library(rstatix)
  17. library(tidyverse)
  18. library(dplyr)
  19. library(ggplot2)
  20. library(effectsize)
  21. library(vcd)
  22. library(rcompanion)
  23. library(survival)
  24. library(survminer)
  25. library(car)
  26. library(glmtoolbox)
  27. library(pscl)
  28. library(pROC)
  29. library(broom)
  30. library(detectseparation)
  31. #Demographics, Categorical Variables
  32. gender_table <- data.frame("male" = c(27, 63, 9), "female" = c(9, 44, 14), row.names = c("Highly Active", "Active", "Inactive"))
  33. chi_result_gender <- chisq.test(gender_table)
  34. print(chi_result_gender)
  35. cramers_v(gender_table, ci = 0.95) #Effect size
  36. gender_data <- matrix(c(27,9,
  37. 63,44,
  38. 9,14),
  39. nrow = 3, byrow = TRUE)
  40. dimnames(gender_data) <- list(Group = c("A", "B","C"), Outcome = c("X", "Y"))
  41. chisq.test(gender_data)
  42. pairwiseNominalIndependence(gender_data, fisher = FALSE, gtest = FALSE, chisq = TRUE, method = "fdr")
  43. onset_table <- data.frame("limbic" = c(29, 82, 14), "bulbar" = c(7, 20, 9), "unknown" = c(0, 5, 0), row.names = c("Highly Active", "Active", "Inactive"))
  44. fisher_result_onset <- fisher.test(onset_table)
  45. print(fisher_result_onset)
  46. cramers_v(onset_table, ci = 0.95) #Effect size
  47. #Demographics, Continuous Variables
  48. MND_Register_Data_FINAL_Feb_25_AOforSurvAna %>% mutate(
  49. AGEONSET = as.factor(AGEONSET),
  50. LPA_LEVEL_GROUP = as.factor(LPA_LEVEL_GROUP),
  51. C9STATUS = as.factor(C9STATUS)
  52. ) #Set variables as factor
  53. MND_Register_Data_FINAL_Feb_25_AOforSurvAna %>%
  54. group_by(LPA_LEVEL_GROUP) %>%
  55. shapiro_test(AGEONSET) #Test Normality
  56. MND_Register_Data_FINAL_Feb_25_AOforSurvAna %>%
  57. levene_test(AGEONSET ~ LPA_LEVEL_GROUP) #Test equal variance
  58. MND_Register_Data_FINAL_Feb_25_AOforSurvAna %>%
  59. group_by(LPA_LEVEL_GROUP) %>%
  60. get_summary_stats(AGEONSET, type = "mean_sd")
  61. MND_Register_Data_FINAL_Feb_25_AOforSurvAna %>%
  62. group_by(LPA_LEVEL_GROUP) %>%
  63. get_summary_stats(AGEONSET, type = "median_iqr")
  64. kruskal_result_ageonset <- kruskal_test(MND_Register_Data_FINAL_Feb_25_AOforSurvAna, AGEONSET ~ LPA_LEVEL_GROUP)
  65. print(kruskal_result_ageonset)
  66. MND_Register_Data_FINAL_Feb_25_AOforSurvAna %>%
  67. kruskal_effsize(AGEONSET ~ LPA_LEVEL_GROUP, ci = TRUE) #Kruskal-Wallis Test
  68. MND_Register_Data_FINAL_Feb_25_AOforSurvAna %>%
  69. dunn_test(AGEONSET ~ LPA_LEVEL_GROUP, p.adjust.method = "bonferroni") #Dunn Bonferroni Post-Hoc
  70. #Cox Proportional Hazard regression, Age Onset
  71. #Set variables as factor and set level
  72. MND_Register_Data_FINAL_Feb_25_AOforSurvAna$C9STATUS <- factor(
  73. MND_Register_Data_FINAL_Feb_25_AOforSurvAna$C9STATUS,
  74. levels = c("normal", "expanded", "not tested"))
  75. MND_Register_Data_FINAL_Feb_25_AOforSurvAna$LPA_LEVEL_GROUP <- factor(
  76. MND_Register_Data_FINAL_Feb_25_AOforSurvAna$LPA_LEVEL_GROUP,
  77. levels = c("Not Active", "Active", "Highly Active"))
  78. MND_Register_Data_FINAL_Feb_25_AOforSurvAna$GENDER <- factor(
  79. MND_Register_Data_FINAL_Feb_25_AOforSurvAna$GENDER,
  80. levels = c("Female", "Male"))
  81. MND_Register_Data_FINAL_Feb_25_AOforSurvAna$SITEONSET <- factor(
  82. MND_Register_Data_FINAL_Feb_25_AOforSurvAna$SITEONSET,
  83. levels = c("Limb", "Bulbar", "Unknown"))
  84. MND_Register_Data_FINAL_Feb_25_AOforSurvAna$HEADINJURY <- factor(
  85. MND_Register_Data_FINAL_Feb_25_AOforSurvAna$HEADINJURY,
  86. levels = c("No", "Yes"))
  87. #Cox models - Age Onset
  88. #Age Onset - by group
  89. cox_model_ao <- coxph(
  90. Surv(AGEONSET, EVENT) ~ LPA_LEVEL_GROUP + GENDER + C9STATUS + HEADINJURY,
  91. data = MND_Register_Data_FINAL_Feb_25_AOforSurvAna)
  92. summary(cox_model_ao)
  93. cox.zph(cox_model_ao) #Test proportional hazard assumption
  94. #Plot cumulative hazard
  95. plot_data_cox_model_ao <- with(MND_Register_Data_FINAL_Feb_25_AOforSurvAna,
  96. data.frame(LPA_LEVEL_GROUP=levels(LPA_LEVEL_GROUP),
  97. GENDER = levels(GENDER)[1],
  98. C9STATUS = levels(C9STATUS)[1],
  99. HEADINJURY = levels(HEADINJURY)[1]))
  100. fit_ao <- survfit(cox_model_ao, plot_data_cox_model_ao)
  101. cox_model_ao_ggplot <- ggsurvplot(fit_ao, data = plot_data_cox_model_ao,
  102. legend.labs = c("Inactive", "Active", "Highly Active"),
  103. xlab = "Age at Symptom Onset (Years)",
  104. fun = "cumhaz",
  105. ylab = "Cumulative Hazard",
  106. xlim = c(50,90), break.time.by = 10,
  107. ylim = c(0,10),
  108. risk.table = FALSE, conf.int = FALSE,
  109. legend.title = "LPA Group",
  110. palette = c("#0072B2", "#E69F00", "#009E73"), #colourblind friendly
  111. ggtheme = theme_survminer())
  112. cox_model_ao_ggplot
  113. #Age Onset - by score
  114. cox_model_ao_LPAScore <- coxph(
  115. Surv(AGEONSET, EVENT) ~ LPA_SCORE + GENDER + C9STATUS + HEADINJURY,
  116. data = MND_Register_Data_FINAL_Feb_25_AOforSurvAna)
  117. summary(cox_model_ao_LPAScore)
  118. cox.zph(cox_model_ao_LPAScore) #Test proportional hazard assumption
  119. #Checking for multicolinearity
  120. multico_check_ao <- lm(
  121. AGEONSET ~ LPA_LEVEL_GROUP + GENDER + SITEONSET + C9STATUS + HEADINJURY,
  122. data = MND_Register_Data_FINAL_Feb_25_AOforSurvAna)
  123. vif(multico_check_ao)
  124. #Cox Proportional Hazard regression, Survival
  125. #Set variables as factor and set level
  126. MND_Register_Data_FINAL_Feb_25_DDforSurvAna$C9STATUS <- factor(
  127. MND_Register_Data_FINAL_Feb_25_DDforSurvAna$C9STATUS,
  128. levels = c("normal", "expanded", "not tested"))
  129. MND_Register_Data_FINAL_Feb_25_DDforSurvAna$LPA_LEVEL_GROUP <- factor(
  130. MND_Register_Data_FINAL_Feb_25_DDforSurvAna$LPA_LEVEL_GROUP,
  131. levels = c("Not Active", "Active", "Highly Active"))
  132. MND_Register_Data_FINAL_Feb_25_DDforSurvAna$GENDER <- factor(
  133. MND_Register_Data_FINAL_Feb_25_DDforSurvAna$GENDER,
  134. levels = c("Female", "Male"))
  135. MND_Register_Data_FINAL_Feb_25_DDforSurvAna$SITEONSET <- factor(
  136. MND_Register_Data_FINAL_Feb_25_DDforSurvAna$SITEONSET,
  137. levels = c("Limb", "Bulbar", "Unknown"))
  138. MND_Register_Data_FINAL_Feb_25_DDforSurvAna$HEADINJURY <- factor(
  139. MND_Register_Data_FINAL_Feb_25_DDforSurvAna$HEADINJURY,
  140. levels = c("No", "Yes"))
  141. #Cox models - Survival
  142. #Survival - by group
  143. cox_model_dd <- coxph(
  144. Surv(TIMEDEATH_OR_LASTCHECK, SURVIVALSTATUS_NUM) ~ LPA_LEVEL_GROUP + GENDER + SITEONSET + C9STATUS + HEADINJURY + AGEONSET,
  145. data = MND_Register_Data_FINAL_Feb_25_DDforSurvAna)
  146. summary(cox_model_dd)
  147. cox.zph(cox_model_dd) #Test proportional hazard assumption
  148. #Plot cumulative survival
  149. plot_data_cox_model_dd <- with(MND_Register_Data_FINAL_Feb_25_DDforSurvAna,
  150. data.frame(LPA_LEVEL_GROUP=levels(LPA_LEVEL_GROUP),
  151. GENDER = levels(GENDER)[1],
  152. SITEONSET = levels(SITEONSET)[1],
  153. C9STATUS = levels(C9STATUS)[1],
  154. HEADINJURY = levels(HEADINJURY)[1],
  155. AGEONSET = mean(AGEONSET, na.rm = TRUE)))
  156. fit_dd <- survfit(cox_model_dd, plot_data_cox_model_dd)
  157. cox_model_dd_ggplot <- ggsurvplot(fit_dd, data = plot_data_cox_model_dd,
  158. legend.labs = c("Inactive", "Active", "Highly Active"),
  159. xlab = "Disease Duration (Years)",
  160. ylab = "Survival Probability",
  161. xlim = c(0,10), break.time.by = 2.5,
  162. ylim = c(0,1),
  163. risk.table = FALSE, conf.int = FALSE,
  164. legend.title = "LPA Group",
  165. palette = c("#0072B2", "#E69F00", "#009E73"), #colourblind friendly
  166. censor = FALSE,
  167. ggtheme = theme_survminer())
  168. cox_model_dd_ggplot
  169. #Survival - by score
  170. cox_model_dd_LPAScore <- coxph(
  171. Surv(TIMEDEATH_OR_LASTCHECK, SURVIVALSTATUS_NUM) ~ LPA_SCORE + GENDER + SITEONSET + C9STATUS + HEADINJURY + AGEONSET,
  172. data = MND_Register_Data_FINAL_Feb_25_DDforSurvAna)
  173. summary(cox_model_dd_LPAScore)
  174. cox.zph(cox_model_dd_LPAScore) #Test proportional hazard assumption
  175. #Checking for multicolinearity
  176. multico_check_dd <- lm(
  177. TIMEDEATH_OR_LASTCHECK ~ LPA_LEVEL_GROUP + GENDER + SITEONSET + C9STATUS + HEADINJURY + AGEONSET,
  178. data = MND_Register_Data_FINAL_Feb_25_DDforSurvAna)
  179. vif(multico_check_dd)
  180. #Linear Regression, Age Onset
  181. #Age onset - by group
  182. lm_ao <- lm(formula = AGEONSET ~ LPA_LEVEL_GROUP + HEADINJURY + C9STATUS + GENDER,
  183. data = MND_Register_Data_FINAL_Feb_25_AOforSurvAna)
  184. summary(lm_ao)
  185. #Age onset - by score
  186. lm_ao_LPAScore <- lm(formula = AGEONSET ~ LPA_SCORE + HEADINJURY + C9STATUS + GENDER,
  187. data = MND_Register_Data_FINAL_Feb_25_AOforSurvAna)
  188. summary(lm_ao_LPAScore)
  189. #Linear regression age onset plot
  190. lm_plot_ao <- ggplot(lm(formula = AGEONSET ~ LPA_SCORE + HEADINJURY + C9STATUS + GENDER,
  191. data = MND_Register_Data_FINAL_Feb_25_AOforSurvAna),aes(x=AGEONSET, y=LPA_SCORE)) +geom_point()+geom_smooth(method = lm)
  192. print(lm_plot_ao)
  193. C9orf72_statusAO <- MND_Register_Data_FINAL_Feb_25_AOforSurvAna$C9STATUS
  194. HI_AO <- MND_Register_Data_FINAL_Feb_25_AOforSurvAna$HEADINJURY
  195. lm_plot_ao_HIC9 <- ggplot(lm(formula = AGEONSET ~ LPA_SCORE + HEADINJURY + C9STATUS + GENDER,
  196. data = MND_Register_Data_FINAL_Feb_25_AOforSurvAna),aes(x=AGEONSET, y=LPA_SCORE)) +geom_point(aes(colour = HI_AO, shape = C9orf72_statusAO))+geom_smooth(method = lm)
  197. print(lm_plot_ao_HIC9)
  198. #Linear Regression, Disease Duration
  199. #Survival - by group
  200. lm_dd <- lm(formula = TIMEDEATH_OR_LASTCHECK ~ LPA_LEVEL_GROUP + HEADINJURY + C9STATUS + GENDER + SITEONSET + AGEONSET,
  201. data = MND_Register_Data_FINAL_Feb_25_DDforSurvAna)
  202. summary(lm_dd)
  203. #Survival - by score
  204. lm_dd_LPAScore <- lm(formula = TIMEDEATH_OR_LASTCHECK ~ LPA_SCORE + HEADINJURY + C9STATUS + GENDER+ SITEONSET + AGEONSET,
  205. data = MND_Register_Data_FINAL_Feb_25_DDforSurvAna)
  206. summary(lm_dd_LPAScore)
  207. #Linear regression survival plot
  208. lm_plot_dd <- ggplot(lm(formula = TIMEDEATH_OR_LASTCHECK ~ LPA_SCORE + HEADINJURY + C9STATUS + GENDER + SITEONSET + AGEONSET,
  209. data = MND_Register_Data_FINAL_Feb_25_DDforSurvAna),aes(x=TIMEDEATH_OR_LASTCHECK, y=LPA_SCORE)) +geom_point()+geom_smooth(method = lm)
  210. print(lm_plot_dd)
  211. C9orf72_statusDD <- MND_Register_Data_FINAL_Feb_25_DDforSurvAna$C9STATUS
  212. HI_DD <- MND_Register_Data_FINAL_Feb_25_DDforSurvAna$HEADINJURY
  213. lm_plot_dd_HIC9 <- ggplot(lm(formula = TIMEDEATH_OR_LASTCHECK ~ LPA_SCORE + HEADINJURY + C9STATUS + GENDER + SITEONSET + AGEONSET,
  214. data = MND_Register_Data_FINAL_Feb_25_DDforSurvAna),aes(x=TIMEDEATH_OR_LASTCHECK, y=LPA_SCORE)) +geom_point(aes(colour = HI_DD, shape = C9orf72_statusDD))+geom_smooth(method = lm)
  215. print(lm_plot_dd_HIC9)
  216. #Case Control Analysis
  217. #Set variables as factor and set level
  218. Case_vs_Control_Data_MND_Register$LPA_LEVEL_GROUP <- factor(
  219. Case_vs_Control_Data_MND_Register$LPA_LEVEL_GROUP,
  220. levels = c("Not Active", "Active", "Highly Active"))
  221. Case_vs_Control_Data_MND_Register$GENDER <- factor(
  222. Case_vs_Control_Data_MND_Register$GENDER,
  223. levels = c("Female", "Male"))
  224. Case_vs_Control_Data_MND_Register$HEADINJURY <- factor(
  225. Case_vs_Control_Data_MND_Register$HEADINJURY,
  226. levels = c("No", "Yes"))
  227. Case_vs_Control_Data_MND_Register$DISEASE_STATUS <- as.numeric(
  228. as.character(Case_vs_Control_Data_MND_Register$DISEASE_STATUS))
  229. #Case Control Binomial Logistic Regression
  230. CaseControl_LogReg <- glm(DISEASE_STATUS ~ LPA_LEVEL_GROUP + AGE + GENDER + HEADINJURY,
  231. data = Case_vs_Control_Data_MND_Register, family = binomial(link = "logit"))
  232. summary(glm(DISEASE_STATUS ~ LPA_LEVEL_GROUP + AGE + GENDER + HEADINJURY,
  233. data = Case_vs_Control_Data_MND_Register, family = binomial(link = "logit")))
  234. exp(coef(glm(DISEASE_STATUS ~ LPA_LEVEL_GROUP + AGE + GENDER + HEADINJURY,
  235. data = Case_vs_Control_Data_MND_Register, family = binomial(link = "logit")))) #Generate odds ratios
  236. confint(glm(DISEASE_STATUS ~ LPA_LEVEL_GROUP + AGE + GENDER + HEADINJURY,
  237. data = Case_vs_Control_Data_MND_Register, family = binomial(link = "logit"))) #Profile likelihood confidence intervals
  238. exp(confint(glm(DISEASE_STATUS ~ LPA_LEVEL_GROUP + AGE + GENDER + HEADINJURY,
  239. data = Case_vs_Control_Data_MND_Register, family = binomial(link = "logit")))) #Convert confidence intervals to odds ratio scale
  240. hltest(glm(DISEASE_STATUS ~ LPA_LEVEL_GROUP + AGE + GENDER + HEADINJURY,
  241. data = Case_vs_Control_Data_MND_Register, family = binomial(link = "logit")), verbose = TRUE) #Hosmer-Lemeshow test for goodness of fit
  242. pR2(glm(DISEASE_STATUS ~ LPA_LEVEL_GROUP + AGE + GENDER + HEADINJURY,
  243. data = Case_vs_Control_Data_MND_Register, family = binomial(link = "logit"))) #Pseudo r squared
  244. roc(Case_vs_Control_Data_MND_Register$DISEASE_STATUS, fitted(glm(DISEASE_STATUS ~ LPA_LEVEL_GROUP + AGE + GENDER + HEADINJURY,
  245. data = Case_vs_Control_Data_MND_Register, family = binomial(link = "logit")))) #ROC curve measure of discrimination
  246. pvals <- coef(summary(CaseControl_LogReg))[, 4] #Extract p values
  247. print(pvals)
  248. #Case Control test logistic regression assumptions
  249. #Linearity of the logit
  250. model <- glm(DISEASE_STATUS ~ AGE, family = binomial,
  251. data = Case_vs_Control_Data_MND_Register)
  252. boxTidwell(DISEASE_STATUS ~ AGE, data = Case_vs_Control_Data_MND_Register)
  253. Case_vs_Control_Data_MND_Register$logit <- log(model$fitted.values / (AGE = model$fitted.values))
  254. ggplot(Case_vs_Control_Data_MND_Register, aes(x = AGE, y = logit)) +
  255. geom_point() +
  256. geom_smooth(method = "loess")
  257. #Checking for multicolinearity
  258. multico_check_CaseControl <- lm(
  259. DISEASE_STATUS ~ LPA_LEVEL_GROUP + AGE + GENDER + HEADINJURY,
  260. data = Case_vs_Control_Data_MND_Register)
  261. vif(multico_check_CaseControl)
  262. #Checking for complete or quasi complete separation
  263. CaseControl_detectsep <- glm(DISEASE_STATUS ~ LPA_LEVEL_GROUP + AGE + GENDER + HEADINJURY,
  264. data = Case_vs_Control_Data_MND_Register,
  265. family = binomial("logit"),
  266. method = "detect_separation")
  267. CaseControl_detectsep
  268. #Checking influential observations and outliers
  269. plot(CaseControl_LogReg, which = 1)
  270. plot(CaseControl_LogReg, which = 4)

MND Register and Case Control Analysis Script.R, under CC-BY-4.0 · at the source

Overview

Authors: Jaimee Kennedy1,2, Ahmad Al Khleifat1, Andrew King2,3, Safa Al-Sarraj2,3, Ammar Al-Chalabi1,4, Jacqueline C Mitchell1, Claire Troakes1,2
  1. Maurice Wohl Clinical Neuroscience Institute, Department of Basic and Clinical Neuroscience, King's College London, London SE5 9RT, UK
  2. London Neurodegenerative Diseases Brain Bank, Institute of Psychiatry, Psychology & Neuroscience, Kings College London, London SE8 8AF, UK
  3. Clinical Neuropathology Department, Kings College Hospital NHS Trust, London SE5 9RS, UK
  4. Department of Clinical Neurosciences, King’s College Hospital NHS Trust, London SE5 9RS, UK
Institutions: King's College London (United Kingdom); King's College Hospital (United Kingdom)
Journal: Brain communications, volume 8, issue 4, article fcag272
Dates: received 3 December 2025; accepted 7 May 2026; published online 13 July 2026
Type: Research article · Language: English
License: CC BY
Identifiers: DOI 10.1093/braincomms/fcag272 · PMID 42494493 · PMCID PMC13392466 · OpenAlex W7168182195
Open access: gold, a free copy (OpenAlex)
Status: code verified
Categories: histology / microscopy (modality), human (organism), other condition (population), clinical / translational (subfield)
Methods: Statistics, Machine learning
Keywords: motor neuron disease, amyotrophic lateral sclerosis, physical activity, age onset, exercise
Topic: Amyotrophic Lateral Sclerosis Research (Neurology, Medicine), according to OpenAlex
Funding: Alzheimer’s Society and Alzheimer’s Research UK; Motor Neurone Disease Association; Betty Messenger Charitable Foundation
Citations: not cited yet (Europe PMC); 37 references in the paper

Abstract

Amyotrophic lateral sclerosis (ALS) is a complex neurodegenerative disease characterized predominantly by degeneration of both upper and lower motor neurons, thought to occur due to an interplay between genetics and environmental factors. Physical activity has been suggested as a potential risk factor for ALS; however, the exact role of exercise in the onset and progression of the disease is still unclear.

We assessed lifetime physical activity in two independent ALS cohorts: post-mortem brain donors from the London Neurodegenerative Diseases Brain Bank (n = 139) and patients from the Motor Neurone Disease (MND) Register of England, Wales and Northern Ireland (n = 166 cases, 196 controls).

In both cohorts, highly active individuals developed ALS symptoms at a significantly younger age, 54.2 years (mean, standard deviation = 7.5) in the post-mortem cohort and 58.0 years (median, interquartile range = 15) in the MND Register, compared with 63.9 years (mean, standard deviation = 11.5) and 63.0 years (median, interquartile range = 17.5) in inactive individuals, respectively [one-way analysis of variance (ANOVA), F(2, 136) = 6.10, P = 0.003, η2 = 0.08, 95% confidence interval (CI) 0.02–1.00 and Kruskal–Wallis, H(2) = 7.39, P = 0.02, η2 = 0.03, 95% CI 0.003–0.12]. Cox regression showed a higher hazard of earlier onset in highly active patients [post-mortem: hazard ratio (HR) 2.84, 95% CI 1.55–5.26, P = 0.0008; MND Register: HR 2.34, 95% CI 1.30–4.23, P = 0.005].

Our findings suggest that strenuous physical activity may be associated with a significantly younger age of ALS onset, replicated in both the post-mortem and MND Register cohorts, but not with an increased risk of developing ALS. Logistic regression analysis confirmed that neither highly active [odds ratio (OR) 1.43, 95% CI 0.69–2.99, P = 0.333] nor being active (OR 1.30, 95% CI 0.72–2.37, P = 0.386) was significantly associated with ALS risk, whereas a history of head injury was (OR 1.72, 95% CI 1.03–2.88, P = 0.038). These results suggest that strenuous exercise may accelerate disease onset in predisposed individuals, while the role of head injury requires further study and the findings may in fact indicate reverse causality.

Reproduced under the paper's license (CC BY), from the paper cited above.

Repository

Its files are read in the Code ↔ Paper reader above, with 6 matches between paragraphs and lines of code.

Zenodo 18508813

License: CC-BY-4.0
State: the link answers, verified on 27 September 2026
Evidence: files inventoried
Languages: R (2)
Size: 2 files, 2 scripts
Software Heritage: not checked
Found in: “Data availability”
Not found: README, license file, CITATION.cff, environment file, tests, continuous integration, documentation
Tools: car (2 files), easystats (2 files), ggplot2 (2 files), rstatix (2 files), survival (2 files), tidyverse (2 files), broom (1 file), pROC (1 file)
Availability: 1 check, the latest on 27 September 2026: the link answers (HTTP 200)
  • 27 September 2026: the link answers (HTTP 200)
2 files

The paper's code and data availability statement is in the Data section.

Tracing map

Proposed by the machine: these links were found in the paper and verified at the source, without human review. The map will receive a Zenodo DOI once one of the paper's authors has validated it with their ORCID.

What the map holds:

  • 1 repository of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
  • 2 scripts, each with its path and the digest of its content;
  • 6 matches between paragraphs of the paper and lines of the code (method lexical-v1);
  • neither the text of the paper nor the code itself.

Its JSON (tracing-map.json) is deposited on Zenodo with its DOI once the map is validated.

Data

No dataset and no data link were found in the paper.

Data availability

Access to the MND register can be requested here https://mndregister.ac.uk and access to the MND Association MND Collections here https://www.mndassociation.org/research/our-research/uk-mnd-collections-samples. Data derived from the Brain Bank can be accessed by request to the authors. All R code generated for this manuscript has been uploaded to an online repository and can be accessed using the following link: https://doi.org/10.5281/zenodo.18508813.

Reproduced under the paper's license (CC BY), from the paper cited above.

Versions

The history of this record: each version stored by the harvester or made by a correction of its authors or of the maintainers of its code, and what changed in its facts. The texts of the paper (its abstract, its availability statements) are not part of it; versions that changed only those are not listed.

Version 1, 27 September 2026: the first record

Recorded: type, language, journal, volume, issue, pages, dates, 7 authors, 5 keywords, 3 funders, 37 references.

Cite

This paper

Kennedy, J., Al Khleifat, A., King, A., Al-Sarraj, S., Al-Chalabi, A., Mitchell, J. C., & Troakes, C. (2026). Strenuous physical activity is associated with a younger age of amyotrophic lateral sclerosis onset in two independent cohorts. Brain communications, 8(4), fcag272. https://doi.org/10.1093/braincomms/fcag272

BibTeX

@article{kennedy2026strenuous,
author = {Kennedy, Jaimee and Al Khleifat, Ahmad and King, Andrew and Al-Sarraj, Safa and Al-Chalabi, Ammar and Mitchell, Jacqueline C and Troakes, Claire},
title = {{Strenuous physical activity is associated with a younger age of amyotrophic lateral sclerosis onset in two independent cohorts}},
journal = {Brain communications},
year = {2026},
month = jul,
volume = {8},
number = {4},
pages = {fcag272},
publisher = {Oxford University Press},
issn = {2632-1297},
doi = {10.1093/braincomms/fcag272},
url = {https://doi.org/10.1093/braincomms/fcag272},
pmid = {42494493},
pmcid = {PMC13392466}
}

RIS

TY - JOUR
AU - Kennedy, Jaimee
AU - Al Khleifat, Ahmad
AU - King, Andrew
AU - Al-Sarraj, Safa
AU - Al-Chalabi, Ammar
AU - Mitchell, Jacqueline C
AU - Troakes, Claire
TI - Strenuous physical activity is associated with a younger age of amyotrophic lateral sclerosis onset in two independent cohorts
T2 - Brain communications
J2 - Brain Commun
PY - 2026
DA - 2026/07/13
VL - 8
IS - 4
SP - fcag272
SN - 2632-1297
PB - Oxford University Press
DO - 10.1093/braincomms/fcag272
UR - https://doi.org/10.1093/braincomms/fcag272
LA - en
ER -

CSL-JSON

{
"id": "10.1093/braincomms/fcag272",
"type": "article-journal",
"title": "Strenuous physical activity is associated with a younger age of amyotrophic lateral sclerosis onset in two independent cohorts",
"container-title": "Brain communications",
"author": [
{
"family": "Kennedy",
"given": "Jaimee"
},
{
"family": "Al Khleifat",
"given": "Ahmad"
},
{
"family": "King",
"given": "Andrew"
},
{
"family": "Al-Sarraj",
"given": "Safa"
},
{
"family": "Al-Chalabi",
"given": "Ammar"
},
{
"family": "Mitchell",
"given": "Jacqueline C"
},
{
"family": "Troakes",
"given": "Claire"
}
],
"container-title-short": "Brain Commun",
"volume": "8",
"issue": "4",
"page": "fcag272",
"DOI": "10.1093/braincomms/fcag272",
"PMID": "42494493",
"PMCID": "PMC13392466",
"ISSN": "2632-1297",
"publisher": "Oxford University Press",
"URL": "https://doi.org/10.1093/braincomms/fcag272",
"language": "en",
"issued": {
"date-parts": [
[
2026,
7,
13
]
]
}
}

The tracing map gets a citation of its own once an author has validated it and it has a DOI.

Similar papers

The papers with a page that share the most with this one: the tools found in their code, their categories, datasets, cited references and authors, the rarest counting most.

[1] doi:10.1093/bioinformatics/btag592 [code]
Network-based stratification of allele-specific expression reveals patient subgroups in Huntington's disease.
Journal: Bioinformatics (Oxford, England)
In common: pROC, survival, rstatix, 4 other tools, other condition
[2] doi:10.1126/sciadv.aec9291 [code]
Computational mechanisms of perception in autism revealed using games inspired by rodent operant tasks.
Journal: Science advances
In common: pROC, rstatix, easystats, 4 other tools
[3] doi:10.1093/neuonc/noag128 [code]
Spatially-resolved single-cell imaging of melanoma brain metastases identifies localized immune patterns predictive of immune checkpoint blockade response.
Journal: Neuro-oncology
In common: pROC, survival, rstatix, 3 other tools, clinical / translational, other condition
[4] doi:10.1016/j.isci.2026.115657 [code]
Integration of machine learning to develop a disulfidptosis model for predicting glioma prognosis, immunotherapy response, and drug.
Journal: iScience
In common: pROC, survival, car, 3 other tools, clinical / translational, other condition
[5] doi:10.1038/s41398-026-04131-1 [code]
Multimodal phenotypic classification of generalized anxiety and panic using structural MRI data and psychosocial factors: machine learning results from the German National Cohort (NAKO) study.
Journal: Translational psychiatry
In common: pROC, rstatix, car, 3 other tools, clinical / translational, other condition
[6] doi:10.1038/s42003-026-10282-0 [code]
Genetic risk of Alzheimer's disease is associated with loss of brain network segregation in midlife.
Journal: Communications biology
In common: rstatix, easystats, car, 3 other tools, clinical / translational
[7] doi:10.1038/s41467-026-73865-9 [code]
Histamine shapes the neurocomputational dynamics of human learning.
Journal: Nature communications
In common: rstatix, easystats, car, 3 other tools
[8] doi:10.1126/sciadv.aeb8106 [code]
A thyroid hormone-mediated opsin switch initiates metamorphosis in a proto-vertebrate.
Journal: Science advances
In common: rstatix, easystats, car, 3 other tools
[9] doi:10.1038/s41467-026-77170-3 [code]
DNA methylation profiling identifies long-range epigenetic silencing of clustered protocadherins as a key determinant of meningioma progression.
Journal: Nature communications
In common: pROC, survival, broom, 2 other tools, other condition
[10] doi:10.1002/alz.71567 [code]
Associations of dementia polyexposure scores to Alzheimer's disease endophenotypes in a diverse population.
Journal: Alzheimer's & dementia : the journal of the Alzheimer's Association
In common: pROC, easystats, broom, 2 other tools, clinical / translational

Contribute

The authors of this paper can claim it, correct its record and validate its tracing map, and the maintainers of its code (its owner, or a public member of its organization) correct what it says of their repository; anyone signed in can ask for its removal. Every request goes to OSCR's own machine, which answers it; your account page follows them.

Sign in with ORCID to claim this paper as one of its authors, correct its record or validate its tracing map: when the paper's metadata lists your ORCID iD, you are recognized at once. Maintainers of its code: sign in with GitHub, then claim the repository on your account page.

Request its removal

To ask OSCR to remove this record, the copies of its authors' scripts or its tracing map, use the removal request page: signed in, you say who you are, what to remove and why, then review and confirm the request. Published rules decide every request (how).

Discussion, reproductions, activity

Discussion: questions and error reports about this paper and its code, from signed-in readers and its authors. It opens with sign-in.

Reproductions: reports from readers who ran the authors' code: what they reproduced, with which environment, commit and data. It opens with sign-in.

Activity: what happens around this paper: new versions of its record, its map's validation, discussions and reproductions. It opens with sign-in.