frontierCost
Description
L'action frontierCost est dédiée à l'analyse de modèles de frontières de coûts stochastiques. Dans le monde merveilleux de l'économétrie, elle permet de modéliser la fonction de coût minimum d'une entité (entreprise, hôpital, banque) et de mesurer son inefficacité. Contrairement aux modèles de production où l'on veut être au-dessus, ici, si vous êtes au-dessus de la frontière, c'est que vous dépensez trop ! Cette action supporte plusieurs distributions pour le terme d'inefficacité (exponentielle, demi-normale ou normale tronquée), ce qui est bien plus précis que de simplement blâmer la comptabilité.
Paramètres Clés
| Nom du paramètre | Description |
|---|---|
| table | Désigne la table CAS d'entrée contenant les données de coûts et les facteurs explicatifs. Indispensable, sinon l'action n'a rien à se mettre sous la dent. |
| model | Le cœur du réacteur : définit la variable dépendante (le coût), les effets (variables indépendantes comme les prix des intrants) et le type de distribution de l'inefficacité (EXPONENTIAL par défaut). |
| optimizer | Permet de régler finement l'algorithme d'optimisation non-linéaire (par exemple Newton-Raphson) pour converger vers les estimations du maximum de vraisemblance. |
| output | Spécifie les résultats à sauvegarder dans une nouvelle table CAS, notamment les prédictions et surtout les scores d'efficacité technique (te1, te2). |
| class | Liste les variables catégorielles (comme les secteurs d'activité ou les régions) pour qu'elles soient traitées comme des facteurs dans le modèle. |
| bounds | Permet de fixer des limites (min/max) sur les coefficients estimés pour éviter que le modèle ne raconte n'importe quoi mathématiquement. |
Préparation des données
Simulation de données de coûts
Création d'une table CAS de test avec un coût dépendant de la production (q), du prix du travail (p) et d'un terme d'inefficacité stochastique.
| 1 | DATA mycas.costs; call streaminit(123); DO i=1 to 500; p_work = rand('uniform'); q_out = rand('normal', 100, 10); u_ineff = rand('exponential', 0.5); v_noise = rand('normal', 0, 0.1); cost = 5 + 0.8*q_out + 0.4*p_work + u_ineff + v_noise; OUTPUT; END; drop i u_ineff v_noise; RUN; |
Exemples d'utilisation
Frontière de coût basique
Estimation d'un modèle simple avec inefficacité exponentielle sur nos données simulées.
| 1 | PROC CAS; frontier.frontierCost / TABLE={name='costs'}, model={depVars={{name='cost'}}, effects={{vars={'q_out', 'p_work'}}}, modelOptions={type='EXPONENTIAL'}}; RUN; |
Résultat Attendu :
Analyse complète avec scoring d'efficacité
Estimation d'un modèle demi-normale (HALF) avec optimisation par Quasi-Newton et calcul de l'efficacité technique pour chaque observation.
| 1 | PROC CAS; frontier.frontierCost / TABLE={name='costs'}, model={depVars={{name='cost'}}, effects={{vars={'q_out', 'p_work'}}}, modelOptions={type='HALF'}}, optimizer={algorithm='QUASINEWTON', maxit=200}, OUTPUT={casOut={name='costs_scored', replace=true}, te1='eff_jondrow', pred='cost_pred'}; RUN; PROC CAS; TABLE.fetch / TABLE='costs_scored', maxRows=10; RUN; |