Сначала библиотеки
library(tidyr)
library(leaps)
library(ggplots2)
library(ggdark)
Значение модели
set.seed(1)
X = rnorm(100)
e = rnorm(100)
Y = 8 + 7*X + 2.5*X^2 - 9*X^3 + e
Подгонка
data.all = data.frame(Y,X)
regfit.full = regsubsets(Y~poly(X,10,raw=T), data=data.all, nvmax=10)
(reg.summary = summary(regfit.full))
Затем я получаю минимальное значение для каждой переменной
(reg.min.cp = which.min(reg.summary$cp))
(reg.min.bic = which.min(reg.summary$bic))
(reg.min.adjr2 = which.min(reg.summary$adjr2))
Создание фрейма данных для графика
df = data.frame(reg.summary$cp, reg.summary$bic, reg.summary$adjr2)
df$rownum = 1:nrow(df)
Изменение формы фрейма данных
molten = df %>% gather(variable, value, reg.summary.cp:reg.summary.adjr2 )
Построение с фасетами
(lp = molten %>% ggplot(data=.) +
aes(x=rownum, y=value) +
geom_line(col="black") +
geom_point(data=molten, aes(xint=reg.min.adjr2, z="reg.summary.adjr2", col="red")) + # this is where I got the wrong plot
facet_wrap(~variable, scales="free_y")
)
И это показывает неправильно.Я ожидаю, что geom_point(data=molten, aes(xint=reg.min.adjr2, z="reg.summary.adjr2", col="red"))
просто добавит reg.min.adjr2
к фасету reg.summary.adjr2
и только одну точку.Как это сделать?