class: inverse, left, middle # Inférences statistiques <hr> ## Une application en biomécanique <br> Romain Martinez KIN6839 2020 | 2020-03-10 --- # .header[Des données multidimensionnelles] <br> <img src="fig/1d-2d-3d.svg" width="100%" style="display: block; margin: auto;" /> <br> Comment faire des inférences sur des données à `\(n\)`-dimensions? ??? - En biomécanique, la plupart des données sont multidimensionnelles. - Dans le cas d'EMG au cours du temps par exemple, on a une composante temporelle qui ajoute une dimension à l'amplitude EMG. On parle donc de données 1D - D'autres exemples: flexion du coude au cours du temps, etc. - Il existe aussi des données - 2D, par exemple des pressions plantaires pour nos amis de foot! - 3D, par exemple forces de compression appliquées à la tête humérale - Par opposition, des données 0D représentent simplement un scalaire (flexion du coude, amplitude maximale EMG du triceps) - Pour réaliser des tests statistiques sur des données multidimensionnelles, deux stratégies sont utilisées --- class: inverse, middle, clear # Des stratégies d'analyse douteuses <hr> ## Un test statistique sur chaque noeud ??? - La première stratégie consiste à réaliser un test statistique sur chaque noeud temporel. --- # .header[Sans correction] __Aberration statistique__ __100%__ de chance d'erreurs de type I (faux positif) à partir de 20 noeuds (si `\(\alpha = 0.05\)`) <img src="fig/test-per-node.svg" width="70%" style="display: block; margin: auto;" /> ??? - Sans correction cette stratégie est une aberration statistique - L'application d'aucune correction garantit l'apparition d'erreur de type I (faux positifs) (Pataky 2016b) --- # .header[Avec correction de Bonferonni] __Approche trop conservative__ Si `\(\alpha = 0.05\)` et 1,000 noeuds, alors `\(p = \frac{0.05}{1,000} = 0.00005\)` <img src="fig/test-per-node.svg" width="70%" style="display: block; margin: auto;" /> ??? - L'application d'une correction de Bonferonni pour comparaisons multiples est valide mais cependant trop conservative (e.g. `\(p = \fracc{0.05}{1000}\)` pour 1.000 instants). --- class: inverse, middle, clear # Des stratégies d'analyse douteuses <hr> ## Réduction des données ??? - La deuxième stratégie consiste à réduire les données à 0 dimension - Tels que le minimum, le maximum ou la moyenne - Afin de modéliser au mieux la composante temporelle par exemple des signaux --- # .header[Une approche rarement justifiable] .row[ .col-3[Justifiable si:] .col-9[ - Hypothèse 0D formulée __avant__ la collecte de données - Analyse __seulement__ les données 0D ] ] Si aucune hypothèse 0D n'est spécifiée, l'hypothèse concerne implicitement l'__ensemble__ du signal <br> > L'hypothèse de recherche doit guider l'analyse et non l'inverse ??? - Cette procédure est justifiable si l'on formule une hypothèse de recherche avant la collecte de données - Et qu'on analyse seulement les données 0D, sans regarder les données 1D - Si aucune hypothèse 0D n'est spécifiée, alors l'hypothèse de recherche concerne implicitement l'ensemble de la composante temporelle du signal - Si l'hypothèse de recherche qui doit guider l'analyse et non l'inverse --- # .header[Un paradigme d'hypothèse dirigée] Hypothèse dirigée: > "Le groupe A et le groupe B montrent une __flexion maximale__ du genou identique à __30% du cycle de marche__" .row[ .col-1[] .col-11[Tester d'autres variables et/ou fenêtre augmentent les erreurs de type I] ] ??? - Un paradigme d'hypothèse dirigée a ainsi émergé dans la littérature - Un exemple d'une telle hypothèse pourrait être: - "Le groupe A et le groupe B montrent une flexion maximale du genou identique à 30% du cycle de marche" - Pour vérifier cette hypothèse, seule la flexion maximale du genou doit être évaluée et seulement à 30% - Tester d'autres variables et/ou fenêtre temporelle constituerait un biais - Car l'augmentation du nombre de tests statistiques augmente le risque de rejet erroné de l'hypothèse nulle (erreur de type I) --- # .header[Un paradigme d'hypothèse dirigée] .fade[Hypothèse dirigée: > "Le groupe A et le groupe B montrent une __flexion maximale__ du genou identique à __30% du cycle de marche__" .row[ .col-1[] .col-11[Tester d'autres variables et/ou fenêtre augmentent les erreurs de type I] ] ] Hypothèse non-dirigée: > "Le groupe A et le groupe B montrent une __cinématique__ du genou identique durant __un cycle de marche__" .row[ .col-1[] .col-11[Justifie l'utilisation de technique 1D] ] ??? - À l'inverse, une meilleure hypothèse pourrait être: - "Le groupe A et le groupe B montrent une __cinématique__ du genou identique durant __un__ cycle de marche" - justifie l'utilisation de technique 1D car il convient d'analyser la cinématique du genou dans tous les axes et durant l'ensemble du cycle de marche --- class: bg-grey # .header[Ne pas faire confiance aux scalaires] <br> <img src="fig/DinoSequentialSmaller.gif" width="100%" style="display: block; margin: auto;" /> > Make __both__ calculations __and__ graphs. > Both should be studied; each will contribute to understanding. > > > .right[F. J. Anscombe, 1973.] ??? - La discrétisation des données peut avoir des conséquences sur notre interprétation des données --- # .header[Choix arbitraire de statistique] Aucune statistique encapsule toutes les dimensions des données <br> <img src="fig/0d-maxmean.svg" width="100%" style="display: block; margin: auto;" /> --- # .header[Choix arbitraire de statistique] Aucune statistique encapsule toutes les dimensions des données <br> <img src="fig/0d-mean.svg" width="100%" style="display: block; margin: auto;" /> --- # .header[Choix de zones arbitraires] Le choix de la zone de réduction modifie la conclusion de l'analyse <br> <img src="fig/0d-mean-zones.svg" width="100%" style="display: block; margin: auto;" /> --- class: bg-grey # .header[Représentations abstraites] Ne pas faire forcément confiance aux figures <br> <img src="fig/BoxViolinSmaller.gif" width="100%" style="display: block; margin: auto;" /> ??? - En plus d'introduire les multiples erreurs statistiques précédemment décrites, la réduction des données conduit souvent à communiquer une représentation abstraite des données --- # .header[Représentations abstraites] <img src="fig/0d.svg" width="100%" style="display: block; margin: auto;" /> ??? - Arrêtons le massacre - Pour comprendre les données tabulaires, il faut projeter les données discrétisées dans leurs dimensions originales --- # .header[Conséquences statistiques] Réanalyse de jeux de données (EMG, cinématique, force): -- - Conclusions __opposées__ entre 0D et 1D -- - Nombreuses erreurs de type I (faux positifs) et II (faux négatifs) -- - La réduction des données introduit plusieurs __biais__ 1. Biais de focalisation locale: _non prise en compte de l'ensemble du domaine_ 2. Biais de covariance: _non prise en compte de la covariance entre les composantes_ ??? - La réduction des données peut avoir aussi des conséquences statistiques en annulant, voir en inversant des conclusions statistiques - En effet la réanalyse de trois jeux de données publiques (EMG, cinématique, forces) a démontré des conclusions opposées entre une analyse 0D et 1D. - Deux types de biais de l'analyse 0D générant des erreurs de types I et II (faux positifs et faux négatifs). 1. Biais de focalisation locale (non prise en compte de l'ensemble du domaine de mesure) 2. Biais de covariance entre les composantes (non prise en compte de la covariance entre les composantes) --- # .header[Covariance entre composantes] La variation des composantes n'est pas __indépendantes__ <img src="fig/multivariate.svg" width="100%" style="display: block; margin: auto;" /> > L'ignorance de la covariance ne peut refléter la véritable fonction biologique ??? - En effet, les données biomécaniques ont généralement une composante temporelle mais aussi une __covariance__ entre composantes - la variation de l'activation d'un muscle est positivement corrélée avec les agonistes et négativement avec les antagonistes - e.g., DDL cinématiques ou muscles EMG --- class: inverse, clear __Résumé__ .card.nord2[ Les données à `\(n\)`-dimensions sont __communes__ Pour les analyser, nous avons tendance à formuler des hypothèses __directrices__ Ces hypothèses nous forcent à explorer les données en 1D puis de les analyser en __0D__ Cela génère des __erreurs statistiques__ et encourage les représentations __abstraites__ ] ??? - Alors en résumé, les données à n-dimensions sont communes en biomécanique - Pour les analyser, nous avons tendance à formuler des hypothèses directrices qui nous forcent à collecter et explorer les données en 1D puis de les analyser en 0D - Outre les nombreuses erreurs statistiques possibles, cette pratique encourage la communication des résultats à partir de représentations abstraites des données. --- class: inverse, clear, middle # Analyser des données à `\(n\)`-dimensions <hr> ## Propriétés mathématiques (1) _Dépendance spatiotemporelle_ dans des (2) bornes distinctes ??? Les données biomécaniques que nous venons de décrire partagent deux propriétés mathématiques qui vont nous être utiles pour analyser des données à n-dimensions --- # .header[Dépendance spatiotemporelle] Noeuds temporels adjacents liés les uns aux autres 1. Échantillonnage > fréquence Nyquist 2. Viscoélasticité des tissus mous <br> <img src="fig/smooth.svg" width="100%" style="display: block; margin: auto;" /> ??? - Commençons par la dépendance spatiotemporelle - C'est le cas de la plupart des données 1D - forces de réaction, cinématique, EMG - Ces données sont lisses non seulement parce qu'elles échantillonnées au-delà de la fréquence de Nyquist, mais aussi parce que la viscoélasticité des tissus rend les variables biomécaniques lisses par nature - Les noeuds temporels adjacents sont ainsi liés les uns aux autres et ne sont pas échantillonnés de manière aléatoire - un point au temps `\(t\)` est dépendent d'un point au temps `\(t-1\)` - Il existe un paramètre mathématique pour décrire ce lissage - S'il est égal à 0, les données fluctuent de façon aléatoire et les mesures sont indépendantes - S'il tend vers l'infini, les données sont complètement dépendantes --- # .header[Dépendance spatiotemporelle] Noeuds temporels adjacents liés les uns aux autres 1. Échantillonnage > fréquence Nyquist 2. Viscoélasticité des tissus mous <br> <img src="fig/spatio-temporal-smooth.svg" width="100%" style="display: block; margin: auto;" /> ??? - Il existe un paramètre mathématique pour décrire ce lissage - S'il est égal à 0, les données fluctuent de façon aléatoire et les mesures sont indépendantes - S'il tend vers l'infini, les données sont complètement dépendantes --- # .header[Bornes distinctes] Bornes distinctes entre conditions <img src="fig/bornes.svg" width="100%" style="display: block; margin: auto;" /> ??? - Les données biomécaniques sont également bornées - Connaitre les bornes physiologiques est particulièrement utile pour comparer statistiquement des données les limites de ces bornes - Dans le cas de données 2D, nous savons par exemple qu'un pied à une certaine forme. - Si on veut comparer la répartition des pressions plantaires, nous pouvons superposer les pieds les uns sur les autres pour les comparer - Il existe aussi un paramètre qui mesure à quel point chaque noeud est comparable entre les conditions que l'on compare --- class: inverse, clear, middle # Analyser des données à `\(n\)`-dimensions <hr> ## _« The right way »_ --- # .header[_Statistical Parametric Mapping_ (SPM)] SPM permet de calculer la probabilité d'avoir un effet significatif sur des données à `\(n\)`-dimensions .row[ .col-7[ Développée à l'origine pour l'analyse d'image IRM <br> Largement validée et citée .right[_240,400 citations_] ] .col-5[ <img src="fig/brain.svg" width="100%" style="display: block; margin: auto;" /> ] ] .card[ _SPM_ est basée sur la _dépendance spatiotemporelle_ et les _bornes distinctes_ ] ??? - Les deux propriétés que nous venons de voir sont utilisées par la cartographie statistique paramétrique pour calculer la probabilité d'avoir un effet significatif sur des données à n-dimensions - Développée à l'origine pour l'analyse du flux sanguin cérébral d'image IRM - les SPM ont été largement validées et citées (240,400 citations) - elles ont depuis migré vers diverses applications dont en biomécanique --- # .header[Les nombreux avantages des _SPM_] __.nord9[1.]__ Réduction/discrétisation inutile __.nord9[2.]__ Résultats exprimées dans l'espace d'échantillonnage original <img src="fig/1d-2d-3d.svg" width="85%" style="display: block; margin: auto;" /> __.nord9[3.]__ Flexible - Dimensions arbitraires - Tests d'hypothèses classiques (_e.g., T-test, ANOVA, régression_) - Modèles (non-)linéaires, (non-)paramétriques ??? - Pour l'analyse de données multidimensionnelles, les SPM ont plusieurs avantages - Le premier est majeur: il n'est pas nécessaire de réduire/discrétiser les données - le deuxième est que les résultats sont directement exprimés dans l'espace d'échantillonnage original plutôt que dans des représentations plus abstraites (tableau, bars) - La SPM est flexible: elle est applicables sur des données avec des dimensions arbitraires et avec des modèles paramétriques/non-paramétriques - les tests statistiques utilisés sont les mêmes que ceux que nous avons l'habitude d'utiliser: t-test, anova, régression --- # .header[Tests paramétriques - non-paramétriques] .row[ .col-6[ __Paramétriques__ <img src="fig/normal.svg" width="90%" style="display: block; margin: auto auto auto 0;" /> Construits à partir de distributions théoriques Valides seulement sous certaines conditions ] .col-6[ __Non-paramétriques__ <img src="fig/hist.svg" width="90%" style="display: block; margin: auto auto auto 0;" /> Construits à partir des données Temps d'exécution plus élevé ] ] ??? - Chacun de ces tests à une version paramétrique et non-paramétrique - les modèles paramétriques sont construits en supposant d'abord la nature de la distribution aléatoire (généralement gaussienne) puis en calculant un petit nombre de paramètres (e.g., moyenne et sd) qui caractérisent cette distribution et donc son comportement - lorsque les données sont non gaussiennes, les procédures paramétriques se sont pas valables - En revanche, les modèles non-paramétriques ne sont pas basés sur une distribution spécifique et sont plutôt construits à partir des données expérimentales --- # .header[Choix paramétrique - non-paramétrique] Des résultats __équivalents__ <img src="fig/non-parametric.svg" width="85%" style="display: block; margin: auto;" /> .card[ __Non-paramétrique conseillé__: <br>les données biomécaniques vérifient rarement les hypothèses de _normalité_ & _variance homogène_ ] ??? - Lorsque les données proviennent d'une distribution normale, les modèles paramétriques/non-paramétriques convergent - Plusieurs études ont aussi démontré que les résultats obtenus avec des tests paramétriques et non-paramétriques sont équivalents - 0d vs. 1d plus important - Pour cette raison, je vous conseille d'utiliser davantage des tests non-paramétriques car les données biomécaniques vérifient rarement les hypothèses de normalité et homogénéité des variances --- # .header[__spm1d__] Librairie SPM _open-source_, disponible sur Python et Matlab <br> <img src="fig/spm-logo.png" width="85%" style="display: block; margin: auto;" /> <br> .card[ Documentation: [spm1d.org](spm1d.org) Exemples & code source: [github.com/0todd0000/spm1d](https://github.com/0todd0000/spm1d) Tutoriel: [github.com/pyomeca/tutorials](https://https://github.com/pyomeca/tutorials) ] ??? - Enfin, pour terminer, quelque chose qui va être très important pour nous c'est qu'il existe des librairies open-source pour réaliser des analyses avec la spm - La librairie `spm1d` implémente les procédures spm en Python et Matlab - Cette disponibilité pourrait contribuer à la démocratisation des techniques 1D telle que SPM et ainsi conduire à de meilleures pratiques statistique --- class: inverse, clear __Résumé__ .card.nord2[ La _SPM_: - prend en compte la __corrélation spatiotemporelle__ et __bornes distinctes__ - évite les biais de __focalisation locale__ et __covariance intercomposantes__ - est interprétable dans le __domaine d'origine__, sans réduction de données - est __généralisable__ à des modèles (non-)linéaires, (non-)paramétriques .center[est donc utile pour l'analyse de signaux biologiques] ] ??? - En pratique, nous avons accès à des données biomécaniques à `\(n\)`-dimensions avec des propriétés mathématiques permettant le calcul de seuil de significativité directement dans l'espace d'échantillonnage original, sans avoir besoin de réduire les données ou restreindre l'analyse à une zone arbitraire. - Par rapport aux approches 0D, son principal avantage est qu'elle évite deux sources potentielles de biais: (i) la focalisation locale (Pataky et al., 2008), et (ii) covariance inter-composante (Pataky 2016). - SPM prend en compte la corrélation spatiotemporelle et la covariance entre les composantes, est généralisable à des modèles linéaires et non-linéaires ainsi que paramétriques et non-paramétriques, ce qui la rend particulièrement en biomécanique et plus généralement dans l'analyse de signaux biologiques. --- class: inverse, middle, clear # `\(p\)`-_value_ et `\(p\)`-_hacking_ <hr> ## Méfiez-vous des apparences --- # .header[Mais qu'est-ce qu'une _p-value_ ?] __Hypothèse de recherche__ : tente d'expliquer certaines observations en les reliant à d'autres observations. > Vous avez une pièce de monnaie que vous soupçonnez d'être truquée. Vous essayez donc d'expliquer cela par l'hypothèse suivante : "Cette pièce est truquée". -- __Hypothèse nulle__ : indique qu'il n'y a aucune relation entre les observations que vous essayez de relier. > La pièce n'est pas truquée. -- __P-value__ : est la probabilité d'obtenir les mêmes résultats si l'hypothèse nulle est vraie. > La `\(p\)`-_value_ ne vous dira pas si la pièce est truquée, mais la probabilité que vous obteniez au moins autant de "faces" si la pièce était juste. --- # .header[Les _p-values_ encouragent les mauvaises pratiques] Les articles ont (malheureusement) plus de chance d'être publiés s'ils contiennent des résultats _significatifs_, _i.e._ `\(p < 0.05\)` Problèmes: -- 1. [Personne ne comprend ce qu'est une `\(p\)`-_value_](https://fivethirtyeight.com/features/not-even-scientists-can-easily-explain-p-values/), pas mêmes les scientifiques -- 2. Il est [facile de mentir](https://fivethirtyeight.com/features/science-isnt-broken/#part1) avec une `\(p\)`-_value_ -- 3. Reporter seulement des `\(p\)`-_values_ ne sert à rien > We believe that the `\(p < .05\)` bar is too easy to pass and sometimes serves as an excuse for lower quality research. Instead of p-values, the journal will require “strong descriptive statistics, including __effect sizes__. --- class: clear .center[ <br> ] <img src="fig/nicolas.svg" width="70%" style="display: block; margin: auto;" /> --- class: clear .center[ __Noyades dans des piscines__ _vs._ .maroon[__Films avec Nicolas Cage__] ] <img src="fig/nicolas.svg" width="70%" style="display: block; margin: auto;" /> .card.center[ Rappelez-vous que corrélation ≠ causalité ] --- class: inverse, clear <br> __Résumé__ .card.nord2[ Méfiez vous des __interprétation__ seulement sur des `\(p\)`-_values_ Reportez la __taille d'effet__ (Cohen's `\(d\)`) Rappelez-vous que __corrélation ≠ causalité__ ] --- class: inverse, left, middle # Inférences statistiques <hr> ## Une application en biomécanique <br> Romain Martinez KIN6839 2020 | 2020-03-10