Wie ziehen Sie den p-Wert (für die Signifikanz des Koeffizienten der einzelnen erklärenden Variablen ungleich Null) und den R-Quadrat-Wert aus einem einfachen linearen Regressionsmodell heraus? Beispielsweise...
x = cumsum(c(0, runif(100, -1, +1)))
y = cumsum(c(0, runif(100, -1, +1)))
fit = lm(y ~ x)
summary(fit)
Ich weiß, dass der p-Wert und der R-Quadrat-Wert summary(fit)
angezeigt werden, aber ich möchte diese in andere Variablen einfügen können.
r <- summary(lm(rnorm(10)~runif(10)))
nichts anzeigen).Antworten:
r-Quadrat : Sie können den r-Quadrat-Wert direkt vom Zusammenfassungsobjekt zurückgeben
summary(fit)$r.squared
. Siehenames(summary(fit))
für eine Liste aller Artikel , die Sie direkt extrahieren.Modell-p-Wert: Wenn Sie den p-Wert des gesamten Regressionsmodells erhalten möchten, beschreibt dieser Blog-Beitrag eine Funktion zum Zurückgeben des p-Werts:
Bei einer einfachen Regression mit einem Prädiktor sind der p-Wert des Modells und der p-Wert für den Koeffizienten gleich.
Koeffizienten-p-Werte: Wenn Sie mehr als einen Prädiktor haben, gibt der obige den p-Wert des Modells zurück, und der p-Wert für Koeffizienten kann extrahiert werden mit:
Alternativ können Sie den p-Wert von Koeffizienten aus dem
anova(fit)
Objekt auf ähnliche Weise wie das obige Zusammenfassungsobjekt abrufen.quelle
inherits
alsclass
direkt. Und vielleicht willst duunname(pf(f[1],f[2],f[3],lower.tail=F))
?Beachten Sie, dass
summary(fit)
ein Objekt mit allen benötigten Informationen generiert wird. Darin sind die Beta-, Se-, T- und P-Vektoren gespeichert. Erhalten Sie die p-Werte, indem Sie die 4. Spalte der Koeffizientenmatrix auswählen (im Zusammenfassungsobjekt gespeichert):Versuchen Sie
str(summary(fit))
, alle Informationen zu sehen, die dieses Objekt enthält.Bearbeiten: Ich hatte Chases Antwort falsch verstanden, die Ihnen im Grunde sagt, wie Sie zu dem kommen, was ich hier gebe.
quelle
summary(fit)$coefficients[1,4]
für thei nterceptlm()
, funktioniert jedoch nicht fürgls()
Modelle.Sie können die Struktur des von zurückgegebenen Objekts
summary()
durch Aufrufen sehenstr(summary(fit))
. Auf jedes Stück kann mit zugegriffen werden$
. Der p-Wert für die F-Statistik lässt sich leichter aus dem von zurückgegebenen Objekt ermittelnanova
.Kurz gesagt, Sie können dies tun:
quelle
Während beide obigen Antworten gut sind, ist das Verfahren zum Extrahieren von Teilen von Objekten allgemeiner.
In vielen Fällen geben Funktionen Listen zurück, und auf die einzelnen Komponenten kann zugegriffen werden,
str()
wodurch die Komponenten zusammen mit ihren Namen gedruckt werden. Sie können dann mit dem Operator $ darauf zugreifen, dmyobject$componentname
. H.Im Fall von lm Objekten gibt es eine Reihe von vordefinierten Methoden kann man wie verwenden
coef()
,resid()
,summary()
etc, aber Sie werden nicht immer so viel Glück.quelle
Ich bin auf diese Frage gestoßen, als ich nach Lösungsvorschlägen für ein ähnliches Problem gesucht habe. Ich gehe davon aus, dass es sich zum späteren Nachschlagen lohnen kann, die verfügbare Antwortliste mit einer Lösung zu aktualisieren, die das
broom
Paket verwendet.Beispielcode
Ergebnisse
Randnotizen
Ich finde die
glance
Funktion nützlich, da sie die Schlüsselwerte übersichtlich zusammenfasst. Die Ergebnisse werden als gespeichert,data.frame
was die weitere Manipulation erleichtert:quelle
Erweiterung der Antwort von @Vincent :
Für
lm()
generierte Modelle:Für
gls()
generierte Modelle:Um einen einzelnen p-Wert selbst zu isolieren, fügen Sie dem Code eine Zeilennummer hinzu:
So greifen Sie beispielsweise auf den p-Wert des Abschnitts in beiden Modellzusammenfassungen zu:
Beachten Sie, dass Sie die Spaltennummer in jeder der oben genannten Instanzen durch den Spaltennamen ersetzen können:
Wenn Sie sich immer noch nicht sicher sind, wie Sie auf einen Wert aus der Übersichtstabelle zugreifen sollen, verwenden Sie diese
str()
, um die Struktur der Übersichtstabelle zu ermitteln:quelle
Dies ist der einfachste Weg, um die p-Werte zu ziehen:
quelle
Ich habe diese lmp-Funktion ziemlich oft benutzt.
Und irgendwann habe ich beschlossen, neue Funktionen hinzuzufügen, um die Datenanalyse zu verbessern. Ich bin kein Experte für R oder Statistik, aber die Leute betrachten normalerweise verschiedene Informationen einer linearen Regression:
Lassen Sie uns ein Beispiel haben. Du hast hier
Hier ein reproduzierbares Beispiel mit verschiedenen Variablen:
Es gibt sicherlich eine schnellere Lösung als diese Funktion, aber sie funktioniert.
quelle
Für den am Ende angezeigten endgültigen p-Wert berechnet
summary()
die Funktionpf()
aus densummary(fit)$fstatistic
Werten.Quelle: [1] , [2]
quelle
quelle
Eine andere Option ist die Verwendung der Funktion cor.test anstelle von lm:
quelle
Verwenden:
Dabei
num
ist eine Zahl angegeben, die die Zeile der Koeffizientenmatrix bezeichnet. Dies hängt davon ab, wie viele Funktionen Ihr Modell enthält und für welche Sie den p-Wert herausziehen möchten. Wenn Sie beispielsweise nur eine Variable haben, gibt es einen p-Wert für den Achsenabschnitt, der [1,4] ist, und den nächsten für Ihre tatsächliche Variable, der [2,4] ist. Also wirstnum
du 2 sein.quelle