nlmod
Description
L'action nlmod (Nonlinear Models) est l'outil ultime pour les statisticiens qui refusent la linéarité de la vie ! Elle permet d'ajuster des modèles de régression non linéaire en utilisant soit les moindres carrés , soit le maximum de vraisemblance. Contrairement aux modèles linéaires classiques, vous pouvez ici définir vos propres équations complexes. C'est un peu comme si vous passiez de la peinture au numéro à la sculpture sur mesure : c'est plus complexe, mais le résultat est bien plus fidèle à la réalité de vos données.
Paramètres Clés
Préparation des données
Création de données de croissance exponentielle
Génération d'un jeu de données simulant une croissance bactérienne avec un peu de bruit aléatoire.
| 1 | DATA casuser.growth; call streaminit(123); DO time = 1 to 20; biomass = 10 * exp(0.15 * time) + rand('Normal', 0, 2); OUTPUT; END; RUN; |
Exemples d'utilisation
Régression exponentielle basique
Ajustement d'un modèle de type y = a * exp(b * x) sur les données de croissance.
| 1 | PROC CAS; nonlinear.nlmod / TABLE={name="growth", caslib="casuser"}, model={depvar="biomass", distribution="GAUSSIAN", distparms={"pred"}}, nlmodCode="pred = a * exp(b * time);", parameters={{name="a", vals=5}, {name="b", vals=0.1}}; RUN; |
Résultat Attendu :
Modèle avec contraintes, prédictions et statistiques
Ajustement complet avec bornes de paramètres, calcul d'une estimation dérivée et génération d'une table de résultats.
| 1 | PROC CAS; nonlinear.nlmod / TABLE={name="growth", caslib="casuser"}, model={depvar="biomass", distribution="GAUSSIAN", distparms={"mu"}}, nlmodCode="mu = alpha * exp(beta * time);", parameters={{name="alpha", vals=1}, {name="beta", vals=0.1}}, bounds={{name="alpha", leb=0.001}, {name="beta", leb=0}}, estimate={{expression="alpha * beta", label="Vitesse_Initiale"}}, predict={{expression="mu", label="Biomasse_Predite", pred="P_biomass"}}, predOut={name="growth_scored", replace=True}, outputTables={names={ParameterEstimates="params_final"}}; RUN; |