2017-07-24 28 views
-2

Ich möchte ein multivariates Regressionsmodell in SAS mit Regularisierung erstellen. Das Modell kann linear oder nicht linear sein, aber ich möchte sicherstellen, dass die Koeffizienten klein und positiv sind. Wie kann ich es tun? Beispielcode würde geschätzt werden.SAS parametrisches Modell mit Regularisierung

Antwort

1

Ich bin nicht ganz sicher, was kleine Koeffizienten in Ihrem Fall ausmacht, aber proc qlim ermöglicht sowohl einfache als auch komplexe Koeffizientenbeschränkungen. Nehmen wir an, Sie wollen ein Modell, dessen Koeffizienten zwischen -1 und 1 liegen. bounds ist eine einfache Lösung für dieses Problem.

proc qlim data=sashelp.cars; 
    model horsepower = cylinders mpg_city; 
    bounds -1 <= cylinders <= 1 
     , -1 <= mpg_city <= 1 
    ; 
run; 

Das Modell konvergiert und gibt uns eine Antwort. Sie können auch eine komplexere Einschränkung mit der restrict-Anweisung ausführen.

proc qlim data=sashelp.cars; 
    model horsepower = cylinders mpg_city; 
    restrict mpg_city + cylinders <= 1 
    ; 
run; 

Auch weitere Komplexität in Einschränkungen, wie nichtlineare, wird proc model erfordern.

proc model data=sashelp.cars; 
    endo horsepower; 
    exo cylinders mpg_city; 

    horsepower = b0 + b1*cylinders + b2*mpg_city; 

    restrict b1/b2 >= 0; 

    fit; 
run; 

proc model ist eines der flexibelsten Regressionsverfahren. Daher erfordert es viel manuelle Eingabe. Mit proc model müssen Sie Ihre abhängigen unabhängigen Variablen & deklarieren und jeden Parameter eingeben. Es kann automatisch Parametervariablen bestimmen, solange Sie Ihre abhängigen/unabhängigen Benutzer deklarieren.

+0

Dies ist sehr hilfreich! Bei kleinen Koeffizienten würde ich lieber keine harte Einschränkung angeben. Was ich im Sinn hatte, war eine Art Regularisierung, z.B. um das mittlere Quadrat der Koeffizienten zum Modellfehler hinzuzufügen. Gibt es eine Möglichkeit, dies in den oben genannten Modellen zu tun? –