Lineare Regression und group by in R
Möchte ich eine lineare regression in R mit der lm()
Funktion. Meine Daten ist eine jährliche Zeitreihen mit einem Feld für das Jahr (22 Jahre) und eine weitere für den Staat (50 Staaten). Ich will fit eine regression für jeden Staat, so dass am Ende habe ich eine Vektor-lm-Antworten. Ich kann es mir vorstellen for-Schleife für jeden Staat, dann tut der regression innerhalb der Schleife und die addition der Ergebnisse der einzelnen regression zu einem Vektor. Das scheint nicht sehr R-wie, jedoch. In SAS würde ich tun, eine 'von' - Anweisung in SQL würde ich tun, eine 'group by'. Was ist der R Weg, dies zu tun?
InformationsquelleAutor der Frage JD Long | 2009-07-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist eine Möglichkeit, mit der
lme4
Paket.InformationsquelleAutor der Antwort ars
Hier ist ein Ansatz mit dem plyr Paket:
InformationsquelleAutor der Antwort hadley
Seit 2009
dplyr
veröffentlicht worden, die tatsächlich bietet eine sehr schöne Möglichkeit, das zu tun diese Art der Gruppierung sehr ähnlich, was SAS bedeutet.Abrufen der Koeffizienten und Rsquared/p.Wert, man kann die
broom
Paket. Dieses Paket bietet:InformationsquelleAutor der Antwort Paul Hiemstra
Meiner Meinung nach ist eine gemischte lineare Modell ein besserer Ansatz für diese Art von Daten. Den code unten in den fixen Effekt der Allgemeine trend. Die zufälligen Effekte geben an, wie sich der trend für jeden einzelnen Zustand unterscheiden sich von dem globalen trend. Die Korrelation Struktur erfolgt die zeitliche Autokorrelation berücksichtigt. Haben Sie einen Blick auf Pinheiro & Bates (Mixed-Effects Models in S and S-Plus).
InformationsquelleAutor der Antwort Thierry
Schöne Lösung mit
data.table
gepostet wurde hier in CrossValidated von @Zach.Ich würde nur hinzufügen, dass es möglich ist, um iterativ auch der regressionskoeffizient r^2:
sowie alle anderen Ausgaben von
summary(lm)
:InformationsquelleAutor der Antwort FraNut
InformationsquelleAutor der Antwort Eduardo Leoni
Ich jetzt meine Antwort kommt ein bisschen spät, aber ich war auf der Suche für eine ähnliche Funktionalität. Es scheint, als würde die integrierte Funktion 'durch' in R können auch die Gruppierung leicht:
?durch enthält das folgende Beispiel, das passt pro Gruppe und extrahiert die Koeffizienten mit sapply:
InformationsquelleAutor der Antwort Matthijs Cox
Den
lm()
obige Funktion ist ein einfaches Beispiel. Übrigens, ich kann mir vorstellen, dass Ihre Datenbank hat die Spalten wie in der folgenden form:Jahr Zustand var1, var2 y...
In meiner Sicht, Sie können den folgenden code verwenden:
InformationsquelleAutor der Antwort Zack Mendes
Ich denke, es ist sinnvoll, fügen Sie die
purrr::map
Ansatz für dieses problem.Siehe @Paul Hiemstra-Antwort für weitere Ideen zur Verwendung der
broom
Paket mit diesen Ergebnissen.InformationsquelleAutor der Antwort ngm
Scheint die Frage zu sein, über wie nennen regression Funktionen mit Formeln, verändert sich innerhalb einer Schleife.
Hier ist, wie können Sie es tun (mit Diamanten dataset):
InformationsquelleAutor der Antwort IVIM