Właśnie dodałem metodę, która podsumowuje (a dokładniej: tidies) "ridgelm"
obiekty do mojego pakietu broom. Ma to postać dwóch generałów S3: tidy
i glance
. Możesz zainstalować go pod numerem devtools::install_github("dgrtwo/broom")
(chociaż musisz najpierw zainstalować devtools
).
Jako przykład niech utworzenia regresji grzbiet:
library(MASS)
names(longley)[1] <- "y"
fit <- lm.ridge(y ~ ., longley, lambda = seq(0.001, .05, .001))
Funkcja tidy
dostarcza ramkę danych, przedstawia każdą kombinację lambda i ten termin:
library(broom)
td <- tidy(fit)
head(td)
## lambda GCV term estimate
## 1 0.001 0.1240 GNP 23.02
## 2 0.002 0.1217 GNP 21.27
## 3 0.003 0.1205 GNP 19.88
## 4 0.004 0.1199 GNP 18.75
## 5 0.005 0.1196 GNP 17.80
## 6 0.006 0.1196 GNP 16.99
Chociaż glance
Funkcja tworzy jednorzędowe podsumowanie, w szczególności opcje lambda różnymi metodami:
g <- glance(fit)
g
## kHKB kLW lambdaGCV
## 1 0.006837 0.05267 0.006
Jest to przydatne, ponieważ ułatwia działki i zbadać dane samodzielnie, zamiast polegania na ploterów Msza za:
library(ggplot2)
ggplot(td, aes(lambda, estimate, color = term)) + geom_line()
![enter image description here](https://i.stack.imgur.com/uEfoK.png)
# plot of GCV versus lambda
ggplot(td, aes(lambda, GCV)) + geom_line() +
geom_vline(xintercept = g$lambdaGCV, col = "red", lty = 2)
![enter image description here](https://i.stack.imgur.com/4sstX.png)
Więcej informacji na temat tych metod , zobacz ?ridgelm_tidiers
lub zobacz winiety pakietu, aby dowiedzieć się więcej o metodach tidy
i glance
.
Zamiast skrótu Możesz użyć wbudowanej funkcji "wybierz" - działa tak samo. Funkcja ggplot działa tak samo jak zwykłe plot.lmridge (ale oczywiście wygląda bardziej pritty). –
@MarcinKosinski: 'select' nie działa w ten sam sposób, ponieważ * wypisze * wybrane wartości zamiast zwracać je (więc nie ma możliwości ich zapisania, wyodrębnienia, połączenia lub dodania do wykresu, na przykład). 'plot.ridgelm' tworzy podobny wykres, ale warto zauważyć, że nie ma legendy ani sposobu wybierania kolorów. (Właściwie od kiedy 'plot.ridgelm' nie przekazuje swojego' ... 'do' matplot', masz ograniczoną możliwość dostosowania go w ogóle). –
OK, rozumiem. Dzięki :) –