title: Régression multivariée par spline adaptative
text: # Régression multivariée par spline adaptative
  
  La Régression multivariée par spline adaptative (en anglais MARS pour « Multivariate adaptive regression splines ») est une méthode statistique ; plus précisément, c'est une forme de modèle de régression présentée pour la première fois par Jerome H. Friedman et Bernard Silverman en 1991. C'est une technique de régression non paramétrique pouvant être vue comme une extension des régressions linéaires qui modélisent automatiquement des interactions et des non-linéarités. Le terme MARS est une marque de Salford Systems.
  
  ## Introduction
  
  Soit une matrice de variables d'entrées x, et un vecteur de réponses observées y avec une réponse pour chaque ligne de x. Par exemple :
  
  | x | y |
  | - | - |
  | 10.5 | 16.4 |
  | 10.7 | 18.8 |
  | 10.8 | 19.7 |
  | 20.6 | 77.0 |
  
  Ici il y a une seule variable indépendante, aussi la matrice x est réduite a une seule colonne. Un modèle linéaire pour les données ci-dessus serait :
  
      ${\hat {y}}=-37+5.1x$
  
  où ${\hat {y}}$ est l'estimation de y par les données. La figure à droite montre une droite décrivant ${\hat {y}}$ en fonction de x avec les valeurs réelles de y sous la forme de points rouges. Aux valeurs extrêmes de x, il semble que la relation entre x et y ne soit pas linéaire (regarder les valeurs de y pour des valeurs basses et les valeurs hautes de x). Nous nous tournons alors vers MARS pour prendre automatiquement en compte les non-linéarités. MARS construit un modèle à partir des données x et y de la manière suivante :
  
      ${\begin{aligned}{\hat {y}}=&\ 25\\&+6.1\max(0,x-13)\\&-3.1\max(0,13-x)\\\end{aligned}}$
  
  La figure à droite montre une estimation ${\hat {y}}$ qui est plus proche des valeurs réelles de y. MARS a automatiquement créé un angle dans la droite précédente pour tenir compte de la non-linéarité des données à l'aide de fonctions charnières qui sont des expressions commençant par $\max$ (où $\max(a,b)$ vaux $a$ si $a>b$, $b$ sinon). Les fonctions charnières sont décrites plus en détail ci-dessous. Dans cet exemple simple nous pouvons voir graphiquement que y et x sont reliées non-linéairement entre elles (et on peut même supposer que y varie en fonction du carré de x). En général il peut y avoir plusieurs variables indépendantes et la relation entre y et ces variables peut ne pas être facilement découverte en regardant simplement une courbe. Voici un exemple d'expressions avec des plusieurs variables :
  
      ${\begin{aligned}\mathrm {ozone} =&\ 5.2\\&+0.93\max(0,\mathrm {temp} -58)\\&-0.64\max(0,\mathrm {temp} -68)\\&-0.046\max(0,234-\mathrm {ibt} )\\&-0.016\max(0,\mathrm {wind} -7)\max(0,200-\mathrm {vis} )\\\end{aligned}}$
  
  Cette expression modélise la pollution de l'air (niveau de l'ozone dans l'air) en fonction de la température et de quelques autres variables. On peut remarquer que la dernière expression fait intervenir une interaction entre $\mathrm {wind}$ et $\mathrm {vis}$. La figure sur la droite montre $\mathrm {ozone}$ lorsque $\mathrm {wind}$ et $\mathrm {vis}$ (vent et force) varient, alors que les autres variables sont fixées à leur valeur médiane. La figure montre donc que le vent n'affecte pas le niveau de l'ozone dans l'air sauf si la visibilité est basse.
  
  ## Modèle MARS
  
  MARS construit des modèles de la forme :
  
      ${\hat {f}}(x)=\sum _{i=1}^{k}c_{i}B_{i}(x)$.
  
  Le modèle est une somme pondérée de fonctions de bases $B_{i}(x)$.
  
  Chaque $c_{i}$ étant un coefficient constant. Chaque fonction de base peut prendre l'une des trois formes suivantes :
  
  * Une constante 1.
  
  Il n'y a qu'un seul terme de ce type : l'intersection avec l'axe (la valeur moyenne de la variable à expliquer quand la variable explicative prend la valeur zéro). Dans l'exemple ici cette valeur est 5.2
  
  * Une fonction charnière
  * Un produit de fonctions charnières
  
  ## Logiciels
  
  ### Libres
  
  * Plusieurs packages R modélisent la Régression multivariée par spline adaptative:
     * La fonction polymars dans le package polspline
     * La fonction mars dans le package mda
     * La fonction earth dans le package earth
  * On trouve aussi MARS dans Matlab
  * Une version en python existe
  
  ### Commerciaux
  
  * MARS de Salford Systems
  * STATISTICA de StatSoft
  