Ich möchte einen bestimmten Koeffizienten manuell festlegen, z. B. , und dann die Koeffizienten an alle anderen Prädiktoren anpassen, während im Modell erhalten .
Wie kann ich dies mit R erreichen? Ich würde besonders gerne mit LASSO ( glmnet
) arbeiten, wenn möglich.
Wie kann ich diesen Koeffizienten alternativ auf einen bestimmten Bereich beschränken, z. B. ?
Antworten:
Sie müssen das
offset
Argument wie folgt verwenden:Über die Reichweite ... Ich glaube nicht, dass das in implementiert wurde
glmnet
. Wenn sie eine numerische Methode verwenden, möchten Sie vielleicht in den R-Code eintauchen und versuchen, ihn dort einzuschränken, aber Sie benötigen einen guten, soliden Programmierhintergrund.quelle
offset
eigentlich Wie wird der Wert von1.1*x1
aus der Frage bestimmt?offset
dasglmnet
Paket macht die Antwort von Stat für mich keinen Sinn. Wenn ich fit1 beta)] starte , sehe ich kein β 1 = 1.0 . Können Sie klarstellen, wie der Offset in Ihrem Beispiel funktioniert? Für den Bereich der Betas können Sie die Argumente und verwenden .lower.limits
upper limits
Nun, lass uns nachdenken. Du hast:
(um es einfach zu halten) Sie möchten erzwingen , also möchten Sieb1=1
Sie können also einfach von jeder Seite abziehen und Folgendes hinterlassen:x1
quelle
In Bezug auf die Beschränkung der Koeffizienten auf einen Bereich ist ein Bayes'scher Schätzansatz ein Mittel, um dies zu erreichen.
Insbesondere würde man sich auf eine Markov-Kette Monte Carlo verlassen. Betrachten Sie zunächst einen Gibbs-Abtastalgorithmus, mit dem Sie die MCMC ohne Einschränkung in ein Bayes'sches Framework einpassen würden. Bei der Gibbs-Abtastung wird in jedem Schritt des Algorithmus eine Stichprobe aus der posterioren Verteilung jedes Parameters (oder jeder Gruppe von Parametern) erstellt, die von den Daten und allen anderen Parametern abhängig ist. Wikipedia bietet eine gute Zusammenfassung des Ansatzes.
Eine Möglichkeit, die Reichweite einzuschränken, besteht darin, einen Metropolis-Hastings-Schritt anzuwenden. Die Grundidee besteht darin, einfach jede simulierte Variable, die außerhalb Ihrer Grenzen liegt, wegzuwerfen. Sie können dann die erneute Abtastung fortsetzen, bis dies innerhalb Ihrer Grenzen liegt, bevor Sie mit der nächsten Iteration fortfahren. Der Nachteil dabei ist, dass Sie möglicherweise oft stecken bleiben, was die MCMC verlangsamt. Ein alternativer Ansatz, der ursprünglich von John Geweke in einigen Veröffentlichungen entwickelt und in einer Veröffentlichung von Rodriguez-Yam, Davis, erweitert wurde, besteht darin, eine eingeschränkte multivariate Normalverteilung zu simulieren. Dieser Ansatz kann mit linearen und nichtlinearen Ungleichheitsbeschränkungen für Parameter umgehen, und ich habe einige Erfolge damit erzielt.
quelle
glmnet
.Ich bin nicht mit LASSO vertraut oder
glmnet
, aberlavaan
(kurz für "Latent Variable Analysis") ermöglicht mehrere Regressionsmodelle mit sowohl Gleichheitsbeschränkungen als auch einfach begrenzten Ungleichheitsbeschränkungen (siehe Tabelle auf Seite 7 dieses PDFs, "lavaan: Ein R-Paket" zur Modellierung von Strukturgleichungen " ). Ich weiß nicht, ob Sie sowohl obere als auch untere Grenzen für den Koeffizienten haben könnten, aber vielleicht könnten Sie jede Grenze mit separaten Linien hinzufügen, z.Wenn Sie alles standardisieren, bevor Sie das Modell anpassen, sollten Sie sich natürlich sowieso keine Sorgen machen müssen, Ihren Regressionskoeffizienten eine Obergrenze von 1 aufzuerlegen. Ich würde sagen, Sie sollten es in diesem Fall besser weglassen, nur für den Fall, dass etwas schief geht! (
lavaan
ist immer noch in der Beta ... Ich habe einige leicht fischige Ergebnisse in meiner eigenen eingeschränkten Verwendung gesehen.)quelle