Le Kernel Smoothing avec rupture(s) sous SAS

Voici une petite macro SAS bien utile pour tout ceux qui souhaitent faire du Kernel Smoothing. En plus de cela, elle est adaptée au cas des variables qui présentent des ruptures (1 ou 2 max), bien connu des économètres qui font des regressions sur discontinuité.

Rappelons tout d’abord le principe du Kernel Smoothing (ou “lissage par noyau”, mais ça fait tellement moins classe). Vous avez 2 variables X et Y (continues ou discrètes) et vous souhaitez avoir une première idée de la forme de la relation qui les relient, sans imposer de forme fonctionnelle particulière. Ou comme diraient les économètres “une estimation non paramétrique” de Y=f(X) (oh yeah). Pour cela, on calcule sur des intervalles glissants de X la moyenne pondérée de Y. Le noyau permet simplement de pondérer plus fortement les points à proximité de la valeur de X à une itération donnée.

Si vous n’avez rien compris, regardez plutôt ce petit dessin tiré de Wikipédia:

Ou allez directement voir sur Wikipédia!

Lorsque votre relation présente une (ou deux) discontinuité(s), le lissage aura tendance à masquer la realité de cette rupture. Pour vous donner un exemple, supposons que vous étudiez le taux de formation (Y) en fonction de la taille d’une entreprise (en nombre de salariés, X). Vous savez qu’en général, plus il y a de salariés, plus l’entreprise aura tendance à former (économies d’échelle, facilité à remplacer les salariés absents etc…). Mais vous savez également que les syndicats ont tendance à pousser les entreprises à former. Or, aux seuils de 20 et 50 salairés, les entreprises ont des obligations en matière d’élections de représentants du personnel et de comité d’entreprise. Vous vous attendez donc à ce que le taux de formation à ces seuils “bondissent” de manière discontinue.

Dans ce cas, un lissage classique vous donnerait quelque chose comme (données réelles):

En fait, si les discontinuités à X=50 et X=20 sont perceptibles, elles tendent à être lissées car on calcule la moyenne des taux de formation (Y) en mélangeant les points au-dessus et au-dessous des discontinuités. Pour résoudre le problème, on fait glisser le noyau en le stoppant autour du ou des seuil(s). De cette manière, par exemple, à X=49.5  on ne considère dans le calcul de la moyenne que les observations vérifiant X<50 (et vice versa).

Dans ce cas, on obtient le joli graphe suivant:

Le programme se présente sous forme d’une petite  macro SAS qu’il faut paramétrer. Une notice est également fournie.

A télécharger: la macro Kernel Smooth et sa notice.

5 thoughts on “Le Kernel Smoothing avec rupture(s) sous SAS

  1. Intéressant, où peut-on trouver la macro SAS en question ?

    Faut-il définir les ruptures à l’avance, ou y a-t-il une option pour détecter les seuils les plus probables ?

    a+,
    Jérémy

  2. (Désolé, je suis en train de poster…)

    Pour les paramètres, la notice explique tout. En cas de problème, hésite pas à me demander.

    Par contre le programme ne détecte pas automatiquement les seuils. En général, pour les régressions discontinues, on connait à l’avance les seuils car ils se situent au niveau des seuils institutionnels.

    Jerome

Leave a reply to Jérôme Lê Cancel reply