Jak wyciągnąć wartość p (dla istotności współczynnika pojedynczej zmiennej objaśniającej niezerowej) i wartość R-kwadrat z prostego modelu regresji liniowej? Na przykład...
x = cumsum(c(0, runif(100, -1, +1)))
y = cumsum(c(0, runif(100, -1, +1)))
fit = lm(y ~ x)
summary(fit)
Wiem, że summary(fit)
wyświetla wartość p i wartość R-kwadrat, ale chcę móc umieścić je w innych zmiennych.
r <- summary(lm(rnorm(10)~runif(10)))
Nic nie wyświetla).Odpowiedzi:
r-kwadrat : Możesz zwrócić wartość r-kwadrat bezpośrednio z obiektu podsumowania
summary(fit)$r.squared
. Zobacznames(summary(fit))
listę wszystkich elementów, które możesz wyodrębnić bezpośrednio.Modelowa wartość p: Jeśli chcesz uzyskać wartość p ogólnego modelu regresji, ten post na blogu przedstawia w zarysie funkcję zwracającą wartość p:
W przypadku prostej regresji z jednym predyktorem wartość p modelu i wartość p dla współczynnika będą takie same.
Współczynnik wartości p: Jeśli masz więcej niż jeden predyktor, powyższe zwróci wartość p modelu, a wartość p dla współczynników można wyodrębnić za pomocą:
Alternatywnie możesz pobrać wartość p współczynników z
anova(fit)
obiektu w podobny sposób, jak w przypadku obiektu podsumowania powyżej.źródło
inherits
niżclass
bezpośrednio. A może chceszunname(pf(f[1],f[2],f[3],lower.tail=F))
?Zwróć uwagę, że
summary(fit)
generuje obiekt ze wszystkimi potrzebnymi informacjami. Wektory beta, se, t i p są w nim przechowywane. Uzyskaj wartości p, wybierając czwartą kolumnę macierzy współczynników (przechowywaną w obiekcie podsumowania):Spróbuj
str(summary(fit))
zobaczyć wszystkie informacje, które zawiera ten obiekt.Edycja: źle odczytałem odpowiedź Chase, która w zasadzie mówi ci, jak dostać się do tego, co tutaj podaję.
źródło
summary(fit)$coefficients[1,4]
dla terceptulm()
ale nie działa w przypadkugls()
modeli.Możesz zobaczyć strukturę obiektu zwróconego
summary()
przez wywołaniestr(summary(fit))
. Dostęp do każdego elementu można uzyskać za pomocą$
. Wartość p dla statystyki F jest łatwiejsza do uzyskania z obiektu zwróconego przezanova
.Dokładniej, możesz to zrobić:
źródło
Chociaż obie powyższe odpowiedzi są dobre, procedura wyodrębniania części obiektów jest bardziej ogólna.
W wielu przypadkach funkcje zwracają listy, a dostęp do poszczególnych składników można uzyskać za pomocą polecenia,
str()
które wypisze składniki wraz z ich nazwami. Możesz wtedy uzyskać do nich dostęp za pomocą operatora $, tjmyobject$componentname
.W przypadku obiektów lm, istnieje szereg predefiniowanych metod można użyć takich jak
coef()
,resid()
,summary()
itp, ale nie zawsze będzie tak szczęśliwy.źródło
Natknąłem się na to pytanie, badając sugerowane rozwiązania podobnego problemu; Przypuszczam, że w przyszłości warto zaktualizować dostępną listę odpowiedzi rozwiązaniem wykorzystującym rozszerzenie
broom
pakiet.Przykładowy kod
Wyniki
Dodatkowe uwagi
Uważam, że
glance
funkcja jest przydatna, ponieważ starannie podsumowuje kluczowe wartości. Wyniki są przechowywane jako a,data.frame
co ułatwia dalszą manipulację:źródło
Rozszerzenie @Vincent „s odpowiedź :
Dla
lm()
wygenerowanych modeli:Dla
gls()
wygenerowanych modeli:Aby wyodrębnić samą indywidualną wartość p, należy dodać numer wiersza do kodu:
Na przykład, aby uzyskać dostęp do wartości p punktu przecięcia z osią w obu podsumowaniach modelu:
Uwaga, możesz zastąpić numer kolumny nazwą kolumny w każdym z powyższych wystąpień:
Jeśli nadal nie masz pewności, jak uzyskać dostęp do wartości z tabeli podsumowań, której użyjesz
str()
do ustalenia struktury tabeli podsumowań:źródło
Oto najłatwiejszy sposób na pobranie wartości p:
źródło
Używałem tej funkcji lmp dość dużo razy.
W pewnym momencie zdecydowałem się dodać nowe funkcje, aby ulepszyć analizę danych. Nie jestem ekspertem w R ani statystykach, ale ludzie zwykle patrzą na różne informacje dotyczące regresji liniowej:
Weźmy przykład. Masz tutaj
Tutaj odtwarzalny przykład z różnymi zmiennymi:
Na pewno jest szybsze rozwiązanie niż ta funkcja, ale działa.
źródło
Dla końcowej wartości p wyświetlanej na końcu
summary()
, funkcja używapf()
do obliczenia na podstawiesummary(fit)$fstatistic
wartości.Źródło: [1] , [2]
źródło
źródło
Inną opcją jest użycie funkcji cor.test zamiast lm:
źródło
Posługiwać się:
gdzie
num
jest liczbą oznaczającą wiersz macierzy współczynników. Będzie to zależeć od tego, ile funkcji masz w swoim modelu i dla której chcesz uzyskać wartość p. Na przykład, jeśli masz tylko jedną zmienną, będzie jedna wartość p dla punktu przecięcia z osią, która będzie wynosić [1,4], a następna dla zmiennej rzeczywistej, która będzie wynosić [2,4]. Więc twojanum
wola będzie 2.źródło