Zacząłem kopać trochę w funkcję plot.lm , ta funkcja daje sześć wykresów dla lm, są to:
- wykres reszt w stosunku do dopasowanych wartości
- wykres Skala-Lokalizacja sqrt (| reszty |) względem dopasowanych wartości
- normalny wykres QQ, wykres odległości Cooka w porównaniu do etykiet wierszy
- wykres reszt w stosunku do dźwigni
- wykres odległości Cooka od dźwigni / (1-dźwignia)
Zastanawiam się, jakie inne powszechne / przydatne rozszerzenia bieżących wykresów istnieją dla modeli liniowych i jak można je wykonać w R? (mile widziane są również linki do artykułów z paczek)
Tak więc funkcja boxcox (z {MASY}) jest przykładem innego przydatnego wykresu diagnostycznego (i taka odpowiedź byłaby świetna), jestem jednak bardziej ciekawy wariantów / rozszerzeń istniejących istniejących domyślnych wykresów diagnostycznych dla lm w R (chociaż ogólne inne uwagi na ten temat są zawsze mile widziane).
Oto kilka prostych przykładów tego, co mam na myśli:
#Some example code for all of us to refer to
set.seed(2542)
x1 <- rnorm(100)
x2 <- runif(100, -2,2)
eps <- rnorm(100,0,2)
y <- 1 + 2*x1 + 3*x2 + eps
y[1:4] <- 14 # adding some contaminated points
fit <- lm(y~x1+x2)
#plot(y~x1+x2)
#summary(fit)
Aby wykreślić resztki względem każdego z potencjalnych x
plot(resid(fit)~x1); abline (h = 0)
plot(resid(fit)~x2); abline (h = 0)
# plot(resid(fit)~x1+x2) # you can also use this, but then you wouldn't be able to use the abline on any plot but the last one
Aby dodać linię 0-1 (jak ta linia jest nazywana w języku angielskim ?!) do qqplot, aby zobaczyć, jak bardzo odbiega ona od qqline
plot(fit, which = 2); abline(0,1, col = "green")
Aby wykreślić wykres qq przy użyciu zewnętrznie uczonych reszt
# plot(fit, which = 2); abline(0,1, col = "green") # The next command is just like this one
qqnorm(rstandard(fit), ylim = c(-2.2,4.2)); qqline(rstudent(fit), lty = 2) ;abline(0,1, col = "green")
qqnorm(rstudent(fit), ylim = c(-2.2,4.2)); qqline(rstudent(fit), lty = 2) ;abline(0,1, col = "green")
# We can note how the "bad" points are more extreme when using the rstudent
r
regression
linear-model
diagnostic
Tal Galili
źródło
źródło
Odpowiedzi:
Pakiet
car
ma całkiem sporo przydatnych funkcji do wykresów diagnostycznych liniowych i uogólnionych modeli liniowych. W porównaniu do wykresów R waniliowych są one często wzbogacane o dodatkowe informacje. Polecam wypróbowaćexample("<function>")
następujące funkcje, aby zobaczyć, jak wyglądają wykresy. Wszystkie wykresy zostały szczegółowo opisane w rozdziale 6 Fox & Weisberg. 2011. Dodatek R do regresji stosowanej. 2nd ed.residualPlots()
wykreśla reszty Pearsona dla każdego predyktora (wykresy rozrzutu dla zmiennych numerycznych, w tym dopasowanie Lowessa, wykresy dla czynników)marginalModelPlots()
wyświetla wykresy rozrzutu zmiennej odpowiedzi dla każdego predyktora numerycznego, w tym dopasowanie LowessavPlots()
wyświetla wykresy częściowej regresji: dla każdego predyktora jest to wykres rozrzutu a) reszt z regresji zmiennej odpowiedzi na wszystkich innych predyktorach przeciwko b) reszt z regresji predyktora względem wszystkich innych predyktorówqqPlot()
dla wykresu kwantylowo-kwantylowego, który zawiera obwiednię ufnościinfluenceIndexPlot()
wyświetla każdą wartość dla odległości Cooka, wartości kapelusza, wartości p dla testu odstającego, i resztę uczniowską na wykresie szczytowym względem indeksu obserwacjiinfluencePlot()
daje wykres bąbelkowy studenckich reszt względem wartości kapelusza, przy czym rozmiar bąbla odpowiada odległości Cooka, zobacz takżedfbetaPlots()
ileveragePlots()
boxCox()
wyświetla profil logarytmu prawdopodobieństwa parametru transformacji w transformatorze mocy Box-CoxacrPlots()
dotyczy wykresów składowych i rezydualnych, których wariantem są wykresy CERES (Łączenie oczekiwań warunkowych i RES reszt), dostarczone przezceresPlots()
spreadLevelPlot()
służy do oceny niestałej wariancji błędu i wyświetla bezwzględne studentizowane resztki względem dopasowanych wartościscatterplot()
zapewnia znacznie ulepszone wykresy rozrzutu, w tym wykresy ramkowe wzdłuż osi, elipsy pewności dla rozkładu dwuwariantowego i linie prognozy z pasmami pewnościscatter3d()
jest oparty na pakieciergl
i wyświetla interaktywne wykresy rozproszenia 3D, w tym elipsoidy zaufania siatki drucianej i płaszczyzny predykcyjne, koniecznie uruchomexample("scatter3d")
Ponadto, spójrz
bplot()
z pakieturms
na inne podejście do zilustrowania wspólnego rozkładu trzech zmiennych.źródło
Ta odpowiedź skupia się na tym, co jest dostępne w bazie R, a nie na pakietach zewnętrznych, chociaż zgadzam się, że pakiet Foxa jest wart przyjęcia.
Funkcja
influence()
(lub jej opakowanieinfluence.measures()
) zwraca większość tego, czego potrzebujemy do diagnostyki modelu, w tym statystyki typu jacknifed. Jak stwierdzono w Chambers and Hastie's Models Models w S (Wadsworth i Brooks, 1992), można go stosować w połączeniu zsummary.lm()
. Jeden z przykładów podanych w tak zwanej „białej księdze” (str. 130–131) pozwala obliczyć resztki standaryzowane (reszty z jednakową wariancją) i uczone (to samo z innym oszacowaniem dla SE), DFBETAS (zmiana w współczynniki skalowane przez SE dla współczynników regresji), DFFIT (zmiana dopasowanej wartości po opuszczeniu obserwacji) i DFFITS (to samo, z wariancją jednostkową) mierzą bez większych trudności.Na podstawie Twojego przykładu i zdefiniowania następujących obiektów:
powyższe ilości możemy obliczyć w następujący sposób:
(To jest Tabela 4.1 , s. 131.)
Chambers i Hastie podają następujący kod S / R do obliczania DFBETAS:
Dlaczego wspominam o tym podejściu? Ponieważ po pierwsze uważam, że jest to interesujące z pedagogicznego punktu widzenia (tego właśnie używam podczas nauczania kursów statystyki wprowadzającej), ponieważ pozwala zilustrować, co można obliczyć z wyników dopasowanego modelu liniowego dopasowanego w R (ale to samo stosuje się z każdym innym pakietem statystycznym). Po drugie, ponieważ powyższe wielkości zostaną zwrócone jako proste wektory lub macierze w R, oznacza to również, że możemy wybrać urządzenie graficzne, które chcemy --- sieć lub ggplot --- do wyświetlenia tych statystyk lub użyć ich do ulepszenia istniejącego wykres (np. podświetl wartości DFFITS na wykresie rozrzutu, zmieniając rozmiar punktu
cex
).źródło