Я пытаюсь смоделировать регрессию логистики c с парой переменных. Я вижу, что у одной из моих переменных есть квадратичный c тренд, изображая ответ этой переменной и подгоняя к ней кривую лёсса. Итак, я хочу добавить термин quadrati c в мою регрессионную модель logisti c, чтобы смоделировать эту переменную с квадратичным c трендом. У меня возникли проблемы с выяснением, как это сделать наилучшим / наиболее точным способом.
Пример ниже:
Создать df:
set.seed(1)
df <- data.frame(response = c(rep(0,times=30),rep(1,times=20)),
var1 = runif(50,min=12,max=30),
var2 = c(runif(20,min=0,max=25),runif(10,min=30,max=50),runif(20,min=15,max=40)),
var3 = var2^2) # note that this is just var2 squared
График по второй переменной для просмотра квадратичного c тренда
ggplot(df,aes(x=var2,y=response)) +
geom_point() +
geom_smooth(method="loess")+
coord_cartesian(ylim = c(0,1))
test a несколько различных формул моделей
formulas <- list(response ~ var1 + var2, # both vars linear
response ~ var1 + var2 + I(var2^2), # add quad term for var2
response ~ var1 + I(var2^2), # only quad term for var2
response ~ var1 + var2 + var3, # add var3, which is var2^2
response ~ var1 + var3) # only var1 and var3
# build a df of some model selection criteria:
selection <- purrr::map_df(formulas, ~{
mod <- glm(.x, data= df, family="binomial")
data.frame(formula = format(.x),
AIC = round(AIC(mod),2),
BIC = round(BIC(mod),2),
R2adj = round(DescTools::PseudoR2(mod,which=c("McFaddenAdj")),4)
)
}) %>% arrange(desc(AIC))
просмотр критериев выбора:
> selection
formula AIC BIC R2adj
1 response ~ var1 + I(var2^2) 65.88 71.62 0.0211
2 response ~ var1 + var2 65.26 70.99 0.0304
3 response ~ var1 + var2 + var3 64.69 72.33 0.0389
4 response ~ var1 + var3 63.18 68.91 0.0613
5 response ~ var1 + var2 + I(var2^2) 45.09 52.74 0.3300
В основном мне интересно - может кто-нибудь объяснить мне, почему они все разные? Что я должен использовать, чтобы использовать один термин с шаблоном квадратичного c? Почему я получаю такие разные результаты?