我正在使用 tidymodels 使用 Palmer's Penguins 数据集开发逻辑回归。
我相信
female
应该是参考类,因为它是我的结果变量的第一级,因此模型的积极结果应该 female
.
当我建立模型时,系数估计似乎表明
bill_depth_mm
和 bill_length_mm
的增加导致成为女性的可能性增加,但绘制时相反的关系似乎是真实的。
所以这会让我相信
male
是模型的预测结果,但是在计算 specificity
和 sensitivity
时,它将 female
结果视为真正的积极结果。同样,ROC 图需要参考水平作为 female
结果的预测可能性。
为什么看起来模型输出的估计是相反的? tidymodels 中是否有一个选项来指定估计应该与什么相关?甚至确认估计值与什么有关?
或者我对模型的理解不正确而这些估计是正确的——喙长度和深度的增加确实增加了企鹅是雌性的可能性?
penguins <- read_csv("Data/penguins.csv")
penguins <- penguins %>%
mutate(sex = factor(sex))
set.seed(57475)
penguins_splits <- initial_split(penguins,
strata = sex)
penguins_training <- training(penguins_splits)
penguins_testing <- testing(penguins_splits)
penguins_recipe <- recipe(sex ~ ., data = penguins_training) %>%
step_naomit(all_predictors()) %>%
step_rm(rowid, skip = TRUE) %>%
step_string2factor(all_nominal_predictors()) %>%
step_mutate(year = factor(year)) %>%
step_dummy(all_nominal_predictors())
logistic_model <- logistic_reg() %>%
set_engine("glm") %>%
set_mode("classification")
logistic_wf <- workflow() %>%
add_model(logistic_model) %>%
add_recipe(penguins_recipe)
logistic_fit <- logistic_wf %>%
fit(data = penguins_training)
logistic_fit %>%
pull_workflow_fit %>%
tidy()
ggplot(penguins_training, aes(x = bill_length_mm, colour = sex)) +
geom_boxplot()
模型对象的输出
> logistic_fit %>%
+ pull_workflow_fit %>%
+ tidy()
# A tibble: 11 x 5
term estimate std.error statistic p.value
<chr> <dbl> <dbl> <dbl> <dbl>
1 (Intercept) -76.7 13.7 -5.58 0.0000000237
2 bill_length_mm 0.831 0.176 4.72 0.00000238
3 bill_depth_mm 1.53 0.391 3.91 0.0000913
4 flipper_length_mm -0.0290 0.0611 -0.474 0.635
5 body_mass_g 0.00593 0.00132 4.49 0.00000724
6 species_Chinstrap -9.17 2.06 -4.45 0.00000843
7 species_Gentoo -8.82 3.22 -2.74 0.00608
8 island_Dream 0.874 0.968 0.903 0.367
9 island_Torgersen -0.237 0.974 -0.243 0.808
10 year_X2008 -0.239 0.701 -0.341 0.733
11 year_X2009 -0.762 0.736 -1.04 0.300