В качестве предварительного условия для создания многомерной логистической регрессии я делаю одномерные регрессии и хочу выбрать переменные с p <0,20 для включения в многомерную модель. Я могу сопоставить требуемые переменные с <code>glm и получить выходные данные моделей, но изо всех сил пытаюсь упорядочить их по рангу p-значения.
Это то, что я имею до сих пор:
predictor1 <- c(0,1.1,2.4,3.1,4.0,5.9,4.2,3.3,2.2,1.1)
predictor2 <- as.factor(c("yes","no","no","yes","yes","no","no","yes","no","no"))
predictor3 <- as.factor(c("a", "b", "c", "c", "a", "c", "a", "a", "a", "c"))
outcome <- as.factor(c("alive","dead","alive","dead","alive","dead","alive","dead","alive","dead"))
df <- data.frame(pred1 = predictor1, pred2 = predictor2, pred3 = predictor3, outcome = outcome)
predictors <- c("pred1", "pred2", "pred3")
df %>%
select(predictors) %>%
map(~ glm(df$outcome ~ .x, data = df, family = "binomial")) %>%
#Extract odds ratio, confidence interval lower and upper bounds, and p value
map(function (x, y) data.frame(OR = exp(coef(x)),
lower=exp(confint(x)[,1]),
upper=exp(confint(x)[,2]),
Pval = coef(summary(x))[,4]))
Этот код выдает сводку по каждой модели
$pred1
OR lower upper Pval
(Intercept) 0.711082 0.04841674 8.521697 0.7818212
.x 1.133085 0.52179227 2.653040 0.7465663
$pred2
OR lower upper Pval
(Intercept) 1 0.18507173 5.40331 1
.xyes 1 0.07220425 13.84960 1
$pred3
OR lower upper Pval
(Intercept) 0.25 0.0127798 1.689944 0.2149978
.xb 170179249.43 0.0000000 NA 0.9961777
.xc 12.00 0.6908931 542.678010 0.1220957
но с моим реальным набором данных есть десятки предикторов, поэтому мне нужен способ упорядочить вывод. Предпочтительно по минимальному (не пересекающемуся) p-значению в каждой модели. Возможно, структура данных, которую я выбрал для сводки по каждой модели, не самая лучшая, поэтому любые предложения о том, как получить ту же информацию в более гибкой структуре данных, также были бы хорошими.